Dock Widget Example

The Dock Widgets example shows how to add dock windows to an application. It also shows how to use Qt’s rich text engine.

Dock Widgets Screenshot
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
    <file>images/new.png</file>
    <file>images/print.png</file>
    <file>images/save.png</file>
    <file>images/undo.png</file>
</qresource>
</RCC>
"""PySide6 port of the widgets/mainwindows/dockwidgets example from Qt v5.x, originating from PyQt"""

import sys

from PySide6.QtCore import QDate, QFile, Qt, QTextStream
from PySide6.QtGui import (QAction, QFont, QIcon, QKeySequence,
        QTextCharFormat, QTextCursor, QTextTableFormat)
from PySide6.QtPrintSupport import QPrintDialog, QPrinter
from PySide6.QtWidgets import (QApplication, QDialog, QDockWidget,
        QFileDialog, QListWidget, QMainWindow, QMessageBox, QTextEdit)

import dockwidgets_rc


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self._text_edit = QTextEdit()
        self.setCentralWidget(self._text_edit)

        self.create_actions()
        self.create_menus()
        self.create_tool_bars()
        self.create_status_bar()
        self.create_dock_windows()

        self.setWindowTitle("Dock Widgets")

        self.new_letter()

    def new_letter(self):
        self._text_edit.clear()

        cursor = self._text_edit.textCursor()
        cursor.movePosition(QTextCursor.Start)
        top_frame = cursor.currentFrame()
        top_frame_format = top_frame.frameFormat()
        top_frame_format.setPadding(16)
        top_frame.setFrameFormat(top_frame_format)

        text_format = QTextCharFormat()
        bold_format = QTextCharFormat()
        bold_format.setFontWeight(QFont.Bold)
        italic_format = QTextCharFormat()
        italic_format.setFontItalic(True)

        table_format = QTextTableFormat()
        table_format.setBorder(1)
        table_format.setCellPadding(16)
        table_format.setAlignment(Qt.AlignRight)
        cursor.insertTable(1, 1, table_format)
        cursor.insertText("The Firm", bold_format)
        cursor.insertBlock()
        cursor.insertText("321 City Street", text_format)
        cursor.insertBlock()
        cursor.insertText("Industry Park")
        cursor.insertBlock()
        cursor.insertText("Some Country")
        cursor.setPosition(top_frame.lastPosition())
        cursor.insertText(QDate.currentDate().toString("d MMMM yyyy"),
                text_format)
        cursor.insertBlock()
        cursor.insertBlock()
        cursor.insertText("Dear ", text_format)
        cursor.insertText("NAME", italic_format)
        cursor.insertText(",", text_format)
        for i in range(3):
            cursor.insertBlock()
        cursor.insertText("Yours sincerely,", text_format)
        for i in range(3):
            cursor.insertBlock()
        cursor.insertText("The Boss", text_format)
        cursor.insertBlock()
        cursor.insertText("ADDRESS", italic_format)

    def print_(self):
        document = self._text_edit.document()
        printer = QPrinter()

        dlg = QPrintDialog(printer, self)
        if dlg.exec() != QDialog.Accepted:
            return

        document.print_(printer)

        self.statusBar().showMessage("Ready", 2000)

    def save(self):
        dialog = QFileDialog(self, "Choose a file name")
        dialog.setMimeTypeFilters(['text/html'])
        dialog.setAcceptMode(QFileDialog.AcceptSave)
        dialog.setDefaultSuffix('html')
        if dialog.exec() != QDialog.Accepted:
            return

        filename = dialog.selectedFiles()[0]
        file = QFile(filename)
        if not file.open(QFile.WriteOnly | QFile.Text):
            reason = file.errorString()
            QMessageBox.warning(self, "Dock Widgets",
                    "Cannot write file {filename}:\n{reason}.")
            return

        out = QTextStream(file)
        QApplication.setOverrideCursor(Qt.WaitCursor)
        out << self._text_edit.toHtml()
        QApplication.restoreOverrideCursor()

        self.statusBar().showMessage(f"Saved '{filename}'", 2000)

    def undo(self):
        document = self._text_edit.document()
        document.undo()

    def insert_customer(self, customer):
        if not customer:
            return
        customer_list = customer.split(', ')
        document = self._text_edit.document()
        cursor = document.find('NAME')
        if not cursor.isNull():
            cursor.beginEditBlock()
            cursor.insertText(customer_list[0])
            oldcursor = cursor
            cursor = document.find('ADDRESS')
            if not cursor.isNull():
                for i in customer_list[1:]:
                    cursor.insertBlock()
                    cursor.insertText(i)
                cursor.endEditBlock()
            else:
                oldcursor.endEditBlock()

    def add_paragraph(self, paragraph):
        if not paragraph:
            return
        document = self._text_edit.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 <b>Dock Widgets</b> example demonstrates how to use "
                "Qt's dock widgets. You can enter your own text, click a "
                "customer to add a customer name and address, and click "
                "standard paragraphs to add them.")

    def create_actions(self):
        icon = QIcon.fromTheme('document-new', QIcon(':/images/new.png'))
        self._new_letter_act = QAction(icon, "&New Letter",
                self, shortcut=QKeySequence.New,
                statusTip="Create a new form letter", triggered=self.new_letter)

        icon = QIcon.fromTheme('document-save', QIcon(':/images/save.png'))
        self._save_act = QAction(icon, "&Save...", self,
                shortcut=QKeySequence.Save,
                statusTip="Save the current form letter", triggered=self.save)

        icon = QIcon.fromTheme('document-print', QIcon(':/images/print.png'))
        self._print_act = QAction(icon, "&Print...", self,
                shortcut=QKeySequence.Print,
                statusTip="Print the current form letter",
                triggered=self.print_)

        icon = QIcon.fromTheme('edit-undo', QIcon(':/images/undo.png'))
        self._undo_act = QAction(icon, "&Undo", self,
                shortcut=QKeySequence.Undo,
                statusTip="Undo the last editing action", triggered=self.undo)

        self._quit_act = QAction("&Quit", self, shortcut="Ctrl+Q",
                statusTip="Quit the application", triggered=self.close)

        self._about_act = QAction("&About", self,
                statusTip="Show the application's About box",
                triggered=self.about)

        self._about_qt_act = QAction("About &Qt", self,
                statusTip="Show the Qt library's About box",
                triggered=QApplication.instance().aboutQt)

    def create_menus(self):
        self._file_menu = self.menuBar().addMenu("&File")
        self._file_menu.addAction(self._new_letter_act)
        self._file_menu.addAction(self._save_act)
        self._file_menu.addAction(self._print_act)
        self._file_menu.addSeparator()
        self._file_menu.addAction(self._quit_act)

        self._edit_menu = self.menuBar().addMenu("&Edit")
        self._edit_menu.addAction(self._undo_act)

        self._view_menu = self.menuBar().addMenu("&View")

        self.menuBar().addSeparator()

        self._help_menu = self.menuBar().addMenu("&Help")
        self._help_menu.addAction(self._about_act)
        self._help_menu.addAction(self._about_qt_act)

    def create_tool_bars(self):
        self._file_tool_bar = self.addToolBar("File")
        self._file_tool_bar.addAction(self._new_letter_act)
        self._file_tool_bar.addAction(self._save_act)
        self._file_tool_bar.addAction(self._print_act)

        self._edit_tool_bar = self.addToolBar("Edit")
        self._edit_tool_bar.addAction(self._undo_act)

    def create_status_bar(self):
        self.statusBar().showMessage("Ready")

    def create_dock_windows(self):
        dock = QDockWidget("Customers", self)
        dock.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
        self._customer_list = QListWidget(dock)
        self._customer_list.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._customer_list)
        self.addDockWidget(Qt.RightDockWidgetArea, dock)
        self._view_menu.addAction(dock.toggleViewAction())

        dock = QDockWidget("Paragraphs", self)
        self._paragraphs_list = QListWidget(dock)
        self._paragraphs_list.addItems((
            "Thank you for your payment which we have received today.",
            "Your order has been dispatched and should be with you within "
                "28 days.",
            "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._paragraphs_list)
        self.addDockWidget(Qt.RightDockWidgetArea, dock)
        self._view_menu.addAction(dock.toggleViewAction())

        self._customer_list.currentTextChanged.connect(self.insert_customer)
        self._paragraphs_list.currentTextChanged.connect(self.add_paragraph)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_win = MainWindow()
    main_win.show()
    sys.exit(app.exec())
# Resource object code (Python 3)
# Created by: object code
# Created by: The Resource Compiler for Qt version 6.2.2
# WARNING! All changes made in this file will be lost!

from PySide6 import QtCore

qt_resource_data = b"\
\x00\x00\x06\xc4\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
\x00\x00\x00\x04gAMA\x00\x00\xd9\x04\xdc\xb2\xda\x02\
\x00\x00\x06{IDATX\xc3\xadWiLTW\
\x14v!b\x95\x04\x97\xa8%\x18R\x1b\x0d\x11E\x04\
\xaa\xa4I\xb5VMli\xb0h\xa3\xb6\xc5\xb2F\xfd\
\xa3,aQH$\x08d\xc2\x12\xd0\x22B\x11YD\
@@\xf6\x91}S6\x09\xb2\xa9\x08\x0e$\x0cb\x01\
\x83\x02\x82\x0b\x08\xa9_\xcf\xb9\x991\xa3\x80\x9d\xb4\xf3\
\x92/\xf3\xde\xbc{\xce\xf7\xdds\xce=\xf7\xbey\xf3\
T.;\xbb\xe8/\x1c\x1d#\x1d\x1d\x1d#\x02\x1d\x1c\
.H\xd2\xd3\xab%\x97.\x15VGF\xde\xacML\
\xac\xa8\xad\xaaj\xbf/\x956A\x89+WJ\xdb\x8d\
\x8d\xf7|I\xa6\xf3\xe7i\xe8Zho\xffG\xa1\xfc\
\xf1sL\xff\x0d\xb5\x10\x10\x98<Hv\xc6\x1a\x13\xc1\
3\xf2\xf4Jz=6\x09\xa8\x03\xf9\xc08,,~\
\xce!\xd3\xb5\x9a\x8a\xc2\xfc\xc3\x87\xfd\xa3\x8a\xabd\x18\
z\x0d\xb5\xe0\xe3\x1b?Jv?\x11>\xd3\x88\x82\xed\
\xdb\x0f\xac=\xeb\x97\x89\xde\x17P\x0b\xf9\xe52\x18\x18\
\x18\xc7\x91\xe9\xe7\x1a\x8b\x82\xadmXyc\xf78d\
\xcf\xf1\xaf\xe0q\x16\x16\x07[\xc8\xee+\x82\x96F\x14\
\xd8\xd8\x04\xfb\xa4\x15\xc9\xd0:\x08\xb5`\xe7\x18\xf4\x9c\
\xcc~!,\xd1\x88\x00KK\xaf\x8d\xa1\x97\xaa\xd0\xf0\
\x17\xd4B\x08\x8d%3\x7f\xc2\x0a\x8d-I\x17\xf7\xa4\
\xfeJ9\xa0\x0e\x22\x92\x9a\xa0\xa7g(\xd5\xe4j\x98\
G\xcd\xa8(\xbf\xfd-\x8a\xba1'\x0a\xba\x80\xdcN\
 \xb6t\x00\x86\x86;\xea\xc9\xccTcu`g\x17\
\x1e\xc4\x8e\xb3:\x80\x8c6 \xad\x09Hi\x00\x92\xea\
\x80\x84j \xa6\x1c\xc8l\x04J\x1e\x00\xf5\xed\xe3h\
j\xea\x80\xaf\xaf\xef+25\xf8\xdf\xe4\x12\x89D.\
\x95\x96 \xabp\x00\xa9R\x08\x94\x101qP\xf3\x01\
z\x9e\x8cahh\x08\xbd\xbd\xbdx\xf8\xf0!\x1e<\
x ~\x13\x13\x13\xb1{\xf7\xee\xdaC\x87\x0e\x05X\
ZZn\xe4T\xfe'\x01\xa1\xa1\xa1}\x13\x13\x13\x98\
\x9c\x9c\xc4\xd4\xd4\x14\xba\xba\xbap\xe7\xce\x1d\xdc\xbe}\
\x1b\xf9\xf9\xf9())AUU\x15\xea\xeb\xeb\xd1\xdc\
\xdc,\x040\x92\x92\x92p\xe3\xc6\x0d\xe4\xe5\xe5\x89\xfb\
\x13'N\xdc\xdd\xb1c\x87\x99\xdaB\xec\xec\xec\x96\xd9\
\xda\xda~\x17\x12\x12\xd2\xce3T\xa2\xb0\xb0P8V\
%\xcf\xca\xcaBBB\x02\xc2\xc3\xc3\x11\x17\x17\x87\xab\
W\xaf\x0a\x81}}}\xe8\xe9\xe9\x116uuu8\
}\xfa\xf4\x84\xb9\xb9\xf9o\xe4^\xfb\x93\xe4G\x8f\x1e\
\xb5\xa7\xc1/\xa2\xa2\xa2\x10\x1d\x1d\x8d\x8c\x8c\x0c\xc4\xc6\
\xc6\x2277\x17999\x88\x8c\x8c\x04\x09\x03\xbf\xbf\
v\xed\x1a***D\xd8GFF0<<\x8cg\
\xcf\x9e\x09\xb1O\x9f>\xc5\xe0\xe0 \x06\x06\x06PP\
P\x80\x86\x86\x06xxxLn\xda\xb4\xc9i\xcev\
mcc\xb3+,,L\x84\xba\xa3\xa3\x03\xf7\xee\xdd\
\x13\xbfr\xb9\x5c\x08\xb8|\xf9\xb2\xf8\xef\xd5\xabW\x18\
\x1f\x1f\xc7\xd8\xd8\x18FGG?I\xde\xdd\xdd\x8d\xca\
\xcaJ\x11\xb9\xb6\xb66\x1c8p`\x88\xa8\xbe\x99u\
\x95\x1c9r$O&\x93\x89\xd0\xa9\x8a`C&\xe2\
\xfc\x96\x95\x95}\x92\x9c\xc5666\x8a\xd0s\x0d0\
ykk\xab(T\xf6\x1b\x14\x14\x04\x13\x13\x93\xbcY\
{\x05Um\x0d\xabV\xe6OU\x04;aB\xbe\xe7\
\x9c*\xc9y\xb6\xf7\xef\xdf\x17\xa9\xe0\xda`\x81--\
-\x82\xf0\xc9\x93'x\xfc\xf81\x1e=z$\x8a\xb4\
\xa6\xa6\x06\xc1\xc1\xc1\xa0Z\xe8 \xba\xefg\xa4\x82\xc2\
S\xdb\xd9\xd9\x89\xb9D\xb4\xb7\xb7\x8b\x99s\xf1q\x11\
J\xa5R\x14\x17\x17\x8bwL\xa6\x0c;\x93\xb2`&\
\xe4H0n\xde\xbc)\x0a\xd4\xdd\xdd\x1d[\xb7n\x95\
\x11\xdd\xef\x04\x9d\x0f\x04\xec\xdf\xbf\xbf\x96\x0aP8\x9d\
K\x04?\xf3\xcc\xf9\x9dj\xce\x95K\x94\x0b\x8eW\x06\
\xd7Lvv\xb6(d???899\xe1\xd8\xb1\
c\xf0\xf6\xf6\xe6\x14\xb0\x00\xfb\x19\x02\xa8i\x14\x14\x15\
\x15!&&\x06\xce\xce\xceHII\x11\x8eUEp\
\x1d01\xcf\x92C\xcdb\xd3\xd2\xd2p\xfd\xfau\xb1\
b\x92\x93\x93q\xfe\xfcy\xaex\xb8\xba\xba\x82z\x09\
233\xe1\x1b\xef\x0c\xef\xaa\xc3B\x84\xb1\xb1\xf1\xec\
\x02\xf6\xed\xdb\x17t\xf7\xee]Qd\xfd\xfd\xfdHO\
O\x87\x97\x97\x97XzL\xa6\x14\xc1\xa1\x8f\x8f\x8f\x17\
M\x86\x09yu\x04\x04\x04\x88\xf021\x17\x1a\x0b\xe2\
4\x95\x97\x97\x8b\x94\xf9%\xba\xc2+\xe7W\xee\x07\xd8\
\xbcy\xf3\xec\x02\xf6\xee\xdd+a\xa27o\xde\x08\x11\
\x1cj\x9e);c!\x11\x11\x11\x22\xaf\x1cb\x9e\xe5\
\xb9s\xe7D\xa4\x98\x98\x9fy\x1c\x8b\xe3\x9c\xab\x92\xb3\
\x0d\xe7\x9f{\x01\x17\xa1\x91\x91\xd1\xec\x02\xa8\x7fKx\
\xc9MOO\x7f \x82\xf3\xcc5\xc1\x85\xe4\xe9\xe9\x89\
\xe3\xc7\x8f\xc3\xc7\xc7G\x84\x97\xa3\xa0\xcc\xb9*9\xa7\
\x92\xdf]\xb8p\x01T[\x5c\xf9\xe2\xff3g\xce\xd0\
\x8ei8\xbb\x80\x9d;wJX\xe9\xbbw\xef\xe6\x14\
\xc1\xc5\xc7ME\x99\xf3\x8f\xc9\xb9~\x02\x03\x03\x85P\
\xda\x15\xdf\xb7h\x1e\xcfM\xce\xcd\xcd\x0d\xa6\xa6\xa6}\
D\xe74C\xc0\x86\x0d\x1b\xf4i\x89dP?x\xcb\
a\x9bK\x04\x13\xa9\x92s$N\x9d:\x05jd\xa0\
}\x04...\x1f\x90s\x0b\xe7\x0d\x8bmyS\xa3\
1\xc3D\xe7F\xd0\x9dq\x10\xe5}\x5cWW\xd7c\
\xcb\x96-rv\xcaE\xf7\xb1\x88\xd2\xd2\xd2\xf7\xe4\x1c\
\x0d\xda\xe9`mm=+97-\xb6\xe1\xab\xa9\xa9\
\x09'O\x9e\x1c%\xff|h\xf1\x98\xeb\xe86_\xa1\
\xcc|\xcd\x9a5\xd1fff#\xfe\xfe\xfe\xc2\x89R\
\x04w=e\xd8\xb3\xb3\xcb \x91dQ\x04|\xde\x93\
\xf3\xe6\xc5\xdd\xf1\xe5\xcb\x97\xc2&55\x15\x94\xde\xc1\
\xa5K\x97\xd6\x92\xdfT\xc2Y\xc5~\xb0\xe8\x93\xe7A\
\xc2j\xc2\x9eu\xeb\xd6\x95\xec\xda\xb5k\x8aw@v\
x\xeb\xd6-\xb1\x13\xf2\x0a\xb0\xb2\xb2\xa6\xa2\xf4\xc3\xc5\
\x8b\xd5\xb4J\x8a\xa9[v\x89\xd9r\xb8I\xcc4E\
\xb2o\xf1\xe2\xc5\x95\xe4\xe7*\xc1\x95\xf0\xb5\xc2\xef\x22\
u\xcf%<\xd0@[[\xdbq\xfd\xfa\xf5mVV\
V\xa0-\x1b\xdb\xb6m\x03=\x0f\xaeZ\xb5\xaaYG\
G\xa7\xd2\xc4\xc4|\x88\x85\xa4\xa6\xe6\xc2\xc1\xc1aB\
OOO\xa6\xa5\xa5U@\xb6\x7f\x12N(\xce\x89+\
\xfe\xcfY\x91+\xd6h\xf9\xf2\xe5\x81\xfa\xfa\xfa\x8d\x0b\
\x16,(\xa2\xe7D\x82;\xe1\x07\x8e\xd4\xca\x95+\xe3\
V\xaf^\xdd@\xf7Y\x84p\xc57\x82\xa1\x22\xa5\x0b\
5\xf2\xb5\xa4\x98\x05\x87\xf1 \x0b\x22,S\x9cr\xb4\
\x14\x9fe\xdf\x12~T\x1cJ\x97\xa8\xf3\xc5\xfc\x0f\xd1\
\xc2G\xb4c\xf2\xc9\xfc\x00\x00\x00\x00IEND\xae\
B`\x82\
\x00\x00\x06\xe8\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\
\x00\x00\x00\x19tEXtSoftware\
\x00Adobe ImageRead\
yq\xc9e<\x00\x00\x06zIDATX\xc3\xed\
W\x09LTW\x14\x1dj\xed\xa6Mii\xb5.\x15\
\xf7\x1d\xb1 \x8a\x0a(*\xb2\xa9\x88\xc0 (\x22\xae\
\xe00\x08nl#B\x01\xc5qAvq\xa1\x0a(\
\xe2Z\xc0\x0aZ\x91`\xc0\x15\xad\x88h\xcd\x18\xd4\xaa\
\xd4Z\xb1.\xe8\x8c\x0a\x9e\x9e\x0f?\x8dR)\x9a\x9a\
6i\x9c\xe4d23\xff\xdds\xef9\xf7\xde\xffG\
\x02@\xf2_B\xf26\x81\xffe\x02fR\x85\x91\x99\
4Xf\xea\x14\x14o\xea\x18\x98f\xea\x18\x90>\xd4\
~\xc1\xaa\x81\xb6\xde\x93%\x12\xc9\xc7D3\xc9\x9b~\
\x0d\x9b\x18\xd2\x97\xc4\x11\xc3\x9c\x17\x17{,\xdc|9\
`\xf9\xe1\xdb\xa1\xd1\x17\xab\x15+\xae\xa8\x15\xcb\xaf\xa8\
\x03\xa3\xce<\x90)v\xdf\x1al\xe7\x97o`1]\
\xc6#\x9f\x10\xef\xbe\x01\xe2\xc5\x96$M\x9947Y\
\x15\x91Pv7<AS+\x0f\x07&-\x00\xc6z\
\x02\xa3\xa7\x02#\xdd\x00kw\xc0}\x1e\x10\x16]\xf9\
\xc4\xc2u\xc9\xb5\xd6\xbazR\x1e\xd7\xf9\xc7\xc4\xd3\x17\
\xa5V(\x93\xaf>\x0c\x8c\x06\xdc\x02I$\x03L\xa6\
\x01\x86\x93\x01=)\xd0\xdb\x1e\xe8fK\x8c\x06\xfa\xd9\
\x00\xd29\xc0\x82\xf0\x22u\xaf\xc1\x13r\x18\xc6\xe0\xf5\
\x89\x9d\x17\xeb\x12\x8aI\xbe\xc9\xaa\x95\x1bI\xbc\x06p\
\x0d\x02,\xe4\xc0PVlL\x0cd\x12\x83\xbc\x09\x92\
\xe9{\x00=]\x80Nc\x00]\x0b`\x88\x13\x10\x10\
\xa5~6\xd0VV\xc9pN\xafE>|b\x88\xdc\
\xc6#\xaa,<\xbe\xa4*<\x19\x98\xba\x84\x15\xfb\x01\
fs\x89\xf9\x94[\x01\xd8G\x01\x93\xa9\xc6\xd48&\
\xc6\xf7q\xdfP\x11_\xa0\xef\x14\xa0\xab\x1d`\xe4\x0c\
\xcc\xa5E\xe6N\x01w\x19\xd2\xf7\xb5\xaa\x96-\xd9q\
5&]S\xebM\x92\xf1\x01\xf4\x96\xa4#\xfc\x01\x9b\
\x08\x92\x92p~:\xb0|/\xb0\xbe\x10\xd8T\x04$\
\xfc\x00\xf8o\xa5\xec+\xa8\x0e\x13\xed\xc3^\x18\xcc^\
\xf0]\xc6\xe4\xbc\xe3\xab\x19Z\xf1\x0a\xe4\x0a'\xa1\xea\
\xc8\xc4\x92\xaa\x88u$\x0ac\xd5$\x1dE\xbfm\x22\
\xd9l\x09\xf4t\x1b\x10{\x08\xc8*\x03\xb6\x1eT\xd5\
\x84\xc4\xeeQ{,\x88{\x18\xb9.O\xb3\xbd\x84\x92\
gP\x09^kLkF\xd1*E,\xed\x19#\xbf\
\xc7\xf0K\xfe\x1c\x1f\x8e\x861\xbf\xf8\x88\xd0z^r\
\x07\xcf\x98\x0b\xb1i75\xf3\xe9\xb5S\x08`I\x99\
\xadY\xb14\x06\x90\xb1b\xe5\x01`W)\xb0\xad@\
U3\xc6#\xf4A_\xd3\x89W;\xf4\x1aZ\xac\xd3\
\xae\xfbN6\xda\xb1\xb5\xbbJ4\x89\xf9\xb4$\x91}\
\x12T\x1fcU\x9a\xfa\x99\x91\xb5\xe7\xed:\x05\x04\xf2\
\xc4\xd4\xb2\xdf\x0d-gm\xea\xd2\xdfb\xbc\xb8(\xb4\
\x98X\xf0\x0c\xff\xd4\x8a\xd8-\x9aZ/%\xbd\xe5A\
+\xfai\xbf\x0a\xf0Ha\x159@\xca1 \xfb\xf4\
\x9dZY\xe8\x86G\x02\xf1\x97\x9d\xf4\xf3yv9\xe1\
E\x8cc<\x7f\xdf\xc8\xf4\xdf2O\x02>\xa9L\x9a\
q|\xe3\x81\xc8\xa4\x13O\xba\x1b\x8d9\xcfk\xfc\x04\
\x05J\x0b\x8f0\xabu\xa7\x1f\xe9\x9b\xbbe\xe9\x99\xb9\
\xc8\xb9\xc1\xb6\xf9E\xe4\x5cWn\x06\xa6\xd1o;\xca\
n\xcbw\x97$@\x9e\x09\xac,\x00\xf6\x94\x03i\xfb\
\xcb\x9e\x8ep\xf6\xbf\xdf\xa1\xb7I\x09\x83\xad!<\x09\
s\xa23\xf1Y\xff\x11\xee\x16^!)\xd7w\xfdH\
\x1b\xb6S1Z\x18\x9fE\x05\xddB\x1fh\xb7\xea\xb8\
\x9b\xd7\xb8\x08\x0dV\x96\xcb\x80+\xf9\xa3\x97\xe2\x94\xda\
x\x9c\xef\x85\xf0\xa4\xeb\x1a\x7fz\xeb\xb6\x94\xcb\x84r\
\xdb\x0b]\xfd-\x83\xb0\xc1\xd6\x1e\x07\xf2\xca\xd5\xcf\x16\
)\xb7p\x96\xed+>o\xdfc_\x9d\x97\x12\x89\x1d\
\xd1\xf5\xf9Uk\xe2\xb0h\xda\xb2\x0d\xfb\x7f\xcdd\x1f\
\x84\x91X\xf9\x1d\x10\x9et\xf8qW\x03+\xa1\xfa0\
\xc2X\xb0\xe0\xdc\xae\x5c`N(;\xdb\x07p\x5cT\
]\xebBR\x07b\x1c\xbbUJ\xc9fm\x01B\xe9\
u*+\xc9-\xbbS;Q\xae\xac\xee\xd4oD)\
\x03\xc4\x103\x89!D\xeb\x86\xabU\xb8\x17d\x1c\xbc\
X\x9d\xce\xa4\xe38\x11i\x07\xef\xd4\x9a;\xf9\xdfo\
\xa1\xdd:\x93?\xbb\x12m\xeb\x12\xd8\xb9\x9f\xber\xa6\
M\xbc\x00S\x8e\x8bUX}\xd5\x93\xd6\x03\x9e\x94n\
);<\x93\x92\xe7\x9c\xbaQ#J~\x92\x87\x95\x84\
\x83Xu\x0b\xe2\x9d\x86\xf7\x06\xa9<\xe6B\xf1e6\
({`\xe7Q\xf53G/e\xb5x6\x980$\
>\xa8K`\x0f\x09f+\xebgz$\x95\xb0g\x87\
O\xa1\xff>\x94,\x923\x9dA\xf2\xb5Y'\x9e\x8c\
$y\xbbn\x03\x8f\xf0`$1\x96h\xdf\xd8\x0dE\
h\xee\xf4\xbc\xb2\xbb\x85* \xff\x020/r\x8bZ\
TMH\xdc\x96\xf8\xa2n\xe2\x84\x04r\x8a\xd9\x9d\xdc\
lvL\xc2\x81\x92O\xe5xy\xd3\xb3\x10\xf6F\xf2\
\x19Vp\xecF\x0d\x1b\xb4R\xbb\x95n\x8e\xb8<\xac\
\x886\x8d\x91\x0b\xbb\xc3\xc3?YU\xfe\x0bp\xfa*\
\xf7\xc4\xd2\xad\x8fD\xdfW\x13\x13^H\x5cH \xef\
\x14\xc7\x8a\xdd\xed\xbe\x11\x98\xc1\xa51\x97\xcd\x16LU\
\xa28fk\x0a\xea\xc9\xdbw\x1fT\xc8\xcb\x17\x0a\xd6\
\x8a\xd9\xbf\xbcr\xa7 \x1d&\xb0\xf3P\xe9MMy\
%\xc9\xa3\xb6>\x14\xc9\x85~\x11\xee\x80\xba/\x9c\x15\
\x12(\xa2Dq\x5c\x16A\x9c\xed\xc5l\xb6e\x5c\xa3\
\xd1\xec\xdc\xb5\xdcl\x99\x97\xb8R\xb3N>\xee=d\
\xc2Q\x9d\xb6\xdd<\xc5\xec\x1b}\xa0`\xbc9q\x19\
E\xb7J*4\xb5\xce\xb2\x15\xf7\xba\x19Z\x97\x8b#\
\xeaLt$\x9a7<p\xee\xec\xcf\xc0\xc1\x9fHV\
Z\xdfl{\xe8[v\x05\xb0\x8f\xf2\x15\xdc\x00\xceV\
\x01\xebv\x17\xa9\xfb\x98Hw\xf0H\x1f\xe2\xfdF\x1e\
J\xecB\x13\xf7^\xcb?}S3vz\xc4\xed\xce\
\xfa\xa3\x84\xfd\xb0R\xbc\xeb\xfd\x95\x5c\x9c\xd5\x8c\xec\xa2\
\xcb\x9a\xec\xe2KO\xb3\x8aT5\xd9GU59\xc4\
\xdec\xc4qU\xcd\xf7D\xee\x09\x01\x97\x9e\xba\xfa\xae\
\xaej\xa5\xab\xe7#\xfa\xaf\xd5\xe0\xf9\xa0\x87G\xc0\xfa\
\x8b\xab\xd3\x0a\xab\x0c-g\x9e\xfb\xaa\xe7\xe0\x03\xfc:\
\x82\xb0\x17eo\xfeR\xc9\x0cF\xcfp\x19`5\xbb\
\xa0\xdf\xf0\xc9\xe7\xf5\xcc\x5c/5\x8aa\xae\xaa6]\
\x0cr\xc4\xb9\xef\xf2\x12\x1b\x9au7\xb25\xef=\xd4\
q\xe3\x87-?\x8d\xe2g91\x92h\xd7\xd4\xa3\x97\
\xb0\xb9\x06\x88\x8bav\x13p\x13D\x13\x1f\xa5\xb4\x1a\
\xc4\x11>k\x13_\x0b\xf71\xd1*\xedWy\xeek\
&&\xd1Fl\xb0\xbfC\x9b&\x9ej\xb5\xea\x96\x8b\
D\xd2\x92x\xef%I\xfe\xfb\xaf\xb7\xff\x8c\xde&\xd0\
\x14\xfe\x00\xc6\x8fm_Q\xaa\x96$\x00\x00\x00\x00I\
END\xaeB`\x82\
\x00\x00\x03\xd1\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
\x00\x00\x00\x04gAMA\x00\x00\xd6\xd8\xd4OX2\
\x00\x00\x00\x19tEXtSoftware\
\x00Adobe ImageRead\
yq\xc9e<\x00\x00\x03cIDATX\xc3\xc5\
\x97\xcdo\x1bU\x14\xc5\x7fwf\x92\x89\xd3|\xd4\xad\
\x17\x09 \xd2MUQ\x10\x08Q\x84\xca\x0a\x09\xd8 \
\xc4\xa2R\x17,*$(k6,\x90\xfa\x1f\xc0\x82\
\x0d\xa8;\x04,\xd8\x82\x10\xaa\xdaE\x05d\x07\x08\x04\
\xa14@\x85\x11n!\xb5\x13\x9c\xe6\xc3\xb5\xd3y\xef\
]\x16\xf3\xec\x8c\x9d\xc4\xa6\xf5T\x1d\xe9J\x1ei<\
\xe7\xdcs\xce\xbb\xef\x8d\xa8*\xf7\xf2\x0a\xb8\xc7W\xf4\
\x7f\x1ez\xff5y\xf2\xe6\x16\x91U\xa40\xca\x13\xc6\
\x12\xaa\x22\x00Q\xc0L\x180\xeb\x94\xc0:\x1a\xd55\
>{\xfbs\xe6\x81\xa6\xaa\xbaA\xef\x96A\x16\x9c}\
]\xce<\xf8\xc8\x0b\xaf:\xa7\xa1\xaa\x06\x0f\x1c}v\
\xdc9\x15T\x05`\xaa4\x17\x8d\x17\xef\x1f\x09\xc2\x82\
\x98\xad\x86~\xf1\xde\x89\xeaw\x8b\xff\xbe\xfb\xe1W|\
\x02\xd4U\xd5\xf6\x05P\xd5\xbeu\xf64?\xaa\xaa\xaa\
:_\xb6\xab\x9cZm\xb5nj\xb5\xba\xa4\xc6\x18\xbd\
\xb2\xf0u\xf2\xe6\x8b|\xfb\xfc\xa3\xbc\x02\x14\xdbM\xee\
U\x033\xe0\x94\x10,`|9\xd2\xfb\xb4\x04\x8b1\
\xb7X^\xae\x11\x86!\x87\x1ez::\xf9\xc6\x07\x8f\
\x1d\x9e\xe1\xe5\x97\x8e\xf1\x1c0!\x22r\xc7!L\xbd\
\xd6.\xd0\xb4\x1c\xe0P,\xaa\x09\xcdf#\x0dU\x14\
\xf1\xf0\xf1\x93\xa3\xa7\xdf\xfa\xf8\x99\xb9\x12\xa7\x80C@\
a\xc8U\x90\x02\x81E1\x9e@\x02\x18\xc4\x93\xc9\xe6\
m\xdf\xbe\x09\x8e<u\x22.Mr\x1c8\x0aL\x0e\
\xb5\x0a\x14\x87`\xd2\xd4n\xe7\x97T\x19\x08\x02\xc5\x98\
\x16\x17/^`mm\x83 \x80\xfd\xfb\x8bhT\x8c\
au\x0e\x98\x00\xaaw\xac\x80d,\xd0N\x1e\x12\xda\
\xd9\x18\x1d\x15ff\x0f\xd2l\xd6\xd9\xdc\xaca\xcc&\
\x85\xc2\x08\xad\xe6*^\xfehH\x05\xacW@;}\
KF\x85 T\xee\x9b-15\xf98\xc6\x18\xa2(\
\x22\x8e\x0fp~\x04\xcde\x10\x09\xcewL\xc6\x06E\
\x11\x04%\x10!\x8e\x858\xceZ=F\x18t\xa4\xd3\
\x1c2\x90\xf8\xb7\xa4\xa0\xda\x87nJ\xce\xe57\x8a\xdb\
^\xb7;o\x83HO,\xb7\x1b\x15\xff\x9f\x9c\x08\x08\
\x0e\xcdX\xd0&\xa1;\xd6\xc36\x1d\xc9W\x81\xd4\x82\
\xfe${\xe9\xe5H@\xfd\xe0\x91.\x03\xbaA\xe9I\
\x9a\xe6iAV\x01\xd9\xa5cz\x08\xe5\xae@\x9a\x01\
\xd3\xe9Qv\x89\x1c>\x96\xd2\x09\xa7\xcd\xdf\x82\xde^\
\xa5\x13\xc6\x14z\xfby\xbd\x1b\x0a$;\xe4\xee\xf6\x5c\
\xbb\x16g\xce\x0a\xec\x9c\x84\xba\xebs\xd9\xddC\xf3\x1f\
D\x83b\xd7\xfd\xfb.\x0c\xa2\xac\xf3\xfd\x94h\x0f\xec\
\x5c\x97a\xba\x15\x0f:\xe1\xc7\xc08Pdm%p\
\x1bMZ\xb9mF;-\x80\xf4H9\x860\x8dR\
\xa4VY\xb1\x95\xc5\xcb\xf6\xa7/?J\xae,\xfe\xd0\
\xb8t\x95?\x80U`kH\x05\xd4\x1f@\x15%\x04\
\x0a\x08S(\x07\xa8UV\xed\xc2\xfc\xb9\xe4\xd7o>\
5\xe5ry\xfd\xef:\xcb\xdf\xff\xc9o\xe5*e\xe0\
\x1ap\x19X\x1f2\x03\xa0\x8c\xa1L\x03\x07=\xe8\x85\
\x0e\xe8/\xd7\xa8\x5c\xaa\xf0\xfb\xd2\x0d\xfe\x02j\xc0\x12\
\xf0\x8f?\x86\xd5\x81\xcd!\x158B\xad\xb2l\x17\xe6\
\xcf\xef\x05z\x1d\xb8\xeaA\xeb\xc0\x86\x07\xdd\xd2\x01_\
>\x03\x09\xac79\xf7\xce\xa9\xc2\xf4\xf5\x1b\xd8\x9f+\
,\xed\x01\xba\xe2en\x00\x89\xde\xc6\x17\xef\xc0O3\
\x11)\x01\xc7\x80\xc3\xc0-\x0f8\x14\xe8\xed\x12\x18\x01\
\xa6\xfd\xd1\xdazi\x87\x02\xcd^\xff\x01\xf9h\x10\x8e\
\x11Wv$\x00\x00\x00\x00IEND\xaeB`\x82\
\
\x00\x00\x07f\
\x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\
\x00\x00\x07-IDATx^\xb5V]o\x1cW\
\x19~\xce\xc7|\xec\x97\xd7n\x9c8\xc6\x89\x03I\x9a\
&M!\xaa\x08\x95\xb8@\xca%\x08\x89\xfb\x8a+\xee\
\xb8AHH !!\x047\x5c\xf1\x03\xb8\x00\xa9p\
\x83\xa2\x0aQ\x22\x017 \x15\xd1\xa0\xe6\xb3\xadS+\
I\x9b\xa4\xb1\xe3\x8f\xb5\xbd;\x9bY\xef\xcc\xce\xce\xcc\
9\x87\xf3\x1e-+\xd3:\xf5\x02\xe2X\x8f\xde9\xc7\
\x1a?\xcf\xfb\xbc\xefy\xc7\xcc\x18\x83\xffu]\xbc\xf8\
m\x0e T\xaa\xa8h]\xd6\x19\xe3\x14\xa7t\xa9\xea\
Z\x95\x15\xad\xf4\x941hz\x15\xb9\xba\xbc|\xf9M\
\x00\x99\xe5\xd5\x00 \xf7\x12\x5c\xf8\xc2\xb7\xbe\x94\xa5\x83\
S@Yc\xe0u?\x0ckBzU\x18V\x07P\
c\x8c\xd5\x00\xd4\xc1\x10Z\xd0Y\x08\x98\x0a\x98\x0e\xb5\
1\x81\x86\xf64+=K*\x99'\xc5\xdc\xe9\xe7\xd9\
\xd9\x17\xcf\xf2\xc6\xcc\x0c\x13\xcd\x19\xf1\x97_\xbd\xf6\x00\
\xc0\xab\x16\x14\xe3O\x088<\x7f\xf8\x97_\xfc\xca\xcb\
/e\xdaSyQ\xb0;7\xdfb\x1f\xdc}\x17^\
\xe0\x81\x0b0\xce\x01!\xb8\x83\xe7\x09\x16\x04\x92\x85\xa1\
\x8f\x8aE\xb5\x1a\xda\x18\xa2^\xab\xa2V\xab`\xee\xe8\
\x02N_\xf82\xael\x7f\x16\xed\xf6\x03\xf0\xd62\x94\
*\xe7\x01\xbcb\xd1\xd9W\xc0\xc9s\xa7\xce\x7f\xe3{\
\xaf\xf2\xdf\xfdc\xc8?\xba\xf9\x16\xe6\x16$~\xf8\xdd\
\x1f\xa1T@\x18\x04\xf0=\x89j\xa5\x820\x0c\x10\xf8\
\x9e\xdd\xfb\x90R@\x08\x01\xce\x18\x98\x05\x18 \xa5\xe7\
\xce\xb3\x5c\xe1'W;xx{\x09\xcf\x9bw\xe1\xab\
\x5c\x00 \x11\xa1\x05>!`7\xc9\xb37o\x0fk\
\xbf\xf9\xeb\x0a:\xd7\x96\xf0\xcdS\x06_\xff\xea\xd7\xb0\
\xb1\xbe\x8e~\xd2G\x96\x0d\xa1\x94BY\x14\xc8\x87C\
h\xada\x8cq\xb1,\xcb1\xe8\xcc\x89\x11>N\x1e\
:\x89\xf5\x13\xaf\xa0\x9a\xe7(W\xaf\x01\x00#\xec+\
\x80^T\xf4\xc7\x94q/GOc\xdcx\xfb*\xd6\
6\xb7Q\x14\x85#\xe3\x9c\xec\xa7\x0c%\xc1eO\x8b\
D\xd0\xa2\xdf\xfb\xbeo\xcbPC\xb5\xd1\x84\xfc@!\
\xacV!\x94@\xb9\x87k_\x01$Z\x0a\x8e\xc0\x13\
\x80d\x08\xc3\x0a\x16\x17\x17\xc1\xbd\x902'\x01DH\
\xd9\x8dA\xcb\xed9\x07\xed8\xf5\x87\xf4\x5c?\x88\xa0\
\x0a\xc9\x13\x04\x82\xc1\xe3@~\x90\x00\x80Ap\x06_\
p\x80\x19\xd4m\x16s\x9f9\x8a$+\x9c\xfdE1\
\x1cYn\xe0~\x94\x866\xe4\x9cv\x0e9\x94\x05T\
\xa9\xe0\x16\xb7B*/\xc2\xf72'\x1c\x07:`A\
\xdc\xbe\xc7 }\x89\xa8\x1b\xe1\xf6\xf5\x9b\xd8\xdc\x89\xc8\
\xe2\xb1\xbdA\x10P\x19\xe8\x99\x1a\x93\x1c\xb0D\x15\xb2\
\x9f\x88\xdcy\xd5\xda\xeeY\x07~\xfdF\x8c@\x0a\x97\
\x18\xd8\x81\x0e\x18H\xce\xe0Ia#P\xaf\xd7\xf1\xc2\
\xf9\xcfc\xb6\x13\x8d\xad\xfe\xb7\x12\xb87\x00\xce\xc8\xb1\
q\x1c\x97\x85\x1a2\x94\x02\xa1\xa7!\x05;\xd8\x01\x22\
\x90\x92#\xb0\x90\x8cQ#Y\xd4Q\x14\xa5C\xa9J\
\xa8Q\x97\x13@\x11\xb0gd}\x89\xe10GY\x94\
P\xda\xf5\x0b\x0c\x97\xa8\x86\xc7\x10\xf8\x8a\x12\x9b\xac\x04\
\x94y\xe8\xb9FD\xa7\xbd\x83{\xcbKhw{.\
s\xcf\xf7\xdd<\xa8\x84\x15\x04\x81\x0f?\x08!=9\
\xb6\x9e@7\xc3se\xe1\xa0\xf5\xfb\xf5mW\x02\x8f\
\xcc9H\x00)\xf0\x84s\xc0\x92y\x98=d\xa7\xd9\
\x99s89\xba~\xd25\xe7~\x99\x18\x17\xb42\xc8\
J N4\xb2B!\xb7\xfbj@%0\x936!\
\x83\xeb\x01\x01Tg\xe60\x7f\xa6\x09\xe9yn6d\
\x85Aw\xa0\x90\xe4\x06i\xae\xd1\xb7\xb1?\xd4\xd8\xcd\
4zC\xe3blAgin\xa0\x0c\x5c\x89:\x03\
\x8df5\x04\x04\x0e\x16\xc0\x19)\x05|\xa1\xec\xf5;\
\x81;\x9a\xe1\xfbWv0[\x15\x18\x94\x06\x89%\x1c\
\x14\x06y9\x82\x02JcP\x8e\x9e\x15\x18\xc08\x04\
\x97`\xe4\x96.\x1dosJ\xa0\xa0\xfd$s\x80j\
\x15p\x86\xe9\xa9\x06J\x0e\xdco\x15\xb8\x8b\x02\xca\xd0\
\xb0\x11`BB\xba\x9asp\xc9\xc0\x8d\x86`9\xbc\
\xb2\x0f=\xe8#\xdd\x8d0\xe8E(\x8b\x1cSGO\
b\xfe\xd8\x09T|\x01#0\xc95\x84\xb3?\xf4\x05\
\x187\x90\x9e\xef\xb2(\xb3\x14&\xddE\x96\xc6\xc8z\
\x16I\x17\xc3$\x86\xca\xfa\x10j\x80\x9a\xd4\x98\xaeI\
\x1cnVq\xee\xb9\x06\xe6N7p\xe4\xd04\x9a3\
\x1aot|\xd7W\x1eM\xca\xc9F1\x09\x90\x964\
\xc6\xfa;\x7fB\xda\xfa\x10S\x15\x89C\x8d\x10\x0b\xd3\
5\xcc\x1fmbv\xba\x8e\x99\xc6\x09\x1c\x9d\x9d\xc6\x9c\
\xc5sSuT+\x81k\xd4R)\xa4\x83\x0c\xbb\xfd\
\x04\xbd\xfe\x10\x8b&\xc0@\x0b\xe4\x93\xcc\x01\x0e'\xc0\
Z\xe6c;j\xe1\xe2\x91\x1c?\xfd\xf1w\xb0\xb1\xb9\
\x85\xcd\x8du\xb4Z-D\xdd6\x9a\xd08s\xfc8\
\x820t\x9f\xe1$\xcb\xa9\xeb\xdd\x1c1\xc6\x8cF\xb2\
\x86a@=\x14\xd0\x05G:\x89\x00\x8c\x1c\xf0\x03\x09\
fJW\x0e\xc6\x04\xee}\xf8\x08\x97/_\xc6`0\
p#vjj\x0a\xc7N|\xce\xcd\x81O[D\x19\
\xd0\xb5\x06\x0d\xb6\xfd\x9b\xf0c\xa7\xcc\x91\x06\xa3A\xc4\
\x19w\x83e}}\x9d\xc8\xdd\x97\xf1\xb8\xcd\x9c\xbe\x03\
\x93.\x9f&\xab\xcf\xe0\xfb\xf2`\x01\x9c\x8d&\xa1\xe4\
\xeeE\xce\x01\x03C\x84\xf4\xb1q\x1f\x19!\x04\xed\xc9\
\xee\xc9\x04\xf8\x1c\x013(\xd2\x0e\x98\x19\xdb\xc0\x9e\xe1\
\x80\x13\xe0\xc8}\xc1]}a\xc6\xdf\x89q\x8d\xff\x93\
\x15H\xa0\xfb\xf0\x06V\x97\xdeG\xb7\xbb\xb2\x0e`h\
Q>S\x80\x10\x80'\xb9\x05\x95\xc0i\xfd\xaf\x17\xe9\
g\xfd\x16\xee\xfe\xed\x0f\xb8\x7f\xeb\xc1\xf6\xda\xda\x8d\xeb\
\x00V,z\xfb\xdf\x02>jB\xc9 \xe5\xbf2\x06\
\x14]\xad4\xa5> \xfbi\xff\xa9%\x10\x82\xbb\x9a\
kSb\xe5\xfa\x9fq\xef\xdarou\xe5\xd6\xad\xa2\
HH\xc0{\x16\xdd}\x05\xc00g\x89 !\x16\x9c\
3h\xad1;;\x8bK\x97.aaa\x01\xd3\xd3\
\xd3h4\x1a\xee?c)\x85\x8d\x9e{\xe6\x5c \xcf\
K<}\x9a\x98v\xbb\xc7\xda\xed\x18\xbd\xdd\x0cw\xaf\
=\x1a>y|\xe7N\x92l\xbd\x0d\xe0\x9a\xc5G\x16\
\xf93\x07Q\xa3\x0a\xcc\x1f\x06\xe2\xc3M\x84\xba\x81\xbc\
\xc8q\xe1\xc2K8\x7f\xfe\x05K\x90C)\xedf\x7f\
\xb7\x9b\x22Ib\xc4q\x86(J\xcc\xf6vWmm\
\xed\x0c\xdb\xed\xad~\xaf\x17\xc5i\xda\xe9\xc6\xf1V{\
u\xf5\xe1\xd6`\xb0\xfb\x00\x00e\x7f\xdf\xa2o\xec\xda\
W\x80\xe7K\x7f\xd0Oq\xf5\xb7\xafac\xed\x09\xce\
\xce\x1f1\x0f\x1fm\xe3\xf1J\x8bEQ\xdf\x92&&\
\x8av\xcbN'\xca\xba\xdd\x9d~\x1c\xb7\xe38\xde\x89\
\xba\xdd\xcdv\xbb\xbd\xd1N\xd3^D\x04\x16\xb1Eo\
\x14\x9fZ\xb4,6i?&\xdfO\xc0\xe3Gk\x1b\
?\xff\xc1/\x16\xef\xbe\xf7~\x91&Y\xb1\x94\xdf\xcb\
\xae\xbc\xfe\xf7~\xad\x86\xdd~?\xeaF\xd1F{g\
gm{8\x1c\x10\xc1\xee\x98d\x0c\xb7O,2\x8b\
\xe1\x9e\x98[\xde\xf2\xc0Ixo\xe9\xf6\xcfz\xbd'\
/\xa7\x83V}0\x88\x22\xadKR\xdf'\xec!|\
:zN\x1d\xc1\x98dL\xa4p\xf0\xda_\xc0\xc3G\
\x7f|\x1d\xc0;\x16\xcdQ&\xbd\xbdY|\x8cHO\
\xc81\xb9\x80\x11\xe1\xf2h>\x14#\x22\x83\xff\xe3\xfa\
'\x0a\xd7w\xe2\xf8Nm\x80\x00\x00\x00\x00IEN\
D\xaeB`\x82\
"

qt_resource_name = b"\
\x00\x06\
\x07\x03}\xc3\
\x00i\
\x00m\x00a\x00g\x00e\x00s\
\x00\x09\
\x00W\xb8g\
\x00p\
\x00r\x00i\x00n\x00t\x00.\x00p\x00n\x00g\
\x00\x08\
\x04\xb2X\xc7\
\x00u\
\x00n\x00d\x00o\x00.\x00p\x00n\x00g\
\x00\x07\
\x04\xcaW\xa7\
\x00n\
\x00e\x00w\x00.\x00p\x00n\x00g\
\x00\x08\
\x08\xc8Xg\
\x00s\
\x00a\x00v\x00e\x00.\x00p\x00n\x00g\
"

qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01z\xe7\xee'\x09\
\x00\x00\x00*\x00\x00\x00\x00\x00\x01\x00\x00\x06\xc8\
\x00\x00\x01z\xe7\xee'\x09\
\x00\x00\x00@\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xb4\
\x00\x00\x01z\xe7\xee'\x09\
\x00\x00\x00T\x00\x00\x00\x00\x00\x01\x00\x00\x11\x89\
\x00\x00\x01z\xe7\xee'\x09\
"

def qInitResources():
    QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)

def qCleanupResources():
    QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)

qInitResources()