commit 13d5229c3b0d478761c3ee028947e86988dde64a Author: Sven Riwoldt Date: Sun Feb 9 10:32:49 2025 +0100 Init diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100755 index 0000000..819b935 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,31 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop/Laptop (please complete the following information):** + - OS: [e.g. Windows] + - Version [e.g. 1.0] + +**Additional context** +Add any other context about the problem here. diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/PyRex-master.iml b/.idea/PyRex-master.iml new file mode 100644 index 0000000..2c80e12 --- /dev/null +++ b/.idea/PyRex-master.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..17a7663 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,589 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..98cd536 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..34926be --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Example.png b/Example.png new file mode 100755 index 0000000..9d121c4 Binary files /dev/null and b/Example.png differ diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000..2b83b98 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 user0706 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/PyRex/.idea/workspace.xml b/PyRex/.idea/workspace.xml new file mode 100644 index 0000000..0dbd183 --- /dev/null +++ b/PyRex/.idea/workspace.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + 1739092909700 + + + + \ No newline at end of file diff --git a/Qt_ui/generator.ui b/Qt_ui/generator.ui new file mode 100755 index 0000000..e9d2fec --- /dev/null +++ b/Qt_ui/generator.ui @@ -0,0 +1,250 @@ + + + CodeGenerator + + + + 0 + 0 + 800 + 333 + + + + PyRex Code Generaotr + + + + :/icons/icons/icon.ico:/icons/icons/icon.ico + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + border-bottom: 2px; +border-style: solid; +border-bottom-color: rgb(255, 85, 0); + + + 1 + + + <!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-size:8pt;">import re</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">regex = r&quot;&lt;CHANGE_ME&gt;pattern&lt;CHANGE_ME&gt;&quot;</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">test_str = &quot;&lt;CHANGE_ME&gt;string&lt;CHANGE_ME&gt;&quot;</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">matches = re.finditer(regex, test_str, re.MULTILINE)</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">for matchNum, match in enumerate(matches, start=1):</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> print (&quot;Match {matchNum} was found at {start}-{end}: {match}&quot;.format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> for groupNum in range(0, len(match.groups())):</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> groupNum = groupNum + 1</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> print (&quot;Group {groupNum} found at {start}-{end}: {group}&quot;.format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))</span></p></body></html> + + + Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + + + + + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + QPushButton#CopyPushButton { + min-width:60px; + max-width:60px; + min-height:35; + max-height:35; + + color: #495057; + + background: rgba(255,255,255,100%); + border-bottom: 2px; + border-style: solid; + border-bottom-color: rgba(0,0,0,.3); + border-top-left-radius: 0px; + border-top-right-radius: 3px; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} + +QPushButton#CopyPushButton:hover { + background: rgba(255,255,255,50%); + border-bottom-color:rgb(255, 85, 0); +} + +QPushButton#CopyPushButton:pressed { + background: rgba(255,255,255,100%); + border-bottom-color:rgb(255, 85, 0); +} + +QPushButton#CopyPushButton:disabled { + background: rgba(0,0,0,.04); + border-bottom-color: rgba(0,0,0,.15); +} + + + Copy + + + + + + + QPushButton#ClosePushButton { + min-width:60px; + max-width:60px; + min-height:35; + max-height:35; + + color: #495057; + + background: rgba(255,255,255,100%); + border-bottom: 2px; + border-style: solid; + border-bottom-color: rgba(0,0,0,.3); + border-top-left-radius: 0px; + border-top-right-radius: 3px; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} + +QPushButton#ClosePushButton:hover { + background: rgba(255,255,255,50%); + border-bottom-color:rgb(255, 85, 0); +} + +QPushButton#ClosePushButton:pressed { + background: rgba(255,255,255,100%); + border-bottom-color:rgb(255, 85, 0); +} + +QPushButton#ClosePushButton:disabled { + background: rgba(0,0,0,.04); + border-bottom-color: rgba(0,0,0,.15); +} + + + Close + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + 0 + 0 + 800 + 21 + + + + + + + + + + + ClosePushButton + clicked() + CodeGenerator + close() + + + 432 + 560 + + + 399 + 299 + + + + + CopyPushButton + clicked() + textEdit + selectAll() + + + 366 + 560 + + + 399 + 280 + + + + + CopyPushButton + clicked() + textEdit + copy() + + + 366 + 560 + + + 399 + 280 + + + + + diff --git a/Qt_ui/icons/code.svg b/Qt_ui/icons/code.svg new file mode 100755 index 0000000..b0106ac --- /dev/null +++ b/Qt_ui/icons/code.svg @@ -0,0 +1,73 @@ + + + + + + image/svg+xml + + + + + + + + ic_fluent_code_24_regular + Created with Sketch. + + + + + + diff --git a/Qt_ui/icons/icon.ico b/Qt_ui/icons/icon.ico new file mode 100755 index 0000000..a5e9612 Binary files /dev/null and b/Qt_ui/icons/icon.ico differ diff --git a/Qt_ui/icons/info.svg b/Qt_ui/icons/info.svg new file mode 100755 index 0000000..5a1eacf --- /dev/null +++ b/Qt_ui/icons/info.svg @@ -0,0 +1,73 @@ + + + + + + image/svg+xml + + + + + + + + ic_fluent_book_formula_information_24_regular + Created with Sketch. + + + + + + diff --git a/Qt_ui/icons/logo.png b/Qt_ui/icons/logo.png new file mode 100755 index 0000000..3e3922b Binary files /dev/null and b/Qt_ui/icons/logo.png differ diff --git a/Qt_ui/icons/sheet.svg b/Qt_ui/icons/sheet.svg new file mode 100755 index 0000000..1a52738 --- /dev/null +++ b/Qt_ui/icons/sheet.svg @@ -0,0 +1,73 @@ + + + + + + image/svg+xml + + + + + + + + ic_fluent_text_bullet_list_square_24_regular + Created with Sketch. + + + + + + diff --git a/Qt_ui/icons/windowIcon.png b/Qt_ui/icons/windowIcon.png new file mode 100755 index 0000000..139ea20 Binary files /dev/null and b/Qt_ui/icons/windowIcon.png differ diff --git a/Qt_ui/mainGUI.ui b/Qt_ui/mainGUI.ui new file mode 100755 index 0000000..eeda10e --- /dev/null +++ b/Qt_ui/mainGUI.ui @@ -0,0 +1,2226 @@ + + + MainWindow + + + + 0 + 0 + 1081 + 600 + + + + PyRex + + + + :/icons/icons/icon.ico:/icons/icons/icon.ico + + + background-color: rgb(225, 225, 225); + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + background-color:rgb(255, 85, 0); +min-height:40; +max-height:40; + + + + 6 + + + + + min-width:30px; +max-width:30px; +min-height:30px; +max-height:30px; + + + + + + :/icons/icons/logo.png + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 27 + 27 + + + + + 27 + 27 + + + + QPushButton#CodeGeneratorPushButton { + min-width: 25px; + max-width: 25px; + min-height: 25px; + max-height: 25px; + background-color: rgba(255, 255, 255, 0%); + + border:1px; + border-color: rgb(255, 85, 0); + border-style: solid; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + border-bottom-left-radius:5px; +} + +QPushButton#CodeGeneratorPushButton:hover { + background: rgb(255, 119, 51); +} + +QPushButton#CodeGeneratorPushButton:pressed { + background: rgba(255, 255, 255, 0%); +} + + + + + + + :/icons/icons/code.svg:/icons/icons/code.svg + + + + 25 + 25 + + + + + + + + + 27 + 27 + + + + + 27 + 27 + + + + QPushButton#RegexSheetPushButton { + min-width: 25px; + max-width: 25px; + min-height: 25px; + max-height: 25px; + background-color: rgba(255, 255, 255, 0%); + + border:1px; + border-color: rgb(255, 85, 0); + border-style: solid; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + border-bottom-left-radius:5px; +} + +QPushButton#RegexSheetPushButton:hover { + background: rgb(255, 119, 51); +} + +QPushButton#RegexSheetPushButton:pressed { + background: rgba(255, 255, 255, 0%); +} + + + + + + + :/icons/icons/sheet.svg:/icons/icons/sheet.svg + + + + 25 + 25 + + + + + + + + + 27 + 27 + + + + + 27 + 27 + + + + QPushButton#AboutPushButton { + min-width: 25px; + max-width: 25px; + min-height: 25px; + max-height: 25px; + background-color: rgba(255, 255, 255, 0%); + + border:1px; + border-color: rgb(255, 85, 0); + border-style: solid; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + border-bottom-left-radius:5px; +} + +QPushButton#AboutPushButton:hover { + background: rgb(255, 119, 51); +} + +QPushButton#AboutPushButton:pressed { + background: rgba(255, 255, 255, 0%); +} + + + + + + + :/icons/icons/info.svg:/icons/icons/info.svg + + + + 25 + 25 + + + + + + + + + + + + + 6 + + + 15 + + + 15 + + + 15 + + + 0 + + + + + 0 + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + REGULAR EXPRESSION + + + + + + + background-color: rgb(153, 153, 153); + color: rgb(255, 255, 255); + border-style: solid; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + min-width:150px; + max-width:150px; + min-height:20; + max-height:20; + + + 0 matches or wrong syntax + + + Qt::AlignCenter + + + + + + + + + Qt::Horizontal + + + + + + + 0 + + + 0 + + + 0 + + + + + + 9 + + + + QPlainTextEdit { + min-width:360px; + min-height:30; + max-height:30; + margin-bottom:5px; + + padding-left: 5px; + padding-top: 5px; + + color: #495057; + + background: rgba(255,255,255,100%); + border-bottom: 2px; + border-style: solid; + border-bottom-color: rgba(0,0,0,.3); + border-top-left-radius: 3px; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} + +QPlainTextEdit::focus { + border-bottom-color:rgb(255, 85, 0); +} + +QPlainTextEdit::disabled { + background: rgba(0,0,0,.04); + border-bottom-color: rgba(0,0,0,.15); +} + + + insert your pattern + + + + + + + QPushButton#ProcessPushButton { + min-width:60px; + max-width:60px; + min-height:35; + max-height:35; + margin-bottom:5px; + + color: #495057; + + background: rgba(255,255,255,100%); + border-bottom: 2px; + border-style: solid; + border-bottom-color: rgba(0,0,0,.3); + border-top-left-radius: 0px; + border-top-right-radius: 3px; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} + +QPushButton#ProcessPushButton:hover { + background: rgba(255,255,255,50%); + border-bottom-color:rgb(255, 85, 0); +} + +QPushButton#ProcessPushButton:pressed { + background: rgba(255,255,255,100%); + border-bottom-color:rgb(255, 85, 0); +} + +QPushButton#ProcessPushButton:disabled { + background: rgba(0,0,0,.04); + border-bottom-color: rgba(0,0,0,.15); +} + + + Process + + + Return + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + TEST STRING + + + + + + + Qt::Horizontal + + + + + + + + 11 + + + + QPlainTextEdit { + min-width:360px; + min-height:30; + + padding-left: 5px; + padding-top: 10px; + + color: #495057; + + background: rgba(255,255,255,100%); + border-bottom: 2px; + border-style: solid; + border-bottom-color: rgba(0,0,0,.3); + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} + +QPlainTextEdit::focus { + border-bottom-color:rgb(255, 85, 0); +} + +QPlainTextEdit::disabled { + background: rgba(0,0,0,.04); + border-bottom-color: rgba(0,0,0,.15); +} + + + insert your test string here + + + + + + + + + background-color: rgb(238, 238, 238); +min-width: 300; +max-width: 500; + + + + 10 + + + 10 + + + 10 + + + 10 + + + + + background-color:rgb(249, 249, 249) + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + MATCH INFORMATION + + + + + + + Qt::Horizontal + + + + + + + border:No; + + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + true + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + 0 + 0 + 300 + 449 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + + + + + + + + + + 0 + 0 + 1081 + 21 + + + + + + + + 312 + 91 + + + + + 312 + 524287 + + + + + + + Regex Sheet + + + 2 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + border:No; + + + true + + + + + 0 + 0 + 296 + 1465 + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Basics + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + . + + + + + + + Any character except newline + + + + + + + + + + + min-width:100px; +max-width:100px; + + + a + + + + + + + The character a + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ab + + + + + + + The string ab + + + + + + + + + + + min-width:100px; +max-width:100px; + + + a|b + + + + + + + a or b + + + + + + + + + + + min-width:100px; +max-width:100px; + + + a* + + + + + + + 0 or more a's + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \ + + + + + + + Escapes a special character + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Quantifiers + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + * + + + + + + + 0 or more + + + + + + + + + + + min-width:100px; +max-width:100px; + + + + + + + + + + + 1 or more + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ? + + + + + + + 0 or 1 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2} + + + + + + + Exactly 2 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2, 5} + + + + + + + Between 2 and 5 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2,} + + + + + + + 2 or more + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {,5} + + + + + + + Up to 5 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ab + + + + + + + The string ab + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Groups + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (...) + + + + + + + Capturing group + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?P<Y>...) + + + + + + + Capturing group named Y + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?:...) + + + + + + + Non-capturing group + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Y + + + + + + + Match the Y'th captured group + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?P=Y) + + + + + + + Match the named group Y + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?#...) + + + + + + + Comment + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2} + + + + + + + Exactly 2 + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Character Classes + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + [ab-d] + + + + + + + One character of: a, b, c, d + + + + + + + + + + + min-width:100px; +max-width:100px; + + + [^ab-d] + + + + + + + One character except: a, b, c, d + + + + + + + + + + + min-width:100px; +max-width:100px; + + + [b] + + + + + + + Backspace character + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \d + + + + + + + One digit + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \D + + + + + + + One non-digit + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \s + + + + + + + One whitespace + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \S + + + + + + + One non-whitespace + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \w + + + + + + + One word character + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \W + + + + + + + One non-word character + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Assertions + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ^ + + + + + + + Start of string + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \A + + + + + + + Start of string, ignores m flag + + + + + + + + + + + min-width:100px; +max-width:100px; + + + $ + + + + + + + End of string + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Z + + + + + + + End of string, ignores m flag + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \b + + + + + + + Word boundary + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \B + + + + + + + Non-word boundary + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?=...) + + + + + + + Positive lookahead + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?!...) + + + + + + + Negative lookahead + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?<=...) + + + + + + + Positive lookbehind + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?<!...) + + + + + + + Negative lookbehind + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?()|) + + + + + + + Conditional + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Z + + + + + + + End of string, ignores m flag + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Flags + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + i + + + + + + + Ignore case + + + + + + + + + + + min-width:100px; +max-width:100px; + + + m + + + + + + + ^ and $ match start and end of line + + + + + + + + + + + min-width:100px; +max-width:100px; + + + s + + + + + + + Matches newline as well + + + + + + + + + + + min-width:100px; +max-width:100px; + + + x + + + + + + + Allow spaces and comments + + + + + + + + + + + min-width:100px; +max-width:100px; + + + L + + + + + + + Locale character classes + + + + + + + + + + + min-width:100px; +max-width:100px; + + + u + + + + + + + Unicode character classes + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?iLmsux) + + + + + + + Set flags within regex + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Flags + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \n + + + + + + + Newline + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \r + + + + + + + Carriage return + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \t + + + + + + + Tab + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \YYY + + + + + + + Octal character YYY + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \xYY + + + + + + + Hexadecimal character YY + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Replacement + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \g<0> + + + + + + + Insert entire match + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \g<Y> + + + + + + + Insert match Y (name or number) + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Y + + + + + + + Insert group numbered Y + + + + + + + + + + + + + + + + + + diff --git a/Qt_ui/sheetGUI.ui b/Qt_ui/sheetGUI.ui new file mode 100755 index 0000000..0314dab --- /dev/null +++ b/Qt_ui/sheetGUI.ui @@ -0,0 +1,1610 @@ + + + SheetWindow + + + + 0 + 0 + 379 + 600 + + + + PyRex Regex Sheet + + + + :/icons/icons/icon.ico:/icons/icons/icon.ico + + + background-color: rgb(225, 225, 225); + + + + + 0 + + + + + border:No; + + + true + + + + + 0 + 0 + 344 + 1465 + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Basics + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + . + + + + + + + Any character except newline + + + + + + + + + + + min-width:100px; +max-width:100px; + + + a + + + + + + + The character a + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ab + + + + + + + The string ab + + + + + + + + + + + min-width:100px; +max-width:100px; + + + a|b + + + + + + + a or b + + + + + + + + + + + min-width:100px; +max-width:100px; + + + a* + + + + + + + 0 or more a's + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \ + + + + + + + Escapes a special character + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Quantifiers + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + * + + + + + + + 0 or more + + + + + + + + + + + min-width:100px; +max-width:100px; + + + + + + + + + + + 1 or more + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ? + + + + + + + 0 or 1 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2} + + + + + + + Exactly 2 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2, 5} + + + + + + + Between 2 and 5 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2,} + + + + + + + 2 or more + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {,5} + + + + + + + Up to 5 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ab + + + + + + + The string ab + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Groups + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (...) + + + + + + + Capturing group + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?P<Y>...) + + + + + + + Capturing group named Y + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?:...) + + + + + + + Non-capturing group + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Y + + + + + + + Match the Y'th captured group + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?P=Y) + + + + + + + Match the named group Y + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?#...) + + + + + + + Comment + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2} + + + + + + + Exactly 2 + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Character Classes + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + [ab-d] + + + + + + + One character of: a, b, c, d + + + + + + + + + + + min-width:100px; +max-width:100px; + + + [^ab-d] + + + + + + + One character except: a, b, c, d + + + + + + + + + + + min-width:100px; +max-width:100px; + + + [b] + + + + + + + Backspace character + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \d + + + + + + + One digit + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \D + + + + + + + One non-digit + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \s + + + + + + + One whitespace + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \S + + + + + + + One non-whitespace + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \w + + + + + + + One word character + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \W + + + + + + + One non-word character + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Assertions + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ^ + + + + + + + Start of string + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \A + + + + + + + Start of string, ignores m flag + + + + + + + + + + + min-width:100px; +max-width:100px; + + + $ + + + + + + + End of string + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Z + + + + + + + End of string, ignores m flag + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \b + + + + + + + Word boundary + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \B + + + + + + + Non-word boundary + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?=...) + + + + + + + Positive lookahead + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?!...) + + + + + + + Negative lookahead + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?<=...) + + + + + + + Positive lookbehind + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?<!...) + + + + + + + Negative lookbehind + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?()|) + + + + + + + Conditional + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Z + + + + + + + End of string, ignores m flag + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Flags + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + i + + + + + + + Ignore case + + + + + + + + + + + min-width:100px; +max-width:100px; + + + m + + + + + + + ^ and $ match start and end of line + + + + + + + + + + + min-width:100px; +max-width:100px; + + + s + + + + + + + Matches newline as well + + + + + + + + + + + min-width:100px; +max-width:100px; + + + x + + + + + + + Allow spaces and comments + + + + + + + + + + + min-width:100px; +max-width:100px; + + + L + + + + + + + Locale character classes + + + + + + + + + + + min-width:100px; +max-width:100px; + + + u + + + + + + + Unicode character classes + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?iLmsux) + + + + + + + Set flags within regex + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Flags + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \n + + + + + + + Newline + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \r + + + + + + + Carriage return + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \t + + + + + + + Tab + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \YYY + + + + + + + Octal character YYY + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \xYY + + + + + + + Hexadecimal character YY + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Replacement + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \g<0> + + + + + + + Insert entire match + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \g<Y> + + + + + + + Insert match Y (name or number) + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Y + + + + + + + Insert group numbered Y + + + + + + + + + + + + + + + 0 + 0 + 379 + 21 + + + + + + + + + + diff --git a/Qt_ui/src.qrc b/Qt_ui/src.qrc new file mode 100755 index 0000000..2dfb176 --- /dev/null +++ b/Qt_ui/src.qrc @@ -0,0 +1,10 @@ + + + icons/windowIcon.png + icons/icon.ico + icons/code.svg + icons/info.svg + icons/logo.png + icons/sheet.svg + + diff --git a/README.md b/README.md new file mode 100755 index 0000000..4e7cfef --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +

+ +

+ +[![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/) [![python-version](https://img.shields.io/badge/Python-3.6|above-.svg)](https://www.python.org/) [![Qt](https://img.shields.io/badge/GUI%20by-Qt%20Designer-orange)](https://doc.qt.io/qt-5/qtdesigner-manual.html) [![License](https://img.shields.io/pypi/l/ansicolortags.svg)](https://github.com/user0706/PyRex/blob/master/LICENSE) [![Status](https://img.shields.io/badge/status-test-yellow)](https://github.com/user0706/PyRex/) [![Open Source? Yes!](https://badgen.net/badge/Open%20Source%20%3F/Yes%21/blue?icon=github)](https://github.com/user0706/PyRex/) +## Description +PyRex is a tool for visual testing Python regular expression. +
Based on the re python package, combined with the Qt user interface, it allows a visual display of the results of a regular expression pattern. +
Also, in addition to the above basic function, there is an option to generate code for the Python language. + +## Prerequisites +After opening the downloaded repository in cmd *(Windows)*/terminal *(Linux/MacOS)*, to install the necessary packages for PyRex operation, enter the following command: +```python +pip install -r requirements.txt --no-index --find-links file:///tmp/packages +(if not, try pip3) +``` +## Download +[Windows XP or above](https://github.com/user0706/PyRex/releases/tag/v1.0) + +## How to run PyRex? +### Using an executable file: +Easily go through the installation process +
+ +### Using raw repositories: +Execute the following commands in cmd *(Windows)*/terminal *(Linux/MacOS)*: + +- Download repository +``` +git clone https://github.com/user0706/PyRex.git +``` +- Entry into the download repository +``` +cd PyRex +``` +- Start the program +``` +python main.py +(if not, try python3) +``` + +## What's new: +- Code generator for Python regex + +## Screenshots +![](https://github.com/user0706/PyRex/blob/master/Example.png?raw=true) + +## To-Do +- [X] Python code generator +- [ ] support for PHP regular expression +- [ ] support for JavaSrcript regular expression diff --git a/__pycache__/functions.cpython-312.pyc b/__pycache__/functions.cpython-312.pyc new file mode 100644 index 0000000..c816fa3 Binary files /dev/null and b/__pycache__/functions.cpython-312.pyc differ diff --git a/__pycache__/generator.cpython-312.pyc b/__pycache__/generator.cpython-312.pyc new file mode 100644 index 0000000..bb903f7 Binary files /dev/null and b/__pycache__/generator.cpython-312.pyc differ diff --git a/__pycache__/mainGUI.cpython-312.pyc b/__pycache__/mainGUI.cpython-312.pyc new file mode 100644 index 0000000..30914cb Binary files /dev/null and b/__pycache__/mainGUI.cpython-312.pyc differ diff --git a/__pycache__/src_rc.cpython-312.pyc b/__pycache__/src_rc.cpython-312.pyc new file mode 100644 index 0000000..6a8f0e0 Binary files /dev/null and b/__pycache__/src_rc.cpython-312.pyc differ diff --git a/functions.py b/functions.py new file mode 100755 index 0000000..d7e1aa2 --- /dev/null +++ b/functions.py @@ -0,0 +1,271 @@ +from mainGUI import * +from generator import * +from PyQt5.QtGui import * +from PyQt5.QtWidgets import * +from PyQt5.QtCore import * +import sys + +import re +import random + +def Process(string, pattern, info, NoMatchesLabel): + '''Processes the specified regex pattern + + :param pattern: Regex pattern + :type pattern: str + :param string: Test string + :type string: str + :returns info: Search result information + :type info: list + + :Example: string => "HELLO world + Great day" + pattern => [A-Z]+.* + info => [] + + return info => [["Full match 1", "[0-10]", "HELLO world"]] + ''' + if pattern: + try: + NoMatchesLabel.hide() + regex = r"{}".format(str(pattern)) + matches = re.finditer(regex, string, re.MULTILINE) + for match_num, match in enumerate(matches, start=1): + info.append(['Full match '+str(match_num), str(match.start())+'-'+str(match.end()), str(match.group())]) + for group_num in range(0, len(match.groups())): + group_num = group_num + 1 + info.append(['Group '+str(group_num), str(match.start(group_num))+'-'+str(match.end(group_num)), str(match.group(group_num))]) + except: + NoMatchesLabel.show() + if not info: + NoMatchesLabel.show() + return info + +def GenerateGroupColor(color_spectrum, target): + '''Color generator for groups + + :param target: Result info group name + :type target: str + :param color_spectrum: List of optional colors + :type color_spectrum: list + :returns: Selected rgb color + :type: str + ''' + if target == 'Group 1': + color = color_spectrum[1] + elif target == 'Group 2': + color = color_spectrum[2] + elif target == 'Group 3': + color = color_spectrum[3] + elif target == 'Group 4': + color = color_spectrum[4] + elif target == 'Group 5': + color = color_spectrum[5] + elif target == 'Group 6': + color = color_spectrum[6] + elif target == 'Group 7': + color = color_spectrum[7] + elif target == 'Group 8': + color = color_spectrum[8] + elif target == 'Group 9': + color = color_spectrum[9] + elif target == 'Group 10': + color = color_spectrum[10] + else: + color = random.choice(color_spectrum) + return color + +def FullMatchTagUI(scroll_area, layout, tag): + '''Full match tag header - The dynamic part of Qt ui + + :param scroll_area: QT ui scroll area + :type: PyQt5.QtWidgets.QScrollArea + :param layout: QT ui scroll area layout + :type: PyQt5.QtWidgets.QHBoxLayout + ''' + CollectionWidget = QtWidgets.QWidget(scroll_area) + CollectionWidget.setMinimumSize(QtCore.QSize(300, 25)) + CollectionWidget.setMaximumSize(QtCore.QSize(500, 25)) + CollectionWidget.setObjectName("CollectionWidget") + verticalLayout_6 = QtWidgets.QVBoxLayout(CollectionWidget) + verticalLayout_6.setContentsMargins(0, 0, 0, 0) + verticalLayout_6.setSpacing(0) + verticalLayout_6.setObjectName("verticalLayout_6") + CollectionLabel = QtWidgets.QLabel("Match {}".format(str(tag.split(' ')[-1]))) + font = QtGui.QFont() + font.setPointSize(8) + font.setBold(True) + CollectionLabel.setFont(font) + CollectionLabel.setStyleSheet("color: rgb(78, 123, 179);\nmargin-bottom:5px;\nmargin-top:10px;") + CollectionLabel.setObjectName("CollectionLabel") + verticalLayout_6.addWidget(CollectionLabel) + CollectionLine = QtWidgets.QFrame(CollectionWidget) + CollectionLine.setStyleSheet("background-color: rgba(199, 199, 199, 50%);\nmin-height:1px;\nmax-height:1px;") + CollectionLine.setFrameShape(QtWidgets.QFrame.HLine) + CollectionLine.setFrameShadow(QtWidgets.QFrame.Sunken) + CollectionLine.setObjectName("CollectionLine") + verticalLayout_6.addWidget(CollectionLine) + layout.addWidget(CollectionWidget) + +def InfoUI(res_widget, res_layout, res_tag, res_range, res_text, res_index, res_color, scroll_area, layout, tag): + '''UI information widget element - The dynamic part of Qt ui + + :param res_widget: A list where the i-th element is the i-th Qt widget + :type res_widget: list + :param res_layout: A list where the i-th element is the i-th Qt H layout + :type res_layout: list + :param res_tag: A list where the i-th element is the i-th tag + :type res_tag: list + :param res_range: A list where the i-th element is the i-th range + :type res_range: list + :param res_text: A list where the i-th element is the i-th text + :type res_text: list + :param res_index: Current element-widget + :type res_index: int + :param res_color: Tag background color + :type res_color: str + :param scroll_area: Qt ui scroll area + :type scroll_area: PyQt5.QtWidgets.QScrollArea + :param layout: Qt ui scroll area layout + :type layout: PyQt5.QtWidgets.QHBoxLayout + :param tag: Tag name + :type tag: str + ''' + res_widget[res_index] = QtWidgets.QWidget(scroll_area) + res_widget[res_index].setObjectName("ResultWidget") + res_layout[res_index] = QtWidgets.QHBoxLayout(res_widget[res_index]) + res_layout[res_index].setContentsMargins(0, 7, 0, 0) + res_layout[res_index].setObjectName("horizontalLayout_4") + if 'Full match' in tag[0]: + res_tag[res_index] = QtWidgets.QLabel(' '.join(tag[0].split(' ')[:-1])) + else: + res_tag[res_index] = QtWidgets.QLabel(tag[0]) + res_tag[res_index].setStyleSheet("min-width:60px;\nmax-width:60px;\nmin-height:20px;\nmax-height:20px;\nbackground-color: {};\nborder:2px;\nborder-radius:3px;\ncolor: rgb(54, 54, 54);\n".format(res_color)) + res_tag[res_index].setAlignment(QtCore.Qt.AlignCenter) + res_tag[res_index].setObjectName("ResultTag") + res_layout[res_index].addWidget(res_tag[res_index], 0, QtCore.Qt.AlignTop) + res_range[res_index] = QtWidgets.QLabel(tag[1]) + res_range[res_index].setStyleSheet("min-width:60px;\nmax-width:60px;\nmin-height:20px;\nmax-height:20px;\ncolor: rgb(54, 54, 54);\n") + res_range[res_index].setAlignment(QtCore.Qt.AlignCenter) + res_range[res_index].setWordWrap(True) + res_range[res_index].setObjectName("ResultRange") + res_layout[res_index].addWidget(res_range[res_index], 0, QtCore.Qt.AlignTop) + res_text[res_index] = QtWidgets.QLabel(tag[2]) + res_text[res_index].setStyleSheet("min-width:200px;\nmin-height:20px;\npadding-left:5px;\nbackground-color: rgba(98, 98, 98, 10%);\nborder:2px;\nborder-radius:3px;\ncolor: rgb(54, 54, 54);\n") + res_text[res_index].setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter) + res_text[res_index].setWordWrap(True) + res_text[res_index].setObjectName("ResultText") + res_layout[res_index].addWidget(res_text[res_index], 0, QtCore.Qt.AlignTop) + layout.addWidget(res_widget[res_index]) + +def PreprocessInfo(info): + '''Define the length of the list of variables for those used in UpdateInfo + + :return res_widget: list with the same length as info parameter + :rtype res_widget: list + :return res_layout: list with the same length as info parameter + :rtype res_layout: list + :return res_tag: list with the same length as info parameter + :rtype res_tag: list + :return res_range: list with the same length as info parameter + :rtype res_range: list + :return res_text: list with the same length as info parameter + :rtype res_text: list + ''' + res_widget = list(range(len(info))) + res_layout = list(range(len(info))) + res_tag = list(range(len(info))) + res_range = list(range(len(info))) + res_text = list(range(len(info))) + return res_widget, res_layout, res_tag, res_range, res_text + +def clearLayout(layout): + '''Cleaning the previous state of Layout + + :param layout: Layout to be cleaned + :type layout: PyQt5.QtWidgets.QHBoxLayout + ''' + while layout.count(): + child = layout.takeAt(0) + if child.widget(): + child.widget().deleteLater() + +def Highlight(plain_edit, color, start, end): + '''Highlights/marks the appropriate substring of the test string + + :param plain_edit: Plain edit component. NOT text from plain edit + :type plain_edit: PyQt5.QtWidgets.QPlainTextEdit + :param color: Matching color for the background of the corresponding group - tag result + :type color: str + :param start: Starting position/index of substring for marking. + :type start: int + :param end: Ending position/index of substring for marking. + :type end: int + ''' + fmt = QTextCharFormat() + fmt.setBackground(color) + cursor = QTextCursor(plain_edit.document()) + cursor.setPosition(start, QTextCursor.MoveAnchor) + cursor.setPosition(end, QTextCursor.KeepAnchor) + cursor.setCharFormat(fmt) + +def ClearHighlight(plain_edit, plain_edit_text): + '''Reset all highlighted/marked substrings from the test string + + :param plain_edit: Plain edit component. NOT text from plain edit + :type plain_edit: PyQt5.QtWidgets.QPlainTextEdit + :param plain_edit_text: Text from plaind edit + :type plain_edit_text: str + ''' + fmt = QTextCharFormat() + fmt.setBackground(QColor(Qt.white)) + cursor = QTextCursor(plain_edit.document()) + cursor.setPosition(0, QTextCursor.MoveAnchor) + cursor.setPosition(len(list(plain_edit_text)), QTextCursor.KeepAnchor) + cursor.setCharFormat(fmt) + +def HighlightRange(string): + '''Convert a range from a string type to a list of integers + + :param string: The range of substring to be highlighted + :type string: str + :return : The range of substring to be highlighted + :rtype : list + + :Example: string => "[2-9]" + return => [2,9] + ''' + return [int(re.sub(r'(\[|\])','',i)) for i in string.split('-')] + +def strColorTolist(string): + '''Convert string type rgb colors to separate integer values of red - green - blue + + :param string: Rgb color as a string + :type string: str + :return colorList[0]: Red value + :rtype colorList[0]: int + :return colorList[1]: Green value + :rtype colorList[1]: int + :return colorList[2]: Blue value + :rtype colorList[2]: int + + :Example: string => "rgb(255,100,50)" + return colorList[0] => 255 + return colorList[1] => 100 + return colorList[2] => 50 + ''' + colorList = [int(i) for i in re.sub(r'(rgb\(|\))','',string).split(', ')] + return colorList[0],colorList[1],colorList[2] + +def GetCode(textEdit, pattern, string): + '''Generate code for Python regular expression based on the template + + :param textEdit: The QTextEdit element carries a raw code template + :type textEdit: PyQt5.QtWidgets.QTextEdit + :param pattern: A pattern to be entered in the code template + :type pattern: str + :param string: A test string to be entered in the code template + :type string: str + ''' + template = textEdit.toPlainText() + textEdit.setText(template.replace("pattern", pattern).replace("string", string)) \ No newline at end of file diff --git a/generator.py b/generator.py new file mode 100755 index 0000000..e177fb9 --- /dev/null +++ b/generator.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'generator.ui' +# +# Created by: PyQt5 UI code generator 5.15.1 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_CodeGenerator(object): + def setupUi(self, CodeGenerator): + CodeGenerator.setObjectName("CodeGenerator") + CodeGenerator.resize(800, 333) + icon = QtGui.QIcon() + icon.addPixmap(QtGui.QPixmap(":/icons/icons/icon.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + CodeGenerator.setWindowIcon(icon) + self.centralwidget = QtWidgets.QWidget(CodeGenerator) + self.centralwidget.setObjectName("centralwidget") + self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) + self.verticalLayout.setContentsMargins(0, 0, 0, 0) + self.verticalLayout.setObjectName("verticalLayout") + self.textEdit = QtWidgets.QTextEdit(self.centralwidget) + self.textEdit.setStyleSheet("border-bottom: 2px;\n" +"border-style: solid;\n" +"border-bottom-color: rgb(255, 85, 0);") + self.textEdit.setLineWidth(1) + self.textEdit.setTextInteractionFlags(QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse) + self.textEdit.setObjectName("textEdit") + self.verticalLayout.addWidget(self.textEdit) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setContentsMargins(-1, 0, -1, -1) + self.horizontalLayout.setObjectName("horizontalLayout") + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.CopyPushButton = QtWidgets.QPushButton(self.centralwidget) + self.CopyPushButton.setStyleSheet("QPushButton#CopyPushButton {\n" +" min-width:60px;\n" +" max-width:60px;\n" +" min-height:35;\n" +" max-height:35;\n" +"\n" +" color: #495057;\n" +"\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom: 2px;\n" +" border-style: solid;\n" +" border-bottom-color: rgba(0,0,0,.3);\n" +" border-top-left-radius: 0px;\n" +" border-top-right-radius: 3px;\n" +" border-bottom-right-radius: 0px;\n" +" border-bottom-left-radius: 0px;\n" +"}\n" +"\n" +"QPushButton#CopyPushButton:hover {\n" +" background: rgba(255,255,255,50%);\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPushButton#CopyPushButton:pressed {\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPushButton#CopyPushButton:disabled {\n" +" background: rgba(0,0,0,.04);\n" +" border-bottom-color: rgba(0,0,0,.15); \n" +"}") + self.CopyPushButton.setObjectName("CopyPushButton") + self.horizontalLayout.addWidget(self.CopyPushButton, 0, QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter) + self.ClosePushButton = QtWidgets.QPushButton(self.centralwidget) + self.ClosePushButton.setStyleSheet("QPushButton#ClosePushButton {\n" +" min-width:60px;\n" +" max-width:60px;\n" +" min-height:35;\n" +" max-height:35;\n" +"\n" +" color: #495057;\n" +"\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom: 2px;\n" +" border-style: solid;\n" +" border-bottom-color: rgba(0,0,0,.3);\n" +" border-top-left-radius: 0px;\n" +" border-top-right-radius: 3px;\n" +" border-bottom-right-radius: 0px;\n" +" border-bottom-left-radius: 0px;\n" +"}\n" +"\n" +"QPushButton#ClosePushButton:hover {\n" +" background: rgba(255,255,255,50%);\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPushButton#ClosePushButton:pressed {\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPushButton#ClosePushButton:disabled {\n" +" background: rgba(0,0,0,.04);\n" +" border-bottom-color: rgba(0,0,0,.15); \n" +"}") + self.ClosePushButton.setObjectName("ClosePushButton") + self.horizontalLayout.addWidget(self.ClosePushButton, 0, QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter) + spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem1) + self.verticalLayout.addLayout(self.horizontalLayout) + CodeGenerator.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(CodeGenerator) + self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21)) + self.menubar.setObjectName("menubar") + CodeGenerator.setMenuBar(self.menubar) + self.statusbar = QtWidgets.QStatusBar(CodeGenerator) + self.statusbar.setObjectName("statusbar") + CodeGenerator.setStatusBar(self.statusbar) + + self.retranslateUi(CodeGenerator) + self.ClosePushButton.clicked.connect(CodeGenerator.close) + self.CopyPushButton.clicked.connect(self.textEdit.selectAll) + self.CopyPushButton.clicked.connect(self.textEdit.copy) + QtCore.QMetaObject.connectSlotsByName(CodeGenerator) + + def retranslateUi(self, CodeGenerator): + _translate = QtCore.QCoreApplication.translate + CodeGenerator.setWindowTitle(_translate("CodeGenerator", "PyRex Code Generaotr")) + self.textEdit.setHtml(_translate("CodeGenerator", "\n" +"\n" +"

import re

\n" +"


\n" +"

regex = r"<CHANGE_ME>pattern<CHANGE_ME>"

\n" +"

test_str = "<CHANGE_ME>string<CHANGE_ME>"

\n" +"


\n" +"

matches = re.finditer(regex, test_str, re.MULTILINE)

\n" +"


\n" +"

for matchNum, match in enumerate(matches, start=1):

\n" +"

print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))

\n" +"

for groupNum in range(0, len(match.groups())):

\n" +"

groupNum = groupNum + 1

\n" +"


\n" +"

print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))

")) + self.CopyPushButton.setText(_translate("CodeGenerator", "Copy")) + self.ClosePushButton.setText(_translate("CodeGenerator", "Close")) +import src_rc + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + CodeGenerator = QtWidgets.QMainWindow() + ui = Ui_CodeGenerator() + ui.setupUi(CodeGenerator) + CodeGenerator.show() + sys.exit(app.exec_()) diff --git a/main.py b/main.py new file mode 100755 index 0000000..0d9b9f5 --- /dev/null +++ b/main.py @@ -0,0 +1,117 @@ +from functions import * +from generator import * +from mainGUI import * +from PyQt5.QtGui import * +from PyQt5.QtWidgets import * +from PyQt5.QtCore import * +import sys + +import os +import re + +class MyWin(QtWidgets.QMainWindow): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + self.ui = Ui_MainWindow() + self.ui.setupUi(self) + + shortcut = QShortcut(QKeySequence("Ctrl+Return"), self) + shortcut.activated.connect(self.ui.ProcessPushButton.click) + + self.Pattern = '' + self.TestString = '' + + self.ui.ProcessPushButton.clicked.connect(self.PatternChanged) + + self.ui.RegexTextEdit.installEventFilter(self) + + self.ui.SheetDockWidget.hide() + self.ui.RegexSheetPushButton.clicked.connect(self.Sheet) + self.SheetFlag = False + self.ui.CodeGeneratorPushButton.clicked.connect(self.CodeGenerator) + self.ui.AboutPushButton.hide() + + self.ResultWidget = None + self.horizontalLayout_4 = None + self.ResultTag = None + self.ResultRange = None + self.ResultText = None + self.Info = [] + self.Match = [] + + self.ui.NoMatchesLabel.hide() + + self.resize(800, 600) + + self.WindowWidthFlag = 0 + self.WindowHeightFlag = 0 + + self.ColorList = ['rgb(198, 227, 255)','rgb(198, 233, 157)','rgb(245, 171, 165)','rgb(255, 191, 109)','rgb(193, 203, 235)','rgb(215, 253, 227)','rgb(227, 255, 172)','rgb(232, 141, 238)','rgb(207, 221, 103)','rgb(255, 172, 192)','rgb(132, 214, 238)'] + + self.GeneratedCode = Ui_MainWindow() + + def UpdateInfo(self): + '''Visual display of search results''' + for i, v in enumerate(self.Info): + if 'Full match' in v[0]: + FullMatchTagUI(self.ui.scrollAreaWidgetContents, self.ui.verticalLayout_5, v[0]) + color = self.ColorList[0] + else: + color = GenerateGroupColor(self.ColorList, v[0]) + InfoUI(self.ResultWidget, self.horizontalLayout_4, self.ResultTag, self.ResultRange, self.ResultText, i, color, self.ui.scrollAreaWidgetContents, self.ui.verticalLayout_5, v) + SpacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Expanding) + self.ui.verticalLayout_5.addItem(SpacerItem) + def eventFilter(self, obj, event): + if obj is self.ui.RegexTextEdit and event.type() == QEvent.KeyPress: + if event.key() in (Qt.Key_Return, Qt.Key_Enter): + self.PatternChanged() + return True + return super().eventFilter(obj, event) + def PatternChanged(self): + '''Search for test text based on a pattern and display the results''' + clearLayout(self.ui.verticalLayout_5) + self.Info = [] + self.Pattern = self.ui.RegexTextEdit.toPlainText() + self.TestString = self.ui.TestStringTextEdit.toPlainText() + self.Info = Process(self.TestString, self.Pattern, self.Info, self.ui.NoMatchesLabel) + self.ResultWidget, self.horizontalLayout_4, self.ResultTag, self.ResultRange, self.ResultText = PreprocessInfo(self.Info) + self.UpdateInfo() + ClearHighlight(self.ui.TestStringTextEdit, self.TestString) + for k, v in enumerate(self.Info): + hrange = HighlightRange(v[1]) + if 'Full match' in v[0]: + Highlight(self.ui.TestStringTextEdit, QColor(198, 227, 255), hrange[0], hrange[1]) + else: + color = GenerateGroupColor(self.ColorList, v[0]) + r, g, b = strColorTolist(color) + Highlight(self.ui.TestStringTextEdit, QColor(r,g,b), hrange[0], hrange[1]) + + def Sheet(self): + '''Display regular expression cheat sheet''' + if not self.SheetFlag: + self.WindowWidthFlag = self.width() + self.WindowHeightFlag = self.height() + self.ui.SheetDockWidget.show() + self.SheetFlag = True + elif self.SheetFlag: + self.ui.SheetDockWidget.close() + self.adjustSize() + self.resize(self.WindowWidthFlag,self.WindowHeightFlag) + self.SheetFlag = False + + def CodeGenerator(self): + '''The code for Python regular expression is generated in a new window''' + if not self.Pattern or not self.TestString: + self.ui.NoMatchesLabel.show() + else: + self.CodeGeneratorWindow = QtWidgets.QMainWindow() + self.gen_ui = Ui_CodeGenerator() + self.gen_ui.setupUi(self.CodeGeneratorWindow) + GetCode(self.gen_ui.textEdit, self.Pattern, self.TestString) + self.CodeGeneratorWindow.show() + +if __name__ == '__main__': + app = QtWidgets.QApplication(sys.argv) + myapp = MyWin() + myapp.show() + sys.exit(app.exec_()) \ No newline at end of file diff --git a/mainGUI.py b/mainGUI.py new file mode 100755 index 0000000..af5ec31 --- /dev/null +++ b/mainGUI.py @@ -0,0 +1,1357 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'mainGUI.ui' +# +# Created by: PyQt5 UI code generator 5.15.1 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(1081, 600) + icon = QtGui.QIcon() + icon.addPixmap(QtGui.QPixmap(":/icons/icons/icon.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + MainWindow.setWindowIcon(icon) + MainWindow.setStyleSheet("background-color: rgb(225, 225, 225);") + self.centralwidget = QtWidgets.QWidget(MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) + self.verticalLayout.setContentsMargins(0, 0, 0, 0) + self.verticalLayout.setSpacing(0) + self.verticalLayout.setObjectName("verticalLayout") + self.horizontalFrame = QtWidgets.QFrame(self.centralwidget) + self.horizontalFrame.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"min-height:40;\n" +"max-height:40;") + self.horizontalFrame.setObjectName("horizontalFrame") + self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalFrame) + self.horizontalLayout.setContentsMargins(-1, 6, -1, -1) + self.horizontalLayout.setObjectName("horizontalLayout") + self.Logo = QtWidgets.QLabel(self.horizontalFrame) + self.Logo.setStyleSheet("min-width:30px;\n" +"max-width:30px;\n" +"min-height:30px;\n" +"max-height:30px;") + self.Logo.setText("") + self.Logo.setPixmap(QtGui.QPixmap(":/icons/icons/logo.png")) + self.Logo.setScaledContents(True) + self.Logo.setObjectName("Logo") + self.horizontalLayout.addWidget(self.Logo, 0, QtCore.Qt.AlignHCenter) + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.CodeGeneratorPushButton = QtWidgets.QPushButton(self.horizontalFrame) + self.CodeGeneratorPushButton.setMinimumSize(QtCore.QSize(27, 27)) + self.CodeGeneratorPushButton.setMaximumSize(QtCore.QSize(27, 27)) + self.CodeGeneratorPushButton.setStyleSheet("QPushButton#CodeGeneratorPushButton {\n" +" min-width: 25px;\n" +" max-width: 25px;\n" +" min-height: 25px;\n" +" max-height: 25px;\n" +" background-color: rgba(255, 255, 255, 0%);\n" +" \n" +" border:1px;\n" +" border-color: rgb(255, 85, 0);\n" +" border-style: solid;\n" +" border-top-left-radius: 5px;\n" +" border-top-right-radius: 5px;\n" +" border-bottom-right-radius: 5px;\n" +" border-bottom-left-radius:5px;\n" +"}\n" +"\n" +"QPushButton#CodeGeneratorPushButton:hover {\n" +" background: rgb(255, 119, 51);\n" +"}\n" +"\n" +"QPushButton#CodeGeneratorPushButton:pressed {\n" +" background: rgba(255, 255, 255, 0%);\n" +"}") + self.CodeGeneratorPushButton.setText("") + icon1 = QtGui.QIcon() + icon1.addPixmap(QtGui.QPixmap(":/icons/icons/code.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.CodeGeneratorPushButton.setIcon(icon1) + self.CodeGeneratorPushButton.setIconSize(QtCore.QSize(25, 25)) + self.CodeGeneratorPushButton.setObjectName("CodeGeneratorPushButton") + self.horizontalLayout.addWidget(self.CodeGeneratorPushButton) + self.RegexSheetPushButton = QtWidgets.QPushButton(self.horizontalFrame) + self.RegexSheetPushButton.setMinimumSize(QtCore.QSize(27, 27)) + self.RegexSheetPushButton.setMaximumSize(QtCore.QSize(27, 27)) + self.RegexSheetPushButton.setStyleSheet("QPushButton#RegexSheetPushButton {\n" +" min-width: 25px;\n" +" max-width: 25px;\n" +" min-height: 25px;\n" +" max-height: 25px;\n" +" background-color: rgba(255, 255, 255, 0%);\n" +" \n" +" border:1px;\n" +" border-color: rgb(255, 85, 0);\n" +" border-style: solid;\n" +" border-top-left-radius: 5px;\n" +" border-top-right-radius: 5px;\n" +" border-bottom-right-radius: 5px;\n" +" border-bottom-left-radius:5px;\n" +"}\n" +"\n" +"QPushButton#RegexSheetPushButton:hover {\n" +" background: rgb(255, 119, 51);\n" +"}\n" +"\n" +"QPushButton#RegexSheetPushButton:pressed {\n" +" background: rgba(255, 255, 255, 0%);\n" +"}") + self.RegexSheetPushButton.setText("") + icon2 = QtGui.QIcon() + icon2.addPixmap(QtGui.QPixmap(":/icons/icons/sheet.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.RegexSheetPushButton.setIcon(icon2) + self.RegexSheetPushButton.setIconSize(QtCore.QSize(25, 25)) + self.RegexSheetPushButton.setObjectName("RegexSheetPushButton") + self.horizontalLayout.addWidget(self.RegexSheetPushButton) + self.AboutPushButton = QtWidgets.QPushButton(self.horizontalFrame) + self.AboutPushButton.setMinimumSize(QtCore.QSize(27, 27)) + self.AboutPushButton.setMaximumSize(QtCore.QSize(27, 27)) + self.AboutPushButton.setStyleSheet("QPushButton#AboutPushButton {\n" +" min-width: 25px;\n" +" max-width: 25px;\n" +" min-height: 25px;\n" +" max-height: 25px;\n" +" background-color: rgba(255, 255, 255, 0%);\n" +" \n" +" border:1px;\n" +" border-color: rgb(255, 85, 0);\n" +" border-style: solid;\n" +" border-top-left-radius: 5px;\n" +" border-top-right-radius: 5px;\n" +" border-bottom-right-radius: 5px;\n" +" border-bottom-left-radius:5px;\n" +"}\n" +"\n" +"QPushButton#AboutPushButton:hover {\n" +" background: rgb(255, 119, 51);\n" +"}\n" +"\n" +"QPushButton#AboutPushButton:pressed {\n" +" background: rgba(255, 255, 255, 0%);\n" +"}") + self.AboutPushButton.setText("") + icon3 = QtGui.QIcon() + icon3.addPixmap(QtGui.QPixmap(":/icons/icons/info.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.AboutPushButton.setIcon(icon3) + self.AboutPushButton.setIconSize(QtCore.QSize(25, 25)) + self.AboutPushButton.setObjectName("AboutPushButton") + self.horizontalLayout.addWidget(self.AboutPushButton) + self.verticalLayout.addWidget(self.horizontalFrame, 0, QtCore.Qt.AlignTop) + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.verticalLayout_4 = QtWidgets.QVBoxLayout() + self.verticalLayout_4.setContentsMargins(15, 15, 15, 0) + self.verticalLayout_4.setSpacing(6) + self.verticalLayout_4.setObjectName("verticalLayout_4") + self.horizontalLayout_4 = QtWidgets.QHBoxLayout() + self.horizontalLayout_4.setContentsMargins(-1, 0, -1, -1) + self.horizontalLayout_4.setObjectName("horizontalLayout_4") + self.label = QtWidgets.QLabel(self.centralwidget) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label.setFont(font) + self.label.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label.setObjectName("label") + self.horizontalLayout_4.addWidget(self.label) + self.NoMatchesLabel = QtWidgets.QLabel(self.centralwidget) + self.NoMatchesLabel.setStyleSheet(" background-color: rgb(153, 153, 153);\n" +" color: rgb(255, 255, 255);\n" +" border-style: solid;\n" +" border-top-left-radius: 5px;\n" +" border-top-right-radius: 5px;\n" +" border-bottom-right-radius: 5px;\n" +" border-bottom-left-radius: 5px;\n" +" min-width:150px;\n" +" max-width:150px;\n" +" min-height:20;\n" +" max-height:20;") + self.NoMatchesLabel.setAlignment(QtCore.Qt.AlignCenter) + self.NoMatchesLabel.setObjectName("NoMatchesLabel") + self.horizontalLayout_4.addWidget(self.NoMatchesLabel) + self.verticalLayout_4.addLayout(self.horizontalLayout_4) + self.line = QtWidgets.QFrame(self.centralwidget) + self.line.setFrameShape(QtWidgets.QFrame.HLine) + self.line.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line.setObjectName("line") + self.verticalLayout_4.addWidget(self.line, 0, QtCore.Qt.AlignTop) + self.horizontalLayout_3 = QtWidgets.QHBoxLayout() + self.horizontalLayout_3.setContentsMargins(0, 0, -1, -1) + self.horizontalLayout_3.setSpacing(0) + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + self.RegexTextEdit = QtWidgets.QPlainTextEdit(self.centralwidget) + font = QtGui.QFont() + font.setPointSize(9) + self.RegexTextEdit.setFont(font) + self.RegexTextEdit.setStyleSheet("QPlainTextEdit {\n" +" min-width:360px;\n" +" min-height:30;\n" +" max-height:30;\n" +" margin-bottom:5px;\n" +" \n" +" padding-left: 5px;\n" +" padding-top: 5px;\n" +"\n" +" color: #495057;\n" +"\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom: 2px;\n" +" border-style: solid;\n" +" border-bottom-color: rgba(0,0,0,.3);\n" +" border-top-left-radius: 3px;\n" +" border-top-right-radius: 0px;\n" +" border-bottom-right-radius: 0px;\n" +" border-bottom-left-radius: 0px;\n" +"}\n" +"\n" +"QPlainTextEdit::focus {\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPlainTextEdit::disabled {\n" +" background: rgba(0,0,0,.04);\n" +" border-bottom-color: rgba(0,0,0,.15);\n" +"}") + self.RegexTextEdit.setObjectName("RegexTextEdit") + self.horizontalLayout_3.addWidget(self.RegexTextEdit) + self.ProcessPushButton = QtWidgets.QPushButton(self.centralwidget) + self.ProcessPushButton.setStyleSheet("QPushButton#ProcessPushButton {\n" +" min-width:60px;\n" +" max-width:60px;\n" +" min-height:35;\n" +" max-height:35;\n" +" margin-bottom:5px;\n" +"\n" +" color: #495057;\n" +"\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom: 2px;\n" +" border-style: solid;\n" +" border-bottom-color: rgba(0,0,0,.3);\n" +" border-top-left-radius: 0px;\n" +" border-top-right-radius: 3px;\n" +" border-bottom-right-radius: 0px;\n" +" border-bottom-left-radius: 0px;\n" +"}\n" +"\n" +"QPushButton#ProcessPushButton:hover {\n" +" background: rgba(255,255,255,50%);\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPushButton#ProcessPushButton:pressed {\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPushButton#ProcessPushButton:disabled {\n" +" background: rgba(0,0,0,.04);\n" +" border-bottom-color: rgba(0,0,0,.15); \n" +"}") + self.ProcessPushButton.setObjectName("ProcessPushButton") + self.horizontalLayout_3.addWidget(self.ProcessPushButton, 0, QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter) + self.verticalLayout_4.addLayout(self.horizontalLayout_3) + self.label_2 = QtWidgets.QLabel(self.centralwidget) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_2.setFont(font) + self.label_2.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_2.setObjectName("label_2") + self.verticalLayout_4.addWidget(self.label_2) + self.line_2 = QtWidgets.QFrame(self.centralwidget) + self.line_2.setFrameShape(QtWidgets.QFrame.HLine) + self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_2.setObjectName("line_2") + self.verticalLayout_4.addWidget(self.line_2) + self.TestStringTextEdit = QtWidgets.QPlainTextEdit(self.centralwidget) + font = QtGui.QFont() + font.setPointSize(11) + self.TestStringTextEdit.setFont(font) + self.TestStringTextEdit.setStyleSheet("QPlainTextEdit {\n" +" min-width:360px;\n" +" min-height:30;\n" +" \n" +" padding-left: 5px;\n" +" padding-top: 10px;\n" +"\n" +" color: #495057;\n" +"\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom: 2px;\n" +" border-style: solid;\n" +" border-bottom-color: rgba(0,0,0,.3);\n" +" border-top-left-radius: 3px;\n" +" border-top-right-radius: 3px;\n" +" border-bottom-right-radius: 0px;\n" +" border-bottom-left-radius: 0px;\n" +"}\n" +"\n" +"QPlainTextEdit::focus {\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPlainTextEdit::disabled {\n" +" background: rgba(0,0,0,.04);\n" +" border-bottom-color: rgba(0,0,0,.15);\n" +"}") + self.TestStringTextEdit.setObjectName("TestStringTextEdit") + self.verticalLayout_4.addWidget(self.TestStringTextEdit) + self.horizontalLayout_2.addLayout(self.verticalLayout_4) + self.verticalFrame = QtWidgets.QFrame(self.centralwidget) + self.verticalFrame.setStyleSheet("background-color: rgb(238, 238, 238);\n" +"min-width: 300;\n" +"max-width: 500;") + self.verticalFrame.setObjectName("verticalFrame") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.verticalFrame) + self.verticalLayout_2.setContentsMargins(10, 10, 10, 10) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.widget = QtWidgets.QWidget(self.verticalFrame) + self.widget.setStyleSheet("background-color:rgb(249, 249, 249)") + self.widget.setObjectName("widget") + self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.widget) + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.label_3 = QtWidgets.QLabel(self.widget) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_3.setFont(font) + self.label_3.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_3.setObjectName("label_3") + self.verticalLayout_3.addWidget(self.label_3) + self.line_3 = QtWidgets.QFrame(self.widget) + self.line_3.setFrameShape(QtWidgets.QFrame.HLine) + self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_3.setObjectName("line_3") + self.verticalLayout_3.addWidget(self.line_3) + self.RresultScrollArea = QtWidgets.QScrollArea(self.widget) + self.RresultScrollArea.setStyleSheet("border:No;") + self.RresultScrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + self.RresultScrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + self.RresultScrollArea.setWidgetResizable(True) + self.RresultScrollArea.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) + self.RresultScrollArea.setObjectName("RresultScrollArea") + self.scrollAreaWidgetContents = QtWidgets.QWidget() + self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 300, 449)) + self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") + self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents) + self.verticalLayout_5.setContentsMargins(0, 0, 0, 0) + self.verticalLayout_5.setSpacing(0) + self.verticalLayout_5.setObjectName("verticalLayout_5") + self.RresultScrollArea.setWidget(self.scrollAreaWidgetContents) + self.verticalLayout_3.addWidget(self.RresultScrollArea) + self.verticalLayout_2.addWidget(self.widget) + self.horizontalLayout_2.addWidget(self.verticalFrame) + self.verticalLayout.addLayout(self.horizontalLayout_2) + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1081, 21)) + self.menubar.setObjectName("menubar") + MainWindow.setMenuBar(self.menubar) + self.statusbar = QtWidgets.QStatusBar(MainWindow) + self.statusbar.setObjectName("statusbar") + MainWindow.setStatusBar(self.statusbar) + self.SheetDockWidget = QtWidgets.QDockWidget(MainWindow) + self.SheetDockWidget.setMinimumSize(QtCore.QSize(312, 91)) + self.SheetDockWidget.setMaximumSize(QtCore.QSize(312, 524287)) + self.SheetDockWidget.setStyleSheet("") + self.SheetDockWidget.setObjectName("SheetDockWidget") + self.dockWidgetContents_4 = QtWidgets.QWidget() + self.dockWidgetContents_4.setObjectName("dockWidgetContents_4") + self.gridLayout = QtWidgets.QGridLayout(self.dockWidgetContents_4) + self.gridLayout.setContentsMargins(0, 0, 0, 0) + self.gridLayout.setSpacing(0) + self.gridLayout.setObjectName("gridLayout") + self.scrollArea_2 = QtWidgets.QScrollArea(self.dockWidgetContents_4) + self.scrollArea_2.setStyleSheet("border:No;") + self.scrollArea_2.setWidgetResizable(True) + self.scrollArea_2.setObjectName("scrollArea_2") + self.scrollAreaWidgetContents_3 = QtWidgets.QWidget() + self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 296, 1465)) + self.scrollAreaWidgetContents_3.setObjectName("scrollAreaWidgetContents_3") + self.verticalLayout_16 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_3) + self.verticalLayout_16.setObjectName("verticalLayout_16") + self.verticalLayout_17 = QtWidgets.QVBoxLayout() + self.verticalLayout_17.setObjectName("verticalLayout_17") + self.label_126 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_126.setFont(font) + self.label_126.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_126.setObjectName("label_126") + self.verticalLayout_17.addWidget(self.label_126) + self.line_12 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_12.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_12.setFrameShape(QtWidgets.QFrame.HLine) + self.line_12.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_12.setObjectName("line_12") + self.verticalLayout_17.addWidget(self.line_12) + self.verticalLayout_16.addLayout(self.verticalLayout_17) + self.horizontalLayout_62 = QtWidgets.QHBoxLayout() + self.horizontalLayout_62.setObjectName("horizontalLayout_62") + self.label_127 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_127.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_127.setObjectName("label_127") + self.horizontalLayout_62.addWidget(self.label_127) + self.label_128 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_128.setObjectName("label_128") + self.horizontalLayout_62.addWidget(self.label_128) + self.verticalLayout_16.addLayout(self.horizontalLayout_62) + self.horizontalLayout_63 = QtWidgets.QHBoxLayout() + self.horizontalLayout_63.setObjectName("horizontalLayout_63") + self.label_129 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_129.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_129.setObjectName("label_129") + self.horizontalLayout_63.addWidget(self.label_129) + self.label_130 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_130.setObjectName("label_130") + self.horizontalLayout_63.addWidget(self.label_130) + self.verticalLayout_16.addLayout(self.horizontalLayout_63) + self.horizontalLayout_64 = QtWidgets.QHBoxLayout() + self.horizontalLayout_64.setObjectName("horizontalLayout_64") + self.label_131 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_131.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_131.setObjectName("label_131") + self.horizontalLayout_64.addWidget(self.label_131) + self.label_132 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_132.setObjectName("label_132") + self.horizontalLayout_64.addWidget(self.label_132) + self.verticalLayout_16.addLayout(self.horizontalLayout_64) + self.horizontalLayout_65 = QtWidgets.QHBoxLayout() + self.horizontalLayout_65.setObjectName("horizontalLayout_65") + self.label_133 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_133.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_133.setObjectName("label_133") + self.horizontalLayout_65.addWidget(self.label_133) + self.label_134 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_134.setObjectName("label_134") + self.horizontalLayout_65.addWidget(self.label_134) + self.verticalLayout_16.addLayout(self.horizontalLayout_65) + self.horizontalLayout_66 = QtWidgets.QHBoxLayout() + self.horizontalLayout_66.setObjectName("horizontalLayout_66") + self.label_135 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_135.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_135.setObjectName("label_135") + self.horizontalLayout_66.addWidget(self.label_135) + self.label_136 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_136.setObjectName("label_136") + self.horizontalLayout_66.addWidget(self.label_136) + self.verticalLayout_16.addLayout(self.horizontalLayout_66) + self.horizontalLayout_67 = QtWidgets.QHBoxLayout() + self.horizontalLayout_67.setObjectName("horizontalLayout_67") + self.label_137 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_137.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_137.setObjectName("label_137") + self.horizontalLayout_67.addWidget(self.label_137) + self.label_138 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_138.setObjectName("label_138") + self.horizontalLayout_67.addWidget(self.label_138) + self.verticalLayout_16.addLayout(self.horizontalLayout_67) + self.verticalLayout_18 = QtWidgets.QVBoxLayout() + self.verticalLayout_18.setObjectName("verticalLayout_18") + self.label_139 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_139.setFont(font) + self.label_139.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_139.setObjectName("label_139") + self.verticalLayout_18.addWidget(self.label_139) + self.line_13 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_13.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_13.setFrameShape(QtWidgets.QFrame.HLine) + self.line_13.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_13.setObjectName("line_13") + self.verticalLayout_18.addWidget(self.line_13) + self.verticalLayout_16.addLayout(self.verticalLayout_18) + self.horizontalLayout_68 = QtWidgets.QHBoxLayout() + self.horizontalLayout_68.setObjectName("horizontalLayout_68") + self.label_140 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_140.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_140.setObjectName("label_140") + self.horizontalLayout_68.addWidget(self.label_140) + self.label_141 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_141.setObjectName("label_141") + self.horizontalLayout_68.addWidget(self.label_141) + self.verticalLayout_16.addLayout(self.horizontalLayout_68) + self.horizontalLayout_69 = QtWidgets.QHBoxLayout() + self.horizontalLayout_69.setObjectName("horizontalLayout_69") + self.label_142 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_142.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_142.setObjectName("label_142") + self.horizontalLayout_69.addWidget(self.label_142) + self.label_143 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_143.setObjectName("label_143") + self.horizontalLayout_69.addWidget(self.label_143) + self.verticalLayout_16.addLayout(self.horizontalLayout_69) + self.horizontalLayout_70 = QtWidgets.QHBoxLayout() + self.horizontalLayout_70.setObjectName("horizontalLayout_70") + self.label_144 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_144.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_144.setObjectName("label_144") + self.horizontalLayout_70.addWidget(self.label_144) + self.label_145 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_145.setObjectName("label_145") + self.horizontalLayout_70.addWidget(self.label_145) + self.verticalLayout_16.addLayout(self.horizontalLayout_70) + self.horizontalLayout_71 = QtWidgets.QHBoxLayout() + self.horizontalLayout_71.setObjectName("horizontalLayout_71") + self.label_146 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_146.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_146.setObjectName("label_146") + self.horizontalLayout_71.addWidget(self.label_146) + self.label_147 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_147.setObjectName("label_147") + self.horizontalLayout_71.addWidget(self.label_147) + self.verticalLayout_16.addLayout(self.horizontalLayout_71) + self.horizontalLayout_72 = QtWidgets.QHBoxLayout() + self.horizontalLayout_72.setObjectName("horizontalLayout_72") + self.label_148 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_148.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_148.setObjectName("label_148") + self.horizontalLayout_72.addWidget(self.label_148) + self.label_149 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_149.setObjectName("label_149") + self.horizontalLayout_72.addWidget(self.label_149) + self.verticalLayout_16.addLayout(self.horizontalLayout_72) + self.horizontalLayout_73 = QtWidgets.QHBoxLayout() + self.horizontalLayout_73.setObjectName("horizontalLayout_73") + self.label_150 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_150.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_150.setObjectName("label_150") + self.horizontalLayout_73.addWidget(self.label_150) + self.label_151 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_151.setObjectName("label_151") + self.horizontalLayout_73.addWidget(self.label_151) + self.verticalLayout_16.addLayout(self.horizontalLayout_73) + self.horizontalLayout_74 = QtWidgets.QHBoxLayout() + self.horizontalLayout_74.setObjectName("horizontalLayout_74") + self.label_152 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_152.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_152.setObjectName("label_152") + self.horizontalLayout_74.addWidget(self.label_152) + self.label_153 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_153.setObjectName("label_153") + self.horizontalLayout_74.addWidget(self.label_153) + self.verticalLayout_16.addLayout(self.horizontalLayout_74) + self.horizontalLayout_75 = QtWidgets.QHBoxLayout() + self.horizontalLayout_75.setObjectName("horizontalLayout_75") + self.label_154 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_154.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_154.setObjectName("label_154") + self.horizontalLayout_75.addWidget(self.label_154) + self.label_155 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_155.setObjectName("label_155") + self.horizontalLayout_75.addWidget(self.label_155) + self.verticalLayout_16.addLayout(self.horizontalLayout_75) + self.verticalLayout_19 = QtWidgets.QVBoxLayout() + self.verticalLayout_19.setObjectName("verticalLayout_19") + self.label_156 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_156.setFont(font) + self.label_156.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_156.setObjectName("label_156") + self.verticalLayout_19.addWidget(self.label_156) + self.line_14 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_14.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_14.setFrameShape(QtWidgets.QFrame.HLine) + self.line_14.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_14.setObjectName("line_14") + self.verticalLayout_19.addWidget(self.line_14) + self.verticalLayout_16.addLayout(self.verticalLayout_19) + self.horizontalLayout_76 = QtWidgets.QHBoxLayout() + self.horizontalLayout_76.setObjectName("horizontalLayout_76") + self.label_157 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_157.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_157.setObjectName("label_157") + self.horizontalLayout_76.addWidget(self.label_157) + self.label_158 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_158.setObjectName("label_158") + self.horizontalLayout_76.addWidget(self.label_158) + self.verticalLayout_16.addLayout(self.horizontalLayout_76) + self.horizontalLayout_77 = QtWidgets.QHBoxLayout() + self.horizontalLayout_77.setObjectName("horizontalLayout_77") + self.label_159 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_159.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_159.setObjectName("label_159") + self.horizontalLayout_77.addWidget(self.label_159) + self.label_160 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_160.setObjectName("label_160") + self.horizontalLayout_77.addWidget(self.label_160) + self.verticalLayout_16.addLayout(self.horizontalLayout_77) + self.horizontalLayout_78 = QtWidgets.QHBoxLayout() + self.horizontalLayout_78.setObjectName("horizontalLayout_78") + self.label_161 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_161.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_161.setObjectName("label_161") + self.horizontalLayout_78.addWidget(self.label_161) + self.label_162 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_162.setObjectName("label_162") + self.horizontalLayout_78.addWidget(self.label_162) + self.verticalLayout_16.addLayout(self.horizontalLayout_78) + self.horizontalLayout_79 = QtWidgets.QHBoxLayout() + self.horizontalLayout_79.setObjectName("horizontalLayout_79") + self.label_163 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_163.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_163.setObjectName("label_163") + self.horizontalLayout_79.addWidget(self.label_163) + self.label_164 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_164.setObjectName("label_164") + self.horizontalLayout_79.addWidget(self.label_164) + self.verticalLayout_16.addLayout(self.horizontalLayout_79) + self.horizontalLayout_80 = QtWidgets.QHBoxLayout() + self.horizontalLayout_80.setObjectName("horizontalLayout_80") + self.label_165 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_165.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_165.setObjectName("label_165") + self.horizontalLayout_80.addWidget(self.label_165) + self.label_166 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_166.setObjectName("label_166") + self.horizontalLayout_80.addWidget(self.label_166) + self.verticalLayout_16.addLayout(self.horizontalLayout_80) + self.horizontalLayout_81 = QtWidgets.QHBoxLayout() + self.horizontalLayout_81.setObjectName("horizontalLayout_81") + self.label_167 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_167.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_167.setObjectName("label_167") + self.horizontalLayout_81.addWidget(self.label_167) + self.label_168 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_168.setObjectName("label_168") + self.horizontalLayout_81.addWidget(self.label_168) + self.verticalLayout_16.addLayout(self.horizontalLayout_81) + self.horizontalLayout_82 = QtWidgets.QHBoxLayout() + self.horizontalLayout_82.setObjectName("horizontalLayout_82") + self.label_169 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_169.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_169.setObjectName("label_169") + self.horizontalLayout_82.addWidget(self.label_169) + self.label_170 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_170.setObjectName("label_170") + self.horizontalLayout_82.addWidget(self.label_170) + self.verticalLayout_16.addLayout(self.horizontalLayout_82) + self.verticalLayout_20 = QtWidgets.QVBoxLayout() + self.verticalLayout_20.setObjectName("verticalLayout_20") + self.label_171 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_171.setFont(font) + self.label_171.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_171.setObjectName("label_171") + self.verticalLayout_20.addWidget(self.label_171) + self.line_15 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_15.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_15.setFrameShape(QtWidgets.QFrame.HLine) + self.line_15.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_15.setObjectName("line_15") + self.verticalLayout_20.addWidget(self.line_15) + self.verticalLayout_16.addLayout(self.verticalLayout_20) + self.horizontalLayout_83 = QtWidgets.QHBoxLayout() + self.horizontalLayout_83.setObjectName("horizontalLayout_83") + self.label_172 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_172.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_172.setObjectName("label_172") + self.horizontalLayout_83.addWidget(self.label_172) + self.label_173 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_173.setObjectName("label_173") + self.horizontalLayout_83.addWidget(self.label_173) + self.verticalLayout_16.addLayout(self.horizontalLayout_83) + self.horizontalLayout_84 = QtWidgets.QHBoxLayout() + self.horizontalLayout_84.setObjectName("horizontalLayout_84") + self.label_174 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_174.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_174.setObjectName("label_174") + self.horizontalLayout_84.addWidget(self.label_174) + self.label_175 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_175.setObjectName("label_175") + self.horizontalLayout_84.addWidget(self.label_175) + self.verticalLayout_16.addLayout(self.horizontalLayout_84) + self.horizontalLayout_85 = QtWidgets.QHBoxLayout() + self.horizontalLayout_85.setObjectName("horizontalLayout_85") + self.label_176 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_176.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_176.setObjectName("label_176") + self.horizontalLayout_85.addWidget(self.label_176) + self.label_177 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_177.setObjectName("label_177") + self.horizontalLayout_85.addWidget(self.label_177) + self.verticalLayout_16.addLayout(self.horizontalLayout_85) + self.horizontalLayout_86 = QtWidgets.QHBoxLayout() + self.horizontalLayout_86.setObjectName("horizontalLayout_86") + self.label_178 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_178.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_178.setObjectName("label_178") + self.horizontalLayout_86.addWidget(self.label_178) + self.label_179 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_179.setObjectName("label_179") + self.horizontalLayout_86.addWidget(self.label_179) + self.verticalLayout_16.addLayout(self.horizontalLayout_86) + self.horizontalLayout_87 = QtWidgets.QHBoxLayout() + self.horizontalLayout_87.setObjectName("horizontalLayout_87") + self.label_180 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_180.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_180.setObjectName("label_180") + self.horizontalLayout_87.addWidget(self.label_180) + self.label_181 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_181.setObjectName("label_181") + self.horizontalLayout_87.addWidget(self.label_181) + self.verticalLayout_16.addLayout(self.horizontalLayout_87) + self.horizontalLayout_88 = QtWidgets.QHBoxLayout() + self.horizontalLayout_88.setObjectName("horizontalLayout_88") + self.label_182 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_182.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_182.setObjectName("label_182") + self.horizontalLayout_88.addWidget(self.label_182) + self.label_183 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_183.setObjectName("label_183") + self.horizontalLayout_88.addWidget(self.label_183) + self.verticalLayout_16.addLayout(self.horizontalLayout_88) + self.horizontalLayout_89 = QtWidgets.QHBoxLayout() + self.horizontalLayout_89.setObjectName("horizontalLayout_89") + self.label_184 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_184.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_184.setObjectName("label_184") + self.horizontalLayout_89.addWidget(self.label_184) + self.label_185 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_185.setObjectName("label_185") + self.horizontalLayout_89.addWidget(self.label_185) + self.verticalLayout_16.addLayout(self.horizontalLayout_89) + self.horizontalLayout_90 = QtWidgets.QHBoxLayout() + self.horizontalLayout_90.setObjectName("horizontalLayout_90") + self.label_186 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_186.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_186.setObjectName("label_186") + self.horizontalLayout_90.addWidget(self.label_186) + self.label_187 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_187.setObjectName("label_187") + self.horizontalLayout_90.addWidget(self.label_187) + self.verticalLayout_16.addLayout(self.horizontalLayout_90) + self.horizontalLayout_91 = QtWidgets.QHBoxLayout() + self.horizontalLayout_91.setObjectName("horizontalLayout_91") + self.label_188 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_188.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_188.setObjectName("label_188") + self.horizontalLayout_91.addWidget(self.label_188) + self.label_189 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_189.setObjectName("label_189") + self.horizontalLayout_91.addWidget(self.label_189) + self.verticalLayout_16.addLayout(self.horizontalLayout_91) + self.verticalLayout_21 = QtWidgets.QVBoxLayout() + self.verticalLayout_21.setObjectName("verticalLayout_21") + self.label_190 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_190.setFont(font) + self.label_190.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_190.setObjectName("label_190") + self.verticalLayout_21.addWidget(self.label_190) + self.line_16 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_16.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_16.setFrameShape(QtWidgets.QFrame.HLine) + self.line_16.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_16.setObjectName("line_16") + self.verticalLayout_21.addWidget(self.line_16) + self.verticalLayout_16.addLayout(self.verticalLayout_21) + self.horizontalLayout_92 = QtWidgets.QHBoxLayout() + self.horizontalLayout_92.setObjectName("horizontalLayout_92") + self.label_191 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_191.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_191.setObjectName("label_191") + self.horizontalLayout_92.addWidget(self.label_191) + self.label_192 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_192.setObjectName("label_192") + self.horizontalLayout_92.addWidget(self.label_192) + self.verticalLayout_16.addLayout(self.horizontalLayout_92) + self.horizontalLayout_93 = QtWidgets.QHBoxLayout() + self.horizontalLayout_93.setObjectName("horizontalLayout_93") + self.label_193 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_193.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_193.setObjectName("label_193") + self.horizontalLayout_93.addWidget(self.label_193) + self.label_194 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_194.setObjectName("label_194") + self.horizontalLayout_93.addWidget(self.label_194) + self.verticalLayout_16.addLayout(self.horizontalLayout_93) + self.horizontalLayout_94 = QtWidgets.QHBoxLayout() + self.horizontalLayout_94.setObjectName("horizontalLayout_94") + self.label_195 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_195.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_195.setObjectName("label_195") + self.horizontalLayout_94.addWidget(self.label_195) + self.label_196 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_196.setObjectName("label_196") + self.horizontalLayout_94.addWidget(self.label_196) + self.verticalLayout_16.addLayout(self.horizontalLayout_94) + self.horizontalLayout_95 = QtWidgets.QHBoxLayout() + self.horizontalLayout_95.setObjectName("horizontalLayout_95") + self.label_197 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_197.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_197.setObjectName("label_197") + self.horizontalLayout_95.addWidget(self.label_197) + self.label_198 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_198.setObjectName("label_198") + self.horizontalLayout_95.addWidget(self.label_198) + self.verticalLayout_16.addLayout(self.horizontalLayout_95) + self.horizontalLayout_96 = QtWidgets.QHBoxLayout() + self.horizontalLayout_96.setObjectName("horizontalLayout_96") + self.label_199 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_199.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_199.setObjectName("label_199") + self.horizontalLayout_96.addWidget(self.label_199) + self.label_200 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_200.setObjectName("label_200") + self.horizontalLayout_96.addWidget(self.label_200) + self.verticalLayout_16.addLayout(self.horizontalLayout_96) + self.horizontalLayout_97 = QtWidgets.QHBoxLayout() + self.horizontalLayout_97.setObjectName("horizontalLayout_97") + self.label_201 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_201.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_201.setObjectName("label_201") + self.horizontalLayout_97.addWidget(self.label_201) + self.label_202 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_202.setObjectName("label_202") + self.horizontalLayout_97.addWidget(self.label_202) + self.verticalLayout_16.addLayout(self.horizontalLayout_97) + self.horizontalLayout_98 = QtWidgets.QHBoxLayout() + self.horizontalLayout_98.setObjectName("horizontalLayout_98") + self.label_203 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_203.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_203.setObjectName("label_203") + self.horizontalLayout_98.addWidget(self.label_203) + self.label_204 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_204.setObjectName("label_204") + self.horizontalLayout_98.addWidget(self.label_204) + self.verticalLayout_16.addLayout(self.horizontalLayout_98) + self.horizontalLayout_99 = QtWidgets.QHBoxLayout() + self.horizontalLayout_99.setObjectName("horizontalLayout_99") + self.label_205 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_205.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_205.setObjectName("label_205") + self.horizontalLayout_99.addWidget(self.label_205) + self.label_206 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_206.setObjectName("label_206") + self.horizontalLayout_99.addWidget(self.label_206) + self.verticalLayout_16.addLayout(self.horizontalLayout_99) + self.horizontalLayout_100 = QtWidgets.QHBoxLayout() + self.horizontalLayout_100.setObjectName("horizontalLayout_100") + self.label_207 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_207.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_207.setObjectName("label_207") + self.horizontalLayout_100.addWidget(self.label_207) + self.label_208 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_208.setObjectName("label_208") + self.horizontalLayout_100.addWidget(self.label_208) + self.verticalLayout_16.addLayout(self.horizontalLayout_100) + self.horizontalLayout_101 = QtWidgets.QHBoxLayout() + self.horizontalLayout_101.setObjectName("horizontalLayout_101") + self.label_209 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_209.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_209.setObjectName("label_209") + self.horizontalLayout_101.addWidget(self.label_209) + self.label_210 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_210.setObjectName("label_210") + self.horizontalLayout_101.addWidget(self.label_210) + self.verticalLayout_16.addLayout(self.horizontalLayout_101) + self.horizontalLayout_102 = QtWidgets.QHBoxLayout() + self.horizontalLayout_102.setObjectName("horizontalLayout_102") + self.label_211 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_211.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_211.setObjectName("label_211") + self.horizontalLayout_102.addWidget(self.label_211) + self.label_212 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_212.setObjectName("label_212") + self.horizontalLayout_102.addWidget(self.label_212) + self.verticalLayout_16.addLayout(self.horizontalLayout_102) + self.horizontalLayout_103 = QtWidgets.QHBoxLayout() + self.horizontalLayout_103.setObjectName("horizontalLayout_103") + self.label_213 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_213.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_213.setObjectName("label_213") + self.horizontalLayout_103.addWidget(self.label_213) + self.label_214 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_214.setObjectName("label_214") + self.horizontalLayout_103.addWidget(self.label_214) + self.verticalLayout_16.addLayout(self.horizontalLayout_103) + self.verticalLayout_22 = QtWidgets.QVBoxLayout() + self.verticalLayout_22.setObjectName("verticalLayout_22") + self.label_215 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_215.setFont(font) + self.label_215.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_215.setObjectName("label_215") + self.verticalLayout_22.addWidget(self.label_215) + self.line_17 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_17.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_17.setFrameShape(QtWidgets.QFrame.HLine) + self.line_17.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_17.setObjectName("line_17") + self.verticalLayout_22.addWidget(self.line_17) + self.verticalLayout_16.addLayout(self.verticalLayout_22) + self.horizontalLayout_104 = QtWidgets.QHBoxLayout() + self.horizontalLayout_104.setObjectName("horizontalLayout_104") + self.label_216 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_216.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_216.setObjectName("label_216") + self.horizontalLayout_104.addWidget(self.label_216) + self.label_217 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_217.setObjectName("label_217") + self.horizontalLayout_104.addWidget(self.label_217) + self.verticalLayout_16.addLayout(self.horizontalLayout_104) + self.horizontalLayout_105 = QtWidgets.QHBoxLayout() + self.horizontalLayout_105.setObjectName("horizontalLayout_105") + self.label_218 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_218.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_218.setObjectName("label_218") + self.horizontalLayout_105.addWidget(self.label_218) + self.label_219 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_219.setObjectName("label_219") + self.horizontalLayout_105.addWidget(self.label_219) + self.verticalLayout_16.addLayout(self.horizontalLayout_105) + self.horizontalLayout_106 = QtWidgets.QHBoxLayout() + self.horizontalLayout_106.setObjectName("horizontalLayout_106") + self.label_220 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_220.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_220.setObjectName("label_220") + self.horizontalLayout_106.addWidget(self.label_220) + self.label_221 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_221.setObjectName("label_221") + self.horizontalLayout_106.addWidget(self.label_221) + self.verticalLayout_16.addLayout(self.horizontalLayout_106) + self.horizontalLayout_107 = QtWidgets.QHBoxLayout() + self.horizontalLayout_107.setObjectName("horizontalLayout_107") + self.label_222 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_222.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_222.setObjectName("label_222") + self.horizontalLayout_107.addWidget(self.label_222) + self.label_223 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_223.setObjectName("label_223") + self.horizontalLayout_107.addWidget(self.label_223) + self.verticalLayout_16.addLayout(self.horizontalLayout_107) + self.horizontalLayout_108 = QtWidgets.QHBoxLayout() + self.horizontalLayout_108.setObjectName("horizontalLayout_108") + self.label_224 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_224.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_224.setObjectName("label_224") + self.horizontalLayout_108.addWidget(self.label_224) + self.label_225 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_225.setObjectName("label_225") + self.horizontalLayout_108.addWidget(self.label_225) + self.verticalLayout_16.addLayout(self.horizontalLayout_108) + self.horizontalLayout_109 = QtWidgets.QHBoxLayout() + self.horizontalLayout_109.setObjectName("horizontalLayout_109") + self.label_226 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_226.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_226.setObjectName("label_226") + self.horizontalLayout_109.addWidget(self.label_226) + self.label_227 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_227.setObjectName("label_227") + self.horizontalLayout_109.addWidget(self.label_227) + self.verticalLayout_16.addLayout(self.horizontalLayout_109) + self.horizontalLayout_110 = QtWidgets.QHBoxLayout() + self.horizontalLayout_110.setObjectName("horizontalLayout_110") + self.label_228 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_228.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_228.setObjectName("label_228") + self.horizontalLayout_110.addWidget(self.label_228) + self.label_229 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_229.setObjectName("label_229") + self.horizontalLayout_110.addWidget(self.label_229) + self.verticalLayout_16.addLayout(self.horizontalLayout_110) + self.verticalLayout_23 = QtWidgets.QVBoxLayout() + self.verticalLayout_23.setObjectName("verticalLayout_23") + self.label_230 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_230.setFont(font) + self.label_230.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_230.setObjectName("label_230") + self.verticalLayout_23.addWidget(self.label_230) + self.line_18 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_18.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_18.setFrameShape(QtWidgets.QFrame.HLine) + self.line_18.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_18.setObjectName("line_18") + self.verticalLayout_23.addWidget(self.line_18) + self.verticalLayout_16.addLayout(self.verticalLayout_23) + self.horizontalLayout_111 = QtWidgets.QHBoxLayout() + self.horizontalLayout_111.setObjectName("horizontalLayout_111") + self.label_231 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_231.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_231.setObjectName("label_231") + self.horizontalLayout_111.addWidget(self.label_231) + self.label_232 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_232.setObjectName("label_232") + self.horizontalLayout_111.addWidget(self.label_232) + self.verticalLayout_16.addLayout(self.horizontalLayout_111) + self.horizontalLayout_112 = QtWidgets.QHBoxLayout() + self.horizontalLayout_112.setObjectName("horizontalLayout_112") + self.label_233 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_233.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_233.setObjectName("label_233") + self.horizontalLayout_112.addWidget(self.label_233) + self.label_234 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_234.setObjectName("label_234") + self.horizontalLayout_112.addWidget(self.label_234) + self.verticalLayout_16.addLayout(self.horizontalLayout_112) + self.horizontalLayout_113 = QtWidgets.QHBoxLayout() + self.horizontalLayout_113.setObjectName("horizontalLayout_113") + self.label_235 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_235.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_235.setObjectName("label_235") + self.horizontalLayout_113.addWidget(self.label_235) + self.label_236 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_236.setObjectName("label_236") + self.horizontalLayout_113.addWidget(self.label_236) + self.verticalLayout_16.addLayout(self.horizontalLayout_113) + self.horizontalLayout_114 = QtWidgets.QHBoxLayout() + self.horizontalLayout_114.setObjectName("horizontalLayout_114") + self.label_237 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_237.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_237.setObjectName("label_237") + self.horizontalLayout_114.addWidget(self.label_237) + self.label_238 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_238.setObjectName("label_238") + self.horizontalLayout_114.addWidget(self.label_238) + self.verticalLayout_16.addLayout(self.horizontalLayout_114) + self.horizontalLayout_115 = QtWidgets.QHBoxLayout() + self.horizontalLayout_115.setObjectName("horizontalLayout_115") + self.label_239 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_239.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_239.setObjectName("label_239") + self.horizontalLayout_115.addWidget(self.label_239) + self.label_240 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_240.setObjectName("label_240") + self.horizontalLayout_115.addWidget(self.label_240) + self.verticalLayout_16.addLayout(self.horizontalLayout_115) + self.verticalLayout_24 = QtWidgets.QVBoxLayout() + self.verticalLayout_24.setObjectName("verticalLayout_24") + self.label_241 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_241.setFont(font) + self.label_241.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_241.setObjectName("label_241") + self.verticalLayout_24.addWidget(self.label_241) + self.line_19 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_19.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_19.setFrameShape(QtWidgets.QFrame.HLine) + self.line_19.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_19.setObjectName("line_19") + self.verticalLayout_24.addWidget(self.line_19) + self.verticalLayout_16.addLayout(self.verticalLayout_24) + self.horizontalLayout_116 = QtWidgets.QHBoxLayout() + self.horizontalLayout_116.setObjectName("horizontalLayout_116") + self.label_242 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_242.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_242.setObjectName("label_242") + self.horizontalLayout_116.addWidget(self.label_242) + self.label_243 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_243.setObjectName("label_243") + self.horizontalLayout_116.addWidget(self.label_243) + self.verticalLayout_16.addLayout(self.horizontalLayout_116) + self.horizontalLayout_117 = QtWidgets.QHBoxLayout() + self.horizontalLayout_117.setObjectName("horizontalLayout_117") + self.label_244 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_244.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_244.setObjectName("label_244") + self.horizontalLayout_117.addWidget(self.label_244) + self.label_245 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_245.setObjectName("label_245") + self.horizontalLayout_117.addWidget(self.label_245) + self.verticalLayout_16.addLayout(self.horizontalLayout_117) + self.horizontalLayout_118 = QtWidgets.QHBoxLayout() + self.horizontalLayout_118.setObjectName("horizontalLayout_118") + self.label_246 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_246.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_246.setObjectName("label_246") + self.horizontalLayout_118.addWidget(self.label_246) + self.label_247 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_247.setObjectName("label_247") + self.horizontalLayout_118.addWidget(self.label_247) + self.verticalLayout_16.addLayout(self.horizontalLayout_118) + self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_3) + self.gridLayout.addWidget(self.scrollArea_2, 0, 0, 1, 1) + self.SheetDockWidget.setWidget(self.dockWidgetContents_4) + MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.SheetDockWidget) + + self.retranslateUi(MainWindow) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "PyRex")) + self.label.setText(_translate("MainWindow", "REGULAR EXPRESSION")) + self.NoMatchesLabel.setText(_translate("MainWindow", " 0 matches or wrong syntax")) + self.RegexTextEdit.setPlaceholderText(_translate("MainWindow", "insert your pattern")) + self.ProcessPushButton.setText(_translate("MainWindow", "Process")) + self.ProcessPushButton.setShortcut(_translate("MainWindow", "Return")) + self.label_2.setText(_translate("MainWindow", "TEST STRING")) + self.TestStringTextEdit.setPlaceholderText(_translate("MainWindow", "insert your test string here")) + self.label_3.setText(_translate("MainWindow", "MATCH INFORMATION")) + self.SheetDockWidget.setWindowTitle(_translate("MainWindow", "Regex Sheet")) + self.label_126.setText(_translate("MainWindow", "Regular Expression Basics")) + self.label_127.setText(_translate("MainWindow", ".")) + self.label_128.setText(_translate("MainWindow", "Any character except newline")) + self.label_129.setText(_translate("MainWindow", "a")) + self.label_130.setText(_translate("MainWindow", "The character a")) + self.label_131.setText(_translate("MainWindow", "ab")) + self.label_132.setText(_translate("MainWindow", "The string ab")) + self.label_133.setText(_translate("MainWindow", "a|b")) + self.label_134.setText(_translate("MainWindow", "a or b")) + self.label_135.setText(_translate("MainWindow", "a*")) + self.label_136.setText(_translate("MainWindow", "0 or more a\'s")) + self.label_137.setText(_translate("MainWindow", "\\")) + self.label_138.setText(_translate("MainWindow", "Escapes a special character")) + self.label_139.setText(_translate("MainWindow", "Regular Expression Quantifiers")) + self.label_140.setText(_translate("MainWindow", "*")) + self.label_141.setText(_translate("MainWindow", "0 or more")) + self.label_142.setText(_translate("MainWindow", "+")) + self.label_143.setText(_translate("MainWindow", "1 or more")) + self.label_144.setText(_translate("MainWindow", "?")) + self.label_145.setText(_translate("MainWindow", "0 or 1")) + self.label_146.setText(_translate("MainWindow", "{2}")) + self.label_147.setText(_translate("MainWindow", "Exactly 2")) + self.label_148.setText(_translate("MainWindow", "{2, 5}")) + self.label_149.setText(_translate("MainWindow", "Between 2 and 5")) + self.label_150.setText(_translate("MainWindow", "{2,}")) + self.label_151.setText(_translate("MainWindow", "2 or more")) + self.label_152.setText(_translate("MainWindow", "{,5}")) + self.label_153.setText(_translate("MainWindow", "Up to 5")) + self.label_154.setText(_translate("MainWindow", "ab")) + self.label_155.setText(_translate("MainWindow", "The string ab")) + self.label_156.setText(_translate("MainWindow", "Regular Expression Groups")) + self.label_157.setText(_translate("MainWindow", "(...)")) + self.label_158.setText(_translate("MainWindow", "Capturing group")) + self.label_159.setText(_translate("MainWindow", "(?P...)")) + self.label_160.setText(_translate("MainWindow", "Capturing group named Y")) + self.label_161.setText(_translate("MainWindow", "(?:...)")) + self.label_162.setText(_translate("MainWindow", "Non-capturing group")) + self.label_163.setText(_translate("MainWindow", "\\Y")) + self.label_164.setText(_translate("MainWindow", "Match the Y\'th captured group")) + self.label_165.setText(_translate("MainWindow", "(?P=Y)")) + self.label_166.setText(_translate("MainWindow", "Match the named group Y")) + self.label_167.setText(_translate("MainWindow", "(?#...)")) + self.label_168.setText(_translate("MainWindow", "Comment")) + self.label_169.setText(_translate("MainWindow", "{2}")) + self.label_170.setText(_translate("MainWindow", "Exactly 2")) + self.label_171.setText(_translate("MainWindow", "Regular Expression Character Classes")) + self.label_172.setText(_translate("MainWindow", "[ab-d]")) + self.label_173.setText(_translate("MainWindow", "One character of: a, b, c, d")) + self.label_174.setText(_translate("MainWindow", "[^ab-d]")) + self.label_175.setText(_translate("MainWindow", "One character except: a, b, c, d")) + self.label_176.setText(_translate("MainWindow", "[b]")) + self.label_177.setText(_translate("MainWindow", "Backspace character")) + self.label_178.setText(_translate("MainWindow", "\\d")) + self.label_179.setText(_translate("MainWindow", "One digit")) + self.label_180.setText(_translate("MainWindow", "\\D")) + self.label_181.setText(_translate("MainWindow", "One non-digit")) + self.label_182.setText(_translate("MainWindow", "\\s")) + self.label_183.setText(_translate("MainWindow", "One whitespace")) + self.label_184.setText(_translate("MainWindow", "\\S")) + self.label_185.setText(_translate("MainWindow", "One non-whitespace")) + self.label_186.setText(_translate("MainWindow", "\\w")) + self.label_187.setText(_translate("MainWindow", "One word character")) + self.label_188.setText(_translate("MainWindow", "\\W")) + self.label_189.setText(_translate("MainWindow", "One non-word character")) + self.label_190.setText(_translate("MainWindow", "Regular Expression Assertions")) + self.label_191.setText(_translate("MainWindow", "^")) + self.label_192.setText(_translate("MainWindow", "Start of string")) + self.label_193.setText(_translate("MainWindow", "\\A")) + self.label_194.setText(_translate("MainWindow", "Start of string, ignores m flag")) + self.label_195.setText(_translate("MainWindow", "$")) + self.label_196.setText(_translate("MainWindow", "End of string")) + self.label_197.setText(_translate("MainWindow", "\\Z")) + self.label_198.setText(_translate("MainWindow", "End of string, ignores m flag")) + self.label_199.setText(_translate("MainWindow", "\\b")) + self.label_200.setText(_translate("MainWindow", "Word boundary")) + self.label_201.setText(_translate("MainWindow", "\\B")) + self.label_202.setText(_translate("MainWindow", "Non-word boundary")) + self.label_203.setText(_translate("MainWindow", "(?=...)")) + self.label_204.setText(_translate("MainWindow", "Positive lookahead")) + self.label_205.setText(_translate("MainWindow", "(?!...)")) + self.label_206.setText(_translate("MainWindow", "Negative lookahead")) + self.label_207.setText(_translate("MainWindow", "(?<=...)")) + self.label_208.setText(_translate("MainWindow", "Positive lookbehind")) + self.label_209.setText(_translate("MainWindow", "(?")) + self.label_243.setText(_translate("MainWindow", "Insert entire match")) + self.label_244.setText(_translate("MainWindow", "\\g")) + self.label_245.setText(_translate("MainWindow", "Insert match Y (name or number)")) + self.label_246.setText(_translate("MainWindow", "\\Y")) + self.label_247.setText(_translate("MainWindow", "Insert group numbered Y")) +import src_rc + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + MainWindow = QtWidgets.QMainWindow() + ui = Ui_MainWindow() + ui.setupUi(MainWindow) + MainWindow.show() + sys.exit(app.exec_()) diff --git a/requirements.txt b/requirements.txt new file mode 100755 index 0000000..98a0b8a --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +PyQt5==5.15.1 +PyQt5-sip==12.8.1 diff --git a/src_rc.py b/src_rc.py new file mode 100755 index 0000000..110a341 --- /dev/null +++ b/src_rc.py @@ -0,0 +1,1547 @@ +# -*- coding: utf-8 -*- + +# Resource object code +# +# Created by: The Resource Compiler for PyQt5 (Qt v5.15.1) +# +# WARNING! All changes made in this file will be lost! + +from PyQt5 import QtCore + +qt_resource_data = b"\ +\x00\x00\x13\x8a\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x88\x00\x00\x00\x81\x08\x06\x00\x00\x00\x1b\xb5\xf2\x9a\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x28\x0b\x00\x00\x28\x0b\ +\x01\xa9\x5a\x5f\x0f\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\x13\x17\x49\x44\ +\x41\x54\x78\x9c\xed\x9d\x7b\xbc\x55\xd3\xf6\xc0\xbf\xe3\x3c\xf4\ +\x38\xa7\x53\xe9\xa9\x24\x91\x47\x0f\x52\xb7\x9f\x90\x5e\x4a\x12\ +\xee\x95\x84\xeb\x75\x43\xf4\x0b\x79\x24\x7e\x11\x57\x14\xe2\x76\ +\xb9\xb8\xa8\xeb\x71\xf3\xf3\x0c\xbf\xfa\x79\x45\x92\x92\x12\x7d\ +\x28\x51\x12\xe9\x21\xa4\x97\x1e\xa7\x73\xaa\x73\x4e\x8d\xfb\xc7\ +\x3c\x3b\xfb\xec\xbd\xd6\xde\x6b\x3f\xd7\xdc\xc7\xfe\x7e\x3e\xe7\ +\x53\x67\xee\xb5\xe6\x1c\x67\xed\xb1\xe6\x63\xcc\x31\xc7\x10\x7e\ +\x07\xa8\x6a\x63\xa0\x1d\xd0\x12\x68\x01\x34\x03\x9a\x03\x4d\x81\ +\x22\xa0\x16\x50\xa7\xf2\x27\xaf\xf2\xb6\xad\x95\xff\x56\x00\x9b\ +\x83\x7e\x7e\x01\x56\x01\xcb\x81\x6f\x80\xd5\x22\xb2\x2f\x2d\x7f\ +\x88\x0f\x88\xdf\x02\x24\x1b\x55\x6d\x0d\x9c\x04\x9c\x00\xb4\x07\ +\xda\x02\x0d\x52\xd8\xe4\x6e\x60\x21\xf0\x01\x30\x1b\xf8\x54\x44\ +\xf6\xa4\xb0\xbd\xb4\x92\xf1\x0a\xa2\xaa\x4d\x81\x33\x81\x7e\x40\ +\x57\x4c\xaf\xe0\x27\x25\xc0\x54\x60\x32\x30\x27\xd3\x7b\x97\x8c\ +\x54\x10\x55\x3d\x18\xb8\x14\xf8\x13\xd0\x19\xc8\xf1\x57\x22\x57\ +\xd6\x02\x8f\x00\x8f\x55\xa7\x5e\xc5\x4a\x54\x35\x4f\x55\xcf\x56\ +\xd5\xb7\x54\xb5\x42\x33\x8b\x55\xaa\x7a\x81\xaa\x66\xe4\x0b\x69\ +\x35\xaa\x9a\xa3\xaa\x83\x54\x75\x85\xaf\x5f\x71\x72\x98\xa5\xaa\ +\xcd\xfc\x7e\xa6\xb1\x60\xb5\x46\xab\x6a\x3f\xe0\x41\xa0\x8d\xdf\ +\xb2\x24\x91\x75\x40\x3f\x11\xf9\xda\x6f\x41\xbc\x60\xa5\x82\xa8\ +\x6a\x01\x30\x01\x18\x8a\xa5\x32\x26\xc8\x26\xe0\x44\x11\xf9\xde\ +\x6f\x41\xa2\x61\xe5\xc3\x57\xd5\x39\x40\x8f\x28\x97\x95\x03\xef\ +\x01\x33\x80\x35\xc0\x3e\x8c\x6d\xa3\x0f\x70\x06\x50\x3b\x75\x12\ +\x26\x85\x65\x40\x67\x11\xd9\xed\xb7\x20\x19\x85\xaa\x16\xa8\x6a\ +\x79\x94\xb1\xfc\x1d\x55\x3d\x22\x42\x1d\x07\xa9\xea\xb3\xa9\x9c\ +\x4c\x24\x89\xbb\xd3\xf9\x6c\xab\x05\xaa\xda\x35\xca\x43\x7d\x44\ +\x55\x3d\x2d\x6b\x55\xf5\xc6\xd4\x7f\xc7\x09\xb1\x4d\x55\xeb\xa6\ +\xfa\x99\x26\x82\x8d\xf6\x03\xd7\x9e\x01\x78\x13\xb8\xc1\xab\xf1\ +\x49\x44\x1e\xc2\xd8\x21\x6c\xa5\x2e\xf0\xdf\x7e\x0b\x11\x09\x1b\ +\x15\xe4\x70\x97\xf2\xdd\xc0\xb5\x71\x58\x26\x47\x63\xf6\x4f\x6c\ +\xe5\x42\xbf\x05\x88\x84\x8d\x0a\xd2\xd0\xa5\x7c\x9a\x88\xfc\x10\ +\x6b\x65\x22\xb2\x13\x78\x2a\x31\x91\x52\xca\xb1\xaa\xea\xf6\x52\ +\xf8\x8e\x8d\x0a\x52\xdf\xa5\xfc\x9d\x04\xea\x9c\x9e\xc0\xbd\xe9\ +\xe0\x2c\xbf\x05\x70\xc3\x46\x05\x39\xd0\xa5\x7c\x55\x02\x75\xae\ +\x4e\xe0\xde\x74\x70\x92\xdf\x02\xb8\x61\xa3\x82\xd4\x73\x29\xaf\ +\x48\xa0\xce\xb2\x04\xee\x4d\x07\x5d\xfc\x16\xc0\x0d\x1b\x15\xc4\ +\x6d\x88\x69\x9e\x40\x9d\x2d\x12\xb8\x37\x1d\x1c\xa2\xc6\x6d\xc1\ +\x3a\x6c\x54\x90\x5a\x2e\xe5\xbd\x13\xa8\x33\x91\x7b\xd3\xc5\xd1\ +\x7e\x0b\xe0\x84\x8d\x0a\x92\xeb\x52\x7e\x9e\xaa\x16\xc5\x5a\x99\ +\xaa\xe6\x02\x97\x25\x26\x52\x5a\x38\xd2\x6f\x01\x9c\xb0\x51\x41\ +\xf2\x5c\xca\x1b\x02\x77\xc6\x51\xdf\x50\x8c\xeb\xa1\xed\x44\x32\ +\x10\xfa\x46\x26\x29\x08\xc0\x8d\xaa\x7a\xa9\xd7\x8a\x54\xb5\x27\ +\xc6\x5d\x20\x13\x38\xd4\x6f\x01\x9c\xc8\x34\x05\x11\x60\xb2\xaa\ +\x8e\x55\xd5\x9a\x6e\x17\xa9\x6a\xae\xaa\x5e\x83\xd9\xe9\xad\x91\ +\x6c\x01\x53\x44\x23\xbf\x05\x70\xc2\xba\xed\x7e\x55\x2d\xc5\x7d\ +\xa2\x1a\xcc\x0f\x18\x0b\xe9\x0c\x8c\xef\x67\x05\x70\x30\x66\xbb\ +\xff\x32\xcc\x31\x87\x4c\x62\xb9\x88\xb4\xf5\x5b\x88\x50\x6c\x54\ +\x90\x12\xec\xf7\xe5\x48\x05\x9b\x45\xc4\xba\x5e\xc4\xc6\x21\x26\ +\xa3\x8f\x09\x24\x80\x95\xdb\xfe\x59\x05\xb1\x87\x7c\x55\x8d\x34\ +\xff\xf2\x85\xac\x82\xd8\x85\xeb\xc4\xdb\x2f\x6c\x54\x90\xbd\x7e\ +\x0b\xe0\x23\xd6\xcd\xbd\xac\xeb\xd2\x80\xd6\xd8\x37\x79\x6e\x8c\ +\x39\xa8\x9d\x6a\xac\x7b\x61\xad\x53\x10\x11\xd9\xe6\xb7\x0c\xa1\ +\xa8\x6a\xba\x6c\x29\x89\xec\x58\xa7\x04\xeb\x34\xf6\x77\x8e\x75\ +\x0a\x92\x50\x0f\xa2\xaa\x2d\x80\xe3\x31\x27\xea\xeb\x03\x85\x0e\ +\x97\x15\x02\xf9\x1e\xaa\x13\xdc\x7d\x41\xfc\x26\x5d\x93\x47\xeb\ +\xe6\x5f\x31\x8f\xf5\xaa\xda\x09\x18\x0c\x0c\xc4\x04\x62\xc9\x92\ +\x3c\x5e\x01\xb6\x61\x7a\x92\xf5\x18\x2f\xba\x1f\x81\x8d\x40\x29\ +\x50\x0c\x6c\x4f\x67\x48\x09\xcf\x0a\xa2\xaa\x6d\x30\xc7\x21\xfb\ +\xa7\x4e\x9c\x2c\x1e\xd8\x0d\x7c\x07\x7c\x8b\x89\x72\x34\x17\x98\ +\x27\x22\xbb\x52\xd1\x58\x54\x05\xa9\x34\xde\x8c\x03\x6e\x26\x3b\ +\x67\xb1\x95\x3d\xc0\xc7\xc0\xcb\xc0\xcb\x22\xb2\x23\x59\x15\x47\ +\x54\x10\x55\x6d\x80\x89\x96\xd3\x3d\x59\x0d\x66\x49\x39\xa5\xc0\ +\xab\xc0\xfd\x22\xb2\x3c\xd1\xca\x5c\x15\x44\x55\xeb\x03\xef\x03\ +\x9d\x12\x6d\x24\x8b\x2f\xec\x05\x5e\x04\xee\x4a\x24\x8a\x80\xa3\ +\x82\x54\xae\xfb\xe7\x60\x02\xc1\x65\xc9\x6c\x76\x03\x63\x80\x09\ +\x22\x12\xf3\x2a\xc9\x6d\x4e\xf1\x0f\xb2\xca\x51\x5d\xa8\x09\x8c\ +\x07\xe6\xa9\x6a\xab\x58\x6f\x0e\xeb\x41\x54\xf5\x8f\xc0\xeb\x49\ +\x10\x2c\x8b\x7d\x6c\x01\xce\x15\x91\x39\x5e\x6f\xa8\xa2\x20\xaa\ +\x5a\x0b\xf8\x1a\x4b\xfd\x23\xb3\x24\x85\x32\x60\xb0\x88\xbc\xe4\ +\xe5\xe2\xd0\x21\x66\x04\x59\xe5\xa8\xee\x1c\x00\x3c\xa7\xaa\x17\ +\x78\xb9\x78\x7f\x0f\xa2\xaa\xb5\x31\xa1\x9c\xac\x73\x7b\xcb\x92\ +\x12\xca\x81\x01\x22\xf2\x76\xa4\x8b\x82\xf7\x62\x86\x90\x0c\xe5\ +\xa8\x28\x83\xe5\x73\x3d\x5e\x2c\x50\x50\x0f\x72\x72\xa1\x56\x11\ +\x14\x1e\x68\x7e\xcf\x92\x0e\xf2\x81\x97\x54\xf5\x84\x48\x11\x17\ +\x83\x7b\x90\x2f\x80\x0e\x09\x37\xbb\x7d\x03\x5c\x99\xc0\x31\xd3\ +\x82\xfa\xd0\xf4\x70\x68\xd3\x1d\x3a\xf4\x85\xf6\xbd\x21\xd7\x3a\ +\xaf\x84\xea\xc4\x72\xa0\x8b\x88\x14\x3b\x7d\x28\x00\xaa\xda\x16\ +\x13\x75\x2f\x71\x12\x55\x90\x50\x9a\x1c\x06\x03\x6e\x83\x9e\x83\ +\x4d\x4f\x93\x25\x15\x4c\x12\x11\xc7\x50\x58\x81\x49\xea\xa0\x34\ +\x0a\x13\x1b\x1b\x56\xc1\xc4\x21\x30\xb6\x0f\xec\xd8\xe4\xb7\x34\ +\xd5\x95\xab\x54\xb5\x8f\xd3\x07\x01\x05\x39\x35\x8d\xc2\xc4\xc7\ +\xb2\x39\x70\xfb\x49\x50\xbc\xd9\x6f\x49\xaa\x23\x02\x3c\xa6\xaa\ +\x61\x7e\x3b\xa2\xaa\x75\x30\x06\x14\x2f\x4e\x3d\xd1\x71\x1b\x62\ +\x46\xbf\x0b\x75\x5c\xc2\x8f\xed\xde\x09\x25\x5b\xe1\x97\x95\xf0\ +\xcd\x7c\xf8\xea\x7d\x53\xe6\xc4\x71\xfd\xe0\xd6\xb7\x41\xb2\x1b\ +\xcb\x29\x60\x98\x88\x4c\x0c\x2e\x10\x55\xed\x86\xf1\x29\x48\x0e\ +\x6e\x0a\x32\xe9\x67\xa8\x7f\x90\xb7\x3a\x8a\xb7\xc0\x2b\x77\xc2\ +\x8c\xc7\x9c\x3f\xbf\x72\x22\x9c\x3a\x34\x7e\x19\xb3\xb8\xf1\x33\ +\x70\x84\x88\x94\x06\x0a\x72\x80\x63\xfd\x93\xc7\x85\x3a\x0d\xe0\ +\x8a\x7f\x9a\x1f\x27\xde\xca\x94\x03\xfb\x19\x47\x33\x4c\x1e\x9e\ +\xfd\xe4\x60\x73\xec\x8c\xd3\xae\x81\x8e\xa7\x87\x97\xaf\xff\x16\ +\x7e\x5e\x91\x7e\x79\x7e\x1f\x0c\xd7\xa0\xbc\x36\x79\xc0\x21\x3e\ +\x0a\x13\x9d\xbe\xc3\x60\xb1\x43\x04\xcc\xb5\x4b\xa0\xd9\x51\xc9\ +\x6b\x67\x6f\x39\x6c\x5c\x0d\x3b\x36\xff\xb6\x5a\xaa\xd3\x00\x8a\ +\x1a\x41\xd3\xd6\xbf\xa7\x25\x76\x5b\xa0\x17\x26\x07\x1f\x79\x98\ +\x90\x09\xf6\x72\x74\x37\xe7\xf2\x6d\x49\x08\x9e\xbc\xab\x18\x3e\ +\x9e\x02\x8b\xa7\x9b\x89\xf1\x2e\x47\x5b\x91\x31\xde\xb5\xef\x05\ +\x27\x9d\x0f\x27\x9c\xeb\x6d\x82\xbc\xf5\x67\x98\xee\x10\x05\x3c\ +\xef\x00\x38\xe7\x36\xc8\x8f\xd3\x51\x5e\x15\xde\x78\x00\x76\x6e\ +\xad\x5a\x5e\xa7\x01\x9c\x35\x12\x24\x29\x67\xce\x2e\x22\x48\x41\ +\x1a\x27\xa3\xc6\x94\x51\x50\x0f\xf2\x6b\x40\x79\x48\xca\xb7\x8a\ +\x04\x22\x5b\xee\xad\x80\xe9\x0f\xc3\xd4\x7b\xcc\xea\x29\x1a\x25\ +\x5b\xe1\xd3\xa9\xe6\xa7\x45\x7b\xb8\xfc\x11\x68\xd7\x2b\xf2\x3d\ +\xf5\x9b\x41\xe9\x36\x98\x39\x29\xfc\xb3\x9d\x5b\xe0\x0a\x97\x09\ +\x78\x34\xde\x9c\x00\x2f\x8c\xaa\x5a\x96\x9b\x07\xb7\xbd\x9b\x2c\ +\xe5\x00\x18\xa0\xaa\xc3\x44\xa4\x2c\x07\x28\x48\x56\xad\x29\x61\ +\x6f\x85\xb3\x32\x14\xb8\x45\xcb\x8c\x42\xc9\x36\x18\xd7\x17\x9e\ +\x1b\xe9\x4d\x39\x42\x59\xb7\x14\xc6\x9e\x0a\xef\xba\x4c\xa0\x83\ +\xb9\xfc\x51\x38\xca\x21\x46\xee\x8c\xc7\xe1\xa3\x17\x62\x6f\xfb\ +\xbb\x4f\xe1\xa5\xd1\xe1\xe5\x17\x3f\x00\xc7\x24\x35\x90\x63\x7d\ +\xa0\x27\x98\x49\xaa\x97\x68\x3e\xfe\x51\xbc\xd9\x74\xab\xa1\x78\ +\x5d\x32\x07\xb3\x69\x2d\xdc\xd1\x15\x96\xcd\x76\xfe\xbc\x6e\x13\ +\x38\xf2\x44\xe8\xd8\xdf\xf4\x10\x07\xb7\x75\x1e\x4e\xf6\xed\x85\ +\x67\x86\xc3\xec\x67\x22\xb7\x97\x9b\x0f\xd7\xbd\x68\xba\xff\x50\ +\x9e\xba\xda\xd8\x7d\xbc\x52\xbc\x19\x1e\x1c\x64\xe6\x4a\xc1\x74\ +\xbb\x08\xce\xb8\xd1\x7b\x3d\xde\xe9\x0d\x66\x88\xb1\x7b\xf6\xf5\ +\xdd\x27\xce\xe5\x87\xff\x57\x6c\xf5\x94\x6c\x83\x7b\xfb\xc1\x4f\ +\x21\x67\xb0\xf3\x6b\x42\xef\x21\xc6\xae\xd2\xc2\x61\x41\x57\xb2\ +\x15\x16\xbc\x0a\xd3\xee\x35\x0a\x16\xcc\x33\xc3\xa1\x75\x17\x68\ +\x11\x21\xda\x55\xa3\x96\x70\xdd\x0b\x70\x6f\x7f\xd0\xa0\xf3\x4e\ +\xbb\x76\xc0\x43\xe7\xc1\xb8\x8f\xa3\xcf\x47\x74\x1f\xfc\xf3\x52\ +\xd8\xb2\xae\x6a\x79\xab\x8e\x30\xf4\xc9\xc8\xf7\xc6\xcf\x29\x60\ +\x7a\x10\xbb\xf3\xb9\x7e\xf2\x5a\x78\x59\xab\x4e\x66\x75\x11\x0b\ +\x4f\x5d\x1d\xae\x1c\x07\x1d\x01\xf7\x7f\x6e\x86\x02\x27\xe5\x00\ +\x33\x94\xf5\xb9\x0a\x1e\x58\x0c\xed\x7a\x56\xfd\x6c\x4f\x29\x3c\ +\x7f\x73\xf4\xb6\x3b\x9c\x06\x83\x1c\x22\x78\xae\x5e\x0c\xcf\x8e\ +\x88\x7e\xff\xeb\x0f\x84\xaf\xe4\x8a\x1a\xc1\xc8\x69\x70\x40\xca\ +\x06\x80\x8e\xaa\x5a\x98\x83\xf1\x7a\xb6\x93\xd5\x8b\x60\x9e\x83\ +\x67\x5c\x9f\x2b\x63\xab\xe7\xab\x59\x30\x3f\xa4\x9e\x46\x2d\xe1\ +\xee\x8f\xcc\x30\xe2\x85\x82\xfa\x30\x72\x2a\x34\x0c\xb1\x0a\x7c\ +\xf1\x2e\xfc\xe8\x21\x81\xe5\xc0\xdb\xcd\xd0\x15\xca\x7b\x4f\xc0\ +\x82\x57\xdc\xef\x5b\xfe\x11\x4c\xb9\xa3\x6a\x59\x6e\x1e\xdc\x38\ +\xc5\xfc\x0d\xa9\x23\x17\x68\x9f\x03\x6c\x4f\x65\x2b\x71\xb3\x65\ +\x1d\x3c\x70\x76\xd5\x6e\x19\x8c\xed\xa3\xd7\xe5\xb1\xd5\xf5\x4a\ +\xc8\xdb\x2b\x39\x30\xe2\x55\x33\xe7\x88\x85\x82\xfa\x70\x7e\x48\ +\x9a\x39\x55\x98\xfd\xef\xe8\xf7\x4a\x0e\x0c\x7f\x0e\x1a\x3b\x38\ +\x96\x4f\xbc\xd2\x79\x3e\xb2\x63\x13\x3c\xfc\x67\x33\x51\x0f\xe6\ +\x92\x09\xd1\x57\x51\xc9\xa1\x43\x0e\xe6\x90\xb0\x3d\xec\xdb\x0b\ +\xf3\x5f\x86\x5b\x3a\x86\x8f\xb9\xf9\x35\x60\xd8\xd3\xc6\x96\xe0\ +\x95\x75\x4b\x61\xc5\xfc\xaa\x65\x27\x5f\x18\xfb\x1c\x26\xc0\x49\ +\x17\x40\xad\x3a\x55\xcb\xbe\x99\xe7\xed\xde\xc2\x03\xe1\xa6\xd7\ +\xc2\xe7\x1c\x81\xf9\x48\x79\x50\x67\xae\xfb\xe0\xd1\x4b\xe0\xd7\ +\x9f\xaa\x5e\xdb\xe3\x52\xe8\x7f\x7d\xec\x72\xc7\x47\x9b\x3c\xd2\ +\x95\xae\x6b\xf3\x5a\x28\x0b\x39\x5f\x5c\x56\x6a\xc6\xf1\x92\xad\ +\xb0\x71\x8d\xf9\x32\x17\x4e\x0b\x7f\x28\x60\xba\xd5\x6b\xff\x17\ +\x8e\xea\x1a\x5b\xbb\x8b\x1c\x72\x09\xc5\x3a\x44\x05\x93\x5f\xc3\ +\x4c\x4c\xbf\x7a\xff\xb7\xb2\xd5\x8b\xcc\x97\xeb\xc5\xf8\xd5\xaa\ +\x93\x99\xf3\x4c\x0a\x91\x21\x30\x1f\x19\xf2\xb8\xf9\x7d\xda\x7d\ +\xb0\x64\x46\xd5\x6b\x0e\xef\x6c\x36\x2a\xd3\x47\x8b\x3c\xd2\x95\ +\x6c\x67\xf4\x89\xf1\xdf\x5b\x78\xa0\x19\x73\x8f\x71\xf4\x69\x89\ +\x4c\xa8\x7f\x6c\xcd\x42\x38\xfa\xe4\xf8\x65\x01\x33\xb9\x0d\x56\ +\x90\x8a\x32\xa3\xd4\x4d\x3c\x66\x16\xeb\x3d\x04\xbe\x5d\x10\xbe\ +\x4c\x7e\xef\x09\x68\xdb\x03\xea\x35\x0d\x1f\x16\xeb\x36\x36\x73\ +\xa0\xd4\x4d\x4a\x9d\x68\x91\x87\xf1\x49\xb4\x13\xc9\x31\xeb\xfc\ +\x4b\xfe\x16\xfb\x7c\x01\x4c\x37\x1d\xda\xfd\xd7\x6d\x02\x4b\x3f\ +\x48\x4c\xae\x12\x87\x28\x59\x3b\x7f\xf5\xae\x20\x00\x43\x1e\x83\ +\x35\x8b\x4d\xcf\x11\xcc\xa4\xab\xa0\x66\x81\x19\x6a\x03\xe4\xe6\ +\x9b\x39\x53\x83\xb4\xa7\xbd\x69\x6c\xaf\x82\xb4\x3c\xd6\x3c\x94\ +\x83\x12\xc8\x92\x51\xb2\x0d\x4a\x43\xe6\xe0\x1b\xbe\x37\x96\xd0\ +\x64\x13\xba\x37\x12\x8d\xfc\x9a\x30\xe2\x35\x18\xd5\xb9\xaa\x45\ +\x77\xd7\x0e\xf3\x13\xcc\x5f\x1e\x34\x4e\xdc\xe9\xa7\x20\x07\x58\ +\x82\x85\xb1\xb1\xf8\x61\xa9\xb7\xe5\x63\x24\x8a\xb7\x24\x47\x16\ +\x2f\x54\xc4\x61\x4e\x6a\x72\x98\x59\xd9\x44\xda\xfc\xeb\x7e\x09\ +\xf4\xbb\x36\x7e\xb9\x12\xa3\x20\x4f\x44\x8a\x55\xf5\x2b\xa0\x63\ +\x4a\x9b\xba\x67\x01\x14\xb9\xec\x0b\xae\x5c\x08\x8f\x5e\x5c\xb5\ +\x5b\xd5\x7d\xf0\xc8\xc5\x70\xd7\x87\x70\xd8\x1f\xe2\x6b\x33\x9e\ +\xbd\x96\x74\xd3\xe9\x0c\xb3\xbb\xfb\x7f\xe3\xc2\x3f\x3b\xe4\x18\ +\x18\xfa\xaf\xf4\xcb\xf4\x1b\x79\x81\x03\x27\xf3\x48\xb5\x82\x34\ +\x6c\xe9\xbe\x7f\xd2\xe4\x30\xd8\xb6\x3e\xdc\xaa\xb8\xa7\x04\xee\ +\x3f\x0b\xee\xf9\x24\xdc\x40\xe5\x85\xd0\x7d\x0b\x80\x06\x07\xc3\ +\xc9\x17\xc5\x5e\x57\x34\x9a\xb6\x8e\xff\x5e\xb7\x8d\xc7\x0d\xdf\ +\x1b\xc7\xa8\x96\x89\x1f\x57\x8a\x93\xb2\x80\x82\xbc\x07\x0c\xf7\ +\x4b\x0a\xc0\x6c\x38\xad\xff\xce\xcc\xe4\x83\xd9\xba\x1e\xee\x3d\ +\x1d\xc6\xce\x8f\xfd\xd4\x5d\xa1\x43\x86\xd5\x82\xfa\x70\xd1\xf8\ +\xf8\xe5\x4c\x36\x2b\xe6\x87\x6f\xdf\x07\xd8\x53\x6a\x8c\x85\xe3\ +\x3f\x73\xde\xf0\x4b\x3d\x65\x81\xc1\x6f\x16\x50\xe2\x87\x04\x55\ +\xb8\xec\x61\xe7\xa5\xec\x8f\x5f\xc3\x84\x01\xb1\xfb\x80\x14\x3a\ +\x3c\x54\x9b\x8e\x4d\x6c\x5d\xef\xbc\x43\x1b\xcc\xa6\x35\xf0\xf8\ +\xe0\x70\x8b\x72\x7a\xd8\x91\x03\x50\x19\x21\xef\xfd\x28\x17\xa7\ +\x9e\xdc\x7c\x18\xf1\x0a\x34\x77\x48\x00\xb9\x6c\x8e\xd9\x70\x8b\ +\x85\xc2\x03\x4d\x9d\xc1\x6c\xdb\x00\xdb\x37\xc6\x2d\x62\xd2\x28\ +\xdf\x03\x13\xce\x31\x4a\x12\xcc\x71\xfd\xc2\xaf\xfd\xfc\x2d\x63\ +\x38\x4b\x3f\xbf\x04\x4f\x9f\xe3\xf0\x60\x49\x01\x05\xf5\xe1\xd6\ +\xe9\xce\xbb\xb5\x1f\x3c\x1d\xdb\x83\xca\xcd\x83\xd6\x21\x26\x75\ +\xdd\x07\x5f\xbe\x97\x98\x8c\xc9\x60\xf2\xf5\xe1\xae\x0c\xed\x7a\ +\xc1\xa8\xb7\xe0\x54\x87\x53\x90\x53\xfe\x6a\x36\x06\xd3\xcb\x86\ +\x60\x05\x79\x03\x73\x80\xca\x7f\x1a\xb7\x32\x7b\x16\x4e\x7b\x2e\ +\x2f\x8f\x36\x7b\x35\x5e\x69\x7f\x4a\x78\xd9\xdc\xe7\xe3\x97\x2d\ +\x19\xcc\xfe\x77\xb8\x2b\x62\xbd\xa6\x70\xc3\x4b\xc6\x39\x7a\xf0\ +\x43\xe1\x13\xd3\xc0\xde\xcc\xe6\x1f\xd2\x27\x27\xac\xda\xaf\x20\ +\x22\xb2\x07\x78\x2e\x9d\xad\x47\xa4\x4d\x77\xe7\x25\x9e\x2a\x3c\ +\x7e\x99\xf7\x0d\xb2\x63\x1d\x8c\x62\x4b\x66\xc0\xd7\x1f\x26\x26\ +\x5f\xbc\xac\xfa\x3c\x7c\xa8\xcc\xc9\x35\x4e\x45\x01\x6b\x71\x7e\ +\x4d\xb3\xb5\x50\x33\x24\xb2\x79\xc0\xab\x2c\xd4\x3f\x37\x75\x2c\ +\x0f\xb5\xd0\x3c\x8c\x4d\x46\xb3\x1e\x7f\x81\x01\xb7\x86\x97\x97\ +\xef\x86\xbf\x9d\x6d\x56\x3d\xd1\x38\xba\x1b\x34\x6f\x13\x5e\xfe\ +\xc4\x15\xc9\x39\x0c\xbe\xa7\xc4\x38\x33\x7b\xa1\x78\x33\xfc\x7d\ +\x60\xd5\x5d\x5b\x30\xbe\x22\xa1\x3d\x5d\xb3\xa3\x7e\xdb\xb8\x0b\ +\x66\xe5\x42\x98\x7c\x43\x7c\xb2\xc6\x4e\x55\x05\x11\x91\x35\xc0\ +\x94\x74\xb5\xee\x89\x0b\xc6\x41\x97\x81\xe1\xe5\xc5\x5b\xe0\xbe\ +\xfe\xd1\x57\x25\x22\x70\xde\x98\xf0\xf2\x0d\xdf\xc3\xf8\x33\xc3\ +\x27\x89\x5e\x51\x85\x45\x6f\xc3\xc8\x0e\xf0\xbe\x07\x63\xd6\xbe\ +\xbd\xf0\xf0\x85\xe1\x6e\x8b\xed\x7a\xc1\xc0\x3b\x9c\xef\xe9\x7e\ +\x09\xf4\x72\x48\x1a\x3e\x73\x22\x7c\xf8\x6c\xec\x32\xc7\x46\x39\ +\xf0\xb9\x93\x8d\xf7\x3e\x6c\xca\x3a\x20\x39\x66\x9b\xff\xf0\xce\ +\xe1\x9f\xfd\xb2\xd2\xd8\x09\x42\xdf\xc8\x50\x4e\x18\xe4\xec\xcd\ +\xb5\x72\x21\xdc\x72\x9c\xf1\x36\x0b\x75\xca\x71\x63\xf7\x4e\x98\ +\x33\x19\x46\x1e\x6b\x14\x6c\x83\xc7\x18\xb5\x2f\xdf\x0e\x5f\xce\ +\xac\x5a\x56\xb7\x89\x19\x5a\x22\x1d\xca\xba\xfc\x51\x67\xaf\xb7\ +\x27\x87\xc1\x9a\x2f\xbc\xb5\x1d\x1f\x8b\x44\xa4\x34\x4c\x41\x44\ +\x64\x19\x26\x1f\xad\x3d\xd4\xa8\x0d\xb7\xbc\x6e\xac\xa0\xa1\xac\ +\x98\x0f\x8f\x0d\x76\xf6\x7c\x0f\x20\x02\xd7\x4c\x36\xdb\xf4\xa1\ +\x6c\xdf\x68\xde\xec\xeb\x8e\x80\xe7\x6e\x86\xcf\xde\x30\xbe\xab\ +\xdb\x37\x9a\xde\x69\xdd\x32\xb3\xb5\xff\xf6\x3f\xcc\x71\x89\x2b\ +\x1a\x9a\x39\xd0\xba\xa5\xde\xe5\x5f\x38\x0d\x5e\xbf\x3f\x44\xa6\ +\x4a\x0f\xb3\x68\xde\xf9\x35\x0a\xcc\x7c\xa4\x46\x48\xb6\xb2\xb2\ +\x5d\xf0\xf7\x73\x9d\x77\x96\x93\xc3\x5c\x70\x8f\xb4\xdc\x18\x93\ +\x51\xa0\x28\xe6\x6a\x93\x71\xba\xdf\x8d\x35\x5f\xc0\x5f\xbb\x39\ +\x87\x86\x38\x7b\x14\x5c\x18\x65\x09\xbc\x69\xad\xb3\x67\x7b\xa2\ +\x74\x38\xcd\x84\xb7\x70\xe2\xa7\x6f\xe0\xb6\x2e\xe1\x3b\xb4\x03\ +\x6f\x87\xf3\xc7\x7a\x6f\x63\xd6\x53\xe1\x4e\x46\x00\x7f\x38\xd3\ +\xbc\x3c\xc9\x0f\x87\x71\xb2\x88\xcc\x77\xac\x55\x44\x36\x62\xb2\ +\x3b\xd8\xc5\xa1\xc7\x99\x2e\xd9\xe9\x61\xfc\xff\x78\xf3\x10\x23\ +\xd1\xa8\x25\x8c\x5b\x00\x5d\x3d\x45\x80\xf4\x4e\x6d\x97\x94\xb7\ +\xbb\x8a\x8d\x31\x2c\x54\x39\xda\xf6\x80\x41\x63\x62\x6b\xa3\xf7\ +\x10\xe8\xfa\xe7\xf0\xf2\xcf\xdf\x82\xa9\xf7\xc6\x56\x57\x74\x36\ +\x00\x0b\x20\x72\x7a\x8f\x27\x01\x87\x53\xd3\x3e\xd3\xf9\x8f\x70\ +\xf1\xfd\xce\x9f\x3d\x75\x35\x2c\x89\x62\x04\x2b\xa8\x07\xd7\xbf\ +\x04\x77\xcc\x4c\xcc\xb3\xac\xa0\x9e\xf1\x0f\xbd\x73\x36\xdc\xe0\ +\x60\x97\x09\x2c\xc7\x7f\x0a\x71\xb7\x29\x6a\x04\xd7\xbf\x18\xdf\ +\x61\xf0\xab\x26\x39\x0f\x93\xaf\x8e\x89\xfe\x77\xc7\xc6\x0b\x81\ +\xa4\x45\xd1\xd2\x81\x34\x07\x16\x11\xcb\xf9\xdd\xdd\x3b\x9d\xb7\ +\xae\xcf\x19\x1d\xee\xec\x9b\x08\xef\x3c\xea\xec\xbb\x5a\xbb\x08\ +\xfe\xf4\x3f\xde\xbf\x80\x75\xcb\x8c\x5d\x64\xf9\x5c\x63\x5b\x71\ +\xf3\x21\xa9\x59\x68\x0e\x2a\x1d\xd6\xd9\x84\xa4\x68\xd7\x33\xdc\ +\x8c\x1f\xcc\xfa\x6f\xe1\x03\x87\x93\x77\x9d\xce\x80\x36\x2e\x07\ +\xd2\xbd\xb0\xf6\x4b\x98\xf7\x62\x78\x79\x51\x43\x38\xf3\xa6\x64\ +\x9d\xcf\x6d\x17\x08\x8d\xe9\x25\xa1\x50\x77\xcc\x3e\x4d\x72\x42\ +\x54\xd9\xce\x9e\x12\xa3\x24\x3b\x7f\x35\x9b\x83\xb5\x8a\x4c\x6f\ +\x51\xb7\xf1\xef\x25\xec\xd5\x4c\x11\xe9\x1b\xf8\xc5\x93\xba\xa9\ +\xea\x50\x20\xad\xee\xd4\x59\x7c\xa3\x87\x88\xec\xf7\xf4\xf6\xf4\ +\x4a\x88\xc8\x24\xe0\xa6\x94\x89\x94\xc5\x16\x66\x04\x2b\x07\xc4\ +\x98\xf5\x52\x55\xef\x00\xee\x8e\x7a\x61\x96\x4c\x64\x37\xd0\x41\ +\x44\xbe\x0d\x2e\x8c\x69\x50\x15\x91\xb1\x98\x98\xee\x09\x44\x6f\ +\xc9\x62\x29\x63\x43\x95\x03\xe2\xc8\x9b\x0b\xa0\xaa\xbd\x30\x7b\ +\x36\xd9\xcc\x10\xd5\x83\x59\xc0\x69\x4e\x29\xcb\xe2\x5e\x13\x55\ +\x5a\x5b\x27\x02\x03\x12\x10\x2c\x8b\xff\xac\x02\x8e\x17\x11\xc7\ +\xf5\x7d\xdc\xeb\x36\x11\xd9\x28\x22\xe7\x00\x17\x03\x69\xf5\x62\ +\xc9\x92\x34\xd6\x00\xbd\xdd\x94\x03\x12\xe8\x41\x82\x51\xd5\x9a\ +\xc0\xd5\xc0\x28\xb2\xc3\x4e\xa6\xb0\x14\x38\x53\x44\xd6\x46\xba\ +\x28\x69\x61\xf1\x60\x7f\x3a\xd5\x73\x80\xab\x80\x1e\xc9\xae\x3f\ +\x4b\xd2\x78\x01\x18\x2a\x22\x51\x4f\x32\xa4\xec\x0b\x54\xd5\x66\ +\xc0\x69\x40\x5f\xa0\x1b\xd0\x3c\x55\x6d\x65\xf1\xcc\x0a\x60\x84\ +\x88\x38\xc4\xc4\x70\x26\x6d\x6f\xb8\xaa\xd6\x05\xda\x00\x47\x01\ +\xf5\x80\x76\x98\x30\xe0\xbb\x2b\xff\x6f\x77\xbc\xd6\xcc\xa5\x04\ +\x98\x09\xfc\x0b\x63\x08\x8b\xe9\x80\x8d\x35\x43\x80\xaa\x9e\x82\ +\x59\x6e\xa5\x92\x0a\x60\x5a\x8a\xdb\x48\x84\xed\x40\x2c\x5f\x60\ +\x09\xe1\x36\x29\xc5\x9c\x4e\xd8\x02\x7c\x05\x7c\x21\x22\x71\xfb\ +\x19\xdb\x94\x0c\x2e\x1d\x27\xfb\x76\x89\xc8\x79\x69\x68\xa7\xda\ +\x60\xd3\xf6\xa4\x4d\xca\x9a\xa5\x12\x9b\xbe\x94\x74\x04\xf4\x15\ +\x55\x8d\x33\x86\x77\x4a\xa9\x70\xcb\x3a\xe9\x37\x36\x29\x48\x3a\ +\x4e\x27\x17\x02\xbf\xa6\xa1\x9d\x58\x59\x08\x74\xf1\x5b\x08\x27\ +\x6c\x1a\x62\xec\x0d\xe8\x9b\x7a\xac\x59\x2c\x84\x92\x55\x10\x3b\ +\xb0\xe9\x7b\xa8\x82\x4d\x43\xcc\xae\xe8\x97\x58\xc9\x46\xe0\x1b\ +\x60\x33\xc6\x96\x73\x0c\xe0\xe2\xe6\xee\x4a\x56\x41\x3c\x60\x67\ +\x48\x70\x77\x66\x61\x9c\xa7\xe6\x05\x1b\x9f\x54\xf5\x00\x8c\xf5\ +\xf8\x2e\xa0\x93\xc7\xba\xac\x55\x10\x6b\x50\xd5\x1c\x55\x2d\x57\ +\xfb\x29\x57\xd5\xa8\x61\x07\xd5\xfc\x3d\xe3\x3d\xd6\xb9\x24\x1d\ +\xcf\x38\x1e\xac\xd1\xdc\xca\xb7\xd0\xa2\xf8\x50\xae\x0c\x17\x91\ +\xa8\xe9\xa6\x44\x64\x9f\x88\x8c\x02\x5c\x0e\xf1\x54\xc1\x9e\x88\ +\x0a\x21\x58\xa3\x20\x95\x58\x10\x1b\x2a\x22\x53\x43\x33\x53\x7b\ +\xe0\x36\x60\x71\x94\x6b\xec\x39\x2c\x1f\x82\x6d\x0a\xb2\xc6\x6f\ +\x01\xa2\xe0\x90\x15\x28\x32\x95\x3d\x63\xb4\xfb\xb2\x3d\x88\x47\ +\x3c\x44\x84\xf1\x8d\xaf\x45\x24\x86\x23\xfd\x55\x98\x41\xe4\x49\ +\x78\x56\x41\x3c\xe2\x31\xd8\x86\x2f\x2c\x8a\xf7\x46\x11\x29\xc3\ +\x78\x70\xb9\x91\x55\x10\x8f\x24\x18\x9c\x3d\xa5\x24\x6a\xa2\x8f\ +\x34\x01\xb7\xd6\x48\x68\x9b\x82\x7c\x86\xbd\x6f\x93\x43\xd8\xe6\ +\x98\x68\x18\xe1\x33\x1b\xf7\x87\x00\xcb\x14\xa4\xd2\x47\x32\xde\ +\x71\x3e\xd5\xc4\x1d\x30\x5d\x55\xf3\x81\x48\xd9\x13\x53\x16\x26\ +\x28\x51\xac\x52\x90\x4a\xe6\x47\xbf\xc4\x17\x8e\x51\x55\x87\x10\ +\xd0\x9e\xe8\x83\xc9\x66\xed\x86\xb5\x69\x29\x6c\x54\x90\x37\xfd\ +\x16\x20\x02\x77\xc5\x7a\x83\xaa\x8a\x87\xfb\xb2\x0a\x12\x03\xb3\ +\xb1\xb7\xcb\x3d\x4f\x55\x07\xc7\x78\xcf\x18\x20\x5a\x8a\x4d\x6b\ +\x2d\xc8\xd6\x29\x48\xe5\x92\xf0\x55\xbf\xe5\x88\xc0\x24\x55\x1d\ +\x12\xed\x22\x55\x15\x55\x1d\x03\xb8\x04\x41\xad\x82\xcd\xcb\x7b\ +\xfb\x50\xd5\x23\x55\xb5\x22\xe9\xdb\x6c\xc9\xe5\x6d\x55\xed\xa2\ +\x66\x08\x09\x96\x3d\x57\x55\x4f\x55\xd5\x05\x31\xd4\x65\xed\x91\ +\x0f\x6b\x3d\x99\x54\xf5\x79\x20\x05\xa9\xa1\x92\xce\xcf\xc0\x97\ +\x98\x61\xb1\x11\x66\xb5\x13\x69\x49\x1b\xca\x0f\x22\x92\xd2\x1c\ +\xeb\x89\x60\xb3\x82\x34\xc6\x9c\xeb\xb0\xf6\xed\x4a\x12\x4f\x8b\ +\x48\xd4\x21\xcb\x2f\xac\x9b\x83\x04\xa8\x8c\xd5\x7a\x36\x99\xeb\ +\x69\x16\x8d\x32\xe0\x76\xc0\x21\x39\x8c\x3d\x58\xdb\x83\x04\x50\ +\xd5\x1e\xc0\xeb\xc4\xee\xc6\x67\x33\x73\x81\xeb\x45\x24\xa5\xc1\ +\xd6\x93\x81\xb5\x3d\x48\x00\x11\xf9\x10\x38\x9e\xe8\x3e\x15\x99\ +\xc0\x27\x40\x5f\x11\xe9\x91\x09\xca\x91\x51\xa8\x6a\x9e\xaa\x0e\ +\x53\xd5\x0d\xc9\x5d\x8c\xa4\x9c\x12\x55\x9d\xac\xaa\x09\x84\x75\ +\xf6\x0f\xeb\x87\x98\x50\x54\xb5\x0e\x30\x12\x13\x83\xc4\x21\x6b\ +\x80\x15\xec\x01\xe6\x00\x53\x81\x29\x22\x92\x69\x0e\xd9\xfb\xc9\ +\x38\x05\x09\xa0\xaa\x79\xc0\xe9\xc0\x65\x40\x7f\xa0\x86\xbf\x12\ +\xf1\x1d\x26\x41\xf5\x74\x4c\x98\x05\x2b\x8f\x52\xc6\x4a\xc6\x2a\ +\x48\x30\xaa\x5a\x1b\xe8\x0a\xf4\x04\x7a\x61\x8e\x1b\xa4\x52\x61\ +\xd6\x62\xce\xc2\x2c\xc1\x64\x45\xf8\xb8\x72\xd5\x55\xed\xa8\x16\ +\x0a\x12\x8a\xaa\xe6\x02\xad\x30\x01\x6b\xda\x00\x87\x02\x4d\x30\ +\x06\xac\xc0\x4f\x20\xf6\x7c\x2e\x26\x2f\x4e\x09\x50\x0a\x14\x03\ +\x3b\x2a\x7f\xff\x09\x63\x08\xfb\x11\x58\x0f\xac\x04\x96\x57\x97\ +\xde\xc1\x0b\xff\x01\x8b\xd8\xca\x55\xcc\x48\x82\xa4\x00\x00\x00\ +\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x0a\x81\ +\x00\ +\x00\x3a\xee\x78\x9c\xed\x5b\x09\x90\x14\xd5\x19\x7e\xeb\x22\xab\ +\x88\xb5\x8b\x89\x44\x82\xca\x96\x11\xe3\x85\xa1\xa2\x92\x44\x4d\ +\x58\x8d\xa6\xd4\x48\xc2\x31\x33\x8b\x5c\x01\x39\xb2\x46\x44\x01\ +\x0d\x10\xae\x85\x50\x40\x50\x88\x41\x20\xa1\xe4\x46\xa3\x08\x0a\ +\x04\x04\x4c\x02\x59\xe4\x14\x30\x20\x1a\x2e\x39\x16\x41\xe5\x76\ +\xb9\x17\xd8\xee\x2f\xff\xd7\xaf\x9b\xe9\x99\x9d\xde\xe9\x99\x9d\ +\x9d\x25\x55\x79\x55\x5f\xbd\xe9\xee\xf7\xde\xff\xf5\xeb\x77\xfc\ +\xef\xff\xff\x51\x2a\x43\x65\xaa\xc6\x8d\x95\xe4\xb9\xea\xad\x86\ +\x4a\x35\x51\x4a\xe5\xe6\xda\xd7\x39\x4a\xed\x96\x7b\x39\x39\xfa\ +\xba\xa0\x86\x52\xc3\xa5\xc0\xad\x52\x46\xaa\xa8\x8e\x4a\xdf\xb7\ +\xd2\xcd\xea\xff\x29\x56\xca\xc7\xf7\x54\x10\x9d\x05\xaf\x0a\x96\ +\x08\x3e\x14\x6c\x17\xec\x12\xac\x17\xbc\xa7\x02\x98\x2c\x78\x56\ +\x70\x9f\x6a\x8f\xab\xaa\x9b\xb2\x95\x82\x68\x23\xd8\x2a\x40\x82\ +\x38\x2b\x98\xad\x42\x68\x2e\x79\xcd\xf4\x13\x47\x86\xc8\x9d\x9a\ +\x04\xef\x58\xd8\x2b\xef\xd1\x2e\xad\xf4\x83\xe8\x9e\x0c\xd7\x9a\ +\x4f\xe2\xc2\x8f\xfa\x63\x77\x5e\x21\x76\x5e\xdd\x01\x67\x22\x9e\ +\xb7\xc2\x5d\x69\xe1\x5e\x88\xcb\x44\xde\xee\x44\xb9\xd7\xe9\x04\ +\x63\xdb\x17\x30\x00\x8d\xc3\x27\x60\x34\xea\xed\x2a\x13\x40\xeb\ +\xb4\xf0\x0f\xa2\x71\x32\x7d\x3f\x68\x16\x4e\x3a\xdc\x1d\x2c\xd8\ +\x00\xd3\xc5\xff\xd9\xb4\xf0\x0f\xa0\x4b\x32\xfc\x27\x2f\x43\x49\ +\x34\xff\xcd\x7b\x61\xb8\xf8\x0f\x48\x0b\xff\x20\x46\x25\xc3\xbf\ +\xdd\x58\x9c\x89\xe6\xff\xca\x7b\xae\xfe\x0f\x62\x50\x9a\xf8\xcf\ +\x48\x86\x7f\x46\x08\x18\xbd\x00\xe6\xb9\x0b\x30\xca\x0c\x18\x73\ +\xd6\xc2\x94\x39\x1c\x2e\x13\x42\x61\x9a\xf8\x2f\xac\xcc\x7a\x99\ +\x99\x0f\xe3\xf2\xd6\x28\x8b\xf1\x6c\x48\x9a\xf8\x2f\x8a\xcb\x33\ +\x84\x97\x05\x7d\x12\x42\x10\x0f\x54\x39\xf7\x16\xa8\x2b\x72\x56\ +\xf9\xe8\xe7\x41\x82\x6e\x29\x43\x08\xcd\x64\x7f\xb8\x29\x21\xae\ +\x7a\x9d\x7f\x48\xea\xbe\x26\xf9\x47\x82\xe3\x95\x19\x37\x29\xc2\ +\x72\xc1\xdd\x71\xb9\x87\xf0\xb0\x4a\x4e\xaf\x49\x07\x4e\xca\x5a\ +\x9b\xe7\xc9\x3d\x88\x11\x97\x00\xc7\x78\x38\xa4\x5a\xa2\x5e\x39\ +\xee\x01\x8c\xbc\x04\xb8\xf9\x43\x08\x53\xa2\xb8\x3f\x21\xf7\xcd\ +\x6a\xe5\x94\x18\x4a\xad\xf5\x44\x8f\x99\xda\x82\x03\x5e\x65\x65\ +\xbd\xc6\x4d\xdd\x81\x6f\x3e\x15\xbf\xdd\xdc\xdf\x00\x6d\xc7\xc2\ +\xec\x3a\x11\x66\xf3\x97\x60\xde\xf6\x7c\xe4\xf3\x1b\x9f\xd6\x6d\ +\xb1\xcd\xe8\xba\x35\x6c\x39\xc4\x65\x21\x5f\xef\xd0\xd9\xee\xfb\ +\x7e\x15\x95\xbb\xa5\x07\x98\x8c\x09\xef\x7b\x7f\x9f\xec\x5f\x01\ +\x6f\xac\x80\x69\x98\x91\x3a\x02\xf1\xd9\x57\x30\x1e\x18\xa8\xcb\ +\x3d\x33\x19\x26\xef\xbd\xba\xb8\x7c\x5b\xa3\xe6\xeb\x67\xd3\x8a\ +\x7c\x8e\x83\x10\xde\x94\x3c\xb3\xa2\xbe\xf7\xc3\x5f\xf6\x54\x7c\ +\xb0\x45\x73\x9d\xbf\x1e\xe6\x83\x43\x60\x36\x94\x3a\xec\xfb\xee\ +\x53\x60\x7e\x7e\x04\x46\x87\x71\xe1\xba\x33\x3f\xd0\x3c\x5b\xbe\ +\x1c\xbe\xf7\xd8\x70\x98\xa6\xbc\xfb\xc6\x3d\x30\xae\x6c\xeb\x7b\ +\x0c\x6d\xb2\xd7\xca\x0a\xcb\xc5\xe3\xdf\x66\xac\xe6\x33\xf5\x5f\ +\xb1\x9f\xd7\x6a\xa7\xc7\x8d\xfb\x7a\x53\x31\x8c\x92\xd3\x30\xbe\ +\x23\x63\xe5\xfa\x02\x80\xe7\x81\x63\xa7\x60\x70\xec\x24\x30\x07\ +\x8e\x09\x46\x57\x96\xff\x9b\x2b\x35\x7f\xf6\xb9\x5f\xd9\xe4\x49\ +\xbe\x1b\x76\xc1\x58\xb1\x15\x06\xc7\x1d\xbf\x41\x02\xdc\x89\x53\ +\x82\xa5\x95\xe5\xbf\x72\x9b\x96\x7f\x4f\x5f\xe0\xee\x3e\xb1\x71\ +\x43\x41\xf9\x7a\xe4\xeb\xcc\x97\xc2\xb7\x93\x5a\xfb\xa8\x13\xec\ +\xaf\x2c\xff\xe5\x5b\xca\xcf\xd9\x68\x8c\x5d\x54\xbe\x6e\xab\xd1\ +\x7a\xcc\xf3\x79\xef\x19\x49\xf1\xdf\x62\x7f\x83\x4a\xf1\x9f\xb2\ +\x4c\x8f\x9f\x7b\xfb\x86\xd7\x3f\x07\x8f\x8f\xd0\xcf\x86\xbd\x13\ +\x59\x97\x6d\x1e\x3f\x03\xe3\xcb\x63\x30\x66\xad\x86\x79\xa1\x0c\ +\xc6\x43\x43\x13\x7e\x87\xb9\x82\x0b\x7e\xf9\x17\x1f\x82\xf1\x68\ +\x8c\x31\xfa\xc4\x48\xcd\xb1\xe7\xf4\xf2\xcf\x0a\x5e\x2b\xbf\xd6\ +\x70\xfe\xf2\xec\xc8\xb1\x43\xce\xbc\xfe\xf4\x73\x18\x87\x8e\xc3\ +\x70\xcf\xf3\xb8\x08\xe0\x79\xc9\x0f\xfa\xe5\xcf\xbe\xa2\xcc\x8f\ +\x76\xc3\x98\xb4\x14\x26\xd7\xfb\x1f\xfc\x4e\x9f\xad\x96\x7e\x02\ +\xf3\xec\x79\x18\x2f\xbe\x0e\x93\xfd\x5e\xb7\x0b\xf0\xcb\x51\x30\ +\x8f\x9e\x84\xb1\xff\x28\x8c\x2b\xda\x84\xdb\x9b\x5e\xa4\xdf\xe9\ +\xf7\x73\xc2\xef\x74\x47\x2f\xe0\x74\x29\x8c\xf5\x3b\x23\xcb\x56\ +\x88\x56\x68\x28\xf9\xbf\x13\x19\x3f\x4d\xfa\x01\xab\xb6\x85\xc7\ +\x35\xc7\x07\xcb\x70\xff\xfa\xeb\xca\xf0\x78\x76\xc0\x6f\xc6\x79\ +\xed\xb4\xc5\x7d\x99\xf7\xb9\x5f\xd4\x88\xda\x83\x3b\x4d\xd0\xcf\ +\x38\x1e\x7d\xf0\xff\xa7\xbd\xf7\xfe\x39\x5e\x59\xf6\x07\xd7\x10\ +\xf7\xb7\xa5\x2e\xc1\x35\x25\x5a\x0f\xe0\x1a\xda\xf9\x2f\x5a\x7f\ +\x78\x64\x18\xcc\xe8\xe7\x77\xf6\xd2\x6d\xd5\xe9\x18\x5b\x56\xe3\ +\x17\xf5\xf3\x58\xfa\x45\x04\xb8\x6f\x69\xdd\xe7\x17\x09\xce\x99\ +\xea\x87\x5b\xf7\xd4\xfa\xc3\x9e\x6a\xe7\xe4\x1f\xeb\x14\xf5\xcd\ +\xc8\xf3\x56\xb3\x4b\x80\x97\x1f\xfc\xbd\x1c\xf7\xb0\xfe\x3f\xf4\ +\x12\xe0\xe7\x85\x23\xd2\xc7\x5d\xad\x33\x79\x45\x29\x88\x8e\x4a\ +\xfb\x1c\xaa\x8b\x27\xed\x89\x87\x05\x9f\x2a\xfa\x41\x42\x18\x2f\ +\x78\x5c\x75\xc4\x15\x15\xf2\x76\x27\x6d\x77\x68\x24\xf5\x5a\xa9\ +\x54\xda\x40\x82\x38\x11\x87\xfb\x09\xdf\x1c\x2b\x93\x82\xa8\xff\ +\x3f\xce\xff\x91\x2a\x1a\x3b\x25\x69\xe1\x1f\x75\xde\x79\x74\x18\ +\x0e\x8b\x6e\xb6\xab\xdb\x44\xec\x13\x3d\x26\x96\x5d\xd3\x2f\x76\ +\xa5\x85\x7f\x00\x3f\x75\x64\x0e\x99\xad\xf7\x7b\x07\x3c\x53\xd5\ +\x7c\x32\x69\xfe\xab\xd3\xc2\x3f\x84\x07\x29\x4f\x74\xb6\x32\xea\ +\x5b\xd1\x7a\x7e\xf3\x51\x2e\x9f\x44\x22\x08\x60\x5a\x5a\xf8\xe7\ +\xe3\xfb\x94\x27\xba\xd7\x99\x58\xb6\x86\x8e\xe3\x93\x1c\x43\x21\ +\x3c\x93\x16\xfe\x2d\x71\xbd\x23\x73\xf1\xc6\xc8\xf1\x73\x42\xce\ +\x23\xdf\xee\x96\xd4\x39\xca\x50\xad\x91\x9b\x16\xfe\xda\xf7\xfb\ +\x35\xe5\x7e\x4b\x74\xfc\xd9\x6b\x60\x1e\x2c\xd1\xe7\xf0\xbc\xc2\ +\xa4\xed\x77\xf3\xd2\xc3\xdd\x4e\xf9\xf8\x61\xad\xb6\xd8\x9c\xa2\ +\x75\x73\x9d\x6a\x81\x6f\xa4\x95\xbf\x93\x42\xb8\x5f\xe4\x4f\x50\ +\xd4\x4f\x12\xe7\xcd\x73\x5f\xff\x84\x74\x83\xaa\x4a\x79\xa8\x61\ +\xc5\x70\x04\xd0\x49\x30\x4e\x78\xcd\xb7\xd6\xc3\x20\x76\x28\xad\ +\x4f\x6d\x50\x3c\x2f\x51\x6f\xd7\x31\x1c\x3f\x56\xdd\x70\x79\x75\ +\xd3\xbe\x14\x92\x75\xb2\x05\xf3\xe2\x06\x3a\x57\x19\x56\x5e\xa6\ +\xd4\x60\x3b\x6f\xca\xbc\xd4\x23\x2f\x09\xe7\x0d\x22\xf2\x4c\xdd\ +\x6e\x49\x96\xce\x29\x2c\x5b\xa9\x32\xe6\x59\x4a\x59\xca\x42\xa6\ +\x52\xc5\xcc\x33\xc2\x79\x91\x3b\x97\x54\x18\x95\xfb\x4a\x19\x1e\ +\x79\xa6\xdd\x8e\x93\x67\xd9\x72\xb2\xed\xbc\xa9\xcd\xcb\xea\x07\ +\x14\x35\x70\xe7\xa5\xf6\x7b\x55\x90\xc7\xec\x1f\xa7\x1f\x9d\x7e\ +\x45\x49\xb6\xce\x75\xbf\x33\x4e\x2b\x57\x90\xa7\x5c\x71\x5a\x39\ +\x89\xbc\xac\x47\xd2\xe7\xd2\xdb\x15\xfd\x6d\x44\x3e\xee\x54\xd4\ +\x5d\xab\x3a\xd1\xe7\xa8\x7d\xbc\x27\x3d\xd6\x8d\xa3\x4a\x9f\x2d\ +\x0a\x52\xbe\xee\x05\x30\x26\x91\x35\x4c\x74\x98\xe3\xc2\xe3\xa9\ +\x94\xc8\xb6\xf5\x8a\x8a\x40\xbf\xfb\xbc\x75\x7a\xbf\x1b\x39\xef\ +\xe2\x5e\xb7\x39\x25\xf2\x03\x18\x1c\x4f\xfe\xc3\x43\xb1\xdd\xad\ +\x2f\x88\xae\xc0\x6f\x91\x1a\xbd\x3d\x80\x59\xf1\xe4\x37\xe9\x87\ +\x62\x47\xf6\xf9\x32\x18\xd7\x74\xb2\xc6\x88\x99\x12\xf9\x41\x2c\ +\xf6\xf3\xcd\xe9\x8f\xe1\x37\x70\xec\x76\x16\x52\x23\x7f\x85\x87\ +\xcc\x05\x32\xc6\xde\x26\xb2\xda\x60\xee\xd5\x1d\xb0\xc0\x01\xaf\ +\xad\x67\xd4\x89\x92\x49\x6d\x50\xc7\xf2\x45\x73\xdf\xf3\xb2\xe3\ +\x87\xf0\xba\xe4\x13\x13\x82\x9e\x47\x9d\x55\x33\xd4\xf2\x78\xd7\ +\xfa\xd2\xee\x74\xa5\xe3\x08\x53\xa1\x03\x79\x61\x47\x39\xbd\x94\ +\x7b\xb7\xad\x3f\xa6\x09\xab\x2e\x7e\x1f\x6d\x2f\x8e\x77\x8e\x4f\ +\x3d\x68\x83\xd1\xfd\xbe\x2c\xfa\x19\xed\xb1\x5e\x7e\x2b\xfa\x0a\ +\x46\xcc\x85\xc9\x38\x2b\xda\x96\x69\xf3\xad\xdd\x5e\xdb\xa0\xa9\ +\x7b\x3b\xe5\xae\xed\xac\xef\xd5\xeb\xe6\x21\x3f\x80\x99\xd4\x79\ +\x63\x3d\xeb\x31\x15\xe6\xfb\x9b\x22\xe5\xd3\x77\xfc\xce\x5a\x98\ +\xbb\x0f\xc2\x18\xf0\x16\xcc\x3e\x6f\xc0\xfc\xc7\x66\x98\xe3\x96\ +\xe8\x72\x7f\x5c\x08\x93\xf6\x7e\xfa\x4d\x59\x96\xf5\xe9\x37\xcd\ +\xf0\xf6\x39\x7f\x26\x7d\x30\xd6\xaf\x7c\xda\xad\xe9\xdb\xab\xdb\ +\x25\xb2\xac\x63\xb3\xa6\xdd\xbd\xe8\x3f\x30\x86\xce\x81\xd9\x5f\ +\xf8\xd1\xbf\x9c\xe3\x61\xcf\xb6\xc1\x58\xcd\x0d\x7e\xe5\xbf\x30\ +\x13\x26\xdb\x8f\xf6\x25\x5d\xd7\x35\x5c\x86\xfd\xbf\xf7\xb0\x3e\ +\xb3\xdd\xf5\x42\xdc\x31\xc0\x79\x56\xe2\x57\x7e\xaf\x19\x30\xbf\ +\xb6\x7d\x9b\x0e\xe8\x83\xfe\x9b\x2b\xde\xb1\xfe\xaf\x01\xee\x43\ +\xf4\xdb\x7e\xf7\xb9\xb8\xf2\xa9\x43\xc7\x3c\xd7\x53\x3e\xfb\x8f\ +\x71\x07\xce\xbd\xfb\x06\x00\x3b\x0f\xc0\xc8\x72\xf9\x61\xf8\xcd\ +\x9d\x78\x3f\xfa\x06\xe8\xf3\xa4\x1f\x87\x7e\xf1\x2d\xfb\x61\x44\ +\xc4\xd2\x95\xc7\x1c\xe5\x31\xe7\x29\x9f\xe3\x6c\xab\xb4\xb1\x7a\ +\x3b\x0c\x9e\x27\x79\x9f\x6d\xd3\x2f\xc9\x78\x01\x7e\x63\xf6\x87\ +\x13\x0b\x31\x66\xa1\x96\x79\x55\x3b\x7d\xcd\x78\x81\x77\x3f\xac\ +\x70\xfc\xb5\x57\x1e\x71\x5f\xf4\xed\x04\xc7\xc0\xa4\xcf\x9e\x7e\ +\x38\xc7\xcf\xcf\xb6\xe8\xdf\xe4\x7b\x0f\x7f\x37\x1c\x87\x41\x3f\ +\x11\x7d\x5c\xb7\xba\xe2\x32\xc8\x83\x63\xc6\xdd\x87\x2e\xec\x57\ +\x8f\x21\x4b\xf2\xbe\x71\xbe\x51\x55\x80\xef\xf2\x73\x6b\xed\x69\ +\x8e\x1c\xf9\xfd\x55\x1a\x65\x5f\xb0\x62\x65\x23\xf7\x9d\xa6\x5e\ +\xf3\x20\x85\xe0\x5c\xa3\x5f\xb6\x91\xc7\xde\x77\xad\xac\x45\x3d\ +\x24\x7f\x45\x45\xee\x9b\x33\x9c\x7d\xde\x13\xde\x71\xd7\xc3\x14\ +\xe3\x17\xf3\x71\x9b\xf2\xf2\x6f\xc4\x4b\xda\x8f\x16\x6f\x6f\xf7\ +\x8a\xa9\x6b\x9a\x94\x4c\x77\xb2\xfd\x2f\x32\xe7\xcf\xdd\x3f\x00\ +\x1f\xdf\x50\x80\x2f\x7d\xf7\x79\x2b\xdc\x53\x69\xf9\x8c\x5f\x95\ +\xb6\xb8\x06\x38\x3a\x66\x60\xb4\x4f\x5b\x64\x3e\x6e\x49\xc1\xfb\ +\xf7\x96\xbd\xec\x9c\xdb\xff\x3b\x7e\x89\x2f\x5b\xe2\x69\xcb\x7e\ +\x51\x79\xf9\x41\xb6\x37\x77\x9d\xb6\x09\x9e\xf7\x1f\x8f\x30\xa7\ +\xd2\xb2\x99\x82\xb8\xae\x76\x3b\xac\x91\x3e\x30\xef\xe8\x85\xc3\ +\xb2\xbf\xc5\x8d\xcb\x10\x7c\x91\x92\xbe\x77\xa7\x10\x7e\x62\xf9\ +\xad\xb4\x0f\xcb\xab\xff\x77\x48\x99\x81\x96\xfe\x5c\x95\x89\xff\ +\x13\x0a\xe2\x66\xe5\x9c\xc1\x35\xae\x49\xa6\x29\xcb\x5c\x50\x9c\ +\x0d\x14\x66\x0a\x32\x34\x94\x1b\x2a\x5b\x0e\x72\x99\xc5\x4a\x65\ +\x14\x09\x0a\x95\xa7\xcd\x84\xba\x2c\x9f\x67\x0a\xb2\x8a\x74\xbd\ +\xc8\xf6\x9c\xf6\x29\x8b\x32\x25\xd1\x4e\x41\xb3\x44\xae\x72\xd9\ +\x29\xfc\x8e\x5a\x7e\x13\xbd\xc6\x4d\x94\xdf\x7f\xb0\xce\xfe\x41\ +\xdc\xe8\xab\x6e\x10\x4f\x47\x7d\x3b\xb3\x69\x21\x36\x8b\xbe\x76\ +\x48\x39\x7b\x53\xc5\xf5\x57\xbb\xeb\xcb\x5e\x7b\x80\xf3\x63\xc8\ +\x6c\xec\x55\xb4\x5f\xc6\xaf\xbf\xc7\x55\x7f\x8f\xac\x6f\xfb\xf2\ +\x0a\xf1\x49\xbd\xae\xd8\x67\xed\x03\xb1\xeb\xd0\xf6\xd2\xcd\x3e\ +\x13\x97\xba\xea\x6f\x54\x5a\x8f\x8c\xc6\x1a\x2b\xf6\x96\xbe\x53\ +\xbd\xd7\x2f\xf7\xbd\x76\xba\xc1\xff\x80\xb8\x62\x31\xa9\xf3\x3b\ +\xbf\xa9\x73\x50\x0f\xa1\x3e\xc4\x58\xca\x7b\xed\x58\xb3\xa8\x78\ +\xa2\xed\x36\x47\xeb\xda\x89\xb1\xa4\x7e\xca\x73\x33\x7f\x53\x67\ +\xa7\x6e\x43\x1d\x8a\x3a\x56\x54\x9c\xc7\x29\x6b\x3d\xb3\xaf\x19\ +\xe3\xc3\xd8\x13\xc6\xe6\x70\x5d\xe2\x19\x83\xff\xb9\xa1\xce\xcf\ +\x18\x17\xc6\x84\xb1\xbd\x28\xf9\x07\xdc\x9c\x79\x76\x60\x3c\xe5\ +\x73\xd3\x60\x0e\x9c\x05\x93\x31\x41\x3f\x13\xfd\x9e\xbe\x82\xdb\ +\x7b\x02\x2d\x5c\x71\x4d\xf2\xee\x2f\xd9\x73\x3f\x99\x7d\x7f\xbb\ +\xa5\xe3\xf0\xcc\x1b\xc4\x24\xeb\x9b\xe8\x6f\xe3\xfc\x0f\xd0\x81\ +\x5b\x07\xda\x7b\xd1\xa6\xec\xf1\x9f\xc0\xcc\xd6\x98\x2c\x7a\xff\ +\x5a\x39\x7b\x7d\x6c\xb7\xb7\xd3\x55\x7f\x52\xbc\xe1\x77\x65\x3b\ +\xac\x60\x5c\xd6\xa2\x8d\x31\xf6\x32\xee\xb9\x71\x92\x9c\x79\xc6\ +\x76\x1c\x8f\x23\x32\x67\xa2\xcf\xad\x67\x7d\xff\xe7\x2c\x88\x26\ +\xf2\x9e\x3d\x45\xde\x9f\x94\xb6\x0f\xfc\xd6\x5a\xd7\x62\xa4\xb2\ +\xc1\x4a\x95\x36\x50\xaa\xc4\x46\xb1\xac\x36\x85\x19\x31\xd6\x22\ +\xde\xa3\x1d\x38\xdb\x86\x94\x35\xa5\xee\x7f\x01\x06\x4f\x80\xa1\ +\ +\x00\x00\x0d\x85\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ +\x6e\x6f\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\ +\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\ +\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x65\x6c\x65\x6d\x65\ +\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\x0a\x20\x20\x20\x78\x6d\x6c\ +\x6e\x73\x3a\x63\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\ +\x65\x61\x74\x69\x76\x65\x63\x6f\x6d\x6d\x6f\x6e\x73\x2e\x6f\x72\ +\x67\x2f\x6e\x73\x23\x22\x0a\x20\x20\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\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\x67\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\x0a\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\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x6f\x64\x69\x70\ +\x6f\x64\x69\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x6f\x64\x69\ +\x70\x6f\x64\x69\x2e\x73\x6f\x75\x72\x63\x65\x66\x6f\x72\x67\x65\ +\x2e\x6e\x65\x74\x2f\x44\x54\x44\x2f\x73\x6f\x64\x69\x70\x6f\x64\ +\x69\x2d\x30\x2e\x64\x74\x64\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\ +\x73\x3a\x69\x6e\x6b\x73\x63\x61\x70\x65\x3d\x22\x68\x74\x74\x70\ +\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\ +\x6f\x72\x67\x2f\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x73\x2f\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x22\x0a\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x20\x28\x34\x30\x33\x35\x61\x34\x66\x62\x34\x39\x2c\x20\x32\ +\x30\x32\x30\x2d\x30\x35\x2d\x30\x31\x29\x22\x0a\x20\x20\x20\x73\ +\x6f\x64\x69\x70\x6f\x64\x69\x3a\x64\x6f\x63\x6e\x61\x6d\x65\x3d\ +\x22\x63\x6f\x64\x65\x2e\x73\x76\x67\x22\x0a\x20\x20\x20\x69\x64\ +\x3d\x22\x73\x76\x67\x39\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\ +\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x0a\x20\x20\x20\x76\x69\x65\x77\ +\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x34\x20\x32\x34\x22\x0a\ +\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x34\x70\x78\x22\ +\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x34\x70\x78\x22\ +\x3e\x0a\x20\x20\x3c\x6d\x65\x74\x61\x64\x61\x74\x61\x0a\x20\x20\ +\x20\x20\x20\x69\x64\x3d\x22\x6d\x65\x74\x61\x64\x61\x74\x61\x31\ +\x35\x22\x3e\x0a\x20\x20\x20\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\ +\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\x63\x63\x3a\x57\x6f\x72\x6b\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x64\x66\x3a\x61\x62\ +\x6f\x75\x74\x3d\x22\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ +\x3c\x64\x63\x3a\x66\x6f\x72\x6d\x61\x74\x3e\x69\x6d\x61\x67\x65\ +\x2f\x73\x76\x67\x2b\x78\x6d\x6c\x3c\x2f\x64\x63\x3a\x66\x6f\x72\ +\x6d\x61\x74\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x64\x63\ +\x3a\x74\x79\x70\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ +\x20\x72\x64\x66\x3a\x72\x65\x73\x6f\x75\x72\x63\x65\x3d\x22\x68\ +\x74\x74\x70\x3a\x2f\x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\ +\x63\x2f\x64\x63\x6d\x69\x74\x79\x70\x65\x2f\x53\x74\x69\x6c\x6c\ +\x49\x6d\x61\x67\x65\x22\x20\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\ +\x3c\x2f\x63\x63\x3a\x57\x6f\x72\x6b\x3e\x0a\x20\x20\x20\x20\x3c\ +\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x0a\x20\x20\x3c\x2f\x6d\x65\ +\x74\x61\x64\x61\x74\x61\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\x0a\ +\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x31\x33\x22\ +\x20\x2f\x3e\x0a\x20\x20\x3c\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\ +\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x0a\x20\x20\x20\x20\x20\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x75\x72\x72\x65\x6e\x74\x2d\ +\x6c\x61\x79\x65\x72\x3d\x22\x73\x76\x67\x39\x22\x0a\x20\x20\x20\ +\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\ +\x77\x2d\x6d\x61\x78\x69\x6d\x69\x7a\x65\x64\x3d\x22\x31\x22\x0a\ +\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\ +\x6e\x64\x6f\x77\x2d\x79\x3d\x22\x2d\x38\x22\x0a\x20\x20\x20\x20\ +\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\ +\x2d\x78\x3d\x22\x2d\x38\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\ +\x73\x63\x61\x70\x65\x3a\x63\x79\x3d\x22\x31\x32\x22\x0a\x20\x20\ +\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x78\x3d\x22\ +\x31\x32\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\ +\x65\x3a\x7a\x6f\x6f\x6d\x3d\x22\x32\x32\x2e\x34\x31\x36\x36\x36\ +\x37\x22\x0a\x20\x20\x20\x20\x20\x73\x68\x6f\x77\x67\x72\x69\x64\ +\x3d\x22\x66\x61\x6c\x73\x65\x22\x0a\x20\x20\x20\x20\x20\x69\x64\ +\x3d\x22\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x31\x31\x22\x0a\x20\ +\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\ +\x64\x6f\x77\x2d\x68\x65\x69\x67\x68\x74\x3d\x22\x37\x34\x38\x22\ +\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\ +\x69\x6e\x64\x6f\x77\x2d\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x38\ +\x30\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\ +\x3a\x70\x61\x67\x65\x73\x68\x61\x64\x6f\x77\x3d\x22\x32\x22\x0a\ +\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\ +\x67\x65\x6f\x70\x61\x63\x69\x74\x79\x3d\x22\x30\x22\x0a\x20\x20\ +\x20\x20\x20\x67\x75\x69\x64\x65\x74\x6f\x6c\x65\x72\x61\x6e\x63\ +\x65\x3d\x22\x31\x30\x22\x0a\x20\x20\x20\x20\x20\x67\x72\x69\x64\ +\x74\x6f\x6c\x65\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\x22\x0a\x20\ +\x20\x20\x20\x20\x6f\x62\x6a\x65\x63\x74\x74\x6f\x6c\x65\x72\x61\ +\x6e\x63\x65\x3d\x22\x31\x30\x22\x0a\x20\x20\x20\x20\x20\x62\x6f\ +\x72\x64\x65\x72\x6f\x70\x61\x63\x69\x74\x79\x3d\x22\x31\x22\x0a\ +\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x63\x6f\x6c\x6f\x72\ +\x3d\x22\x23\x36\x36\x36\x36\x36\x36\x22\x0a\x20\x20\x20\x20\x20\ +\x70\x61\x67\x65\x63\x6f\x6c\x6f\x72\x3d\x22\x23\x66\x66\x66\x66\ +\x66\x66\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x21\x2d\x2d\x20\x55\x70\ +\x6c\x6f\x61\x64\x65\x64\x20\x74\x6f\x20\x53\x56\x47\x52\x65\x70\ +\x6f\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x73\x76\ +\x67\x72\x65\x70\x6f\x2e\x63\x6f\x6d\x20\x2d\x2d\x3e\x0a\x20\x20\ +\x3c\x74\x69\x74\x6c\x65\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ +\x74\x69\x74\x6c\x65\x32\x22\x3e\x69\x63\x5f\x66\x6c\x75\x65\x6e\ +\x74\x5f\x63\x6f\x64\x65\x5f\x32\x34\x5f\x72\x65\x67\x75\x6c\x61\ +\x72\x3c\x2f\x74\x69\x74\x6c\x65\x3e\x0a\x20\x20\x3c\x64\x65\x73\ +\x63\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x73\x63\x34\ +\x22\x3e\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x53\ +\x6b\x65\x74\x63\x68\x2e\x3c\x2f\x64\x65\x73\x63\x3e\x0a\x20\x20\ +\x3c\x67\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\ +\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\x66\x66\x22\x0a\x20\x20\x20\ +\x20\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\ +\x6e\x6f\x64\x64\x22\x0a\x20\x20\x20\x20\x20\x66\x69\x6c\x6c\x3d\ +\x22\x6e\x6f\x6e\x65\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x72\x6f\ +\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x22\x31\x22\x0a\x20\x20\x20\ +\x20\x20\x73\x74\x72\x6f\x6b\x65\x3d\x22\x6e\x6f\x6e\x65\x22\x0a\ +\x20\x20\x20\x20\x20\x69\x64\x3d\x22\xf0\x9f\x94\x8d\x2d\x50\x72\ +\x6f\x64\x75\x63\x74\x2d\x49\x63\x6f\x6e\x73\x22\x3e\x0a\x20\x20\ +\x20\x20\x3c\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\ +\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\x66\x66\x22\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\ +\x65\x3d\x22\x6e\x6f\x6e\x7a\x65\x72\x6f\x22\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x66\x69\x6c\x6c\x3d\x22\x23\x32\x31\x32\x31\x32\x31\ +\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x69\x63\x5f\ +\x66\x6c\x75\x65\x6e\x74\x5f\x63\x6f\x64\x65\x5f\x32\x34\x5f\x72\ +\x65\x67\x75\x6c\x61\x72\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\ +\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\ +\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\x66\ +\x66\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ +\xf0\x9f\x8e\xa8\x2d\x43\x6f\x6c\x6f\x72\x22\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x38\x2e\x30\x36\x35\x36\x31\ +\x38\x30\x31\x2c\x31\x38\x2e\x39\x34\x33\x32\x30\x38\x31\x20\x4c\ +\x31\x34\x2e\x35\x36\x35\x36\x31\x38\x2c\x34\x2e\x34\x34\x33\x32\ +\x30\x38\x30\x37\x20\x43\x31\x34\x2e\x37\x33\x35\x30\x35\x34\x35\ +\x2c\x34\x2e\x30\x36\x35\x32\x33\x34\x33\x33\x20\x31\x35\x2e\x31\ +\x37\x38\x38\x31\x38\x32\x2c\x33\x2e\x38\x39\x36\x31\x38\x31\x35\ +\x20\x31\x35\x2e\x35\x35\x36\x37\x39\x31\x39\x2c\x34\x2e\x30\x36\ +\x35\x36\x31\x38\x30\x31\x20\x43\x31\x35\x2e\x39\x30\x33\x32\x36\ +\x37\x39\x2c\x34\x2e\x32\x32\x30\x39\x33\x34\x38\x20\x31\x36\x2e\ +\x30\x37\x34\x31\x39\x32\x32\x2c\x34\x2e\x36\x30\x36\x37\x36\x32\ +\x36\x33\x20\x31\x35\x2e\x39\x36\x39\x37\x36\x34\x32\x2c\x34\x2e\ +\x39\x36\x31\x31\x32\x34\x37\x20\x4c\x31\x35\x2e\x39\x33\x34\x33\ +\x38\x32\x2c\x35\x2e\x30\x35\x36\x37\x39\x31\x39\x33\x20\x4c\x39\ +\x2e\x34\x33\x34\x33\x38\x31\x39\x39\x2c\x31\x39\x2e\x35\x35\x36\ +\x37\x39\x31\x39\x20\x43\x39\x2e\x32\x36\x34\x39\x34\x35\x34\x39\ +\x2c\x31\x39\x2e\x39\x33\x34\x37\x36\x35\x37\x20\x38\x2e\x38\x32\ +\x31\x31\x38\x31\x38\x31\x2c\x32\x30\x2e\x31\x30\x33\x38\x31\x38\ +\x35\x20\x38\x2e\x34\x34\x33\x32\x30\x38\x30\x37\x2c\x31\x39\x2e\ +\x39\x33\x34\x33\x38\x32\x20\x43\x38\x2e\x30\x39\x36\x37\x33\x32\ +\x31\x35\x2c\x31\x39\x2e\x37\x37\x39\x30\x36\x35\x32\x20\x37\x2e\ +\x39\x32\x35\x38\x30\x37\x38\x31\x2c\x31\x39\x2e\x33\x39\x33\x32\ +\x33\x37\x34\x20\x38\x2e\x30\x33\x30\x32\x33\x35\x37\x36\x2c\x31\ +\x39\x2e\x30\x33\x38\x38\x37\x35\x33\x20\x4c\x38\x2e\x30\x36\x35\ +\x36\x31\x38\x30\x31\x2c\x31\x38\x2e\x39\x34\x33\x32\x30\x38\x31\ +\x20\x4c\x31\x34\x2e\x35\x36\x35\x36\x31\x38\x2c\x34\x2e\x34\x34\ +\x33\x32\x30\x38\x30\x37\x20\x4c\x38\x2e\x30\x36\x35\x36\x31\x38\ +\x30\x31\x2c\x31\x38\x2e\x39\x34\x33\x32\x30\x38\x31\x20\x5a\x20\ +\x4d\x32\x2e\x32\x31\x39\x36\x36\x39\x39\x31\x2c\x31\x31\x2e\x34\ +\x36\x39\x36\x36\x39\x39\x20\x4c\x36\x2e\x34\x36\x39\x36\x36\x39\ +\x39\x31\x2c\x37\x2e\x32\x31\x39\x36\x36\x39\x39\x31\x20\x43\x36\ +\x2e\x37\x36\x32\x35\x36\x33\x31\x33\x2c\x36\x2e\x39\x32\x36\x37\ +\x37\x36\x37\x20\x37\x2e\x32\x33\x37\x34\x33\x36\x38\x37\x2c\x36\ +\x2e\x39\x32\x36\x37\x37\x36\x37\x20\x37\x2e\x35\x33\x30\x33\x33\ +\x30\x30\x39\x2c\x37\x2e\x32\x31\x39\x36\x36\x39\x39\x31\x20\x43\ +\x37\x2e\x37\x39\x36\x35\x39\x36\x36\x35\x2c\x37\x2e\x34\x38\x35\ +\x39\x33\x36\x34\x38\x20\x37\x2e\x38\x32\x30\x38\x30\x32\x37\x2c\ +\x37\x2e\x39\x30\x32\x36\x30\x30\x31\x36\x20\x37\x2e\x36\x30\x32\ +\x39\x34\x38\x32\x34\x2c\x38\x2e\x31\x39\x36\x32\x31\x31\x36\x35\ +\x20\x4c\x37\x2e\x35\x33\x30\x33\x33\x30\x30\x39\x2c\x38\x2e\x32\ +\x38\x30\x33\x33\x30\x30\x39\x20\x4c\x33\x2e\x38\x31\x30\x36\x36\ +\x30\x31\x37\x2c\x31\x32\x20\x4c\x37\x2e\x35\x33\x30\x33\x33\x30\ +\x30\x39\x2c\x31\x35\x2e\x37\x31\x39\x36\x36\x39\x39\x20\x43\x37\ +\x2e\x38\x32\x33\x32\x32\x33\x33\x2c\x31\x36\x2e\x30\x31\x32\x35\ +\x36\x33\x31\x20\x37\x2e\x38\x32\x33\x32\x32\x33\x33\x2c\x31\x36\ +\x2e\x34\x38\x37\x34\x33\x36\x39\x20\x37\x2e\x35\x33\x30\x33\x33\ +\x30\x30\x39\x2c\x31\x36\x2e\x37\x38\x30\x33\x33\x30\x31\x20\x43\ +\x37\x2e\x32\x36\x34\x30\x36\x33\x35\x32\x2c\x31\x37\x2e\x30\x34\ +\x36\x35\x39\x36\x36\x20\x36\x2e\x38\x34\x37\x33\x39\x39\x38\x34\ +\x2c\x31\x37\x2e\x30\x37\x30\x38\x30\x32\x37\x20\x36\x2e\x35\x35\ +\x33\x37\x38\x38\x33\x35\x2c\x31\x36\x2e\x38\x35\x32\x39\x34\x38\ +\x32\x20\x4c\x36\x2e\x34\x36\x39\x36\x36\x39\x39\x31\x2c\x31\x36\ +\x2e\x37\x38\x30\x33\x33\x30\x31\x20\x4c\x32\x2e\x32\x31\x39\x36\ +\x36\x39\x39\x31\x2c\x31\x32\x2e\x35\x33\x30\x33\x33\x30\x31\x20\ +\x43\x31\x2e\x39\x35\x33\x34\x30\x33\x33\x35\x2c\x31\x32\x2e\x32\ +\x36\x34\x30\x36\x33\x35\x20\x31\x2e\x39\x32\x39\x31\x39\x37\x33\ +\x2c\x31\x31\x2e\x38\x34\x37\x33\x39\x39\x38\x20\x32\x2e\x31\x34\ +\x37\x30\x35\x31\x37\x36\x2c\x31\x31\x2e\x35\x35\x33\x37\x38\x38\ +\x33\x20\x4c\x32\x2e\x32\x31\x39\x36\x36\x39\x39\x31\x2c\x31\x31\ +\x2e\x34\x36\x39\x36\x36\x39\x39\x20\x4c\x36\x2e\x34\x36\x39\x36\ +\x36\x39\x39\x31\x2c\x37\x2e\x32\x31\x39\x36\x36\x39\x39\x31\x20\ +\x4c\x32\x2e\x32\x31\x39\x36\x36\x39\x39\x31\x2c\x31\x31\x2e\x34\ +\x36\x39\x36\x36\x39\x39\x20\x5a\x20\x4d\x31\x36\x2e\x34\x36\x39\ +\x36\x36\x39\x39\x2c\x37\x2e\x32\x31\x39\x36\x36\x39\x39\x31\x20\ +\x43\x31\x36\x2e\x37\x33\x35\x39\x33\x36\x35\x2c\x36\x2e\x39\x35\ +\x33\x34\x30\x33\x33\x35\x20\x31\x37\x2e\x31\x35\x32\x36\x30\x30\ +\x32\x2c\x36\x2e\x39\x32\x39\x31\x39\x37\x33\x20\x31\x37\x2e\x34\ +\x34\x36\x32\x31\x31\x37\x2c\x37\x2e\x31\x34\x37\x30\x35\x31\x37\ +\x36\x20\x4c\x31\x37\x2e\x35\x33\x30\x33\x33\x30\x31\x2c\x37\x2e\ +\x32\x31\x39\x36\x36\x39\x39\x31\x20\x4c\x32\x31\x2e\x37\x38\x30\ +\x33\x33\x30\x31\x2c\x31\x31\x2e\x34\x36\x39\x36\x36\x39\x39\x20\ +\x43\x32\x32\x2e\x30\x34\x36\x35\x39\x36\x36\x2c\x31\x31\x2e\x37\ +\x33\x35\x39\x33\x36\x35\x20\x32\x32\x2e\x30\x37\x30\x38\x30\x32\ +\x37\x2c\x31\x32\x2e\x31\x35\x32\x36\x30\x30\x32\x20\x32\x31\x2e\ +\x38\x35\x32\x39\x34\x38\x32\x2c\x31\x32\x2e\x34\x34\x36\x32\x31\ +\x31\x37\x20\x4c\x32\x31\x2e\x37\x38\x30\x33\x33\x30\x31\x2c\x31\ +\x32\x2e\x35\x33\x30\x33\x33\x30\x31\x20\x4c\x31\x37\x2e\x35\x33\ +\x30\x33\x33\x30\x31\x2c\x31\x36\x2e\x37\x38\x30\x33\x33\x30\x31\ +\x20\x43\x31\x37\x2e\x32\x33\x37\x34\x33\x36\x39\x2c\x31\x37\x2e\ +\x30\x37\x33\x32\x32\x33\x33\x20\x31\x36\x2e\x37\x36\x32\x35\x36\ +\x33\x31\x2c\x31\x37\x2e\x30\x37\x33\x32\x32\x33\x33\x20\x31\x36\ +\x2e\x34\x36\x39\x36\x36\x39\x39\x2c\x31\x36\x2e\x37\x38\x30\x33\ +\x33\x30\x31\x20\x43\x31\x36\x2e\x32\x30\x33\x34\x30\x33\x34\x2c\ +\x31\x36\x2e\x35\x31\x34\x30\x36\x33\x35\x20\x31\x36\x2e\x31\x37\ +\x39\x31\x39\x37\x33\x2c\x31\x36\x2e\x30\x39\x37\x33\x39\x39\x38\ +\x20\x31\x36\x2e\x33\x39\x37\x30\x35\x31\x38\x2c\x31\x35\x2e\x38\ +\x30\x33\x37\x38\x38\x33\x20\x4c\x31\x36\x2e\x34\x36\x39\x36\x36\ +\x39\x39\x2c\x31\x35\x2e\x37\x31\x39\x36\x36\x39\x39\x20\x4c\x32\ +\x30\x2e\x31\x38\x39\x33\x33\x39\x38\x2c\x31\x32\x20\x4c\x31\x36\ +\x2e\x34\x36\x39\x36\x36\x39\x39\x2c\x38\x2e\x32\x38\x30\x33\x33\ +\x30\x30\x39\x20\x43\x31\x36\x2e\x31\x37\x36\x37\x37\x36\x37\x2c\ +\x37\x2e\x39\x38\x37\x34\x33\x36\x38\x37\x20\x31\x36\x2e\x31\x37\ +\x36\x37\x37\x36\x37\x2c\x37\x2e\x35\x31\x32\x35\x36\x33\x31\x33\ +\x20\x31\x36\x2e\x34\x36\x39\x36\x36\x39\x39\x2c\x37\x2e\x32\x31\ +\x39\x36\x36\x39\x39\x31\x20\x5a\x22\x20\x2f\x3e\x0a\x20\x20\x20\ +\x20\x3c\x2f\x67\x3e\x0a\x20\x20\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\ +\x76\x67\x3e\x0a\ +\x00\x00\x0e\xeb\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ +\x6e\x6f\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\ +\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\ +\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x65\x6c\x65\x6d\x65\ +\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\x0a\x20\x20\x20\x78\x6d\x6c\ +\x6e\x73\x3a\x63\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\ +\x65\x61\x74\x69\x76\x65\x63\x6f\x6d\x6d\x6f\x6e\x73\x2e\x6f\x72\ +\x67\x2f\x6e\x73\x23\x22\x0a\x20\x20\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\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\x67\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\x0a\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\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x6f\x64\x69\x70\ +\x6f\x64\x69\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x6f\x64\x69\ +\x70\x6f\x64\x69\x2e\x73\x6f\x75\x72\x63\x65\x66\x6f\x72\x67\x65\ +\x2e\x6e\x65\x74\x2f\x44\x54\x44\x2f\x73\x6f\x64\x69\x70\x6f\x64\ +\x69\x2d\x30\x2e\x64\x74\x64\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\ +\x73\x3a\x69\x6e\x6b\x73\x63\x61\x70\x65\x3d\x22\x68\x74\x74\x70\ +\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\ +\x6f\x72\x67\x2f\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x73\x2f\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x22\x0a\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x20\x28\x34\x30\x33\x35\x61\x34\x66\x62\x34\x39\x2c\x20\x32\ +\x30\x32\x30\x2d\x30\x35\x2d\x30\x31\x29\x22\x0a\x20\x20\x20\x73\ +\x6f\x64\x69\x70\x6f\x64\x69\x3a\x64\x6f\x63\x6e\x61\x6d\x65\x3d\ +\x22\x73\x68\x65\x65\x74\x2e\x73\x76\x67\x22\x0a\x20\x20\x20\x69\ +\x64\x3d\x22\x73\x76\x67\x38\x36\x32\x22\x0a\x20\x20\x20\x76\x65\ +\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x0a\x20\x20\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x34\x20\x32\ +\x34\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x34\ +\x70\x78\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x34\ +\x70\x78\x22\x3e\x0a\x20\x20\x3c\x6d\x65\x74\x61\x64\x61\x74\x61\ +\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x6d\x65\x74\x61\x64\x61\ +\x74\x61\x38\x36\x38\x22\x3e\x0a\x20\x20\x20\x20\x3c\x72\x64\x66\ +\x3a\x52\x44\x46\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\x63\x63\x3a\ +\x57\x6f\x72\x6b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x64\ +\x66\x3a\x61\x62\x6f\x75\x74\x3d\x22\x22\x3e\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x20\x3c\x64\x63\x3a\x66\x6f\x72\x6d\x61\x74\x3e\x69\ +\x6d\x61\x67\x65\x2f\x73\x76\x67\x2b\x78\x6d\x6c\x3c\x2f\x64\x63\ +\x3a\x66\x6f\x72\x6d\x61\x74\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x20\x3c\x64\x63\x3a\x74\x79\x70\x65\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x20\x20\x20\x20\x72\x64\x66\x3a\x72\x65\x73\x6f\x75\x72\x63\ +\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x75\x72\x6c\x2e\x6f\ +\x72\x67\x2f\x64\x63\x2f\x64\x63\x6d\x69\x74\x79\x70\x65\x2f\x53\ +\x74\x69\x6c\x6c\x49\x6d\x61\x67\x65\x22\x20\x2f\x3e\x0a\x20\x20\ +\x20\x20\x20\x20\x3c\x2f\x63\x63\x3a\x57\x6f\x72\x6b\x3e\x0a\x20\ +\x20\x20\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x0a\x20\x20\ +\x3c\x2f\x6d\x65\x74\x61\x64\x61\x74\x61\x3e\x0a\x20\x20\x3c\x64\ +\x65\x66\x73\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\ +\x73\x38\x36\x36\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x73\x6f\x64\x69\ +\x70\x6f\x64\x69\x3a\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x0a\x20\ +\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x75\x72\ +\x72\x65\x6e\x74\x2d\x6c\x61\x79\x65\x72\x3d\x22\x73\x76\x67\x38\ +\x36\x32\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\ +\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x6d\x61\x78\x69\x6d\x69\x7a\ +\x65\x64\x3d\x22\x31\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x79\x3d\x22\x2d\ +\x38\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\ +\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x78\x3d\x22\x2d\x38\x22\x0a\x20\ +\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x79\x3d\ +\x22\x31\x32\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x3a\x63\x78\x3d\x22\x31\x32\x22\x0a\x20\x20\x20\x20\x20\ +\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x7a\x6f\x6f\x6d\x3d\x22\x32\ +\x32\x2e\x34\x31\x36\x36\x36\x37\x22\x0a\x20\x20\x20\x20\x20\x73\ +\x68\x6f\x77\x67\x72\x69\x64\x3d\x22\x66\x61\x6c\x73\x65\x22\x0a\ +\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x6e\x61\x6d\x65\x64\x76\x69\ +\x65\x77\x38\x36\x34\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x68\x65\x69\x67\ +\x68\x74\x3d\x22\x37\x34\x38\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\ +\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x77\x69\ +\x64\x74\x68\x3d\x22\x31\x32\x38\x30\x22\x0a\x20\x20\x20\x20\x20\ +\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x67\x65\x73\x68\x61\ +\x64\x6f\x77\x3d\x22\x32\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\ +\x73\x63\x61\x70\x65\x3a\x70\x61\x67\x65\x6f\x70\x61\x63\x69\x74\ +\x79\x3d\x22\x30\x22\x0a\x20\x20\x20\x20\x20\x67\x75\x69\x64\x65\ +\x74\x6f\x6c\x65\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\x22\x0a\x20\ +\x20\x20\x20\x20\x67\x72\x69\x64\x74\x6f\x6c\x65\x72\x61\x6e\x63\ +\x65\x3d\x22\x31\x30\x22\x0a\x20\x20\x20\x20\x20\x6f\x62\x6a\x65\ +\x63\x74\x74\x6f\x6c\x65\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\x22\ +\x0a\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x6f\x70\x61\x63\ +\x69\x74\x79\x3d\x22\x31\x22\x0a\x20\x20\x20\x20\x20\x62\x6f\x72\ +\x64\x65\x72\x63\x6f\x6c\x6f\x72\x3d\x22\x23\x36\x36\x36\x36\x36\ +\x36\x22\x0a\x20\x20\x20\x20\x20\x70\x61\x67\x65\x63\x6f\x6c\x6f\ +\x72\x3d\x22\x23\x66\x66\x66\x66\x66\x66\x22\x20\x2f\x3e\x0a\x20\ +\x20\x3c\x21\x2d\x2d\x20\x55\x70\x6c\x6f\x61\x64\x65\x64\x20\x74\ +\x6f\x20\x53\x56\x47\x52\x65\x70\x6f\x20\x68\x74\x74\x70\x73\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x73\x76\x67\x72\x65\x70\x6f\x2e\x63\x6f\ +\x6d\x20\x2d\x2d\x3e\x0a\x20\x20\x3c\x74\x69\x74\x6c\x65\x0a\x20\ +\x20\x20\x20\x20\x69\x64\x3d\x22\x74\x69\x74\x6c\x65\x38\x35\x35\ +\x22\x3e\x69\x63\x5f\x66\x6c\x75\x65\x6e\x74\x5f\x74\x65\x78\x74\ +\x5f\x62\x75\x6c\x6c\x65\x74\x5f\x6c\x69\x73\x74\x5f\x73\x71\x75\ +\x61\x72\x65\x5f\x32\x34\x5f\x72\x65\x67\x75\x6c\x61\x72\x3c\x2f\ +\x74\x69\x74\x6c\x65\x3e\x0a\x20\x20\x3c\x64\x65\x73\x63\x0a\x20\ +\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x73\x63\x38\x35\x37\x22\ +\x3e\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x53\x6b\ +\x65\x74\x63\x68\x2e\x3c\x2f\x64\x65\x73\x63\x3e\x0a\x20\x20\x3c\ +\x67\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\ +\x6c\x6c\x3a\x23\x66\x66\x66\x66\x66\x66\x22\x0a\x20\x20\x20\x20\ +\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\ +\x6f\x64\x64\x22\x0a\x20\x20\x20\x20\x20\x66\x69\x6c\x6c\x3d\x22\ +\x6e\x6f\x6e\x65\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x72\x6f\x6b\ +\x65\x2d\x77\x69\x64\x74\x68\x3d\x22\x31\x22\x0a\x20\x20\x20\x20\ +\x20\x73\x74\x72\x6f\x6b\x65\x3d\x22\x6e\x6f\x6e\x65\x22\x0a\x20\ +\x20\x20\x20\x20\x69\x64\x3d\x22\xf0\x9f\x94\x8d\x2d\x53\x79\x73\ +\x74\x65\x6d\x2d\x49\x63\x6f\x6e\x73\x22\x3e\x0a\x20\x20\x20\x20\ +\x3c\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\ +\x22\x66\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\x66\x66\x22\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\ +\x22\x6e\x6f\x6e\x7a\x65\x72\x6f\x22\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x66\x69\x6c\x6c\x3d\x22\x23\x32\x31\x32\x31\x32\x31\x22\x0a\ +\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x69\x63\x5f\x66\x6c\ +\x75\x65\x6e\x74\x5f\x74\x65\x78\x74\x5f\x62\x75\x6c\x6c\x65\x74\ +\x5f\x6c\x69\x73\x74\x5f\x73\x71\x75\x61\x72\x65\x5f\x32\x34\x5f\ +\x72\x65\x67\x75\x6c\x61\x72\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\ +\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\ +\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\ +\x66\x66\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\ +\x22\xf0\x9f\x8e\xa8\x2d\x43\x6f\x6c\x6f\x72\x22\x0a\x20\x20\x20\ +\x20\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x31\x38\x2e\x37\x35\x2c\ +\x33\x20\x43\x31\x39\x2e\x39\x34\x30\x38\x32\x35\x2c\x33\x20\x32\ +\x30\x2e\x39\x31\x35\x36\x34\x31\x37\x2c\x33\x2e\x39\x32\x35\x31\ +\x36\x32\x32\x32\x20\x32\x30\x2e\x39\x39\x34\x38\x30\x39\x2c\x35\ +\x2e\x30\x39\x35\x39\x35\x31\x32\x37\x20\x4c\x32\x31\x2c\x35\x2e\ +\x32\x35\x20\x4c\x32\x31\x2c\x31\x38\x2e\x37\x35\x20\x43\x32\x31\ +\x2c\x31\x39\x2e\x39\x34\x30\x38\x32\x35\x20\x32\x30\x2e\x30\x37\ +\x34\x38\x30\x31\x2c\x32\x30\x2e\x39\x31\x35\x36\x34\x31\x37\x20\ +\x31\x38\x2e\x39\x30\x34\x30\x34\x34\x31\x2c\x32\x30\x2e\x39\x39\ +\x34\x38\x30\x39\x20\x4c\x31\x38\x2e\x37\x35\x2c\x32\x31\x20\x4c\ +\x35\x2e\x32\x35\x2c\x32\x31\x20\x43\x34\x2e\x30\x35\x39\x31\x33\ +\x36\x36\x37\x2c\x32\x31\x20\x33\x2e\x30\x38\x34\x33\x35\x35\x31\ +\x34\x2c\x32\x30\x2e\x30\x37\x34\x38\x30\x31\x20\x33\x2e\x30\x30\ +\x35\x31\x39\x30\x38\x32\x2c\x31\x38\x2e\x39\x30\x34\x30\x34\x34\ +\x31\x20\x4c\x33\x2c\x31\x38\x2e\x37\x35\x20\x4c\x33\x2c\x35\x2e\ +\x32\x35\x20\x43\x33\x2c\x34\x2e\x30\x35\x39\x31\x33\x36\x36\x37\ +\x20\x33\x2e\x39\x32\x35\x31\x36\x32\x32\x32\x2c\x33\x2e\x30\x38\ +\x34\x33\x35\x35\x31\x34\x20\x35\x2e\x30\x39\x35\x39\x35\x31\x32\ +\x37\x2c\x33\x2e\x30\x30\x35\x31\x39\x30\x38\x32\x20\x4c\x35\x2e\ +\x32\x35\x2c\x33\x20\x4c\x31\x38\x2e\x37\x35\x2c\x33\x20\x5a\x20\ +\x4d\x31\x38\x2e\x37\x35\x2c\x34\x2e\x35\x20\x4c\x35\x2e\x32\x35\ +\x2c\x34\x2e\x35\x20\x43\x34\x2e\x38\x37\x30\x33\x30\x37\x35\x2c\ +\x34\x2e\x35\x20\x34\x2e\x35\x35\x36\x35\x30\x39\x35\x38\x2c\x34\ +\x2e\x37\x38\x32\x31\x35\x36\x38\x38\x20\x34\x2e\x35\x30\x36\x38\ +\x34\x36\x36\x38\x2c\x35\x2e\x31\x34\x38\x32\x33\x30\x31\x39\x20\ +\x4c\x34\x2e\x35\x2c\x35\x2e\x32\x35\x20\x4c\x34\x2e\x35\x2c\x31\ +\x38\x2e\x37\x35\x20\x43\x34\x2e\x35\x2c\x31\x39\x2e\x31\x32\x39\ +\x36\x38\x33\x33\x20\x34\x2e\x37\x38\x32\x31\x35\x36\x38\x38\x2c\ +\x31\x39\x2e\x34\x34\x33\x34\x38\x38\x39\x20\x35\x2e\x31\x34\x38\ +\x32\x33\x30\x31\x39\x2c\x31\x39\x2e\x34\x39\x33\x31\x35\x33\x31\ +\x20\x4c\x35\x2e\x32\x35\x2c\x31\x39\x2e\x35\x20\x4c\x31\x38\x2e\ +\x37\x35\x2c\x31\x39\x2e\x35\x20\x43\x31\x39\x2e\x31\x32\x39\x36\ +\x38\x33\x33\x2c\x31\x39\x2e\x35\x20\x31\x39\x2e\x34\x34\x33\x34\ +\x38\x38\x39\x2c\x31\x39\x2e\x32\x31\x37\x38\x33\x34\x37\x20\x31\ +\x39\x2e\x34\x39\x33\x31\x35\x33\x31\x2c\x31\x38\x2e\x38\x35\x31\ +\x37\x36\x37\x37\x20\x4c\x31\x39\x2e\x35\x2c\x31\x38\x2e\x37\x35\ +\x20\x4c\x31\x39\x2e\x35\x2c\x35\x2e\x32\x35\x20\x43\x31\x39\x2e\ +\x35\x2c\x34\x2e\x38\x37\x30\x33\x30\x37\x35\x20\x31\x39\x2e\x32\ +\x31\x37\x38\x33\x34\x37\x2c\x34\x2e\x35\x35\x36\x35\x30\x39\x35\ +\x38\x20\x31\x38\x2e\x38\x35\x31\x37\x36\x37\x37\x2c\x34\x2e\x35\ +\x30\x36\x38\x34\x36\x36\x38\x20\x4c\x31\x38\x2e\x37\x35\x2c\x34\ +\x2e\x35\x20\x5a\x20\x4d\x37\x2e\x37\x35\x2c\x31\x34\x2e\x37\x35\ +\x20\x43\x38\x2e\x33\x30\x32\x32\x38\x2c\x31\x34\x2e\x37\x35\x20\ +\x38\x2e\x37\x35\x2c\x31\x35\x2e\x31\x39\x37\x37\x20\x38\x2e\x37\ +\x35\x2c\x31\x35\x2e\x37\x35\x20\x43\x38\x2e\x37\x35\x2c\x31\x36\ +\x2e\x33\x30\x32\x33\x20\x38\x2e\x33\x30\x32\x32\x38\x2c\x31\x36\ +\x2e\x37\x35\x20\x37\x2e\x37\x35\x2c\x31\x36\x2e\x37\x35\x20\x43\ +\x37\x2e\x31\x39\x37\x37\x32\x2c\x31\x36\x2e\x37\x35\x20\x36\x2e\ +\x37\x35\x2c\x31\x36\x2e\x33\x30\x32\x33\x20\x36\x2e\x37\x35\x2c\ +\x31\x35\x2e\x37\x35\x20\x43\x36\x2e\x37\x35\x2c\x31\x35\x2e\x31\ +\x39\x37\x37\x20\x37\x2e\x31\x39\x37\x37\x32\x2c\x31\x34\x2e\x37\ +\x35\x20\x37\x2e\x37\x35\x2c\x31\x34\x2e\x37\x35\x20\x5a\x20\x4d\ +\x31\x36\x2e\x37\x34\x39\x39\x2c\x31\x35\x20\x43\x31\x37\x2e\x31\ +\x36\x34\x32\x2c\x31\x35\x20\x31\x37\x2e\x34\x39\x39\x39\x2c\x31\ +\x35\x2e\x33\x33\x35\x38\x20\x31\x37\x2e\x34\x39\x39\x39\x2c\x31\ +\x35\x2e\x37\x35\x20\x43\x31\x37\x2e\x34\x39\x39\x39\x2c\x31\x36\ +\x2e\x31\x32\x39\x36\x38\x33\x33\x20\x31\x37\x2e\x32\x31\x37\x38\ +\x31\x38\x38\x2c\x31\x36\x2e\x34\x34\x33\x34\x38\x38\x39\x20\x31\ +\x36\x2e\x38\x35\x31\x36\x38\x38\x37\x2c\x31\x36\x2e\x34\x39\x33\ +\x31\x35\x33\x31\x20\x4c\x31\x36\x2e\x37\x34\x39\x39\x2c\x31\x36\ +\x2e\x35\x20\x4c\x31\x31\x2e\x32\x35\x30\x31\x2c\x31\x36\x2e\x35\ +\x20\x43\x31\x30\x2e\x38\x33\x35\x38\x2c\x31\x36\x2e\x35\x20\x31\ +\x30\x2e\x35\x30\x30\x31\x2c\x31\x36\x2e\x31\x36\x34\x32\x20\x31\ +\x30\x2e\x35\x30\x30\x31\x2c\x31\x35\x2e\x37\x35\x20\x43\x31\x30\ +\x2e\x35\x30\x30\x31\x2c\x31\x35\x2e\x33\x37\x30\x33\x31\x36\x37\ +\x20\x31\x30\x2e\x37\x38\x32\x31\x38\x31\x33\x2c\x31\x35\x2e\x30\ +\x35\x36\x35\x31\x31\x31\x20\x31\x31\x2e\x31\x34\x38\x33\x31\x31\ +\x33\x2c\x31\x35\x2e\x30\x30\x36\x38\x34\x36\x39\x20\x4c\x31\x31\ +\x2e\x32\x35\x30\x31\x2c\x31\x35\x20\x4c\x31\x36\x2e\x37\x34\x39\ +\x39\x2c\x31\x35\x20\x5a\x20\x4d\x37\x2e\x37\x35\x2c\x31\x31\x20\ +\x43\x38\x2e\x33\x30\x32\x32\x38\x2c\x31\x31\x20\x38\x2e\x37\x35\ +\x2c\x31\x31\x2e\x34\x34\x37\x37\x20\x38\x2e\x37\x35\x2c\x31\x32\ +\x20\x43\x38\x2e\x37\x35\x2c\x31\x32\x2e\x35\x35\x32\x33\x20\x38\ +\x2e\x33\x30\x32\x32\x38\x2c\x31\x33\x20\x37\x2e\x37\x35\x2c\x31\ +\x33\x20\x43\x37\x2e\x31\x39\x37\x37\x32\x2c\x31\x33\x20\x36\x2e\ +\x37\x35\x2c\x31\x32\x2e\x35\x35\x32\x33\x20\x36\x2e\x37\x35\x2c\ +\x31\x32\x20\x43\x36\x2e\x37\x35\x2c\x31\x31\x2e\x34\x34\x37\x37\ +\x20\x37\x2e\x31\x39\x37\x37\x32\x2c\x31\x31\x20\x37\x2e\x37\x35\ +\x2c\x31\x31\x20\x5a\x20\x4d\x31\x36\x2e\x37\x34\x39\x39\x2c\x31\ +\x31\x2e\x32\x35\x20\x43\x31\x37\x2e\x31\x36\x34\x32\x2c\x31\x31\ +\x2e\x32\x35\x20\x31\x37\x2e\x34\x39\x39\x39\x2c\x31\x31\x2e\x35\ +\x38\x35\x38\x20\x31\x37\x2e\x34\x39\x39\x39\x2c\x31\x32\x20\x43\ +\x31\x37\x2e\x34\x39\x39\x39\x2c\x31\x32\x2e\x34\x31\x34\x32\x20\ +\x31\x37\x2e\x31\x36\x34\x32\x2c\x31\x32\x2e\x37\x35\x20\x31\x36\ +\x2e\x37\x34\x39\x39\x2c\x31\x32\x2e\x37\x35\x20\x4c\x31\x31\x2e\ +\x32\x35\x30\x31\x2c\x31\x32\x2e\x37\x35\x20\x43\x31\x30\x2e\x38\ +\x33\x35\x38\x2c\x31\x32\x2e\x37\x35\x20\x31\x30\x2e\x35\x30\x30\ +\x31\x2c\x31\x32\x2e\x34\x31\x34\x32\x20\x31\x30\x2e\x35\x30\x30\ +\x31\x2c\x31\x32\x20\x43\x31\x30\x2e\x35\x30\x30\x31\x2c\x31\x31\ +\x2e\x35\x38\x35\x38\x20\x31\x30\x2e\x38\x33\x35\x38\x2c\x31\x31\ +\x2e\x32\x35\x20\x31\x31\x2e\x32\x35\x30\x31\x2c\x31\x31\x2e\x32\ +\x35\x20\x4c\x31\x36\x2e\x37\x34\x39\x39\x2c\x31\x31\x2e\x32\x35\ +\x20\x5a\x20\x4d\x37\x2e\x37\x35\x2c\x37\x2e\x32\x35\x20\x43\x38\ +\x2e\x33\x30\x32\x32\x38\x2c\x37\x2e\x32\x35\x20\x38\x2e\x37\x35\ +\x2c\x37\x2e\x36\x39\x37\x37\x32\x20\x38\x2e\x37\x35\x2c\x38\x2e\ +\x32\x35\x20\x43\x38\x2e\x37\x35\x2c\x38\x2e\x38\x30\x32\x32\x38\ +\x20\x38\x2e\x33\x30\x32\x32\x38\x2c\x39\x2e\x32\x35\x20\x37\x2e\ +\x37\x35\x2c\x39\x2e\x32\x35\x20\x43\x37\x2e\x31\x39\x37\x37\x32\ +\x2c\x39\x2e\x32\x35\x20\x36\x2e\x37\x35\x2c\x38\x2e\x38\x30\x32\ +\x32\x38\x20\x36\x2e\x37\x35\x2c\x38\x2e\x32\x35\x20\x43\x36\x2e\ +\x37\x35\x2c\x37\x2e\x36\x39\x37\x37\x32\x20\x37\x2e\x31\x39\x37\ +\x37\x32\x2c\x37\x2e\x32\x35\x20\x37\x2e\x37\x35\x2c\x37\x2e\x32\ +\x35\x20\x5a\x20\x4d\x31\x36\x2e\x37\x35\x2c\x37\x2e\x35\x20\x43\ +\x31\x37\x2e\x31\x36\x34\x32\x2c\x37\x2e\x35\x20\x31\x37\x2e\x35\ +\x2c\x37\x2e\x38\x33\x35\x37\x39\x20\x31\x37\x2e\x35\x2c\x38\x2e\ +\x32\x35\x20\x43\x31\x37\x2e\x35\x2c\x38\x2e\x36\x36\x34\x32\x31\ +\x20\x31\x37\x2e\x31\x36\x34\x32\x2c\x39\x20\x31\x36\x2e\x37\x35\ +\x2c\x39\x20\x4c\x31\x31\x2e\x32\x35\x2c\x39\x20\x43\x31\x30\x2e\ +\x38\x33\x35\x38\x2c\x39\x20\x31\x30\x2e\x35\x2c\x38\x2e\x36\x36\ +\x34\x32\x31\x20\x31\x30\x2e\x35\x2c\x38\x2e\x32\x35\x20\x43\x31\ +\x30\x2e\x35\x2c\x37\x2e\x38\x33\x35\x37\x39\x20\x31\x30\x2e\x38\ +\x33\x35\x38\x2c\x37\x2e\x35\x20\x31\x31\x2e\x32\x35\x2c\x37\x2e\ +\x35\x20\x4c\x31\x36\x2e\x37\x35\x2c\x37\x2e\x35\x20\x5a\x22\x20\ +\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x67\x3e\x0a\x20\x20\x3c\x2f\ +\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x0a\xed\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ +\x6e\x6f\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\ +\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\ +\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x65\x6c\x65\x6d\x65\ +\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\x0a\x20\x20\x20\x78\x6d\x6c\ +\x6e\x73\x3a\x63\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\ +\x65\x61\x74\x69\x76\x65\x63\x6f\x6d\x6d\x6f\x6e\x73\x2e\x6f\x72\ +\x67\x2f\x6e\x73\x23\x22\x0a\x20\x20\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\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\x67\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\x0a\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\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x6f\x64\x69\x70\ +\x6f\x64\x69\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x6f\x64\x69\ +\x70\x6f\x64\x69\x2e\x73\x6f\x75\x72\x63\x65\x66\x6f\x72\x67\x65\ +\x2e\x6e\x65\x74\x2f\x44\x54\x44\x2f\x73\x6f\x64\x69\x70\x6f\x64\ +\x69\x2d\x30\x2e\x64\x74\x64\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\ +\x73\x3a\x69\x6e\x6b\x73\x63\x61\x70\x65\x3d\x22\x68\x74\x74\x70\ +\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\ +\x6f\x72\x67\x2f\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x73\x2f\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x22\x0a\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x20\x28\x34\x30\x33\x35\x61\x34\x66\x62\x34\x39\x2c\x20\x32\ +\x30\x32\x30\x2d\x30\x35\x2d\x30\x31\x29\x22\x0a\x20\x20\x20\x73\ +\x6f\x64\x69\x70\x6f\x64\x69\x3a\x64\x6f\x63\x6e\x61\x6d\x65\x3d\ +\x22\x69\x6e\x66\x6f\x2e\x73\x76\x67\x22\x0a\x20\x20\x20\x69\x64\ +\x3d\x22\x73\x76\x67\x39\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\ +\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x0a\x20\x20\x20\x76\x69\x65\x77\ +\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x34\x20\x32\x34\x22\x0a\ +\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x34\x70\x78\x22\ +\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x34\x70\x78\x22\ +\x3e\x0a\x20\x20\x3c\x6d\x65\x74\x61\x64\x61\x74\x61\x0a\x20\x20\ +\x20\x20\x20\x69\x64\x3d\x22\x6d\x65\x74\x61\x64\x61\x74\x61\x31\ +\x35\x22\x3e\x0a\x20\x20\x20\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\ +\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\x63\x63\x3a\x57\x6f\x72\x6b\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x64\x66\x3a\x61\x62\ +\x6f\x75\x74\x3d\x22\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ +\x3c\x64\x63\x3a\x66\x6f\x72\x6d\x61\x74\x3e\x69\x6d\x61\x67\x65\ +\x2f\x73\x76\x67\x2b\x78\x6d\x6c\x3c\x2f\x64\x63\x3a\x66\x6f\x72\ +\x6d\x61\x74\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x64\x63\ +\x3a\x74\x79\x70\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ +\x20\x72\x64\x66\x3a\x72\x65\x73\x6f\x75\x72\x63\x65\x3d\x22\x68\ +\x74\x74\x70\x3a\x2f\x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\ +\x63\x2f\x64\x63\x6d\x69\x74\x79\x70\x65\x2f\x53\x74\x69\x6c\x6c\ +\x49\x6d\x61\x67\x65\x22\x20\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\ +\x3c\x2f\x63\x63\x3a\x57\x6f\x72\x6b\x3e\x0a\x20\x20\x20\x20\x3c\ +\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x0a\x20\x20\x3c\x2f\x6d\x65\ +\x74\x61\x64\x61\x74\x61\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\x0a\ +\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x31\x33\x22\ +\x20\x2f\x3e\x0a\x20\x20\x3c\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\ +\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x0a\x20\x20\x20\x20\x20\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x75\x72\x72\x65\x6e\x74\x2d\ +\x6c\x61\x79\x65\x72\x3d\x22\x73\x76\x67\x39\x22\x0a\x20\x20\x20\ +\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\ +\x77\x2d\x6d\x61\x78\x69\x6d\x69\x7a\x65\x64\x3d\x22\x31\x22\x0a\ +\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\ +\x6e\x64\x6f\x77\x2d\x79\x3d\x22\x2d\x38\x22\x0a\x20\x20\x20\x20\ +\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\ +\x2d\x78\x3d\x22\x2d\x38\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\ +\x73\x63\x61\x70\x65\x3a\x63\x79\x3d\x22\x31\x32\x22\x0a\x20\x20\ +\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x78\x3d\x22\ +\x31\x32\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\ +\x65\x3a\x7a\x6f\x6f\x6d\x3d\x22\x32\x32\x2e\x34\x31\x36\x36\x36\ +\x37\x22\x0a\x20\x20\x20\x20\x20\x73\x68\x6f\x77\x67\x72\x69\x64\ +\x3d\x22\x66\x61\x6c\x73\x65\x22\x0a\x20\x20\x20\x20\x20\x69\x64\ +\x3d\x22\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x31\x31\x22\x0a\x20\ +\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\ +\x64\x6f\x77\x2d\x68\x65\x69\x67\x68\x74\x3d\x22\x37\x34\x38\x22\ +\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\ +\x69\x6e\x64\x6f\x77\x2d\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x38\ +\x30\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\ +\x3a\x70\x61\x67\x65\x73\x68\x61\x64\x6f\x77\x3d\x22\x32\x22\x0a\ +\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\ +\x67\x65\x6f\x70\x61\x63\x69\x74\x79\x3d\x22\x30\x22\x0a\x20\x20\ +\x20\x20\x20\x67\x75\x69\x64\x65\x74\x6f\x6c\x65\x72\x61\x6e\x63\ +\x65\x3d\x22\x31\x30\x22\x0a\x20\x20\x20\x20\x20\x67\x72\x69\x64\ +\x74\x6f\x6c\x65\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\x22\x0a\x20\ +\x20\x20\x20\x20\x6f\x62\x6a\x65\x63\x74\x74\x6f\x6c\x65\x72\x61\ +\x6e\x63\x65\x3d\x22\x31\x30\x22\x0a\x20\x20\x20\x20\x20\x62\x6f\ +\x72\x64\x65\x72\x6f\x70\x61\x63\x69\x74\x79\x3d\x22\x31\x22\x0a\ +\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x63\x6f\x6c\x6f\x72\ +\x3d\x22\x23\x36\x36\x36\x36\x36\x36\x22\x0a\x20\x20\x20\x20\x20\ +\x70\x61\x67\x65\x63\x6f\x6c\x6f\x72\x3d\x22\x23\x66\x66\x66\x66\ +\x66\x66\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x21\x2d\x2d\x20\x55\x70\ +\x6c\x6f\x61\x64\x65\x64\x20\x74\x6f\x20\x53\x56\x47\x52\x65\x70\ +\x6f\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x73\x76\ +\x67\x72\x65\x70\x6f\x2e\x63\x6f\x6d\x20\x2d\x2d\x3e\x0a\x20\x20\ +\x3c\x74\x69\x74\x6c\x65\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ +\x74\x69\x74\x6c\x65\x32\x22\x3e\x69\x63\x5f\x66\x6c\x75\x65\x6e\ +\x74\x5f\x62\x6f\x6f\x6b\x5f\x66\x6f\x72\x6d\x75\x6c\x61\x5f\x69\ +\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x5f\x32\x34\x5f\x72\x65\ +\x67\x75\x6c\x61\x72\x3c\x2f\x74\x69\x74\x6c\x65\x3e\x0a\x20\x20\ +\x3c\x64\x65\x73\x63\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\ +\x65\x73\x63\x34\x22\x3e\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\ +\x74\x68\x20\x53\x6b\x65\x74\x63\x68\x2e\x3c\x2f\x64\x65\x73\x63\ +\x3e\x0a\x20\x20\x3c\x67\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\ +\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\x66\x66\x22\ +\x0a\x20\x20\x20\x20\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\ +\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x0a\x20\x20\x20\x20\x20\x66\ +\x69\x6c\x6c\x3d\x22\x6e\x6f\x6e\x65\x22\x0a\x20\x20\x20\x20\x20\ +\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x22\x31\x22\ +\x0a\x20\x20\x20\x20\x20\x73\x74\x72\x6f\x6b\x65\x3d\x22\x6e\x6f\ +\x6e\x65\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\xf0\x9f\x94\ +\x8d\x2d\x53\x79\x73\x74\x65\x6d\x2d\x49\x63\x6f\x6e\x73\x22\x3e\ +\x0a\x20\x20\x20\x20\x3c\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x73\ +\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\ +\x66\x66\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x66\x69\x6c\x6c\x2d\ +\x72\x75\x6c\x65\x3d\x22\x6e\x6f\x6e\x7a\x65\x72\x6f\x22\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x66\x69\x6c\x6c\x3d\x22\x23\x32\x31\x32\ +\x31\x32\x31\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ +\x69\x63\x5f\x66\x6c\x75\x65\x6e\x74\x5f\x62\x6f\x6f\x6b\x5f\x66\ +\x6f\x72\x6d\x75\x6c\x61\x5f\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\ +\x6f\x6e\x5f\x32\x34\x5f\x72\x65\x67\x75\x6c\x61\x72\x22\x3e\x0a\ +\x20\x20\x20\x20\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\ +\x3a\x23\x66\x66\x66\x66\x66\x66\x22\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x20\x20\x69\x64\x3d\x22\xf0\x9f\x8e\xa8\x2d\x43\x6f\x6c\x6f\ +\x72\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\ +\x31\x38\x2c\x32\x20\x43\x31\x39\x2e\x33\x38\x30\x37\x2c\x32\x20\ +\x32\x30\x2e\x35\x2c\x33\x2e\x31\x31\x39\x32\x39\x20\x32\x30\x2e\ +\x35\x2c\x34\x2e\x35\x20\x4c\x32\x30\x2e\x35\x2c\x31\x38\x2e\x37\ +\x35\x20\x43\x32\x30\x2e\x35\x2c\x31\x39\x2e\x31\x36\x34\x32\x20\ +\x32\x30\x2e\x31\x36\x34\x32\x2c\x31\x39\x2e\x35\x20\x31\x39\x2e\ +\x37\x35\x2c\x31\x39\x2e\x35\x20\x4c\x35\x2e\x35\x2c\x31\x39\x2e\ +\x35\x20\x43\x35\x2e\x35\x2c\x32\x30\x2e\x30\x35\x32\x33\x20\x35\ +\x2e\x39\x34\x37\x37\x32\x2c\x32\x30\x2e\x35\x20\x36\x2e\x35\x2c\ +\x32\x30\x2e\x35\x20\x4c\x31\x39\x2e\x37\x35\x2c\x32\x30\x2e\x35\ +\x20\x43\x32\x30\x2e\x31\x36\x34\x32\x2c\x32\x30\x2e\x35\x20\x32\ +\x30\x2e\x35\x2c\x32\x30\x2e\x38\x33\x35\x38\x20\x32\x30\x2e\x35\ +\x2c\x32\x31\x2e\x32\x35\x20\x43\x32\x30\x2e\x35\x2c\x32\x31\x2e\ +\x36\x36\x34\x32\x20\x32\x30\x2e\x31\x36\x34\x32\x2c\x32\x32\x20\ +\x31\x39\x2e\x37\x35\x2c\x32\x32\x20\x4c\x36\x2e\x35\x2c\x32\x32\ +\x20\x43\x35\x2e\x31\x31\x39\x32\x39\x2c\x32\x32\x20\x34\x2c\x32\ +\x30\x2e\x38\x38\x30\x37\x20\x34\x2c\x31\x39\x2e\x35\x20\x4c\x34\ +\x2c\x34\x2e\x35\x20\x43\x34\x2c\x33\x2e\x31\x31\x39\x32\x39\x20\ +\x35\x2e\x31\x31\x39\x32\x39\x2c\x32\x20\x36\x2e\x35\x2c\x32\x20\ +\x4c\x31\x38\x2c\x32\x20\x5a\x20\x4d\x31\x38\x2c\x33\x2e\x35\x20\ +\x4c\x36\x2e\x35\x2c\x33\x2e\x35\x20\x43\x35\x2e\x39\x34\x37\x37\ +\x32\x2c\x33\x2e\x35\x20\x35\x2e\x35\x2c\x33\x2e\x39\x34\x37\x37\ +\x32\x20\x35\x2e\x35\x2c\x34\x2e\x35\x20\x4c\x35\x2e\x35\x2c\x31\ +\x38\x20\x4c\x31\x39\x2c\x31\x38\x20\x4c\x31\x39\x2c\x34\x2e\x35\ +\x20\x43\x31\x39\x2c\x33\x2e\x39\x34\x37\x37\x32\x20\x31\x38\x2e\ +\x35\x35\x32\x33\x2c\x33\x2e\x35\x20\x31\x38\x2c\x33\x2e\x35\x20\ +\x5a\x20\x4d\x31\x32\x2e\x32\x35\x2c\x39\x20\x43\x31\x32\x2e\x36\ +\x32\x39\x36\x38\x33\x33\x2c\x39\x20\x31\x32\x2e\x39\x34\x33\x34\ +\x38\x38\x39\x2c\x39\x2e\x32\x38\x32\x31\x35\x36\x38\x37\x20\x31\ +\x32\x2e\x39\x39\x33\x31\x35\x33\x31\x2c\x39\x2e\x36\x34\x38\x32\ +\x33\x30\x31\x39\x20\x4c\x31\x33\x2c\x39\x2e\x37\x35\x20\x4c\x31\ +\x33\x2c\x31\x34\x2e\x37\x35\x20\x43\x31\x33\x2c\x31\x35\x2e\x31\ +\x36\x34\x32\x20\x31\x32\x2e\x36\x36\x34\x32\x2c\x31\x35\x2e\x35\ +\x20\x31\x32\x2e\x32\x35\x2c\x31\x35\x2e\x35\x20\x43\x31\x31\x2e\ +\x38\x37\x30\x33\x31\x36\x37\x2c\x31\x35\x2e\x35\x20\x31\x31\x2e\ +\x35\x35\x36\x35\x31\x31\x31\x2c\x31\x35\x2e\x32\x31\x37\x38\x33\ +\x34\x37\x20\x31\x31\x2e\x35\x30\x36\x38\x34\x36\x39\x2c\x31\x34\ +\x2e\x38\x35\x31\x37\x36\x37\x37\x20\x4c\x31\x31\x2e\x35\x2c\x31\ +\x34\x2e\x37\x35\x20\x4c\x31\x31\x2e\x35\x2c\x39\x2e\x37\x35\x20\ +\x43\x31\x31\x2e\x35\x2c\x39\x2e\x33\x33\x35\x37\x39\x20\x31\x31\ +\x2e\x38\x33\x35\x38\x2c\x39\x20\x31\x32\x2e\x32\x35\x2c\x39\x20\ +\x5a\x20\x4d\x31\x32\x2e\x32\x35\x2c\x36\x20\x43\x31\x32\x2e\x38\ +\x30\x32\x33\x2c\x36\x20\x31\x33\x2e\x32\x35\x2c\x36\x2e\x34\x34\ +\x37\x37\x32\x20\x31\x33\x2e\x32\x35\x2c\x37\x20\x43\x31\x33\x2e\ +\x32\x35\x2c\x37\x2e\x35\x35\x32\x32\x38\x20\x31\x32\x2e\x38\x30\ +\x32\x33\x2c\x38\x20\x31\x32\x2e\x32\x35\x2c\x38\x20\x43\x31\x31\ +\x2e\x36\x39\x37\x37\x2c\x38\x20\x31\x31\x2e\x32\x35\x2c\x37\x2e\ +\x35\x35\x32\x32\x38\x20\x31\x31\x2e\x32\x35\x2c\x37\x20\x43\x31\ +\x31\x2e\x32\x35\x2c\x36\x2e\x34\x34\x37\x37\x32\x20\x31\x31\x2e\ +\x36\x39\x37\x37\x2c\x36\x20\x31\x32\x2e\x32\x35\x2c\x36\x20\x5a\ +\x22\x20\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x67\x3e\x0a\x20\x20\ +\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x14\x9f\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x88\x00\x00\x00\x81\x08\x06\x00\x00\x00\x1b\xb5\xf2\x9a\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x28\x0b\x00\x00\x28\x0b\ +\x01\xa9\x5a\x5f\x0f\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\x2c\x49\x44\ +\x41\x54\x78\x9c\xed\x9d\x79\x74\x54\x45\xd6\xc0\x7f\xd5\x69\x08\ +\x90\x84\x45\x76\x10\xc1\x91\x45\x08\x8a\xa0\x83\x20\x2a\x01\x51\ +\x11\x51\x07\xa4\x01\x61\x50\x54\x04\x5c\xd0\x11\xd7\x41\xd4\x28\ +\x8b\xe8\x30\xb8\x8d\x0b\x8a\xca\x0c\xa2\x90\x66\x51\x51\x14\x05\ +\x41\x44\x5c\x3e\x44\x50\x36\x45\x59\x5c\xd8\x77\x12\x48\x48\xd2\ +\xf5\xfd\x51\x89\x74\xfa\xbd\xee\x7e\xaf\xb7\x57\x81\xfe\x9d\xd3\ +\x87\x93\x7a\xaf\xaa\x2e\xdd\xf7\x55\xd5\xbb\xf7\xd6\x2d\xc1\x49\ +\x80\xec\x45\x1d\x2a\x90\x89\xa4\x31\x82\x46\xf8\x68\x80\xa0\x21\ +\x50\x0f\xa8\x0a\x54\x06\x32\x4a\x3e\xee\x92\x6a\xfb\x4b\xfe\x2d\ +\x02\xf6\xf8\x7d\x76\x20\xd8\x84\x64\x3d\x2e\x36\xd0\x92\xcd\x22\ +\x1b\x5f\x62\xff\x47\x89\x43\x38\x2d\x40\xac\x91\x1e\x9a\x22\xb9\ +\x00\x41\x07\xa0\x35\xd0\x0a\xa8\x19\xc7\x2e\xf3\x81\x6f\x90\x7c\ +\x8a\x8b\xc5\x1c\xe6\x6b\xf1\x21\x05\x71\xec\x2f\xa1\x94\x7b\x05\ +\x91\x1e\xea\x21\xe9\x89\xa0\x3b\xd0\x09\x35\x2a\x38\x49\x1e\x30\ +\x07\x98\x4a\x26\x4b\xca\xfb\xe8\x52\x2e\x15\x44\xf6\xe6\x54\xdc\ +\x5c\x8f\xe4\x1a\xe0\x3c\xc0\xe5\xb4\x4c\x41\xd8\x0a\x3c\x47\x2e\ +\x2f\x94\xd7\x51\xa5\xdc\x28\x88\xcc\xc2\x4d\x1d\x7a\x22\x19\x02\ +\x74\x07\x52\x9c\x96\xc9\x06\x9b\x91\x8c\x62\x16\x33\x05\x48\xa7\ +\x85\xb1\x83\xf6\x0a\x22\xb3\x71\xb1\x86\x6b\x11\x8c\x05\x9a\x3b\ +\x2d\x4f\x94\x7c\x4a\x0a\x83\xc4\x0c\xb6\x39\x2d\x88\x55\xb4\x56\ +\x10\xe9\xa1\x3b\x30\x09\x68\xe9\xb4\x2c\x31\xe4\x37\xa0\xbb\xf0\ +\xb2\xce\x69\x41\xac\xa0\xa5\x82\xc8\x41\xa4\x71\x94\x89\x08\x86\ +\xa1\xa9\x8c\x51\xb2\x1b\x17\x1d\xc5\x4c\x7e\x71\x5a\x90\x70\x68\ +\xf9\xe5\x4b\x0f\x4b\x80\xce\x61\x6e\x2b\x04\x3e\x46\xb2\x00\x17\ +\x5b\x90\xf8\x80\x86\x08\xba\x21\xb9\x12\xa8\x12\x6f\x39\xa3\x64\ +\x2d\x69\x9c\x27\xa6\x92\xef\xb4\x20\xa1\xd0\x4e\x41\xe4\x20\xd2\ +\xc8\xe7\x00\xc7\x0d\x56\x66\x7c\x84\x8f\x3b\xc5\x6c\x36\x9a\xb6\ +\xd1\x9b\xfa\xb8\x99\x80\xe4\xfa\xf8\x48\x19\x23\x24\x63\xc4\x2c\ +\x1e\x71\x5a\x8c\x50\xe8\xf7\x7a\x58\xc0\x39\x84\x52\x0e\xc1\xf3\ +\x64\x72\x65\x30\xe5\x00\x10\x73\xd8\x2e\x72\xb8\x01\xc1\xc8\x78\ +\x88\x18\x33\x04\x77\x4a\x0f\xd5\x9c\x16\x23\x14\xfa\x29\x88\xa4\ +\x59\x88\xab\xf3\x68\xc5\x3f\xac\x1a\x9f\x44\x0e\x4f\x23\x79\x2e\ +\x46\x92\xc5\x83\x6a\x08\x86\x3b\x2d\x44\x28\xf4\x53\x10\xc1\x19\ +\x41\xae\xe4\x03\x77\xd8\xb6\x4c\x0a\x1e\x02\x76\x44\x2b\x56\xdc\ +\x90\x0c\x70\x5a\x84\x50\xe8\xa7\x20\x3e\x6a\x99\x96\x4b\xe6\x0a\ +\x2f\xbf\xda\x6d\x4e\x78\xc9\x45\x30\x25\x6a\xb9\xe2\xc7\xd9\xb2\ +\x5f\xd0\x87\xc2\x71\xf4\x53\x10\x41\x8d\x20\xe5\x1f\x46\xdc\xa6\ +\x64\x7e\xc4\x75\x13\x41\x31\x57\x39\x2d\x42\x30\xf4\x53\x10\x38\ +\xc5\xb4\x54\xb0\x29\x8a\x36\x37\x47\x51\x37\xfe\xb8\xb8\xc0\x69\ +\x11\x82\xa1\xa3\x82\x54\x37\x2d\x2d\xa6\x28\x8a\x36\x8f\x45\x51\ +\x37\xfe\x48\xce\x77\x5a\x84\x60\xe8\xa8\x20\xc1\xa6\x98\x86\x11\ +\xb7\xe8\xa2\x51\xc4\x75\x13\xc3\x69\xd2\xe3\x78\x98\x82\x29\x3a\ +\x2a\x48\x65\xd3\x52\x17\x97\x44\xdc\xa2\x2f\x8a\xba\x89\x42\x72\ +\xa6\xd3\x22\x98\xa1\xa3\x82\x98\xbb\xf1\x25\x7d\xe5\x40\xaa\xda\ +\x6d\x4c\x7a\x48\x01\x6e\x8c\x56\xa8\xb8\x23\xf4\xf4\x54\xeb\xa8\ +\x20\xc1\xac\xa8\xb5\x38\xc6\xa3\xb6\x5b\x93\x0c\x43\x85\x1e\xea\ +\x4d\x68\x03\xa1\x63\x94\x27\x05\x01\xb8\x5b\xf6\xb1\xee\x5f\x91\ +\x7d\xc8\x42\x30\x29\x06\x32\xc5\x1f\x41\x13\xa7\x45\x30\x23\xd4\ +\x8f\xe1\x14\xa1\x64\x12\x08\xa6\xca\xbe\x34\xa3\x0a\xe3\x82\x79\ +\x42\xa5\x87\x14\x04\xc3\x91\x4c\x02\x2a\xc6\x47\xcc\x98\x53\xdb\ +\x69\x01\xcc\xd0\xcf\x9b\xeb\xe1\x08\xc1\x16\xaa\x65\xf9\x15\xc1\ +\x14\x24\x0b\x70\xb3\x95\x7c\x8a\xa8\xc8\xa9\x14\xd3\x0d\xc1\x8d\ +\x40\x66\x9c\x45\x8d\x35\xeb\x85\x97\x56\x4e\x0b\x11\x88\x8e\x0a\ +\x92\x87\xfe\xb1\x1c\xf1\x60\x8f\xf0\xea\x37\x8a\xe8\xb8\x06\x29\ +\xd7\xdb\x04\xa2\x40\x4b\xb7\x7f\x52\x41\xf4\xa1\x82\xcc\xd2\x6f\ +\x4d\x98\x54\x10\x9d\xa8\x4d\x25\xa7\x45\x08\x44\x47\x05\x29\x76\ +\x5a\x00\xc7\x28\xd2\x6f\xed\xa5\xdd\x90\x46\x21\x4d\xa9\xa2\xd9\ +\xe2\xb9\x90\x3a\xc0\x86\xb8\xf7\xe3\xd6\xef\x81\xd5\x4e\x41\xc4\ +\x3b\x1c\x70\x5a\x86\x40\xa4\x87\xd4\x84\x74\xe4\x8e\xca\x63\x1d\ +\x17\xb4\xd3\xd8\x93\x9a\xa3\xfa\x29\x48\x54\x23\x88\xec\x4f\x23\ +\x7c\xb4\x07\xea\xe1\xa3\x06\x90\x6e\x72\x5b\x3a\x82\x0a\xe1\x1b\ +\x43\xe0\x0a\x12\x0b\xe2\x34\x32\x41\x8b\x47\x9f\x7e\xeb\x2f\xdb\ +\x73\xbd\xec\x47\x3b\x24\x83\x91\x5c\x0b\x34\x88\x83\x4c\x27\x2f\ +\x92\x1c\x04\x07\x10\x14\xe1\x63\x3b\x82\x4d\x08\x7e\xa7\x98\x5d\ +\xb8\x38\x42\x05\x0e\xd3\x9c\x83\x89\x4c\x29\x61\x59\x41\x64\x3f\ +\x5a\xe2\x63\x22\xd0\x23\x8e\xf2\x24\x09\x4f\x3e\xb0\x11\xf8\x09\ +\xc1\x7a\x24\x4b\x81\x65\xc2\xcb\xd1\x78\x74\x16\x56\x41\x64\x16\ +\x6e\x6a\x31\x16\xc1\x7d\x24\xd7\x2c\xba\x52\x00\x2c\x07\x66\x50\ +\x91\x19\x62\x3a\x87\x62\xd5\x70\x48\x05\x91\xbd\xa8\x89\x9b\x39\ +\xc0\xc5\xb1\xea\x30\x49\xdc\x39\x82\xc4\x4b\x0a\x4f\x8a\x99\xac\ +\x8f\xb6\xb1\xa0\x0a\x22\x07\x50\x83\x42\x16\x02\xed\xa2\xed\x24\ +\x89\x23\x14\x03\x6f\xe1\xe2\xb1\x68\xb2\x08\x98\x2a\x88\xbc\x82\ +\x54\xd2\x59\x02\x74\x88\xb4\xe1\x24\xda\x90\x8f\x20\x1b\xc9\x44\ +\xe1\xb5\xff\x96\x64\xbe\xa6\x48\xe3\x19\x92\xca\x71\xa2\x50\x09\ +\xc9\x04\x60\x99\xf4\x70\xba\xdd\xca\x86\x11\x44\x7a\xb8\x1a\x78\ +\x37\x16\x92\x25\xd1\x8e\xbd\x48\xfa\x88\x59\x2c\xb1\x5a\xa1\x8c\ +\x82\x48\x0f\x95\x81\x75\xa0\x67\x7c\x64\x92\x98\x70\x0c\xc1\x60\ +\x91\xc3\xdb\x56\x6e\x0e\x9c\x62\x46\x92\x54\x8e\x13\x9d\x8a\x48\ +\xa6\xc9\x3e\xf4\xb7\x72\xf3\x9f\x23\x88\xbc\x8a\x2a\x54\x62\x0b\ +\x9a\x06\xcf\x26\x89\x39\x85\x40\x2f\xe1\xe5\x83\x50\x37\x1d\xf7\ +\xc5\x54\x66\x08\x32\x06\xca\xe1\xae\x08\x2d\xad\x9a\x4d\x24\xe4\ +\x1d\x00\x5f\x31\x1c\x3d\x04\xb9\xfb\xd4\xdf\x49\x12\x41\x05\xe0\ +\x6d\xe9\xa1\x43\xa8\x8c\x8b\xc7\x47\x10\x0f\xab\x80\x36\x51\x77\ +\x5b\xad\x2e\xbc\x1a\x45\xbe\x96\xbc\xfd\xb0\xe3\x17\x58\xbf\x14\ +\x56\x7f\x0c\x6b\x16\x41\xb1\x76\x4e\xce\x13\x89\xf5\x14\x70\xbe\ +\x78\x8f\xc3\x66\x17\x05\x80\xf4\xd0\x0a\x58\x1b\x93\xee\xa2\x55\ +\x90\x40\x76\x6e\x82\xb9\xe3\x61\xc9\x54\x35\xd2\x24\x89\x3d\x82\ +\xc9\x22\xc7\x3c\x15\x96\x5a\xa4\x4a\x3c\x09\x15\xc8\x0e\x75\xff\ +\x02\xc3\xa7\xc0\xc3\x0b\xa1\x6a\x72\x79\x14\x17\x24\x43\x65\x5f\ +\xba\x99\x5d\x52\x0a\x22\xb8\x34\xa1\x02\x45\x42\x66\x16\x8c\x5d\ +\x0e\x19\xe6\x19\xaa\x92\x44\x85\x40\xf2\x82\x1c\x6a\x8c\xdb\x71\ +\xcb\xab\xc9\x00\xda\xc7\x5d\x84\x71\xdd\xe1\xf0\x1e\xf3\x6b\x95\ +\xd2\x21\xad\x06\xd4\x6b\x0a\x67\x76\x82\xb3\xba\xa9\xb2\x40\xea\ +\x35\x85\x11\xd3\xe0\x89\x2b\x41\x9e\xbc\xc1\xef\x71\xa2\x39\x07\ +\xb8\x19\x78\xd9\xbf\x50\xc8\x3e\x5c\x84\x60\x69\xcc\xba\x09\xb6\ +\x06\x19\xd6\x00\xf6\x6f\xb7\xd6\x46\x46\x4d\xe8\xfb\x18\x5c\x7e\ +\xbb\xf9\xf5\x57\x87\xc3\x27\x93\x23\x97\x31\x49\x30\xb6\x91\x4f\ +\x33\x31\x8f\x23\xa5\x05\x2e\x5c\x9c\xed\xa4\x44\xa6\x1c\xde\x0b\ +\xaf\xdd\xa1\x3e\x66\xf4\xd4\x3b\x3f\x6e\x39\xa6\x01\x95\xcb\x66\ +\x4f\x70\xe1\xd3\x38\x77\xc6\x82\x17\xe0\x3b\x93\xe4\x86\xf5\x9b\ +\x43\x83\x16\x89\x97\xe7\x64\x40\x32\x42\xfa\x99\x3f\x5c\x08\x4e\ +\x73\x52\x9e\xb0\x7c\xfc\x92\x79\x79\xe3\xe8\x4d\x36\x65\x48\xa9\ +\xa0\x14\xaf\xc5\x05\xf0\xd7\x6b\xd4\xe7\xcc\x0b\x95\x22\xba\xca\ +\xd3\xd9\x45\x51\xd3\x0a\x0f\x5d\x4a\xff\x70\x03\xa7\x3a\x28\x4c\ +\x78\x36\x7c\x6e\x5e\x5e\x3d\x06\x39\xdf\x2a\x67\xc0\x05\xfd\xa0\ +\x6d\x0f\xb5\x30\xae\x9c\x61\x7e\x5f\xde\x7e\x58\xb3\x18\x96\xcf\ +\x84\xaf\x66\x59\x5b\x20\xd7\x68\x00\x3d\xee\x34\x96\x17\x1d\x83\ +\x39\xe3\xa1\x30\xc2\x43\x1e\x84\x80\xab\xef\x87\xf4\x80\x5c\x7f\ +\x87\xf7\xc2\xbc\x89\x20\x63\x70\xa0\x95\x64\x20\xf0\x29\x28\x05\ +\xa9\x13\x7d\x8b\x71\x24\xef\x00\x14\x16\x40\x85\x80\xbd\x4b\xee\ +\x28\xf2\xc2\xa4\xb8\xa1\xc7\x5d\xd0\xfb\x21\xf5\xf6\x14\x8e\xb4\ +\x1a\x70\x7e\x6f\xf5\xf9\x6d\x0d\xbc\x7e\x27\xac\x5d\x1c\xba\xce\ +\xfe\x6d\x50\xa5\x3a\x5c\x3a\xcc\x78\x2d\xbd\x26\xbc\x16\x64\x01\ +\x1e\x8e\xab\xee\x85\x81\x13\xca\x96\x15\x17\xc1\xf8\xee\xb1\x51\ +\x0e\x00\x41\x2f\xe9\xe1\x56\xe1\xe5\x98\x0b\x48\x8b\x4d\xab\x71\ +\x22\xc5\x6d\xae\x0c\x79\xfb\x8d\x65\x56\x48\xab\x0e\xa3\x3f\x86\ +\x41\x13\xad\x29\x47\x20\x8d\x5a\xc3\xc3\x9f\x40\xf7\x20\x0b\x68\ +\x7f\x5e\x1f\x01\x3f\x2e\x37\x96\x5f\x7e\x1b\x5c\x34\xd0\x7e\xdf\ +\xcd\xce\x87\xeb\xc6\x19\xcb\xdf\xbc\x1f\x7e\x58\x64\xbf\xbd\xe0\ +\xd4\x40\x92\x05\xca\x50\x66\x25\x9b\x8f\x73\x64\xd4\x52\xc3\x6a\ +\x20\x56\x5f\x99\xfd\xa9\xdd\x18\xc6\x7c\x01\x99\x5d\xcc\xaf\x1f\ +\xdc\x09\x3f\x7d\x09\xdf\xcd\x57\x23\xc4\xef\xeb\xcc\xa7\x13\x57\ +\x0a\xdc\xf4\x3c\x74\xb9\x29\x74\x7f\xc5\x85\xf0\xdc\x00\x35\xfc\ +\x07\x32\xe4\x45\x65\xd7\xb1\x4a\x46\x2d\x18\xe9\x55\x6b\x25\x7f\ +\x3e\x9f\x0e\x1f\x3c\x6d\xbd\x1d\xab\x94\xa4\x1d\x75\xa3\xfb\xe9\ +\x91\xcd\x82\x44\x3e\xfe\xf2\x7f\xf6\xda\x49\xab\x0e\xa3\x3e\x82\ +\x86\x01\xe9\x48\x0b\xf3\x61\xd1\x14\x65\x57\xf9\x6d\x8d\x49\xbd\ +\x1a\xd0\xd1\x03\xbd\x46\x29\x05\xf3\xe7\xa6\xe7\xe1\xe7\xaf\xe1\ +\xb7\x10\x6e\xac\xdd\x5b\xe1\xb9\x81\x30\x6a\x3e\x08\xbf\xf0\x9b\ +\xca\x55\xe1\xee\x1c\x18\x7d\x41\xf8\xf5\x88\x70\xc1\x1d\xff\x83\ +\x9a\x01\xf9\x80\x37\x7f\x07\x93\x6f\x09\x5d\x37\x52\x24\x5d\x41\ +\x8d\x20\x7a\x9f\xe7\xda\xa1\x8f\xb1\x6c\xf3\x4a\x38\xb4\xdb\x5e\ +\x3b\x43\x5e\x34\x2a\xc7\xf6\x8d\xf0\xc0\xb9\x6a\x2a\x30\x53\x0e\ +\x50\x53\xd9\xc2\x57\xe0\xfe\xb6\xb0\x76\x49\xd9\x6b\xa9\x55\xe0\ +\xef\xff\x0a\xdf\xf7\xea\x05\xe0\x7d\xcc\x58\x7e\x7a\x5b\xb8\xc1\ +\x42\x12\xc6\x6b\xee\x87\xb6\x57\x94\x2d\x3b\xb4\x1b\x26\xf6\x82\ +\x63\x71\xd9\x2f\x05\xd0\x56\x7a\x48\x77\x81\xc6\x67\xa6\x9d\xde\ +\x0e\x2e\xbc\xce\x58\xbe\xf0\x55\x7b\xed\x9c\x75\x09\x74\x0a\x68\ +\x67\xf7\x56\x78\xe4\x22\x35\x8d\x58\x21\x6f\x3f\x4c\xec\x0d\x7b\ +\x02\x4e\x24\x39\xa7\x3b\x9c\x6a\x21\xf7\xdc\xec\xb1\x6a\xea\x0a\ +\xe4\xb2\x5b\xa1\x63\xdf\xe0\xf5\x5a\x5e\x04\xfd\xc6\x94\x2d\x2b\ +\x2e\x82\xa7\xfb\xa9\xff\x43\xfc\x48\xc1\x45\x6b\x17\x70\x30\x9e\ +\xbd\x44\x4c\xcd\x46\x70\xff\x3b\x65\x87\x65\x80\x6d\x3f\xc2\xe2\ +\xd7\xed\xb5\xd5\x37\xe0\xe9\x95\x3e\x98\xe4\x51\x6b\x0e\x3b\xe4\ +\xed\x87\x99\x01\x47\xcc\x09\x01\x5d\x2c\x24\x72\x96\x3e\x78\x7e\ +\x10\xec\x32\x39\x78\x62\xf8\xab\xe6\xeb\x91\xaa\xb5\xe1\xae\xb7\ +\xd5\x42\xdd\x9f\x69\xf7\x86\x7f\x8b\x8a\x05\xc5\xb4\x71\x01\x11\ +\xac\xf6\xe2\x88\x2b\x05\x3a\xf5\x87\xa7\xbe\x33\xce\xb9\x85\x05\ +\xf0\xd2\xcd\xca\x96\x60\x95\x46\xad\xa1\x45\xa7\xb2\x65\xcb\xde\ +\xb2\xbf\x86\x29\x65\xf9\x0c\x38\x1a\x10\x5b\x73\xe6\x85\xd6\xea\ +\xe6\xee\x83\x7f\xf7\x31\xae\x39\x4a\xd7\x23\x15\xfc\x92\x08\x08\ +\x97\x72\x4c\x9e\x12\x70\x86\xc1\x67\xff\x83\xf9\xcf\xda\x97\x3b\ +\x12\x04\x2d\xdd\x24\xea\xb8\xae\x5a\x8d\xa1\x62\xc0\x0b\x53\xc5\ +\x2a\x6a\x1e\x4f\xab\x01\x75\x9a\xa8\x1f\xb3\x7d\x2f\xe3\x97\x02\ +\x6a\x58\xfd\xcf\xf5\xf0\xe3\x17\xf6\xfa\x6d\x67\xb2\xd7\xdc\xee\ +\x14\xe5\x4f\x61\x81\x5a\x98\x9e\xe5\x17\x3e\x71\x7a\x3b\xf5\xe3\ +\x5a\x31\x7e\x6d\x5e\xa9\xd6\x3c\xc3\x02\x64\x28\x5d\x8f\x4c\xb9\ +\x4d\xfd\xdd\xeb\x9f\xd0\xe6\xf2\xb2\xf7\xfc\xb2\x42\x39\x2a\x13\ +\x47\x23\x37\x92\xcd\x09\x49\xf8\x34\xee\xcb\xc8\xeb\xe6\xee\x53\ +\x73\xee\x0f\x0b\xed\xd7\x0d\x8c\x8f\xcd\xcf\x85\x0d\xcb\x22\x97\ +\x05\xd4\xe2\xd6\x5f\x41\xdc\x15\x95\x52\xef\xb4\xb8\xc3\x71\xd1\ +\x14\x68\xde\xd1\xf8\x9a\x7c\xd9\xad\xb0\xee\x33\x38\xb0\xc3\x38\ +\x2d\x1e\xdc\xa5\xd6\x40\xf1\x5b\x94\x9a\xd1\xc8\x8d\x8b\xf5\xc4\ +\xc8\x00\x17\x73\xa4\x4f\xbd\xe7\x4f\xbb\xcf\xfe\x7a\x01\xd4\x30\ +\x1d\x38\xfc\x1f\xdc\x09\xad\xbb\x46\x27\x57\x9a\x49\x9e\x9b\xf4\ +\x53\xac\x2b\x08\xc0\x94\xdb\xa1\x49\x5b\x35\x72\xf8\x33\xec\x15\ +\xc8\xcf\x2b\xeb\xff\x29\x2e\x54\x6b\xa6\xbd\xbf\x45\x26\x6f\xe4\ +\xd4\x71\x23\xa3\xdf\x01\x1e\x17\xb6\x7e\xaf\xbe\x94\xed\x3f\x45\ +\xde\x46\x5a\x75\xa8\x12\x90\x9f\xb6\xee\x19\xca\x12\x1a\x6b\x02\ +\x7d\x23\xe1\x28\xcc\x87\x49\x7d\x60\xc2\x8a\xb2\x16\xdd\xca\x55\ +\xd5\xc7\x9f\xff\x8e\x54\x41\xdc\x89\x27\xcd\x45\x01\xab\x41\xbf\ +\xdc\x58\x9c\xd6\xda\xda\xeb\x63\x28\x32\x6a\xc6\x46\x16\x2b\xb8\ +\x23\xc8\x73\xb7\x73\x93\x7a\xb3\x09\xe5\xfc\x5b\x3a\x0d\x3e\xfa\ +\x4f\xe4\x72\x45\x47\x9a\x5b\xbc\xc7\x61\xe9\xe1\x07\xa0\x6d\xd8\ +\xdb\xa3\xe1\xa1\x8e\x70\x68\x97\xf9\xb5\xa6\xed\x61\xc4\x9b\x65\ +\x87\x55\xe1\x82\x3b\xdf\x84\x47\x3b\xc3\xa6\x6f\x23\xeb\x33\x12\ +\x5f\x4b\xa2\x59\xf9\x81\xf2\xee\x5e\x3b\xda\x78\xed\xd7\x1f\x60\ +\xf2\xd0\xc4\xcb\x74\x1c\xb7\x7a\xc1\x16\x2c\x43\xc6\x59\x41\xf6\ +\x6c\x0d\xee\x3f\xd9\xb9\x09\xaa\xd7\x37\x5a\x15\x53\xd3\xe0\x81\ +\x79\xf0\x50\x07\xa3\x81\xca\x0a\x81\x7e\x0b\x80\xbd\xbf\xc3\xb2\ +\xe9\xf6\xdb\x0a\xc7\x8e\x9f\x23\xaf\x1b\xcc\xf1\x58\xf7\x0c\x15\ +\x8f\xb2\x75\x75\xe4\x6d\x47\xc7\x31\xa5\x20\x3e\x3e\x46\x30\xc2\ +\x29\x29\x00\xe5\x70\xaa\xdf\x4c\xad\xe4\xfd\xa9\x51\x1f\x46\x7d\ +\x08\x0f\x77\xb2\xbf\xeb\x2e\x77\x9f\xb1\x2c\x6f\x3f\x4c\x7f\x30\ +\x72\x39\x63\x4d\x8b\x4e\x46\xf7\x7d\x29\xa9\x55\x94\xb1\xf0\xc1\ +\xf3\xcc\x1d\x7e\xf1\xe7\x58\xe9\xb6\x87\x45\x40\x9e\x13\x12\x94\ +\xe1\x8d\xbb\xcc\x5f\x65\x4f\x6d\x05\xf7\xce\xb5\x1f\x03\x92\x6b\ +\xf2\xa5\xea\xb4\x6d\xa2\x46\x7d\x73\x0f\xad\x3f\xb5\x9b\xc0\x6d\ +\x53\x8d\x16\xe5\xc4\x70\xc8\x05\x50\x92\x21\x2f\x02\x23\x43\x8c\ +\x29\x2e\x84\x49\x7d\xe1\x0f\x93\xac\xd7\x99\x59\xca\xe1\x66\x87\ +\xdc\x7d\xaa\x4d\x7f\xaa\xd7\x85\x6a\x1a\xc4\x48\x55\x48\x85\x7b\ +\xe7\x28\x25\xf1\x67\xd5\x47\xc6\x7b\xcf\xed\xa9\x0c\x67\x89\x67\ +\xc7\x71\xb5\x94\xc4\x61\x62\x8e\x80\xbc\xfd\xf0\x44\x0f\x73\x6f\ +\x6d\xd7\x9b\xed\x7d\x51\xc5\x45\xf0\x73\x80\x49\x5d\xb8\xe0\xec\ +\xcb\xa2\x93\x31\x16\x0c\x7e\xd6\x18\xca\xb0\x76\x31\x4c\xe8\x09\ +\x9f\xbc\x6c\xbc\xbf\xdf\xe3\xca\x31\x98\x58\x76\x1e\x57\x90\x3c\ +\xde\x03\x1c\x99\xe8\x0c\xec\xda\xac\x7c\x16\x66\x3e\x97\xfe\xe3\ +\x94\xaf\xc6\x2a\x6b\x3e\x35\x96\x5d\xfc\xf7\xc8\x65\x8b\x05\x5d\ +\x6e\x34\x86\x22\x1e\xd8\x01\xcf\x5c\xa7\xf6\x1f\x4f\xbd\xdb\xb8\ +\x30\x2d\xf5\xcd\xd4\x4a\x60\x8c\xb9\x60\xd3\x9f\x0a\x22\x3e\xa4\ +\x00\xc1\xb4\xc4\xf5\x1e\x86\xf5\x4b\xcd\x5f\xf1\x84\x80\xdb\xde\ +\xb0\xee\x20\xfb\xde\xc4\x28\xd6\xe6\x72\x68\xd5\x39\x3a\xf9\x22\ +\xe5\x2f\xe7\x1a\xa7\x4a\x5f\xb1\x0a\x2a\x2a\xb5\x16\x17\xe6\x2b\ +\xd7\x42\x7e\x6e\xd9\xfb\x4a\xa3\xca\x02\xe3\x73\xe3\x85\x64\x7d\ +\xd9\x95\x8f\x8b\x67\xd1\xc9\x68\xf6\xd9\x7f\x61\xee\x13\xc6\xf2\ +\x0a\x95\xe0\xbe\x77\xd4\x5b\x4f\x38\x36\x7c\x0e\x7f\x98\x18\x8b\ +\x6f\x7d\x2d\x36\x9b\xc1\x53\xd3\x54\x30\xb3\x15\x32\x6a\xc1\x3d\ +\xb3\xcb\x7a\x6d\x41\xc5\x8a\x04\x8e\x74\xdb\x7e\x3c\xee\xb8\xf3\ +\xa7\x69\x7b\x18\xfc\x4c\x64\xb2\xda\x25\x50\x41\xc4\x0c\xb6\x20\ +\x98\x99\x98\xde\x2d\x32\x63\x34\x7c\x3d\xdb\x58\x9e\x51\x13\xfe\ +\x39\x3f\xfc\x5b\x89\x94\x90\x93\x6d\x2c\xaf\x7b\x06\x3c\xf8\xbe\ +\x71\x91\x68\x15\x21\xa0\xdd\x95\x30\x71\x35\x74\xb3\x60\xcc\x72\ +\xa5\xc0\x5d\x6f\x19\xc3\x16\xd7\x2e\x86\xd9\x63\xcc\xeb\x2c\x9d\ +\x06\x8b\xdf\x30\x96\x5f\x3a\x1c\x3a\xdf\x60\x5f\x66\x7b\x14\x52\ +\xc0\xb7\xc6\x77\xa7\x62\x9e\x40\xa7\x53\x9f\xa4\x4f\xb9\xf9\x7f\ +\x59\x61\xbc\x56\xaf\xa9\xb2\x13\x04\x3e\x91\x81\x7c\xe5\x35\x8f\ +\xe6\x6a\xda\x1e\x9e\x5a\xa5\xa2\xcd\x02\x83\x72\x82\x51\x29\x1d\ +\xb2\x06\xc3\xc4\xef\x95\x82\xd5\x3d\xc3\x5a\xbd\xfe\x63\xe1\xec\ +\x80\x24\x0a\x07\x77\xaa\xa9\x25\x54\xde\x93\xd7\x47\x98\x47\xbd\ +\xdd\xf2\x12\x34\x39\xc7\x5a\xdf\x91\xb1\x52\xcc\xe3\x88\x41\x41\ +\xc4\x6c\xd6\x22\x98\x12\xcf\x9e\x6d\x53\x70\x04\x9e\xba\x46\x59\ +\x41\x03\x69\xd1\x09\x6e\x9f\x6a\x1e\xf9\x5e\x8a\x94\xf0\xc2\x60\ +\xe5\xa6\x0f\xa4\x5a\x1d\xf5\x64\x3f\xb7\x11\x06\xfd\x0b\xce\xbb\ +\x5a\xc5\xae\x56\xab\xa3\x46\xa7\x46\x99\xca\xb5\x7f\xe5\x3f\xd4\ +\x76\x89\xd7\xf6\xa8\x35\x50\x23\x1b\x3b\x56\xdb\xf7\x82\x6b\x1e\ +\x08\x90\xa9\x24\xc2\x2c\x5c\x74\x7e\x41\x9e\x5a\x8f\x14\x1c\x29\ +\x5b\x5e\xb1\x32\xdc\x33\xcb\xdc\xb3\x1c\x1b\x96\x42\xb0\x4c\xcb\ +\xbd\xa8\x83\x9b\x8d\x40\x55\xb3\xeb\x21\x89\xc5\xee\xfe\x60\x34\ +\x39\x07\x1e\xff\xdc\x3c\x35\xc4\x3b\x13\xe0\xad\x30\xaf\xc0\xb5\ +\x1b\x9b\x47\xb6\x47\xcb\xea\x05\x2a\xbd\x85\x19\x0d\xcf\x84\xf1\ +\x5f\x1b\x3d\xb4\xb3\xc7\xc2\xcc\x87\xad\xf7\x71\xc9\x10\x63\x90\ +\x11\xc0\xb7\xef\xab\x87\x27\xd6\xe9\x30\x04\x17\x8a\x1c\xbe\x30\ +\x35\xcf\x89\xb9\xec\x02\xee\x8b\x6d\x8f\x31\x60\xcb\x2a\x35\x24\ +\x9b\x7d\x19\x7f\x7b\x50\x7d\x89\xa1\xd8\xbd\x15\x46\x77\x84\x2f\ +\x66\xc4\x56\xae\x23\x41\xc2\x7a\x2b\x67\x28\x63\x58\xa0\x72\xac\ +\xfb\x0c\xbc\xd9\xf6\xfa\x58\x34\x05\xbe\x30\x49\x6d\x7a\x6e\x4f\ +\xe8\x3d\xca\x5e\x5b\xe1\xd9\x49\x2b\xbe\x84\x50\xc7\x7b\x78\x79\ +\x15\x30\xd9\x5a\xef\x30\x2b\xde\x83\x37\x1f\x30\xbf\x36\xe4\x45\ +\x68\x13\xc6\x08\x96\x77\x00\x9e\xbd\x0e\xc6\x5c\x1a\x5d\x64\x59\ +\xde\x01\x15\x1f\xfa\x58\x17\x78\xc6\xc4\x2e\x53\xfa\x3a\xde\xb0\ +\x65\xd9\xf2\x43\xbb\xe1\xd9\x01\x91\xe5\x5b\x7b\x65\x98\xf9\x34\ +\xe9\xc9\x0e\xff\xff\xb6\xc7\xf4\xd2\x43\x8b\x42\x1f\x07\xe2\xa1\ +\x21\xb0\x12\x3b\xfb\x77\x2b\xa5\x9b\xbb\xae\xe7\x8c\x33\x06\xfb\ +\x46\xc3\x15\x23\xcc\x63\x57\x8f\x1c\x82\x77\x9f\xb4\xfe\x03\x34\ +\xca\x54\x76\x91\x96\x17\x2b\xdb\x4a\xb0\x18\x92\xfc\x5c\xb5\x51\ +\x69\xd3\x0a\x95\x92\x62\xed\x12\xa3\x19\xdf\x9f\xfa\xcd\xa1\xab\ +\xc9\xce\xbb\x95\x1f\xc0\xfa\x20\x1b\xd2\xad\xd0\xf8\x6c\xb8\x70\ +\x80\xb1\xfc\xd0\x1e\x78\xff\xdf\xb1\xda\x9f\x9b\x59\x9a\x1a\x33\ +\xfc\x81\x42\x7d\xb9\x18\xc9\x42\xb0\x70\xee\xdc\x89\x40\x6a\x9a\ +\x52\x92\xf4\x53\x94\x73\xf0\xe8\x21\x35\x5a\x1c\xdc\x75\xb2\xa4\ +\xbd\xfa\x44\x78\xf9\x73\x38\xb2\x14\xae\x2c\xfb\x30\x0c\x81\x89\ +\x83\x20\xc9\x09\x87\xa0\xb3\xc8\x39\x9e\x92\xcc\x92\x0f\x59\xcc\ +\x62\x32\x70\x4f\xdc\x84\x4a\xa2\x0b\x0b\xfc\x95\x03\x6c\x9c\x41\ +\x27\xbc\x4c\x42\xf0\x48\xf8\x3b\x93\x94\x53\xf2\x71\x61\xc8\x78\ +\x63\x2b\x0a\x45\xe4\x30\x06\x18\x02\xd8\xd8\xda\x96\xa4\x5c\x20\ +\x18\x23\x66\x62\xd8\x42\x60\x3b\x4c\x49\x78\x79\x0d\x41\x77\xc0\ +\xe6\xf6\xfa\x24\x1a\xb3\x08\xc9\x93\x66\x17\x22\xde\x53\x57\x62\ +\x6d\x7d\x19\xe8\x15\xb1\x58\x49\x74\x60\x13\x45\xb4\x17\x73\xcd\ +\x63\x81\xa2\xde\x74\x29\xfb\x30\x10\xc1\x78\xd0\x3c\x5b\x62\x12\ +\x33\xb6\x90\x42\x17\x31\x83\x2d\xc1\x6e\x88\x3a\x12\x56\xcc\x62\ +\x3a\x69\xb4\x40\xbd\xe5\x24\xa7\x9d\xf2\xc3\x1a\x8a\xc9\x0a\xa5\ +\x1c\x10\x83\x11\xc4\x1f\x79\x05\xa9\x64\xd0\x1b\xc9\x50\xa0\x73\ +\xac\xdb\x4f\x12\x23\x04\xd3\x49\x65\x98\x98\x16\x7e\x27\x43\xdc\ +\x7e\x40\xd9\x9f\x06\x14\x71\x39\x2e\x2e\x43\x72\x11\x60\x62\x17\ +\x4f\x92\x60\x7e\x44\x30\x52\xe4\x60\x12\x1c\x63\x4e\xc2\x9e\x70\ +\xe9\xa1\x1a\x2e\x5a\x22\x69\x81\xa4\x3a\x92\x4c\x04\xad\x51\x29\ +\xb0\x32\xd1\x3d\x5f\x6b\xf9\x25\x0f\xf8\x04\xc9\x2b\xb4\x66\x41\ +\xa9\x13\xce\x2a\xda\x4c\x01\xd2\x43\x57\x20\xa6\xc9\x3e\x4d\x28\ +\x42\x30\x37\xce\x7d\x44\xc3\x41\xa4\x8d\x1f\x50\x92\x47\xa0\x4d\ +\x4a\x20\x11\xec\xc5\xc7\x5e\x24\x3f\xb0\x97\x55\x62\x49\xe4\x71\ +\xc6\x16\xe3\xec\x12\x80\x8f\xbc\xe8\x97\xcc\x61\x39\x2a\x72\x08\ +\x91\x31\x2e\x49\x20\x8e\xec\xe7\x33\x25\x45\x23\x65\x4d\xf2\x27\ +\x3a\xfd\x28\x89\x48\xe8\x2b\xe4\x00\xf4\xcb\x09\x91\x4b\x51\xb0\ +\x53\x27\x9d\x46\x1f\x05\xb1\x33\xf7\x46\x4e\x3a\x85\x98\x6c\xf9\ +\x77\x98\x54\xbe\x01\xce\x77\x5a\x0c\x33\xf4\x99\x62\x7c\x1a\x27\ +\xf4\x8d\x3f\xda\xbc\x2c\x04\xa2\x8f\x82\xb8\x4f\x6a\x05\xd1\xe7\ +\x77\x08\x40\x9f\x29\x06\x12\x9a\xdf\x31\x86\xec\x02\x36\x00\x7b\ +\x50\xb6\x9c\xb3\x80\x6a\x21\x6b\x18\x49\x2a\x48\x58\x5c\x1c\x4c\ +\xc8\x2a\x24\x76\x2c\x42\xf0\x38\xad\x58\xe6\x6f\x7c\x92\x1e\x2a\ +\x22\xb9\x0c\xc1\x63\x40\x3b\x8b\x6d\x25\x15\x24\x2c\x2d\xd8\xc7\ +\x5a\x8a\xd0\x49\x26\x73\x8a\x80\xbb\x85\x17\xd3\xd4\x83\xc2\xcb\ +\x31\xe0\x7d\x99\xcd\x7c\xd6\x30\x1e\x41\x90\x3d\x1a\x65\xab\xc5\ +\x54\xc2\x18\xa2\x8d\xe6\x96\x3c\x85\x41\x4e\x5e\xd6\x08\xc1\x88\ +\x60\xca\x51\xe6\xb6\x6c\x7c\x62\x16\x0f\x06\x0b\xc4\x09\x40\x9f\ +\x8c\x0a\x01\x68\xa3\x20\x25\x04\xc9\x93\xa9\x0d\x73\x44\x8e\xcd\ +\xe8\xfe\xd6\x8c\x02\xbe\x0b\x73\x97\x3e\x9b\xe5\x03\xd0\x4d\x41\ +\xb6\x38\x2d\x40\x48\x5c\x3c\x6a\xb7\x8a\xc8\xc6\x87\x08\x5b\x2f\ +\x39\x82\x58\x42\x60\xb2\xaf\x50\x1b\xd6\x89\x99\x04\x39\x96\x2a\ +\x0c\x92\x05\x84\x3e\x97\x27\xa9\x20\x96\x90\xd8\xc8\x86\x9f\x60\ +\x24\x2b\x23\xad\x5a\xb2\x70\x0d\xa5\x5c\x49\x05\xb1\x88\xc5\xf3\ +\xc1\x1c\x21\x5a\x13\x7d\xa8\x05\xb8\xb6\x46\x42\xbd\x14\xa4\x12\ +\x2b\xd0\xf7\x69\x3a\x25\xca\xfa\xc1\x73\x65\x09\x0d\xfd\x43\x25\ +\x68\xa5\x20\x25\x31\x92\x91\xcd\xf3\xf1\x46\xd0\x26\xd2\xaa\x72\ +\x28\x15\x80\xe0\x47\x57\xf8\xb0\x99\x63\x3c\x71\x68\xa5\x20\x00\ +\x48\x6c\x9e\x39\x96\x30\xce\x92\xd7\x12\x59\x6a\xa2\x7d\x74\x83\ +\x10\x61\x06\x2e\x22\x3c\x46\x3c\xfe\xe8\xa7\x20\x2e\xe6\x39\x2d\ +\x42\x50\x94\xf9\xdc\x16\x12\x44\xd8\x7a\x32\xa9\x20\xd6\x91\x2c\ +\x06\x4d\x87\x5c\x41\x5f\xe9\x61\xb0\xad\x3a\x1e\xb2\x81\xbf\x86\ +\xbc\x47\xea\x6b\x41\xd6\x4e\x41\x84\x97\x63\x48\xbc\x4e\xcb\x11\ +\x82\xc9\xb2\x0f\x61\x92\xa1\xa9\x91\x43\xf6\x25\x1b\x08\x9f\xa9\ +\xce\xa5\xef\xeb\xbd\x96\x4e\x22\xd9\x8f\xe6\xf8\x58\x47\x62\xc2\ +\x10\x23\x65\x3e\x3e\x1e\x67\x36\xdf\x08\x8e\x1f\x0b\x29\x3d\xa4\ +\x00\x5d\x81\xc7\x81\x0e\x41\x6b\xfb\x53\x44\xdd\x92\xc4\x81\xda\ +\xa1\xa5\x82\x00\xc8\xbe\xbc\x89\x64\xa0\xd3\x72\x58\x60\x1b\xf0\ +\x3d\x82\x03\x48\x6a\x03\x6d\x08\xf5\x4a\x6b\xe4\x57\xe1\xa5\x71\ +\xf8\xdb\x9c\x41\x5f\xd7\x7a\x21\x23\x71\x73\x29\xfa\x6f\xa8\x6a\ +\x00\x34\x88\xe2\x68\xd9\x38\x1c\xc1\x19\x3b\xb4\x5b\x83\x94\x52\ +\x32\xe4\xfe\x8d\xf2\x1b\x69\x16\x8e\x63\xc0\x68\x76\x93\xd0\xa3\ +\xb4\xed\xa2\xed\x14\x53\x8a\xf4\xd0\x19\x78\x17\xfb\x61\x7c\x3a\ +\xb3\x14\xb8\x4b\x78\x59\xe5\xb4\x20\xe1\xd0\x5e\x41\xe0\xcf\x45\ +\xeb\x0c\xe2\x7d\x74\x6b\xfc\xf9\x0a\x78\x44\x78\xf5\x9e\x56\xfc\ +\x29\x17\x0a\x02\x20\xb3\x70\x53\x9b\x5b\x80\x6c\xf4\x5f\x97\xf8\ +\x73\x04\x89\x17\xc1\x14\xe1\x25\x8a\xd4\xce\xce\x50\x6e\x14\xa4\ +\x14\x79\x35\x19\xa4\x72\x2f\x30\x14\xa8\xe7\xb4\x3c\x41\x28\x00\ +\x96\x00\x73\x80\x99\xc2\x1b\x32\x16\x44\x6b\xca\x9d\x82\x94\x22\ +\xb3\x70\x53\x87\x2b\x90\xdc\x08\xf4\x00\x12\x74\x4e\x57\x50\x36\ +\x96\x1c\x50\x3d\x9f\x02\x16\xe8\xba\x95\xd2\x2e\xe5\x56\x41\xfc\ +\x91\x57\x51\x85\x4a\x74\x42\x92\x85\xa0\x0b\x6a\xbb\x41\x3c\x15\ +\x66\x2b\xb0\x01\xc1\x6a\xe0\x4b\x0a\x59\xae\xab\xa1\x2b\x5a\x4e\ +\x08\x05\x09\xa4\xc4\x9a\x79\x3a\x82\x96\xf8\x68\x89\xa0\x09\x50\ +\x17\x65\xc0\x2a\xfd\x94\xe6\x9e\x4f\x41\x9d\x8b\x93\x07\x1c\x01\ +\x0e\x03\x87\x80\x3c\x24\x7f\xe0\x62\x1b\x3e\x7e\x47\xb0\x1d\xf8\ +\x99\x02\xd6\x9f\x28\xa3\x83\x15\xfe\x1f\x10\xf9\x6f\x27\x14\x10\ +\x41\x3f\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +" + +qt_resource_name = b"\ +\x00\x05\ +\x00\x6f\xa6\x53\ +\x00\x69\ +\x00\x63\x00\x6f\x00\x6e\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\x08\ +\x0a\x61\x42\x7f\ +\x00\x69\ +\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x69\x00\x63\x00\x6f\ +\x00\x08\ +\x05\xa8\x57\x87\ +\x00\x63\ +\x00\x6f\x00\x64\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x09\ +\x0b\xc7\xa9\x07\ +\x00\x73\ +\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x08\ +\x04\xd2\x54\xc7\ +\x00\x69\ +\x00\x6e\x00\x66\x00\x6f\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0e\ +\x0a\xf7\x9f\x27\ +\x00\x77\ +\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x49\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ +" + +qt_resource_struct_v1 = 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\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x03\ +\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x3a\x8b\ +\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x13\ +\x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x00\x26\x00\x01\x00\x00\x00\x01\x00\x00\x13\x8e\ +\x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\x45\x7c\ +\x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x2b\x9c\ +" + +qt_resource_struct_v2 = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x03\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x3a\x8b\ +\x00\x00\x01\x75\x39\x03\xa6\xb0\ +\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x13\ +\x00\x00\x01\x75\x39\x03\xa6\xb0\ +\x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01\x75\x39\x03\xa6\xb0\ +\x00\x00\x00\x26\x00\x01\x00\x00\x00\x01\x00\x00\x13\x8e\ +\x00\x00\x01\x75\xda\x86\xa2\xd0\ +\x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\x45\x7c\ +\x00\x00\x01\x75\x39\x03\xa6\xb0\ +\x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x2b\x9c\ +\x00\x00\x01\x75\x39\x03\xa6\xb0\ +" + +qt_version = [int(v) for v in QtCore.qVersion().split('.')] +if qt_version < [5, 8, 0]: + rcc_version = 1 + qt_resource_struct = qt_resource_struct_v1 +else: + rcc_version = 2 + qt_resource_struct = qt_resource_struct_v2 + +def qInitResources(): + QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources()