From c9f52b7223685d2e7fca925594171f94dd8c6e3b Mon Sep 17 00:00:00 2001 From: TrickyLeifa Date: Wed, 15 May 2024 00:00:17 +0200 Subject: Ported to CMake, ... * Ported the project to CMake * Android and Mac support dropped for the time being. * Tests, BASS and Discord-RPC are now options * Restructured and reformated the project. * Merged `include` and `src` * Renamed `resource` to `data` * Renamed various files * External libraries headers are no longer included in `src` * Replaced header guards with #pragma once * Multiple refactors (keywords, headers) * Added Qt6 compatibility * Removed various unused functions and headers * Reworked AOPacket * When content is passed to AOPacket, it should be ensured that the content is already decoded. * Encoding/decoding are now static methods. * Fixed various memory leaks * Removed animation code for AOImage * AOImage is always using static images * Simplified ChatLogPiece --- .clang-format | 76 +- .gitignore | 1 + Attorney_Online.pro | 79 - CMakeLists.txt | 138 +- data.qrc | 19 + data/fonts/Ace-Attorney.ttf | Bin 0 -> 15768 bytes data/logo-client.icns | Bin 0 -> 1129414 bytes data/logo-client.ico | Bin 0 -> 99678 bytes data/logo-client.png | Bin 0 -> 29302 bytes data/logo-client.rc | 1 + data/logo.iconset/icon_1024x1024.png | Bin 0 -> 391400 bytes data/logo.iconset/icon_128x128.png | Bin 0 -> 29889 bytes data/logo.iconset/icon_128x128@2x.png | Bin 0 -> 74755 bytes data/logo.iconset/icon_16x16.png | Bin 0 -> 3685 bytes data/logo.iconset/icon_16x16@2x.png | Bin 0 -> 5603 bytes data/logo.iconset/icon_256x256.png | Bin 0 -> 74755 bytes data/logo.iconset/icon_256x256@2x.png | Bin 0 -> 172975 bytes data/logo.iconset/icon_32x32.png | Bin 0 -> 5603 bytes data/logo.iconset/icon_32x32@2x.png | Bin 0 -> 11744 bytes data/logo.iconset/icon_512x512.png | Bin 0 -> 172975 bytes data/logo.iconset/icon_512x512@2x.png | Bin 0 -> 391400 bytes data/logo.iconset/icon_64x64.png | Bin 0 -> 11744 bytes data/logo.iconset/icon_64x64@2x.png | Bin 0 -> 29889 bytes data/translations/ao_de.qm | Bin 0 -> 45758 bytes data/translations/ao_de.ts | 1929 +++ data/translations/ao_en.qm | Bin 0 -> 33 bytes data/translations/ao_en.ts | 1773 +++ data/translations/ao_es.qm | Bin 0 -> 38880 bytes data/translations/ao_es.ts | 2161 ++++ data/translations/ao_it.qm | Bin 0 -> 60814 bytes data/translations/ao_it.ts | 1800 +++ data/translations/ao_jp.qm | Bin 0 -> 3735 bytes data/translations/ao_jp.ts | 1865 +++ data/translations/ao_pl.qm | Bin 0 -> 62426 bytes data/translations/ao_pl.ts | 2096 ++++ data/translations/ao_pt.qm | Bin 0 -> 38415 bytes data/translations/ao_pt.ts | 2099 ++++ data/translations/ao_ru.qm | Bin 0 -> 50149 bytes data/translations/ao_ru.ts | 2078 ++++ data/ui/direct_connect_dialog.ui | 70 + data/ui/favorite_server_dialog.ui | 141 + data/ui/lobby.ui | 706 ++ data/ui/lobby_assets/down-arrow.png | Bin 0 -> 181 bytes data/ui/lobby_assets/up-arrow.png | Bin 0 -> 181 bytes data/ui/options_dialog.ui | 1091 ++ include/CMakeLists.txt | 40 - include/aoapplication.h | 402 - include/aoblipplayer.h | 37 - include/aobutton.h | 23 - include/aocharbutton.h | 49 - include/aoclocklabel.h | 31 - include/aoemotebutton.h | 38 - include/aoemotepreview.h | 32 - include/aoevidencebutton.h | 56 - include/aoevidencedisplay.h | 37 - include/aoimage.h | 31 - include/aolayer.h | 255 - include/aomusicplayer.h | 53 - include/aopacket.h | 28 - include/aosfxplayer.h | 40 - include/aotextarea.h | 26 - include/aotextboxwidgets.h | 32 - include/aoutils.h | 15 - include/bass.h | 1227 -- include/bassmidi.h | 380 - include/bassopus.h | 64 - include/chatlogpiece.h | 37 - include/courtroom.h | 1025 -- include/datatypes.h | 136 - include/debug_functions.h | 10 - include/demoserver.h | 60 - include/discord-rpc.h | 87 - include/discord_register.h | 28 - include/discord_rich_presence.h | 39 - include/discord_rpc.h | 89 - include/eventfilters.h | 36 - include/file_functions.h | 14 - include/hardware_functions.h | 14 - include/interfaces/server_dialog.h | 21 - include/lobby.h | 107 - include/misc_functions.h | 9 - include/networkmanager.h | 76 - include/options.h | 293 - include/scrolltext.h | 47 - include/text_file_functions.h | 13 - include/widgets/add_server_dialog.h | 44 - include/widgets/aooptionsdialog.h | 160 - include/widgets/direct_connect_dialog.h | 46 - include/widgets/edit_server_dialog.h | 46 - resource/fonts/Ace-Attorney.ttf | Bin 15768 -> 0 bytes resource/logo.iconset/icon_1024x1024.png | Bin 391400 -> 0 bytes resource/logo.iconset/icon_128x128.png | Bin 29889 -> 0 bytes resource/logo.iconset/icon_128x128@2x.png | Bin 74755 -> 0 bytes resource/logo.iconset/icon_16x16.png | Bin 3685 -> 0 bytes resource/logo.iconset/icon_16x16@2x.png | Bin 5603 -> 0 bytes resource/logo.iconset/icon_256x256.png | Bin 74755 -> 0 bytes resource/logo.iconset/icon_256x256@2x.png | Bin 172975 -> 0 bytes resource/logo.iconset/icon_32x32.png | Bin 5603 -> 0 bytes resource/logo.iconset/icon_32x32@2x.png | Bin 11744 -> 0 bytes resource/logo.iconset/icon_512x512.png | Bin 172975 -> 0 bytes resource/logo.iconset/icon_512x512@2x.png | Bin 391400 -> 0 bytes resource/logo.iconset/icon_64x64.png | Bin 11744 -> 0 bytes resource/logo.iconset/icon_64x64@2x.png | Bin 29889 -> 0 bytes resource/logo_ao2.icns | Bin 1129414 -> 0 bytes resource/logo_ao2.ico | Bin 99678 -> 0 bytes resource/logo_ao2.png | Bin 29302 -> 0 bytes resource/logo_ao2.rc | 1 - resource/logo_kfo.ico | Bin 99678 -> 0 bytes resource/logo_kfo.png | Bin 22609 -> 0 bytes resource/translations/ao_de.qm | Bin 45758 -> 0 bytes resource/translations/ao_de.ts | 1929 --- resource/translations/ao_en.qm | Bin 33 -> 0 bytes resource/translations/ao_en.ts | 1773 --- resource/translations/ao_es.qm | Bin 38880 -> 0 bytes resource/translations/ao_es.ts | 2161 ---- resource/translations/ao_it.qm | Bin 60814 -> 0 bytes resource/translations/ao_it.ts | 1800 --- resource/translations/ao_jp.qm | Bin 3735 -> 0 bytes resource/translations/ao_jp.ts | 1865 --- resource/translations/ao_pl.qm | Bin 62426 -> 0 bytes resource/translations/ao_pl.ts | 2096 ---- resource/translations/ao_pt.qm | Bin 38415 -> 0 bytes resource/translations/ao_pt.ts | 2099 ---- resource/translations/ao_ru.qm | Bin 50149 -> 0 bytes resource/translations/ao_ru.ts | 2078 ---- resource/ui/direct_connect_dialog.ui | 70 - resource/ui/favorite_server_dialog.ui | 141 - resource/ui/lobby.ui | 706 -- resource/ui/lobby_assets/down-arrow.png | Bin 181 -> 0 bytes resource/ui/lobby_assets/up-arrow.png | Bin 181 -> 0 bytes resource/ui/options_dialog.ui | 1091 -- resources.qrc | 19 - shared-release/qrc_resources.cpp | 17660 ---------------------------- src/CMakeLists.txt | 39 - src/aoapplication.cpp | 77 +- src/aoapplication.h | 369 + src/aoblipplayer.cpp | 26 +- src/aoblipplayer.h | 31 + src/aobutton.cpp | 40 +- src/aobutton.h | 22 + src/aocharbutton.cpp | 44 +- src/aocharbutton.h | 40 + src/aoclocklabel.cpp | 31 +- src/aoclocklabel.h | 30 + src/aoemotebutton.cpp | 56 +- src/aoemotebutton.h | 36 + src/aoemotepreview.cpp | 8 +- src/aoemotepreview.h | 31 + src/aoevidencebutton.cpp | 59 +- src/aoevidencebutton.h | 48 + src/aoevidencedisplay.cpp | 76 +- src/aoevidencedisplay.h | 37 + src/aoimage.cpp | 59 +- src/aoimage.h | 27 + src/aolayer.cpp | 366 +- src/aolayer.h | 267 + src/aomusicplayer.cpp | 191 +- src/aomusicplayer.h | 44 + src/aopacket.cpp | 56 +- src/aopacket.h | 22 + src/aosfxplayer.cpp | 66 +- src/aosfxplayer.h | 38 + src/aotextarea.cpp | 63 +- src/aotextarea.h | 23 + src/aotextboxwidgets.cpp | 38 +- src/aotextboxwidgets.h | 32 + src/aoutils.cpp | 19 +- src/aoutils.h | 12 + src/charselect.cpp | 196 +- src/chatlogpiece.cpp | 31 +- src/chatlogpiece.h | 26 + src/courtroom.cpp | 3451 +++--- src/courtroom.h | 964 ++ src/datatypes.h | 147 + src/debug_functions.cpp | 21 +- src/debug_functions.h | 6 + src/demoserver.cpp | 773 +- src/demoserver.h | 60 + src/discord_rich_presence.cpp | 29 +- src/discord_rich_presence.h | 34 + src/emotes.cpp | 167 +- src/eventfilters.cpp | 21 + src/eventfilters.h | 18 + src/evidence.cpp | 403 +- src/file_functions.cpp | 14 +- src/file_functions.h | 11 + src/gui_utils.h | 3 + src/hardware_functions.cpp | 81 +- src/hardware_functions.h | 5 + src/interfaces/server_dialog.h | 20 + src/lobby.cpp | 338 +- src/lobby.h | 112 + src/main.cpp | 36 +- src/misc_functions.cpp | 9 - src/networkmanager.cpp | 146 +- src/networkmanager.h | 72 + src/options.cpp | 169 +- src/options.h | 285 + src/packet_distribution.cpp | 556 +- src/path_functions.cpp | 291 +- src/scrolltext.cpp | 60 +- src/scrolltext.h | 46 + src/text_file_functions.cpp | 415 +- src/widgets/add_server_dialog.cpp | 44 +- src/widgets/add_server_dialog.h | 40 + src/widgets/aooptionsdialog.cpp | 562 +- src/widgets/aooptionsdialog.h | 153 + src/widgets/direct_connect_dialog.cpp | 75 +- src/widgets/direct_connect_dialog.h | 43 + src/widgets/edit_server_dialog.cpp | 108 +- src/widgets/edit_server_dialog.h | 42 + test/CMakeLists.txt | 22 +- test/test_aopacket.cpp | 18 +- test/test_apng.cpp | 24 +- test/test_bass.cpp | 19 +- test/test_caseloading.cpp | 8 +- 216 files changed, 26487 insertions(+), 45055 deletions(-) delete mode 100644 Attorney_Online.pro create mode 100644 data.qrc create mode 100644 data/fonts/Ace-Attorney.ttf create mode 100644 data/logo-client.icns create mode 100644 data/logo-client.ico create mode 100644 data/logo-client.png create mode 100644 data/logo-client.rc create mode 100644 data/logo.iconset/icon_1024x1024.png create mode 100644 data/logo.iconset/icon_128x128.png create mode 100644 data/logo.iconset/icon_128x128@2x.png create mode 100644 data/logo.iconset/icon_16x16.png create mode 100644 data/logo.iconset/icon_16x16@2x.png create mode 100644 data/logo.iconset/icon_256x256.png create mode 100644 data/logo.iconset/icon_256x256@2x.png create mode 100644 data/logo.iconset/icon_32x32.png create mode 100644 data/logo.iconset/icon_32x32@2x.png create mode 100644 data/logo.iconset/icon_512x512.png create mode 100644 data/logo.iconset/icon_512x512@2x.png create mode 100644 data/logo.iconset/icon_64x64.png create mode 100644 data/logo.iconset/icon_64x64@2x.png create mode 100644 data/translations/ao_de.qm create mode 100644 data/translations/ao_de.ts create mode 100644 data/translations/ao_en.qm create mode 100644 data/translations/ao_en.ts create mode 100644 data/translations/ao_es.qm create mode 100644 data/translations/ao_es.ts create mode 100644 data/translations/ao_it.qm create mode 100644 data/translations/ao_it.ts create mode 100644 data/translations/ao_jp.qm create mode 100644 data/translations/ao_jp.ts create mode 100644 data/translations/ao_pl.qm create mode 100644 data/translations/ao_pl.ts create mode 100644 data/translations/ao_pt.qm create mode 100644 data/translations/ao_pt.ts create mode 100644 data/translations/ao_ru.qm create mode 100644 data/translations/ao_ru.ts create mode 100644 data/ui/direct_connect_dialog.ui create mode 100644 data/ui/favorite_server_dialog.ui create mode 100644 data/ui/lobby.ui create mode 100644 data/ui/lobby_assets/down-arrow.png create mode 100644 data/ui/lobby_assets/up-arrow.png create mode 100644 data/ui/options_dialog.ui delete mode 100644 include/CMakeLists.txt delete mode 100644 include/aoapplication.h delete mode 100644 include/aoblipplayer.h delete mode 100644 include/aobutton.h delete mode 100644 include/aocharbutton.h delete mode 100644 include/aoclocklabel.h delete mode 100644 include/aoemotebutton.h delete mode 100644 include/aoemotepreview.h delete mode 100644 include/aoevidencebutton.h delete mode 100644 include/aoevidencedisplay.h delete mode 100644 include/aoimage.h delete mode 100644 include/aolayer.h delete mode 100644 include/aomusicplayer.h delete mode 100644 include/aopacket.h delete mode 100644 include/aosfxplayer.h delete mode 100644 include/aotextarea.h delete mode 100644 include/aotextboxwidgets.h delete mode 100644 include/aoutils.h delete mode 100644 include/bass.h delete mode 100644 include/bassmidi.h delete mode 100644 include/bassopus.h delete mode 100644 include/chatlogpiece.h delete mode 100644 include/courtroom.h delete mode 100644 include/datatypes.h delete mode 100644 include/debug_functions.h delete mode 100644 include/demoserver.h delete mode 100644 include/discord-rpc.h delete mode 100644 include/discord_register.h delete mode 100644 include/discord_rich_presence.h delete mode 100644 include/discord_rpc.h delete mode 100644 include/eventfilters.h delete mode 100644 include/file_functions.h delete mode 100644 include/hardware_functions.h delete mode 100644 include/interfaces/server_dialog.h delete mode 100644 include/lobby.h delete mode 100644 include/misc_functions.h delete mode 100644 include/networkmanager.h delete mode 100644 include/options.h delete mode 100644 include/scrolltext.h delete mode 100644 include/text_file_functions.h delete mode 100644 include/widgets/add_server_dialog.h delete mode 100644 include/widgets/aooptionsdialog.h delete mode 100644 include/widgets/direct_connect_dialog.h delete mode 100644 include/widgets/edit_server_dialog.h delete mode 100644 resource/fonts/Ace-Attorney.ttf delete mode 100644 resource/logo.iconset/icon_1024x1024.png delete mode 100644 resource/logo.iconset/icon_128x128.png delete mode 100644 resource/logo.iconset/icon_128x128@2x.png delete mode 100644 resource/logo.iconset/icon_16x16.png delete mode 100644 resource/logo.iconset/icon_16x16@2x.png delete mode 100644 resource/logo.iconset/icon_256x256.png delete mode 100644 resource/logo.iconset/icon_256x256@2x.png delete mode 100644 resource/logo.iconset/icon_32x32.png delete mode 100644 resource/logo.iconset/icon_32x32@2x.png delete mode 100644 resource/logo.iconset/icon_512x512.png delete mode 100644 resource/logo.iconset/icon_512x512@2x.png delete mode 100644 resource/logo.iconset/icon_64x64.png delete mode 100644 resource/logo.iconset/icon_64x64@2x.png delete mode 100644 resource/logo_ao2.icns delete mode 100644 resource/logo_ao2.ico delete mode 100644 resource/logo_ao2.png delete mode 100644 resource/logo_ao2.rc delete mode 100644 resource/logo_kfo.ico delete mode 100644 resource/logo_kfo.png delete mode 100644 resource/translations/ao_de.qm delete mode 100644 resource/translations/ao_de.ts delete mode 100644 resource/translations/ao_en.qm delete mode 100644 resource/translations/ao_en.ts delete mode 100644 resource/translations/ao_es.qm delete mode 100644 resource/translations/ao_es.ts delete mode 100644 resource/translations/ao_it.qm delete mode 100644 resource/translations/ao_it.ts delete mode 100644 resource/translations/ao_jp.qm delete mode 100644 resource/translations/ao_jp.ts delete mode 100644 resource/translations/ao_pl.qm delete mode 100644 resource/translations/ao_pl.ts delete mode 100644 resource/translations/ao_pt.qm delete mode 100644 resource/translations/ao_pt.ts delete mode 100644 resource/translations/ao_ru.qm delete mode 100644 resource/translations/ao_ru.ts delete mode 100644 resource/ui/direct_connect_dialog.ui delete mode 100644 resource/ui/favorite_server_dialog.ui delete mode 100644 resource/ui/lobby.ui delete mode 100644 resource/ui/lobby_assets/down-arrow.png delete mode 100644 resource/ui/lobby_assets/up-arrow.png delete mode 100644 resource/ui/options_dialog.ui delete mode 100644 resources.qrc delete mode 100644 shared-release/qrc_resources.cpp delete mode 100644 src/CMakeLists.txt create mode 100644 src/aoapplication.h create mode 100644 src/aoblipplayer.h create mode 100644 src/aobutton.h create mode 100644 src/aocharbutton.h create mode 100644 src/aoclocklabel.h create mode 100644 src/aoemotebutton.h create mode 100644 src/aoemotepreview.h create mode 100644 src/aoevidencebutton.h create mode 100644 src/aoevidencedisplay.h create mode 100644 src/aoimage.h create mode 100644 src/aolayer.h create mode 100644 src/aomusicplayer.h create mode 100644 src/aopacket.h create mode 100644 src/aosfxplayer.h create mode 100644 src/aotextarea.h create mode 100644 src/aotextboxwidgets.h create mode 100644 src/aoutils.h create mode 100644 src/chatlogpiece.h create mode 100644 src/courtroom.h create mode 100644 src/datatypes.h create mode 100644 src/debug_functions.h create mode 100644 src/demoserver.h create mode 100644 src/discord_rich_presence.h create mode 100644 src/eventfilters.cpp create mode 100644 src/eventfilters.h create mode 100644 src/file_functions.h create mode 100644 src/gui_utils.h create mode 100644 src/hardware_functions.h create mode 100644 src/interfaces/server_dialog.h create mode 100644 src/lobby.h delete mode 100644 src/misc_functions.cpp create mode 100644 src/networkmanager.h create mode 100644 src/options.h create mode 100644 src/scrolltext.h create mode 100644 src/widgets/add_server_dialog.h create mode 100644 src/widgets/aooptionsdialog.h create mode 100644 src/widgets/direct_connect_dialog.h create mode 100644 src/widgets/edit_server_dialog.h diff --git a/.clang-format b/.clang-format index ff61b452..673ad8ee 100644 --- a/.clang-format +++ b/.clang-format @@ -1,5 +1,73 @@ +Language: Cpp BasedOnStyle: LLVM -BreakBeforeBraces: Stroustrup -AllowShortIfStatementsOnASingleLine: true -NamespaceIndentation: All - + +AccessModifierOffset: -2 +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlines: Left +AlignTrailingComments: true +AllowShortBlocksOnASingleLine: Empty +AllowShortEnumsOnASingleLine: false +AllowShortFunctionsOnASingleLine: InlineOnly +AllowShortIfStatementsOnASingleLine : Never +AllowShortLambdasOnASingleLine: Inline +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterReturnType: None +AlwaysBreakTemplateDeclarations: Yes +BinPackArguments: false +BinPackParameters: false +BreakBeforeConceptDeclarations: Always +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeComma +ColumnLimit: 486 +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: true +FixNamespaceComments: true +IncludeBlocks: Preserve +IndentCaseBlocks: false +IndentCaseLabels: false +IndentRequiresClause: false +IndentWidth: 2 +InsertTrailingCommas: Wrapped +KeepEmptyLinesAtTheStartOfBlocks: false +LambdaBodyIndentation: OuterScope +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +PackConstructorInitializers: Never +PointerAlignment: Right +QualifierAlignment: Left +RequiresExpressionIndentation: OuterScope +ShortNamespaceLines: 0 +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyParentheses: false +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInContainerLiterals: false +SpacesInParentheses: false +SpacesInSquareBrackets: false + +BreakBeforeBraces: Custom +BraceWrapping: + AfterCaseLabel: true + AfterClass: true + AfterControlStatement: true + AfterEnum: true + AfterFunction: true + AfterNamespace: true + AfterStruct: true + AfterUnion: true + AfterExternBlock: true + BeforeCatch: true + BeforeElse: true + IndentBraces: false + SplitEmptyFunction: false + SplitEmptyRecord: false + SplitEmptyNamespace: false \ No newline at end of file diff --git a/.gitignore b/.gitignore index 121cf972..98b8f68c 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ object_script* /attorney_online_*_plugin_import.cpp server/__pycache__ discord/ +*.TMP diff --git a/Attorney_Online.pro b/Attorney_Online.pro deleted file mode 100644 index 73576df1..00000000 --- a/Attorney_Online.pro +++ /dev/null @@ -1,79 +0,0 @@ -QT += core gui widgets network websockets uitools - -TARGET = Attorney_Online -TEMPLATE = app - -VERSION = 2.10.1.0 - -INCLUDEPATH += $$PWD/include -DESTDIR = $$PWD/bin -OBJECTS_DIR = $$PWD/build -MOC_DIR = $$PWD/build - -SOURCES += $$files($$PWD/src/*.cpp, true) -HEADERS += $$files($$PWD/include/*.h, true) - -FORMS += $$files($$PWD/resource/ui/*.ui) - -LIBS += -L$$PWD/lib -QMAKE_LFLAGS += -Wl,-rpath,"'\$$ORIGIN/lib'" -QMAKE_CXXFLAGS += "-fno-sized-deallocation" - -# Uncomment for verbose network logging -# DEFINES += DEBUG_NETWORK - -# Uncomment for verbose animation logging -# DEFINES += DEBUG_MOVIE - -# Uncomment for building with debug symbols -# CONFIG += debug - -# Uncomment to enable Discord Rich Presence -# DEFINES += DISCORD - -contains(DEFINES, DISCORD) { - win32:LIBS += -ldiscord-rpc - linux:!android:LIBS += -ldiscord-rpc - mac:LIBS += -ldiscord-rpc -} - -# As of 2.8.5, BASS and BASSOPUS are required for all platforms. Qt Multimedia -# is no longer an option due to outdated code and lack of versatility. -# Download at un4seen.com and place the DLLs in the "lib" and "bin" folders. -DEFINES += BASSAUDIO -LIBS += -lbass -LIBS += -lbassopus -LIBS += -lbassmidi - -macx:LIBS += -framework CoreFoundation -framework Foundation -framework CoreServices - -win32:LIBS += -ladvapi32 - -CONFIG += c++17 - -RESOURCES += resources.qrc - -TRANSLATIONS = resource/translations/ao_en.ts \ - resource/translations/ao_jp.ts \ - resource/translations/ao_de.ts \ - resource/translations/ao_ru.ts \ - resource/translations/ao_es.ts \ - resource/translations/ao_pt.ts \ - resource/translations/ao_pl.ts \ - resource/translations/ao_it.ts \ - ressource/ui/ - -win32:RC_ICONS = resource/logo_ao2.ico -macx:ICON = resource/logo_ao2.icns - -android:QT += androidextras - -android:DISTFILES += \ - android/AndroidManifest.xml \ - android/gradle.properties \ - android/gradle/wrapper/gradle-wrapper.jar \ - android/gradle/wrapper/gradle-wrapper.properties \ - android/gradlew \ - android/gradlew.bat - -ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android diff --git a/CMakeLists.txt b/CMakeLists.txt index fad3de08..d6194a91 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,6 @@ -# Configure cmake -cmake_minimum_required(VERSION 3.1.0) -cmake_policy(SET CMP0076 NEW) # silence warning +cmake_minimum_required(VERSION 3.7.0) -project(AttorneyOnline) +project(AttorneyOnline VERSION 2.11.0.0 LANGUAGES CXX C) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -11,39 +9,119 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -if(CMAKE_VERSION VERSION_LESS "3.7.0") - set(CMAKE_INCLUDE_CURRENT_DIR ON) -endif() +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +option(AO_BUILD_TESTS "Build test programs" OFF) +option(AO_ENABLE_BASS "Enable BASS audio library" ON) +option(AO_ENABLE_DISCORD_RPC "Enable Discord Rich Presence" ON) + +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Network Widgets Concurrent WebSockets UiTools) + +add_executable(Attorney_Online + src/aoapplication.cpp + src/aoapplication.h + src/aoblipplayer.cpp + src/aoblipplayer.h + src/aobutton.cpp + src/aobutton.h + src/aocharbutton.cpp + src/aocharbutton.h + src/aoclocklabel.cpp + src/aoclocklabel.h + src/aoemotebutton.cpp + src/aoemotebutton.h + src/aoemotepreview.cpp + src/aoemotepreview.h + src/aoevidencebutton.cpp + src/aoevidencebutton.h + src/aoevidencedisplay.cpp + src/aoevidencedisplay.h + src/aoimage.cpp + src/aoimage.h + src/aolayer.cpp + src/aolayer.h + src/aomusicplayer.cpp + src/aomusicplayer.h + src/aopacket.cpp + src/aopacket.h + src/aosfxplayer.cpp + src/aosfxplayer.h + src/aotextarea.cpp + src/aotextarea.h + src/aotextboxwidgets.cpp + src/aotextboxwidgets.h + src/aoutils.cpp + src/aoutils.h + src/charselect.cpp + src/chatlogpiece.cpp + src/chatlogpiece.h + src/courtroom.cpp + src/courtroom.h + src/datatypes.h + src/debug_functions.cpp + src/debug_functions.h + src/demoserver.cpp + src/demoserver.h + src/discord_rich_presence.cpp + src/discord_rich_presence.h + src/emotes.cpp + src/eventfilters.h + src/evidence.cpp + src/file_functions.cpp + src/file_functions.h + src/hardware_functions.cpp + src/hardware_functions.h + src/interfaces/server_dialog.h + src/lobby.cpp + src/lobby.h + src/main.cpp + src/networkmanager.cpp + src/networkmanager.h + src/options.cpp + src/options.h + src/packet_distribution.cpp + src/path_functions.cpp + src/scrolltext.cpp + src/scrolltext.h + src/text_file_functions.cpp + src/gui_utils.h + src/widgets/add_server_dialog.cpp + src/widgets/add_server_dialog.h + src/widgets/aooptionsdialog.cpp + src/widgets/aooptionsdialog.h + src/widgets/direct_connect_dialog.cpp + src/widgets/direct_connect_dialog.h + src/widgets/edit_server_dialog.cpp + src/widgets/edit_server_dialog.h + data.qrc + src/eventfilters.cpp +) -# AO -add_executable(Attorney_Online resources.qrc) +set_target_properties(Attorney_Online PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin") -# WIN32 if(WIN32) - if(CMAKE_BUILD_TYPE STREQUAL "Release") - set_property(TARGET Attorney_Online PROPERTY WIN32_EXECUTABLE true) - set(APP_ICON_RESOURCE_WINDOWS "${CMAKE_CURRENT_SOURCE_DIR}/resource/logo_ao2.rc") - target_sources(Attorney_Online PRIVATE ${APP_ICON_RESOURCE_WINDOWS}) - endif() + if(CMAKE_BUILD_TYPE STREQUAL "Release") + set_property(TARGET Attorney_Online PROPERTY WIN32_EXECUTABLE true) + set(APP_ICON_RESOURCE_WINDOWS "${CMAKE_CURRENT_SOURCE_DIR}/data/logo-client.rc") + target_sources(Attorney_Online PRIVATE ${APP_ICON_RESOURCE_WINDOWS}) + endif() endif() -# Target Include -target_include_directories(Attorney_Online PRIVATE include) - -# Target Lib -find_package(Qt5 COMPONENTS Core Gui Network Widgets Concurrent WebSockets REQUIRED) +target_include_directories(Attorney_Online PRIVATE src lib) target_link_directories(Attorney_Online PRIVATE lib) -target_link_libraries(Attorney_Online PRIVATE Qt5::Core Qt5::Gui Qt5::Network Qt5::Widgets Qt5::Concurrent - Qt5::WebSockets bass bassmidi bassopus discord-rpc) -target_compile_definitions(Attorney_Online PRIVATE DISCORD) +target_link_libraries(Attorney_Online PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Concurrent Qt${QT_VERSION_MAJOR}::WebSockets Qt${QT_VERSION_MAJOR}::UiTools) + +if(AO_ENABLE_BASS) + target_compile_definitions(Attorney_Online PRIVATE AO_ENABLE_BASS) + target_link_libraries(Attorney_Online PRIVATE bass bassmidi bassopus) +endif() -if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - target_link_libraries(Attorney_Online PRIVATE "-framework CoreFoundation" "-framework Foundation" "-framework CoreServices") +if(AO_ENABLE_DISCORD_RPC) + target_compile_definitions(Attorney_Online PRIVATE AO_ENABLE_DISCORD_RPC) + target_link_libraries(Attorney_Online PRIVATE discord-rpc) endif() -# Subdirectories -if (AO_BUILD_TESTS) - add_subdirectory(test) +if(AO_BUILD_TESTS) + add_subdirectory(test) endif() -add_subdirectory(src) -add_subdirectory(include) diff --git a/data.qrc b/data.qrc new file mode 100644 index 00000000..419fab41 --- /dev/null +++ b/data.qrc @@ -0,0 +1,19 @@ + + + data/fonts/Ace-Attorney.ttf + data/logo-client.png + data/translations/ao_de.qm + data/translations/ao_en.qm + data/translations/ao_es.qm + data/translations/ao_jp.qm + data/translations/ao_pl.qm + data/translations/ao_pt.qm + data/translations/ao_ru.qm + data/ui/options_dialog.ui + data/ui/favorite_server_dialog.ui + data/ui/direct_connect_dialog.ui + data/ui/lobby.ui + data/ui/lobby_assets/down-arrow.png + data/ui/lobby_assets/up-arrow.png + + diff --git a/data/fonts/Ace-Attorney.ttf b/data/fonts/Ace-Attorney.ttf new file mode 100644 index 00000000..702049f9 Binary files /dev/null and b/data/fonts/Ace-Attorney.ttf differ diff --git a/data/logo-client.icns b/data/logo-client.icns new file mode 100644 index 00000000..fb2456c8 Binary files /dev/null and b/data/logo-client.icns differ diff --git a/data/logo-client.ico b/data/logo-client.ico new file mode 100644 index 00000000..b40e7866 Binary files /dev/null and b/data/logo-client.ico differ diff --git a/data/logo-client.png b/data/logo-client.png new file mode 100644 index 00000000..f53fe30c Binary files /dev/null and b/data/logo-client.png differ diff --git a/data/logo-client.rc b/data/logo-client.rc new file mode 100644 index 00000000..3e53ddde --- /dev/null +++ b/data/logo-client.rc @@ -0,0 +1 @@ +IDI_ICON1 ICON "logo-client.ico" diff --git a/data/logo.iconset/icon_1024x1024.png b/data/logo.iconset/icon_1024x1024.png new file mode 100644 index 00000000..97c96a4a Binary files /dev/null and b/data/logo.iconset/icon_1024x1024.png differ diff --git a/data/logo.iconset/icon_128x128.png b/data/logo.iconset/icon_128x128.png new file mode 100644 index 00000000..b08cc076 Binary files /dev/null and b/data/logo.iconset/icon_128x128.png differ diff --git a/data/logo.iconset/icon_128x128@2x.png b/data/logo.iconset/icon_128x128@2x.png new file mode 100644 index 00000000..355253d3 Binary files /dev/null and b/data/logo.iconset/icon_128x128@2x.png differ diff --git a/data/logo.iconset/icon_16x16.png b/data/logo.iconset/icon_16x16.png new file mode 100644 index 00000000..e0e088dc Binary files /dev/null and b/data/logo.iconset/icon_16x16.png differ diff --git a/data/logo.iconset/icon_16x16@2x.png b/data/logo.iconset/icon_16x16@2x.png new file mode 100644 index 00000000..01bab863 Binary files /dev/null and b/data/logo.iconset/icon_16x16@2x.png differ diff --git a/data/logo.iconset/icon_256x256.png b/data/logo.iconset/icon_256x256.png new file mode 100644 index 00000000..355253d3 Binary files /dev/null and b/data/logo.iconset/icon_256x256.png differ diff --git a/data/logo.iconset/icon_256x256@2x.png b/data/logo.iconset/icon_256x256@2x.png new file mode 100644 index 00000000..4191c2f8 Binary files /dev/null and b/data/logo.iconset/icon_256x256@2x.png differ diff --git a/data/logo.iconset/icon_32x32.png b/data/logo.iconset/icon_32x32.png new file mode 100644 index 00000000..01bab863 Binary files /dev/null and b/data/logo.iconset/icon_32x32.png differ diff --git a/data/logo.iconset/icon_32x32@2x.png b/data/logo.iconset/icon_32x32@2x.png new file mode 100644 index 00000000..c4e28ad2 Binary files /dev/null and b/data/logo.iconset/icon_32x32@2x.png differ diff --git a/data/logo.iconset/icon_512x512.png b/data/logo.iconset/icon_512x512.png new file mode 100644 index 00000000..4191c2f8 Binary files /dev/null and b/data/logo.iconset/icon_512x512.png differ diff --git a/data/logo.iconset/icon_512x512@2x.png b/data/logo.iconset/icon_512x512@2x.png new file mode 100644 index 00000000..97c96a4a Binary files /dev/null and b/data/logo.iconset/icon_512x512@2x.png differ diff --git a/data/logo.iconset/icon_64x64.png b/data/logo.iconset/icon_64x64.png new file mode 100644 index 00000000..c4e28ad2 Binary files /dev/null and b/data/logo.iconset/icon_64x64.png differ diff --git a/data/logo.iconset/icon_64x64@2x.png b/data/logo.iconset/icon_64x64@2x.png new file mode 100644 index 00000000..b08cc076 Binary files /dev/null and b/data/logo.iconset/icon_64x64@2x.png differ diff --git a/data/translations/ao_de.qm b/data/translations/ao_de.qm new file mode 100644 index 00000000..0c5e8fd9 Binary files /dev/null and b/data/translations/ao_de.qm differ diff --git a/data/translations/ao_de.ts b/data/translations/ao_de.ts new file mode 100644 index 00000000..cc476bad --- /dev/null +++ b/data/translations/ao_de.ts @@ -0,0 +1,1929 @@ + + + + + AOApplication + + + Disconnected from server. + Vom Server getrennt. + + + + Loading + Laden + + + + Loading music: +%1/%2 + Lade Musik: +%1/%2 + + + + Loading chars: +%1/%2 + Lade Charaktere: +%1/%2 + + + + Attorney Online %1 + Attorney Online %1 + + + + [Global log] + [Globaler Log] + + + + You have been kicked from the server. +Reason: %1 + Du wurdest von diesem Server geschmissen. +Grund: %1 + + + + You have been banned from the server. +Reason: %1 + Du wurdest von diesem Server verbannt. +Grund: %1 + + + + You are banned on this server. +Reason: %1 + Du bist von diesem Server verbannt. +Grund: %1 + + + + Demo playback + Demo Wiedergabe + + + + Play back demos you have previously recorded + Spielt Demo Dateien welche vorher aufgenommen wurden + + + + AOCaseAnnouncerDialog + + + Case Announcer + Fallansager + + + + Case title: + Fallname: + + + + Defense needed + Verteidiger benötigt + + + + Prosecution needed + Kläger benötigt + + + + Judge needed + Richter benötigt + + + + Jurors needed + Jury benötigt + + + + Stenographer needed + Stenograph benötigt + + + + AOOptionsDialog + + + + Log timestamp format: + + Log Zeitstempel Format: + + + + + Pixel + Pixel + + + + Smooth + Glatt + + + + Couldn't get the privacy policy. + Datenschutz-Bestimmungen konnten nicht abgerufen werden. + + + + Select a base folder + Wähle ein base Ordner + + + + Getting privacy policy... + Lade Datenschutz-Bestimmungen... + + + + %1 (default) + %1 (Standard) + + + + Courtroom + + + Password + Passwort + + + + Spectator + Zuschauer + + + + + Search + Suche + + + + Passworded + Gesperrt + + + + Taken + Benutzt + + + + + Could not find character (char.ini) for %1 + Charakter (char.ini) nicht gefunden für %1 + + + + Generating chars: +%1/%2 + Generiere Charaktere: +%1/%2 + + + + Showname + Anzeigename + + + + Name + Name + + + + Pre + Vor + + + + Flip + Spiegeln + + + + Guard + Wache + + + + + Casing + Fall + + + + Shownames + Anzeigenamen + + + + Immediate + Keine Unterbrechung + + + + Music + Musik + + + + Sfx + Sfx + + + + Blips + Blips + + + + + Server + Server + + + + Change character + Charakter ändern + + + + Reload theme + Aussehen neu laden + + + + Call mod + Moderator rufen + + + + Settings + Einstellungen + + + + A/M + A/M + + + + Preanim + Voranimation + + + + Back to Lobby + Zurück zur Lobby + + + + You were granted the Disable Modcalls button. + Du hast nun den "Modcall deaktivieren" Knopf. + + + + You have been banned. + Du wurdest verbannt. + + + + + None + Keine + + + + Message in-character + Nachricht als Charakter + + + + Message out-of-character + Nachricht out-of-character + + + + Additive + Hinzufügend + + + + To front + Vorne + + + + To behind + Hinten + + + + Log goes down + Log geht nach unten + + + + Log goes up + Log geht nach oben + + + + Select a character you wish to pair with. + Wähle einen Charakter mit dem du gepaart sein möchtest. + + + + Change the order of appearance for your character. + Ändere die Reihenfolge in der die Charaktere erscheinen. + + + + Display the list of characters to pair with. + Zeigt die Liste der paarbaren Charaktere. + + + + Oops, you're muted! + Ohje, du bist stumm! + + + + Set your character's emote to play on your next message. + Setzt den Ausdruck für die nächste Nachricht. + + + + Set your character's supplementary background. + Setzt die Position des Charakters. + + + + Change the horizontal percentage offset of your character's position from the center of the screen. + Ändert den Hoizontalen Abstand relativ zur Mitte. + + + + Change the vertical percentage offset of your character's position from the center of the screen. + Ändert den vertikalen Abstand relativ zur Mitte. + + + + Reset your character's supplementary background to its default. + Setzt den Zusatzhintergrund deines Charakters zurück. + + + + Set an 'iniswap', or an alternative character folder to refer to from your current character. +Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini + Setz einen 'iniswap', oder einen anderen Charakterordner von deinem aktuellen Charakter. +Bearbeiten durch tippen und Enter drücken, [X] zum entfernen. Das wird in base/iniswaps.ini gespeichert. + + + + Remove the currently selected iniswap from the list and return to the original character folder. + Entfernt den aktuellen iniswap von der Liste und stellt den originalen Ordner wieder her. + + + + Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). +Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini + Wähle einen Soundeffekt der bei der nächsten 'Preanim' gespielt wird. Lasse dies auf Standard um den emote-Sound zu verwenden. +Bearbeiten durch tippen und Enter drücken, [X] zum entfernen. Das wird in base/characters/<charname>/soundlist.ini gespeichert. + + + + Remove the currently selected sound effect. + Entfernt den aktuell ausgewählten Soundeffekt. + + + + Choose an effect to play on your next spoken message. +The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by +char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. + Wähle einen Effekt für die nächste Nachricht. +Die Effekte sind definiert in theme/effects/effects.ini. Dein Charakter kann eigene Effekte in der +char.ini [Options] Kategorie, effects = 'miscname' haben welcher dann misc/<miscname>/effects.ini liest. + + + + Hold It! + Moment mal! + + + + + + When this is turned on, your next in-character message will be a shout! + Wenn dies an ist, wird die Nächste Nachricht ein Zuruf! + + + + Objection! + Einspruch! + + + + Take That! + Nimm das! + + + + Toggle between server chat and global AO2 chat. + Wechselt zwischen Serverchat und AO2 Chat. + + + + + + + This will display the animation in the viewport as soon as it is pressed. + Dies zeigt die Animation im Spielfeld sobald es angeklickt wird. + + + + Guilty! + Schuldig! + + + + Bring up the Character Select Screen and change your character. + Zeige die Charakterauswahl und ändere deinen Charakter. + + + + Refresh the theme and update all of the ui elements to match. + Aktualisiert das Design und alle UI Elemente. + + + + Request the attention of the current server's moderator. + Fordere einen Moderator an. + + + + Allows you to change various aspects of the client. + Lässt dich verschiedene Dinge des Clients anpassen. + + + + An interface to help you announce a case (you have to be a CM first to be able to announce cases) + Ein Menü um einen Fall anzukündigen (du musst dafür erst CM sein) + + + + Switch between Areas and Music lists + Wechsel zwischen Areal- und Musikliste + + + + Play a single-shot animation as defined by the emote when checked. + Zeigt eine Animation vor dem Sprechen. + + + + If preanim is checked, display the input text immediately as the animation plays concurrently. + Starte sofort zu sprechen, ohne auf das Ende der Voranimation zu warten. + + + + Mirror your character's emotes when checked. + Spiegelt die Emotes deines Charakters. + + + + Add text to your last spoken message when checked. + Füge Text zu deiner letzten Nachricht hinzu. + + + + Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. + Ignoriere Modcalls und spiel keinen Ton ab. + + + + Lets you receive case alerts when enabled. +(You can set your preferences in the Settings!) + Lässt dich Fallalarme erhalten. +(Du kannst dies in den Einstellungen anpassen!) + + + + Display customized shownames for all users when checked. + Zeigt selbst einstellbare Namen für alle. + + + + Custom Shout! + Eigener Zwischenruf! + + + + This will display the custom character-defined animation in the viewport as soon as it is pressed. +To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect + Dies zeigt des Charakters eigenen Zwischenruf. +Um einen zu haben muss im Charakterordner eine custom.[webp/apng/gif/png] und ein custom.[wav/ogg/opus] Soundeffekt sein + + + + Play realization sound and animation in the viewport on the next spoken message when checked. + Spiele den Realisierung Sound und Animation mit der nächsten Nachricht. + + + + Shake the screen on next spoken message when checked. + Schüttelt den Bildschirm bei der nächsten Nachricht. + + + + Display the list of character folders you wish to mute. + Zeigt die Charakterliste um einen stumm zu schalten. + + + + + Increase the health bar. + Erhöhe die Gesundheit. + + + + + Decrease the health bar. + Verringere die Gesundheit. + + + + Change the text color of the spoken message. +You can also select a part of your currently typed message and use the dropdown to change its color! + Ändert die Textfarbe. +Du kannst auch nur einen Teil der Nachricht auswählen und dessen Farbe ändern! + + + + Return back to the server list. + Zurück zur Serverliste. + + + + Become a spectator. You won't be able to interact with the in-character screen. + Werde ein Zuschauer. Es ist dir nicht möglich mit dem Spielfeld zu interagieren. + + + + + + + CLIENT + CLIENT + + + + Login unsuccessful. + Login erfolgreich. + + + + You were logged out. + Du wurdest ausgeloggt. + + + + HOLD IT! + MOMENT MAL! + + + + OBJECTION! + EINSPRUCH! + + + + TAKE THAT! + NIMM DAS! + + + + CUSTOM OBJECTION! + SPEZIALRUF! + + + + + + + + shouts + Zwischenruf + + + + + + + has presented evidence + hat Beweis präsentiert + + + + + + has stopped the music + hat die Musik angehalten + + + + [LOADING] %1 + [LADEN] %1 + + + + Debug + Debug + + + + + has played a song + spielte ein Lied + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. + Du hattest keinen 'base/cases' Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird. + + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1 + Du musst einen Dateinamen angeben (ohne .ini). Stelle sicher das er im 'base/cases' Ordner ist und das er korrekt formatiert ist. +Verfügbare Fälle: %1 + + + + Case made by %1. + Fall von %1. + + + + Navigate to %1 for the CM doc. + Gehe zu %1 für das CM Dokument. + + + + + UNKNOWN + UNBEKANNT + + + + Your case "%1" was loaded! + Dein Fall "%1" wurde geladen! + + + + Too many arguments to load a case! You only need one filename, without extension. + Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung. + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. + Du hattest keinen 'base/cases' Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird. + + + + You need to give a filename to save (extension not needed) and the courtroom status! + Du musst einen Dateinamen (ohne Erweiterung) angebenn, sowie den Gebietsstatus! + + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status! + Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung sowie den Gebietsstatus! + + + + Succesfully saved, edit doc and cmdoc link on the ini! + Erfolgreich gespeichert! + + + + Stop Current Song + Lied stoppen + + + + Play Random Song + Zufälliges Lied + + + + Expand All Categories + Alle Kategorien erweitern + + + + Collapse All Categories + Alle Kategorien verstecken + + + + Fade Out Previous + Vorheriges ausblenden + + + + Fade In + Einblenden + + + + Synchronize + Synchronisieren + + + + Default + Standard + + + + Reason: + Grund: + + + + Call Moderator + Moderator rufen + + + + + Error + Fehler + + + + You must provide a reason. + Du musst einen Grund angeben. + + + + The message is too long. + Die Nachricht ist zu lang. + + + + Choose.. + Wähle.. + + + + Present this piece of evidence to everyone on your next spoken message + Präsentiere dieses Beweisstück allen in der nächsten Nachricht + + + + Save evidence to an .ini file. + Speichere Beweise in einer .ini Datei. + + + + Load evidence from an .ini file. + Lade Beweise aus einer .ini Datei. + + + + Destroy this piece of evidence + Zerstöre dieses Beweisstück + + + + Close the evidence display/editing overlay. +You will be prompted if there's any unsaved changes. + Schließe das Beweisfenster. +Du wirst gefragt wenn es ungespeicherte Änderungen gibt. + + + + Save any changes made to this piece of evidence and send them to server. + Speichert alle Änderungen an diesem Beweisstück und schickt sie zum Server. + + + + Click to edit. Press [X] to update your changes. + Klick zum editieren. Drücke [X] zum speichern deiner Änderungen. + + + + Bring up the Evidence screen. + Zeigt die Beweisliste. + + + + Switch evidence to private inventory. + Wechselt zum eigenen Inventar. + + + + Switch evidence to global inventory. + Wechselt zum globalen Inventar. + + + + + Transfer evidence to private inventory. + Übertrage Beweisstück zum eigenen Inventar. + + + + + Transfer evidence to global inventory. + Übertrage Beweisstück zum globalen Inventar. + + + + The piece of evidence you've been editing has changed. + Das Beweisstück das du bearbeitet hast hat sich verändert. + + + + Do you wish to keep your changes? + Möchtest du deine Änderungen behalten? + + + + Name: %1 +Image: %2 +Description: +%3 + Name: %1 +Bild: %2 +Beschreibung: +%3 + + + + Images (*.png) + Bilder (*.png) + + + + + + Click to edit... + Klicken zum bearbeiten... + + + + Add new evidence... + Neues Beweisstück... + + + + Evidence has been modified. + Beweise wurden verändert. + + + + Do you want to save your changes? + Möchtest du deine Änderungen speichen? + + + + Current evidence is global. Click to switch to private. + Beweise sind global. Klicken um zu eigenen zu wechseln. + + + + Current evidence is private. Click to switch to global. + Beweise sind die eigenen. Klicken um zu global zu wechseln. + + + + "%1" has been transferred. + "%1" wurde übertragen. + + + + Save Inventory + Inventar speichen + + + + + Ini Files (*.ini) + Ini Dateien (*.ini) + + + + Open Inventory + Inventar öffnen + + + + DemoServer + + + + Load Demo + Demo laden + + + + + Demo Files (*.demo) + Demos (*.demo) + + + + + Demo file loaded. Send /play or > in OOC to begin playback. + Demo geladen. Sende /play oder > in OOC um Wiedergabe zu beginnen. + + + + Resuming playback. + Wiedergabe fortsetzen. + + + + Pausing playback. + Wiedergabe pausieren. + + + + Setting max_wait to + Setze max_wait zu + + + + + milliseconds. + millisekunden. + + + + Not a valid integer! + Kein valider Integer! + + + + Current max_wait is + Aktueller max_wait ist + + + + Current demo file reloaded. Send /play or > in OOC to begin playback. + Demo Datei neugeladen. Sende /play or > in OOC um die Wiedergabe zu beginnen. + + + + min_wait is deprecated. Use the client Settings for minimum wait instead! + min_wait ist veraltet. Benutze die Client Einstellung Standzeit! + + + + Setting debug mode to %1 + Setze Debug Modus zu %1 + + + + Valid values are 1 or 0! + Gültige Werte sind 1 oder 0! + + + + Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. + + + + + Available commands: +load, reload, play, pause, max_wait, debug, help + Verfügbate Kommandos: +load, reload, play, pause, max_wait, debug, help + + + + Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. + Ende der Demo Datei erreicht. Sende /play oder > um die Wiedergabe neuzustarten oder /load um eine neue Datei zu öffnen. + + + + Lobby + + + Attorney Online %1 + Attorney Online %1 + + + + Search + Suche + + + + It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? + Dein Client ist nicht korrekt eingerichtet. +Hast du ALLES von tiny.cc/getao heruntergeladen und entpackt, auch den großen 'base' Ordner? + + + + Version: %1 + Version: %1 + + + + Settings + Einstellungen + + + + Allows you to change various aspects of the client. + Erlaubt es verschiedene Aspekte des Clients zu ändern. + + + + Loading + Laden + + + + Cancel + Abbrechen + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving, TrickyLeifa, Salanto<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>Wiso, dyviacat (2.10 release); CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2022 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 + + + + + Remove + Entfernen + + + + Couldn't get the message of the day. + Fehler beim abrufen der Nachricht des Tages. + + + + Version: %1 (!) + Version: %1 (!) + + + + New version available: %1 + Neue Version verfügbar: %1 + + + + Yes + Ja + + + + No + Nein + + + + About + Über + + + + Online: %1/%2 + Online: %1/%2 + + + + + + Offline + Offline + + + + NetworkManager + + + No description provided. + Keine Beschreibung erhalten. + + + + QDialogButtonBox + + + + OK + OK + + + + QObject + + + [MISSING] Streaming disabled. + [FEHLT] Streaming deaktiviert. + + + + None + Keine + + + + [MISSING] %1 + [FEHLT] %1 + + + + [STREAM] %1 + [STREAM] %1 + + + + chatlogpiece + + + + + UNKNOWN + UNBEKANNT + + + + debug_functions + + + Error: %1 + Fehler: %1 + + + + Error + Fehler + + + + Notice + Hinweis + + + + optionsdialogue + + + Settings + Einstellungen + + + + Gameplay + Spiel + + + + Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. + Stoppt die Musik wenn eine Kategorie doppelt geklickt wird. Wenn dies deaktiviert ist, benutze die Rechte Maustaste und das Kontextmenü um die Musik anzuhalten. + + + + Stop Music w/ Category: + Musik durch eine Kategorie stoppen: + + + + Sets the default scaling method, if there is not one already defined specifically for the character. + + + + + Scaling: + Skalierung: + + + + Turn this on to allow characters to define their own custom chat box designs. + Charaktere können ihre eigenen Chatboxen verwenden. + + + + Custom Chatboxes: + Eigene Chatboxen: + + + + Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Erlaubt Bildeffekte. Deaktiviere dies falls du Bedenken wegen Photosensitivität hast. + + + + Allow Effects: + Effekte erlauben: + + + + Open the theme folder of the currently selected theme. + Öffnet den Ordner des aktuell ausgewählten Theme. + + + + Open Theme Folder + Öffne Theme Ordner + + + + Overrides the base URL to retrieve server information from. + Überschreibt die Standard URL für den Abruf von Server Informationen. + + + + Alternate Server List: + Alternative Serverliste: + + + + Instant Objection: + Zwischenrufe sofort: + + + + + + ms + ms + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the Lobby for the changes to take effect, such as by joining a server and leaving it. + + + + + Theme: + Theme: + + + + - Keep current setting - + + + + + - Default + + + + + en - English + + + + + de - Deutsch + + + + + es - Español + + + + + pt - Português + + + + + pl - Polskie + + + + + jp - 日本語 + + + + + ru - Русский + + + + + Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. + Sendet schüttel, Blitze und Geräusche aus der char.ini Datei über das Netzwerk. Funkioniert nur wenn der Server dies unterstützt. + + + + Network Frame Effects: + Netzwerk Frame-Effekte: + + + + Chat Rate Limit: + Chat Rate Limit: + + + + If ticked, themes will be allowed to have animated elements. + Aktiviert animierte Theme Elemente. + + + + Animated Theme: + Animiertes Theme: + + + + Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. + Zeit (in Milisekunden) für jeden Buchstaben. + + + + Text crawl: + Kriechender Text: + + + + Refresh the theme and update all of the ui elements to match. + Aktualisiert das Design und alle UI Elemente. + + + + Reload Theme + Aussehen neu laden + + + + Your showname will be automatically set to this value when you join a server. + Dein Anzeigename wird automatisch gesetzt wenn du einem Server beitritts. + + + + Default showname: + Standard Anzeigename: + + + + Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). + An zeigt 'Sticker' an, kleine Bilder wie Avatare. + + + + Stickers: + Sticker: + + + + Turn this on to prevent preanimation checkbox from clearing after playing the emote. + Aktiviere dies damit das Kontrollkästchen für die Voranimation nicht zurückspringt nachdem sie abgespielt wurde. + + + + Sticky Preanims: + Klebende Voranimation: + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + Standardwert für die Anzeigename Box, welche den In-Charakter Namen bestimmt. + + + + Custom shownames: + Eigener Anzeigename: + + + + Turn this on to prevent the effects dropdown from clearing the effect after playing it. + Aktiviere dies damit die Effektauswahl nicht zurückspringt nachdem er abgespielt wurde. + + + + Sticky Effects: + Klebende Effekt: + + + + Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. + Minimale Zeit (in Milisekunden) die eine IC Nachricht auf dem Bildschirm bleibt bevore die nächste kommt, wie eine Art 'Warteschlange'. 0 deaktiviert das. + + + + Text Stay Time: + Standzeit: + + + + Sets the language if you don't want to use your system language. + Setzte die Sprache falls du nicht die Systemsprache verwenden möchtest. + + + + Language: + Sprache: + + + + If the SFX dropdown has an SFX selected, send the custom SFX alongside the message even if Preanim is OFF. + + + + + Always Send SFX: + SFX immer senden: + + + + Turn this on to prevent the sound dropdown from clearing the sound after playing it. + Aktiviere dies damit die Geräuschauswahl nicht zurückspringt nachdem es abgespielt wurde. + + + + Sticky Sounds: + Klebende Geräuschauswahl: + + + + Your OOC name will be automatically set to this value when you join a server. + Dein OOC Name wird automatisch auf dies gesetzt. + + + + Default username: + Standard Benutzername: + + + + Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Erlaubt schütteln des Bildschirms. Deaktiviere dies falls du Bedenken wegen Photosensitivität hast. + + + + Allow Screenshake: + Schütteln erlauben: + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + Erlaubt anderen auf Discord zu sehen auf welchem Server du spielst, welchen Charakter du spielst und wie lange. + + + + Discord: + Discord: + + + + Use the markup colors in the server IC chatlog. + Verwendet Farbe im IC Log so wie im Bild. + + + + Colors in IC Log: + Farben im IC Log: + + + + Sets a 'subtheme', which will stack on top of the current theme and replace anything it can. Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. + + + + + Subtheme: + Untertheme: + + + + If ticked, Evidence needs a double-click to view rather than a single click. + + + + + Evidence Double Click: + Doppelklick für Beweise: + + + + Whether or not to resume playing animations from where they left off. Turning off might reduce lag. + Spielt Animationen wieder dort ab wo sie aufgehört haben. Ausschalten kann bei Lag helfen. + + + + Continuous Playback: + Durchgehendes Abspielen: + + + + Callwords + Alarmwörter + + + + <html><head/><body><p>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br/><br/>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</p></body></html> + + + + + Audio + Audio + + + + Audio device: + Audiogerät: + + + + Sets the music's default volume. + Setzt die Musiklautstärke. + + + + Music: + Musik: + + + + + + + % + + + + + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. + Setzt die Lautstärke der Soundeffekte wie Einsprüche und die Geräusche der Charaktere. + + + + SFX: + SFX: + + + + Sets the volume of the blips, the talking sound effects. + Setzt die Lautstärke der Blips, das ist das Geräusch das die Charaktere beim Reden machen. + + + + Blips: + Blips: + + + + How much of the volume to suppress when client is not in focus. + + + + + Suppress Audio: + + + + + Sets the delay between playing the blip sounds. + Setzt die Pause zwischen einzelnen Blips. + + + + Blip rate: + Bliprate: + + + + Play a blip sound \"once per every X symbols\", where X is the blip rate. 0 plays a blip sound only once. + + + + + If true, the game will play a blip sound even when a space is 'being said'. + Wenn angehakt wird das Spiel auch bei einem Leerzeichen einen Blip machen. + + + + Blank blips: + Leere Blips: + + + + If true, the game will allow looping sound effects to play on preanimations. + Wenn aktiviert, werden wiederholende Soundeffekte bei den Voranimationen erlaubt. + + + + Enable Looping SFX: + Wiederholende Soundeffekte: + + + + If true, AO2 will ask the server to stop music when you use 'Objection!' + + + + + Kill Music On Objection: + Stoppe Musik bei Einspruch: + + + + If true, AO2 will not play any streamed audio and show that streaming is disabled. + + + + + Disable Music Streaming: + + + + + + Casing + + + + + Pretty self-explanatory. + Eigentlich selbsterklärend. + + + + This server does not support case alerts. + Dieser Server unterstützt Fallalarme nicht. + + + + If checked, you will get alerts about case announcements. + Wenn angehakt wirst du benachrichtigt wenn ein Fall angekündigt wird. + + + + If checked, you will get alerts about case announcements if a defense spot is open. + Wenn angehakt wirst du benachrichtigt wenn ein Verteidiger benötigt wird. + + + + Defense + + + + + If checked, you will get alerts about case announcements if a juror spot is open. + Wenn angehakt wirst du benachrichtigt wenn eine Jury benötigt wird. + + + + Juror + + + + + If checked, you will get alerts about case announcements if a stenographer spot is open. + Wenn angehakt wirst du benachrichtigt wenn ein Stenograph benötigt wird. + + + + Stenographer + + + + + If checked, you will appear amongst the potential CMs on the server. + Wenn angehakt wirst du als potentielle CM angezeigt. + + + + Case Master + + + + + If you're a CM, enter what cases you are willing to host. + Wenn du CM bist, gib ein welche Fälle du spielen möchtest. + + + + Hosting cases: + Fallleitung: + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. + Wenn angehakt wirst du benachrichtigt wenn ein Kläger benötigt wird. + + + + Prosecution + + + + + If checked, you will get alerts about case announcements if the judge spot is open. + Wenn angehakt wirst du benachrichtigt wenn ein Richter benötigt wird. + + + + Judge + + + + + Assets + + + + + <html><head/><body><p>Add or remove base folders for use by assets.</p><p><br/>Base folders on the bottom are prioritized over those above them.</p></body></html> + + + + + ↓ + + + + + Remove + + + + + ↑ + + + + + Add... + + + + + Clears the lookup cache for assets. +Use this when you have added an asset that takes precedence over another existing asset. + + + + + Clear Cache + + + + + Logging + + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + Wenn angehakt werden neue Nachrichten unten erscheinen (wie beim OOC). Das traditionelle (AO1) Verhalten wäre nicht angehakt. + + + + Log goes downwards: + Verlauf geht nach unten: + + + + The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. + Die menge an Zeilen die das IC Log behält bevor ältere Nachrichten gelöscht werden. 0 bedeutet unendlich. + + + + Log length: + Länge: + + + + entries + + + + + If ticked, new messages will appear separated, with the message coming on the next line after the name. +When unticked, it displays it as 'name: message'. + + + + + Log newline: + Absätze protokollieren: + + + + The distance in pixels between each entry in the IC log. +Default: 0. + + + + + Log margin: + Protokollabstand: + + + + px + + + + + If ticked, log will contain a timestamp in UTC before the name. + Das Protokoll enthält vor dem Namen einen Zeitstempel in UTC. + + + + Log timestamp: + Zeitstempel: + + + + Log timestamp format: + + + + + + h:mm:ss AP + + + + + hh:mm:ss + + + + + h:mm AP + + + + + hh:mm + + + + + If ticked, log will show IC actions such as shouting and presenting evidence. + Protokolliert Charakteraktionen wie Zwischenrufe und Beweisstücke. + + + + Log IC actions: + Aktionen protokollieren: + + + + If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). + Wenn angehakt werden die Nachrichten sofort im Protokoll angezeigt, ansonsten wartet es auf den Chat. + + + + Desynchronize IC Logs: + Protokoll desynchronisieren: + + + + Text logs of gameplay will be automatically written in the /logs folder. + + + + + Log to Text Files: + + + + + Gameplay will be automatically recorded as demos in the /logs folder. + + + + + Log to Demo Files: + + + + + Privacy + + + + + Do not include me in public player counts + + + + diff --git a/data/translations/ao_en.qm b/data/translations/ao_en.qm new file mode 100644 index 00000000..937ea3e7 Binary files /dev/null and b/data/translations/ao_en.qm differ diff --git a/data/translations/ao_en.ts b/data/translations/ao_en.ts new file mode 100644 index 00000000..1d0b217f --- /dev/null +++ b/data/translations/ao_en.ts @@ -0,0 +1,1773 @@ + + + + + AOApplication + + + Disconnected from server. + + + + + Loading + + + + + Loading music: +%1/%2 + + + + + Loading chars: +%1/%2 + + + + + Attorney Online %1 + + + + + [Global log] + + + + + You have been kicked from the server. +Reason: %1 + + + + + You have been banned from the server. +Reason: %1 + + + + + You are banned on this server. +Reason: %1 + + + + + Demo playback + + + + + Play back demos you have previously recorded + + + + + AOCaseAnnouncerDialog + + + Case Announcer + + + + + Case title: + + + + + Defense needed + + + + + Prosecution needed + + + + + Judge needed + + + + + Jurors needed + + + + + Stenographer needed + + + + + AOOptionsDialog + + + Settings + + + + + Gameplay + + + + + Theme: + + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. + + + + + Log goes downwards: + + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + + + + + Log length: + + + + + Default username: + + + + + Your OOC name will be automatically set to this value when you join a server. + + + + + Custom shownames: + + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + + + + + Discord: + + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + + + + + Language: + + + + + Sets the language if you don't want to use your system language. + + + + + Callwords + + + + + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> + + + + + Audio + + + + + Audio device: + + + + + Sets the audio device for all sounds. + + + + + Music: + + + + + SFX: + + + + + Blips: + + + + + Sets the volume of the blips, the talking sound effects. + + + + + Blip rate: + + + + + Sets the delay between playing the blip sounds. + + + + + Play a blip sound "once per every X symbols", where X is the blip rate. 0 plays a blip sound only once. + + + + + Blank blips: + + + + + If true, the game will play a blip sound even when a space is 'being said'. + + + + + Enable Looping SFX: + + + + + If true, the game will allow looping sound effects to play on preanimations. + + + + + Kill Music On Objection: + + + + + - Keep current setting + + + + + Subtheme: + + + + + Sets a 'subtheme', which will stack on top of the current theme and replace anything it can.Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. + + + + + Reload Theme + + + + + Refresh the theme and update all of the ui elements to match. + + + + + Animated Theme: + + + + + If ticked, themes will be allowed to have animated elements. + + + + + The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. + + + + + Log newline: + + + + + If ticked, new messages will appear separated, with the message coming on the next line after the name. When unticked, it displays it as 'name: message'. + + + + + Log margin: + + + + + The distance in pixels between each entry in the IC log. Default: 0. + + + + + Log timestamp: + + + + + If ticked, log will contain a timestamp in UTC before the name. + + + + + + Log timestamp format: + + + + + + Log IC actions: + + + + + If ticked, log will show IC actions such as shouting and presenting evidence. + + + + + Text Stay Time: + + + + + Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. + + + + + Desynchronize IC Logs: + + + + + If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). + + + + + Instant Objection: + + + + + If Text Stay Time is more than 0, instant objection will skip queued messages instead of waiting to catch up. + + + + + Text crawl: + + + + + Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. + + + + + Chat Rate Limit: + + + + + Minimum amount of time (in miliseconds) that must pass before the next Enter key press will send your IC message. + + + + + Default showname: + + + + + Your showname will be automatically set to this value when you join a server. + + + + + Alternate Server List: + + + + + Overrides the base URL to retrieve server information from. + + + + + Scaling: + + + + + Sets the default scaling method, if there is not one already defined specifically for the character. + + + + + Pixel + + + + + Smooth + + + + + Allow Screenshake: + + + + + Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. + + + + + Allow Effects: + + + + + Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. + + + + + Network Frame Effects: + + + + + Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. + + + + + Colors in IC Log: + + + + + Use the markup colors in the server IC chatlog. + + + + + Sticky Sounds: + + + + + Turn this on to prevent the sound dropdown from clearing the sound after playing it. + + + + + Sticky Effects: + + + + + Turn this on to prevent the effects dropdown from clearing the effect after playing it. + + + + + Sticky Preanims: + + + + + Turn this on to prevent preanimation checkbox from clearing after playing the emote. + + + + + Custom Chatboxes: + + + + + Turn this on to allow characters to define their own custom chat box designs. + + + + + Stickers: + + + + + Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). + + + + + Continuous Playback: + + + + + Whether or not to resume playing animations from where they left off. Turning off might reduce lag. + + + + + Stop Music w/ Category: + + + + + Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. + + + + + Log to Text Files: + + + + + Text logs of gameplay will be automatically written in the /logs folder. + + + + + Log to Demo Files: + + + + + Gameplay will be automatically recorded as demos in the /logs folder. + + + + + Sets the music's default volume. + + + + + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. + + + + + Add or remove base folders for use by assets. Base folders on the bottom are prioritized over those above them. + + + + + Couldn't get the privacy policy. + + + + + If true, AO2 will ask the server to stop music when you use 'Objection!' + + + + + Casing + + + + + This server supports case alerts. + + + + + This server does not support case alerts. + + + + + Pretty self-explanatory. + + + + + Casing: + + + + + If checked, you will get alerts about case announcements. + + + + + Defense: + + + + + If checked, you will get alerts about case announcements if a defense spot is open. + + + + + Prosecution: + + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. + + + + + Judge: + + + + + If checked, you will get alerts about case announcements if the judge spot is open. + + + + + Juror: + + + + + If checked, you will get alerts about case announcements if a juror spot is open. + + + + + Stenographer: + + + + + If checked, you will get alerts about case announcements if a stenographer spot is open. + + + + + CM: + + + + + If checked, you will appear amongst the potential CMs on the server. + + + + + Hosting cases: + + + + + If you're a CM, enter what cases you are willing to host. + + + + + Assets + + + + + Add… + + + + + Select a base folder + + + + + Remove + + + + + ↑ + + + + + ↓ + + + + + Clear Cache + + + + + Clears the lookup cache for assets. Use this when you have added an asset that takes precedence over another existing asset. + + + + + Privacy + + + + + Do not include me in public player counts + + + + + Getting privacy policy... + + + + + %1 (default) + + + + + Courtroom + + + Password + + + + + Spectator + + + + + + Search + + + + + Passworded + + + + + Taken + + + + + Could not find character (char.ini) for %1 + + + + + Generating chars: +%1/%2 + + + + + Showname + + + + + Message + + + + + Name + + + + + Pre + + + + + Flip + + + + + + Casing + + + + + Shownames + + + + + Immediate + + + + + % x offset + + + + + % y offset + + + + + Change the horizontal percentage offset of your character's position from the center of the screen. + + + + + Change the vertical percentage offset of your character's position from the center of the screen. + + + + + Set an 'iniswap', or an alternative character folder to refer to from your current character. +Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini + + + + + You were granted the Disable Modcalls button. + + + + + [LOADING] %1 + + + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1 + + + + + Case made by %1. + + + + + Navigate to %1 for the CM doc. + + + + + Your case "%1" was loaded! + + + + + + Server + + + + + Back to Lobby + + + + + Music + + + + + Sfx + + + + + Blips + + + + + Change character + + + + + Reload theme + + + + + Call mod + + + + + Settings + + + + + A/M + + + + + Preanim + + + + + You have been banned. + + + + + + None + + + + + Guard + + + + + Additive + + + + + To front + + + + + To behind + + + + + Log goes down + + + + + Log goes up + + + + + Select a character you wish to pair with. + + + + + Change the order of appearance for your character. + + + + + Display the list of characters to pair with. + + + + + Oops, you're muted! + + + + + Set your character's emote to play on your next message. + + + + + Set your character's supplementary background. + + + + + Reset your character's supplementary background to its default. + + + + + Remove the currently selected iniswap from the list and return to the original character folder. + + + + + Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). +Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini + + + + + Remove the currently selected sound effect. + + + + + Choose an effect to play on your next spoken message. +The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by +char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. + + + + + Hold It! + + + + + + + When this is turned on, your next in-character message will be a shout! + + + + + Objection! + + + + + Take That! + + + + + Toggle between server chat and global AO2 chat. + + + + + + + + This will display the animation in the viewport as soon as it is pressed. + + + + + Guilty! + + + + + Bring up the Character Select Screen and change your character. + + + + + Refresh the theme and update all of the ui elements to match. + + + + + Request the attention of the current server's moderator. + + + + + Allows you to change various aspects of the client. + + + + + An interface to help you announce a case (you have to be a CM first to be able to announce cases) + + + + + Switch between Areas and Music lists + + + + + Play a single-shot animation as defined by the emote when checked. + + + + + If preanim is checked, display the input text immediately as the animation plays concurrently. + + + + + Mirror your character's emotes when checked. + + + + + Add text to your last spoken message when checked. + + + + + Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. + + + + + Lets you receive case alerts when enabled. +(You can set your preferences in the Settings!) + + + + + Display customized shownames for all users when checked. + + + + + Custom Shout! + + + + + This will display the custom character-defined animation in the viewport as soon as it is pressed. +To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect + + + + + Play realization sound and animation in the viewport on the next spoken message when checked. + + + + + Shake the screen on next spoken message when checked. + + + + + Display the list of character folders you wish to mute. + + + + + + Increase the health bar. + + + + + + Decrease the health bar. + + + + + Change the text color of the spoken message. +You can also select a part of your currently typed message and use the dropdown to change its color! + + + + + Return back to the server list. + + + + + Become a spectator. You won't be able to interact with the in-character screen. + + + + + + + + CLIENT + + + + + Login unsuccessful. + + + + + You were logged out. + + + + + HOLD IT! + + + + + OBJECTION! + + + + + TAKE THAT! + + + + + CUSTOM OBJECTION! + + + + + + + + shouts + + + + + + + has presented evidence + + + + + + + has stopped the music + + + + + Debug + + + + + + has played a song + + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. + + + + + Too many arguments to load a case! You only need one filename, without extension. + + + + + + + + UNKNOWN + + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. + + + + + You need to give a filename to save (extension not needed) and the courtroom status! + + + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status! + + + + + Succesfully saved, edit doc and cmdoc link on the ini! + + + + + Stop Current Song + + + + + Play Random Song + + + + + Expand All Categories + + + + + Collapse All Categories + + + + + Fade Out Previous + + + + + Fade In + + + + + Synchronize + + + + + Default + + + + + Reason: + + + + + Call Moderator + + + + + + Error + + + + + You must provide a reason. + + + + + The message is too long. + + + + + Present this piece of evidence to everyone on your next spoken message + + + + + Save evidence to an .ini file. + + + + + Load evidence from an .ini file. + + + + + Destroy this piece of evidence + + + + + Choose.. + + + + + Close the evidence display/editing overlay. +You will be prompted if there's any unsaved changes. + + + + + Save any changes made to this piece of evidence and send them to server. + + + + + Click to edit. Press [X] to update your changes. + + + + + Bring up the Evidence screen. + + + + + Switch evidence to private inventory. + + + + + Switch evidence to global inventory. + + + + + + Transfer evidence to private inventory. + + + + + + Transfer evidence to global inventory. + + + + + The piece of evidence you've been editing has changed. + + + + + Do you wish to keep your changes? + + + + + Name: %1 +Image: %2 +Description: +%3 + + + + + Images (*.png) + + + + + + + Click to edit... + + + + + Add new evidence... + + + + + Evidence has been modified. + + + + + Do you want to save your changes? + + + + + Current evidence is global. Click to switch to private. + + + + + Current evidence is private. Click to switch to global. + + + + + "%1" has been transferred. + + + + + Save Inventory + + + + + + Ini Files (*.ini) + + + + + Open Inventory + + + + + DemoServer + + + + Load Demo + + + + + + Demo Files (*.demo) + + + + + + Demo file loaded. Send /play or > in OOC to begin playback. + + + + + Resuming playback. + + + + + Pausing playback. + + + + + Setting max_wait to + + + + + + milliseconds. + + + + + Not a valid integer! + + + + + Current max_wait is + + + + + Current demo file reloaded. Send /play or > in OOC to begin playback. + + + + + min_wait is deprecated. Use the client Settings for minimum wait instead! + + + + + Setting debug mode to %1 + + + + + Valid values are 1 or 0! + + + + + Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. + + + + + Available commands: +load, reload, play, pause, max_wait, debug, help + + + + + Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. + + + + + Lobby + + + Attorney Online %1 + + + + + Search + + + + + It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? + + + + + Version: %1 + + + + + Settings + + + + + Allows you to change various aspects of the client. + + + + + Loading + + + + + Cancel + + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 + + + + + Yes + + + + + No + + + + + About + + + + + Couldn't get the message of the day. + + + + + Version: %1 (!) + + + + + New version available: %1 + + + + + Online: %1/%2 + + + + + + Offline + + + + + NetworkManager + + + No description provided. + + + + + QDialogButtonBox + + + + OK + + + + + QObject + + + None + + + + + [MISSING] %1 + + + + + [STREAM] %1 + + + + + chatlogpiece + + + + + UNKNOWN + + + + + debug_functions + + + Error: %1 + + + + + Error + + + + + Notice + + + + diff --git a/data/translations/ao_es.qm b/data/translations/ao_es.qm new file mode 100644 index 00000000..1e06f030 Binary files /dev/null and b/data/translations/ao_es.qm differ diff --git a/data/translations/ao_es.ts b/data/translations/ao_es.ts new file mode 100644 index 00000000..b329653f --- /dev/null +++ b/data/translations/ao_es.ts @@ -0,0 +1,2161 @@ + + + + + AOApplication + + + Disconnected from server. + Desconectado del servidor. + + + Error connecting to master server. Will try again in %1 seconds. + Error al conectarse a la lista de servidores. Se intentará nuevamente en %1 segundos. + + + There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again. + I translated master servers as "lista de servidores" because literally nobody will understand if i make the literal translation "servidor maestro". And in the end a master server is just a list of servers. Also removed the part about having multiple master servers, i just don't think the average user will understand this even if i do a good translation. + Hubo un error al obtener la lista de servidores. Verifique su conexión a Internet y firewall, y vuelva a intentarlo. + + + Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update. + ¡Versión desactualizada! Su versión: %1 +Ingrese a aceattorneyonline.com para actualizar. + + + You have been exiled from AO. +Have a nice day. + Has sido exiliado de AO. +Que tengas un buen día. + + + + Loading + Cargando + + + Loading evidence: +%1/%2 + Cargando evidencia: +%1/%2 + + + + Loading music: +%1/%2 + Cargando música: +%1/%2 + + + + Loading chars: +%1/%2 + Cargando personajes: +%1/%2 + + + + Attorney Online %1 + Attorney Online %1 + + + + [Global log] + + + + + You have been kicked from the server. +Reason: %1 + Has sido expulsado del servidor. +Razón: %1 + + + + You have been banned from the server. +Reason: %1 + Has sido bloqueado de este servidor. +Razón: %1 + + + + You are banned on this server. +Reason: %1 + Has sido bloqueado en este servidor. +Razón: %1 + + + You have been kicked from the server. +Reason: + Has sido expulsado del servidor. +Razón: + + + You are banned on this server. +Reason: + Has sido bloqueado en este servidor. +Razón: + + + + Demo playback + + + + + Play back demos you have previously recorded + + + + + AOCaseAnnouncerDialog + + + Case Announcer + Anunciar caso + + + + Case title: + Título del caso: + + + + Defense needed + Se necesita abogado + + + + Prosecution needed + Se necesita fiscal + + + + Judge needed + Se necesita juez + + + + Jurors needed + Se necesita jurado + + + + Stenographer needed + Se necesita taquígrafo + + + Witness needed + Se necesita testigo + + + + AOOptionsDialog + + + Settings + Ajustes + + + + Gameplay + Jugabilidad + + + + Theme: + Tema visual: + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. + Establece el tema visual utilizado en el juego. Si el nuevo tema también cambia el aspecto del lobby, deberá volver a cargar el lobby para que los cambios surtan efecto, como unirse a un servidor y volver al lobby. + + + + Subtheme: + + + + + Sets a 'subtheme', which will stack on top of the current theme and replace anything it can.Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. + + + + + Reload Theme + + + + + Refresh the theme and update all of the ui elements to match. + Actualiza el tema y todos los elementos de la interfaz de usuario para que coincidan. + + + + Animated Theme: + + + + + If ticked, themes will be allowed to have animated elements. + + + + + Log goes downwards: + Invertir historial IC: + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + Si está marcado, los nuevos mensajes aparecerán en la parte inferior (como el chat OOC). + + + + Log length: + Limite del historial: + + + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. + La cantidad de mensajes que mantendrá el historial del chat IC antes de eliminar mensajes más antiguos. 0 significa 'infinito'. + + + + The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. + + + + + Log newline: + Nueva línea en log: + + + + If ticked, new messages will appear separated, with the message coming on the next line after the name. When unticked, it displays it as 'name: message'. + Si es marcado, los mensajes nuevos aparecerán separados, y el mensaje aparecerá en la siguiente línea después del nombre. Cuando está desmarcado, lo muestra como 'nombre: mensaje'. + + + + Log margin: + Margen en log: + + + + The distance in pixels between each entry in the IC log. Default: 0. + La distancia en píxeles entre cada entrada en el registro de IC. Predeterminado: 0. + + + + Log timestamp: + Marca de tiempo en log: + + + + If ticked, log will contain a timestamp in UTC before the name. + Si está marcado, el registro contendrá una marca de tiempo en UTC antes del nombre. + + + + + Log timestamp format: + + + + + + Log IC actions: + + + + + If ticked, log will show IC actions such as shouting and presenting evidence. + + + + + Text Stay Time: + + + + + Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. + + + + + Desynchronize IC Logs: + + + + + If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). + + + + + Instant Objection: + + + + + If Text Stay Time is more than 0, instant objection will skip queued messages instead of waiting to catch up. + + + + + Text crawl: + + + + + Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. + + + + + Chat Rate Limit: + + + + + Minimum amount of time (in miliseconds) that must pass before the next Enter key press will send your IC message. + + + + + Default username: + Usuario predeterminado: + + + + Your OOC name will be automatically set to this value when you join a server. + Su nombre OOC se establecerá automáticamente a este cuando se una a un servidor. + + + + Custom shownames: + Mostrar nombres: + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + Activa la casilla 'Mostrar nombres' de forma predeterminada en el juego, que a su vez determina si el cliente debe mostrar nombres personalizados en los personajes. + + + + Default showname: + + + + + Your showname will be automatically set to this value when you join a server. + + + + + Alternate Server List: + + + + + Overrides the base URL to retrieve server information from. + + + + + Add or remove base folders for use by assets. Base folders on the bottom are prioritized over those above them. + + + + + Couldn't get the privacy policy. + + + + Backup MS: + Master SV de respaldo: + + + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. + Si la lista de servidores predeterminada falla, el juego probará la dirección proporcionada aquí. + + + + Discord: + Discord: + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + Permite a otros en Discord ver en qué servidor estás, qué personaje juegas y cuánto tiempo has estado jugando. + + + + Scaling: + + + + + Sets the default scaling method, if there is not one already defined specifically for the character. + + + + + Pixel + + + + + Smooth + + + + + Log to Text Files: + + + + + Text logs of gameplay will be automatically written in the /logs folder. + + + + + Log to Demo Files: + + + + + Gameplay will be automatically recorded as demos in the /logs folder. + + + + + Play a blip sound "once per every X symbols", where X is the blip rate. 0 plays a blip sound only once. + + + + + If true, AO2 will ask the server to stop music when you use 'Objection!' + + + + + Assets + + + + + Add… + + + + + Select a base folder + + + + + Remove + + + + + ↑ + + + + + ↓ + + + + + Clear Cache + + + + + Clears the lookup cache for assets. Use this when you have added an asset that takes precedence over another existing asset. + + + + + Privacy + + + + + Do not include me in public player counts + + + + + Getting privacy policy... + + + + + %1 (default) + + + + Allow Shake/Flash: + Permitir Shake/Flash: + + + Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Permite el movimiento de la pantalla y el parpadeo. Desactive esto si tiene inquietudes o problemas con la fotosensibilidad y/o convulsiones. + + + + Language: + Idioma: + + + + Sets the language if you don't want to use your system language. + Establece el idioma si no desea utilizar el idioma de su sistema. + + + Punctuation delay modifier. Enable it for the blips to slow down on punctuations. + Habilítelo para agregar una pequeña pausa en los signos de puntuación. + + + + Callwords + Palabras clave + + + + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> + <html><head/><body>Ingrese tantas palabras de llamada como desee.<br>Esto no distingue entre mayúsculas y minúsculas. ¡Asegúrese de dejar cada palabra en su propia línea!<br>No deje una línea con un espacio al final; recibirá una alerta cada vez que alguien use un espacio en sus mensajes.</body></html> + + + + Audio + Audio + + + + Audio device: + Dispositivo: + + + + Sets the audio device for all sounds. + Establece el dispositivo de audio. + + + + Music: + Música: + + + + Sets the music's default volume. + Establece el volumen predeterminado de la música. + + + + SFX: + SFX: + + + + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. + Establece el volumen predeterminado de SFX. Las interjecciones y los efectos de sonido reales cuentan como 'SFX'. + + + Gives the default value for the in-game 'Custom shownames' checkbox, which in turn determines whether the client should display custom in-character names. + Activa la casilla 'Mostrar nombres' de forma predeterminada en el juego, que a su vez determina si el cliente debe mostrar nombres personalizados en los personajes. + + + Slower text speed: + Texto más lento: + + + Set the text speed to be the same as the AA games. + La velocidad del texto será la misma que en los juegos de AA. + + + Blip delay on punctuations: + Retraso en puntuación: + + + Sets the default volume for music. + Establece el volumen predeterminado de la música. + + + Sets the default volume for SFX sounds, like interjections or other character sound effects. + Establece el volumen predeterminado para sonidos SFX, como las interjecciones y otros efectos de sonido de personajes. + + + + Blips: + Blips: + + + + Sets the volume of the blips, the talking sound effects. + Establece el volumen de los blips, el sonido al hablar. + + + + Blip rate: + Tasa de blips: + + + + Sets the delay between playing the blip sounds. + Establece el retraso entre la reproducción de los sonidos blip. + + + + Blank blips: + Blips en blanco: + + + + If true, the game will play a blip sound even when a space is 'being said'. + Si está marcada, el juego reproducirá un sonido blip incluso cuando se 'dice' un espacio. + + + + Enable Looping SFX: + Habilitar repetición de SFX: + + + + If true, the game will allow looping sound effects to play on preanimations. + Si está habilitado, el juego permitirá que se reproduzcan efectos de sonido en bucle en preanimaciones. + + + + Kill Music On Objection: + Parar la música al objetar: + + + If true, the game will stop music when someone objects, like in the actual games. + Si está habilitado, el juego detendrá la música cuando alguien haga una objeción, como en los juegos. + + + + - Keep current setting + - Mantener la configuración actual + + + + Allow Screenshake: + Permitir screenshake: + + + + Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Permite el movimiento de la pantalla (ADVERTENCIA: esto podría inducir convulsiones debido a imágenes parpadeantes). + + + + Allow Effects: + Permitir efectos: + + + + Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Permite efectos de pantalla (ADVERTENCIA: esto podría inducir convulsiones debido a imágenes parpadeantes). + + + + Network Frame Effects: + Enviar efectos al servidor: + + + + Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. + Envíe temblores de pantalla, destellos y sonidos como se define en char.ini a través de la red. Solo funciona para servidores que admiten esta funcionalidad. + + + + Colors in IC Log: + Colores en el registro IC: + + + + Use the markup colors in the server IC chatlog. + Permite colores en el chat IC del servidor. + + + + Sticky Sounds: + Mantener sonidos: + + + + Turn this on to prevent the sound dropdown from clearing the sound after playing it. + Actívelo para evitar que el menú desplegable de sonido borre el sonido después de reproducirlo. + + + + Sticky Effects: + Mantener efectos: + + + + Turn this on to prevent the effects dropdown from clearing the effect after playing it. + Actívelo para evitar que el menú desplegable de efectos elimine el efecto después de reproducirlo. + + + + Sticky Preanims: + Mantener preanims: + + + + Turn this on to prevent preanimation checkbox from clearing after playing the emote. + Actívelo para evitar que la casilla preanimation se desactive después de reproducir el emote. + + + + Custom Chatboxes: + Chatboxes personalizados: + + + + Turn this on to allow characters to define their own custom chat box designs. + Actívelo para permitir que los personajes definan sus propios diseños de cuadros de chat personalizados. + + + + Stickers: + + + + + Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). + + + + + Continuous Playback: + + + + + Whether or not to resume playing animations from where they left off. Turning off might reduce lag. + + + + + Stop Music w/ Category: + + + + + Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. + + + + Play a blip sound "once per every X symbols", where X is the blip rate. + Reproduce un sonido de blip "una vez por cada X símbolos", donde X es la tasa de blip. + + + If true, AO2 will stop the music for you when you or someone else does 'Objection!'. + Si es activado, AO2 detendrá la música por ti cuando tú u otra persona hagan un '¡Protesto!'. + + + + Casing + Caso + + + + This server supports case alerts. + Este servidor admite alertas de casos. + + + + This server does not support case alerts. + Este servidor no admite alertas de casos. + + + + Pretty self-explanatory. + Bastante autoexplicativo. + + + + Casing: + Caso: + + + + If checked, you will get alerts about case announcements. + Si está marcado, recibirá anuncios de casos. + + + + Defense: + Abogado: + + + + If checked, you will get alerts about case announcements if a defense spot is open. + Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de abogado libre. + + + + Prosecution: + Fiscal: + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. + Si está marcada, recibirá alertas sobre anuncios de casos si hay un puesto de fiscal libre. + + + + Judge: + Juez: + + + + If checked, you will get alerts about case announcements if the judge spot is open. + Si está marcado, recibirá alertas sobre anuncios de casos si el puesto de juez está libre. + + + + Juror: + Jurado: + + + + If checked, you will get alerts about case announcements if a juror spot is open. + Si está marcado, recibirá alertas sobre anuncios de casos si hay un puesto de jurado libre. + + + + Stenographer: + Taquígrafo: + + + + If checked, you will get alerts about case announcements if a stenographer spot is open. + Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de taquígrafo libre. + + + + CM: + CM: + + + + If checked, you will appear amongst the potential CMs on the server. + Si está marcado, aparecerá entre los posibles CM en el servidor. + + + Automatic Logging: + Registro automático: + + + If checked, all logs will be automatically written in the /logs folder. + Si está marcado, todos los registros se guardarán automáticamente en la carpeta logs. + + + Witness: + Testigo: + + + If checked, you will appear amongst the potential witnesses on the server. + Si está marcado, aparecerá entre los posibles testigos en el servidor. + + + + Hosting cases: + Casos: + + + + If you're a CM, enter what cases you are willing to host. + Si eres un CM, ingresa qué casos estás dispuesto a organizar. + + + Only inline coloring will be shown such as <>,|| etc. + Solo se mostrará el color en línea, como <>, ||, etc. + + + IC log will mirror the IC box. Meaning that if somebody gets interrupted nobody will know what they wanted to say. Enable for a more realistic experience. + El registro de IC reflejará el chat In-Character. Lo que significa que si alguien es interrumpido, nadie sabrá lo que se iba a decir. Habilitar para una experiencia más realista. + + + IC log will mirror the IC box. Meaning that if somebody gets interrupted nobody will know what they wanted to say. Enable for a more realistic experience + El registro de IC reflejará el chat In-Character. Lo que significa que si alguien es interrumpido, nadie sabrá lo que se iba a decir. Habilitar para una experiencia más realista. + + + Colorful IC log: + Log IC colorido: + + + Enables colored text in the log. + Habilita texto con color en el log. + + + Only inline coloring: + Solo coloración en línea: + + + Only inline coloring will be shown such as <>,|| etc + Solo se mostrará el color en línea, como <>, ||, etc. + + + Mirror IC log: + IC log refleja interrupciones: + + + IC log will mirror the IC box. Meaning that if somebody gets interupted nobody will know what they wanted to say. Enable for a more realistic expierence + El registro de IC reflejará el chat In-Character. Lo que significa que si alguien es interrumpido, nadie sabrá lo que se iba a decir. Habilitar para una experiencia más realista. + + + + Courtroom + + + Password + Contraseña + + + + Spectator + Espectador + + + + + Search + Buscar + + + + Passworded + A translation wouldn't fit because of the shitty theme system. + + + + + Taken + En uso + + + + Could not find character (char.ini) for %1 + + + + Could not find %1 + No se pudo encontrar %1 + + + + Generating chars: +%1/%2 + Generando personajes: +%1/%2 + + + Generating chars: + + Generando personajes: + + + + + Showname + A translation wouldn't fit because of the shitty theme system. + + + + + Message + Mensaje + + + + Name + Nombre + + + + Pre + A translation wouldn't fit because of the shitty theme system. + + + + + Flip + A translation wouldn't fit because of the shitty theme system. + + + + + Guard + Guardia + + + + + Casing + This could be translated as 'caso' and it wouldn't get cut, but there are so many other buttons that can't be translated on the courtroom window that might as well leave this also untranslated so it's at least consistent. + + + + + Shownames + A translation wouldn't fit because of the shitty theme system. + + + + + Immediate + A translation wouldn't fit because of the shitty theme system. + + + + White + Blanco + + + Green + Verde + + + Red + Rojo + + + Orange + Naranja + + + Blue + Azul + + + Yellow + Amarillo + + + Rainbow + Arcoíris + + + Pink + Rosado + + + Cyan + Cian + + + % offset + % desplazamiento + + + + Music + + + + + Sfx + + + + + Blips + + + + + Change character + + + + + Reload theme + + + + + Call mod + + + + + Settings + + + + + A/M + + + + + Preanim + + + + + Back to Lobby + 'Volver al lobby' got cut, changed to just Lobby + Lobby + + + + You were granted the Disable Modcalls button. + Se le concedió el botón para deshabilitar llamadas a moderadores. + + + + You have been banned. + Has sido vetado. + + + You were granted the Guard button. + Te ha sido otorgado el botón Guardia. + + + This does nothing, but there you go. + Esto no hace nada, pero ahí lo tienes. + + + You opened the settings menu. + Abriste el menú de configuración. + + + You will now pair up with + Ahora te emparejarás con + + + if they also choose your character in return. + si ellos también eligen a tu personaje a cambio. + + + + + None + Nada + + + + Additive + Aditivo + + + + % x offset + + + + + % y offset + + + + + To front + Al frente + + + + To behind + Al fondo + + + + Log goes down + + + + + Log goes up + + + + + Select a character you wish to pair with. + Seleccione un personaje con el que desee emparejarse. + + + Change the percentage offset of your character's position from the center of the screen. + Cambia el desplazamiento porcentual de la posición de tu personaje desde el centro de la pantalla. + + + + Change the order of appearance for your character. + Cambia el orden de aparición de tu personaje. + + + + Display the list of characters to pair with. + Muestra la lista de personajes para emparejar. + + + + Oops, you're muted! + ¡Ups, estas silenciado! + + + + Set your character's emote to play on your next message. + Configura el emote de tu personaje para usar en tu próximo mensaje. + + + + Set your character's supplementary background. + Establece el fondo suplementario de tu personaje. + + + Set an 'iniswap', or an alternative character folder to refer to from your current character. +Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/iniswaps.ini + Establece un 'iniswap', o una carpeta de caracteres alternativa para consultar desde su personaje actual. +Edite escribiendo y presionando Enter, [X] para eliminar. Esto es guardado en base/characters/<charname>/iniswaps.ini + + + + Change the horizontal percentage offset of your character's position from the center of the screen. + + + + + Change the vertical percentage offset of your character's position from the center of the screen. + + + + + Reset your character's supplementary background to its default. + + + + + Set an 'iniswap', or an alternative character folder to refer to from your current character. +Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini + + + + + Remove the currently selected iniswap from the list and return to the original character folder. + Elimina el iniswap seleccionado actualmente de la lista y regresa a la carpeta de caracteres original. + + + + Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). +Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini + Establece un efecto de sonido para jugar en su próximo 'Preanim'. Dejarlo en Predeterminado usará el sonido definido por emoticones (si hay). +Edite escribiendo y presionando Enter, [X] para eliminar. Esto es guardado en base/characters/<charname>/iniswaps.ini + + + + Remove the currently selected sound effect. + + + + + Choose an effect to play on your next spoken message. +The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by +char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. + Elije un efecto para reproducir en su próximo mensaje hablado. +Los efectos se definen en theme/effects/effects.ini. Tu personaje puede definir efectos personalizados por +char.ini [Opciones] categoría, effects = 'miscname' donde se refiere a misc/<miscname>/effects.ini para leer los efectos. + + + + Hold It! + ¡Un Momento! + + + + + + When this is turned on, your next in-character message will be a shout! + Why the exclamation? + Cuando esto es activado, tu próximo mensaje del personaje será un grito. + + + + Objection! + ¡Protesto! + + + + Take That! + ¡Toma Eso! + + + + Toggle between server chat and global AO2 chat. + Alternar entre el chat del servidor y el chat global. + + + + + + + This will display the animation in the viewport as soon as it is pressed. + Esto mostrará la animación en el viewport tan pronto como se presione. + + + + Guilty! + ¡Culpable! + + + + Bring up the Character Select Screen and change your character. + Abre la pantalla de selección de personaje y cambia tu personaje. + + + + Refresh the theme and update all of the ui elements to match. + Actualiza el tema y todos los elementos de la interfaz de usuario para que coincidan. + + + + Request the attention of the current server's moderator. + Solicite la atención del moderador actual del servidor. + + + + Allows you to change various aspects of the client. + Le permite cambiar varios aspectos del cliente. + + + + An interface to help you announce a case (you have to be a CM first to be able to announce cases) + Una interfaz para ayudarlo a anunciar un caso (debe ser un CM para poder anunciar casos) + + + + Switch between Areas and Music lists + Cambiar entre áreas y listas de música + + + + Play a single-shot animation as defined by the emote when checked. + Reproduzca una animación de un solo disparo según lo definido por el emote cuando esté marcado. + + + + If preanim is checked, display the input text immediately as the animation plays concurrently. + Si se marca preanim, muestre el texto de entrada inmediatamente mientras la animación se reproduce simultáneamente. + + + + Mirror your character's emotes when checked. + Refleja los gestos de tu personaje cuando esté marcado. + + + + Add text to your last spoken message when checked. + Agregar texto a su último mensaje hablado cuando esté marcado. + + + + Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. + No escucha llamadas de moderación cuando esté marcado, evitando que reproduzcan sonidos o centrando la atención en la ventana. + + + + Lets you receive case alerts when enabled. +(You can set your preferences in the Settings!) + Le permite recibir alertas de casos cuando está habilitado. +(¡Puedes configurar tus preferencias en la Configuración!) + + + + Display customized shownames for all users when checked. + Mostrar nombres personalizados para todos los usuarios cuando esté marcado. + + + + Custom Shout! + ¡Grito personalizado! + + + + This will display the custom character-defined animation in the viewport as soon as it is pressed. +To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect + Esto mostrará la animación de personaje personalizada definida en el viewport tan pronto como se presione. +Para hacer una, la carpeta de tu personaje debe contener efectos personalizados [webp/apng/gif/png]. Y efectos personalizados de sonido [wav/ogg/opus] + + + + Play realization sound and animation in the viewport on the next spoken message when checked. + Reproduzca sonido y animación de realización en la ventana gráfica en el siguiente mensaje hablado cuando esté marcado. + + + + Shake the screen on next spoken message when checked. + Agite la pantalla en el siguiente mensaje hablado cuando esté marcado. + + + + Display the list of character folders you wish to mute. + Muestra la lista de carpetas de caracteres que desea silenciar. + + + + + Increase the health bar. + Aumenta la barra de salud. + + + + + Decrease the health bar. + Disminuye la barra de salud. + + + + Change the text color of the spoken message. +You can also select a part of your currently typed message and use the dropdown to change its color! + Cambia el color del texto en el chat IC. +¡También puede seleccionar una parte de su mensaje escrito actualmente y usar el menú desplegable para cambiar su color! + + + + Return back to the server list. + Regresar a la lista de servidores. + + + + Become a spectator. You won't be able to interact with the in-character screen. + Conviértete en espectador. No podrás interactuar como personaje. + + + + + + + CLIENT + + + + + Login unsuccessful. + + + + + You were logged out. + + + + + HOLD IT! + + + + + OBJECTION! + + + + + TAKE THAT! + + + + + CUSTOM OBJECTION! + + + + + + + + shouts + + + + + + + has presented evidence + ha presentado evidencia + + + + + + has stopped the music + + + + + [LOADING] %1 + + + + + + has played a song + ha reproducido la canción + + + You will now pair up with %1 if they also choose your character in return. + Ahora se emparejará con %1 si también eligen a su personaje. + + + You are no longer paired with anyone. + Ya no estás emparejado con nadie. + + + Are you sure you typed that well? The char ID could not be recognised. + ¿Estás seguro de que lo escribiste bien? El ID de personaje no pudo ser reconocido. + + + You have set your offset to + Ha configurado su desplazamiento en + + + Your offset must be between -100% and 100%! + ¡Su desplazamiento debe estar entre -100% y 100%! + + + That offset does not look like one. + Ese desplazamiento no se parece a uno. + + + You switched your music and area list. + Cambiaste tu lista de música y área. + + + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. + Ha habilitado forzosamente funciones que el servidor puede no admitir. Es posible que no pueda hablar IC, o peor, debido a esto. + + + Your pre-animations interrupt again. + Sus pre-animaciones interrumpen de nuevo. + + + Your pre-animations will not interrupt text. + Sus pre-animaciones no interrumpirán el texto. + + + Couldn't open chatlog.txt to write into. + No se pudo abrir chatlog.txt para escribir. + + + The IC chatlog has been saved. + El chat IC se ha guardado. + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. + ¡No tienes una carpeta `base/cases /`! Ha sido creada para ti. Pero debido a que no existia la carpeta, tampoco habían casos guardados ahí. + + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1 + ¡Debe dar un nombre de archivo para cargar (no se necesita extensión)! Asegúrese de que esté en la carpeta `base/cases/` y de que tenga el formato correcto. +Casos que puede cargar: %1 + + + + Case made by %1. + Caso hecho por %1. + + + + Navigate to %1 for the CM doc. + Navegue a %1 para el documento del CM. + + + + + + + UNKNOWN + + + + + Your case "%1" was loaded! + Su caso "%1" fue cargado! + + + + Debug + + + + + Stop Current Song + + + + + Play Random Song + Reproducir canción aleatoria + + + + Expand All Categories + Expandir todas las categorías + + + + Collapse All Categories + Contraer todas las categorías + + + + Fade Out Previous + Desvanecer Anterior + + + + Fade In + Fundirse + + + + Synchronize + Sincronizar + + + + Default + Predeterminado + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: + ¡Debe dar un nombre de archivo para cargar (no se necesita extensión)! Asegúrese de que esté en la carpeta `base/cases/` y de que tenga el formato correcto. +Casos que puede cargar: + + + + Too many arguments to load a case! You only need one filename, without extension. + ¡Demasiados argumentos para cargar un caso! Solo necesita un nombre de archivo, sin extensión. + + + Case made by + Caso hecho por + + + Navigate to + Navegue a + + + for the CM doc. + para el documento de CM. + + + Your case " + Su caso " + + + " was loaded! + " fue cargado! + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. + ¡No tienes una carpeta `base/cases /`! Fue creada para ti. + + + + You need to give a filename to save (extension not needed) and the courtroom status! + ¡Debe dar un nombre de archivo para guardar (no se necesita la extensión) y el estado de la sala del tribunal! + + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status! + why two exclamations, seems excesive. + ¡Demasiados argumentos para salvar un caso! Solo necesita un nombre de archivo sin extensión y el estado de la sala del tribunal. + + + + Succesfully saved, edit doc and cmdoc link on the ini! + ¡Guardado con éxito, puede editar el doc y doc link en el archivo ini! + + + + + Server + + + + OOC Message + Mensaje OOC + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status. + ¡Demasiados argumentos para salvar un caso! Solo necesita un nombre de archivo sin extensión y el estado de la sala del tribunal. + + + + Reason: + Razón: + + + + Call Moderator + Llamar Moderador + + + + + Error + Error + + + + You must provide a reason. + Debes proporcionar una razón. + + + + The message is too long. + El mensaje es muy largo. + + + Choose... + Elegir... + + + + Present this piece of evidence to everyone on your next spoken message + Presente esta evidencia a todos en su próximo mensaje hablado + + + + Save evidence to an .ini file. + Guardar evidencia en un archivo .ini. + + + + Load evidence from an .ini file. + Cargar evidencia de un archivo .ini. + + + + Destroy this piece of evidence + Destruye esta evidencia + + + + Choose.. + Elegir.. + + + + Close the evidence display/editing overlay. +You will be prompted if there's any unsaved changes. + Cierra la superposición para visualizar/editar evidencia. +Se le preguntará si hay cambios no guardados. + + + + Save any changes made to this piece of evidence and send them to server. + Guardar los cambios realizados en esta evidencia y enviarlos al servidor. + + + Double-click to edit. Press [X] to update your changes. + Doble click para editar. Presione [X] para actualizar sus cambios. + + + + Click to edit. Press [X] to update your changes. + + + + + Bring up the Evidence screen. + Abrir la ventana de evidencia. + + + + Switch evidence to private inventory. + Enviar la evidencia al inventario privado. + + + + Switch evidence to global inventory. + Cambiar la evidencia al inventario global. + + + + + Transfer evidence to private inventory. + Transferir evidencia al inventario privado. + + + + + Transfer evidence to global inventory. + Transferir evidencia al inventario global. + + + + The piece of evidence you've been editing has changed. + La evidencia que has estado editando ha cambiado. + + + + Do you wish to keep your changes? + ¿Desea conservar sus cambios? + + + + Name: %1 +Image: %2 +Description: +%3 + Nombre: %1 +Imagen: %2 +Descripción: +%3 + + + + Images (*.png) + Imágenes (* .png) + + + + + + Click to edit... + + + + Double-click to edit... + Doble click para editar... + + + + Add new evidence... + Añadir nueva evidencia... + + + + Evidence has been modified. + La evidencia ha sido modificada. + + + + Do you want to save your changes? + ¿Quieres guardar tus cambios? + + + + Current evidence is global. Click to switch to private. + La evidencia actual es global. Haga clic para cambiar a privado. + + + + Current evidence is private. Click to switch to global. + La evidencia actual es privada. Haga clic para cambiar a global. + + + + "%1" has been transferred. + "%1" ha sido transferido. + + + + Save Inventory + Guardar inventario + + + + + Ini Files (*.ini) + Archivos Ini (*.ini) + + + + Open Inventory + Abrir el inventario + + + + DemoServer + + + + Load Demo + + + + + + Demo Files (*.demo) + + + + + + Demo file loaded. Send /play or > in OOC to begin playback. + + + + + Resuming playback. + + + + + Pausing playback. + + + + + Setting max_wait to + + + + + + milliseconds. + + + + + Not a valid integer! + + + + + Current max_wait is + + + + + Current demo file reloaded. Send /play or > in OOC to begin playback. + + + + + min_wait is deprecated. Use the client Settings for minimum wait instead! + + + + + Setting debug mode to %1 + + + + + Valid values are 1 or 0! + + + + + Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. + + + + + Available commands: +load, reload, play, pause, max_wait, debug, help + + + + + Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. + + + + + Lobby + + + Attorney Online %1 + Attorney Online %1 + + + + Search + Buscar + + + Name + Nombre + + + + It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? + No parece que su cliente esté configurado correctamente. +¿Descargó todos los recursos correctamente desde tiny.cc/getao, incluida la gran carpeta 'base'? + + + + Version: %1 + Versión: %1 + + + + Settings + Ajustes + + + + Allows you to change various aspects of the client. + Le permite cambiar varios aspectos del cliente. + + + + Loading + Cargando + + + + Cancel + Cancelar + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 + + + + + Couldn't get the message of the day. + + + + + Version: %1 (!) + + + + + New version available: %1 + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 + <h2>Attorney Online %1</h2>El simulador de drama legal<p><b>Código fuente:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Desarrollo mayor:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Desarrollo del cliente:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Prueba de control de calidad:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Agradecimiento especial:</b><br>CrazyJC y MaximumVolty (versión 2.8); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, y FanatSors (AO1); server hosts, game masters, case makers, creadores de contenido y toda la comunidad AO2.<p>El proyecto Attorney Online novela visual en red tiene copyright (c) 2016-2020 Attorney Online developers. Se aplican licencias de código abierto. Todos los demás activos son propiedad de sus respectivos dueños.<p>Usando Qt versión %2 con el motor de audio BASS.<br>Plugin APNG cargado: %3<p>Compilado el %4 + + + + Yes + + + + + No + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the %3 audio engine.<p>Built on %4 + <h2>Attorney Online %1</h2>El simulador de drama legal<p><b>Código fuente:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Desarrollo mayor:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Desarrollo del cliente:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Prueba de control de calidad:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Agradecimiento especial:</b><br>CrazyJC y MaximumVolty (versión 2.8); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, y FanatSors (AO1); server hosts, game masters, case makers, creadores de contenido y toda la comunidad AO2.<p>El proyecto Attorney Online novela visual en red tiene copyright (c) 2016-2020 Attorney Online developers. Se aplican licencias de código abierto. Todos los demás activos son propiedad de sus respectivos dueños.<p>Usando Qt versión %2 con el motor de audio %3.<p>Compilado el %4 + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC and MaximumVolty (2.8 release); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the %3 audio engine.<p>Built on %4 + <h2>Attorney Online %1</h2>El simulador de drama legal<p><b>Código fuente:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Desarrollo mayor:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Desarrollo del cliente:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Prueba de control de calidad:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Agradecimiento especial:</b><br>CrazyJC y MaximumVolty (versión 2.8); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, y FanatSors (AO1); server hosts, game masters, case makers, creadores de contenido y toda la comunidad AO2.<p>El proyecto Attorney Online novela visual en red tiene copyright (c) 2016-2020 Attorney Online developers. Se aplican licencias de código abierto. Todos los demás activos son propiedad de sus respectivos dueños.<p>Usando Qt versión %2 con el motor de audio %3.<p>Compilado el %4 + + + + About + Acerca de + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Cents02<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy, Raidensnake + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Cents02<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy, Raidensnake + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + <h2>Attorney Online %1</h2>El simulador de drama legal<p><b>Código fuente:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https: //github.com/AttorneyOnline/AO2-Client</a><p><b>Desarrollo mayor:</b> <br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Agradecimiento especial:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (diseño de interfaz de usuario), Draxirch (diseño de interfaz de usuario), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + + + + Online: %1/%2 + En línea: %1/%2 + + + + + Offline + Fuera de línea + + + + NetworkManager + + + No description provided. + + + + + QDialogButtonBox + + + + OK + + + + + QObject + + + None + Nada + + + + [MISSING] %1 + + + + + [STREAM] %1 + + + + + chatlogpiece + + + + + UNKNOWN + + + + has played a song: + ha comenzado a reproducir la canción: + + + + debug_functions + + + Error: %1 + + + + + Error + + + + + Notice + In spanish it would be "Aviso", but I believe it's going to be more useful for bug reports to not translate any debug strings. + + + + diff --git a/data/translations/ao_it.qm b/data/translations/ao_it.qm new file mode 100644 index 00000000..15d2c63a Binary files /dev/null and b/data/translations/ao_it.qm differ diff --git a/data/translations/ao_it.ts b/data/translations/ao_it.ts new file mode 100644 index 00000000..39426061 --- /dev/null +++ b/data/translations/ao_it.ts @@ -0,0 +1,1800 @@ + + + + + AOApplication + + Attorney Online 2 + Attorney Online 2 + + + + Disconnected from server. + Disconesso dal server. + + + + Attorney Online %1 + Attorney Online %1 + + + + Loading + Caricamento + + + + Loading chars: +%1/%2 + Caricamento dei personaggi: +%1/%2 + + + + Loading music: +%1/%2 + Caricamento della musica: +%1/%2 + + + + [Global log] + [Log globali] + + + + You have been kicked from the server. +Reason: %1 + Sei stato cacciato dal server. +Motivo: %1 + + + + You have been banned from the server. +Reason: %1 + Sei stato bannato dal server. +Motivo: %1 + + + + You are banned on this server. +Reason: %1 + Sei bannato da questo server. +Motivo: %1 + + + + Demo playback + Registrazioni demo + + + + Play back demos you have previously recorded + Riproduci demo precedentemente registrate + + + + AOCaseAnnouncerDialog + + + Case Announcer + Annunciatore casi + + + + Case title: + Titolo del caso: + + + + Defense needed + Difesa richiesta + + + + Prosecution needed + Procura richiesta + + + + Judge needed + Giudice richiesto + + + + Jurors needed + Giurati richiesti + + + + Stenographer needed + Stenografo richiesto + + + + AOOptionsDialog + + + Settings + Impostazioni + + + + Gameplay + Gameplay + + + + Theme: + Tema: + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. + Imposta il tema usato in gioco. Se il nuovo tema cambia la lobby; per funzionare bene hai bisogno di ricaricare il client affinché prendano i nuovi effetti, come entrare in un server e uscire. + + + + Subtheme: + Sottotema: + + + + Sets a 'subtheme', which will stack on top of the current theme and replace anything it can.Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. + Imposta un suttotema e che si posizionerà in cima al tema corrente e rimpiazzerà tutto ciò che può. Mantienilo come server per lasciar decidere ad esso. Mantienilo default per lasciarlo senza cambiamenti. + + + + Reload Theme + Ricarica il Tema + + + + Refresh the theme and update all of the ui elements to match. + Ricarica il tema e lo aggiorna per combaciare gli elementi dell'interfaccia dell'utente. + + + + Animated Theme: + Tema animato: + + + + If ticked, themes will be allowed to have animated elements. + Se spuntato, i temi avranno la possibilità di utilizzare elementi animati. + + + + Log goes downwards: + Log verso il basso: + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + Se spuntato, nuovi messaggi appariranno nella parte inferiore (Come la chat dell’OOC). Il tradizionale (AO1) è equivalente al non essere spuntato. + + + + Log length: + Lunghezza del Log: + + + + The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. + La quantità di riga che la chat IC mantiene prima di cancellare quelle precedenti. Un valore pari a zero o inferiore verrà considerato come infinito. + + + + Log newline: + Log riga aggiuntiva: + + + + If ticked, new messages will appear separated, with the message coming on the next line after the name. When unticked, it displays it as 'name: message'. + Se spuntato, i messaggi appariranno sotto il nome nel log. Quando non è spuntato i messaggi vengono mostrati sulla stessa riga del nome. + + + + Log margin: + Margine del Log: + + + + The distance in pixels between each entry in the IC log. Default: 0. + La distanza in pixel tra ogni messaggio nel log IC. Default: 0. + + + + Log timestamp: + Orario del Log: + + + + If ticked, log will contain a timestamp in UTC before the name. + Se spuntato, i log avranno l’orario HH:MM:SS prima del nome in ogni messaggio mandato. + + + + + Log timestamp format: + + Formato dell’orario dei Log: + + + + + Log IC actions: + Azioni nel log IC: + + + + If ticked, log will show IC actions such as shouting and presenting evidence. + Se spuntato, il log IC mostrerà le azioni svolte come le “shouts” e il presentare delle prove. + + + + Text Stay Time: + Durata dei messaggi: + + + + Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. + Quantità minima di tempo (in millisecondi) che un messaggio in IC può rimanere. Imposta a 0 per cancellare questa scelta. + + + + Desynchronize IC Logs: + Desincronizzare i log IC: + + + + If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). + Se spuntato, il log mostrerà i messaggi come ricevuti, mentre il viewport li mostrerà in base alla coda (Durata dei messaggi). + + + + Instant Objection: + Obiezione istantanea: + + + + If Text Stay Time is more than 0, instant objection will skip queued messages instead of waiting to catch up. + Se la durata dei messaggi è oltre lo 0, l’obiezione istantanea salterà i messaggi in coda invece di aspettare per recuperarli. + + + + Text crawl: + Scansione del testo: + + + + Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. + Quantità di tempo (in millisecondi) speso su ogni lettera quando un messaggio appare in IC. + + + + Chat Rate Limit: + Limite velocità chat: + + + + Minimum amount of time (in miliseconds) that must pass before the next Enter key press will send your IC message. + Quantità minima di tempo (in millisecondi) che dovrebbe passare prima che il prossimo “INVIO” mandi il tuo messaggio in IC. + + + + Default username: + Username di base: + + + + Your OOC name will be automatically set to this value when you join a server. + Il tuo nome in OOC prenderà automaticamente questo valore quando entrerai in un server. + + + + Custom shownames: + Shownames personalizzati: + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + Se spuntato mostrerà il nome personalizzato di chiunque ne abbia inserito uno. + + + + Default showname: + Showname di default: + + + + Your showname will be automatically set to this value when you join a server. + Il tuo showname verrà automaticamente cambiato in questo valore quando entri in un server. + + + + Alternate Server List: + Lista Server Altrernativa: + + + + Overrides the base URL to retrieve server information from. + Sovrascrive l'URL base per ricevere informazioni sul server. + + + + Discord: + Discord: + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + Permetti agli altri utenti su Discord di vedere in quale server ti trovi, che personaggio stai usando, e per quanto tempo stai giocando. + + + + Language: + Lingua: + + + + Sets the language if you don't want to use your system language. + Selezione una lingua automaticamente se non vuoi usare quella di sistema. + + + + - Keep current setting + - Mantenere la seguente impostazione + + + + Scaling: + Risoluzione: + + + + Sets the default scaling method, if there is not one already defined specifically for the character. + Imposta il metodo di risoluzione base, se non ce n'è già uno specifico per un personaggio. + + + + Pixel + Pixel + + + + Smooth + Smooth + + + + Allow Screenshake: + Abilità lo scuotimento: + + + + Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Permette lo scuotimento. Disabilitalo se ti crea problemi. + + + + Allow Effects: + Abilita gli Effetti: + + + + Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Permette gli effetti sullo schermo. Disabilitalo se ti crea problemi. + + + + Network Frame Effects: + Network Frame Effects: + + + + Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. + Mostra lo scuotimento dello schermo, flash e i suoni attraverso i char.ini sul network. Funziona solo con i server che supportano questa funzionalità. + + + + Colors in IC Log: + Colori in IC Log: + + + + Use the markup colors in the server IC chatlog. + Usa i colori disponibili nel log IC. + + + + Sticky Sounds: + Suoni permanenti: + + + + Turn this on to prevent the sound dropdown from clearing the sound after playing it. + Attivalo per prevenire la rimozione dell'effetto sonoro dopo averlo eseguito. + + + + Sticky Effects: + Effetti permanenti: + + + + Turn this on to prevent the effects dropdown from clearing the effect after playing it. + Attivalo per prevenire la rimozione dell'effetto dopo averlo eseguito. + + + + Sticky Preanims: + Preanimazioni permanenti: + + + + Turn this on to prevent preanimation checkbox from clearing after playing the emote. + Attivalo per evitare che si deselezioni la casella delle preanimazioni dopo che ne è stata eseguita una. + + + + Custom Chatboxes: + Chatbox personalizzate: + + + + Turn this on to allow characters to define their own custom chat box designs. + Attivalo per permettere al personaggio di usare le chatbox personalizzate. + + + + Stickers: + Stickers: + + + + Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). + Attivalo per fare in modo che i personaggi definiscono i propri sticker (immagini uniche che si mostrano sopra la chatbox - come avatar o showname). + + + + Continuous Playback: + Riproduzione continua: + + + + Whether or not to resume playing animations from where they left off. Turning off might reduce lag. + Se riprendere o meno la riproduzione delle animazioni da dove erano state interrotte. La disattivazione potrebbe creare un ritardo. + + + + Stop Music w/ Category: + Ferma la Musica con le Categorie: + + + + Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. + Interrompi la musica cliccando due volte sopra una categoria. Se questo è disattivato, clicca il tasto destro e usa il menù per fermarla. + + + + Log to Text Files: + Da log a file di testo: + + + + Text logs of gameplay will be automatically written in the /logs folder. + I log verranno scritti automaticamente nella cartella /logs. + + + + Log to Demo Files: + Da log a File Demo: + + + + Gameplay will be automatically recorded as demos in the /logs folder. + Il gameplay verrà automaticamente registrato come demo nella cartella /logs. + + + + Callwords + Callwords + + + + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> + <html><head/><body>Inserisci quante Callwords vuoi!. Sensibili a maiuscole e minuscole. Sii sicuro di lasciare una sola Callword per riga!!; Non lasciare uno spazio alla fine di una riga -- verrai avvertito ogni volta che qualcuno metterà uno spazio in un suo messaggio.</body></html> + + + + Audio + Audio + + + + Audio device: + Dispositivo Audio: + + + + Sets the audio device for all sounds. + Imposta il dispositivo audio per tutti i suoni. + + + + Music: + Musica: + + + + Sets the music's default volume. + Imposta il volume default della musica. + + + + SFX: + SFX: + + + + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. + Imposta il volume default. Le shouts e i rumori emessi dagli effetti conteranno come SFX. + + + + Blips: + Blips: + + + + Sets the volume of the blips, the talking sound effects. + Imposta il volume dei blips, il suono che si sente nel mentre si parla. + + + + Blip rate: + Velocità dei blips: + + + + Sets the delay between playing the blip sounds. + Imposta il ritardo durante il suono dei blips. + + + + Play a blip sound "once per every X symbols", where X is the blip rate. 0 plays a blip sound only once. + Fai partire un blip per ogni simbolo X. Dove X è la velocità dei blips. + + + + Blank blips: + Blip vuoto: + + + + If true, the game will play a blip sound even when a space is 'being said'. + Se vero, il gioco emetterà un blip anche se viene usato uno spazio. + + + + Enable Looping SFX: + Abilità loop SFX: + + + + If true, the game will allow looping sound effects to play on preanimations. + Se spuntato, il gioco permetterà il suono dei loop durante le preanimazioni. + + + + Kill Music On Objection: + Zittisci la Musica con una Obiezione: + + + + If true, AO2 will ask the server to stop music when you use 'Objection!' + Se vero, AO2 chiederà di fermare la musica quando sarà eseguita una 'Obiezione!' + + + + Casing + Casing + + + + This server supports case alerts. + Questo server supporta gli annunci casi. + + + + This server does not support case alerts. + Questo server non supporta gli annunci casi. + + + + Pretty self-explanatory. + Abbastanza auto-esplicativo. + + + + Casing: + Casing: + + + + If checked, you will get alerts about case announcements. + Se spuntato, riceverai degli annunci casi. + + + + Defense: + Difesa: + + + + If checked, you will get alerts about case announcements if a defense spot is open. + Se spuntato, riceverai degli avvertimenti riguardo casi in cui è libero il ruolo di difensore. + + + + Prosecution: + Procura: + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. + Se spuntato, riceverai degli avvertimenti riguardo casi in cui è libero il ruolo di procuratore. + + + + Judge: + Giudice: + + + + If checked, you will get alerts about case announcements if the judge spot is open. + Se spuntato, riceverai degli avvertimenti riguardo casi in cui è libero il ruolo di giudice. + + + + Juror: + Giurato: + + + + If checked, you will get alerts about case announcements if a juror spot is open. + Se spuntato, riceverai degli avvertimenti riguardo casi in cui è libero il ruolo di giurato. + + + + Stenographer: + Stenografo: + + + + If checked, you will get alerts about case announcements if a stenographer spot is open. + Se spuntato, riceverai degli avvertimenti riguardo casi in cui è libero il ruolo di stenografo. + + + + CM: + CM: + + + + If checked, you will appear amongst the potential CMs on the server. + Se spuntato, apparirai come un potenziale CM nel server. + + + + Hosting cases: + Ospitare casi: + + + + If you're a CM, enter what cases you are willing to host. + Se sei un CM, specifica il caso che vorrai giocare. + + + + Assets + Assets + + + + Add or remove base folders for use by assets. Base folders on the bottom are prioritized over those above them. + Aggiungi o rimuovi cartelle Base per gli assets. Le cartelle Base verranno scansionate in ordine dato. + + + + Add… + Aggiungi… + + + + Select a base folder + Seleziona una cartella base + + + + Remove + RImuovi + + + + ↑ + + + + + ↓ + + + + + Clear Cache + Svuota Cache + + + + Clears the lookup cache for assets. Use this when you have added an asset that takes precedence over another existing asset. + Svuota la cache di ricerca. Usa questo quando hai aggiunto un asset che prende il posto di un altro asset aggiunto in precedenza. + + + + Privacy + Privacy + + + + Do not include me in public player counts + Non includermi nel contatore pubblico dei giocatori + + + + Getting privacy policy... + Leggi l'informativa sulla privacy... + + + + %1 (default) + %1 (default) + + + + Couldn't get the privacy policy. + Impossibile ottenera l'informativa sulla privacy. + + + + Courtroom + + + Password + Password + + + + Spectator + Spettatore + + + + + Search + Cerca + + + + Passworded + Protetto + + + + Taken + Preso + + + + Could not find character (char.ini) for %1 + Impossibile trovare personaggio (char.ini) per %1 + + + + Generating chars: +%1/%2 + Generando i char: +%1/%2 + + + + + None + Nulla + + + + Showname + Showname + + + + Message + Messaggio + + + + Name + Nome + + + + Pre + + Pre + + + + + + Flip + Specchia + + + + Guard + Guardia + + + + Additive + Aggiungi + + + + + Casing + Casing + + + + Shownames + Shownames + + + + Immediate + Immediato + + + + % x offset + % x offset + + + + % y offset + % y offset + + + + To front + Di fronte + + + + To behind + Da dietro + + + + Log goes down + Log verso il basso + + + + Log goes up + Log verso l'alto + + + + Select a character you wish to pair with. + Seleziona un personaggio con cui vuoi fare coppia. + + + + Change the horizontal percentage offset of your character's position from the center of the screen. + Cambia la percentuale in orizzontale dell'offset del personaggio posizionato al centro dello schermo. + + + + Change the vertical percentage offset of your character's position from the center of the screen. + Cambia la percentuale in verticale dell'offset del personaggio posizionato al centro dello schermo. + + + + Change the order of appearance for your character. + Cambia l'ordine d'apparizione del tuo personaggio. + + + + Display the list of characters to pair with. + Elenca la lista dei personaggi con cui fare coppia. + + + + Oops, you're muted! + Oops, sei mutato! + + + + Set your character's emote to play on your next message. + Imposta l'emote del personaggio che apparirà nel prossimo messaggio. + + + + Set your character's supplementary background. + Imposta lo sfondo supplementare del tuo personaggio. + + + + Reset your character's supplementary background to its default. + Resetta lo sfondo supplementare del tuo personaggio a Default. + + + + Set an 'iniswap', or an alternative character folder to refer to from your current character. +Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini + Imposta un iniswap, o una cartella alternativa che si riferisce direttamente al tuo personaggio. +Modifica digitando e premendo INVIO, [X] per rimuoverlo. Questo salva il tuo base/iniswap.ini + + + + Remove the currently selected iniswap from the list and return to the original character folder. + Rimuove il seguente iniswap scelto e ritorni al personaggio che avevi in origine. + + + + Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). +Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini + Imposta un suono ad effetto da fare partire con la tua prossima preanim. Lasciandola a default userà il suono preimpostato di quella emote (se lo ha). +Modifica digitando e premendo INVIO, [X] per rimuoverlo. Questo lo salva nel tuo base/characters/<charname>/soundlist.ini + + + + Remove the currently selected sound effect. + Rimuove il suono correntemente scelto. + + + + Choose an effect to play on your next spoken message. +The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by +char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. + Scegli un effetto da fare partire col tuo prossimo messaggio. Gli effetti sono definiti nel theme/effects/effects.ini. Il tuo personaggio può definire dei suoni personalizzati attraverso il suo +char.ini [Options] category, effects = ;miscname; che si riferisce a misc/<miscname>/effects.ini per leggere gli effetti. + + + + Music + Musica + + + + Sfx + Sfx + + + + Blips + Blips + + + + Hold It! + Un attimo! + + + + + + When this is turned on, your next in-character message will be a shout! + Quando questo è selezionato, il tuo prossimo messaggio avrà una shout! + + + + Objection! + Obiezione! + + + + Take That! + Ecco! + + + + + Server + Server + + + + Toggle between server chat and global AO2 chat. + Alterna tra la chat del server e la chat globale di AO2. + + + + + + + This will display the animation in the viewport as soon as it is pressed. + Questo mostrerà l’animazione nella schermata non appena viene premuto. + + + + Guilty! + Colpevole! + + + + Change character + Cambia personaggio + + + + Bring up the Character Select Screen and change your character. + Ti porta alla Schermata Selezione Personaggi per farti cambiare personaggio. + + + + Reload theme + Ricarica il tema + + + + Refresh the theme and update all of the ui elements to match. + Ricarica il tema e lo aggiorna per abbinare gli elementi dell'interfaccia dell'utente. + + + + Call mod + Chiama mod + + + + Request the attention of the current server's moderator. + Richiama l'attenzione di un moderatore corrente del server. + + + + Settings + Impostazioni + + + + Allows you to change various aspects of the client. + Permette di cambiare vari aspetti del client. + + + + An interface to help you announce a case (you have to be a CM first to be able to announce cases) + Un'interfaccia per aiutarti ad annunciare un caso (devi essere CM per poter annunciare casi) + + + + A/M + A/M + + + + Switch between Areas and Music lists + Cambia tra la lista Aree e Musica + + + + Preanim + Preanimazione + + + + Play a single-shot animation as defined by the emote when checked. + Riproduci un'animazione se definita dal personaggio quando spuntata. + + + + If preanim is checked, display the input text immediately as the animation plays concurrently. + Se la preanimazione è spuntata, mostra immediatamente il messaggio inserito immediatamente mentre l’animazione viene riprodotta. + + + + Mirror your character's emotes when checked. + Specchia il tuo personaggio se spuntato. + + + + Add text to your last spoken message when checked. + Aggiunge un messaggio all’ultimo messaggio scritto se spuntato. + + + + Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. + Permette di non ascoltare le chiamate per moderatori se spuntato, prevenendo la riproduzione del suono o l’attenzione sulla finestra. + + + + Lets you receive case alerts when enabled. +(You can set your preferences in the Settings!) + Ti permette di ricevere annunci per i casi quando abilitato. +(Puoi cambiare le tue preferenze nelle impostazioni!) + + + + Display customized shownames for all users when checked. + Mostra gli showname personalizzati di tutti gli utenti se spuntato. + + + + Custom Shout! + Shout Personalizzato! + + + + This will display the custom character-defined animation in the viewport as soon as it is pressed. +To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect + Questo mostrerà un'animazione definita del personaggio nel viewport non appena viene premuto. +Per crearne uno, la cartella del tuo personaggio deve contenere custom.[webp/apng/gif/png] e custom.[wav/ogg/opus] per gli effetti sonori + + + + Play realization sound and animation in the viewport on the next spoken message when checked. + Riproduce il suono realization e l&apos;animazione nel viewport nel prossimo messaggio scritto se spuntato. + + + + Shake the screen on next spoken message when checked. + Scuote lo schermo nel tuo prossimo messaggio scritto se spuntato. + + + + Display the list of character folders you wish to mute. + Mostra la lista delle cartelle dei personaggi che vorresti smutare. + + + + + Increase the health bar. + Aumenta la barra della salute. + + + + + Decrease the health bar. + Diminuisci la barra della salute. + + + + Change the text color of the spoken message. +You can also select a part of your currently typed message and use the dropdown to change its color! + Cambia il colore dei messaggi scritti. +Puoi anche selezionare il colore dei tuoi messaggi attualmente scritti e usare la selezione per cambiare colore! + + + + Back to Lobby + Indietro alla lobby + + + + Return back to the server list. + Ritorna indietro alla lista server. + + + + Become a spectator. You won't be able to interact with the in-character screen. + Diventa uno spettatore. Non sarai in grado di interagire con i personaggi a schermo. + + + + + + + CLIENT + CLIENT + + + + You were granted the Disable Modcalls button. + Sei in grado di disabilitare il bottone dei Modcall. + + + + Login unsuccessful. + Accesso non riuscito. + + + + You were logged out. + Ti sei scollegato. + + + + HOLD IT! + UN ATTIMO! + + + + OBJECTION! + OBIEZIONE! + + + + TAKE THAT! + ECCO! + + + + CUSTOM OBJECTION! + OBIEZIONE PERSONALIZZATA! + + + + + + + shouts + urla + + + + + + has presented evidence + ha presentato una prova + + + + + + has stopped the music + ha fermato la musica + + + + You have been banned. + Sei stato bannato. + + + + + has played a song + ha riprodotto una canzone + + + + [LOADING] %1 + [CARICAMENTO] %1 + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. + Non hai una cartella `base/cases/`! È appena stata creata, ma visto che ERA apposta per te, è probabile che il file che stai cercando non può essere trovato lì. + + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1 + Hai bisogno di dare un nome ad un file per caricarlo (estensione non necessaria)! Sii sicuro che si trovi nella cartella: `base/cases/` e che il .ini sia correttamente scritto. +Casi che puoi caricare: %1 + + + + Too many arguments to load a case! You only need one filename, without extension. + Troppe parole per caricare un caso! Hai solo bisogno del nome di un file, senza estensione. + + + + Case made by %1. + Caso fatto da %1. + + + + Navigate to %1 for the CM doc. + Vai su %1 per il doc fatto dal CM. + + + + + + + UNKNOWN + SCONOSCIUTO + + + + Your case "%1" was loaded! + Il tuo caso %1 è stato caricato! + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. + Non hai una cartella `base/cases/`! È appena stata creata, ma visto che ERA apposta per te, probabilmente l'hai cancellata in qualche modo. + + + + You need to give a filename to save (extension not needed) and the courtroom status! + Hai bisogno di dare il nome di un file (estensione non necessaria) e lo stato della stanza! + + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status! + Troppe parole per salvare un caso! Hai bisogno solamente di un nome di un file senza estensione e lo stato della stanza! + + + + Succesfully saved, edit doc and cmdoc link on the ini! + Salvato con successo, modifica il link doc e cmdoc nell'ini! + + + + Debug + Debug + + + + Stop Current Song + Ferma la seguente ost + + + + Play Random Song + Riproduci un'ost Casuale + + + + Expand All Categories + Espandi Tutte le Categorie + + + + Collapse All Categories + Comprimi Tutte le Categorie + + + + Fade Out Previous + Dissolvenza precedente + + + + Fade In + Dissolvenza + + + + Synchronize + Sincronizza + + + + Default + Default + + + + Reason: + Motivo: + + + + Call Moderator + Chiama Moderatore + + + + + Error + Errore + + + + You must provide a reason. + Devi fornire un motivo. + + + + The message is too long. + Il messaggio è troppo lungo. + + + + Present this piece of evidence to everyone on your next spoken message + Presenta questa prova a tutti nel tuo prossimo messaggio + + + + Save evidence to an .ini file. + Salva prove in un file .ini. + + + + Load evidence from an .ini file. + Carica prove da un file .ini. + + + + Destroy this piece of evidence + Elimina questa prova + + + + Choose.. + Selezione.. + + + + Close the evidence display/editing overlay. +You will be prompted if there's any unsaved changes. + Chiudi la schermata di visualizza/modifica delle prove. +Verrai avvisato se ci sono cambiamenti non salvati. + + + + Save any changes made to this piece of evidence and send them to server. + Salva ogni cambiamento fatto a questa prova e mandale sul server. + + + + Click to edit. Press [X] to update your changes. + Premi sull'icona della matita per modificare. Premi su [X] per effettuare i cambiamenti. + + + + Bring up the Evidence screen. + Evidenza la schermata delle prove. + + + + Switch evidence to private inventory. + Passa le prove all'inventario privato. + + + + Switch evidence to global inventory. + Passa le prove all'inventario globale. + + + + + Transfer evidence to private inventory. + Trasferisci le prove nell’inventario privato. + + + + + Transfer evidence to global inventory. + Trasferisci le prove nell’inventario globale. + + + + The piece of evidence you've been editing has changed. + La prova che stavi modificando è cambiata. + + + + Do you wish to keep your changes? + Vuoi salvare le modifiche? + + + + Name: %1 +Image: %2 +Description: +%3 + Nome: %1 +Immagine: %2 +Descrizione: +%3 + + + + Images (*.png) + Immagini (*.png) + + + + + + Click to edit... + Premi la matita per modificare... + + + + Add new evidence... + Aggiungi una nuova prova... + + + + Evidence has been modified. + La Prova è stata modificata. + + + + Do you want to save your changes? + Vuoi salvare i tuoi cambiamenti? + + + + Current evidence is global. Click to switch to private. + La prova corrente è globale, premi per renderla privata. + + + + Current evidence is private. Click to switch to global. + La prova corrente è privata, premi per renderlo globale. + + + + "%1" has been transferred. + "%1"è stata trasferita. + + + + Save Inventory + Salva Inventario + + + + + Ini Files (*.ini) + File Ini (*.ini) + + + + Open Inventory + Apri inventario + + + + DemoServer + + + + Load Demo + Carica Demo + + + + + Demo Files (*.demo) + File Demo (*.demo) + + + + + Demo file loaded. Send /play or > in OOC to begin playback. + File demo caricato. Scrivi /play o > in OOC per iniziare la riproduzione. + + + + Resuming playback. + Riprendendo la riproduzione. + + + + Pausing playback. + Mettendo in pausa la riproduzione. + + + + Setting max_wait to + Inserendo l'attesa massima a + + + + + milliseconds. + millisecondi. + + + + Not a valid integer! + Numero non valido! + + + + Current max_wait is + L'attesa massima corrente è + + + + Current demo file reloaded. Send /play or > in OOC to begin playback. + File demo corrente caricato. Scrivi /play o > in OOC per cominciare la riproduzione. + + + + min_wait is deprecated. Use the client Settings for minimum wait instead! + min_wait è inutilizzato. Usa le impostazioni del client per l’attesa minima! + + + + Setting debug mode to %1 + Imposta la modalità debug su %1 + + + + Valid values are 1 or 0! + I valori validi sono 1 o 0! + + + + Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. + Imposta la modalità debug usando /debug 1 per attivarlo, e /debug 0 per disabilitarlo, ed utilizzerà il quinto timer (TI#4) per mostrare il tempo rimanente fino alla prossima demo. + + + + Available commands: +load, reload, play, pause, max_wait, debug, help + Comandi disponibili: +load, reload, play, pause, max_wait, help + + + + Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. + Termine del file demo. Scrivi /play o > in OOC per ricominciare, oppure /load per aprire un nuovo file. + + + + Lobby + + + Attorney Online %1 + Attorney Online %1 + + + + Search + Ricerca + + + + It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? + Sembra che il tuo client non sia impostato correttamente. +Hai scaricato tutte le risorse correttamente da tiny.cc/getao, includendo la cartella base? + + + + Version: %1 + Versione: %1 + + + + Settings + Impostazioni + + + + Allows you to change various aspects of the client. + Permette di cambiare vari aspetti del client. + + + + + Offline + Offline + + + + Loading + Caricamento + + + + Cancel + Cancella + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 + <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 + + + + Yes + + + + + No + No + + + + About + Aiuto + + + + Couldn't get the message of the day. + Impossibile mostrare il messaggio del giorno. + + + + Version: %1 (!) + Versione: %1 (!) + + + + New version available: %1 + Nuova versione disponiile: %1 + + + + Online: %1/%2 + Online: %1/%2 + + + + NetworkManager + + + No description provided. + + + + + QDialogButtonBox + + + + OK + OK + + + + QObject + + + None + Nulla + + + + [MISSING] %1 + [MANCANTE] %1 + + + + [STREAM] %1 + [STREAM] %1 + + + + chatlogpiece + + + + + UNKNOWN + SCONOSCIUTO + + + + debug_functions + + + Error: %1 + Errore: %1 + + + + Error + Errore + + + + Notice + Avviso + + + diff --git a/data/translations/ao_jp.qm b/data/translations/ao_jp.qm new file mode 100644 index 00000000..5812be18 Binary files /dev/null and b/data/translations/ao_jp.qm differ diff --git a/data/translations/ao_jp.ts b/data/translations/ao_jp.ts new file mode 100644 index 00000000..33f52f0b --- /dev/null +++ b/data/translations/ao_jp.ts @@ -0,0 +1,1865 @@ + + + + + AOApplication + + + Disconnected from server. + サーバーがつながらなくなりました + + + Error connecting to master server. Will try again in %1 seconds. + マスターサーバーにつながりません。%1秒の後でもう一回 + + + Attorney Online + 逆転裁判オンライン + + + + Loading + ロード中 + + + Loading evidence: +%1/%2 + 証拠がロード中: %1/%2 + + + + Loading music: +%1/%2 + 音楽がロード中: %1/%2 + + + + Loading chars: +%1/%2 + キャラがロード中: %1/%2 + + + + Attorney Online %1 + 逆転裁判オンライン %1 + + + + [Global log] + + + + + You have been kicked from the server. +Reason: %1 + + + + + You have been banned from the server. +Reason: %1 + + + + + You are banned on this server. +Reason: %1 + + + + + Demo playback + + + + + Play back demos you have previously recorded + + + + + AOCaseAnnouncerDialog + + + Case Announcer + + + + + Case title: + + + + + Defense needed + + + + + Prosecution needed + + + + + Judge needed + + + + + Jurors needed + + + + + Stenographer needed + + + + + AOOptionsDialog + + + Settings + 設定 + + + + Gameplay + + + + + Theme: + + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. + + + + + Log goes downwards: + + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + + + + + Log length: + + + + + Default username: + + + + + Your OOC name will be automatically set to this value when you join a server. + + + + + Custom shownames: + + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + + + + + Discord: + + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + + + + + Language: + + + + + Sets the language if you don't want to use your system language. + + + + + Callwords + + + + + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> + + + + + Audio + + + + + Audio device: + + + + + Sets the audio device for all sounds. + + + + + Music: + 音楽: + + + + SFX: + 効果音: + + + + Blips: + ブリップ: + + + + Sets the volume of the blips, the talking sound effects. + + + + + Blip rate: + + + + + Sets the delay between playing the blip sounds. + + + + + Play a blip sound "once per every X symbols", where X is the blip rate. 0 plays a blip sound only once. + + + + + Blank blips: + + + + + If true, the game will play a blip sound even when a space is 'being said'. + + + + + Enable Looping SFX: + + + + + If true, the game will allow looping sound effects to play on preanimations. + + + + + Kill Music On Objection: + + + + + - Keep current setting + + + + + Subtheme: + + + + + Sets a 'subtheme', which will stack on top of the current theme and replace anything it can.Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. + + + + + Reload Theme + + + + + Refresh the theme and update all of the ui elements to match. + + + + + Animated Theme: + + + + + If ticked, themes will be allowed to have animated elements. + + + + + The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. + + + + + Log newline: + + + + + If ticked, new messages will appear separated, with the message coming on the next line after the name. When unticked, it displays it as 'name: message'. + + + + + Log margin: + + + + + The distance in pixels between each entry in the IC log. Default: 0. + + + + + Log timestamp: + + + + + If ticked, log will contain a timestamp in UTC before the name. + + + + + + Log timestamp format: + + + + + + Log IC actions: + + + + + If ticked, log will show IC actions such as shouting and presenting evidence. + + + + + Text Stay Time: + + + + + Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. + + + + + Desynchronize IC Logs: + + + + + If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). + + + + + Instant Objection: + + + + + If Text Stay Time is more than 0, instant objection will skip queued messages instead of waiting to catch up. + + + + + Text crawl: + + + + + Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. + + + + + Chat Rate Limit: + + + + + Minimum amount of time (in miliseconds) that must pass before the next Enter key press will send your IC message. + + + + + Default showname: + + + + + Your showname will be automatically set to this value when you join a server. + + + + + Alternate Server List: + + + + + Overrides the base URL to retrieve server information from. + + + + + Scaling: + + + + + Sets the default scaling method, if there is not one already defined specifically for the character. + + + + + Pixel + + + + + Smooth + + + + + Allow Screenshake: + + + + + Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. + + + + + Allow Effects: + + + + + Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. + + + + + Network Frame Effects: + + + + + Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. + + + + + Colors in IC Log: + + + + + Use the markup colors in the server IC chatlog. + + + + + Sticky Sounds: + + + + + Turn this on to prevent the sound dropdown from clearing the sound after playing it. + + + + + Sticky Effects: + + + + + Turn this on to prevent the effects dropdown from clearing the effect after playing it. + + + + + Sticky Preanims: + + + + + Turn this on to prevent preanimation checkbox from clearing after playing the emote. + + + + + Custom Chatboxes: + + + + + Turn this on to allow characters to define their own custom chat box designs. + + + + + Stickers: + + + + + Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). + + + + + Continuous Playback: + + + + + Whether or not to resume playing animations from where they left off. Turning off might reduce lag. + + + + + Stop Music w/ Category: + + + + + Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. + + + + + Log to Text Files: + + + + + Text logs of gameplay will be automatically written in the /logs folder. + + + + + Log to Demo Files: + + + + + Gameplay will be automatically recorded as demos in the /logs folder. + + + + + Sets the music's default volume. + + + + + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. + + + + + Add or remove base folders for use by assets. Base folders on the bottom are prioritized over those above them. + + + + + Couldn't get the privacy policy. + + + + + If true, AO2 will ask the server to stop music when you use 'Objection!' + + + + + Casing + + + + + This server supports case alerts. + + + + + This server does not support case alerts. + + + + + Pretty self-explanatory. + + + + + Casing: + + + + + If checked, you will get alerts about case announcements. + + + + + Defense: + 弁護士 + + + + If checked, you will get alerts about case announcements if a defense spot is open. + + + + + Prosecution: + 検事 + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. + + + + + Judge: + 裁判官 + + + + If checked, you will get alerts about case announcements if the judge spot is open. + + + + + Juror: + 陪審員 + + + + If checked, you will get alerts about case announcements if a juror spot is open. + + + + + Stenographer: + 記録官 + + + + If checked, you will get alerts about case announcements if a stenographer spot is open. + + + + + CM: + + + + + If checked, you will appear amongst the potential CMs on the server. + + + + + Hosting cases: + + + + + If you're a CM, enter what cases you are willing to host. + + + + + Assets + + + + + Add… + + + + + Select a base folder + + + + + Remove + + + + + ↑ + + + + + ↓ + + + + + Clear Cache + + + + + Clears the lookup cache for assets. Use this when you have added an asset that takes precedence over another existing asset. + + + + + Privacy + + + + + Do not include me in public player counts + + + + + Getting privacy policy... + + + + + %1 (default) + + + + + Courtroom + + + Password + パースワード + + + + Spectator + 観客 + + + + + Search + 検索 + + + + Passworded + + + + + Taken + + + + + Could not find character (char.ini) for %1 + + + + + Generating chars: +%1/%2 + + + + + Showname + + + + + Message + + + + + Name + 名前 + + + + Pre + + + + + Flip + フリップ + + + + Guard + ガード + + + + Additive + + + + + + Casing + + + + + Shownames + + + + + Immediate + + + + White + + + + Green + + + + Red + + + + Orange + オレンジ + + + Blue + + + + Yellow + 黄色 + + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1 + + + + + Case made by %1. + + + + + Navigate to %1 for the CM doc. + + + + + Your case "%1" was loaded! + + + + + + Server + サーバー + + + + + None + + + + + % x offset + + + + + % y offset + + + + + Log goes down + + + + + Log goes up + + + + + Change the horizontal percentage offset of your character's position from the center of the screen. + + + + + Change the vertical percentage offset of your character's position from the center of the screen. + + + + + Set an 'iniswap', or an alternative character folder to refer to from your current character. +Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini + + + + + Remove the currently selected sound effect. + + + + + Hold It! + 待った! + + + + + + When this is turned on, your next in-character message will be a shout! + + + + + Objection! + 意義あり! + + + + Take That! + くらえ! + + + + Toggle between server chat and global AO2 chat. + + + + + + + + This will display the animation in the viewport as soon as it is pressed. + + + + + Guilty! + 有罪! + + + + Bring up the Character Select Screen and change your character. + + + + + Refresh the theme and update all of the ui elements to match. + + + + + Request the attention of the current server's moderator. + + + + + Allows you to change various aspects of the client. + クライアントで変更できます + + + + An interface to help you announce a case (you have to be a CM first to be able to announce cases) + + + + + Switch between Areas and Music lists + + + + + Play a single-shot animation as defined by the emote when checked. + + + + + If preanim is checked, display the input text immediately as the animation plays concurrently. + + + + + Mirror your character's emotes when checked. + + + + + Add text to your last spoken message when checked. + + + + + Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. + + + + + Lets you receive case alerts when enabled. +(You can set your preferences in the Settings!) + + + + + Display customized shownames for all users when checked. + + + + + Custom Shout! + + + + + This will display the custom character-defined animation in the viewport as soon as it is pressed. +To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect + + + + + Play realization sound and animation in the viewport on the next spoken message when checked. + + + + + Shake the screen on next spoken message when checked. + + + + + Display the list of character folders you wish to mute. + + + + + + Increase the health bar. + + + + + + Decrease the health bar. + + + + + Change the text color of the spoken message. +You can also select a part of your currently typed message and use the dropdown to change its color! + + + + + Back to Lobby + ロビーに戻る + + + + Login unsuccessful. + + + + + You were logged out. + + + + + HOLD IT! + + + + + OBJECTION! + + + + + TAKE THAT! + + + + + CUSTOM OBJECTION! + + + + + + + + shouts + + + + + + + has presented evidence + + + + + + + has stopped the music + + + + + [LOADING] %1 + + + + + Debug + + + + + + has played a song + + + + Rainbow + + + + Pink + ピンク + + + Cyan + シアン + + + + To front + + + + + To behind + + + + + Select a character you wish to pair with. + + + + + Change the order of appearance for your character. + + + + + Display the list of characters to pair with. + + + + + Oops, you're muted! + + + + + Set your character's emote to play on your next message. + + + + + Set your character's supplementary background. + + + + + Reset your character's supplementary background to its default. + + + + + Remove the currently selected iniswap from the list and return to the original character folder. + + + + + Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). +Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini + + + + + Choose an effect to play on your next spoken message. +The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by +char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. + + + + + Music + 音楽 + + + + Sfx + 効果音 + + + + Blips + ブリップ + + + + Change character + キャラを変更します + + + + Reload theme + + + + + Call mod + + + + + Settings + 設定 + + + + A/M + + + + + Preanim + + + + + Return back to the server list. + サーバーリストに戻る + + + + Become a spectator. You won't be able to interact with the in-character screen. + + + + + You were granted the Disable Modcalls button. + + + + + + + + CLIENT + クライアント + + + + You have been banned. + + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. + + + + + Too many arguments to load a case! You only need one filename, without extension. + + + + + + + + UNKNOWN + 未知 + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. + + + + + You need to give a filename to save (extension not needed) and the courtroom status! + + + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status! + + + + + Succesfully saved, edit doc and cmdoc link on the ini! + + + + Master + マスター + + + + Stop Current Song + + + + + Play Random Song + + + + + Expand All Categories + + + + + Collapse All Categories + + + + + Fade Out Previous + + + + + Fade In + + + + + Synchronize + + + + + Default + + + + + Reason: + + + + + Call Moderator + モデレーターを呼ぶ + + + + + Error + エラー + + + + You must provide a reason. + + + + + The message is too long. + + + + Choose... + 選択... + + + + Present this piece of evidence to everyone on your next spoken message + + + + + Save evidence to an .ini file. + + + + + Load evidence from an .ini file. + + + + + Destroy this piece of evidence + + + + + Choose.. + + + + + Close the evidence display/editing overlay. +You will be prompted if there's any unsaved changes. + + + + + Save any changes made to this piece of evidence and send them to server. + + + + + Click to edit. Press [X] to update your changes. + + + + + Bring up the Evidence screen. + + + + + Switch evidence to private inventory. + + + + + Switch evidence to global inventory. + + + + + + Transfer evidence to private inventory. + + + + + + Transfer evidence to global inventory. + + + + + The piece of evidence you've been editing has changed. + + + + + Do you wish to keep your changes? + + + + + Name: %1 +Image: %2 +Description: +%3 + + + + + Images (*.png) + イメージ (*.png) + + + + + + Click to edit... + + + + + Add new evidence... + 新しい証拠を付け加える... + + + + Evidence has been modified. + + + + + Do you want to save your changes? + + + + + Current evidence is global. Click to switch to private. + + + + + Current evidence is private. Click to switch to global. + + + + + "%1" has been transferred. + + + + + Save Inventory + + + + + + Ini Files (*.ini) + + + + + Open Inventory + + + + + DemoServer + + + + Load Demo + + + + + + Demo Files (*.demo) + + + + + + Demo file loaded. Send /play or > in OOC to begin playback. + + + + + Resuming playback. + + + + + Pausing playback. + + + + + Setting max_wait to + + + + + + milliseconds. + + + + + Not a valid integer! + + + + + Current max_wait is + + + + + Current demo file reloaded. Send /play or > in OOC to begin playback. + + + + + min_wait is deprecated. Use the client Settings for minimum wait instead! + + + + + Setting debug mode to %1 + + + + + Valid values are 1 or 0! + + + + + Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. + + + + + Available commands: +load, reload, play, pause, max_wait, debug, help + + + + + Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. + + + + + Discord + + Objection! + 意義あり! + + + In Lobby + ロビーでいる + + + Idle + 落ちている + + + In a Server + サーバーでいます + + + Spectating + 観客している + + + + Lobby + + Attorney Online + 逆転裁判オンライン + + + + Attorney Online %1 + 逆転裁判オンライン %1 + + + + Search + 検索 + + + Name + 名前 + + + + It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? + クライアントの設定が正しくないかもしれません。「tiny.cc/getao」からのファイルをダウンロードしましたか? + + + + Version: %1 + バージョン: %1 + + + + Settings + 設定 + + + + Allows you to change various aspects of the client. + クライアントで変更できます + + + + Loading + ロード中 + + + + Cancel + キャンセル + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 + + + + + Yes + + + + + No + + + + + About + について + + + + Couldn't get the message of the day. + + + + + Version: %1 (!) + + + + + New version available: %1 + + + + + Online: %1/%2 + オンライン: %1/%2 + + + + + Offline + オフライン + + + + NetworkManager + + + No description provided. + + + + + QDialogButtonBox + + + + OK + + + + + QObject + + + None + + + + + [MISSING] %1 + + + + + [STREAM] %1 + + + + + chatlogpiece + + + + + UNKNOWN + 未知 + + + has played a song: + は音楽をかける + + + + debug_functions + + + Error: %1 + エラー: %1 + + + + Error + エラー + + + + Notice + 通知 + + + diff --git a/data/translations/ao_pl.qm b/data/translations/ao_pl.qm new file mode 100644 index 00000000..4d8de447 Binary files /dev/null and b/data/translations/ao_pl.qm differ diff --git a/data/translations/ao_pl.ts b/data/translations/ao_pl.ts new file mode 100644 index 00000000..ce5d6ca2 --- /dev/null +++ b/data/translations/ao_pl.ts @@ -0,0 +1,2096 @@ + + + + + AOApplication + + + Disconnected from server. + Odłączono od serwera. + + + Error connecting to master server. Will try again in %1 seconds. + Błąd podczas łączenia się z głównym serwerem. Spróbuj ponownie za %1 sekundy. + + + There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again. + Odkryto błąd podczas łączenia się z głównym serwerem. +Używamy wielu master serwerów, aby zminimalizować każdą możliwą przerwę, ale klient wyczerpał wszystkie możliwe metody znalezienia i połączenia się z jednym. +Sprawdź swoje połączenie internetowe oraz zaporę ogniową i spróbuj ponownie. + + + Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update. + Nieaktualna wersja! Twoja wersja: %1 +Udaj się do aceattorneyonline.com, aby ją zaktualizować. + + + You have been exiled from AO. +Have a nice day. + Zostałeś wygnany z AO. +Życzymy miłego dnia. + + + + Loading + Wczytywanie + + + Loading evidence: +%1/%2 + Ładowanie dowodów: +%1/%2 + + + + Loading music: +%1/%2 + Wczytywanie muzyki: +%1/%2 + + + + Loading chars: +%1/%2 + Wczytywanie postaci: +%1/%2 + + + + Attorney Online %1 + Attorney Online %1 + + + + [Global log] + [Globalny dziennik] + + + + You have been kicked from the server. +Reason: %1 + Zostałeś/aś wyrzucony/a z tego serwera. +Powód: %1 + + + + You have been banned from the server. +Reason: %1 + Zostałeś/aś zbanowany/a z tego serwera. +Powód: %1 + + + + You are banned on this server. +Reason: %1 + Jesteś zbanowany/a na tym serwerze. +Powód: %1 + + + + Demo playback + Odtwarzanie dem + + + + Play back demos you have previously recorded + Odtwarzanie dem, które poprzednio nagrałeś/aś + + + + AOCaseAnnouncerDialog + + + Case Announcer + Ogłaszacz rozpraw + + + + Case title: + Tytuł rozprawy: + + + + Defense needed + Potrzebny obrońca + + + + Prosecution needed + Potrzebny prokurator + + + + Judge needed + Potrzebny sędzia + + + + Jurors needed + Potrzebny ławnik + + + + Stenographer needed + Potrzebny stenograf + + + Witness needed + Potrzebny świadek + + + + AOOptionsDialog + + + Settings + Ustawienia + + + + Gameplay + Gra + + + + Theme: + Motyw: + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. + Ustawia motyw używany w grze. Jeżeli nowy motyw zmienia wygląd poczekalni, będziesz musiał(a) ją również odświeżyć, aby zmiany zaczęły działać, np. poprzez dołączenie do serwera i wyjście z niego. + + + + Subtheme: + Podmotyw: + + + + Sets a 'subtheme', which will stack on top of the current theme and replace anything it can.Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. + Ustawia 'podmotyw', który będzie dodatkiem dla obecnego motywu i będzie zastępywać wszystko to co może. Ustaw na 'server', aby serwer decydował za ciebie. Ustaw na 'default', aby się nie zmieniał. + + + + Reload Theme + Odśwież Motyw + + + + Refresh the theme and update all of the ui elements to match. + Odśwież motyw i uaktualnij wszystkie elementy interfejsu, aby do niego pasowały. + + + + Animated Theme: + Animowany Motyw: + + + + If ticked, themes will be allowed to have animated elements. + Jeśli jest to zaznaczone, motywy będą mogły zawierać animowane elementy. + + + + Log goes downwards: + Dziennik idzie w dół: + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + Jeżeli jest to zaznaczone, nowe wiadomości zaczną się pojawiać na dole (tak jak na czacie OOC). Tradycyjne zachowanie (z AO1) jest równoważne do tego bycia odznaczonym. + + + + Log length: + Długość dziennika: + + + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. + Ilość wiadomości, jakie dziennik IC będzie pokazywał zanim usunie starsze wiadomości. Wartość 0 lub niżej, liczy się jako 'nieskończone'. + + + + Log newline: + Odstępy w dzienniku: + + + + If ticked, new messages will appear separated, with the message coming on the next line after the name. When unticked, it displays it as 'name: message'. + Jeśli jest to zaznaczone, nowe wiadomości będą pojawiać się oddzielnie, z wiadomością w kolejnym wierszu po ksywce. Jeżeli odznaczone, będzie się pokazywać w formacie 'ksywka: wiadomość'. + + + + Log margin: + Margines dziennika: + + + + The distance in pixels between each entry in the IC log. Default: 0. + Odległość w pikselach pomiędzy każdym wpisem w dzienniku IC. Domyślnie: 0. + + + + Log timestamp: + Daty w dzienniku: + + + + If ticked, log will contain a timestamp in UTC before the name. + Jeżeli jest to zaznaczone, dziennik będzie pokazywać datę w UTC przed ksywką. + + + + Log IC actions: + Zapisuj akcje IC: + + + + If ticked, log will show IC actions such as shouting and presenting evidence. + Jeśli jest to zaznaczone, dziennik będzie pokazywać akcje IC takie jak krzyki i prezentowanie dowodów. + + + + Text Stay Time: + Czas Pozostania Tekstu: + + + Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behaivor. + Minimalna ilość czasu (w milisekundach), w której wiadomość IC musi pozostać na ekranie, zanim kolejna zostanie wyświetlona, działa niczym 'kolejka'. Ustaw na 0, aby wyłączyć tą funkcję. + + + + Desynchronize IC Logs: + Desynchronizacja Dziennika IC: + + + + If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). + Jeżeli jest to zaznaczone, dziennik pokaże wiadomości jako odebrane, podczas gdy okno będzie analizować kolejkę (Czas Pozostania Tekstu). + + + + Instant Objection: + Natychmiastowy Sprzeciw: + + + + If Text Stay Time is more than 0, instant objection will skip queued messages instead of waiting to catch up. + Jeśli wartość Czasu Pozostania Tekstu jest większa, niż 0, natychmiastowe sprzeciwy pominą kolejkowane wiadomości, zamiast czekania na nadrobienie zaległości. + + + + Default username: + Domyślna nazwa użytkownika: + + + + Your OOC name will be automatically set to this value when you join a server. + Twoja nazwa OOC będzie automatycznie ustawiana do tej wartości, gdy dołączysz na serwer. + + + + Custom shownames: + Niestandardowe ksywki: + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + Daje domyślną wartość przyciskowi 'Niestandardowe ksywki', który określa, czy klient powinien pokazywać niestandardowe nazwy IC. + + + Backup MS: + Kopia zapasowa master serwera: + + + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. + Jeśli wbudowane szukanie serwerów zawiedzie, gra spróbuje użyć adresu podanego tutaj i użyje go jako adresu zapasowego master serwera. + + + + Discord: + + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + Pozwala innym na Discordzie zobaczyć na jakim serwerze się znajdujesz, jaką postać używasz i jak długo grałeś. + + + Allow Shake/Flash: + Zezwalaj Wstrząśnięcia/Błyśnięcia: + + + Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Pozwala na wstrząśnięcia ekranu i błyśnięcia. Wyłącz to, jeśli przejmujesz się lub masz problemy z światłoczułością oraz/lub napady padaczkowe. + + + + The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. + Ilość wiadomości, jakie dziennik IC będzie pokazywał zanim usunie starsze wiadomości. Wartość 0 lub niżej, liczy się jako 'nieskończone'. + + + + + Log timestamp format: + + Format dat w dzienniku: + + + + + Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. + Minimalna ilość czasu (w milisekundach), w której wiadomość IC musi pozostać na ekranie, zanim kolejna zostanie wyświetlona, działa niczym 'kolejka'. Ustaw na 0, aby wyłączyć tą funkcję. + + + + Text crawl: + Czołganie się tekstu: + + + + Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. + Ilość czasu (w milisekundach), spędzona dla każdej litery, gdy tekst IC jest wyświetlany. + + + + Chat Rate Limit: + Ograniczenie Szybkości Czatu: + + + + Minimum amount of time (in miliseconds) that must pass before the next Enter key press will send your IC message. + Minimalna ilość czasu (w milisekundach), która musi minąć zanim następne naciśnięcie klawiszu Enter wyśle twoją wiadomość IC. + + + + Default showname: + Domyślna ksywka: + + + + Your showname will be automatically set to this value when you join a server. + Twoja ksywka będzie automatycznie ustawiana na tą, gdy dołączysz na serwer. + + + + Alternate Server List: + Alternatywna Lista Serwerów: + + + + Overrides the base URL to retrieve server information from. + Nadpisuje podstawowy adres URL, żeby otrzymywać z niego informacje o serwerze. + + + + Language: + Język: + + + + Sets the language if you don't want to use your system language. + Ustawia język, jeśli nie chcesz używać języka systemowego. + + + + - Keep current setting + - Zostaw obecne ustawienia + + + + Scaling: + Skalowanie: + + + + Sets the default scaling method, if there is not one already defined specifically for the character. + Ustawia domyślny sposób skalowania, jeżeli nie jest już on ustawiony przez postać. + + + + Pixel + Pikselowe + + + + Smooth + Gładkie + + + + Allow Screenshake: + Zezwalaj Wstrząśnięcia: + + + + Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Zezwala na wstrząśnięcia ekranu. Wyłącz to, jeśli przejmujesz się lub masz problemy z światłoczułością oraz/lub z napadami padaczkowymi. + + + + Allow Effects: + Zezwalaj Efekty: + + + + Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Zezwala na efekty ekranu. Wyłącz to, jeśli przejmujesz się lub masz problemy z światłoczułością oraz/lub z napadami padaczkowymi. + + + + Network Frame Effects: + Efekty Network Frame: + + + + Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. + Wysyła wstrząśnięcia ekranu, błyśnięcia i dźwięki, jak zdefiniowano w pliku char.ini, przez sieć. Działa tylko w przypadku serwerów, które obsługują tę funkcję. + + + + Colors in IC Log: + Kolory w Dzienniku IC: + + + + Use the markup colors in the server IC chatlog. + Użyj znaczników kolorów w serwerowym dzienniku IC. + + + + Sticky Sounds: + Lepkie Dźwięki: + + + + Turn this on to prevent the sound dropdown from clearing the sound after playing it. + Włącz to, aby zapobiec listę dźwięków przed odznaczeniem zaznaczonego dźwięku po jego odtworzeniu. + + + + Sticky Effects: + Lepkie Efekty: + + + + Turn this on to prevent the effects dropdown from clearing the effect after playing it. + Włącz to, aby zapobiec listę efektów przed odznaczeniem zaznaczonego efektu po jego odtworzeniu. + + + + Sticky Preanims: + Lepkie Przed-animacje: + + + + Turn this on to prevent preanimation checkbox from clearing after playing the emote. + Włącz to, aby zapobiec przycisku wyboru przed-animacji od odznaczenia się po odegraniu emotki. + + + + Custom Chatboxes: + Niestandardowe Okna Czatu: + + + + Turn this on to allow characters to define their own custom chat box designs. + Włącz to, aby pozwolić postaciom definiować swoje własne designy okienek czatu. + + + + Stickers: + Naklejki: + + + + Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). + Włącz to, aby pozwolić postaciom zdefiniować ich własne naklejki (unikatowe obrazki, które pojawią się nad oknem czatu, niczym awatary lub ksywki). + + + + Continuous Playback: + Nieprzerwane Odtwarzanie: + + + + Whether or not to resume playing animations from where they left off. Turning off might reduce lag. + Od tego zależy, czy animacje będą odtwarzać się od punktu wyjścia. Wyłączenie tego, może zmniejszyć spowolnienia. + + + + Stop Music w/ Category: + Zatrzymaj Muzykę Kategorią: + + + + Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. + Zatrzymaj muzykę podczas dwukrotnego kliknięcia w kategorię. Jeśli jest to wyłączone, użyj menu pod prawym przyciskiem, aby zatrzymać muzykę. + + + + Log to Text Files: + Zapisuj dziennik do plików tekstowych: + + + + Text logs of gameplay will be automatically written in the /logs folder. + Dziennik z rozgrywki będzie automatycznie zapisywany w formie plików tekstowych w folderze /logs. + + + + Log to Demo Files: + Zapisuj dziennik do plików demo: + + + + Gameplay will be automatically recorded as demos in the /logs folder. + Rozgrywka będzie automatycznie zapisywana jako dema w folderze /logs. + + + + Callwords + Zawołania + + + + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> + <html><head/><body>Wpisz tyle zawołań, ile dusza zapragnie. Wielkość liter nie ma znaczenia. Miej na uwadze, aby każde zawołanie było w swoim wierszu!<br>Nie zostawiaj spacji na końcu -- zostaniesz zaalarmowany za każdym razem, kiedy ktoś użyje spacji w swojej wiadomości.</body></html> + + + + Audio + Dźwięk + + + + Audio device: + Urządzenie dźwiękowe: + + + + Sets the audio device for all sounds. + Ustawia urządzenie dźwiękowe dla wszystkich dźwięków. + + + + Music: + Muzyka: + + + + Sets the music's default volume. + Ustawia domyślną głośność muzyki. + + + + SFX: + Efekty dźwiękowe (SFX): + + + + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. + Ustawia domyślną głośność efektów dźwiękowych (SFX). Sprzeciwy, jak i same efekty specjalne są zaliczane jako 'SFX'. + + + + Blips: + Blipy: + + + + Sets the volume of the blips, the talking sound effects. + Ustawia głośność blipów, efektów dźwiękowych mówienia. + + + + Blip rate: + Szybkość blipów: + + + + Sets the delay between playing the blip sounds. + Ustawia opóźnienie pomiędzy graniem blipów. + + + + Play a blip sound "once per every X symbols", where X is the blip rate. 0 plays a blip sound only once. + Zagraj dźwięk blipa "raz na X symboli", gdzie X to tempo blipów. Wartość 0 odtwarza dźwięk blipa tylko raz. + + + + Add or remove base folders for use by assets. Base folders on the bottom are prioritized over those above them. + Dodawaj lub usuwaj foldery base, do użycia przez zasoby. Foldery base na dole będą otwierane wcześniej, od tych nad nimi. + + + + Couldn't get the privacy policy. + Nie udało się uzyskać polityki prywatności. + + + Play a blip sound "once per every X symbols", where X is the blip rate. + Zagraj dźwięk blipa "raz na X symboli", gdzie X to tempo blipów. + + + + Blank blips: + The 'blip' isn't an accurate polish representation of this english word. + Puste blipy: + + + + If true, the game will play a blip sound even when a space is 'being said'. + Jeżeli jest to zaznaczone, gra zagra dźwięk blip za każdym razem spacja "jest mówiona". + + + + Enable Looping SFX: + Włącz pętlące się efekty dźwiękowe (SFX): + + + + If true, the game will allow looping sound effects to play on preanimations. + Jeśli jest to zaznaczone, gra zezwoli na pętlące się efekty dźwiękowe (SFX) na odtwarzanie podczas animacji. + + + + Kill Music On Objection: + Przerwij muzykę na czas sprzeciwu: + + + + If true, AO2 will ask the server to stop music when you use 'Objection!' + Jeśli jest to zaznaczone, gra zapyta serwer by przerwać muzykę, kiedy ktoś się sprzeciwi. + + + + Assets + Zasoby + + + Add or remove base folders for use by assets. Base folders will be searched in the order provided. + Dodawaj lub usuwaj foldery base, do użycia przez zasoby.Foldery base będą otwierane w podanej kolejności. + + + + Add… + Dodaj... + + + + Select a base folder + Wybierz folder base + + + + Remove + Usuń + + + + ↑ + + + + + ↓ + + + + + Clear Cache + Wyczyść pamięć Cache + + + + Clears the lookup cache for assets. Use this when you have added an asset that takes precedence over another existing asset. + Czyści pamięć podręczną zasobów. Użyj tego, kiedy dodałeś/aś zasób, który ma pierwszeństwo przed innym istniejącym zasobem. + + + + Privacy + Prywatność + + + + Do not include me in public player counts + Nie uwzględnia ciebie w liczeniu liczby graczy + + + + Getting privacy policy... + Uzyskiwanie polityki prywatności... + + + + %1 (default) + %1 (domyślne) + + + If true, AO2 will stop the music for you when you or someone else does 'Objection!'. + Jeśli zaznaczone, gra przerwie muzykę, kiedy ktoś się sprzeciwi. + + + Automatic Logging: + Auto-Zapisywanie: + + + If checked, all logs will be automatically written in the /logs folder. + Jeśli jest to zaznaczone, dziennik będzie automatycznie zapisywany w twoim folderze /logs. + + + If true, the game will stop music when someone objects, like in the actual games. + Jeśli zaznaczone, gra przerwie muzykę, kiedy ktoś sprzeciwi się, tak jak w oryginalnych grach. + + + + Casing + Rozprawy + + + + This server supports case alerts. + Ten serwer wspiera komunikaty rozpraw. + + + + This server does not support case alerts. + Ten serwer nie wspiera komunikatów rozpraw. + + + + Pretty self-explanatory. + Dosyć oczywiste. + + + + Casing: + Rozprawy: + + + + If checked, you will get alerts about case announcements. + Jeżel jest to zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw. + + + + Defense: + Obrona: + + + + If checked, you will get alerts about case announcements if a defense spot is open. + Jeśli jest to zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce obrony jest otwarte. + + + + Prosecution: + Prokuratura: + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. + Jeśli jest to zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce prokuratora jest otwarte. + + + + Judge: + Sędzia: + + + + If checked, you will get alerts about case announcements if the judge spot is open. + Jeśli jest to zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce sędzi jest otwarte. + + + + Juror: + Ławnik: + + + + If checked, you will get alerts about case announcements if a juror spot is open. + Jeżeli jest to zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce ławnika jest otwarte. + + + + Stenographer: + Stenograf: + + + + If checked, you will get alerts about case announcements if a stenographer spot is open. + Jeżeli jest to zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce stenografa jest otwarte. + + + + CM: + Zarządca rozpraw (CM): + + + + If checked, you will appear amongst the potential CMs on the server. + Jeśli jest to zaznaczone, pojawisz się wśród potencjalnych zarządców rozpraw (CM) na serwerze. + + + Witness: + Świadek: + + + If checked, you will appear amongst the potential witnesses on the server. + Jeżeli zaznaczone, pojawisz się wśród potencjalnych świadków na serwerze. + + + + Hosting cases: + Hostowane rozprawy: + + + + If you're a CM, enter what cases you are willing to host. + Jeżeli jesteś zarządcą rozpraw (CM), wpisz jakie rozprawy jesteś chętny hostowania. + + + + Courtroom + + + Password + Hasło + + + + Spectator + Spektator + + + + + Search + Wyszukaj + + + + Passworded + Zahasłowany + + + + Taken + Zajęty + + + + Could not find character (char.ini) for %1 + Nie znaleziono postaci (char.ini) dla %1 + + + Could not find %1 + Nie znaleziono %1 + + + + Generating chars: +%1/%2 + Generowanie postaci: +%1/%2 + + + + Showname + Ksywka + + + + Message + Wiadomość + + + + Name + Nazwa + + + + Pre + przed- + + + + Flip + Odwróć + + + + Guard + Na Służbie (mod) + + + + Additive + I'm not sure about this one either.The previous form was "Dodatek". + Kontynuacja + + + + + Casing + Rozprawy + + + + Shownames + Ksywki + + + + Immediate + Natychmiastowe + + + White + Biały + + + Green + Zielony + + + Red + Czerwony + + + Orange + Pomarańczowy + + + Blue + Niebieski + + + Yellow + Żółty + + + This does nothing, but there you go. + To nic nie robi, ale proszę bardzo. + + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1 + Musisz podać nazwę pliku, którego chcesz załadować (rozszerzenie nie jest potrzebne!) Upewnij się, że jest w folderze `base/cases/` i że jest to poprawnie sformatowane ini. +Rozprawy które możesz załadować: %1 + + + + Case made by %1. + Rozprawa stworzona przez %1. + + + + Navigate to %1 for the CM doc. + Przejdź do %1, aby dojść do dokumentu CM. + + + + Your case "%1" was loaded! + Twoja rozprawa "%1" została wczytana! + + + + + Server + Serwer + + + + + None + Nic + + + + % x offset + % wyrówanie x + + + + % y offset + % wyrówanie y + + + + Log goes down + Dziennik idzie w dół + + + + Log goes up + Dziennik idzie w górę + + + + Change the horizontal percentage offset of your character's position from the center of the screen. + Zmień procent poziomego wyrównania pozycji twojej postaci licząc od środka ekranu. + + + + Change the vertical percentage offset of your character's position from the center of the screen. + Zmień procent pionowego wyrównania pozycji twojej postaci licząc od środka ekranu. + + + + Reset your character's supplementary background to its default. + Zresetuj twoje pomocnicze tło postaci do domyślnej wartości. + + + + Set an 'iniswap', or an alternative character folder to refer to from your current character. +Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini + Ustaw 'iniswap' albo alternatywny folder postaci, aby odnosił się do twojej obecnej postaci. +Edytuj poprzez wciśnięcie Enter po wpisaniu tekstu, [X] aby usunąć. Zapisuje się to w base/characters/iniswaps.ini + + + + Remove the currently selected sound effect. + Wycofaj obecny zaznaczony efekt dźwiękowy. + + + + Hold It! + Zaczekaj! + + + + + + When this is turned on, your next in-character message will be a shout! + Kiedy jest to włączone, twoja następna wiadomość IC będzie krzykiem! + + + + Objection! + Sprzeciw! + + + + Take That! + Trzymaj To! + + + + Toggle between server chat and global AO2 chat. + Przełączaj pomiędzy czatem serwerowym i globalnym czatem AO2. + + + + + + + This will display the animation in the viewport as soon as it is pressed. + To będzie wyświetlać animację w oknie, jak tylko zostanie to wciśnięte. + + + + Guilty! + Winny! + + + + Bring up the Character Select Screen and change your character. + Wyświetl ekran zmiany postaci i zmień swoją postać. + + + + Refresh the theme and update all of the ui elements to match. + Odśwież motyw i uaktualnij wszystkie elementy interfejsu, aby dopasować. + + + + Request the attention of the current server's moderator. + Zażądaj uwagę moderatora obecnego serwera. + + + + Allows you to change various aspects of the client. + Umożliwia zmianę różnych aspektów klienta. + + + + An interface to help you announce a case (you have to be a CM first to be able to announce cases) + Interfejs, który pomoże ci ogłosić rozprawę (musisz być zarządcą rozpraw (CM), aby móc ogłaszać rozprawy) + + + + Switch between Areas and Music lists + Przełączaj pomiędzy listami Obszarów i Muzyki + + + + Play a single-shot animation as defined by the emote when checked. + Odegraj pojedyńczą animację, jak zdefiniowano przez emotkę, gdy jest to zaznaczone. + + + + If preanim is checked, display the input text immediately as the animation plays concurrently. + Jeśli przed-animacja jest zaznaczona, wyświetl wpisany tekst natychmiastowo, jednocześnie podczas odgrywania animacji. + + + + Mirror your character's emotes when checked. + Odbij lustrzanie emotki twojej postaci, gdy jest to zaznaczone. + + + + Add text to your last spoken message when checked. + Dodaj tekst do twojej ostatniej wiadomości, gdy jest to zaznaczone. + + + + Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. + Gdy jest to zaznaczone, nie odgrywa dźwięku i wyłącza efekt migającego okienka, gdy ktoś wezwie moderatora. + + + + Lets you receive case alerts when enabled. +(You can set your preferences in the Settings!) + Pozwala ci otrzymywać komunikaty rozpraw, gdy włączone. +(Możesz ustawić swoje preferencje w Ustawieniach!) + + + + Display customized shownames for all users when checked. + Wyświetl niestandardowe ksywki dla wszystkich użytkowników, gdy jest to zaznaczone. + + + + Custom Shout! + Niestandardowy Krzyk! + + + + This will display the custom character-defined animation in the viewport as soon as it is pressed. +To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect + Będzie to wyświatlać animację zdefiniowaną przez niestandardową postaći w oknie, jak tylko zostanie to wciśnięte. +Aby stworzyć coś takiego, folder twojej postaci musi zawierać niestandardowe [webp/apng/gif/png] i niestandardowe [wav/ogg/opus] efekty dźwiękowe + + + + Play realization sound and animation in the viewport on the next spoken message when checked. + Zagraj dźwięk realizacji i animację w oknie podczas następnej wiadomości, gdy jest to zaznaczone. + + + + Shake the screen on next spoken message when checked. + Wstrząśnij ekranem podczas następnej wiadomości, gdy jest to zaznaczone. + + + + Display the list of character folders you wish to mute. + Wyświetl listę folderów postaci, których chcesz zmutować. + + + + + Increase the health bar. + Zwiększ pasek życia. + + + + + Decrease the health bar. + Obniż pasek życia. + + + + Change the text color of the spoken message. +You can also select a part of your currently typed message and use the dropdown to change its color! + Zmień kolor tekstu twojej wiadomości. +Możesz również zaznaczyć część twojej obecnie pisanej wiadomości i użyć listy aby zmienić jej kolor! + + + + Back to Lobby + Powrót do poczekalni + + + + Login unsuccessful. + Logowanie nieudane. + + + + You were logged out. + Zostałeś/aś wylogowany/a. + + + + HOLD IT! + ZACZEKAJ! + + + + OBJECTION! + SPRZECIW! + + + + TAKE THAT! + TRZYMAJ TO! + + + + CUSTOM OBJECTION! + NIESTANDARDOWY SPRZECIW! + + + + + + + shouts + krzyknął/ęła + + + + + + has presented evidence + zaprezentował(a) dowód + + + + + + has stopped the music + zatrzymał(a) muzykę + + + + [LOADING] %1 + [WCZYTYWANIE] %1 + + + + Debug + Debug + + + [STREAM] %1 + [STREAM] %1 + + + [MISSING] %1 + [BRAKUJĄCY] %1 + + + + + has played a song + włączył(a) piosenkę + + + You will now pair up with %1 if they also choose your character in return. + Będziesz teraz w parze z %1, jeśli oni również wybiorą twoją postać. + + + You have set your offset to %1%%. + Ustawiłeś/aś swoje wyrównanie do %1%%. + + + Rainbow + Tęczowy + + + Disable Modcalls + Wyłącz wezwania moda + + + Pink + Różowy + + + Cyan + Turkusowy + + + % offset + % wyrówanie + + + + To front + Do przodu + + + + To behind + Do tyłu + + + + Select a character you wish to pair with. + Zaznacz postać, z którą chcesz się sparować. + + + Change the percentage offset of your character's position from the center of the screen. + Zmień procentową odległość dla pozycji twojej postaci licząc od środka ekranu. + + + + Change the order of appearance for your character. + Zmień kolejność występowania dla twojej postaci. + + + + Display the list of characters to pair with. + Wyświetl listę postaci do sparowania się z. + + + + Oops, you're muted! + Ups, jesteś zmutowany! + + + + Set your character's emote to play on your next message. + Ustaw emotkę twojej postaci do odegrania podczas następnej wiadomości. + + + + Set your character's supplementary background. + Ustaw uzupełniające tło twojej postaci. + + + Set an 'iniswap', or an alternative character folder to refer to from your current character. +Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/iniswaps.ini + Ustaw 'iniswap' albo alternatywny folder postaci, aby odnosił się do twojej obecnej postaci. +Edytuj poprzez pisanie i naciśnięcie enter, [X] aby usunąć. To się zapisuje do base/characters/<charname>/iniswaps.ini + + + + Remove the currently selected iniswap from the list and return to the original character folder. + Usuń obecne zaznaczony iniswap z listy i powróć do pierwotnego foldera postaci. + + + + Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). +Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini + Ustaw efekt dźwiękowy do zagrania dla twojej następnej 'Animacji'. Zostawienie tego jako domyślne, użyje dźwięku zdefiniowanego przez emotkę (jeśli istnieje). +Edytuj poprzez wciśnięcie Enter po wpisaniu tekstu, [X] aby usunąć. Zapisuje się to w base/characters/<charname>/soundlist.ini + + + + Choose an effect to play on your next spoken message. +The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by +char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. + Wybierz efekt dla twojej następnej wiadomości. +Efekty są zdefiniowane w pliku theme/effect/effects.ini. Twoja postać może zdefiniować niestandardowe efekty przez +kategorię char.ini [Options], effects = 'miscname' gdzie się odnosi do misc/<miscname>/effects.ini, aby przejrzeć efekty. + + + + Music + Muzyka + + + + Sfx + Sfx + + + + Blips + Blipy + + + Log limit + Limit dziennika + + + + Change character + Zmiana postaci + + + + Reload theme + Odśwież motyw + + + + Call mod + Wezwij moda + + + + Settings + Ustawienia + + + + A/M + O meaning 'Obszar' and M meaning 'Muzyka'. + O/M + + + + Preanim + Whatever, I'll just call it an animation. + Animacja + + + + Return back to the server list. + Wróć z powrotem do listy serwerów. + + + + Become a spectator. You won't be able to interact with the in-character screen. + Funkcja spektatora. Nie będziesz mógł wchodzić w interakcję z oknem IC. + + + + You were granted the Disable Modcalls button. + Zostałeś/aś obdarzonym/a przyciskiem Wyłącz Wezwania Moda. + + + + + + + CLIENT + KLIENT + + + + You have been banned. + Zostałeś/aś zbanowany. + + + You were granted the Guard button. + Zostałeś obdarzonym przyciskiem Na Służbie. + + + You opened the settings menu. + Otworzyłeś/aś ustawienia. + + + You will now pair up with + Będzie teraz w parze z + + + if they also choose your character in return. + jeżeli oni również wybiorą ciebie spowrotem. + + + You are no longer paired with anyone. + Nie jesteś już w parze. + + + Are you sure you typed that well? The char ID could not be recognised. + Czy jesteś pewien, że dobrze to napisałeś? ID postaci nie zostało rozpoznane. + + + You have set your offset to + Musisz ustawić swoje wyrównanie do + + + Your offset must be between -100% and 100%! + Twoje wyrównanie musi być między -100%, a 100%! + + + That offset does not look like one. + To wyrównanie nie jest poprawne. + + + You have set your vertical offset to %1%%. + Ustawiłeś/aś swoje pionowe wyrównanie do %1%%. + + + Your vertical offset must be between -100% and 100%! + Twoje pionowe wyrównanie musi być pomiędzy -100%, a 100%! + + + That vertical offset does not look like one. + To pionowe wyrównanie nie jest poprawne. + + + You switched your music and area list. + Przełączyłeś/aś swoją listę obszarów i muzyki. + + + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. + Włączyłeś/aś funkcje, które ten serwer może nie wspierać. Możliwe, że nie będziesz mógł/mogła rozmawiać na czacie IC lub gorzej przez to. + + + Your pre-animations interrupt again. + Twoje animacje będą przerywać tekst znowu. + + + Your pre-animations will not interrupt text. + Twoje animacje nie będą przerywać tekstu. + + + Couldn't open chatlog.txt to write into. + Nie można było otworzyć chatlog.txt, aby móc w nim pisać. + + + The IC chatlog has been saved. + Dziennik czatu IC został zapisany. + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. + Nie masz folderu `base/cases/`! Został zrobiony tylko dla ciebie, ale widząc, że ZOSTAŁ zrobiony tylko dla ciebie, prawdopodobnie plik rozpraw, którego szukasz nie został znaleziony tutaj. + + + + Too many arguments to load a case! You only need one filename, without extension. + Zbyt dużo parametrów, aby załadować rozprawę! Potrzebujesz tylko jedną nazwę pliku, bez rozszerzenia nazwy pliku. + + + + + + + UNKNOWN + NIEZNANE + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. + Nie masz folderu `base/cases/`! Został zrobiony tylko dla ciebie, ale widząc, że ZOSTAŁ zrobiony tylko dla ciebie, prawdopodobnie jakoś usunąłeś/usunęłaś go. + + + + You need to give a filename to save (extension not needed) and the courtroom status! + Musisz podać nazwę pliku, aby go zapisać (rozszerzenie nie jest potrzebne) i status sali sądowej! + + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status! + Zbyt dużo parametrów, aby zapisać rozprawę! Potrzebujesz tylko jedną nazwę pliku, bez rozszerzenia nazwy pliku i statusu sali sądowej! + + + + Succesfully saved, edit doc and cmdoc link on the ini! + Zapisano pomyślnie, edytuj dokument i link cmdoc w .ini! + + + + Stop Current Song + Zatrzymaj Obecną Piosenkę + + + + Play Random Song + Włącz Losową Piosenkę + + + + Expand All Categories + Rozwiń Wszystkie Kategorie + + + + Collapse All Categories + Zwiń Wszystkie Kategorie + + + + Fade Out Previous + Wyciszaj poprzednie + + + + Fade In + Stopniowe podgłoszenie + + + + Synchronize + Zsynchronizuj + + + + Default + Domyślne + + + + Reason: + Powód: + + + + Call Moderator + Wezwij Moderatora + + + + + Error + Błąd + + + + You must provide a reason. + Musisz podać przyczynę. + + + + The message is too long. + Ta wiadomość jest zbyt długa. + + + Choose... + Wybierz... + + + + Present this piece of evidence to everyone on your next spoken message + Zaprezentujesz ten dowód każdemu podczas twojej następnej wiadomości + + + + Save evidence to an .ini file. + Zapisz dowody do pliku .ini. + + + + Load evidence from an .ini file. + Załaduj dowody z pliku .ini. + + + + Destroy this piece of evidence + Zniszcz ten dowód + + + + Choose.. + Wybierz.. + + + + Close the evidence display/editing overlay. +You will be prompted if there's any unsaved changes. + Zamknij wyświetlanie/edytowanie okienka dowodów. +Zostaniesz zawiadomiony, jeśli są jakieś niezapisane zmiany. + + + + Save any changes made to this piece of evidence and send them to server. + Zapisz zmiany do tego dowodu i wyślij je do serwera. + + + Double-click to edit. Press [X] to update your changes. + Kliknij dwa razy, aby edytować. Naciśnij [X], by uaktualnić zmiany. + + + Click the pencil icon to edit. Press [X] to update your changes. + Naciśnij na ikonę ołówka, aby edytować. Naciśnij [X], aby zaktualizować swoje zmiany. + + + Edit this piece of evidence. + Edytuj ten dowód. + + + + Click to edit. Press [X] to update your changes. + Naciśnij, aby edytować. Kliknij [X], aby zaktualizować swoje zmiany. + + + + Bring up the Evidence screen. + Wyświetl ekran dowodów. + + + + Switch evidence to private inventory. + Przełącz ekran dowodów do prywatnego ekwipunku. + + + + Switch evidence to global inventory. + Przełącz ekran dowodów do globalnego ekwipunku. + + + + + Transfer evidence to private inventory. + Przenieś dowody do prywatnego ekwipunku. + + + + + Transfer evidence to global inventory. + Przenieś dowody do globalnego ekwipunku. + + + + The piece of evidence you've been editing has changed. + Dowód, który edytujesz, właśnie się zmienił. + + + + Do you wish to keep your changes? + Czy chcesz zatrzymać zmiany? + + + + Name: %1 +Image: %2 +Description: +%3 + Nazwa: %1 +Obraz: %2 +Opis: +%3 + + + + Images (*.png) + Obrazy (*.png) + + + + + + Click to edit... + Naciśnij, aby edytować... + + + Click the pencil to edit... + Naciśnij na ołówek, aby edytować... + + + Double-click to edit... + Kliknij dwa razy, aby edytować... + + + + Add new evidence... + Dodaj nowy dowód... + + + + Evidence has been modified. + Dowody zostały zmodyfikowane. + + + + Do you want to save your changes? + Czy chcesz zapisać zmiany? + + + + Current evidence is global. Click to switch to private. + Obecne dowody są globalne. Kliknij, aby przełączyć się na prywatne. + + + + Current evidence is private. Click to switch to global. + Obecne dowody są prywatne. Kliknij, aby przełączyć się na globalne. + + + + "%1" has been transferred. + "%1" został przeniesiony/a. + + + + Save Inventory + Zapisz ekwipunek + + + + + Ini Files (*.ini) + Pliki ini (*.ini) + + + + Open Inventory + Otwórz ekwipunek + + + + DemoServer + + + + Load Demo + Wczytaj Demo + + + + + Demo Files (*.demo) + Pliki Demo (*.demo) + + + + + Demo file loaded. Send /play or > in OOC to begin playback. + Plik demo wczytany. Wyślij /play lub > w czacie OOC, aby rozpocząć odtwarzanie. + + + + Resuming playback. + Wznawianie odtwarzania. + + + + Pausing playback. + Pauzowanie odtwarzania. + + + + Setting max_wait to + Ustawianie max_wait do + + + + + milliseconds. + milisekund. + + + + Not a valid integer! + Nie jest to prawidłowa liczba całkowita! + + + + Current max_wait is + Bieżący max_wait to + + + + Current demo file reloaded. Send /play or > in OOC to begin playback. + Bieżący plik demo wczytany ponownie. Wyślij /play lub > w czacie OOC, aby rozpocząć odtwarzanie. + + + + min_wait is deprecated. Use the client Settings for minimum wait instead! + min_wait nie jest już używany. Użyj Ustawień AO2, aby zmienić minimalną wartość czekania! + + + + Setting debug mode to %1 + Ustawianie trybu debugowania do %1 + + + + Valid values are 1 or 0! + Prawidłowe wartości to 1 albo 0! + + + + Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. + Włącz i wyłącz tryb debugowania za pomocą /debug 1 oraz /debug 0, który będzie używać piątego licznika (TI#4), aby pokazać pozostały czas do następnej lini demo. + + + + Available commands: +load, reload, play, pause, max_wait, debug, help + Dostępne komendy: +load, reload, play, pause, max_wait, debug, help + + + Available commands: +load, reload, play, pause, max_wait, help + Dostępne komendy: +load, reload, play, pause, max_wait, help + + + + Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. + Osiągnięto koniec pliku demo. Wyślij /play lub > w czacie OOC, aby zrestartować demo lub /load, aby otworzyć nowy plik. + + + + Lobby + + + Attorney Online %1 + Attorney Online %1 + + + + Search + Szukaj + + + Name + Nazwa + + + + It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? + Wygłąda na to, że twój klient nie jest ustawiony poprawnie. +Czy pobrałeś wszystkie zasoby poprawnie z tiny.cc/getao, włączając duży folder 'base'? + + + + Version: %1 + Wersja: %1 + + + + Settings + Ustawienia + + + + Allows you to change various aspects of the client. + Umożliwia zmianę różnych aspektów klienta. + + + + Loading + Ładowanie + + + + Cancel + Anuluj + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 + <h2>Attorney Online %1</h2>Symulator dramy sądowej<p><b>Kod źródłowy:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Główny rozwój:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Rozwój Klienta:</b><br>Cents02, windrammer, skyedeving<p><b>Testowanie QA:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (inaczej Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translacje:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Szczególne podziękowania:</b><br>CrazyJC (dyrektor wydania 2.8) i MaximumVolty (promocja wydania 2.8); Remy, Hibiki, court-records.net (sprite'y); Qubrick (webAO); Rue (strona internetowa); Draxirch (design interfejsu); Lewdton i Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy oraz FanatSors (AO1); hostom serwerów, mistrzom gier, twórcom rozpraw, twórcom kontentu, i dla całej społeczności AO2!<p>Attorney Online sieciowy projekt wizualnej powieści ma prawa autorskie (c) 2016-2021 Attorney Online developerzy. Dotyczy licencji open-source. Wszystkie inne własności należą do ich odpowiednich właścicieli.<p>Działa na wersji Qt %2 z silnikiem audio BASS.<br>Plugin APNG załadowany: %3<p>Zbudowany na %4 + + + + Couldn't get the message of the day. + Nie można było uzyskać wiadomość dnia. + + + + Version: %1 (!) + Wersja: %1 (!) + + + + New version available: %1 + Dostępna jest nowa wersja: %1 + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 + <h2>Attorney Online %1</h2>Symulator dramy sądowej<p><b>Kod źródłowy:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Główny rozwój:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Rozwój Klienta:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Testowanie QA:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (inaczej Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Szczególne podziękowania:</b><br>CrazyJC (dyrektor wydania 2.8) i MaximumVolty (promocja wydania 2.8); Remy, Hibiki, court-records.net (sprite'y); Qubrick (webAO); Rue (strona internetowa); Draxirch (design UI); Lewdton i Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy oraz FanatSors (AO1); hostom serwerów, mistrzom gier, twórcom rozpraw, twórcom kontentu, i dla całej społeczności AO2!<p>Attorney Online sieciowy projekt wizualnej powieści ma prawa autorskie (c) 2016-2020 Attorney Online developerzy. Dotyczy licencji open-source. Wszystkie inne własności należą do ich odpowiednich właścicieli.<p>Działa na wersji Qt %2 z silnikiem audio BASS.<br>Plugin APNG załadowany: %3<p>Zbudowany na %4 + + + + Yes + Tak + + + + No + Nie + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the %3 audio engine.<p>Built on %4 + <h2>Attorney Online %1</h2>Symulator dramy sądowej<p><b>Kod źródłowy:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Główny rozwój:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Rozwój Klienta:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Testowanie QA:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Szczególne podziękowania:</b><br>CrazyJC (dyrektor wydania 2.8) and MaximumVolty (promocja wydania 2.8); Remy, Hibiki, court-records.net (sprite'y); Qubrick (webAO); Rue (strona internetowa); Draxirch (design UI); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); hostom serwerów, mistrzom gier, twórcom rozpraw, twórcom kontentu, i dla całej społeczności AO2!<p>Attorney Online sieciowy projekt wizualnej powieści ma prawa autorskie (c) 2016-2020 Attorney Online developerzy. Dotyczy licencji open-source. Wszystkie inne własności należą do ich odpiowiednich właścicieli.<p>Działa na wersji QT %2 z %3 silnikiem audio.<p>Zbudowany na %4 + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>2.8 Major Release development:</b><br>Crystalwarrior, Iamgoofball<p><b>2.8 Quality Assurance:</b><br>WillDean, Captain N, Mr M, Riel, Seimmet, Fury McFlurry,CedricDewitt, Chewable Tablets, Fantos, Futugaze,Geck, Minx, Pandae, Sierra, CrazyJC, CaseyMayCazy,GreenBowers, Robotic Overlord, Veritas, Gin-Gi<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy, the AO2 community, server hosts, game masters,case makers, content creators and players! + <h2>Attorney Online %1</h2>Symulator dramy sądowej<p><b>Kod źródłowy:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Główny rozwój:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Główny rozwój nad wydaniem 2.8:</b><br>Crystalwarrior, Iamgoofball<p><b>Zapewnienie jakości 2.8:</b><br>WillDean, Captain N, Mr M, Riel, Seimmet, Fury McFlurry,CedricDewitt, Chewable Tablets, Fantos, Futugaze,Geck, Minx, Pandae, Sierra, CrazyJC, CaseyMayCazy,GreenBowers, Robotic Overlord, Veritas, Gin-Gi<p><b>Szczególne podziękowania:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy, społeczności AO2, hostów serwerów, mistrzów gier, twórców rozpraw, twórców kontentu i dla graczy! + + + + About + Opis + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + <h2>Attorney Online: %1</h2>Symulator dramy sądowej<p><b>Kod żródłowy:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Główny rozwój:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Szczególne podziękowania:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + + + + Online: %1/%2 + + + + + + Offline + + + + + NetworkManager + + + No description provided. + Nie podano opisu. + + + + QDialogButtonBox + + + + OK + OK + + + + QObject + + + None + Nic + + + + [MISSING] %1 + [BRAKUJĄCY] %1 + + + + [STREAM] %1 + [STREAM] %1 + + + + chatlogpiece + + + + + UNKNOWN + NIEZNANE + + + has played a song: + włączył piosenkę: + + + + debug_functions + + + Error: %1 + Błąd: %1 + + + + Error + Błąd + + + + Notice + Ogłoszenie + + + diff --git a/data/translations/ao_pt.qm b/data/translations/ao_pt.qm new file mode 100644 index 00000000..6916ab6d Binary files /dev/null and b/data/translations/ao_pt.qm differ diff --git a/data/translations/ao_pt.ts b/data/translations/ao_pt.ts new file mode 100644 index 00000000..f9aa5334 --- /dev/null +++ b/data/translations/ao_pt.ts @@ -0,0 +1,2099 @@ + + + + + AOApplication + + + Disconnected from server. + Desconectado do servidor. + + + Error connecting to master server. Will try again in %1 seconds. + Erro ao conectar ao servidor principal. Testando novamente em %1 segundos. + + + There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again. + Ocorreu um erro ao obter a lista de servidores. Verifique sua conexão à Internet e firewall e tente novamente. + + + Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update. + Versão desatualizada! Sua versão: %1 +Acesse aceattorneyonline.com para atualizar. + + + You have been exiled from AO. +Have a nice day. + Você foi exilado do Attorney Online. +Tenha um bom dia. + + + + Loading + Carregando + + + + Loading chars: +%1/%2 + Carregando personagens: +%1/%2 + + + Loading evidence: +%1/%2 + Carregando evidências: +%1/%2 + + + + Attorney Online %1 + Attorney Online %1 + + + + Loading music: +%1/%2 + Carregando músicas: +%1/%2 + + + + [Global log] + + + + + You have been kicked from the server. +Reason: %1 + Você foi expulso do servidor. +Motivo: %1 + + + + You have been banned from the server. +Reason: %1 + Você foi banido do servidor. +Motivo: %1 + + + + You are banned on this server. +Reason: %1 + Você foi banido neste servidor. +Motivo: %1 + + + + Demo playback + + + + + Play back demos you have previously recorded + + + + + AOCaseAnnouncerDialog + + + Case Announcer + Anunciar caso + + + + Case title: + Título do caso: + + + + Defense needed + Precisa-se de Defesa + + + + Prosecution needed + Precisa-se de Promotor + + + + Judge needed + Precisa-se de Juíz + + + + Jurors needed + Precisa-se de Jurados + + + + Stenographer needed + Precisa-se de Estenógrafo + + + Witness needed + Precisa-se de Testemunha + + + + AOOptionsDialog + + + Settings + Configurações + + + + Gameplay + Jogabilidade + + + + Theme: + Tema visual: + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. + Define o tema usado no jogo. Se o novo tema alterar a aparência do lobby, será necessário recarregá-lo para que as alterações tenham efeito, como ingressar em um servidor e deixá-lo. + + + + Subtheme: + + + + + Sets a 'subtheme', which will stack on top of the current theme and replace anything it can.Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. + + + + + Reload Theme + + + + + Refresh the theme and update all of the ui elements to match. + Atualize o tema e todos os elementos da interface do usuário para corresponder. + + + + Animated Theme: + + + + + If ticked, themes will be allowed to have animated elements. + + + + + Log goes downwards: + Log vai para baixo: + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + Removed the part about AO1 behaviour, nobody cares boomer. + Se selecionado, novas mensagens irão aparecer na parte inferior (assim como o chat OOC). + + + + Log length: + Tamanho do log: + + + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. + A quantidade de mensagens que o chat do IC manterá antes de excluir as mensagens mais antigas. Um valor igual ou inferior a 0 conta como 'infinito'. + + + + The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. + + + + + Log newline: + Nova linha no log: + + + + If ticked, new messages will appear separated, with the message coming on the next line after the name. When unticked, it displays it as 'name: message'. + Se marcada, novas mensagens aparecerão separadamente e a mensagem aparecerá na próxima linha após o nome. Quando desmarcado, ele mostra como 'nome: mensagem'. + + + + Log margin: + Margem no log: + + + + The distance in pixels between each entry in the IC log. Default: 0. + A distância em pixels entre cada entrada no log IC. Padrão: 0. + + + + Log timestamp: + Timestamp no registro: + + + + If ticked, log will contain a timestamp in UTC before the name. + Se marcado, o registro conterá um carimbo de tempo em UTC antes do nome. + + + + + Log timestamp format: + + + + + + Log IC actions: + + + + + If ticked, log will show IC actions such as shouting and presenting evidence. + + + + + Text Stay Time: + + + + + Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. + + + + + Desynchronize IC Logs: + + + + + If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). + + + + + Instant Objection: + + + + + If Text Stay Time is more than 0, instant objection will skip queued messages instead of waiting to catch up. + + + + + Text crawl: + + + + + Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. + + + + + Chat Rate Limit: + + + + + Minimum amount of time (in miliseconds) that must pass before the next Enter key press will send your IC message. + + + + + Default username: + Nome de usuário padrão: + + + + Your OOC name will be automatically set to this value when you join a server. + Seu nome OOC será automaticamente definido com esse valor quando você ingressar em um servidor. + + + + Custom shownames: + Nomes personalizados: + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + 'Custom shownames' changed to 'Shownames' because that's the actual name + Fornece o valor padrão para a caixa de seleção 'Shownames' no jogo, que determina se o cliente deve exibir nomes personalizados nos personagens. + + + + Default showname: + + + + + Your showname will be automatically set to this value when you join a server. + + + + + Alternate Server List: + + + + + Overrides the base URL to retrieve server information from. + + + + + Add or remove base folders for use by assets. Base folders on the bottom are prioritized over those above them. + + + + + Couldn't get the privacy policy. + + + + Backup MS: + MS de backup: + + + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. + Se as pesquisas internas do servidor falharem, o jogo tentará o endereço fornecido aqui e o usará como um endereço de servidor principal de backup. + + + + Discord: + + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + Permite que outras pessoas no Discord vejam em que servidor você está, qual personagem está jogando e há quanto tempo está jogando. + + + + Scaling: + + + + + Sets the default scaling method, if there is not one already defined specifically for the character. + + + + + Pixel + + + + + Smooth + + + + + Log to Text Files: + + + + + Text logs of gameplay will be automatically written in the /logs folder. + + + + + Log to Demo Files: + + + + + Gameplay will be automatically recorded as demos in the /logs folder. + + + + + Play a blip sound "once per every X symbols", where X is the blip rate. 0 plays a blip sound only once. + + + + + If true, AO2 will ask the server to stop music when you use 'Objection!' + + + + + Assets + + + + + Add… + + + + + Select a base folder + + + + + Remove + + + + + ↑ + + + + + ↓ + + + + + Clear Cache + + + + + Clears the lookup cache for assets. Use this when you have added an asset that takes precedence over another existing asset. + + + + + Privacy + + + + + Do not include me in public player counts + + + + + Getting privacy policy... + + + + + %1 (default) + + + + Allow Shake/Flash: + Permitir Shake/Flash: + + + Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Permite agitar e piscar. Desative isso se você tiver preocupações ou problemas com fotosensibilidade e/ou convulsões. + + + + Language: + Língua: + + + + Sets the language if you don't want to use your system language. + Define o idioma se você não quiser usar o idioma do sistema. + + + Punctuation delay modifier. Enable it for the blips to slow down on punctuations. + Habilite para adicionar uma pequena pausa nos sinais de pontuação. + + + + Callwords + Palavras-chave + + + + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> + <html><head/><body>Digite quantas palavras-chave você desejar. Estes não diferenciam maiúsculas de minúsculas. Certifique-se de deixar cada palavra chave em sua própria linha!<br>Não deixe uma linha com um espaço no final - você será alertado toda vez que alguém usar um espaço em suas mensagens.</body></html> + + + + Audio + Áudio + + + + Audio device: + Dispositivo de áudio: + + + + Sets the audio device for all sounds. + Define o dispositivo de áudio para todos os sons. + + + + Music: + Música: + + + + Sets the music's default volume. + Define o volume padrão da música. + + + + SFX: + SFX: + + + + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. + Define o volume padrão do SFX. Interjeições e efeitos sonoros reais contam como 'SFX'. + + + Gives the default value for the in-game 'Custom shownames' checkbox, which in turn determines whether the client should display custom in-character names. + Fornece o valor padrão para a caixa de seleção 'Shownames' no jogo, que determina se o cliente deve exibir nomes personalizados nos caracteres. + + + Slower text speed: + Texto mais lento: + + + Set the text speed to be the same as the AA games. + A velocidade do texto será a mesma dos jogos AA. + + + Blip delay on punctuations: + Atraso na pontuação: + + + Sets the default volume for music. + Define o volume padrão da música. + + + Sets the default volume for SFX sounds, like interjections or other character sound effects. + Define o volume padrão para sons SFX, como interjeições ou outros efeitos sonoros de personagens. + + + + Blips: + + + + + Sets the volume of the blips, the talking sound effects. + Define o volume dos blips, os efeitos sonoros de fala. + + + + Blip rate: + Taxa de blip: + + + + Sets the delay between playing the blip sounds. + Define o atraso entre a reprodução dos sons de blip. + + + + Blank blips: + Blips em branco: + + + + If true, the game will play a blip sound even when a space is 'being said'. + Se ativado, o jogo emitirá um sinal sonoro, mesmo quando um espaço estiver sendo "dito". + + + + Enable Looping SFX: + Ative o SFX em loop: + + + + If true, the game will allow looping sound effects to play on preanimations. + Se ativado, o jogo permitirá que efeitos sonoros em loop sejam reproduzidos em pré-animações. + + + + Kill Music On Objection: + Parar a música no protesto: + + + If true, the game will stop music when someone objects, like in the actual games. + Se ativado, o jogo interrompe a música quando alguém protestar , como nos jogos reais. + + + + - Keep current setting + - Mantenha as configurações atuais + + + + Allow Screenshake: + Permitir screenshake: + + + + Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Permite o tremor de tela (AVISO: Pode causar convulsões devido à imagens tremidas). + + + + Allow Effects: + Permitir efeitos: + + + + Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Permite efeitos de tela (AVISO: Pode causar convulsões devido à imagens tremidas).. + + + + Network Frame Effects: + Envie efeitos para o servidor: + + + + Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. + Envie vibrações, flashes e sons na tela, conforme definido no char.ini pela rede. Funciona apenas para servidores que suportam essa funcionalidade. + + + + Colors in IC Log: + Cores no Log IC: + + + + Use the markup colors in the server IC chatlog. + Permitir cores no chat do IC no servidor. + + + + Sticky Sounds: + Manter sons: + + + + Turn this on to prevent the sound dropdown from clearing the sound after playing it. + Marque para evitar que o som do menu suspenso apague o som após a reprodução. + + + + Sticky Effects: + Manter efeitos: + + + + Turn this on to prevent the effects dropdown from clearing the effect after playing it. + Ative-o para impedir que o menu suspenso de efeito exclua o efeito após reproduzi-lo. + + + + Sticky Preanims: + Manter preanims: + + + + Turn this on to prevent preanimation checkbox from clearing after playing the emote. + Ative-o para impedir que a caixa de seleção de pré-animação seja desmarcada após a execução do emote. + + + + Custom Chatboxes: + Caixas de bate-papo personalizadas: + + + + Turn this on to allow characters to define their own custom chat box designs. + Ative isso para permitir que os personagens tenham as suas próprias caixas de bate-papo personalizadas. + + + + Stickers: + + + + + Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). + + + + + Continuous Playback: + + + + + Whether or not to resume playing animations from where they left off. Turning off might reduce lag. + + + + + Stop Music w/ Category: + + + + + Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. + + + + Play a blip sound "once per every X symbols", where X is the blip rate. + Reproduz um som de blip "uma vez para cada símbolo X", em que X é a taxa de blip. + + + If true, AO2 will stop the music for you when you or someone else does 'Objection!'. + Se ativado, o AO2 interromperá a música quando você ou outra pessoa fizer uma 'Protesto!'. + + + + Casing + Caso + + + + This server supports case alerts. + Este servidor suporta anúncios de casos. + + + + This server does not support case alerts. + Este servidor não suporta alertas de caso. + + + + Pretty self-explanatory. + Bastante auto-explicativo. + + + + Casing: + Caso: + + + + If checked, you will get alerts about case announcements. + Se marcado, você será alertado quando houverem anúncios de casos. + + + + Defense: + Defesa: + + + + If checked, you will get alerts about case announcements if a defense spot is open. + Se marcado, você receberá alertas sobre os anúncios de casos, se um ponto de defesa estiver aberto. + + + + Prosecution: + Promotor: + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. + Se marcado, você receberá alertas sobre os anúncios de casos, se uma posição de promotor estiver disponível. + + + + Judge: + Juíz: + + + + If checked, you will get alerts about case announcements if the judge spot is open. + Se marcado, você receberá alertas sobre os anúncios de casos, se o local do juíz: estiver aberto. + + + + Juror: + Jurado: + + + + If checked, you will get alerts about case announcements if a juror spot is open. + Se marcado, você receberá alertas sobre os anúncios de casos, se um local do jurado estiver aberto. + + + + Stenographer: + Estenógrafo: + + + + If checked, you will get alerts about case announcements if a stenographer spot is open. + Se marcado, você receberá alertas sobre anúncios de casos, se um local de estenógrafo estiver aberto. + + + + CM: + CM: + + + + If checked, you will appear amongst the potential CMs on the server. + Se marcado, você aparecerá entre os CMs possíveis no servidor. + + + Automatic Logging: + Registro automático: + + + If checked, all logs will be automatically written in the /logs folder. + Se marcado, todos os registros serão automaticamente salvos na pasta logs. + + + Witness: + Testemunha: + + + If checked, you will appear amongst the potential witnesses on the server. + Se marcado, você aparecerá entre as testemunhas em potencial no servidor. + + + + Hosting cases: + Casos: + + + + If you're a CM, enter what cases you are willing to host. + Se você é um CM, insira os casos que deseja hospedar. + + + Colorful IC log: + Log IC colorido: + + + Enables colored text in the log. + Ativa o texto colorido no log. + + + Only inline coloring: + Somente coloração em linha: + + + Only inline coloring will be shown such as <>,|| etc. + Somente a coloração em linha será mostrada como <>, ||, etc. + + + Mirror IC log: + O log IC reflete interrupções: + + + IC log will mirror the IC box. Meaning that if somebody gets interrupted nobody will know what they wanted to say. Enable for a more realistic experience. + O log IC espelhará o chat IC Significando que se alguém for interrompido, ninguém saberá o que queria dizer. Habilite para uma experiência mais realista. + + + + Courtroom + + + Password + Senha + + + + Spectator + Espectador + + + + + Search + Pesquisar + + + + Passworded + A translation wouldn't fit because of the shitty theme system. + + + + + Taken + Em uso + + + + Could not find character (char.ini) for %1 + + + + + Generating chars: +%1/%2 + Gerando personagens: +%1/%2 + + + Could not find %1 + Não foi possível encontrar %1 + + + + Showname + A translation wouldn't fit because of the shitty theme system. + + + + + Message + Mensagem + + + OOC Message + Mensagem OOC + + + + Name + Nome + + + + Pre + A translation wouldn't fit because of the shitty theme system. + + + + + Flip + A translation wouldn't fit because of the shitty theme system. + + + + + + Casing + A translation wouldn't fit because of the shitty theme system. + + + + + Shownames + A translation wouldn't fit because of the shitty theme system. + + + + + Immediate + A translation wouldn't fit because of the shitty theme system. + + + + White + Branco + + + Green + Verde + + + Red + Vermelho + + + Orange + Laranja + + + Blue + Azul + + + Yellow + Amarelo + + + Rainbow + Arco Iris + + + Pink + Rosa + + + Cyan + Ciano + + + % offset + % deslocamento + + + + Music + + + + + Sfx + + + + + Blips + + + + + + Server + + + + + Change character + + + + + Reload theme + + + + + Call mod + + + + + Settings + + + + + A/M + + + + + Preanim + + + + + Back to Lobby + A translation wouldn't fit because of the shitty theme system. + Lobby + + + + You were granted the Disable Modcalls button. + Você recebeu o botão Desativar Modcalls. + + + + You have been banned. + Você foi banido. + + + This does nothing, but there you go. + Isso não faz nada, mas lá vai você. + + + You opened the settings menu. + Você abriu o menu de configurações. + + + You will now pair up with + Agora você vai fazer par com + + + if they also choose your character in return. + se eles também escolherem seu personagem em troca. + + + + + None + Nada + + + + Guard + Guarda + + + + Additive + Aditivo + + + + % x offset + + + + + % y offset + + + + + To front + Para frente + + + + To behind + Ao fundo + + + + Log goes down + + + + + Log goes up + + + + + Select a character you wish to pair with. + Selecione um personagem com o qual deseja parear. + + + Change the percentage offset of your character's position from the center of the screen. + Altere o deslocamento percentual da posição do seu personagem no centro da tela. + + + + Change the order of appearance for your character. + Mude a ordem de aparência do seu personagem. + + + + Display the list of characters to pair with. + Exibe a lista de caracteres para corresponder. + + + + Oops, you're muted! + Opa, você está mudo! + + + + Set your character's emote to play on your next message. + Defina o emote do seu personagem para usar na próxima mensagem. + + + + Set your character's supplementary background. + Defina o plano de fundo suplementar para o seu personagem. + + + Set an 'iniswap', or an alternative character folder to refer to from your current character. +Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/iniswaps.ini + Defina um 'iniswap' ou uma pasta de caracteres alternativa para consultar seu personagem atual. +Edite digitando e pressionando Enter, [X] para excluir. Isso é salvo em base/characters/<charname>/iniswaps.ini + + + + Change the horizontal percentage offset of your character's position from the center of the screen. + + + + + Change the vertical percentage offset of your character's position from the center of the screen. + + + + + Reset your character's supplementary background to its default. + + + + + Set an 'iniswap', or an alternative character folder to refer to from your current character. +Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini + + + + + Remove the currently selected iniswap from the list and return to the original character folder. + Remova o iniswap atualmente selecionado da lista e retorne à pasta de caracteres original. + + + + Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). +Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini + Configure um efeito sonoro para tocar no seu próximo 'Preanim'. Deixá-lo no padrão usará o som definido pelos emoticons (caso existam). +Edite digitando e pressionando Enter, [X] para excluir. Isso é salvo em base/characters/<charname>/soundlist.ini + + + + Remove the currently selected sound effect. + + + + + Choose an effect to play on your next spoken message. +The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by +char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. + Escolha um efeito para reproduzir na sua próxima mensagem falada. +Os efeitos são definidos em theme / effects / effects.ini. Seu personagem pode definir efeitos personalizados ao +categoria char.ini [Opções], effects = 'miscname', onde se refere a misc/<miscname>/effects.ini to read the effects. + + + + Hold It! + Um momento! + + + + + + When this is turned on, your next in-character message will be a shout! + Quando isso estiver ativado, sua próxima mensagem do personagem será um grito. + + + + Objection! + Protesto! + + + + Take That! + Tome isso! + + + + Toggle between server chat and global AO2 chat. + Alterne entre o bate-papo do servidor e o global. + + + + + + + This will display the animation in the viewport as soon as it is pressed. + Isso exibirá a animação na janela de visualização assim que for pressionada. + + + + Guilty! + Culpado! + + + + Bring up the Character Select Screen and change your character. + Abra a tela de seleção de personagem e mude seu personagem. + + + + Refresh the theme and update all of the ui elements to match. + Atualize o tema e todos os elementos da interface do usuário para corresponder. + + + + Request the attention of the current server's moderator. + Solicite a atenção do moderador do servidor atual. + + + + Allows you to change various aspects of the client. + Permite alterar vários aspectos do cliente. + + + + An interface to help you announce a case (you have to be a CM first to be able to announce cases) + Uma interface para ajudá-lo a anunciar um caso (deve ser um CM para poder anunciar casos) + + + + Switch between Areas and Music lists + Alterne entre áreas e listas de músicas + + + + Play a single-shot animation as defined by the emote when checked. + Reproduza uma animação de tiro único, conforme definido pelo emote, quando marcada. + + + + If preanim is checked, display the input text immediately as the animation plays concurrently. + Se pré-impressão estiver marcada, exiba o texto de entrada imediatamente enquanto a animação estiver sendo reproduzida simultaneamente. + + + + Mirror your character's emotes when checked. + Reflita os gestos do seu personagem quando marcado. + + + + Add text to your last spoken message when checked. + Adicione texto à sua última mensagem falada quando marcado. + + + + Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. + Você não ouve chamadas de moderação quando marcado, impedindo-os de tocar sons ou concentrando a atenção na janela. + + + + Lets you receive case alerts when enabled. +(You can set your preferences in the Settings!) + Permite que você receba alertas de caso quando ativado. +(Você pode configurar suas preferências em Configurações!) + + + + Display customized shownames for all users when checked. + Mostrar nomes personalizados para todos os usuários quando marcado. + + + + Custom Shout! + Grito personalizado! + + + + This will display the custom character-defined animation in the viewport as soon as it is pressed. +To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect + Isso exibirá a animação de caracteres personalizados definida na viewport assim que for pressionada. +Para criar uma, a pasta do seu personagem deve conter efeitos personalizados [webp/apng/gif/png]. E efeitos sonoros personalizados [wav/ogg/opus] + + + + Play realization sound and animation in the viewport on the next spoken message when checked. + Tocar animação de som e performance na janela de desenho na seguinte mensagem falada quando marcada. + + + + Shake the screen on next spoken message when checked. + Agite a tela na próxima mensagem falada quando marcada. + + + + Display the list of character folders you wish to mute. + Exibe a lista de pastas de caracteres que você deseja silenciar. + + + + + Increase the health bar. + Aumente a barra de saúde. + + + + + Decrease the health bar. + Abaixe a barra de saúde. + + + + Change the text color of the spoken message. +You can also select a part of your currently typed message and use the dropdown to change its color! + Mude a cor do texto no chat IC. +Você também pode selecionar uma parte da sua mensagem escrita no momento e usar o menu suspenso para alterar sua cor! + + + + Return back to the server list. + Retorne à lista de servidores. + + + + Become a spectator. You won't be able to interact with the in-character screen. + Torne-se um espectador. Você não será capaz de interagir como personagem. + + + + + + + CLIENT + + + + + Login unsuccessful. + + + + + You were logged out. + + + + + HOLD IT! + + + + + OBJECTION! + + + + + TAKE THAT! + + + + + CUSTOM OBJECTION! + + + + + + + + shouts + + + + + + + has presented evidence + apresentou evidência + + + + + + has stopped the music + + + + + [LOADING] %1 + + + + + Debug + + + + + + has played a song + tocou a música + + + You will now pair up with %1 if they also choose your character in return. + Agora você será emparelhado com %1 se também escolher seu personagem. + + + You are no longer paired with anyone. + Você não está mais fazendo par com ninguém. + + + Are you sure you typed that well? The char ID could not be recognised. + Você tem certeza que você escreveu isso certo? O ID do personagem não pôde ser encontrado. + + + You have set your offset to + Você definiu seu deslocamento como + + + Your offset must be between -100% and 100%! + Seu deslocamento deve estar entre -100% e 100%! + + + That offset does not look like one. + Esse deslocamento não se parece com um. + + + You switched your music and area list. + Você mudou sua lista de músicas e áreas. + + + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. + Você forçou recursos que o servidor pode não suportar. Você pode não conseguir falar de IC, ou pior, por causa disso. + + + Your pre-animations interrupt again. + Suas pré-animações interrompem novamente. + + + Your pre-animations will not interrupt text. + Suas pré-animações não interromperão o texto. + + + Couldn't open chatlog.txt to write into. + Não foi possível abrir o chatlog.txt para gravar. + + + The IC chatlog has been saved. + O chat do IC foi salvo. + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. + Você não possui uma pasta `base/cases/`! Foi feito para você, mas, como foi feito para você, provavelmente o arquivo do caso que você está procurando não pode ser encontrado lá. + + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1 + Você precisa fornecer um nome de arquivo para carregar (extensão não necessária)! Verifique se está na pasta `base/cases/` e se é um ini formatado corretamente. +Casos que você pode carregar: %1 + + + + Too many arguments to load a case! You only need one filename, without extension. + Muitos argumentos para carregar um caso! Você só precisa de um nome de arquivo, sem extensão. + + + + Case made by %1. + Caso feito por %1. + + + + Navigate to %1 for the CM doc. + Navegue para %1 para o documento do CM. + + + + + + + UNKNOWN + + + + + Your case "%1" was loaded! + Seu caso "%1" foi carregado! + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. + Você não possui uma pasta `base/cases/`! Foi feito para você, mas, como foi feito para você, é provável que você o tenha excluído. + + + + You need to give a filename to save (extension not needed) and the courtroom status! + Você deve fornecer um nome de arquivo para salvar (sem extensão necessária) e o estado do tribunal! + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status. + Muitos argumentos para salvar um caso! Você só precisa de um nome de arquivo sem extensão e o estado do tribunal. + + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status! + Muitos argumentos para salvar um caso! Você só precisa de um nome de arquivo sem extensão e o estado do tribunal. + + + + Succesfully saved, edit doc and cmdoc link on the ini! + Salvo com sucesso, você pode editar o documento e o link do documento no arquivo ini! + + + + Stop Current Song + + + + + Play Random Song + Tocar música aleatória + + + + Expand All Categories + Expandir todas as categorias + + + + Collapse All Categories + Recolher todas as categorias + + + + Fade Out Previous + Desvanecer Anterior + + + + Fade In + Aparecimento gradual + + + + Synchronize + Sincronizar + + + + Default + Predeterminado + + + + Reason: + Razão: + + + + Call Moderator + Chamar um Moderador + + + + + Error + Erro + + + + You must provide a reason. + Você deve fornecer um motivo. + + + + The message is too long. + A mensagem é muito longa. + + + Choose... + Escolha... + + + + Present this piece of evidence to everyone on your next spoken message + Apresente essa evidência a todos na sua próxima mensagem falada + + + + Save evidence to an .ini file. + Salve evidências em um arquivo .ini. + + + + Load evidence from an .ini file. + Carregar evidências de um arquivo .ini. + + + + Destroy this piece of evidence + Destrua esta evidência + + + + Choose.. + Escolher.. + + + + Close the evidence display/editing overlay. +You will be prompted if there's any unsaved changes. + Feche a sobreposição para visualizar/editar evidências. +Você será perguntado se existem alterações não salvas. + + + + Save any changes made to this piece of evidence and send them to server. + Salve as alterações feitas nesta evidência e envie-as para o servidor. + + + Double-click to edit. Press [X] to update your changes. + Clique duas vezes para editar. Pressione [X] para atualizar suas alterações. + + + + Click to edit. Press [X] to update your changes. + + + + + Bring up the Evidence screen. + Abra a tela de evidências. + + + + Switch evidence to private inventory. + Enviar evidência para inventário privado. + + + + Switch evidence to global inventory. + Mude a evidência para o inventário global. + + + + + Transfer evidence to private inventory. + Transfira evidências para o inventário privado. + + + + + Transfer evidence to global inventory. + Transfira evidências para o inventário global. + + + + The piece of evidence you've been editing has changed. + A evidência que você está editando mudou. + + + + Do you wish to keep your changes? + Deseja manter suas alterações? + + + + Name: %1 +Image: %2 +Description: +%3 + Nome: %1 +Imagem: %2 +Descrição: +%3 + + + + Images (*.png) + Imagens (* .png) + + + + + + Click to edit... + + + + Double-click to edit... + Clique duas vezes para editar... + + + + Add new evidence... + Adicionar nova evidência... + + + + Evidence has been modified. + A evidência foi modificada. + + + + Do you want to save your changes? + Você quer salvar suas mudanças? + + + + Current evidence is global. Click to switch to private. + A evidência atual é global. Clique para mudar para privado. + + + + Current evidence is private. Click to switch to global. + A evidência atual é privada. Clique para mudar para global. + + + + "%1" has been transferred. + "%1" foi transferido. + + + + Save Inventory + Salvar inventário + + + + + Ini Files (*.ini) + Arquivos INI (* .ini) + + + + Open Inventory + Abrir inventário + + + + DemoServer + + + + Load Demo + + + + + + Demo Files (*.demo) + + + + + + Demo file loaded. Send /play or > in OOC to begin playback. + + + + + Resuming playback. + + + + + Pausing playback. + + + + + Setting max_wait to + + + + + + milliseconds. + + + + + Not a valid integer! + + + + + Current max_wait is + + + + + Current demo file reloaded. Send /play or > in OOC to begin playback. + + + + + min_wait is deprecated. Use the client Settings for minimum wait instead! + + + + + Setting debug mode to %1 + + + + + Valid values are 1 or 0! + + + + + Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. + + + + + Available commands: +load, reload, play, pause, max_wait, debug, help + + + + + Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. + + + + + Lobby + + + Attorney Online %1 + Attorney Online %1 + + + + Search + Pesquisar + + + Name + Nome + + + + It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? + Seu cliente não parece estar configurado corretamente. +Você baixou todos os recursos corretamente do tiny.cc/getao, incluindo a grande pasta 'base'? + + + + Version: %1 + Versão: %1 + + + + Settings + Configurações + + + + Allows you to change various aspects of the client. + Permite alterar vários aspectos do cliente. + + + + + Offline + Offline + + + + Loading + Carregando + + + + Cancel + Cancelar + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 + + + + + Couldn't get the message of the day. + + + + + Version: %1 (!) + + + + + New version available: %1 + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 + <h2>Attorney Online %1</h2>O simulador de drama jurídico<p><b>Código fonte:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Desenvolvimento principal:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Desenvolvimento de cliente:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Teste de controle de qualidade:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Agradecimentos especiais:</b><br>CrazyJC y MaximumVolty (versão 2.8); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, y FanatSors (AO1); server hosts, game masters, case makers, criadores de conteúdo e toda a comunidade AO2.<p>O projeto Attorney Online possui direitos autorais (c) 2016-2020 Attorney Online developers. Aplicam-se licenças de código aberto. Todos os outros ativos são de propriedade de seus respectivos proprietários.<p>Usando a versão Qt %2 com o mecanismo de áudio BASS..<br>Plugin APNG carregado: %3<p>Compilado em %4 + + + + Yes + Sim + + + + No + Não + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the %3 audio engine.<p>Built on %4 + <h2>Attorney Online %1</h2>O simulador de drama jurídico<p><b>Código fonte:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Desenvolvimento principal:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Desenvolvimento de cliente:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Teste de controle de qualidade:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Agradecimentos especiais:</b><br>CrazyJC y MaximumVolty (versão 2.8); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, y FanatSors (AO1); server hosts, game masters, case makers, criadores de conteúdo e toda a comunidade AO2.<p>O projeto Attorney Online possui direitos autorais (c) 2016-2020 Attorney Online developers. Aplicam-se licenças de código aberto. Todos os outros ativos são de propriedade de seus respectivos proprietários.<p>Usando a versão Qt %2 com o mecanismo de áudio %3.<p>Compilado em %4 + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC and MaximumVolty (2.8 release); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the %3 audio engine.<p>Built on %4 + <h2>Attorney Online %1</h2>O simulador de drama jurídico<p><b>Código fonte:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Desenvolvimento principal:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Desenvolvimento de cliente:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Teste de controle de qualidade:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Agradecimentos especiais:</b><br>CrazyJC y MaximumVolty (versão 2.8); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, y FanatSors (AO1); server hosts, game masters, case makers, criadores de conteúdo e toda a comunidade AO2.<p>O projeto Attorney Online possui direitos autorais (c) 2016-2020 Attorney Online developers. Aplicam-se licenças de código aberto. Todos os outros ativos são de propriedade de seus respectivos proprietários.<p>Usando a versão Qt %2 com o mecanismo de áudio %3.<p>Compilado em %4 + + + + About + Sobre + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Cents02<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy, Raidensnake + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Cents02<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy, Raidensnake + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + <h2>Attorney Online %1</h2>O simulador de drama jurídico<p><b>Código fonte:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Desenvolvimento principal:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Agradecimentos especiais:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + + + + Online: %1/%2 + Online: %1/%2 + + + + NetworkManager + + + No description provided. + + + + + QDialogButtonBox + + + + OK + + + + + QObject + + + None + Nada + + + + [MISSING] %1 + + + + + [STREAM] %1 + + + + + chatlogpiece + + + + + UNKNOWN + + + + has played a song: + tocou a música: + + + + debug_functions + + + Error: %1 + + + + + Error + + + + + Notice + + + + diff --git a/data/translations/ao_ru.qm b/data/translations/ao_ru.qm new file mode 100644 index 00000000..cc1ddb42 Binary files /dev/null and b/data/translations/ao_ru.qm differ diff --git a/data/translations/ao_ru.ts b/data/translations/ao_ru.ts new file mode 100644 index 00000000..dcc09128 --- /dev/null +++ b/data/translations/ao_ru.ts @@ -0,0 +1,2078 @@ + + + + + AOApplication + + + Disconnected from server. + Соединение с сервером разорвано. + + + Error connecting to master server. Will try again in %1 seconds. + Ошибка соединения с главным сервером. Повторная попытка соединения через %1 с. + + + There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again. + Не удалось соединиться с главным сервером. +Мы используем несколько главных серверов для того, чтобы сократить время простоя, но клиент перепробовал все возможные варианты и не смог подключиться ни к одному из серверов. +Пожалуйста, проверьте ваши настройки браундмауэра и соединение с Интернетом попробуйте перезайти. + + + Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update. + Устаревшая версия! У вас установлена версия %1 +Пройдите на сайт aceattorneyonline.com для обновления. + + + You have been exiled from AO. +Have a nice day. + Вас изгнали из AO. +Всего хорошего. + + + Attorney Online + Attorney Online + + + + Loading + Загрузка + + + Loading evidence: +%1/%2 + Загрузка улик: +%1/%2 + + + + Loading music: +%1/%2 + Загрузка музыки: +%1/%2 + + + + Loading chars: +%1/%2 + Загрузка персонажей: +%1/%2 + + + + Attorney Online %1 + Attorney Online %1 + + + + [Global log] + + + + + You have been kicked from the server. +Reason: %1 + Вас выпнули с сервера. +Причина: %1 + + + + You have been banned from the server. +Reason: %1 + Вы были забанены на сервере. +Причина: %1 + + + + You are banned on this server. +Reason: %1 + Вы забанены на этом сервере. +Причина: %1 + + + You have been kicked from the server. +Reason: + Вас выпнули с сервера. +Причина: + + + You are banned on this server. +Reason: + Вы забанены на этом сервере. +Причина: + + + + Demo playback + + + + + Play back demos you have previously recorded + + + + + AOCaseAnnouncerDialog + + + Case Announcer + Объявление о проведении заседания + + + + Case title: + Название дела: + + + + Defense needed + Нужна защита + + + + Prosecution needed + Нужно обвинение + + + + Judge needed + Нужен судья + + + + Jurors needed + Нужны присяжные + + + + Stenographer needed + Нужен стенографист + + + + AOOptionsDialog + + + Settings + Настройки + + + + Gameplay + Игра + + + + Theme: + Тема: + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. + Определяет внешний вид игры. Для применения новой темы может понадобиться перезайти на сервер. + + + + Subtheme: + Подтема: + + + + Sets a 'subtheme', which will stack on top of the current theme and replace anything it can.Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. + Определяет подтему, которая ставится поверх текущей темы и заменяет все, что может. +Выберите "сервер", чтобы оставить выбор за сервером. +Выберите "по умолчанию", чтобы она не менялась. + + + + Reload Theme + Перезагрузить тему + + + + Refresh the theme and update all of the ui elements to match. + Перезагрузить тему и обновить все элементы интерфейса. + + + + Animated Theme: + Анимированные темы: + + + + If ticked, themes will be allowed to have animated elements. + Разрешить темам использовать анимированные элементы. + + + + Log goes downwards: + История чата идёт вниз: + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + Показывать новые сообщения в игровом чате снизу (как в ООС-чате), а не сверху (как в AO1). + + + + Log length: + Размер истории игрового чата: + + + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. + Максимальное количество сообщений, сохраняемых в игровом чате. +При превышении лимита старые сообщения будут удаляться. +Поставьте 0 или отрицательное значение, чтобы снять ограничение. + + + + The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. + Максимальное количество строк сообщений, сохраняемых в игровом чате. +При превышении лимита старые строки будут удаляться. +Поставьте 0 или отрицательное значение, чтобы снять ограничение. + + + + Log newline: + Сохранять перенос строки: + + + + If ticked, new messages will appear separated, with the message coming on the next line after the name. When unticked, it displays it as 'name: message'. + Показывать новое сообщение на следующей строке после имени. +Если опция выключена, сообщения будут отображаться в следующем формате: "имя: сообщение". + + + + Log margin: + Интервал: + + + + The distance in pixels between each entry in the IC log. Default: 0. + Ширина интервала (в пикселях) между сообщениями в истории игрового чата. +Значение по умолчанию: 0. + + + + Log timestamp: + Метки времени: + + + + If ticked, log will contain a timestamp in UTC before the name. + Показывать метки времени в часовом поясе UTC в игровом чате перед именем. + + + + + Log timestamp format: + + + + + + Log IC actions: + Действия: + + + + If ticked, log will show IC actions such as shouting and presenting evidence. + Показывать действия (возгласы, предъявленные улики и пр.) в истории игрового чата. + + + + Text Stay Time: + Задержка текста: + + + + Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. + Минимальное время (в миллисекундах), которое сообщение игрового чата должно отображаться перед показом следующего, образуя очередь. +Поставьте 0 для отключения очереди. + + + + Desynchronize IC Logs: + Независимая история чата: + + + + If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). + Показывать сообщения в истории игрового чата в реальном времени, +а в самом игровом чате - в соответствии с настройками очереди ("Задержка текста"). + + + + Instant Objection: + Возглас без задержки: + + + + If Text Stay Time is more than 0, instant objection will skip queued messages instead of waiting to catch up. + Если "Задержка текста" больше нуля, включение данной опции позволяет отобразить возглас, минуя сообщения в очереди. + + + + Text crawl: + Скорость вывода: + + + + Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. + Время задержки (в миллисекундах) после показа каждой буквы в игровом чате. + + + + Chat Rate Limit: + Частота отправки: + + + + Minimum amount of time (in miliseconds) that must pass before the next Enter key press will send your IC message. + Минимальное время (в миллисекундах), которое должно пройти, +прежде чем нажатие Enter снова отправит ваше сообщение в игровой чат. + + + + Default username: + Никнейм по умолчанию: + + + + Your OOC name will be automatically set to this value when you join a server. + Псевдоним по умолчанию для ООС-чата. + + + + Custom shownames: + Пользовательские имена: + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + Значение по умолчанию для переключателя "Пользовательские имена" в основном окне приложения. + + + + Default showname: + + + + + Your showname will be automatically set to this value when you join a server. + + + + Backup MS: + Запасной ГС: + + + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. + Если клиент не сможет соединиться со встроенным главным сервером (ГС), он проверит адреса из этого списка. + + + + Alternate Server List: + + + + + Overrides the base URL to retrieve server information from. + + + + + Discord: + Discord: + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + Показывать в Discord сервер, на котором вы играете, вашего персонажа и продолжительность игры. + + + + Language: + Язык: + + + + Sets the language if you don't want to use your system language. + Изменяет язык интерфейса приложения, если вы не хотите использовать язык системы. + + + + - Keep current setting + - сохранить текущие настройки + + + + Scaling: + + + + + Sets the default scaling method, if there is not one already defined specifically for the character. + + + + + Pixel + + + + + Smooth + + + + + Allow Screenshake: + Встряска экрана: + + + + Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Разрешить показ встрясок экрана. +Отключите, если вы страдаете от светочувствительности и/или припадков. + + + + Allow Effects: + Визуальные эффекты: + + + + Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. + Разрешить показ визуальных эффектов. +Отключите, если вы страдаете от светочувствительности и/или припадков. + + + + Network Frame Effects: + Эффекты по сети: + + + + Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. + Разрешить отправку звуков, эффектов вспышек и встряски экрана по сети в соответствии с char.ini. +Работает только на серверах, поддерживающих данную функцию. + + + + Colors in IC Log: + Цвета в истории чата: + + + + Use the markup colors in the server IC chatlog. + Отображать цвета в истории игрового чата. + + + + Sticky Sounds: + Закрепить звуки: + + + + Turn this on to prevent the sound dropdown from clearing the sound after playing it. + Не сбрасывать выбранные настройки звука после его воспроизведения. + + + + Sticky Effects: + Закрепить эффекты: + + + + Turn this on to prevent the effects dropdown from clearing the effect after playing it. + Не сбрасывать выбранные настройки эффекта после его воспроизведения. + + + + Sticky Preanims: + Закрепить пред. анимации: + + + + Turn this on to prevent preanimation checkbox from clearing after playing the emote. + Не сбрасывать настройки пред. анимации после её воспроизведения. + + + + Custom Chatboxes: + Пользовательские подложки: + + + + Turn this on to allow characters to define their own custom chat box designs. + Отображать дизайны подложек, заданные персонажами. + + + + Stickers: + Стикеры: + + + + Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). + Разрешить персонажам задавать собственные стикеры +(уникальные изображения, отображающиеся поверх подложки; +как аватарки или пользовательские имена). + + + + Continuous Playback: + Непрерывное воспроизведение: + + + + Whether or not to resume playing animations from where they left off. Turning off might reduce lag. + Продолжать воспроизведение анимации с того места, где она остановилась. +Отключение этой опции может помочь ускорить работу приложения. + + + + Stop Music w/ Category: + Останавливать музыку категориями: + + + + Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. + Останавливать музыку по двойному клику на названии категории. +Если эта опция отключена, воспользуйтесь контекстным меню, чтобы остановить музыку. + + + + Log to Text Files: + + + + + Text logs of gameplay will be automatically written in the /logs folder. + + + + + Log to Demo Files: + + + + + Gameplay will be automatically recorded as demos in the /logs folder. + + + + + Callwords + Позывные + + + + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> + <html><head/><body>Введите в поле выше свои позывные. Если кто-то в чате напишет их, вы услышите звуковой сигнал. Регистр символов не учитывается.<br>Каждый позывной должен быть на отдельной строке. Не оставляйте в конце строк пробелы, иначе вы будете получать оповещения о каждом пробеле в чате.</body></html> + + + + Audio + Аудио + + + + Audio device: + Устройство вывода: + + + + Sets the audio device for all sounds. + Укажите устройство воспроизведения всего аудио приложения. + + + + Music: + Музыка: + + + + Sets the music's default volume. + Громкость музыки по умолчанию. + + + + SFX: + Звук. эффекты: + + + + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. + Громкость звуковых эффектов по умолчанию. В эту категорию также входят возгласы. + + + + Blips: + Сигналы: + + + + Sets the volume of the blips, the talking sound effects. + Громкость сигналов, заменяющих голос, по умолчанию. + + + + Blip rate: + Частота сигналов: + + + + Sets the delay between playing the blip sounds. + Задержка по умолчанию между сигналами, заменяющими голос. + + + + Play a blip sound "once per every X symbols", where X is the blip rate. 0 plays a blip sound only once. + + + + + Add or remove base folders for use by assets. Base folders on the bottom are prioritized over those above them. + + + + + Couldn't get the privacy policy. + + + + Play a blip sound "once per every X symbols", where X is the blip rate. + Проигрывать сигнал каждые Х символов. + + + + Blank blips: + Пустые сигналы: + + + + If true, the game will play a blip sound even when a space is 'being said'. + Проигрывать сигналы даже для пробелов. + + + + Enable Looping SFX: + Повтор звук. эффектов: + + + + If true, the game will allow looping sound effects to play on preanimations. + Разрешить воспроизведение зацикленных звуковых эффектов во время предварительной анимации. + + + + Kill Music On Objection: + Тишина при протесте: + + + + If true, AO2 will ask the server to stop music when you use 'Objection!' + Клиент будет просить сервер останавливать музыку, когда вы протестуете. + + + + Assets + + + + + Add… + + + + + Select a base folder + + + + + Remove + + + + + ↑ + + + + + ↓ + + + + + Clear Cache + + + + + Clears the lookup cache for assets. Use this when you have added an asset that takes precedence over another existing asset. + + + + + Privacy + + + + + Do not include me in public player counts + + + + + Getting privacy policy... + + + + + %1 (default) + + + + If true, AO2 will stop the music for you when you or someone else does 'Objection!'. + Останавливать музыку, когда кто-то протестует. + + + + Casing + Заседания + + + + This server supports case alerts. + Сервер поддерживает объявления заседаний. + + + + This server does not support case alerts. + Сервер не поддерживает объявления заседаний. + + + + Pretty self-explanatory. + Дополнительные пояснения не требуются. + + + + Casing: + Заседания: + + + + If checked, you will get alerts about case announcements. + Получать уведомления при объявлении заседаний. + + + + Defense: + Защита: + + + + If checked, you will get alerts about case announcements if a defense spot is open. + Получать уведомления при объявлении дел, в которых нужна сторона защиты. + + + + Prosecution: + Обвинение: + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. + Получать уведомления при объявлении дел, в которых нужна сторона обвинения. + + + + Judge: + Судья: + + + + If checked, you will get alerts about case announcements if the judge spot is open. + Получать уведомления при объявлении дел, в которых нужен судья. + + + + Juror: + Присяжные: + + + + If checked, you will get alerts about case announcements if a juror spot is open. + Получать уведомления при объявлении дел, в которых нужны присяжные заседатели. + + + + Stenographer: + Стенографист: + + + + If checked, you will get alerts about case announcements if a stenographer spot is open. + Получать уведомления при объявлении дел, в которых нужен стенографист. + + + + CM: + ПД: + + + + If checked, you will appear amongst the potential CMs on the server. + Отметьте, если хотите состоять в числе возможных производителей дел (ПД). + + + + Hosting cases: + Проведение дел: + + + + If you're a CM, enter what cases you are willing to host. + Если вы производитель дел (ПД), укажите, какими делами вы хотите заниматься. + + + Automatic Logging: + Авт. сохранение истории: + + + If checked, all logs will be automatically written in the /logs folder. + Автоматически сохранять всю историю чатов в папке /logs. + + + + Courtroom + + + Password + Пароль + + + + Spectator + Зритель + + + + + Search + Поиск + + + + Passworded + Защищён паролем + + + + Taken + Занят + + + + Could not find character (char.ini) for %1 + + + + + Generating chars: +%1/%2 + Генерация персонажей: +%1/%2 + + + Generating chars: + + Генерация персонажей: + + + + + Showname + Имя + + + + Message + Сообщение + + + + Name + Никнейм + + + + Pre + Пред. анимация + + + + Flip + Отразить + + + + Guard + Не беспокоить + + + + Additive + Дополнять + + + + + Casing + Заседания + + + + Shownames + Польз. имена + + + + Immediate + Говорить сразу + + + White + Белый + + + Green + Зелëный + + + Red + Красный + + + Orange + Оранжевый + + + Blue + Синий + + + Yellow + Жëлтый + + + This does nothing, but there you go. + В общем-то, это ни на что не влияет... + + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1 + Укажите имя файла с делом (без расширения) для загрузки. +Убедитесь, что он расположен в папке `base/cases`, и что это правильно отформатированный файл .ini. +Вы можете загрузить следующие дела: %1 + + + + Case made by %1. + Автор дела: %1. + + + + Navigate to %1 for the CM doc. + Откройте %1 для получения материалов дела. + + + + Your case "%1" was loaded! + Ваше дело "%1" было загружено! + + + + + Server + Сервер + + + + + None + Нет + + + + % x offset + % сдвига по горизонтали + + + + % y offset + % сдвига по вертикали + + + + Log goes down + + + + + Log goes up + + + + + Change the horizontal percentage offset of your character's position from the center of the screen. + Изменить сдвиг персонажа по горизонтали относительно центра экрана. + + + + Change the vertical percentage offset of your character's position from the center of the screen. + Изменить сдвиг персонажа по вертикали относительно центра экрана. + + + + Reset your character's supplementary background to its default. + Сбросить фон вашего персонажа. + + + + Set an 'iniswap', or an alternative character folder to refer to from your current character. +Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini + Включить т.н. подмену ini – альтернативную папку персонажа, к которой будет обращаться текущий персонаж. +Введите имя персонажа и нажмите Enter; нажмите [X], чтобы удалить. +Изменения сохраняются по следующему пути: base/iniswaps.ini + + + + Remove the currently selected sound effect. + Удалить выбранный звуковой эффект. + + + + Hold It! + Стоп! + + + + + + When this is turned on, your next in-character message will be a shout! + Когда эта опция включена, ваше следующее сообщение в игровом чате будет с возгласом! + + + + Objection! + Протестую! + + + + Take That! + Вот! + + + + Toggle between server chat and global AO2 chat. + Переключатель между чатом сервера и общим чатом AO2. + + + + + + + This will display the animation in the viewport as soon as it is pressed. + Анимация будет показана в игровом чате сразу после нажатия. + + + + Guilty! + Виновен! + + + + Bring up the Character Select Screen and change your character. + Перейти на экран выбора и сменить персонажа. + + + + Refresh the theme and update all of the ui elements to match. + Перезагрузить тему и обновить все элементы интерфейса. + + + + Request the attention of the current server's moderator. + Привлечь внимание модератора сервера. + + + + Allows you to change various aspects of the client. + Изменить параметры работы приложения. + + + + An interface to help you announce a case (you have to be a CM first to be able to announce cases) + Открыть окно, которое позволит вам объявить о деле +(для этого нужно быть производителем дел (ПД)) + + + + Switch between Areas and Music lists + Переключиться между списками музыки и локаций. + + + + Play a single-shot animation as defined by the emote when checked. + Показать разовую предварительную анимацию, +соответствующую выбранной эмоции. + + + + If preanim is checked, display the input text immediately as the animation plays concurrently. + Если включена предварительная анимация: +выводить текст, не дожидаясь окончания предварительной анимации. + + + + Mirror your character's emotes when checked. + Отразить анимации персонажа по горизонтали. + + + + Add text to your last spoken message when checked. + Добавлять текст к своему последнему сообщению. + + + + Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. + Заглушить вызовы модератора: вы не будете получать звуковые оповещения, +а окно приложения не будет привлекать к себе внимание. + + + + Lets you receive case alerts when enabled. +(You can set your preferences in the Settings!) + Получать уведомления о заседаниях. +(См. подробнее в настройках) + + + + Display customized shownames for all users when checked. + Показывать пользовательские имена для всех игроков. + + + + Custom Shout! + Пользовательский возглас! + + + + This will display the custom character-defined animation in the viewport as soon as it is pressed. +To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect + Показать в игровом чате уникальную для персонажа анимацию сразу после нажатия. +Для добавления такой анимации поместите в папку персонажа файлы custom.webp/apng/gif/png и custom.wav/ogg/opus. + + + + Play realization sound and animation in the viewport on the next spoken message when checked. + Показать вспышку и воспроизвести звук озарения во время вывода следующей реплики. + + + + Shake the screen on next spoken message when checked. + Потрясти экран во время вывода следующей реплики. + + + + Display the list of character folders you wish to mute. + Выбрать персонажей, которых нужно игнорировать. + + + + + Increase the health bar. + Поощрить + + + + + Decrease the health bar. + Оштрафовать + + + + Change the text color of the spoken message. +You can also select a part of your currently typed message and use the dropdown to change its color! + Изменить цвет текста сообщения. +Вы также можете выделить часть текста и изменить только её цвет в выпадающем меню. + + + + Back to Lobby + Назад в лобби + + + + Login unsuccessful. + + + + + You were logged out. + + + + + HOLD IT! + СТОП! + + + + OBJECTION! + ПРОТЕСТУЮ! + + + + TAKE THAT! + ВОТ! + + + + CUSTOM OBJECTION! + СВОЮ РЕПЛИКУ! + + + + + + + shouts + выкрикнул(а) + + + + + + has presented evidence + предъявил(а) улику + + + + + + has stopped the music + остановил(а) музыку + + + + [LOADING] %1 + + + + + Debug + + + + [STREAM] %1 + [ТРАНСЛЯЦИЯ] %1 + + + [MISSING] %1 + [НЕ НАЙДЕНО] %1 + + + + + has played a song + включил(а) композицию + + + You will now pair up with %1 if they also choose your character in return. + Вы встанете рядом с %1, если он(а) выберет вашего персонажа. + + + You have set your offset to %1%%. + Сдвиг вашего персонажа: %1%%. + + + Rainbow + Радужный + + + Pink + Розовый + + + Cyan + Голубой + + + % offset + % сдвига + + + + To front + Спереди + + + + To behind + Сзади + + + + Select a character you wish to pair with. + Выберите персонажа, рядом с которым хотите встать. + + + Change the percentage offset of your character's position from the center of the screen. + Изменить процент сдвига вашего персонажа относительно центра экрана. + + + + Change the order of appearance for your character. + Переместить вашего персонажа вперёд или назад относительно партнёра. + + + + Display the list of characters to pair with. + Показать список персонажей, с которыми можно встать рядом. + + + + Oops, you're muted! + Вам запретили отправлять сообщения. + + + + Set your character's emote to play on your next message. + Выберите эмоцию для отображения при выводе вашего следующего сообщения. + + + + Set your character's supplementary background. + Установить фон для вашего персонажа. + + + Set an 'iniswap', or an alternative character folder to refer to from your current character. +Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/iniswaps.ini + Включить т.н. подмену ini – альтернативную папку персонажа, к которой будет обращаться текущий персонаж. +Введите имя персонажа и нажмите Enter; нажмите [X], чтобы удалить. +Изменения сохраняются по следующему пути: base/characters/<имя_персонажа>/iniswaps.ini + + + + Remove the currently selected iniswap from the list and return to the original character folder. + Удалить выбранного для подмены ini персонажа и вернуться к папке изначально выбранного персонажа. + + + + Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). +Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini + Выберите звук, который нужно воспроизвести со следующей пред. анимацией. +Если выбрано "по умолчанию", вы услышите звук, заданный пред. анимацией (если он есть). +Выберите или введите название звука и нажмите Enter; нажмите [X], чтобы удалить. +Изменения сохраняются по следующему пути: base/characters/<имя_персонажа>/soundlist.ini + + + + Choose an effect to play on your next spoken message. +The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by +char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. + Выберите эффект, который нужно воспроизвести с вашим следующим сообщением. +Эффекты определяются файлом theme/effects/effects.ini. Ваш персонаж может задать собственные эффекты +в категории [Options] файла char.ini, effects = 'название', что отсылает к файлу misc/<название>/effects.ini. + + + + Music + Музыка + + + + Sfx + Звук. эффекты + + + + Blips + Сигналы + + + + Change character + Сменить персонажа + + + + Reload theme + Перезагрузить тему + + + + Call mod + Позвать модератора + + + + Settings + Настройки + + + + A/M + Л/М + + + + Preanim + Пред. анимации + + + + Return back to the server list. + Вернуться к списку серверов. + + + + Become a spectator. You won't be able to interact with the in-character screen. + Зайти в качестве зрителя. Вы не сможете взаимодействовать с игровым чатом. + + + + You were granted the Disable Modcalls button. + Теперь у вас есть кнопка "Не беспокоить". + + + + + + + CLIENT + КЛИЕНТ + + + + You have been banned. + Вас забанили. + + + You were granted the Guard button. + Теперь у вас есть кнопка "Охрана". + + + You opened the settings menu. + Вы открыли меню настроек. + + + You will now pair up with + Вы встанете парой с персонажем по имени + + + if they also choose your character in return. + (если он выберет вас в ответ). + + + You are no longer paired with anyone. + Вы больше не стоите рядом ни с кем. + + + Are you sure you typed that well? The char ID could not be recognised. + Убедитесь в правильности введённой информации: персонаж с таким ID не найден. + + + You have set your offset to + Вы установили сдвиг персонажа на + + + Your offset must be between -100% and 100%! + Сдвиг персонажа должен быть между -100% и 100%! + + + That offset does not look like one. + Неверный сдвиг персонажа. + + + You have set your vertical offset to %1%%. + Сдвиг вашего персонажа по вертикали: %1%%. + + + Your vertical offset must be between -100% and 100%! + Сдвиг персонажа по вертикали должен быть между -100% и 100%! + + + That vertical offset does not look like one. + Неверный сдвиг персонажа по вертикали. + + + You switched your music and area list. + Вы переключились между списками локаций и музыки. + + + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. + Из-за того, что вы включили не поддерживаемые сервером возможности, он может не принять ваши сообщения. +Возможны и менее приятные последствия. + + + Your pre-animations interrupt again. + Персонаж будет говорить только после предварительной анимации. + + + Your pre-animations will not interrupt text. + Предварительные анимации не будут прерывать вывод текста. + + + Couldn't open chatlog.txt to write into. + Невозможно открыть chatlog.txt для записи. + + + The IC chatlog has been saved. + История игрового чата сохранена. + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. + Файл с делом не найден. Если найдёте, положите его в папку `base/cases/`, которую мы для вас создали. + + + + Too many arguments to load a case! You only need one filename, without extension. + Не удалось загрузить дело! Введите имя файла без расширения. + + + + + + + UNKNOWN + н/д + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. + Папка `base/cases/` отсутствует. Она была создана. + + + + You need to give a filename to save (extension not needed) and the courtroom status! + Введите имя файла (без расширения) и укажите статус зала суда. + + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status! + Убедитесь, что имя файла введено без расширения и указан статус зала суда. + + + + Succesfully saved, edit doc and cmdoc link on the ini! + Сохранение прошло успешно. Ссылки на документы можно редактировать в ini. + + + Master + Мастер + + + + Stop Current Song + Прервать текущую композицию + + + + Play Random Song + Включить случайную композицию + + + + Expand All Categories + Развернуть все категории + + + + Collapse All Categories + Свернуть все категории + + + + Fade Out Previous + Постепенное затухание предыдущей композиции + + + + Fade In + Постепенное нарастание + + + + Synchronize + Синхронизировать + + + + Default + по умолчанию + + + + Reason: + Причина: + + + + Call Moderator + Вызов модератора + + + + + Error + Ошибка + + + + You must provide a reason. + Укажите причину. + + + + The message is too long. + Слишком длинное сообщение. + + + Choose... + Выбрать... + + + + Present this piece of evidence to everyone on your next spoken message + Показать эту улику всем присутствующим вместе с вашим следующим сообщением. + + + + Save evidence to an .ini file. + Сохранить улику в файл .ini. + + + + Load evidence from an .ini file. + Загрузить улику из файла .ini. + + + + Destroy this piece of evidence + Уничтожить эту улику. + + + + Choose.. + Выбрать... + + + + Close the evidence display/editing overlay. +You will be prompted if there's any unsaved changes. + Закрыть окно редактирования улики. +Если вы не сохранили изменения, то увидите диалоговое окно. + + + + Save any changes made to this piece of evidence and send them to server. + Сохранить все изменения, внесённые в улику, и отправить её на сервер. + + + Double-click to edit. Press [X] to update your changes. + Редактирование по двойному клику. Нажмите [X] для обновления. + + + + Click to edit. Press [X] to update your changes. + + + + + Bring up the Evidence screen. + Открыть окно управления уликами. + + + + Switch evidence to private inventory. + Перейти к своему списку. + + + + Switch evidence to global inventory. + Перейти к общему списку. + + + + + Transfer evidence to private inventory. + Перенести улику в свой список. + + + + + Transfer evidence to global inventory. + Перенести улику в общий список. + + + + The piece of evidence you've been editing has changed. + В улику, которую вы редактировали, были внесены изменения. + + + + Do you wish to keep your changes? + Хотите сохранить внесённые изменения? + + + + Name: %1 +Image: %2 +Description: +%3 + Название: %1 +Изображение: %2 +Описание: +%3 + + + + Images (*.png) + Изображения (*.png) + + + + + + Click to edit... + + + + Double-click to edit... + Редактирование по двойному клику... + + + + Add new evidence... + Добавить новую улику... + + + + Evidence has been modified. + Улика была изменена. + + + + Do you want to save your changes? + Хотите сохранить внесённые изменения? + + + + Current evidence is global. Click to switch to private. + Вы видите общий список улик. Нажмите здесь для просмотра своих улик. + + + + Current evidence is private. Click to switch to global. + Вы видите свой список улик. Нажмите здесь для просмотра общих улик. + + + + "%1" has been transferred. + Улика "%1" была перенесена. + + + + Save Inventory + Сохранить список улик + + + + + Ini Files (*.ini) + Файлы ini (*.ini) + + + + Open Inventory + Загрузить список улик + + + + DemoServer + + + + Load Demo + Загрузить демо + + + + + Demo Files (*.demo) + Файлы демо (*.demo) + + + + + Demo file loaded. Send /play or > in OOC to begin playback. + + + + + Resuming playback. + + + + + Pausing playback. + + + + + Setting max_wait to + + + + + + milliseconds. + + + + + Not a valid integer! + + + + + Current max_wait is + + + + + Current demo file reloaded. Send /play or > in OOC to begin playback. + + + + + min_wait is deprecated. Use the client Settings for minimum wait instead! + + + + + Setting debug mode to %1 + + + + + Valid values are 1 or 0! + + + + + Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. + + + + + Available commands: +load, reload, play, pause, max_wait, debug, help + + + + + Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. + + + + + Lobby + + Attorney Online + Attorney Online + + + + Attorney Online %1 + Attorney Online %1 + + + + Search + Поиск + + + Name + Никнейм + + + + It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? + Кажется, ваш клиент неправильно настроен. +Вы точно скачали все ресурсы с tiny.cc/getao, включая огромную папку `base`? + + + + Version: %1 + Версия: %1 + + + + Settings + Настройки + + + + Allows you to change various aspects of the client. + Изменить параметры работы приложения. + + + + Loading + Загрузка + + + + Cancel + Отмена + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 + <h2>Attorney Online %1</h2>Симулятор драмы в зале суда.<p><b>Исходный код:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Основная разработка:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Разработка клиента:</b><br>Cents02, windrammer, skyedeving<p><b>Тестирование:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Благодарности:</b><br>CrazyJC (директор по выпуску версии 2.8) и MaximumVolty (продвижение версии 2.8); Remy, Hibiki, court-records.net (спрайты); Qubrick (webAO); Rue (вебсайт); Draxirch (дизайн интерфейса); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); держатели серверов, ГМ, ПД, создатели контента, и всё сообщество AO2!<p>Проект сетевой визуальной новеллы Attorney Online (c) 2016-2021 разработчики Attorney Online. Применяется лицензия на открытое ПО. Все прочие файлы являются собственностью их владельцев.<p>Работает на Qt версии %2 с аудио-движком BASS.<br>Плагин APNG загружен: %3<p>Сборка от %4 + + + + Yes + Да + + + + No + Нет + + + + Couldn't get the message of the day. + + + + + Version: %1 (!) + + + + + New version available: %1 + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the %3 audio engine.<p>Built on %4 + <h2>Attorney Online %1</h2>Симулятор драмы в зале суда<p><b>Исходный код:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Основная разработка:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Разработка клиента:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Тестирование:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Благодарности:</b><br>CrazyJC (директор по выпуску версии 2.8) и MaximumVolty (продвижение версии 2.8); Remy, Hibiki, court-records.net (спрайты); Qubrick (webAO); Rue (вебсайт); Draxirch (дизайн интерфейса); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, и FanatSors (AO1); держатели серверов, ГМ, ПД, создатели контента, и всё сообщество AO2!<p>Проект сетевой визуальной новеллы Attorney Online (c) 2016-2020 разработчики Attorney Online. Применяется лицензия на открытое ПО. Все прочие файлы являются собственностью их владельцев.<p>Работает на Qt версии %2 с аудио-движком %3.<p>Сборка от %4 + + + + About + О программе + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + <h2>Attorney Online %1</h2>Симулятор судебной драмы<p><b>Исходный код:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Основной разработкой занимались:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Особенная благодарность:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (дизайн интерфейса), Draxirch (дизайн интерфейса), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + + + + Online: %1/%2 + Онлайн: %1/%2 + + + + + Offline + Не в сети + + + + NetworkManager + + + No description provided. + + + + + QDialogButtonBox + + + + OK + + + + + QObject + + + None + Нет + + + + [MISSING] %1 + [НЕ НАЙДЕНО] %1 + + + + [STREAM] %1 + [ТРАНСЛЯЦИЯ] %1 + + + + chatlogpiece + + + + + UNKNOWN + н/д + + + has played a song: + включил(а) композицию: + + + + debug_functions + + + Error: %1 + Ошибка: %1 + + + + Error + Ошибка + + + + Notice + Уведомление + + + diff --git a/data/ui/direct_connect_dialog.ui b/data/ui/direct_connect_dialog.ui new file mode 100644 index 00000000..3cc66207 --- /dev/null +++ b/data/ui/direct_connect_dialog.ui @@ -0,0 +1,70 @@ + + + direct_connect_dialog + + + + 0 + 0 + 401 + 77 + + + + Form + + + + + + + + scheme://hostname.domain:port + + + + + + + + + + + Not Connected + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Connect + + + + + + + Cancel + + + + + + + + + + diff --git a/data/ui/favorite_server_dialog.ui b/data/ui/favorite_server_dialog.ui new file mode 100644 index 00000000..a1d5f28e --- /dev/null +++ b/data/ui/favorite_server_dialog.ui @@ -0,0 +1,141 @@ + + + add_server_widget + + + + 0 + 0 + 420 + 420 + + + + + 230 + 260 + + + + Form + + + + + + + + Legacy Entry : + + + + + + + + + + Convert + + + + + + + + + + + Display Name: + + + + + + + + + + Hostname : + + + + + + + + + + Port: + + + + + + + 65535 + + + + + + + Protocol : + + + + + + + + TCP + + + + + WEBSOCKET + + + + + + + + Description: + + + + + + + + 0 + 0 + + + + + + + + + + QFrame::Plain + + + Qt::Horizontal + + + + + + + QDialogButtonBox::Close|QDialogButtonBox::Save + + + + + + + + diff --git a/data/ui/lobby.ui b/data/ui/lobby.ui new file mode 100644 index 00000000..ceb85ff0 --- /dev/null +++ b/data/ui/lobby.ui @@ -0,0 +1,706 @@ + + + lobby_form + + + + 0 + 0 + 600 + 550 + + + + + 0 + 0 + + + + + 300 + 280 + + + + Qt::CustomContextMenu + + + + + + QWidget#lobby_form { + background-color : rgba(102, 102, 102, 255); +} + +QLabel { + color: white; +} + +QLineEdit { + background-color: rgb(102,102,102); + color: rgb(255, 255, 255); +} + +QTreeWidget { + background-color: rgb(102,102,102); + color: white +} + +QWidget#demo_tab { + border: 1px solid white +} + +QPushButton { + border: 1px solid lightgray; + background-color: rgb(84,33,0); + color: white; + padding: 3; +} + +QPushButton:hover { + border: 1px solid white; + background-color: rgb(122,40,0); +} + +QPushButton:pressed { + border: 1px solid white; + background-color: rgb(125,41,0); + color: white; +} + +QTabBar::tab { + border: 2px solid lightgray; + background-color: rgb(100,41,0); + color: lightgray; + padding: 2; + margin-right: 5px; + margin-left: 5px; + border-bottom: 0; +} + +QTabBar::tab:selected, QTabBar::tab:hover { + color: white; + background-color: rgb(122,40,0); +} + +QTabBar::tab:selected { + background-color: rgb(122,40,0); + border: 2px solid white; + border-bottom: 0; +} + +QTabBar::tab:!selected { + margin-top: 2px; /* make non-selected tabs look smaller */ +} + +QHeaderView::section { + border: 1px solid white; + background-color: rgb(122,40,0); + margin-right: 2px; + padding: 1; +} + +QHeaderView::section:pressed { + background-color: rgb(84,33,0); +} + +QHeaderView::up-arrow +{ + image: url(":/data/ui/lobby_assets/up-arrow.png"); +} + +QHeaderView::down-arrow +{ + image: url(":/data/ui/lobby_assets/down-arrow.png"); +} + +QScrollBar:vertical { + background-color: rgba(140,140,140, 255); + color : white +} + +QScrollBar:horizontall { + background-color: rgba(140,140,140, 255); + color : white +} + + + + 0 + + + 4 + + + 2 + + + 4 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Version: 2.10.1 + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 100 + 0 + + + + Settings + + + + + + + + 0 + 0 + + + + + 100 + 0 + + + + About + + + + + + + + + + Game Lobby + + + + + + + + + + + 0 + 0 + + + + + + + + 3 + 0 + + + + + + + Qt::CustomContextMenu + + + Qt::LeftToRight + + + + + + 0 + + + true + + + + Public Servers + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Search + + + + + + + background-color: rgba(140, 140, 140, 255); +color: rgb(255, 255, 255); + + + Qt::ElideNone + + + true + + + + # + + + AlignTrailing|AlignVCenter + + + + + Name + + + + + + + + + Favorites + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::CustomContextMenu + + + background-color: rgba(140, 140, 140, 255); +color: rgb(255, 255, 255); + + + Qt::ElideNone + + + true + + + + # + + + + + Name + + + + + + + + + Demos + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + background-color: rgba(140, 140, 140, 255); +color: rgb(255, 255, 255); + + + Qt::ElideNone + + + 0 + + + true + + + + Server + + + + + Name + + + + + + + + + + + + + + Add Server + + + + + + + Remove Server + + + + + + + Edit Server + + + + + + + + + + + Direct Connect + + + + + + + Add To Favorites + + + + + + + + + + + Refresh + + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 5 + 20 + + + + + + + + + 2 + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 4 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + color: #F8A818; +background-color: #383838; +border: 1px solid white; + + + Server Info + + + Qt::AlignCenter + + + + + + + color: #F8A818; +background-color: #383838; +border: 1px solid white; + + + Offline + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + background-color: rgba(140, 140, 140, 255); +color: rgb(255, 255, 255); + + + <!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" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Segoe UI'; font-size:9pt; 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;">No description provided.</p></body></html> + + + + + + + false + + + Connect + + + + + + + + + + + 0 + 3 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + color: #F8A818; +background-color: #383838; +border: 1px solid white; + + + Message of the Day + + + Qt::AlignCenter + + + + + + + background-color: rgba(140, 140, 140, 255); +color: rgb(255, 255, 255); + + + <!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" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Segoe UI'; font-size:9pt; font-weight:400; font-style:normal;"> +<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;"><br /></p></body></html> + + + true + + + + + + + + + + + + + + + + + diff --git a/data/ui/lobby_assets/down-arrow.png b/data/ui/lobby_assets/down-arrow.png new file mode 100644 index 00000000..ce40d081 Binary files /dev/null and b/data/ui/lobby_assets/down-arrow.png differ diff --git a/data/ui/lobby_assets/up-arrow.png b/data/ui/lobby_assets/up-arrow.png new file mode 100644 index 00000000..46ddf4c6 Binary files /dev/null and b/data/ui/lobby_assets/up-arrow.png differ diff --git a/data/ui/options_dialog.ui b/data/ui/options_dialog.ui new file mode 100644 index 00000000..db6db725 --- /dev/null +++ b/data/ui/options_dialog.ui @@ -0,0 +1,1091 @@ + + + optionsdialogue + + + + 0 + 0 + 450 + 415 + + + + Qt::NoContextMenu + + + Settings + + + + + + Qt::NoFocus + + + 0 + + + + Gameplay + + + + + + true + + + + + 0 + 0 + 394 + 858 + + + + + + + + + + + + + + Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. + + + Stop Music w/ Category: + + + + + + + + + + + + + + + + + Sets the default scaling method, if there is not one already defined specifically for the character. + + + Scaling: + + + + + + + Turn this on to allow characters to define their own custom chat box designs. + + + Custom Chatboxes: + + + + + + + Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. + + + Allow Effects: + + + + + + + + + + + + + + Open the theme folder of the currently selected theme. + + + Open Theme Folder + + + + + + + Overrides the base URL to retrieve server information from. + + + Alternate Server List: + + + + + + + Instant Objection: + + + + + + + ms + + + 500 + + + + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the Lobby for the changes to take effect, such as by joining a server and leaving it. + + + Theme: + + + + + + + + + + + + + Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. + + + Network Frame Effects: + + + + + + + Chat Rate Limit: + + + Qt::AutoText + + + + + + + ms + + + 5000 + + + + + + + If ticked, themes will be allowed to have animated elements. + + + Animated Theme: + + + + + + + Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. + + + Text crawl: + + + + + + + Refresh the theme and update all of the ui elements to match. + + + Reload Theme + + + + + + + + + + + + + + + + + Your showname will be automatically set to this value when you join a server. + + + Default showname: + + + + + + + + + + + + + + + + + Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). + + + Stickers: + + + + + + + Turn this on to prevent preanimation checkbox from clearing after playing the emote. + + + Sticky Preanims: + + + + + + + ms + + + 10000 + + + + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + + + Custom shownames: + + + + + + + Turn this on to prevent the effects dropdown from clearing the effect after playing it. + + + Sticky Effects: + + + + + + + + + + + + + + Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. + + + Text Stay Time: + + + + + + + Sets the language if you don't want to use your system language. + + + Language: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If the SFX dropdown has an SFX selected, send the custom SFX alongside the message even if Preanim is OFF. + + + Always Send SFX: + + + + + + + Turn this on to prevent the sound dropdown from clearing the sound after playing it. + + + Sticky Sounds: + + + + + + + + + + + + + + Your OOC name will be automatically set to this value when you join a server. + + + Default username: + + + + + + + Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. + + + Allow Screenshake: + + + + + + + + + + + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + + + Discord: + + + + + + + Use the markup colors in the server IC chatlog. + + + Colors in IC Log: + + + + + + + Sets a 'subtheme', which will stack on top of the current theme and replace anything it can. Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. + + + Subtheme: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + QFrame::HLine + + + QFrame::Sunken + + + + + + + QFrame::HLine + + + QFrame::Sunken + + + + + + + + + + + + + + If ticked, Evidence needs a double-click to view rather than a single click. + + + Evidence Double Click: + + + + + + + QFrame::HLine + + + QFrame::Sunken + + + + + + + + + + + + + + Whether or not to resume playing animations from where they left off. Turning off might reduce lag. + + + Continuous Playback: + + + + + + + 30 + + + + + + + 1 + + + 8 + + + + + + + <html><head/><body><p>The factor by which to scale the size of the UI</p></body></html> + + + UI Scaling Factor + + + + + + + + + + + + Callwords + + + + + + + + + <html><head/><body><p>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br/><br/>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</p></body></html> + + + true + + + + + + + + Audio + + + + + + Audio device: + + + + + + + + + + QFrame::HLine + + + QFrame::Sunken + + + + + + + How much of the volume to suppress when client is not in focus. + + + Suppress Audio: + + + + + + + % + + + 100 + + + + + + + QFrame::HLine + + + QFrame::Sunken + + + + + + + Sets the delay between playing the blip sounds. + + + Blip rate: + + + + + + + Play a blip sound \"once per every X symbols\", where X is the blip rate. 0 plays a blip sound only once. + + + + + + + If true, the game will play a blip sound even when a space is 'being said'. + + + Blank blips: + + + + + + + + + + + + + + If true, the game will allow looping sound effects to play on preanimations. + + + Enable Looping SFX: + + + + + + + + + + + + + + If true, AO2 will ask the server to stop music when you use 'Objection!' + + + Kill Music On Objection: + + + + + + + + + + + + + + If true, AO2 will not play any streamed audio and show that streaming is disabled. + + + Music Streaming enabled: + + + + + + + + + + + + + + + + 0 + 0 + + + + Assets + + + + + + + 0 + 0 + + + + <html><head/><body><p>Add or remove base folders for use by assets.</p><p><br/>Base folders on the bottom are prioritized over those above them.</p></body></html> + + + true + + + + + + + + 0 + 0 + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 40 + 16777215 + + + + + + + + + + + + 0 + 0 + + + + Remove + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + + 40 + 16777215 + + + + + + + + + + + + 0 + 0 + + + + Add... + + + + + + + + 0 + 0 + + + + Clears the lookup cache for assets. +Use this when you have added an asset that takes precedence over another existing asset. + + + Clear Cache + + + + + + + + + + Logging + + + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + + + Log goes downwards: + + + + + + + + + + + + + + The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. + + + Log length: + + + + + + + entries + + + 10000 + + + + + + + If ticked, new messages will appear separated, with the message coming on the next line after the name. +When unticked, it displays it as 'name: message'. + + + Log newline: + + + + + + + + + + + + + + The distance in pixels between each entry in the IC log. +Default: 0. + + + Log margin: + + + + + + + px + + + 1000 + + + + + + + If ticked, log will contain a timestamp in UTC before the name. + + + Log timestamp: + + + + + + + + + + + + + + Log timestamp format: + + + + + + + + true + + + + + + + If ticked, log will show IC actions such as shouting and presenting evidence. + + + Log IC actions: + + + + + + + + + + + + + + If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). + + + Desynchronize IC Logs: + + + + + + + + + + + + + + Text logs of gameplay will be automatically written in the /logs folder. + + + Log to Text Files: + + + + + + + + + + + + + + Gameplay will be automatically recorded as demos in the /logs folder. + + + Log to Demo Files: + + + + + + + + + + + + + + + Privacy + + + + + + Do not include me in public player counts + + + + + + + QFrame::HLine + + + QFrame::Sunken + + + + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::RestoreDefaults|QDialogButtonBox::Save + + + + + + + + diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt deleted file mode 100644 index 29ad4fe7..00000000 --- a/include/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -target_sources(Attorney_Online PRIVATE -aoapplication.h -aoblipplayer.h -aobutton.h -aocaseannouncerdialog.h -aocharbutton.h -aoclocklabel.h -aoemotebutton.h -aoemotepreview.h -aoevidencebutton.h -aoevidencedisplay.h -aoimage.h -aolayer.h -aomusicplayer.h -aooptionsdialog.h -aopacket.h -aosfxplayer.h -aotextarea.h -aoutils.h -bass.h -bassmidi.h -bassopus.h -chatlogpiece.h -courtroom.h -datatypes.h -debug_functions.h -demoserver.h -discord-rpc.h -discord_register.h -discord_rich_presence.h -discord_rpc.h -eventfilters.h -file_functions.h -hardware_functions.h -lobby.h -misc_functions.h -networkmanager.h -scrolltext.h -text_file_functions.h -) diff --git a/include/aoapplication.h b/include/aoapplication.h deleted file mode 100644 index 72c3457d..00000000 --- a/include/aoapplication.h +++ /dev/null @@ -1,402 +0,0 @@ -#ifndef AOAPPLICATION_H -#define AOAPPLICATION_H - -#include "widgets/aooptionsdialog.h" -#include "aopacket.h" -#include "datatypes.h" -#include "demoserver.h" -#include "discord_rich_presence.h" - -#include "bass.h" - -#include -#include -#include -#include - -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include - -class NetworkManager; -class Lobby; -class Courtroom; -class Options; - -class VPath : QString { - using QString::QString; - -public: - explicit VPath(const QString &str) : QString(str) {} - inline QString const &toQString() const { return *this; } - inline bool operator==(const VPath &str) const { - return this->toQString() == str.toQString(); - } - inline VPath operator+(const VPath &str) const { - return VPath(this->toQString() + str.toQString()); - } -}; - -inline uint qHash(const VPath &key, uint seed = qGlobalQHashSeed()) -{ - return qHash(key.toQString(), seed); -} - -class AOApplication : public QApplication { - Q_OBJECT - -public: - AOApplication(int &argc, char **argv); - ~AOApplication(); - - NetworkManager *net_manager; - Lobby *w_lobby; - Courtroom *w_courtroom; - AttorneyOnline::Discord *discord; - - QFont default_font; - - bool lobby_constructed = false; - bool courtroom_constructed = false; - - void construct_lobby(); - void destruct_lobby(); - - void construct_courtroom(); - void destruct_courtroom(); - - void server_packet_received(AOPacket *p_packet); - - void send_server_packet(AOPacket *p_packet); - - void call_settings_menu(); - void call_announce_menu(Courtroom *court); - - qint64 latency = 0; - QString window_title; - - /////////////////server metadata////////////////// - - bool yellow_text_supported = false; - bool prezoom_supported = false; - bool flipping_supported = false; - bool custom_objection_supported = false; - bool desk_mod_supported = false; - bool evidence_supported = false; - bool cccc_ic_supported = false; - bool arup_supported = false; - bool casing_alerts_supported = false; - bool modcall_reason_supported = false; - bool looping_sfx_supported = false; - bool additive_text_supported = false; - bool effects_supported = false; - bool y_offset_supported = false; - bool expanded_desk_mods_supported = false; - bool auth_packet_supported = false; - - ///////////////loading info/////////////////// - - // client ID. Not useful, to be removed eventually - int client_id = 0; - - QString server_software = ""; - - int char_list_size = 0; - int loaded_chars = 0; - int generated_chars = 0; - int evidence_list_size = 0; - int loaded_evidence = 0; - int music_list_size = 0; - int loaded_music = 0; - - bool courtroom_loaded = false; - - //////////////////versioning/////////////// - - int get_release() const { return RELEASE; } - int get_major_version() const { return MAJOR_VERSION; } - int get_minor_version() const { return MINOR_VERSION; } - QString get_version_string(); - - /////////////////////////////////////////// - - // Adds the server to favorite_servers.ini - void add_favorite_server(int p_server); - void remove_favorite_server(int p_server); - - void set_server_list(QVector &servers) { server_list = servers; } - QVector &get_server_list() { return server_list; } - - // Returns the character the player has currently selected - QString get_current_char(); - - // implementation in path_functions.cpp - VPath get_theme_path(QString p_file, QString p_theme=""); - VPath get_character_path(QString p_char, QString p_file); - VPath get_misc_path(QString p_misc, QString p_file); - VPath get_sounds_path(QString p_file); - VPath get_music_path(QString p_song); - VPath get_background_path(QString p_file); - VPath get_default_background_path(QString p_file); - VPath get_evidence_path(QString p_file); - QVector get_asset_paths(QString p_element, QString p_theme="", QString p_subtheme="", QString p_default_theme="", QString p_misc="", QString p_character="", QString p_placeholder=""); - QString get_asset_path(QVector pathlist); - QString get_image_path(QVector pathlist, bool static_image=false); - QString get_sfx_path(QVector pathlist); - QString get_config_value(QString p_identifier, QString p_config, QString p_theme="", QString p_subtheme="", QString p_default_theme="", QString p_misc=""); - QString get_asset(QString p_element, QString p_theme="", QString p_subtheme="", QString p_default_theme="", QString p_misc="", QString p_character="", QString p_placeholder=""); - QString get_image(QString p_element, QString p_theme="", QString p_subtheme="", QString p_default_theme="", QString p_misc="", QString p_character="", QString p_placeholder="", bool static_image=false); - QString get_sfx(QString p_sfx, QString p_misc="", QString p_character=""); - QString get_pos_path(const QString& pos, bool desk = false); - QString get_case_sensitive_path(QString p_file); - QString get_real_path(const VPath &vpath, const QStringList &suffixes={""}); - void invalidate_lookup_cache(); - - ////// Functions for reading and writing files ////// - // Implementations file_functions.cpp - - // returns all of the file's lines in a QStringList - QStringList get_list_file(VPath path); - QStringList get_list_file(QString p_file); - - // Process a file and return its text as a QString - QString read_file(QString filename); - - // Write text to file. make_dir would auto-create the directory if it doesn't - // exist. - bool write_to_file(QString p_text, QString p_file, bool make_dir = false); - - // Append text to the end of the file. make_dir would auto-create the - // directory if it doesn't exist. - bool append_to_file(QString p_text, QString p_file, bool make_dir = false); - - // Append to the currently open demo file if there is one - void append_to_demofile(QString packet_string); - - /** - * @brief Reads the clients log folder and locates potential demo files to populate the demoserver list. - * - * @return A seperated list of servernames and demo logfile filenames. - * - * @details This is to remove the need of delimiters or deal with potential - * harmfully encoding or plattform differences. We always get a combo of servername and filename. - * - * Do note this function assumes all demo files have the .demo extension. - * - */ - QMultiMap load_demo_logs_list() const; - - // Returns the value of p_identifier in the design.ini file in p_design_path - QString read_design_ini(QString p_identifier, VPath p_design_path); - QString read_design_ini(QString p_identifier, QString p_design_path); - - // Returns the coordinates of widget with p_identifier from p_file - QPoint get_button_spacing(QString p_identifier, QString p_file); - - // Returns the dimensions of widget with specified identifier from p_file - pos_size_type get_element_dimensions(QString p_identifier, QString p_file, - QString p_misc = ""); - - // Returns the value to you - QString get_design_element(QString p_identifier, QString p_file, - QString p_misc = ""); - - // Returns the value of font_size with p_identifier from p_file - int get_font_size(QString p_identifier, QString p_file); - - // Returns the color with p_identifier from p_file - QColor get_color(QString p_identifier, QString p_file); - - // Returns the markup symbol used for specified p_identifier such as colors - QString get_chat_markup(QString p_identifier, QString p_file); - - // Returns the color from the misc folder. - QColor get_chat_color(QString p_identifier, QString p_chat); - - // Returns the value with p_identifier from penalty/penalty.ini in the current - // theme path - QString get_penalty_value(QString p_identifier); - - // Returns the sfx with p_identifier from courtroom_sounds.ini in the current theme path - QString get_court_sfx(QString p_identifier, QString p_misc=""); - - // Figure out if we can opus this or if we should fall back to wav - QString get_sfx_suffix(VPath sound_to_check); - - // Can we use APNG for this? If not, WEBP? If not, GIF? If not, fall back to - // PNG. - QString get_image_suffix(VPath path_to_check, bool static_image=false); - - // Returns the value of p_search_line within target_tag and terminator_tag - QString read_char_ini(QString p_char, QString p_search_line, - QString target_tag); - - // Returns a QStringList of all key=value definitions on a given tag. - QStringList read_ini_tags(VPath p_file, QString target_tag = ""); - - // Sets the char.ini p_search_line key under tag target_tag to value. - void set_char_ini(QString p_char, QString value, QString p_search_line, - QString target_tag); - - // Returns the text between target_tag and terminator_tag in p_file - QString get_stylesheet(QString p_file); - - // Returns the text between target_tag and terminator_tag in p_file - QString get_tagged_stylesheet(QString target_tag, QString p_file); - - // Returns the side of the p_char character from that characters ini file - QString get_char_side(QString p_char); - - // Returns the showname from the ini of p_char - QString get_showname(QString p_char); - - // Returns the category of this character - QString get_category(QString p_char); - - // Returns the value of chat image from the specific p_char's ini file - QString get_chat(QString p_char); - - // Returns the value of chat font from the specific p_char's ini file - QString get_chat_font(QString p_char); - - // Returns the value of chat font size from the specific p_char's ini file - int get_chat_size(QString p_char); - - // Returns the preanim duration of p_char's p_emote - int get_preanim_duration(QString p_char, QString p_emote); - - // Not in use - int get_text_delay(QString p_char, QString p_emote); - - // Get the theme's effects folder, read it and return the list of filenames in - // a string - QStringList get_effects(QString p_char); - - // Get the correct effect image - QString get_effect(QString effect, QString p_char, QString p_folder); - - // Return p_property of fx_name. If p_property is "sound", return - // the value associated with fx_name, otherwise use fx_name + '_' + p_property. - QString get_effect_property(QString fx_name, QString p_char, QString p_folder, QString p_property); - - // Returns the custom realisation used by the character. - QString get_custom_realization(QString p_char); - - // Returns whether the given pos is a judge position - bool get_pos_is_judge(const QString &p_pos); - - // Returns the total amount of emotes of p_char - int get_emote_number(QString p_char); - - // Returns the emote comment of p_char's p_emote - QString get_emote_comment(QString p_char, int p_emote); - - // Returns the base name of p_char's p_emote - QString get_emote(QString p_char, int p_emote); - - // Returns the preanimation name of p_char's p_emote - QString get_pre_emote(QString p_char, int p_emote); - - // Returns the sfx of p_char's p_emote - QString get_sfx_name(QString p_char, int p_emote); - - // Returns the blipsound of p_char's p_emote - QString get_emote_blip(QString p_char, int p_emote); - - // Returns if the sfx is defined as looping in char.ini - QString get_sfx_looping(QString p_char, int p_emote); - - // Returns if an emote has a frame specific SFX for it - QString get_sfx_frame(QString p_char, QString p_emote, int n_frame); - - // Returns if an emote has a frame specific SFX for it - QString get_flash_frame(QString p_char, QString p_emote, int n_frame); - - // Returns if an emote has a frame specific SFX for it - QString get_screenshake_frame(QString p_char, QString p_emote, int n_frame); - - // Not in use - int get_sfx_delay(QString p_char, int p_emote); - - // Returns the modifier for p_char's p_emote - int get_emote_mod(QString p_char, int p_emote); - - // Returns the desk modifier for p_char's p_emote - int get_desk_mod(QString p_char, int p_emote); - - // Returns p_char's blips (previously called their "gender") - QString get_blips(QString p_char); - - // Get a property of a given emote, or get it from "options" if emote doesn't have it - QString get_emote_property(QString p_char, QString p_emote, QString p_property); - - // Return a transformation mode from a string ("smooth" for smooth, anything else for fast) - Qt::TransformationMode get_scaling(QString p_scaling); - - // Returns the scaling type for p_miscname - Qt::TransformationMode get_misc_scaling(QString p_miscname); - - // ====== - // These are all casing-related settings. - // ====== - - // Currently defined subtheme - QString subtheme; - - //Default is always default. - const QString default_theme = "default"; - - // The file name of the log file in base/logs. - QString log_filename; - - /** - * @brief A QString of an URL that defines the content repository - * send by the server. - * - * @details Introduced in Version 2.9.2. - * Addresses the issue of contenturl devlivery for WebAO - * without relying on someone adding the link manually. - */ - QString asset_url; - - void initBASS(); - static void load_bass_plugins(); - static void CALLBACK BASSreset(HSTREAM handle, DWORD channel, DWORD data, - void *user); - static void doBASSreset(); - - QElapsedTimer demo_timer; - DemoServer* demo_server = nullptr; - -private: - const int RELEASE = 2; - const int MAJOR_VERSION = 10; - const int MINOR_VERSION = 1; - - QVector server_list; - QHash asset_lookup_cache; - QHash dir_listing_cache; - QSet dir_listing_exist_cache; - -public slots: - void server_disconnected(); - void loading_cancelled(); - -signals: - void qt_log_message(QtMsgType type, const QMessageLogContext &context, - const QString &msg); -}; - -#endif // AOAPPLICATION_H diff --git a/include/aoblipplayer.h b/include/aoblipplayer.h deleted file mode 100644 index ea2dcd38..00000000 --- a/include/aoblipplayer.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef AOBLIPPLAYER_H -#define AOBLIPPLAYER_H - -#include "bass.h" -#include "bassopus.h" - -#include "aoapplication.h" - -#include -#include -#include -#include - -class AOBlipPlayer { -public: - AOBlipPlayer(QWidget *parent, AOApplication *p_ao_app); - - void set_blips(QString p_sfx); - void blip_tick(); - void set_volume(int p_volume); - void set_muted(bool toggle); - - int m_cycle = 0; - -private: - QWidget *m_parent; - AOApplication *ao_app; - qreal m_volume; - - bool m_muted = false; - - void set_volume_internal(qreal p_volume); - - HSTREAM m_stream_list[5]; -}; - -#endif // AOBLIPPLAYER_H diff --git a/include/aobutton.h b/include/aobutton.h deleted file mode 100644 index f1ae8b7f..00000000 --- a/include/aobutton.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef AOBUTTON_H -#define AOBUTTON_H - -#include "aoapplication.h" - -#include -#include -#include - -class AOButton : public QPushButton { - Q_OBJECT - -public: - AOButton(QWidget *parent, AOApplication *p_ao_app); - ~AOButton(); - - AOApplication *ao_app; - QMovie *movie; - - void set_image(QString p_image, QString p_misc=""); -}; - -#endif // AOBUTTON_H diff --git a/include/aocharbutton.h b/include/aocharbutton.h deleted file mode 100644 index 688d52d6..00000000 --- a/include/aocharbutton.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef AOCHARBUTTON_H -#define AOCHARBUTTON_H - -#include "aoapplication.h" -#include "aoimage.h" - -#include -#include -#include -#include -#include - -class AOCharButton : public QPushButton { - Q_OBJECT - -public: - AOCharButton(QWidget *parent, AOApplication *p_ao_app, int x_pos, int y_pos, - bool is_taken); - - AOApplication *ao_app; - - void refresh(); - void reset(); - void set_taken(bool is_taken); - void set_passworded(); - - void apply_taken_image(); - - void set_image(QString p_character); - -private: - bool taken; - - QWidget *m_parent; - - AOImage *ui_taken; - AOImage *ui_passworded; - AOImage *ui_selector; - -protected: -#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - void enterEvent(QEvent *e) override; -#else - void enterEvent(QEnterEvent *e) override; -#endif - void leaveEvent(QEvent *e) override; -}; - -#endif // AOCHARBUTTON_H diff --git a/include/aoclocklabel.h b/include/aoclocklabel.h deleted file mode 100644 index 830fb527..00000000 --- a/include/aoclocklabel.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef AOCLOCKLABEL_H -#define AOCLOCKLABEL_H - -#include -#include -#include -#include -#include - -class AOClockLabel : public QLabel { - Q_OBJECT - -public: - AOClockLabel(QWidget *parent); - void start(); - void start(qint64 msecs); - void set(qint64 msecs, bool update_text = false); - void pause(); - void stop(); - void skip(qint64 msecs); - bool active(); - -protected: - void timerEvent(QTimerEvent *event) override; - -private: - QBasicTimer timer; - QDateTime target_time; -}; - -#endif // AOCLOCKLABEL_H diff --git a/include/aoemotebutton.h b/include/aoemotebutton.h deleted file mode 100644 index edabfb65..00000000 --- a/include/aoemotebutton.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef AOEMOTEBUTTON_H -#define AOEMOTEBUTTON_H - -#include "aoapplication.h" -#include -#include -#include -#include - -class AOEmoteButton : public QPushButton { - Q_OBJECT - -public: - AOEmoteButton(QWidget *p_parent, AOApplication *p_ao_app, int p_x, int p_y, - int p_w, int p_h); - - void set_image(QString p_image, QString p_emote_comment); - void set_char_image(QString p_char, int p_emote, bool on); - - void set_selected_image(QString p_image); - - void set_id(int p_id) { m_id = p_id; } - int get_id() { return m_id; } - -private: - QWidget *parent; - AOApplication *ao_app; - QLabel *ui_selected = nullptr; - - int m_id = 0; -signals: - void emote_clicked(int p_id); - -private slots: - void on_clicked(); -}; - -#endif // AOEMOTEBUTTON_H diff --git a/include/aoemotepreview.h b/include/aoemotepreview.h deleted file mode 100644 index 315371b3..00000000 --- a/include/aoemotepreview.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef AOEMOTEPREVIEW_H -#define AOEMOTEPREVIEW_H - -#include "aolayer.h" -#include - -class AOEmotePreview : public QWidget -{ - Q_OBJECT -public: - AOEmotePreview(QWidget *parent = nullptr, - AOApplication *p_ao_app = nullptr); - - void set_widgets(); - void play(QString emote, QString char_name, bool flipped = false, int self_offset = 0, int self_offset_v = 0); -private: - AOApplication *ao_app; - QWidget *ui_viewport; - BackgroundLayer *ui_vp_background; - SplashLayer *ui_vp_speedlines; - CharLayer *ui_vp_player_char; - BackgroundLayer *ui_vp_desk; - - QLabel *ui_size_label; - - QString m_emote = ""; - QString m_char = ""; -protected: - void resizeEvent(QResizeEvent *); -}; - -#endif // AOEMOTEPREVIEW_H diff --git a/include/aoevidencebutton.h b/include/aoevidencebutton.h deleted file mode 100644 index f0e13531..00000000 --- a/include/aoevidencebutton.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef AOEVIDENCEBUTTON_H -#define AOEVIDENCEBUTTON_H - -#include "aoapplication.h" -#include "aoimage.h" - -#include -#include -#include -#include - -class AOEvidenceButton : public QPushButton { - Q_OBJECT - -public: - AOEvidenceButton(QWidget *p_parent, AOApplication *p_ao_app, int p_x, int p_y, - int p_w, int p_h); - - void set_image(QString p_image); - void set_theme_image(QString p_image); - void set_id(int p_id) { m_id = p_id; } - - void set_selected(bool p_selected); - -private: - AOApplication *ao_app; - QWidget *m_parent; - - AOImage *ui_selected; - AOImage *ui_selector; - - int m_id = 0; - -protected: -#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - void enterEvent(QEvent *e) override; -#else - void enterEvent(QEnterEvent *e) override; -#endif - void leaveEvent(QEvent *e) override; - void mouseDoubleClickEvent(QMouseEvent *e) override; - /* -void dragLeaveEvent(QMouseEvent *e); -void dragEnterEvent(QMouseEvent *e); -*/ - -signals: - void evidence_clicked(int p_id); - void evidence_double_clicked(int p_id); - void on_hover(int p_id, bool p_state); - -private slots: - void on_clicked(); -}; - -#endif // AOEVIDENCEBUTTON_H diff --git a/include/aoevidencedisplay.h b/include/aoevidencedisplay.h deleted file mode 100644 index df4a0377..00000000 --- a/include/aoevidencedisplay.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef AOEVIDENCEDISPLAY_H -#define AOEVIDENCEDISPLAY_H - -#include "aoapplication.h" -#include "aolayer.h" -#include "aosfxplayer.h" - -#include -#include -#include - -class AOEvidenceDisplay : public QLabel { - Q_OBJECT - -public: - AOEvidenceDisplay(QWidget *p_parent, AOApplication *p_ao_app); - - void show_evidence(int p_index, QString p_evidence_image, bool is_left_side, int p_volume); - void reset(); - void combo_resize(int w, int h); - -signals: - void show_evidence_details(int index); - -private: - AOApplication *ao_app; - InterfaceLayer *evidence_movie; - QPushButton *evidence_icon; - AOSfxPlayer *sfx_player; - int last_evidence_index = -1; - -private slots: - void show_done(); - void icon_clicked(); -}; - -#endif // AOEVIDENCEDISPLAY_H diff --git a/include/aoimage.h b/include/aoimage.h deleted file mode 100644 index 38729d70..00000000 --- a/include/aoimage.h +++ /dev/null @@ -1,31 +0,0 @@ -// This class represents a static theme-dependent image - -#ifndef AOIMAGE_H -#define AOIMAGE_H - -#include "aoapplication.h" - -#include -#include -#include - -class AOImage : public QLabel { -public: - AOImage(QWidget *parent, AOApplication *p_ao_app, bool make_static = false); - ~AOImage(); - - QWidget *m_parent; - AOApplication *ao_app; - QMovie *movie; - - QString path; - - bool is_static = false; - - bool masked = false; - - bool set_image(QString p_image, QString p_misc = ""); - void set_size_and_pos(QString identifier); -}; - -#endif // AOIMAGE_H diff --git a/include/aolayer.h b/include/aolayer.h deleted file mode 100644 index 19dce38b..00000000 --- a/include/aolayer.h +++ /dev/null @@ -1,255 +0,0 @@ -#ifndef AOLAYER_H -#define AOLAYER_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -class AOApplication; -class VPath; - -// "Brief" explanation of what the hell this is: -// -// AOLayer handles all animations both inside and outside -// the viewport. It was originally devised as a layering -// system, but turned into a full refactor of the existing -// animation code. -// -// AOLayer has six subclasses, all of which differ mainly in -// how they handle path resolution. -// -// - BackgroundLayer: self-explanatory, handles files found in base/background -// - CharLayer: handles all the "wonderful" quirks of character path resolution -// - SplashLayer: handles elements that can either be provided by a misc/ directory -// or by the theme - speedlines, shouts, WT/CE, et cetera -// - EffectLayer: this is basically a dummy layer since effects do their own wonky -// path resolution in a different file -// - InterfaceLayer: handles UI elements like the chat arrow and the music display -// - StickerLayer: Crystalwarrior really wanted this. Handles "stickers," whatever those are. -// -// For questions comments or concerns, bother someone else - -class AOLayer : public QLabel { - Q_OBJECT - -public: - AOLayer(QWidget *p_parent, AOApplication *p_ao_app); - - QString filename; // file name without extension, i.e. "witnesstestimony" - int static_duration; // time in ms for static images to be displayed, if - // applicable. set to 0 for infinite - int max_duration; // maximum duration in ms, image will be culled if it is - // exceeded. set this to 0 for infinite duration - bool play_once = false; // Whether to loop this animation or not - bool cull_image = true; // if we're done playing this animation, should we - // hide it? also controls durational culling - // Are we loading this from the same frame we left off on? - bool continuous = false; - // Whether or not to forcibly bypass the simple check done by start_playback - // and use the existent value of continuous instead - bool force_continuous = false; - Qt::TransformationMode transform_mode = Qt::FastTransformation; // transformation mode to use for this image - bool stretch = false; // Should we stretch/squash this image to fill the screen? - bool masked = true; // Set a mask to the dimensions of the widget? - - // Set the movie's image to provided paths, preparing for playback. - void start_playback(QString p_image); - - void set_play_once(bool p_play_once); - void set_cull_image(bool p_cull_image); - void set_static_duration(int p_static_duration); - void set_max_duration(int p_max_duration); - - // Stop the movie, clearing the image - void stop(); - - // Stop the movie and clear all vectors - void kill(); - - // Set the m_flipped variable to true/false - void set_flipped(bool p_flipped) { m_flipped = p_flipped; } - - // Set the movie's playback speed (between 10% and 1000%) - void set_speed(int modifier) { speed = qMax(10, qMin(modifier, 1000)); } - - // Move the label itself around - void move(int ax, int ay); - - // Move the label and center it - void move_and_center(int ax, int ay); - - // This is somewhat pointless now as there's no "QMovie" object to resize, aka - // no "combo" to speak of - void combo_resize(int w, int h); - - // Return the frame delay adjusted for speed - int get_frame_delay(int delay); - - // iterate through a list of paths and return the first entry that exists. if - // none exist, return NULL (safe because we check again for existence later) - QString find_image(QStringList p_list); - -protected: - AOApplication *ao_app; - QVector movie_frames; - QVector movie_delays; - - QTimer *preanim_timer; - QTimer *shfx_timer; - QTimer *ticker; - QString last_path; - QImageReader m_reader; - - QElapsedTimer actual_time; - - // These are the X and Y values before they are fixed based on the sprite's - // width. - int x = 0; - int y = 0; - // These are the width and height values before they are fixed based on the - // sprite's width. - int f_w = 0; - int f_h = 0; - - int frame = 0; - int max_frames = 0; - int last_max_frames = 0; - - int speed = 100; - - bool m_flipped = false; - - int duration = 0; - - // Start playback of the movie (if animated). - void play(); - - // Freeze the movie at the current frame. - void freeze(); - - // Retreive a pixmap adjused for mirroring/aspect ratio shenanigans from a - // provided QImage - QPixmap get_pixmap(QImage image); - - // Set the movie's frame to provided pixmap - void set_frame(QPixmap f_pixmap); - // Center the QLabel in the viewport based on the dimensions of f_pixmap - void center_pixmap(QPixmap f_pixmap); - -private: - // Populates the frame and delay vectors. - void populate_vectors(); - - // used in populate_vectors - void load_next_frame(); - std::atomic_bool exit_loop { false }; //awful solution but i'm not fucking using QThread - QFuture frame_loader; - QMutex mutex; - QWaitCondition frameAdded; - - -signals: - void done(); - -protected slots: - virtual void preanim_done(); - void shfx_timer_done(); - virtual void movie_ticker(); -}; - -class BackgroundLayer : public AOLayer { - Q_OBJECT -public: - BackgroundLayer(QWidget *p_parent, AOApplication *p_ao_app); - void load_image(QString p_filename); -}; - -class CharLayer : public AOLayer { - Q_OBJECT -public: - CharLayer(QWidget *p_parent, AOApplication *p_ao_app); - QString current_emote = ""; // name of the emote we're using - bool is_preanim; // equivalent to the old play_once, if true we don't want - // to loop this - QString prefix = ""; // prefix, left blank if it's a preanim - - void load_image(QString p_filename, QString p_charname, int p_duration, bool p_is_preanim); - void play(); // overloaded so we can play effects - - // networked frame fx string - QStringList network_strings; - -private: - QString last_char; // name of the last character we used - QString last_emote; // name of the last animation we used - QString last_prefix; // prefix of the last animation we played - bool was_preanim = false; // whether is_preanim was true last time - - // Effects such as sfx, screenshakes and realization flashes are stored in - // here. QString entry format: "sfx^[sfx_name]", "shake", "flash". The program - // uses the QVector index as reference. - QVector> movie_effects; - - // used for effect loading - QString m_char = ""; - QString m_emote = ""; - - // overloaded for effects reasons - void start_playback(QString p_image); - - // Initialize the frame-specific effects from the char.ini - void load_effects(); - - // Initialize the frame-specific effects from the provided network_strings, - // this is only initialized if network_strings has size more than 0. - void load_network_effects(); - - // Play a frame-specific effect, if there's any defined for that specific - // frame. - void play_frame_effect(int p_frame); - -private slots: - void preanim_done() override; // overridden so we don't accidentally cull characters - void movie_ticker() override; // overridden so we can play effects - -signals: - void shake(); - void flash(); - void play_sfx(QString sfx); -}; - -class SplashLayer : public AOLayer { - Q_OBJECT -public: - SplashLayer(QWidget *p_parent, AOApplication *p_ao_app); - void load_image(QString p_filename, QString p_charname, QString p_miscname); -}; - -class EffectLayer : public AOLayer { - Q_OBJECT -public: - EffectLayer(QWidget *p_parent, AOApplication *p_ao_app); - void load_image(QString p_filename, bool p_looping); -}; - -class InterfaceLayer : public AOLayer { - Q_OBJECT -public: - InterfaceLayer(QWidget *p_parent, AOApplication *p_ao_app); - void load_image(QString p_filename, QString p_miscname); -}; - -class StickerLayer : public AOLayer { - Q_OBJECT -public: - StickerLayer(QWidget *p_parent, AOApplication *p_ao_app); - void load_image(QString p_charname); -}; - -#endif // AOLAYER_H diff --git a/include/aomusicplayer.h b/include/aomusicplayer.h deleted file mode 100644 index d0288443..00000000 --- a/include/aomusicplayer.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef AOMUSICPLAYER_H -#define AOMUSICPLAYER_H -#include "aoapplication.h" - -#include -#include -#include -#include -#include - -class AOMusicPlayer { -public: - AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app); - virtual ~AOMusicPlayer(); - void set_volume(int p_value, int channel = -1); - void set_looping(bool loop_song, int channel = 0); - void set_muted(bool toggle); - - const int m_channelmax = 4; - - QFutureWatcher music_watcher; - -public slots: - QString play(QString p_song, int channel = 0, bool loop = false, - int effect_flags = 0); - void stop(int channel = 0); - -private: - QWidget *m_parent; - AOApplication *ao_app; - - bool m_muted = false; - int m_volume[4] = {0, 0, 0, 0}; - - // Channel 0 = music - // Channel 1 = ambience - // Channel 2 = extra - // Channel 3 = extra - HSTREAM m_stream_list[4]; - HSYNC loop_sync[4]; - - /** - * @brief The starting sample of the AB-Loop. - */ - unsigned int loop_start[4] = {0, 0, 0, 0}; - - /** - * @brief The end sample of the AB-Loop. - */ - unsigned int loop_end[4] = {0, 0, 0, 0}; -}; - -#endif // AOMUSICPLAYER_H diff --git a/include/aopacket.h b/include/aopacket.h deleted file mode 100644 index d5baccb5..00000000 --- a/include/aopacket.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef AOPACKET_H -#define AOPACKET_H - -#include -#include -#include - -class AOPacket { -public: - AOPacket(QString header) : m_header(header){} - AOPacket(QString header, QStringList p_contents) : m_header(header), m_contents(p_contents){} - - QString get_header() { return m_header; } - QStringList &get_contents() { return m_contents; } - QString to_string(bool encoded = false); - - void net_encode(); - void net_decode(); - - static void escape(QStringList &contents); - static void unescape(QStringList &contents); -private: - - QString m_header; - QStringList m_contents; -}; - -#endif // AOPACKET_H diff --git a/include/aosfxplayer.h b/include/aosfxplayer.h deleted file mode 100644 index 077a7efd..00000000 --- a/include/aosfxplayer.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef AOSFXPLAYER_H -#define AOSFXPLAYER_H - -#include "bass.h" -#include "bassopus.h" - -#include "aoapplication.h" - -#include -#include -#include - -class AOSfxPlayer { -public: - AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app); - - void clear(); - void loop_clear(); - void play(QString p_sfx, QString p_char = "", QString shout = ""); - void stop(int channel = -1); - void set_volume(qreal p_volume); - void set_looping(bool toggle, int channel = -1); - void set_muted(bool toggle); - int m_channel = 0; - int get_volume() { return m_volume * 100; }; -private: - QWidget *m_parent; - AOApplication *ao_app; - qreal m_volume = 0; - - bool m_looping = true; - bool m_muted = false; - void set_volume_internal(qreal p_volume); - - const int m_channelmax = 5; - - HSTREAM m_stream_list[5]; -}; - -#endif // AOSFXPLAYER_H diff --git a/include/aotextarea.h b/include/aotextarea.h deleted file mode 100644 index 405f4eb4..00000000 --- a/include/aotextarea.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef AOTEXTAREA_H -#define AOTEXTAREA_H - -#include -#include -#include -#include -#include - -class AOTextArea : public QTextBrowser { -public: - AOTextArea(QWidget *p_parent = nullptr, int p_log_length = 5000); - - void append_linked(QString p_message); - void append_chatmessage(QString p_name, QString p_message, - QString p_name_colour, QString p_color = QString()); - void append_error(QString p_message); - -private: - const QRegularExpression url_parser_regex = QRegularExpression("\\b(https?://\\S+\\.\\S+)\\b"); - - void auto_scroll(QTextCursor old_cursor, int scrollbar_value, - bool is_scrolled_down); -}; - -#endif // AOTEXTAREA_H diff --git a/include/aotextboxwidgets.h b/include/aotextboxwidgets.h deleted file mode 100644 index 39bf4062..00000000 --- a/include/aotextboxwidgets.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef AOTEXTBOXWIDGETS_H -#define AOTEXTBOXWIDGETS_H - -#include -#include -#include -#include -#include -#include -#include - -class AOChatboxLabel : public QLabel { - Q_OBJECT - -public: - AOChatboxLabel(QWidget *parent); - void paintEvent(QPaintEvent *event); - - void setOutlineColor(QColor color) { outline_color = color; }; - void setOutlineWidth(int width) { outline_width = width; }; - void setTextColor(QColor color) { text_color = color; }; - void setIsOutlined(bool outlined) { is_outlined = outlined; }; - -protected: -private: - QColor outline_color; - QColor text_color; - int outline_width = 1; - bool is_outlined = false; -}; - -#endif // AOTEXTBOXWIDGETS_H diff --git a/include/aoutils.h b/include/aoutils.h deleted file mode 100644 index a4fd7bb8..00000000 --- a/include/aoutils.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef AOUTILS_H -#define AOUTILS_H - -#include - -namespace AOUtils -{ -/** - * @brief Migrates the effects from the old format to version 2. - * @param QSettings object reference of the old effects.ini - */ -void migrateEffects(QSettings &p_fileName); -}; - -#endif // AOUTILS_H diff --git a/include/bass.h b/include/bass.h deleted file mode 100644 index ec2c7a29..00000000 --- a/include/bass.h +++ /dev/null @@ -1,1227 +0,0 @@ -/* - BASS 2.4 C/C++ header file - Copyright (c) 1999-2019 Un4seen Developments Ltd. - - See the BASS.CHM file for more detailed documentation -*/ - -#ifndef BASS_H -#define BASS_H - -#ifdef _WIN32 -#include -typedef unsigned __int64 QWORD; -#else -#include -#define WINAPI -#define CALLBACK -typedef uint8_t BYTE; -typedef uint16_t WORD; -typedef uint32_t DWORD; -typedef uint64_t QWORD; -#ifndef __OBJC__ -typedef int BOOL; -#endif -#ifndef TRUE -#define TRUE 1 -#define FALSE 0 -#endif -#define LOBYTE(a) (BYTE)(a) -#define HIBYTE(a) (BYTE)((a) >> 8) -#define LOWORD(a) (WORD)(a) -#define HIWORD(a) (WORD)((a) >> 16) -#define MAKEWORD(a, b) (WORD)(((a)&0xff) | ((b) << 8)) -#define MAKELONG(a, b) (DWORD)(((a)&0xffff) | ((b) << 16)) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define BASSVERSION 0x204 // API version -#define BASSVERSIONTEXT "2.4" - -#ifndef BASSDEF -#define BASSDEF(f) WINAPI f -#else -#define NOBASSOVERLOADS -#endif - -typedef DWORD HMUSIC; // MOD music handle -typedef DWORD HSAMPLE; // sample handle -typedef DWORD HCHANNEL; // playing sample's channel handle -typedef DWORD HSTREAM; // sample stream handle -typedef DWORD HRECORD; // recording handle -typedef DWORD HSYNC; // synchronizer handle -typedef DWORD HDSP; // DSP handle -typedef DWORD HFX; // DX8 effect handle -typedef DWORD HPLUGIN; // Plugin handle - -// Error codes returned by BASS_ErrorGetCode -#define BASS_OK 0 // all is OK -#define BASS_ERROR_MEM 1 // memory error -#define BASS_ERROR_FILEOPEN 2 // can't open the file -#define BASS_ERROR_DRIVER 3 // can't find a free/valid driver -#define BASS_ERROR_BUFLOST 4 // the sample buffer was lost -#define BASS_ERROR_HANDLE 5 // invalid handle -#define BASS_ERROR_FORMAT 6 // unsupported sample format -#define BASS_ERROR_POSITION 7 // invalid position -#define BASS_ERROR_INIT 8 // BASS_Init has not been successfully called -#define BASS_ERROR_START 9 // BASS_Start has not been successfully called -#define BASS_ERROR_SSL 10 // SSL/HTTPS support isn't available -#define BASS_ERROR_ALREADY 14 // already initialized/paused/whatever -#define BASS_ERROR_NOCHAN 18 // can't get a free channel -#define BASS_ERROR_ILLTYPE 19 // an illegal type was specified -#define BASS_ERROR_ILLPARAM 20 // an illegal parameter was specified -#define BASS_ERROR_NO3D 21 // no 3D support -#define BASS_ERROR_NOEAX 22 // no EAX support -#define BASS_ERROR_DEVICE 23 // illegal device number -#define BASS_ERROR_NOPLAY 24 // not playing -#define BASS_ERROR_FREQ 25 // illegal sample rate -#define BASS_ERROR_NOTFILE 27 // the stream is not a file stream -#define BASS_ERROR_NOHW 29 // no hardware voices available -#define BASS_ERROR_EMPTY 31 // the MOD music has no sequence data -#define BASS_ERROR_NONET 32 // no internet connection could be opened -#define BASS_ERROR_CREATE 33 // couldn't create the file -#define BASS_ERROR_NOFX 34 // effects are not available -#define BASS_ERROR_NOTAVAIL 37 // requested data/action is not available -#define BASS_ERROR_DECODE 38 // the channel is/isn't a "decoding channel" -#define BASS_ERROR_DX 39 // a sufficient DirectX version is not installed -#define BASS_ERROR_TIMEOUT 40 // connection timedout -#define BASS_ERROR_FILEFORM 41 // unsupported file format -#define BASS_ERROR_SPEAKER 42 // unavailable speaker -#define BASS_ERROR_VERSION 43 // invalid BASS version (used by add-ons) -#define BASS_ERROR_CODEC 44 // codec is not available/supported -#define BASS_ERROR_ENDED 45 // the channel/file has ended -#define BASS_ERROR_BUSY 46 // the device is busy -#define BASS_ERROR_UNKNOWN -1 // some other mystery problem - -// BASS_SetConfig options -#define BASS_CONFIG_BUFFER 0 -#define BASS_CONFIG_UPDATEPERIOD 1 -#define BASS_CONFIG_GVOL_SAMPLE 4 -#define BASS_CONFIG_GVOL_STREAM 5 -#define BASS_CONFIG_GVOL_MUSIC 6 -#define BASS_CONFIG_CURVE_VOL 7 -#define BASS_CONFIG_CURVE_PAN 8 -#define BASS_CONFIG_FLOATDSP 9 -#define BASS_CONFIG_3DALGORITHM 10 -#define BASS_CONFIG_NET_TIMEOUT 11 -#define BASS_CONFIG_NET_BUFFER 12 -#define BASS_CONFIG_PAUSE_NOPLAY 13 -#define BASS_CONFIG_NET_PREBUF 15 -#define BASS_CONFIG_NET_PASSIVE 18 -#define BASS_CONFIG_REC_BUFFER 19 -#define BASS_CONFIG_NET_PLAYLIST 21 -#define BASS_CONFIG_MUSIC_VIRTUAL 22 -#define BASS_CONFIG_VERIFY 23 -#define BASS_CONFIG_UPDATETHREADS 24 -#define BASS_CONFIG_DEV_BUFFER 27 -#define BASS_CONFIG_REC_LOOPBACK 28 -#define BASS_CONFIG_VISTA_TRUEPOS 30 -#define BASS_CONFIG_IOS_MIXAUDIO 34 -#define BASS_CONFIG_DEV_DEFAULT 36 -#define BASS_CONFIG_NET_READTIMEOUT 37 -#define BASS_CONFIG_VISTA_SPEAKERS 38 -#define BASS_CONFIG_IOS_SPEAKER 39 -#define BASS_CONFIG_MF_DISABLE 40 -#define BASS_CONFIG_HANDLES 41 -#define BASS_CONFIG_UNICODE 42 -#define BASS_CONFIG_SRC 43 -#define BASS_CONFIG_SRC_SAMPLE 44 -#define BASS_CONFIG_ASYNCFILE_BUFFER 45 -#define BASS_CONFIG_OGG_PRESCAN 47 -#define BASS_CONFIG_MF_VIDEO 48 -#define BASS_CONFIG_AIRPLAY 49 -#define BASS_CONFIG_DEV_NONSTOP 50 -#define BASS_CONFIG_IOS_NOCATEGORY 51 -#define BASS_CONFIG_VERIFY_NET 52 -#define BASS_CONFIG_DEV_PERIOD 53 -#define BASS_CONFIG_FLOAT 54 -#define BASS_CONFIG_NET_SEEK 56 -#define BASS_CONFIG_AM_DISABLE 58 -#define BASS_CONFIG_NET_PLAYLIST_DEPTH 59 -#define BASS_CONFIG_NET_PREBUF_WAIT 60 -#define BASS_CONFIG_WASAPI_PERSIST 65 -#define BASS_CONFIG_REC_WASAPI 66 - -// BASS_SetConfigPtr options -#define BASS_CONFIG_NET_AGENT 16 -#define BASS_CONFIG_NET_PROXY 17 -#define BASS_CONFIG_IOS_NOTIFY 46 -#define BASS_CONFIG_LIBSSL 64 - -// BASS_Init flags -#define BASS_DEVICE_8BITS 1 // 8 bit -#define BASS_DEVICE_MONO 2 // mono -#define BASS_DEVICE_3D 4 // enable 3D functionality -#define BASS_DEVICE_16BITS 8 // limit output to 16 bit -#define BASS_DEVICE_LATENCY 0x100 // calculate device latency (BASS_INFO struct) -#define BASS_DEVICE_CPSPEAKERS \ - 0x400 // detect speakers via Windows control panel -#define BASS_DEVICE_SPEAKERS 0x800 // force enabling of speaker assignment -#define BASS_DEVICE_NOSPEAKER 0x1000 // ignore speaker arrangement -#define BASS_DEVICE_DMIX 0x2000 // use ALSA "dmix" plugin -#define BASS_DEVICE_FREQ 0x4000 // set device sample rate -#define BASS_DEVICE_STEREO 0x8000 // limit output to stereo -#define BASS_DEVICE_HOG 0x10000 // hog/exclusive mode -#define BASS_DEVICE_AUDIOTRACK 0x20000 // use AudioTrack output -#define BASS_DEVICE_DSOUND 0x40000 // use DirectSound output - -// DirectSound interfaces (for use with BASS_GetDSoundObject) -#define BASS_OBJECT_DS 1 // IDirectSound -#define BASS_OBJECT_DS3DL 2 // IDirectSound3DListener - -// Device info structure -typedef struct { -#if defined(_WIN32_WCE) || \ - (WINAPI_FAMILY && WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP) - const wchar_t *name; // description - const wchar_t *driver; // driver -#else - const char *name; // description - const char *driver; // driver -#endif - DWORD flags; -} BASS_DEVICEINFO; - -// BASS_DEVICEINFO flags -#define BASS_DEVICE_ENABLED 1 -#define BASS_DEVICE_DEFAULT 2 -#define BASS_DEVICE_INIT 4 -#define BASS_DEVICE_LOOPBACK 8 - -#define BASS_DEVICE_TYPE_MASK 0xff000000 -#define BASS_DEVICE_TYPE_NETWORK 0x01000000 -#define BASS_DEVICE_TYPE_SPEAKERS 0x02000000 -#define BASS_DEVICE_TYPE_LINE 0x03000000 -#define BASS_DEVICE_TYPE_HEADPHONES 0x04000000 -#define BASS_DEVICE_TYPE_MICROPHONE 0x05000000 -#define BASS_DEVICE_TYPE_HEADSET 0x06000000 -#define BASS_DEVICE_TYPE_HANDSET 0x07000000 -#define BASS_DEVICE_TYPE_DIGITAL 0x08000000 -#define BASS_DEVICE_TYPE_SPDIF 0x09000000 -#define BASS_DEVICE_TYPE_HDMI 0x0a000000 -#define BASS_DEVICE_TYPE_DISPLAYPORT 0x40000000 - -// BASS_GetDeviceInfo flags -#define BASS_DEVICES_AIRPLAY 0x1000000 - -typedef struct { - DWORD flags; // device capabilities (DSCAPS_xxx flags) - DWORD hwsize; // size of total device hardware memory - DWORD hwfree; // size of free device hardware memory - DWORD freesam; // number of free sample slots in the hardware - DWORD free3d; // number of free 3D sample slots in the hardware - DWORD minrate; // min sample rate supported by the hardware - DWORD maxrate; // max sample rate supported by the hardware - BOOL - eax; // device supports EAX? (always FALSE if BASS_DEVICE_3D was not used) - DWORD minbuf; // recommended minimum buffer length in ms (requires - // BASS_DEVICE_LATENCY) - DWORD dsver; // DirectSound version - DWORD latency; // delay (in ms) before start of playback (requires - // BASS_DEVICE_LATENCY) - DWORD initflags; // BASS_Init "flags" parameter - DWORD speakers; // number of speakers available - DWORD freq; // current output rate -} BASS_INFO; - -// BASS_INFO flags (from DSOUND.H) -#define DSCAPS_CONTINUOUSRATE \ - 0x00000010 // supports all sample rates between min/maxrate -#define DSCAPS_EMULDRIVER \ - 0x00000020 // device does NOT have hardware DirectSound support -#define DSCAPS_CERTIFIED \ - 0x00000040 // device driver has been certified by Microsoft -#define DSCAPS_SECONDARYMONO 0x00000100 // mono -#define DSCAPS_SECONDARYSTEREO 0x00000200 // stereo -#define DSCAPS_SECONDARY8BIT 0x00000400 // 8 bit -#define DSCAPS_SECONDARY16BIT 0x00000800 // 16 bit - -// Recording device info structure -typedef struct { - DWORD flags; // device capabilities (DSCCAPS_xxx flags) - DWORD formats; // supported standard formats (WAVE_FORMAT_xxx flags) - DWORD inputs; // number of inputs - BOOL singlein; // TRUE = only 1 input can be set at a time - DWORD freq; // current input rate -} BASS_RECORDINFO; - -// BASS_RECORDINFO flags (from DSOUND.H) -#define DSCCAPS_EMULDRIVER \ - DSCAPS_EMULDRIVER // device does NOT have hardware DirectSound recording - // support -#define DSCCAPS_CERTIFIED \ - DSCAPS_CERTIFIED // device driver has been certified by Microsoft - -// defines for formats field of BASS_RECORDINFO (from MMSYSTEM.H) -#ifndef WAVE_FORMAT_1M08 -#define WAVE_FORMAT_1M08 0x00000001 /* 11.025 kHz, Mono, 8-bit */ -#define WAVE_FORMAT_1S08 0x00000002 /* 11.025 kHz, Stereo, 8-bit */ -#define WAVE_FORMAT_1M16 0x00000004 /* 11.025 kHz, Mono, 16-bit */ -#define WAVE_FORMAT_1S16 0x00000008 /* 11.025 kHz, Stereo, 16-bit */ -#define WAVE_FORMAT_2M08 0x00000010 /* 22.05 kHz, Mono, 8-bit */ -#define WAVE_FORMAT_2S08 0x00000020 /* 22.05 kHz, Stereo, 8-bit */ -#define WAVE_FORMAT_2M16 0x00000040 /* 22.05 kHz, Mono, 16-bit */ -#define WAVE_FORMAT_2S16 0x00000080 /* 22.05 kHz, Stereo, 16-bit */ -#define WAVE_FORMAT_4M08 0x00000100 /* 44.1 kHz, Mono, 8-bit */ -#define WAVE_FORMAT_4S08 0x00000200 /* 44.1 kHz, Stereo, 8-bit */ -#define WAVE_FORMAT_4M16 0x00000400 /* 44.1 kHz, Mono, 16-bit */ -#define WAVE_FORMAT_4S16 0x00000800 /* 44.1 kHz, Stereo, 16-bit */ -#endif - -// Sample info structure -typedef struct { - DWORD freq; // default playback rate - float volume; // default volume (0-1) - float pan; // default pan (-1=left, 0=middle, 1=right) - DWORD flags; // BASS_SAMPLE_xxx flags - DWORD length; // length (in bytes) - DWORD max; // maximum simultaneous playbacks - DWORD origres; // original resolution - DWORD chans; // number of channels - DWORD mingap; // minimum gap (ms) between creating channels - DWORD mode3d; // BASS_3DMODE_xxx mode - float mindist; // minimum distance - float maxdist; // maximum distance - DWORD iangle; // angle of inside projection cone - DWORD oangle; // angle of outside projection cone - float outvol; // delta-volume outside the projection cone - DWORD vam; // voice allocation/management flags (BASS_VAM_xxx) - DWORD priority; // priority (0=lowest, 0xffffffff=highest) -} BASS_SAMPLE; - -#define BASS_SAMPLE_8BITS 1 // 8 bit -#define BASS_SAMPLE_FLOAT 256 // 32 bit floating-point -#define BASS_SAMPLE_MONO 2 // mono -#define BASS_SAMPLE_LOOP 4 // looped -#define BASS_SAMPLE_3D 8 // 3D functionality -#define BASS_SAMPLE_SOFTWARE 16 // not using hardware mixing -#define BASS_SAMPLE_MUTEMAX 32 // mute at max distance (3D only) -#define BASS_SAMPLE_VAM 64 // DX7 voice allocation & management -#define BASS_SAMPLE_FX 128 // old implementation of DX8 effects -#define BASS_SAMPLE_OVER_VOL 0x10000 // override lowest volume -#define BASS_SAMPLE_OVER_POS 0x20000 // override longest playing -#define BASS_SAMPLE_OVER_DIST \ - 0x30000 // override furthest from listener (3D only) - -#define BASS_STREAM_PRESCAN \ - 0x20000 // enable pin-point seeking/length (MP3/MP2/MP1) -#define BASS_STREAM_AUTOFREE \ - 0x40000 // automatically free the stream when it stop/ends -#define BASS_STREAM_RESTRATE \ - 0x80000 // restrict the download rate of internet file streams -#define BASS_STREAM_BLOCK \ - 0x100000 // download/play internet file stream in small blocks -#define BASS_STREAM_DECODE \ - 0x200000 // don't play the stream, only decode (BASS_ChannelGetData) -#define BASS_STREAM_STATUS \ - 0x800000 // give server status info (HTTP/ICY tags) in DOWNLOADPROC - -#define BASS_MP3_IGNOREDELAY \ - 0x200 // ignore LAME/Xing/VBRI/iTunes delay & padding info -#define BASS_MP3_SETPOS BASS_STREAM_PRESCAN - -#define BASS_MUSIC_FLOAT BASS_SAMPLE_FLOAT -#define BASS_MUSIC_MONO BASS_SAMPLE_MONO -#define BASS_MUSIC_LOOP BASS_SAMPLE_LOOP -#define BASS_MUSIC_3D BASS_SAMPLE_3D -#define BASS_MUSIC_FX BASS_SAMPLE_FX -#define BASS_MUSIC_AUTOFREE BASS_STREAM_AUTOFREE -#define BASS_MUSIC_DECODE BASS_STREAM_DECODE -#define BASS_MUSIC_PRESCAN BASS_STREAM_PRESCAN // calculate playback length -#define BASS_MUSIC_CALCLEN BASS_MUSIC_PRESCAN -#define BASS_MUSIC_RAMP 0x200 // normal ramping -#define BASS_MUSIC_RAMPS 0x400 // sensitive ramping -#define BASS_MUSIC_SURROUND 0x800 // surround sound -#define BASS_MUSIC_SURROUND2 0x1000 // surround sound (mode 2) -#define BASS_MUSIC_FT2PAN 0x2000 // apply FastTracker 2 panning to XM files -#define BASS_MUSIC_FT2MOD 0x2000 // play .MOD as FastTracker 2 does -#define BASS_MUSIC_PT1MOD 0x4000 // play .MOD as ProTracker 1 does -#define BASS_MUSIC_NONINTER 0x10000 // non-interpolated sample mixing -#define BASS_MUSIC_SINCINTER 0x800000 // sinc interpolated sample mixing -#define BASS_MUSIC_POSRESET 0x8000 // stop all notes when moving position -#define BASS_MUSIC_POSRESETEX \ - 0x400000 // stop all notes and reset bmp/etc when moving position -#define BASS_MUSIC_STOPBACK 0x80000 // stop the music on a backwards jump effect -#define BASS_MUSIC_NOSAMPLE 0x100000 // don't load the samples - -// Speaker assignment flags -#define BASS_SPEAKER_FRONT 0x1000000 // front speakers -#define BASS_SPEAKER_REAR 0x2000000 // rear/side speakers -#define BASS_SPEAKER_CENLFE 0x3000000 // center & LFE speakers (5.1) -#define BASS_SPEAKER_REAR2 0x4000000 // rear center speakers (7.1) -#define BASS_SPEAKER_N(n) ((n) << 24) // n'th pair of speakers (max 15) -#define BASS_SPEAKER_LEFT 0x10000000 // modifier: left -#define BASS_SPEAKER_RIGHT 0x20000000 // modifier: right -#define BASS_SPEAKER_FRONTLEFT BASS_SPEAKER_FRONT | BASS_SPEAKER_LEFT -#define BASS_SPEAKER_FRONTRIGHT BASS_SPEAKER_FRONT | BASS_SPEAKER_RIGHT -#define BASS_SPEAKER_REARLEFT BASS_SPEAKER_REAR | BASS_SPEAKER_LEFT -#define BASS_SPEAKER_REARRIGHT BASS_SPEAKER_REAR | BASS_SPEAKER_RIGHT -#define BASS_SPEAKER_CENTER BASS_SPEAKER_CENLFE | BASS_SPEAKER_LEFT -#define BASS_SPEAKER_LFE BASS_SPEAKER_CENLFE | BASS_SPEAKER_RIGHT -#define BASS_SPEAKER_REAR2LEFT BASS_SPEAKER_REAR2 | BASS_SPEAKER_LEFT -#define BASS_SPEAKER_REAR2RIGHT BASS_SPEAKER_REAR2 | BASS_SPEAKER_RIGHT - -#define BASS_ASYNCFILE 0x40000000 -#define BASS_UNICODE 0x80000000 - -#define BASS_RECORD_PAUSE 0x8000 // start recording paused -#define BASS_RECORD_ECHOCANCEL 0x2000 -#define BASS_RECORD_AGC 0x4000 - -// DX7 voice allocation & management flags -#define BASS_VAM_HARDWARE 1 -#define BASS_VAM_SOFTWARE 2 -#define BASS_VAM_TERM_TIME 4 -#define BASS_VAM_TERM_DIST 8 -#define BASS_VAM_TERM_PRIO 16 - -// Channel info structure -typedef struct { - DWORD freq; // default playback rate - DWORD chans; // channels - DWORD flags; // BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags - DWORD ctype; // type of channel - DWORD origres; // original resolution - HPLUGIN plugin; // plugin - HSAMPLE sample; // sample - const char *filename; // filename -} BASS_CHANNELINFO; - -#define BASS_ORIGRES_FLOAT 0x10000 - -// BASS_CHANNELINFO types -#define BASS_CTYPE_SAMPLE 1 -#define BASS_CTYPE_RECORD 2 -#define BASS_CTYPE_STREAM 0x10000 -#define BASS_CTYPE_STREAM_OGG 0x10002 -#define BASS_CTYPE_STREAM_MP1 0x10003 -#define BASS_CTYPE_STREAM_MP2 0x10004 -#define BASS_CTYPE_STREAM_MP3 0x10005 -#define BASS_CTYPE_STREAM_AIFF 0x10006 -#define BASS_CTYPE_STREAM_CA 0x10007 -#define BASS_CTYPE_STREAM_MF 0x10008 -#define BASS_CTYPE_STREAM_AM 0x10009 -#define BASS_CTYPE_STREAM_DUMMY 0x18000 -#define BASS_CTYPE_STREAM_DEVICE 0x18001 -#define BASS_CTYPE_STREAM_WAV 0x40000 // WAVE flag, LOWORD=codec -#define BASS_CTYPE_STREAM_WAV_PCM 0x50001 -#define BASS_CTYPE_STREAM_WAV_FLOAT 0x50003 -#define BASS_CTYPE_MUSIC_MOD 0x20000 -#define BASS_CTYPE_MUSIC_MTM 0x20001 -#define BASS_CTYPE_MUSIC_S3M 0x20002 -#define BASS_CTYPE_MUSIC_XM 0x20003 -#define BASS_CTYPE_MUSIC_IT 0x20004 -#define BASS_CTYPE_MUSIC_MO3 0x00100 // MO3 flag - -typedef struct { - DWORD ctype; // channel type -#if defined(_WIN32_WCE) || \ - (WINAPI_FAMILY && WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP) - const wchar_t *name; // format description - const wchar_t *exts; // file extension filter (*.ext1;*.ext2;etc...) -#else - const char *name; // format description - const char *exts; // file extension filter (*.ext1;*.ext2;etc...) -#endif -} BASS_PLUGINFORM; - -typedef struct { - DWORD version; // version (same form as BASS_GetVersion) - DWORD formatc; // number of formats - const BASS_PLUGINFORM *formats; // the array of formats -} BASS_PLUGININFO; - -// 3D vector (for 3D positions/velocities/orientations) -typedef struct BASS_3DVECTOR { -#ifdef __cplusplus - BASS_3DVECTOR(){}; - BASS_3DVECTOR(float _x, float _y, float _z) : x(_x), y(_y), z(_z){}; -#endif - float x; // +=right, -=left - float y; // +=up, -=down - float z; // +=front, -=behind -} BASS_3DVECTOR; - -// 3D channel modes -#define BASS_3DMODE_NORMAL 0 // normal 3D processing -#define BASS_3DMODE_RELATIVE 1 // position is relative to the listener -#define BASS_3DMODE_OFF 2 // no 3D processing - -// software 3D mixing algorithms (used with BASS_CONFIG_3DALGORITHM) -#define BASS_3DALG_DEFAULT 0 -#define BASS_3DALG_OFF 1 -#define BASS_3DALG_FULL 2 -#define BASS_3DALG_LIGHT 3 - -// EAX environments, use with BASS_SetEAXParameters -enum { - EAX_ENVIRONMENT_GENERIC, - EAX_ENVIRONMENT_PADDEDCELL, - EAX_ENVIRONMENT_ROOM, - EAX_ENVIRONMENT_BATHROOM, - EAX_ENVIRONMENT_LIVINGROOM, - EAX_ENVIRONMENT_STONEROOM, - EAX_ENVIRONMENT_AUDITORIUM, - EAX_ENVIRONMENT_CONCERTHALL, - EAX_ENVIRONMENT_CAVE, - EAX_ENVIRONMENT_ARENA, - EAX_ENVIRONMENT_HANGAR, - EAX_ENVIRONMENT_CARPETEDHALLWAY, - EAX_ENVIRONMENT_HALLWAY, - EAX_ENVIRONMENT_STONECORRIDOR, - EAX_ENVIRONMENT_ALLEY, - EAX_ENVIRONMENT_FOREST, - EAX_ENVIRONMENT_CITY, - EAX_ENVIRONMENT_MOUNTAINS, - EAX_ENVIRONMENT_QUARRY, - EAX_ENVIRONMENT_PLAIN, - EAX_ENVIRONMENT_PARKINGLOT, - EAX_ENVIRONMENT_SEWERPIPE, - EAX_ENVIRONMENT_UNDERWATER, - EAX_ENVIRONMENT_DRUGGED, - EAX_ENVIRONMENT_DIZZY, - EAX_ENVIRONMENT_PSYCHOTIC, - - EAX_ENVIRONMENT_COUNT // total number of environments -}; - -// EAX presets, usage: BASS_SetEAXParameters(EAX_PRESET_xxx) -#define EAX_PRESET_GENERIC EAX_ENVIRONMENT_GENERIC, 0.5F, 1.493F, 0.5F -#define EAX_PRESET_PADDEDCELL EAX_ENVIRONMENT_PADDEDCELL, 0.25F, 0.1F, 0.0F -#define EAX_PRESET_ROOM EAX_ENVIRONMENT_ROOM, 0.417F, 0.4F, 0.666F -#define EAX_PRESET_BATHROOM EAX_ENVIRONMENT_BATHROOM, 0.653F, 1.499F, 0.166F -#define EAX_PRESET_LIVINGROOM EAX_ENVIRONMENT_LIVINGROOM, 0.208F, 0.478F, 0.0F -#define EAX_PRESET_STONEROOM EAX_ENVIRONMENT_STONEROOM, 0.5F, 2.309F, 0.888F -#define EAX_PRESET_AUDITORIUM EAX_ENVIRONMENT_AUDITORIUM, 0.403F, 4.279F, 0.5F -#define EAX_PRESET_CONCERTHALL EAX_ENVIRONMENT_CONCERTHALL, 0.5F, 3.961F, 0.5F -#define EAX_PRESET_CAVE EAX_ENVIRONMENT_CAVE, 0.5F, 2.886F, 1.304F -#define EAX_PRESET_ARENA EAX_ENVIRONMENT_ARENA, 0.361F, 7.284F, 0.332F -#define EAX_PRESET_HANGAR EAX_ENVIRONMENT_HANGAR, 0.5F, 10.0F, 0.3F -#define EAX_PRESET_CARPETEDHALLWAY \ - EAX_ENVIRONMENT_CARPETEDHALLWAY, 0.153F, 0.259F, 2.0F -#define EAX_PRESET_HALLWAY EAX_ENVIRONMENT_HALLWAY, 0.361F, 1.493F, 0.0F -#define EAX_PRESET_STONECORRIDOR \ - EAX_ENVIRONMENT_STONECORRIDOR, 0.444F, 2.697F, 0.638F -#define EAX_PRESET_ALLEY EAX_ENVIRONMENT_ALLEY, 0.25F, 1.752F, 0.776F -#define EAX_PRESET_FOREST EAX_ENVIRONMENT_FOREST, 0.111F, 3.145F, 0.472F -#define EAX_PRESET_CITY EAX_ENVIRONMENT_CITY, 0.111F, 2.767F, 0.224F -#define EAX_PRESET_MOUNTAINS EAX_ENVIRONMENT_MOUNTAINS, 0.194F, 7.841F, 0.472F -#define EAX_PRESET_QUARRY EAX_ENVIRONMENT_QUARRY, 1.0F, 1.499F, 0.5F -#define EAX_PRESET_PLAIN EAX_ENVIRONMENT_PLAIN, 0.097F, 2.767F, 0.224F -#define EAX_PRESET_PARKINGLOT EAX_ENVIRONMENT_PARKINGLOT, 0.208F, 1.652F, 1.5F -#define EAX_PRESET_SEWERPIPE EAX_ENVIRONMENT_SEWERPIPE, 0.652F, 2.886F, 0.25F -#define EAX_PRESET_UNDERWATER EAX_ENVIRONMENT_UNDERWATER, 1.0F, 1.499F, 0.0F -#define EAX_PRESET_DRUGGED EAX_ENVIRONMENT_DRUGGED, 0.875F, 8.392F, 1.388F -#define EAX_PRESET_DIZZY EAX_ENVIRONMENT_DIZZY, 0.139F, 17.234F, 0.666F -#define EAX_PRESET_PSYCHOTIC EAX_ENVIRONMENT_PSYCHOTIC, 0.486F, 7.563F, 0.806F - -typedef DWORD(CALLBACK STREAMPROC)(HSTREAM handle, void *buffer, DWORD length, - void *user); -/* User stream callback function. NOTE: A stream function should obviously be as -quick as possible, other streams (and MOD musics) can't be mixed until it's -finished. handle : The stream that needs writing buffer : Buffer to write the -samples in length : Number of bytes to write user : The 'user' parameter value -given when calling BASS_StreamCreate RETURN : Number of bytes written. Set the -BASS_STREAMPROC_END flag to end the stream. */ - -#define BASS_STREAMPROC_END 0x80000000 // end of user stream flag - -// special STREAMPROCs -#define STREAMPROC_DUMMY (STREAMPROC *)0 // "dummy" stream -#define STREAMPROC_PUSH (STREAMPROC *)-1 // push stream -#define STREAMPROC_DEVICE (STREAMPROC *)-2 // device mix stream -#define STREAMPROC_DEVICE_3D (STREAMPROC *)-3 // device 3D mix stream - -// BASS_StreamCreateFileUser file systems -#define STREAMFILE_NOBUFFER 0 -#define STREAMFILE_BUFFER 1 -#define STREAMFILE_BUFFERPUSH 2 - -// User file stream callback functions -typedef void(CALLBACK FILECLOSEPROC)(void *user); -typedef QWORD(CALLBACK FILELENPROC)(void *user); -typedef DWORD(CALLBACK FILEREADPROC)(void *buffer, DWORD length, void *user); -typedef BOOL(CALLBACK FILESEEKPROC)(QWORD offset, void *user); - -typedef struct { - FILECLOSEPROC *close; - FILELENPROC *length; - FILEREADPROC *read; - FILESEEKPROC *seek; -} BASS_FILEPROCS; - -// BASS_StreamPutFileData options -#define BASS_FILEDATA_END 0 // end & close the file - -// BASS_StreamGetFilePosition modes -#define BASS_FILEPOS_CURRENT 0 -#define BASS_FILEPOS_DECODE BASS_FILEPOS_CURRENT -#define BASS_FILEPOS_DOWNLOAD 1 -#define BASS_FILEPOS_END 2 -#define BASS_FILEPOS_START 3 -#define BASS_FILEPOS_CONNECTED 4 -#define BASS_FILEPOS_BUFFER 5 -#define BASS_FILEPOS_SOCKET 6 -#define BASS_FILEPOS_ASYNCBUF 7 -#define BASS_FILEPOS_SIZE 8 -#define BASS_FILEPOS_BUFFERING 9 - -typedef void(CALLBACK DOWNLOADPROC)(const void *buffer, DWORD length, - void *user); -/* Internet stream download callback function. -buffer : Buffer containing the downloaded data... NULL=end of download -length : Number of bytes in the buffer -user : The 'user' parameter value given when calling BASS_StreamCreateURL */ - -// BASS_ChannelSetSync types -#define BASS_SYNC_POS 0 -#define BASS_SYNC_END 2 -#define BASS_SYNC_META 4 -#define BASS_SYNC_SLIDE 5 -#define BASS_SYNC_STALL 6 -#define BASS_SYNC_DOWNLOAD 7 -#define BASS_SYNC_FREE 8 -#define BASS_SYNC_SETPOS 11 -#define BASS_SYNC_MUSICPOS 10 -#define BASS_SYNC_MUSICINST 1 -#define BASS_SYNC_MUSICFX 3 -#define BASS_SYNC_OGG_CHANGE 12 -#define BASS_SYNC_DEV_FAIL 14 -#define BASS_SYNC_DEV_FORMAT 15 -#define BASS_SYNC_MIXTIME 0x40000000 // flag: sync at mixtime, else at playtime -#define BASS_SYNC_ONETIME 0x80000000 // flag: sync only once, else continuously - -typedef void(CALLBACK SYNCPROC)(HSYNC handle, DWORD channel, DWORD data, - void *user); -/* Sync callback function. NOTE: a sync callback function should be very -quick as other syncs can't be processed until it has finished. If the sync -is a "mixtime" sync, then other streams and MOD musics can't be mixed until -it's finished either. -handle : The sync that has occured -channel: Channel that the sync occured in -data : Additional data associated with the sync's occurance -user : The 'user' parameter given when calling BASS_ChannelSetSync */ - -typedef void(CALLBACK DSPPROC)(HDSP handle, DWORD channel, void *buffer, - DWORD length, void *user); -/* DSP callback function. NOTE: A DSP function should obviously be as quick as -possible... other DSP functions, streams and MOD musics can not be processed -until it's finished. -handle : The DSP handle -channel: Channel that the DSP is being applied to -buffer : Buffer to apply the DSP to -length : Number of bytes in the buffer -user : The 'user' parameter given when calling BASS_ChannelSetDSP */ - -typedef BOOL(CALLBACK RECORDPROC)(HRECORD handle, const void *buffer, - DWORD length, void *user); -/* Recording callback function. -handle : The recording handle -buffer : Buffer containing the recorded sample data -length : Number of bytes -user : The 'user' parameter value given when calling BASS_RecordStart -RETURN : TRUE = continue recording, FALSE = stop */ - -// BASS_ChannelIsActive return values -#define BASS_ACTIVE_STOPPED 0 -#define BASS_ACTIVE_PLAYING 1 -#define BASS_ACTIVE_STALLED 2 -#define BASS_ACTIVE_PAUSED 3 -#define BASS_ACTIVE_PAUSED_DEVICE 4 - -// Channel attributes -#define BASS_ATTRIB_FREQ 1 -#define BASS_ATTRIB_VOL 2 -#define BASS_ATTRIB_PAN 3 -#define BASS_ATTRIB_EAXMIX 4 -#define BASS_ATTRIB_NOBUFFER 5 -#define BASS_ATTRIB_VBR 6 -#define BASS_ATTRIB_CPU 7 -#define BASS_ATTRIB_SRC 8 -#define BASS_ATTRIB_NET_RESUME 9 -#define BASS_ATTRIB_SCANINFO 10 -#define BASS_ATTRIB_NORAMP 11 -#define BASS_ATTRIB_BITRATE 12 -#define BASS_ATTRIB_BUFFER 13 -#define BASS_ATTRIB_MUSIC_AMPLIFY 0x100 -#define BASS_ATTRIB_MUSIC_PANSEP 0x101 -#define BASS_ATTRIB_MUSIC_PSCALER 0x102 -#define BASS_ATTRIB_MUSIC_BPM 0x103 -#define BASS_ATTRIB_MUSIC_SPEED 0x104 -#define BASS_ATTRIB_MUSIC_VOL_GLOBAL 0x105 -#define BASS_ATTRIB_MUSIC_ACTIVE 0x106 -#define BASS_ATTRIB_MUSIC_VOL_CHAN 0x200 // + channel # -#define BASS_ATTRIB_MUSIC_VOL_INST 0x300 // + instrument # - -// BASS_ChannelSlideAttribute flags -#define BASS_SLIDE_LOG 0x1000000 - -// BASS_ChannelGetData flags -#define BASS_DATA_AVAILABLE 0 // query how much data is buffered -#define BASS_DATA_FIXED 0x20000000 // flag: return 8.24 fixed-point data -#define BASS_DATA_FLOAT 0x40000000 // flag: return floating-point sample data -#define BASS_DATA_FFT256 0x80000000 // 256 sample FFT -#define BASS_DATA_FFT512 0x80000001 // 512 FFT -#define BASS_DATA_FFT1024 0x80000002 // 1024 FFT -#define BASS_DATA_FFT2048 0x80000003 // 2048 FFT -#define BASS_DATA_FFT4096 0x80000004 // 4096 FFT -#define BASS_DATA_FFT8192 0x80000005 // 8192 FFT -#define BASS_DATA_FFT16384 0x80000006 // 16384 FFT -#define BASS_DATA_FFT32768 0x80000007 // 32768 FFT -#define BASS_DATA_FFT_INDIVIDUAL \ - 0x10 // FFT flag: FFT for each channel, else all combined -#define BASS_DATA_FFT_NOWINDOW 0x20 // FFT flag: no Hanning window -#define BASS_DATA_FFT_REMOVEDC 0x40 // FFT flag: pre-remove DC bias -#define BASS_DATA_FFT_COMPLEX 0x80 // FFT flag: return complex data -#define BASS_DATA_FFT_NYQUIST 0x100 // FFT flag: return extra Nyquist value - -// BASS_ChannelGetLevelEx flags -#define BASS_LEVEL_MONO 1 -#define BASS_LEVEL_STEREO 2 -#define BASS_LEVEL_RMS 4 -#define BASS_LEVEL_VOLPAN 8 - -// BASS_ChannelGetTags types : what's returned -#define BASS_TAG_ID3 0 // ID3v1 tags : TAG_ID3 structure -#define BASS_TAG_ID3V2 1 // ID3v2 tags : variable length block -#define BASS_TAG_OGG 2 // OGG comments : series of null-terminated UTF-8 strings -#define BASS_TAG_HTTP 3 // HTTP headers : series of null-terminated ANSI strings -#define BASS_TAG_ICY 4 // ICY headers : series of null-terminated ANSI strings -#define BASS_TAG_META 5 // ICY metadata : ANSI string -#define BASS_TAG_APE 6 // APE tags : series of null-terminated UTF-8 strings -#define BASS_TAG_MP4 \ - 7 // MP4/iTunes metadata : series of null-terminated UTF-8 strings -#define BASS_TAG_WMA 8 // WMA tags : series of null-terminated UTF-8 strings -#define BASS_TAG_VENDOR 9 // OGG encoder : UTF-8 string -#define BASS_TAG_LYRICS3 10 // Lyric3v2 tag : ASCII string -#define BASS_TAG_CA_CODEC 11 // CoreAudio codec info : TAG_CA_CODEC structure -#define BASS_TAG_MF \ - 13 // Media Foundation tags : series of null-terminated UTF-8 strings -#define BASS_TAG_WAVEFORMAT 14 // WAVE format : WAVEFORMATEEX structure -#define BASS_TAG_AM_MIME 15 // Android Media MIME type : ASCII string -#define BASS_TAG_AM_NAME 16 // Android Media codec name : ASCII string -#define BASS_TAG_RIFF_INFO \ - 0x100 // RIFF "INFO" tags : series of null-terminated ANSI strings -#define BASS_TAG_RIFF_BEXT 0x101 // RIFF/BWF "bext" tags : TAG_BEXT structure -#define BASS_TAG_RIFF_CART 0x102 // RIFF/BWF "cart" tags : TAG_CART structure -#define BASS_TAG_RIFF_DISP 0x103 // RIFF "DISP" text tag : ANSI string -#define BASS_TAG_RIFF_CUE 0x104 // RIFF "cue " chunk : TAG_CUE structure -#define BASS_TAG_RIFF_SMPL 0x105 // RIFF "smpl" chunk : TAG_SMPL structure -#define BASS_TAG_APE_BINARY \ - 0x1000 // + index #, binary APE tag : TAG_APE_BINARY structure -#define BASS_TAG_MUSIC_NAME 0x10000 // MOD music name : ANSI string -#define BASS_TAG_MUSIC_MESSAGE 0x10001 // MOD message : ANSI string -#define BASS_TAG_MUSIC_ORDERS \ - 0x10002 // MOD order list : BYTE array of pattern numbers -#define BASS_TAG_MUSIC_AUTH 0x10003 // MOD author : UTF-8 string -#define BASS_TAG_MUSIC_INST \ - 0x10100 // + instrument #, MOD instrument name : ANSI string -#define BASS_TAG_MUSIC_SAMPLE \ - 0x10300 // + sample #, MOD sample name : ANSI string - -// ID3v1 tag structure -typedef struct { - char id[3]; - char title[30]; - char artist[30]; - char album[30]; - char year[4]; - char comment[30]; - BYTE genre; -} TAG_ID3; - -// Binary APE tag structure -typedef struct { - const char *key; - const void *data; - DWORD length; -} TAG_APE_BINARY; - -// BWF "bext" tag structure -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable : 4200) -#endif -#pragma pack(push, 1) -typedef struct { - char Description[256]; // description - char Originator[32]; // name of the originator - char OriginatorReference[32]; // reference of the originator - char OriginationDate[10]; // date of creation (yyyy-mm-dd) - char OriginationTime[8]; // time of creation (hh-mm-ss) - QWORD TimeReference; // first sample count since midnight (little-endian) - WORD Version; // BWF version (little-endian) - BYTE UMID[64]; // SMPTE UMID - BYTE Reserved[190]; -#if defined(__GNUC__) && __GNUC__ < 3 - char CodingHistory[0]; // history -#elif 1 // change to 0 if compiler fails the following line - char CodingHistory[]; // history -#else - char CodingHistory[1]; // history -#endif -} TAG_BEXT; -#pragma pack(pop) - -// BWF "cart" tag structures -typedef struct { - DWORD dwUsage; // FOURCC timer usage ID - DWORD dwValue; // timer value in samples from head -} TAG_CART_TIMER; - -typedef struct { - char Version[4]; // version of the data structure - char Title[64]; // title of cart audio sequence - char Artist[64]; // artist or creator name - char CutID[64]; // cut number identification - char ClientID[64]; // client identification - char Category[64]; // category ID, PSA, NEWS, etc - char Classification[64]; // classification or auxiliary key - char OutCue[64]; // out cue text - char StartDate[10]; // yyyy-mm-dd - char StartTime[8]; // hh:mm:ss - char EndDate[10]; // yyyy-mm-dd - char EndTime[8]; // hh:mm:ss - char ProducerAppID[64]; // name of vendor or application - char ProducerAppVersion[64]; // version of producer application - char UserDef[64]; // user defined text - DWORD dwLevelReference; // sample value for 0 dB reference - TAG_CART_TIMER PostTimer[8]; // 8 time markers after head - char Reserved[276]; - char URL[1024]; // uniform resource locator -#if defined(__GNUC__) && __GNUC__ < 3 - char TagText[0]; // free form text for scripts or tags -#elif 1 // change to 0 if compiler fails the following line - char TagText[]; // free form text for scripts or tags -#else - char TagText[1]; // free form text for scripts or tags -#endif -} TAG_CART; - -// RIFF "cue " tag structures -typedef struct { - DWORD dwName; - DWORD dwPosition; - DWORD fccChunk; - DWORD dwChunkStart; - DWORD dwBlockStart; - DWORD dwSampleOffset; -} TAG_CUE_POINT; - -typedef struct { - DWORD dwCuePoints; -#if defined(__GNUC__) && __GNUC__ < 3 - TAG_CUE_POINT CuePoints[0]; -#elif 1 // change to 0 if compiler fails the following line - TAG_CUE_POINT CuePoints[]; -#else - TAG_CUE_POINT CuePoints[1]; -#endif -} TAG_CUE; - -// RIFF "smpl" tag structures -typedef struct { - DWORD dwIdentifier; - DWORD dwType; - DWORD dwStart; - DWORD dwEnd; - DWORD dwFraction; - DWORD dwPlayCount; -} TAG_SMPL_LOOP; - -typedef struct { - DWORD dwManufacturer; - DWORD dwProduct; - DWORD dwSamplePeriod; - DWORD dwMIDIUnityNote; - DWORD dwMIDIPitchFraction; - DWORD dwSMPTEFormat; - DWORD dwSMPTEOffset; - DWORD cSampleLoops; - DWORD cbSamplerData; -#if defined(__GNUC__) && __GNUC__ < 3 - TAG_SMPL_LOOP SampleLoops[0]; -#elif 1 // change to 0 if compiler fails the following line - TAG_SMPL_LOOP SampleLoops[]; -#else - TAG_SMPL_LOOP SampleLoops[1]; -#endif -} TAG_SMPL; -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -// CoreAudio codec info structure -typedef struct { - DWORD ftype; // file format - DWORD atype; // audio format - const char *name; // description -} TAG_CA_CODEC; - -#ifndef _WAVEFORMATEX_ -#define _WAVEFORMATEX_ -#pragma pack(push, 1) -typedef struct tWAVEFORMATEX { - WORD wFormatTag; - WORD nChannels; - DWORD nSamplesPerSec; - DWORD nAvgBytesPerSec; - WORD nBlockAlign; - WORD wBitsPerSample; - WORD cbSize; -} WAVEFORMATEX, *PWAVEFORMATEX, *LPWAVEFORMATEX; -typedef const WAVEFORMATEX *LPCWAVEFORMATEX; -#pragma pack(pop) -#endif - -// BASS_ChannelGetLength/GetPosition/SetPosition modes -#define BASS_POS_BYTE 0 // byte position -#define BASS_POS_MUSIC_ORDER 1 // order.row position, MAKELONG(order,row) -#define BASS_POS_OGG 3 // OGG bitstream number -#define BASS_POS_RESET 0x2000000 // flag: reset user file buffers -#define BASS_POS_RELATIVE \ - 0x4000000 // flag: seek relative to the current position -#define BASS_POS_INEXACT 0x8000000 // flag: allow seeking to inexact position -#define BASS_POS_DECODE \ - 0x10000000 // flag: get the decoding (not playing) position -#define BASS_POS_DECODETO \ - 0x20000000 // flag: decode to the position instead of seeking -#define BASS_POS_SCAN 0x40000000 // flag: scan to the position - -// BASS_ChannelSetDevice/GetDevice option -#define BASS_NODEVICE 0x20000 - -// BASS_RecordSetInput flags -#define BASS_INPUT_OFF 0x10000 -#define BASS_INPUT_ON 0x20000 - -#define BASS_INPUT_TYPE_MASK 0xff000000 -#define BASS_INPUT_TYPE_UNDEF 0x00000000 -#define BASS_INPUT_TYPE_DIGITAL 0x01000000 -#define BASS_INPUT_TYPE_LINE 0x02000000 -#define BASS_INPUT_TYPE_MIC 0x03000000 -#define BASS_INPUT_TYPE_SYNTH 0x04000000 -#define BASS_INPUT_TYPE_CD 0x05000000 -#define BASS_INPUT_TYPE_PHONE 0x06000000 -#define BASS_INPUT_TYPE_SPEAKER 0x07000000 -#define BASS_INPUT_TYPE_WAVE 0x08000000 -#define BASS_INPUT_TYPE_AUX 0x09000000 -#define BASS_INPUT_TYPE_ANALOG 0x0a000000 - -// BASS_ChannelSetFX effect types -#define BASS_FX_DX8_CHORUS 0 -#define BASS_FX_DX8_COMPRESSOR 1 -#define BASS_FX_DX8_DISTORTION 2 -#define BASS_FX_DX8_ECHO 3 -#define BASS_FX_DX8_FLANGER 4 -#define BASS_FX_DX8_GARGLE 5 -#define BASS_FX_DX8_I3DL2REVERB 6 -#define BASS_FX_DX8_PARAMEQ 7 -#define BASS_FX_DX8_REVERB 8 -#define BASS_FX_VOLUME 9 - -typedef struct { - float fWetDryMix; - float fDepth; - float fFeedback; - float fFrequency; - DWORD lWaveform; // 0=triangle, 1=sine - float fDelay; - DWORD lPhase; // BASS_DX8_PHASE_xxx -} BASS_DX8_CHORUS; - -typedef struct { - float fGain; - float fAttack; - float fRelease; - float fThreshold; - float fRatio; - float fPredelay; -} BASS_DX8_COMPRESSOR; - -typedef struct { - float fGain; - float fEdge; - float fPostEQCenterFrequency; - float fPostEQBandwidth; - float fPreLowpassCutoff; -} BASS_DX8_DISTORTION; - -typedef struct { - float fWetDryMix; - float fFeedback; - float fLeftDelay; - float fRightDelay; - BOOL lPanDelay; -} BASS_DX8_ECHO; - -typedef struct { - float fWetDryMix; - float fDepth; - float fFeedback; - float fFrequency; - DWORD lWaveform; // 0=triangle, 1=sine - float fDelay; - DWORD lPhase; // BASS_DX8_PHASE_xxx -} BASS_DX8_FLANGER; - -typedef struct { - DWORD dwRateHz; // Rate of modulation in hz - DWORD dwWaveShape; // 0=triangle, 1=square -} BASS_DX8_GARGLE; - -typedef struct { - int lRoom; // [-10000, 0] default: -1000 mB - int lRoomHF; // [-10000, 0] default: 0 mB - float flRoomRolloffFactor; // [0.0, 10.0] default: 0.0 - float flDecayTime; // [0.1, 20.0] default: 1.49s - float flDecayHFRatio; // [0.1, 2.0] default: 0.83 - int lReflections; // [-10000, 1000] default: -2602 mB - float flReflectionsDelay; // [0.0, 0.3] default: 0.007 s - int lReverb; // [-10000, 2000] default: 200 mB - float flReverbDelay; // [0.0, 0.1] default: 0.011 s - float flDiffusion; // [0.0, 100.0] default: 100.0 % - float flDensity; // [0.0, 100.0] default: 100.0 % - float flHFReference; // [20.0, 20000.0] default: 5000.0 Hz -} BASS_DX8_I3DL2REVERB; - -typedef struct { - float fCenter; - float fBandwidth; - float fGain; -} BASS_DX8_PARAMEQ; - -typedef struct { - float fInGain; // [-96.0,0.0] default: 0.0 dB - float fReverbMix; // [-96.0,0.0] default: 0.0 db - float fReverbTime; // [0.001,3000.0] default: 1000.0 ms - float fHighFreqRTRatio; // [0.001,0.999] default: 0.001 -} BASS_DX8_REVERB; - -#define BASS_DX8_PHASE_NEG_180 0 -#define BASS_DX8_PHASE_NEG_90 1 -#define BASS_DX8_PHASE_ZERO 2 -#define BASS_DX8_PHASE_90 3 -#define BASS_DX8_PHASE_180 4 - -typedef struct { - float fTarget; - float fCurrent; - float fTime; - DWORD lCurve; -} BASS_FX_VOLUME_PARAM; - -typedef void(CALLBACK IOSNOTIFYPROC)(DWORD status); -/* iOS notification callback function. -status : The notification (BASS_IOSNOTIFY_xxx) */ - -#define BASS_IOSNOTIFY_INTERRUPT 1 // interruption started -#define BASS_IOSNOTIFY_INTERRUPT_END 2 // interruption ended - -BOOL BASSDEF(BASS_SetConfig)(DWORD option, DWORD value); -DWORD BASSDEF(BASS_GetConfig)(DWORD option); -BOOL BASSDEF(BASS_SetConfigPtr)(DWORD option, const void *value); -void *BASSDEF(BASS_GetConfigPtr)(DWORD option); -DWORD BASSDEF(BASS_GetVersion)(); -int BASSDEF(BASS_ErrorGetCode)(); -BOOL BASSDEF(BASS_GetDeviceInfo)(DWORD device, BASS_DEVICEINFO *info); -#if defined(_WIN32) && !defined(_WIN32_WCE) && \ - !(WINAPI_FAMILY && WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP) -BOOL BASSDEF(BASS_Init)(int device, DWORD freq, DWORD flags, HWND win, - const GUID *dsguid); -#else -BOOL BASSDEF(BASS_Init)(int device, DWORD freq, DWORD flags, void *win, - void *dsguid); -#endif -BOOL BASSDEF(BASS_SetDevice)(DWORD device); -DWORD BASSDEF(BASS_GetDevice)(); -BOOL BASSDEF(BASS_Free)(); -#if defined(_WIN32) && !defined(_WIN32_WCE) && \ - !(WINAPI_FAMILY && WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP) -void *BASSDEF(BASS_GetDSoundObject)(DWORD object); -#endif -BOOL BASSDEF(BASS_GetInfo)(BASS_INFO *info); -BOOL BASSDEF(BASS_Update)(DWORD length); -float BASSDEF(BASS_GetCPU)(); -BOOL BASSDEF(BASS_Start)(); -BOOL BASSDEF(BASS_Stop)(); -BOOL BASSDEF(BASS_Pause)(); -BOOL BASSDEF(BASS_IsStarted)(); -BOOL BASSDEF(BASS_SetVolume)(float volume); -float BASSDEF(BASS_GetVolume)(); - -HPLUGIN BASSDEF(BASS_PluginLoad)(const char *file, DWORD flags); -BOOL BASSDEF(BASS_PluginFree)(HPLUGIN handle); -const BASS_PLUGININFO *BASSDEF(BASS_PluginGetInfo)(HPLUGIN handle); - -BOOL BASSDEF(BASS_Set3DFactors)(float distf, float rollf, float doppf); -BOOL BASSDEF(BASS_Get3DFactors)(float *distf, float *rollf, float *doppf); -BOOL BASSDEF(BASS_Set3DPosition)(const BASS_3DVECTOR *pos, - const BASS_3DVECTOR *vel, - const BASS_3DVECTOR *front, - const BASS_3DVECTOR *top); -BOOL BASSDEF(BASS_Get3DPosition)(BASS_3DVECTOR *pos, BASS_3DVECTOR *vel, - BASS_3DVECTOR *front, BASS_3DVECTOR *top); -void BASSDEF(BASS_Apply3D)(); -#if defined(_WIN32) && !defined(_WIN32_WCE) && \ - !(WINAPI_FAMILY && WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP) -BOOL BASSDEF(BASS_SetEAXParameters)(int env, float vol, float decay, - float damp); -BOOL BASSDEF(BASS_GetEAXParameters)(DWORD *env, float *vol, float *decay, - float *damp); -#endif - -HMUSIC BASSDEF(BASS_MusicLoad)(BOOL mem, const void *file, QWORD offset, - DWORD length, DWORD flags, DWORD freq); -BOOL BASSDEF(BASS_MusicFree)(HMUSIC handle); - -HSAMPLE BASSDEF(BASS_SampleLoad)(BOOL mem, const void *file, QWORD offset, - DWORD length, DWORD max, DWORD flags); -HSAMPLE BASSDEF(BASS_SampleCreate)(DWORD length, DWORD freq, DWORD chans, - DWORD max, DWORD flags); -BOOL BASSDEF(BASS_SampleFree)(HSAMPLE handle); -BOOL BASSDEF(BASS_SampleSetData)(HSAMPLE handle, const void *buffer); -BOOL BASSDEF(BASS_SampleGetData)(HSAMPLE handle, void *buffer); -BOOL BASSDEF(BASS_SampleGetInfo)(HSAMPLE handle, BASS_SAMPLE *info); -BOOL BASSDEF(BASS_SampleSetInfo)(HSAMPLE handle, const BASS_SAMPLE *info); -HCHANNEL BASSDEF(BASS_SampleGetChannel)(HSAMPLE handle, BOOL onlynew); -DWORD BASSDEF(BASS_SampleGetChannels)(HSAMPLE handle, HCHANNEL *channels); -BOOL BASSDEF(BASS_SampleStop)(HSAMPLE handle); - -HSTREAM BASSDEF(BASS_StreamCreate)(DWORD freq, DWORD chans, DWORD flags, - STREAMPROC *proc, void *user); -HSTREAM BASSDEF(BASS_StreamCreateFile)(BOOL mem, const void *file, QWORD offset, - QWORD length, DWORD flags); -HSTREAM BASSDEF(BASS_StreamCreateURL)(const char *url, DWORD offset, - DWORD flags, DOWNLOADPROC *proc, - void *user); -HSTREAM BASSDEF(BASS_StreamCreateFileUser)(DWORD system, DWORD flags, - const BASS_FILEPROCS *proc, - void *user); -BOOL BASSDEF(BASS_StreamFree)(HSTREAM handle); -QWORD BASSDEF(BASS_StreamGetFilePosition)(HSTREAM handle, DWORD mode); -DWORD BASSDEF(BASS_StreamPutData)(HSTREAM handle, const void *buffer, - DWORD length); -DWORD BASSDEF(BASS_StreamPutFileData)(HSTREAM handle, const void *buffer, - DWORD length); - -BOOL BASSDEF(BASS_RecordGetDeviceInfo)(DWORD device, BASS_DEVICEINFO *info); -BOOL BASSDEF(BASS_RecordInit)(int device); -BOOL BASSDEF(BASS_RecordSetDevice)(DWORD device); -DWORD BASSDEF(BASS_RecordGetDevice)(); -BOOL BASSDEF(BASS_RecordFree)(); -BOOL BASSDEF(BASS_RecordGetInfo)(BASS_RECORDINFO *info); -const char *BASSDEF(BASS_RecordGetInputName)(int input); -BOOL BASSDEF(BASS_RecordSetInput)(int input, DWORD flags, float volume); -DWORD BASSDEF(BASS_RecordGetInput)(int input, float *volume); -HRECORD BASSDEF(BASS_RecordStart)(DWORD freq, DWORD chans, DWORD flags, - RECORDPROC *proc, void *user); - -double BASSDEF(BASS_ChannelBytes2Seconds)(DWORD handle, QWORD pos); -QWORD BASSDEF(BASS_ChannelSeconds2Bytes)(DWORD handle, double pos); -DWORD BASSDEF(BASS_ChannelGetDevice)(DWORD handle); -BOOL BASSDEF(BASS_ChannelSetDevice)(DWORD handle, DWORD device); -DWORD BASSDEF(BASS_ChannelIsActive)(DWORD handle); -BOOL BASSDEF(BASS_ChannelGetInfo)(DWORD handle, BASS_CHANNELINFO *info); -const char *BASSDEF(BASS_ChannelGetTags)(DWORD handle, DWORD tags); -DWORD BASSDEF(BASS_ChannelFlags)(DWORD handle, DWORD flags, DWORD mask); -BOOL BASSDEF(BASS_ChannelUpdate)(DWORD handle, DWORD length); -BOOL BASSDEF(BASS_ChannelLock)(DWORD handle, BOOL lock); -BOOL BASSDEF(BASS_ChannelPlay)(DWORD handle, BOOL restart); -BOOL BASSDEF(BASS_ChannelStop)(DWORD handle); -BOOL BASSDEF(BASS_ChannelPause)(DWORD handle); -BOOL BASSDEF(BASS_ChannelSetAttribute)(DWORD handle, DWORD attrib, float value); -BOOL BASSDEF(BASS_ChannelGetAttribute)(DWORD handle, DWORD attrib, - float *value); -BOOL BASSDEF(BASS_ChannelSlideAttribute)(DWORD handle, DWORD attrib, - float value, DWORD time); -BOOL BASSDEF(BASS_ChannelIsSliding)(DWORD handle, DWORD attrib); -BOOL BASSDEF(BASS_ChannelSetAttributeEx)(DWORD handle, DWORD attrib, - void *value, DWORD size); -DWORD BASSDEF(BASS_ChannelGetAttributeEx)(DWORD handle, DWORD attrib, - void *value, DWORD size); -BOOL BASSDEF(BASS_ChannelSet3DAttributes)(DWORD handle, int mode, float min, - float max, int iangle, int oangle, - float outvol); -BOOL BASSDEF(BASS_ChannelGet3DAttributes)(DWORD handle, DWORD *mode, float *min, - float *max, DWORD *iangle, - DWORD *oangle, float *outvol); -BOOL BASSDEF(BASS_ChannelSet3DPosition)(DWORD handle, const BASS_3DVECTOR *pos, - const BASS_3DVECTOR *orient, - const BASS_3DVECTOR *vel); -BOOL BASSDEF(BASS_ChannelGet3DPosition)(DWORD handle, BASS_3DVECTOR *pos, - BASS_3DVECTOR *orient, - BASS_3DVECTOR *vel); -QWORD BASSDEF(BASS_ChannelGetLength)(DWORD handle, DWORD mode); -BOOL BASSDEF(BASS_ChannelSetPosition)(DWORD handle, QWORD pos, DWORD mode); -QWORD BASSDEF(BASS_ChannelGetPosition)(DWORD handle, DWORD mode); -DWORD BASSDEF(BASS_ChannelGetLevel)(DWORD handle); -BOOL BASSDEF(BASS_ChannelGetLevelEx)(DWORD handle, float *levels, float length, - DWORD flags); -DWORD BASSDEF(BASS_ChannelGetData)(DWORD handle, void *buffer, DWORD length); -HSYNC BASSDEF(BASS_ChannelSetSync)(DWORD handle, DWORD type, QWORD param, - SYNCPROC *proc, void *user); -BOOL BASSDEF(BASS_ChannelRemoveSync)(DWORD handle, HSYNC sync); -HDSP BASSDEF(BASS_ChannelSetDSP)(DWORD handle, DSPPROC *proc, void *user, - int priority); -BOOL BASSDEF(BASS_ChannelRemoveDSP)(DWORD handle, HDSP dsp); -BOOL BASSDEF(BASS_ChannelSetLink)(DWORD handle, DWORD chan); -BOOL BASSDEF(BASS_ChannelRemoveLink)(DWORD handle, DWORD chan); -HFX BASSDEF(BASS_ChannelSetFX)(DWORD handle, DWORD type, int priority); -BOOL BASSDEF(BASS_ChannelRemoveFX)(DWORD handle, HFX fx); - -BOOL BASSDEF(BASS_FXSetParameters)(HFX handle, const void *params); -BOOL BASSDEF(BASS_FXGetParameters)(HFX handle, void *params); -BOOL BASSDEF(BASS_FXReset)(HFX handle); -BOOL BASSDEF(BASS_FXSetPriority)(HFX handle, int priority); - -#ifdef __cplusplus -} - -#if defined(_WIN32) && !defined(NOBASSOVERLOADS) -static inline HPLUGIN BASS_PluginLoad(const WCHAR *file, DWORD flags) -{ - return BASS_PluginLoad((const char *)file, flags | BASS_UNICODE); -} - -static inline HMUSIC BASS_MusicLoad(BOOL mem, const WCHAR *file, QWORD offset, - DWORD length, DWORD flags, DWORD freq) -{ - return BASS_MusicLoad(mem, (const void *)file, offset, length, - flags | BASS_UNICODE, freq); -} - -static inline HSAMPLE BASS_SampleLoad(BOOL mem, const WCHAR *file, QWORD offset, - DWORD length, DWORD max, DWORD flags) -{ - return BASS_SampleLoad(mem, (const void *)file, offset, length, max, - flags | BASS_UNICODE); -} - -static inline HSTREAM BASS_StreamCreateFile(BOOL mem, const WCHAR *file, - QWORD offset, QWORD length, - DWORD flags) -{ - return BASS_StreamCreateFile(mem, (const void *)file, offset, length, - flags | BASS_UNICODE); -} - -static inline HSTREAM BASS_StreamCreateURL(const WCHAR *url, DWORD offset, - DWORD flags, DOWNLOADPROC *proc, - void *user) -{ - return BASS_StreamCreateURL((const char *)url, offset, flags | BASS_UNICODE, - proc, user); -} - -static inline BOOL BASS_SetConfigPtr(DWORD option, const WCHAR *value) -{ - return BASS_SetConfigPtr(option | BASS_UNICODE, (const void *)value); -} -#endif -#endif - -#endif diff --git a/include/bassmidi.h b/include/bassmidi.h deleted file mode 100644 index 72ebe9c0..00000000 --- a/include/bassmidi.h +++ /dev/null @@ -1,380 +0,0 @@ -/* - BASSMIDI 2.4 C/C++ header file - Copyright (c) 2006-2020 Un4seen Developments Ltd. - - See the BASSMIDI.CHM file for more detailed documentation -*/ - -#ifndef BASSMIDI_H -#define BASSMIDI_H - -#include "bass.h" - -#if BASSVERSION!=0x204 -#error conflicting BASS and BASSMIDI versions -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef BASSMIDIDEF -#define BASSMIDIDEF(f) WINAPI f -#endif - -typedef DWORD HSOUNDFONT; // soundfont handle - -// Additional error codes returned by BASS_ErrorGetCode -#define BASS_ERROR_MIDI_INCLUDE 7000 // SFZ include file could not be opened - -// Additional BASS_SetConfig options -#define BASS_CONFIG_MIDI_COMPACT 0x10400 -#define BASS_CONFIG_MIDI_VOICES 0x10401 -#define BASS_CONFIG_MIDI_AUTOFONT 0x10402 -#define BASS_CONFIG_MIDI_IN_PORTS 0x10404 -#define BASS_CONFIG_MIDI_SAMPLETHREADS 0x10406 -#define BASS_CONFIG_MIDI_SAMPLEMEM 0x10407 -#define BASS_CONFIG_MIDI_SAMPLEREAD 0x10408 - -// Additional BASS_SetConfigPtr options -#define BASS_CONFIG_MIDI_DEFFONT 0x10403 -#define BASS_CONFIG_MIDI_SFZHEAD 0x10408 - -// Additional sync types -#define BASS_SYNC_MIDI_MARK 0x10000 -#define BASS_SYNC_MIDI_MARKER 0x10000 -#define BASS_SYNC_MIDI_CUE 0x10001 -#define BASS_SYNC_MIDI_LYRIC 0x10002 -#define BASS_SYNC_MIDI_TEXT 0x10003 -#define BASS_SYNC_MIDI_EVENT 0x10004 -#define BASS_SYNC_MIDI_TICK 0x10005 -#define BASS_SYNC_MIDI_TIMESIG 0x10006 -#define BASS_SYNC_MIDI_KEYSIG 0x10007 - -// Additional BASS_MIDI_StreamCreateFile/etc flags -#define BASS_MIDI_NOSYSRESET 0x800 -#define BASS_MIDI_DECAYEND 0x1000 -#define BASS_MIDI_NOFX 0x2000 -#define BASS_MIDI_DECAYSEEK 0x4000 -#define BASS_MIDI_NOCROP 0x8000 -#define BASS_MIDI_NOTEOFF1 0x10000 -#define BASS_MIDI_SINCINTER 0x800000 - -// BASS_MIDI_FontInit flags -#define BASS_MIDI_FONT_MEM 0x10000 -#define BASS_MIDI_FONT_MMAP 0x20000 -#define BASS_MIDI_FONT_XGDRUMS 0x40000 -#define BASS_MIDI_FONT_NOFX 0x80000 -#define BASS_MIDI_FONT_LINATTMOD 0x100000 -#define BASS_MIDI_FONT_LINDECVOL 0x200000 -#define BASS_MIDI_FONT_NORAMPIN 0x400000 -#define BASS_MIDI_FONT_NOLIMITS 0x800000 - -typedef struct { - HSOUNDFONT font; // soundfont - int preset; // preset number (-1=all) - int bank; -} BASS_MIDI_FONT; - -typedef struct { - HSOUNDFONT font; // soundfont - int spreset; // source preset number - int sbank; // source bank number - int dpreset; // destination preset/program number - int dbank; // destination bank number - int dbanklsb; // destination bank number LSB -} BASS_MIDI_FONTEX; - -// BASS_MIDI_StreamSet/GetFonts flag -#define BASS_MIDI_FONT_EX 0x1000000 // BASS_MIDI_FONTEX - -typedef struct { - const char *name; - const char *copyright; - const char *comment; - DWORD presets; // number of presets/instruments - DWORD samsize; // total size (in bytes) of the sample data - DWORD samload; // amount of sample data currently loaded - DWORD samtype; // sample format (CTYPE) if packed -} BASS_MIDI_FONTINFO; - -typedef struct { - DWORD track; // track containing marker - DWORD pos; // marker position - const char *text; // marker text -} BASS_MIDI_MARK; - -// Marker types -#define BASS_MIDI_MARK_MARKER 0 // marker -#define BASS_MIDI_MARK_CUE 1 // cue point -#define BASS_MIDI_MARK_LYRIC 2 // lyric -#define BASS_MIDI_MARK_TEXT 3 // text -#define BASS_MIDI_MARK_TIMESIG 4 // time signature -#define BASS_MIDI_MARK_KEYSIG 5 // key signature -#define BASS_MIDI_MARK_COPY 6 // copyright notice -#define BASS_MIDI_MARK_TRACK 7 // track name -#define BASS_MIDI_MARK_INST 8 // instrument name -#define BASS_MIDI_MARK_TRACKSTART 9 // track start (SMF2) -#define BASS_MIDI_MARK_TICK 0x10000 // flag: get position in ticks (otherwise bytes) - -// MIDI events -#define MIDI_EVENT_NOTE 1 -#define MIDI_EVENT_PROGRAM 2 -#define MIDI_EVENT_CHANPRES 3 -#define MIDI_EVENT_PITCH 4 -#define MIDI_EVENT_PITCHRANGE 5 -#define MIDI_EVENT_DRUMS 6 -#define MIDI_EVENT_FINETUNE 7 -#define MIDI_EVENT_COARSETUNE 8 -#define MIDI_EVENT_MASTERVOL 9 -#define MIDI_EVENT_BANK 10 -#define MIDI_EVENT_MODULATION 11 -#define MIDI_EVENT_VOLUME 12 -#define MIDI_EVENT_PAN 13 -#define MIDI_EVENT_EXPRESSION 14 -#define MIDI_EVENT_SUSTAIN 15 -#define MIDI_EVENT_SOUNDOFF 16 -#define MIDI_EVENT_RESET 17 -#define MIDI_EVENT_NOTESOFF 18 -#define MIDI_EVENT_PORTAMENTO 19 -#define MIDI_EVENT_PORTATIME 20 -#define MIDI_EVENT_PORTANOTE 21 -#define MIDI_EVENT_MODE 22 -#define MIDI_EVENT_REVERB 23 -#define MIDI_EVENT_CHORUS 24 -#define MIDI_EVENT_CUTOFF 25 -#define MIDI_EVENT_RESONANCE 26 -#define MIDI_EVENT_RELEASE 27 -#define MIDI_EVENT_ATTACK 28 -#define MIDI_EVENT_DECAY 29 -#define MIDI_EVENT_REVERB_MACRO 30 -#define MIDI_EVENT_CHORUS_MACRO 31 -#define MIDI_EVENT_REVERB_TIME 32 -#define MIDI_EVENT_REVERB_DELAY 33 -#define MIDI_EVENT_REVERB_LOCUTOFF 34 -#define MIDI_EVENT_REVERB_HICUTOFF 35 -#define MIDI_EVENT_REVERB_LEVEL 36 -#define MIDI_EVENT_CHORUS_DELAY 37 -#define MIDI_EVENT_CHORUS_DEPTH 38 -#define MIDI_EVENT_CHORUS_RATE 39 -#define MIDI_EVENT_CHORUS_FEEDBACK 40 -#define MIDI_EVENT_CHORUS_LEVEL 41 -#define MIDI_EVENT_CHORUS_REVERB 42 -#define MIDI_EVENT_USERFX 43 -#define MIDI_EVENT_USERFX_LEVEL 44 -#define MIDI_EVENT_USERFX_REVERB 45 -#define MIDI_EVENT_USERFX_CHORUS 46 -#define MIDI_EVENT_DRUM_FINETUNE 50 -#define MIDI_EVENT_DRUM_COARSETUNE 51 -#define MIDI_EVENT_DRUM_PAN 52 -#define MIDI_EVENT_DRUM_REVERB 53 -#define MIDI_EVENT_DRUM_CHORUS 54 -#define MIDI_EVENT_DRUM_CUTOFF 55 -#define MIDI_EVENT_DRUM_RESONANCE 56 -#define MIDI_EVENT_DRUM_LEVEL 57 -#define MIDI_EVENT_DRUM_USERFX 58 -#define MIDI_EVENT_SOFT 60 -#define MIDI_EVENT_SYSTEM 61 -#define MIDI_EVENT_TEMPO 62 -#define MIDI_EVENT_SCALETUNING 63 -#define MIDI_EVENT_CONTROL 64 -#define MIDI_EVENT_CHANPRES_VIBRATO 65 -#define MIDI_EVENT_CHANPRES_PITCH 66 -#define MIDI_EVENT_CHANPRES_FILTER 67 -#define MIDI_EVENT_CHANPRES_VOLUME 68 -#define MIDI_EVENT_MOD_VIBRATO 69 -#define MIDI_EVENT_MODRANGE 69 -#define MIDI_EVENT_BANK_LSB 70 -#define MIDI_EVENT_KEYPRES 71 -#define MIDI_EVENT_KEYPRES_VIBRATO 72 -#define MIDI_EVENT_KEYPRES_PITCH 73 -#define MIDI_EVENT_KEYPRES_FILTER 74 -#define MIDI_EVENT_KEYPRES_VOLUME 75 -#define MIDI_EVENT_SOSTENUTO 76 -#define MIDI_EVENT_MOD_PITCH 77 -#define MIDI_EVENT_MOD_FILTER 78 -#define MIDI_EVENT_MOD_VOLUME 79 -#define MIDI_EVENT_VIBRATO_RATE 80 -#define MIDI_EVENT_VIBRATO_DEPTH 81 -#define MIDI_EVENT_VIBRATO_DELAY 82 -#define MIDI_EVENT_MIXLEVEL 0x10000 -#define MIDI_EVENT_TRANSPOSE 0x10001 -#define MIDI_EVENT_SYSTEMEX 0x10002 -#define MIDI_EVENT_SPEED 0x10004 - -#define MIDI_EVENT_END 0 -#define MIDI_EVENT_END_TRACK 0x10003 - -#define MIDI_EVENT_NOTES 0x20000 -#define MIDI_EVENT_VOICES 0x20001 - -#define MIDI_SYSTEM_DEFAULT 0 -#define MIDI_SYSTEM_GM1 1 -#define MIDI_SYSTEM_GM2 2 -#define MIDI_SYSTEM_XG 3 -#define MIDI_SYSTEM_GS 4 - -typedef struct { - DWORD event; // MIDI_EVENT_xxx - DWORD param; - DWORD chan; - DWORD tick; // event position (ticks) - DWORD pos; // event position (bytes) -} BASS_MIDI_EVENT; - -// BASS_MIDI_StreamEvents modes -#define BASS_MIDI_EVENTS_STRUCT 0 // BASS_MIDI_EVENT structures -#define BASS_MIDI_EVENTS_RAW 0x10000 // raw MIDI event data -#define BASS_MIDI_EVENTS_SYNC 0x1000000 // flag: trigger event syncs -#define BASS_MIDI_EVENTS_NORSTATUS 0x2000000 // flag: no running status -#define BASS_MIDI_EVENTS_CANCEL 0x4000000 // flag: cancel pending events -#define BASS_MIDI_EVENTS_TIME 0x8000000 // flag: delta-time info is present -#define BASS_MIDI_EVENTS_ABSTIME 0x10000000 // flag: absolute time info is present - -// BASS_MIDI_StreamGetChannel special channels -#define BASS_MIDI_CHAN_CHORUS (DWORD)-1 -#define BASS_MIDI_CHAN_REVERB (DWORD)-2 -#define BASS_MIDI_CHAN_USERFX (DWORD)-3 - -// BASS_CHANNELINFO type -#define BASS_CTYPE_STREAM_MIDI 0x10d00 - -// Additional attributes -#define BASS_ATTRIB_MIDI_PPQN 0x12000 -#define BASS_ATTRIB_MIDI_CPU 0x12001 -#define BASS_ATTRIB_MIDI_CHANS 0x12002 -#define BASS_ATTRIB_MIDI_VOICES 0x12003 -#define BASS_ATTRIB_MIDI_VOICES_ACTIVE 0x12004 -#define BASS_ATTRIB_MIDI_STATE 0x12005 -#define BASS_ATTRIB_MIDI_SRC 0x12006 -#define BASS_ATTRIB_MIDI_KILL 0x12007 -#define BASS_ATTRIB_MIDI_SPEED 0x12008 -#define BASS_ATTRIB_MIDI_REVERB 0x12009 -#define BASS_ATTRIB_MIDI_VOL 0x1200a -#define BASS_ATTRIB_MIDI_TRACK_VOL 0x12100 // + track # - -// Additional tag type -#define BASS_TAG_MIDI_TRACK 0x11000 // + track #, track text : array of null-terminated ANSI strings - -// BASS_ChannelGetLength/GetPosition/SetPosition mode -#define BASS_POS_MIDI_TICK 2 // tick position - -typedef BOOL (CALLBACK MIDIFILTERPROC)(HSTREAM handle, DWORD track, BASS_MIDI_EVENT *event, BOOL seeking, void *user); -/* Event filtering callback function. -handle : MIDI stream handle -track : Track containing the event -event : The event -seeking: TRUE = the event is being processed while seeking, FALSE = it is being played -user : The 'user' parameter value given when calling BASS_MIDI_StreamSetFilter -RETURN : TRUE = process the event, FALSE = drop the event */ - -// BASS_MIDI_FontLoadEx flags -#define BASS_MIDI_FONTLOAD_NOWAIT 1 // don't want for the samples to load -#define BASS_MIDI_FONTLOAD_COMPACT 2 // compact samples -#define BASS_MIDI_FONTLOAD_NOLOAD 4 // don't load (only compact) -#define BASS_MIDI_FONTLOAD_TIME 8 // length is in milliseconds -#define BASS_MIDI_FONTLOAD_KEEPDEC 16 // keep decoders - -// BASS_MIDI_FontPack flags -#define BASS_MIDI_PACK_NOHEAD 1 // don't send a WAV header to the encoder -#define BASS_MIDI_PACK_16BIT 2 // discard low 8 bits of 24-bit sample data -#define BASS_MIDI_PACK_48KHZ 4 // set encoding rate to 48000 Hz (else 44100 Hz) - -typedef struct { - const char *name; // description - DWORD id; - DWORD flags; -} BASS_MIDI_DEVICEINFO; - -typedef void (CALLBACK MIDIINPROC)(DWORD device, double time, const BYTE *buffer, DWORD length, void *user); -/* MIDI input callback function. -device : MIDI input device -time : Timestamp -buffer : Buffer containing MIDI data -length : Number of bytes of data -user : The 'user' parameter value given when calling BASS_MIDI_InInit */ - -HSTREAM BASSMIDIDEF(BASS_MIDI_StreamCreate)(DWORD channels, DWORD flags, DWORD freq); -HSTREAM BASSMIDIDEF(BASS_MIDI_StreamCreateFile)(BOOL mem, const void *file, QWORD offset, QWORD length, DWORD flags, DWORD freq); -HSTREAM BASSMIDIDEF(BASS_MIDI_StreamCreateURL)(const char *url, DWORD offset, DWORD flags, DOWNLOADPROC *proc, void *user, DWORD freq); -HSTREAM BASSMIDIDEF(BASS_MIDI_StreamCreateFileUser)(DWORD system, DWORD flags, const BASS_FILEPROCS *procs, void *user, DWORD freq); -HSTREAM BASSMIDIDEF(BASS_MIDI_StreamCreateEvents)(const BASS_MIDI_EVENT *events, DWORD ppqn, DWORD flags, DWORD freq); -BOOL BASSMIDIDEF(BASS_MIDI_StreamGetMark)(HSTREAM handle, DWORD type, DWORD index, BASS_MIDI_MARK *mark); -DWORD BASSMIDIDEF(BASS_MIDI_StreamGetMarks)(HSTREAM handle, int track, DWORD type, BASS_MIDI_MARK *marks); -BOOL BASSMIDIDEF(BASS_MIDI_StreamSetFonts)(HSTREAM handle, const void *fonts, DWORD count); -DWORD BASSMIDIDEF(BASS_MIDI_StreamGetFonts)(HSTREAM handle, void *fonts, DWORD count); -BOOL BASSMIDIDEF(BASS_MIDI_StreamLoadSamples)(HSTREAM handle); -BOOL BASSMIDIDEF(BASS_MIDI_StreamEvent)(HSTREAM handle, DWORD chan, DWORD event, DWORD param); -DWORD BASSMIDIDEF(BASS_MIDI_StreamEvents)(HSTREAM handle, DWORD mode, const void *events, DWORD length); -DWORD BASSMIDIDEF(BASS_MIDI_StreamGetEvent)(HSTREAM handle, DWORD chan, DWORD event); -DWORD BASSMIDIDEF(BASS_MIDI_StreamGetEvents)(HSTREAM handle, int track, DWORD filter, BASS_MIDI_EVENT *events); -DWORD BASSMIDIDEF(BASS_MIDI_StreamGetEventsEx)(HSTREAM handle, int track, DWORD filter, BASS_MIDI_EVENT *events, DWORD start, DWORD count); -BOOL BASSMIDIDEF(BASS_MIDI_StreamGetPreset)(HSTREAM handle, DWORD chan, BASS_MIDI_FONT *font); -HSTREAM BASSMIDIDEF(BASS_MIDI_StreamGetChannel)(HSTREAM handle, DWORD chan); -BOOL BASSMIDIDEF(BASS_MIDI_StreamSetFilter)(HSTREAM handle, BOOL seeking, MIDIFILTERPROC *proc, void *user); - -HSOUNDFONT BASSMIDIDEF(BASS_MIDI_FontInit)(const void *file, DWORD flags); -HSOUNDFONT BASSMIDIDEF(BASS_MIDI_FontInitUser)(const BASS_FILEPROCS *procs, void *user, DWORD flags); -BOOL BASSMIDIDEF(BASS_MIDI_FontFree)(HSOUNDFONT handle); -BOOL BASSMIDIDEF(BASS_MIDI_FontGetInfo)(HSOUNDFONT handle, BASS_MIDI_FONTINFO *info); -BOOL BASSMIDIDEF(BASS_MIDI_FontGetPresets)(HSOUNDFONT handle, DWORD *presets); -const char *BASSMIDIDEF(BASS_MIDI_FontGetPreset)(HSOUNDFONT handle, int preset, int bank); -BOOL BASSMIDIDEF(BASS_MIDI_FontLoad)(HSOUNDFONT handle, int preset, int bank); -BOOL BASSMIDIDEF(BASS_MIDI_FontLoadEx)(HSOUNDFONT handle, int preset, int bank, DWORD length, DWORD flags); -BOOL BASSMIDIDEF(BASS_MIDI_FontUnload)(HSOUNDFONT handle, int preset, int bank); -BOOL BASSMIDIDEF(BASS_MIDI_FontCompact)(HSOUNDFONT handle); -BOOL BASSMIDIDEF(BASS_MIDI_FontPack)(HSOUNDFONT handle, const void *outfile, const void *encoder, DWORD flags); -BOOL BASSMIDIDEF(BASS_MIDI_FontUnpack)(HSOUNDFONT handle, const void *outfile, DWORD flags); -BOOL BASSMIDIDEF(BASS_MIDI_FontSetVolume)(HSOUNDFONT handle, float volume); -float BASSMIDIDEF(BASS_MIDI_FontGetVolume)(HSOUNDFONT handle); - -DWORD BASSMIDIDEF(BASS_MIDI_ConvertEvents)(const BYTE *data, DWORD length, BASS_MIDI_EVENT *events, DWORD count, DWORD flags); - -BOOL BASSMIDIDEF(BASS_MIDI_InGetDeviceInfo)(DWORD device, BASS_MIDI_DEVICEINFO *info); -BOOL BASSMIDIDEF(BASS_MIDI_InInit)(DWORD device, MIDIINPROC *proc, void *user); -BOOL BASSMIDIDEF(BASS_MIDI_InFree)(DWORD device); -BOOL BASSMIDIDEF(BASS_MIDI_InStart)(DWORD device); -BOOL BASSMIDIDEF(BASS_MIDI_InStop)(DWORD device); - -#ifdef __cplusplus -} - -static inline BOOL BASS_MIDI_StreamSetFonts(HSTREAM handle, const BASS_MIDI_FONTEX *fonts, DWORD count) -{ - return BASS_MIDI_StreamSetFonts(handle, (const void*)fonts, count|BASS_MIDI_FONT_EX); -} - -static inline DWORD BASS_MIDI_StreamGetFonts(HSTREAM handle, BASS_MIDI_FONTEX *fonts, DWORD count) -{ - return BASS_MIDI_StreamGetFonts(handle, (void*)fonts, count|BASS_MIDI_FONT_EX); -} - -#ifdef _WIN32 -static inline HSTREAM BASS_MIDI_StreamCreateFile(BOOL mem, const WCHAR *file, QWORD offset, QWORD length, DWORD flags, DWORD freq) -{ - return BASS_MIDI_StreamCreateFile(mem, (const void*)file, offset, length, flags|BASS_UNICODE, freq); -} - -static inline HSTREAM BASS_MIDI_StreamCreateURL(const WCHAR *url, DWORD offset, DWORD flags, DOWNLOADPROC *proc, void *user, DWORD freq) -{ - return BASS_MIDI_StreamCreateURL((const char*)url, offset, flags|BASS_UNICODE, proc, user, freq); -} - -static inline HSOUNDFONT BASS_MIDI_FontInit(const WCHAR *file, DWORD flags) -{ - return BASS_MIDI_FontInit((const void*)file, flags|BASS_UNICODE); -} - -static inline BOOL BASS_MIDI_FontPack(HSOUNDFONT handle, const WCHAR *outfile, const WCHAR *encoder, DWORD flags) -{ - return BASS_MIDI_FontPack(handle, (const void*)outfile, (const void*)encoder, flags|BASS_UNICODE); -} - -static inline BOOL BASS_MIDI_FontUnpack(HSOUNDFONT handle, const WCHAR *outfile, DWORD flags) -{ - return BASS_MIDI_FontUnpack(handle, (const void*)outfile, flags|BASS_UNICODE); -} -#endif -#endif - -#endif diff --git a/include/bassopus.h b/include/bassopus.h deleted file mode 100644 index 3d8b131d..00000000 --- a/include/bassopus.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - BASSOPUS 2.4 C/C++ header file - Copyright (c) 2012-2015 Un4seen Developments Ltd. - - See the BASSOPUS.CHM file for more detailed documentation -*/ - -#ifndef BASSOPUS_H -#define BASSOPUS_H - -#include "bass.h" - -#if BASSVERSION != 0x204 -#error conflicting BASS and BASSOPUS versions -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef BASSOPUSDEF -#define BASSOPUSDEF(f) WINAPI f -#endif - -// BASS_CHANNELINFO type -#define BASS_CTYPE_STREAM_OPUS 0x11200 - -// Additional attributes -#define BASS_ATTRIB_OPUS_ORIGFREQ 0x13000 -#define BASS_ATTRIB_OPUS_GAIN 0x13001 - -HSTREAM BASSOPUSDEF(BASS_OPUS_StreamCreateFile)(BOOL mem, const void *file, - QWORD offset, QWORD length, - DWORD flags); -HSTREAM BASSOPUSDEF(BASS_OPUS_StreamCreateURL)(const char *url, DWORD offset, - DWORD flags, DOWNLOADPROC *proc, - void *user); -HSTREAM BASSOPUSDEF(BASS_OPUS_StreamCreateFileUser)(DWORD system, DWORD flags, - const BASS_FILEPROCS *procs, - void *user); - -#ifdef __cplusplus -} - -#if defined(_WIN32) && !defined(NOBASSOVERLOADS) -static inline HSTREAM BASS_OPUS_StreamCreateFile(BOOL mem, const WCHAR *file, - QWORD offset, QWORD length, - DWORD flags) -{ - return BASS_OPUS_StreamCreateFile(mem, (const void *)file, offset, length, - flags | BASS_UNICODE); -} - -static inline HSTREAM BASS_OPUS_StreamCreateURL(const WCHAR *url, DWORD offset, - DWORD flags, DOWNLOADPROC *proc, - void *user) -{ - return BASS_OPUS_StreamCreateURL((const char *)url, offset, - flags | BASS_UNICODE, proc, user); -} -#endif -#endif - -#endif diff --git a/include/chatlogpiece.h b/include/chatlogpiece.h deleted file mode 100644 index df6ccd0e..00000000 --- a/include/chatlogpiece.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef CHATLOGPIECE_H -#define CHATLOGPIECE_H - -#include -#include -#include - -class chatlogpiece { - Q_DECLARE_TR_FUNCTIONS(chatlogpiece) -public: - chatlogpiece(); - chatlogpiece(QString p_name, QString p_showname, QString p_message, - QString p_action,int color, bool selfname); - chatlogpiece(QString p_name, QString p_showname, QString p_message, - QString p_action, int color, bool selfname, QDateTime p_datetime); - - QString get_name() { return name; }; - QString get_showname() { return showname; }; - QString get_message() { return message; }; - QString get_action() { return action; }; - bool get_selfname() const { return selfname; }; - QDateTime get_datetime() { return datetime; }; - QString get_datetime_as_string() { return datetime.toString(); }; - int get_chat_color() const { return color; }; - QString get_full(); - -private: - QString name; - QString showname; - QString message; - QString action; - bool selfname; - QDateTime datetime; - int color; -}; - -#endif // CHATLOGPIECE_H diff --git a/include/courtroom.h b/include/courtroom.h deleted file mode 100644 index 0b26247f..00000000 --- a/include/courtroom.h +++ /dev/null @@ -1,1025 +0,0 @@ -#ifndef COURTROOM_H -#define COURTROOM_H - -#include "aoapplication.h" -#include "aoblipplayer.h" -#include "aobutton.h" -#include "aocharbutton.h" -#include "aoclocklabel.h" -#include "aoemotebutton.h" -#include "aoemotepreview.h" -#include "aoevidencebutton.h" -#include "aoevidencedisplay.h" -#include "aoimage.h" -#include "aolayer.h" -#include "aomusicplayer.h" -#include "aopacket.h" -#include "aosfxplayer.h" -#include "aotextarea.h" -#include "aotextboxwidgets.h" -#include "chatlogpiece.h" -#include "datatypes.h" -#include "debug_functions.h" -#include "eventfilters.h" -#include "file_functions.h" -#include "hardware_functions.h" -#include "lobby.h" -#include "scrolltext.h" -#include "widgets/aooptionsdialog.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) -#include //added in Qt 5.10 -#endif -#include -#include -#include -#include -#include - -#include - -#include -#include - -class AOApplication; - -class Courtroom : public QMainWindow { - Q_OBJECT -public: - explicit Courtroom(AOApplication *p_ao_app); - - void update_audio_volume(); - - void append_char(char_type p_char) { char_list.append(p_char); } - void append_evidence(evi_type p_evi) { evidence_list.append(p_evi); } - void append_music(QString f_music) { music_list.append(f_music); } - void append_area(QString f_area) { area_list.append(f_area); } - void clear_chars() { char_list.clear(); } - void clear_music() { music_list.clear(); } - void clear_areas() { area_list.clear(); } - - void fix_last_area() - { - if (area_list.size() > 0) { - QString malplaced = area_list.last(); - area_list.removeLast(); - append_music(malplaced); - } - } - - void arup_append(int players, QString status, QString cm, QString locked) - { - arup_players.append(players); - arup_statuses.append(status); - arup_cms.append(cm); - arup_locks.append(locked); - } - - void arup_clear() { - arup_players.clear(); - arup_statuses.clear(); - arup_cms.clear(); - arup_locks.clear(); - } - - void arup_modify(int type, int place, QString value) - { - if (type == 0) { - if (arup_players.size() > place) - arup_players[place] = value.toInt(); - } - else if (type == 1) { - if (arup_statuses.size() > place) - arup_statuses[place] = value; - } - else if (type == 2) { - if (arup_cms.size() > place) - arup_cms[place] = value; - } - else if (type == 3) { - if (arup_locks.size() > place) - arup_locks[place] = value; - } - } - - void character_loading_finished(); - - // - void set_courtroom_size(); - - // sets position of widgets based on theme ini files - void set_widgets(); - - // sets font size based on theme ini files - void set_font(QWidget *widget, QString class_name, QString p_identifier, - QString p_char = "", QString font_name = "", - int f_pointsize = 0); - - // Get the properly constructed font - QFont get_qfont(QString font_name, int f_pointsize, bool antialias = true); - - // actual operation of setting the font on a widget - void set_qfont(QWidget *widget, QString class_name, QFont font, - QColor f_color = Qt::black, bool bold = false, - bool outlined = false, QColor outline_color = QColor(0, 0, 0), - int outline_width = 1); - - // helper function that calls above function on the relevant widgets - void set_fonts(QString p_char = ""); - - // sets dropdown menu stylesheet - void set_stylesheet(QWidget *widget); - - // helper funciton that call above function on the relevant widgets - void set_stylesheets(); - - void set_window_title(QString p_title); - - // reads theme and sets size and pos based on the identifier (using p_misc if provided) - void set_size_and_pos(QWidget *p_widget, QString p_identifier, QString p_misc=""); - - // reads theme inis and returns the size and pos as defined by it - QPoint get_theme_pos(QString p_identifier); - - // sets status as taken on character with cid n_char and places proper shading - // on charselect - void set_taken(int n_char, bool p_taken); - - // sets the current background to argument. also does some checks to see if - // it's a legacy bg - void set_background(QString p_background, bool display = false); - - // sets the local character pos/side to use. - void set_side(QString p_side); - - // sets the pos dropdown - void set_pos_dropdown(QStringList pos_dropdowns); - - // sets the evidence list member variable to argument - void set_evidence_list(QVector &p_evi_list); - - // called when a DONE#% from the server was received - void done_received(); - - // sets the local mute list based on characters available on the server - void set_mute_list(); - - // Sets the local pair list based on the characters available on the server. - void set_pair_list(); - - // sets desk and bg based on pos in chatmessage - void set_scene(bool show_desk, QString f_side); - - // sets ui_vp_player_char according to SELF_OFFSET, only a function bc it's used with desk_mod 4 and 5 - void set_self_offset(const QString& p_list); - - // takes in serverD-formatted IP list as prints a converted version to server - // OOC admittedly poorly named - void set_ip_list(QString p_list); - - // disables chat if current cid matches second argument - // enables if p_muted is false - void set_mute(bool p_muted, int p_cid); - - // send a message that the player is banned and quits the server - void set_ban(int p_cid); - - // cid = character id, returns the cid of the currently selected character - int get_cid() { return m_cid; } - QString get_current_char() { return current_char; } - QString get_current_background() { return current_background; } - - // updates character to p_cid and updates necessary ui elements - // Optional "char_name" is the iniswap we're using - void update_character(int p_cid, QString char_name = "", bool reset_emote = false); - - // properly sets up some varibles: resets user state - void enter_courtroom(); - - // helper function that populates ui_music_list with the contents of - // music_list - void list_music(); - void list_areas(); - - // Debug log (formerly master server chat log) - void debug_message_handler(QtMsgType type, const QMessageLogContext &context, - const QString &msg); - void append_debug_message(QString f_message); - - // OOC chat log - void append_server_chatmessage(QString p_name, QString p_message, - QString p_color); - - // Add the message packet to the stack - void chatmessage_enqueue(QStringList p_contents); - - // Parse the chat message packet and unpack it into the m_chatmessage[ITEM] format - void unpack_chatmessage(QStringList p_contents); - - // Skip the current queue, adding all the queue messages to the logs if desynchronized logs are disabled - void skip_chatmessage_queue(); - - enum LogMode { - IO_ONLY, - DISPLAY_ONLY, - DISPLAY_AND_IO, - QUEUED, - }; - // Log the message contents and information such as evidence presenting etc. into the log file, the IC log, or both. - void log_chatmessage(QString f_message, int f_char_id, QString f_showname = "", QString f_char = "", QString f_objection_mod = "", int f_evi_id = 0, int f_color = 0, LogMode f_log_mode=IO_ONLY, bool sender = false); - - // Log the message contents and information such as evidence presenting etc. into the IC logs - void handle_callwords(); - - // Handle the objection logic, if it's interrupting the currently parsing message. - // Returns true if this message has an objection, otherwise returns false. The result decides when to call handle_ic_message() - bool handle_objection(); - - // Display the evidence image box when presenting evidence in IC - void display_evidence_image(); - - // Handle the stuff that comes when the character appears on screen and starts animating (preanims etc.) - void handle_ic_message(); - - // Display the character. - void display_character(); - - // Display the character's pair if present. - void display_pair_character(QString other_charid, QString other_offset); - - // Handle the emote modifier value and proceed through the logic accordingly. - void handle_emote_mod(int emote_mod, bool p_immediate); - - // Initialize the chatbox image, showname shenanigans, custom chatboxes, etc. - void initialize_chatbox(); - - // Finally start displaying the chatbox we initialized, display the evidence, and play the talking or idle emote for the character. - // Callwords are also handled here. - void handle_ic_speaking(); - - // This function filters out the common CC inline text trickery, for appending - // to the IC chatlog. - QString filter_ic_text(QString p_text, bool colorize = false, int pos = -1, - int default_color = 0); - - void log_ic_text(QString p_name, QString p_showname, QString p_message, - QString p_action = "", int p_color = 0, bool p_selfname = false); - - // adds text to the IC chatlog. p_name first as bold then p_text then a newlin - // this function keeps the chatlog scrolled to the top unless there's text - // selected - // or the user isn't already scrolled to the top - void append_ic_text(QString p_text, QString p_name = "", QString action = "", - int color = 0, bool selfname = false, QDateTime timestamp = QDateTime::currentDateTime(), - bool ghost = false); - - // clear sent messages that appear on the IC log but haven't been delivered - // yet to other players - void pop_ic_ghost(); - - // prints who played the song to IC chat and plays said song(if found on local - // filesystem) takes in a list where the first element is the song name and - // the second is the char id of who played it - void handle_song(QStringList *p_contents); - - void play_preanim(bool immediate); - - // plays the witness testimony or cross examination animation based on - // argument - void handle_wtce(QString p_wtce, int variant); - - // sets the hp bar of defense(p_bar 1) or pro(p_bar 2) - // state is an number between 0 and 10 inclusive - void set_hp_bar(int p_bar, int p_state); - - // Toggles the judge buttons, whether they should appear or not. - void show_judge_controls(bool visible); - - void check_connection_received(); - - void start_clock(int id); - void start_clock(int id, qint64 msecs); - void set_clock(int id, qint64 msecs); - void pause_clock(int id); - void stop_clock(int id); - void set_clock_visibility(int id, bool visible); - void skip_clocks(qint64 msecs); - - qint64 pong(); - // Truncates text so it fits within theme-specified boundaries and sets the tooltip to the full string - void truncate_label_text(QWidget* p_widget, QString p_identifier); - - void on_authentication_state_received(int p_state); - - enum JudgeState { - POS_DEPENDENT = -1, - HIDE_CONTROLS = 0, - SHOW_CONTROLS = 1 - }; - - JudgeState get_judge_state() { return judge_state; } - void set_judge_state(JudgeState new_state) { judge_state = new_state; } - void set_judge_buttons() { show_judge_controls(ao_app->get_pos_is_judge(current_side)); } - - ~Courtroom(); -private: - AOApplication *ao_app; - - // Percentage of audio that is suppressed when client is not in focus - int suppress_audio = 0; - - int m_courtroom_width = 714; - int m_courtroom_height = 668; - - int m_viewport_x = 0; - int m_viewport_y = 0; - - int m_viewport_width = 256; - int m_viewport_height = 192; - - int maximumMessages = 0; - - QParallelAnimationGroup *screenshake_animation_group = - new QParallelAnimationGroup; - - bool next_character_is_not_special = false; // If true, write the - // next character as it is. - - bool message_is_centered = false; - - int current_display_speed = 3; - int text_crawl = 40; - double message_display_mult[7] = {0, 0.25, 0.65, 1, 1.25, 1.75, 2.25}; - - // The character ID of the character this user wants to appear alongside with. - int other_charid = -1; - - // The horizontal offset this user has given if they want to appear alongside someone. - int char_offset = 0; - - // The vertical offset this user has given. - int char_vert_offset = 0; - - // 0 = in front, 1 = behind - int pair_order = 0; - - QVector char_list; - QVector evidence_list; - QVector music_list; - QVector area_list; - - QVector arup_players; - QVector arup_statuses; - QVector arup_cms; - QVector arup_locks; - - QVector ic_chatlog_history; - QString last_ic_message = ""; - - QQueue chatmessage_queue; - - // triggers ping_server() every 45 seconds - QTimer *keepalive_timer; - - // determines how fast messages tick onto screen - QTimer *chat_tick_timer; - - // count up timer to check how long it took for us to get a response from ping_server() - QElapsedTimer ping_timer; - bool is_pinging = false; - - // int chat_tick_interval = 60; - // which tick position(character in chat message) we are at - int tick_pos = 0; - // the actual document tick pos we gotta worry about for making the text - // scroll better - int real_tick_pos = 0; - // used to determine how often blips sound - int blip_ticker = 0; - int blip_rate = 2; - int rainbow_counter = 0; - bool rainbow_appended = false; - bool blank_blip = false; - bool chatbox_always_show = false; - - // Used for getting the current maximum blocks allowed in the IC chatlog. - int log_maximum_blocks = 0; - - // True, if the log should go downwards. - bool log_goes_downwards = true; - - // True, if log should display colors. - bool log_colors = true; - - // True, if the log should display the message like name
text instead of - // name: text - bool log_newline = false; - - // True, if the log should include RP actions like interjections, showing evidence, etc. - bool log_ic_actions = true; - - // Margin in pixels between log entries for the IC log. - int log_margin = 0; - - // True, if the log should have a timestamp. - bool log_timestamp = false; - - // format string for aforementioned log timestamp - QString log_timestamp_format; - - // How long in miliseconds should the objection wait before appearing. - int objection_threshold = 1500; - - // delay before chat messages starts ticking - QTimer *text_delay_timer; - - // delay before the next queue entry is going to be processed - QTimer *text_queue_timer; - - // delay before sfx plays - QTimer *sfx_delay_timer; - - // every time point in char.inis times this equals the final time - const int time_mod = 40; - - // the amount of time non-animated objection/hold it/takethat images stay - // onscreen for in ms, and the maximum amount of time any interjections are - // allowed to play - const int shout_static_time = 724; - const int shout_max_time = 1500; - - // the amount of time non-animated guilty/not guilty images stay onscreen for - // in ms, and the maximum amount of time g/ng images are allowed to play - const int verdict_static_time = 3000; - const int verdict_max_time = 4000; - - // the amount of time non-animated witness testimony/cross-examination images - // stay onscreen for in ms, and the maximum time any wt/ce image is allowed to - // play - const int wtce_static_time = 1500; - const int wtce_max_time = 4000; - - // characters we consider punctuation - const QString punctuation_chars = ".,?!:;"; - - // amount by which we multiply the delay when we parse punctuation chars - const int punctuation_modifier = 3; - - // amount of ghost blocks - int ghost_blocks = 0; - - // Minumum and maximum number of parameters in the MS packet - static const int MS_MINIMUM = 15; - static const int MS_MAXIMUM = 30; - QString m_chatmessage[MS_MAXIMUM]; - - QString previous_ic_message = ""; - QString additive_previous = ""; - - // char id, muted or not - QMap mute_map; - - // QVector muted_cids; - - bool is_muted = false; - - JudgeState judge_state = POS_DEPENDENT; - - // state of animation, 0 = objecting, 1 = preanim, 2 = talking, 3 = idle, 4 = - // noniterrupting preanim, 5 = (c) animation - int anim_state = 3; - - // whether or not current color is a talking one - bool color_is_talking = true; - - // state of text ticking, 0 = not yet ticking, 1 = ticking in progress, 2 = - // ticking done - int text_state = 2; - - // character id, which index of the char_list the player is - int m_cid = -1; - // cid and this may differ in cases of ini-editing - QString current_char = ""; - - int objection_state = 0; - QString objection_custom = ""; - struct CustomObjection { - QString name; - QString filename; - }; - QList custom_objections_list; - int realization_state = 0; - int screenshake_state = 0; - int text_color = 0; - - // How many unique user colors are possible - static const int max_colors = 12; - - // Text Color-related optimization: - // Current color list indexes to real color references - QVector color_row_to_number; - - // List of associated RGB colors for this color index - QVector color_rgb_list; - - // Same as above but populated from misc/default's config - QVector default_color_rgb_list; - - // Get a color index from an arbitrary misc config - void gen_char_rgb_list(QString p_misc); - QVector char_color_rgb_list; - - // Misc we used for the last message, and the one we're using now. Used to avoid loading assets when it's not needed - QString current_misc; - QString last_misc; - - // List of markdown start characters, their index is tied to the color index - QStringList color_markdown_start_list; - - // List of markdown end characters, their index is tied to the color index - QStringList color_markdown_end_list; - - // Whether or not we're supposed to remove this char during parsing - QVector color_markdown_remove_list; - - // Whether or not this color allows us to play the talking animation - QVector color_markdown_talking_list; - // Text Color-related optimization END - - // List of all currently available pos - QStringList pos_dropdown_list; - - // Current list file sorted line by line - QStringList sound_list; - - // Current SFX the user put in for the sfx dropdown list - QString custom_sfx = ""; - - // is the message we're about to send supposed to present evidence? - bool is_presenting_evidence = false; - bool c_played = false; // whether we've played a (c)-style postanimation yet - - // have we already presented evidence for this message? - bool evidence_presented = false; - - QString effect = ""; - - // Music effect flags we want to send to server when we play music - int music_flags = FADE_OUT; - - int defense_bar_state = 0; - int prosecution_bar_state = 0; - - int current_char_page = 0; - int char_columns = 10; - int char_rows = 9; - int max_chars_on_page = 90; - - const int button_width = 60; - const int button_height = 60; - - int current_emote_page = 0; - int current_emote = 0; - int emote_columns = 5; - int emote_rows = 2; - int max_emotes_on_page = 10; - - QVector local_evidence_list; - QVector private_evidence_list; - QVector global_evidence_list; - - // false = use private_evidence_list - bool current_evidence_global = true; - - int current_evidence_page = 0; - int current_evidence = 0; - int evidence_columns = 6; - int evidence_rows = 3; - int max_evidence_on_page = 18; - - // whether the ooc chat is server or master chat, true is server - bool server_ooc = true; - - QString current_background = "default"; - QString current_side = ""; - - QString last_music_search = ""; - QString last_area_search = ""; - - QBrush free_brush; - QBrush lfp_brush; - QBrush casing_brush; - QBrush recess_brush; - QBrush rp_brush; - QBrush gaming_brush; - QBrush locked_brush; - - AOMusicPlayer *music_player; - AOSfxPlayer *sfx_player; - AOSfxPlayer *objection_player; - AOBlipPlayer *blip_player; - - AOSfxPlayer *modcall_player; - - AOImage *ui_background; - - QWidget *ui_viewport; - BackgroundLayer *ui_vp_background; - SplashLayer *ui_vp_speedlines; - CharLayer *ui_vp_player_char; - CharLayer *ui_vp_sideplayer_char; - BackgroundLayer *ui_vp_desk; - AOEvidenceDisplay *ui_vp_evidence_display; - AOImage *ui_vp_chatbox; - AOChatboxLabel *ui_vp_showname; - InterfaceLayer *ui_vp_chat_arrow; - QTextEdit *ui_vp_message; - SplashLayer *ui_vp_testimony; - SplashLayer *ui_vp_wtce; - EffectLayer *ui_vp_effect; - SplashLayer *ui_vp_objection; - - QTextEdit *ui_ic_chatlog; - - AOTextArea *ui_debug_log; - AOTextArea *ui_server_chatlog; - - QListWidget *ui_mute_list; - QTreeWidget *ui_area_list; - QTreeWidget *ui_music_list; - - ScrollText *ui_music_name; - InterfaceLayer *ui_music_display; - - StickerLayer *ui_vp_sticker; - - static const int max_clocks = 5; - AOClockLabel *ui_clock[max_clocks]; - - AOButton *ui_pair_button; - QListWidget *ui_pair_list; - QSpinBox *ui_pair_offset_spinbox; - QSpinBox *ui_pair_vert_offset_spinbox; - - QComboBox *ui_pair_order_dropdown; - - QLineEdit *ui_ic_chat_message; - AOLineEditFilter *ui_ic_chat_message_filter; - QLineEdit *ui_ic_chat_name; - - QLineEdit *ui_ooc_chat_message; - QLineEdit *ui_ooc_chat_name; - - // QLineEdit *ui_area_password; - QLineEdit *ui_music_search; - - QWidget *ui_emotes; - QVector ui_emote_list; - AOButton *ui_emote_left; - AOButton *ui_emote_right; - - QMenu *emote_menu; - AOEmotePreview *emote_preview; - - QComboBox *ui_emote_dropdown; - QComboBox *ui_pos_dropdown; - AOButton *ui_pos_remove; - - QComboBox *ui_iniswap_dropdown; - AOButton *ui_iniswap_remove; - - QComboBox *ui_sfx_dropdown; - AOButton *ui_sfx_remove; - - QComboBox *ui_effects_dropdown; - - AOImage *ui_defense_bar; - AOImage *ui_prosecution_bar; - - QLabel *ui_music_label; - QLabel *ui_sfx_label; - QLabel *ui_blip_label; - - AOButton *ui_hold_it; - AOButton *ui_objection; - AOButton *ui_take_that; - - AOButton *ui_ooc_toggle; - - AOButton *ui_witness_testimony; - AOButton *ui_cross_examination; - AOButton *ui_guilty; - AOButton *ui_not_guilty; - - AOButton *ui_change_character; - AOButton *ui_reload_theme; - AOButton *ui_call_mod; - AOButton *ui_settings; - AOButton *ui_switch_area_music; - - QCheckBox *ui_pre; - QCheckBox *ui_flip; - QCheckBox *ui_additive; - QCheckBox *ui_guard; - - QCheckBox *ui_immediate; - QCheckBox *ui_showname_enable; - - AOButton *ui_custom_objection; - QMenu *custom_obj_menu; - AOButton *ui_realization; - AOButton *ui_screenshake; - AOButton *ui_mute; - - AOButton *ui_defense_plus; - AOButton *ui_defense_minus; - - AOButton *ui_prosecution_plus; - AOButton *ui_prosecution_minus; - - QComboBox *ui_text_color; - - QSlider *ui_music_slider; - QSlider *ui_sfx_slider; - QSlider *ui_blip_slider; - - AOImage *ui_muted; - - AOButton *ui_evidence_button; - AOImage *ui_evidence; - QLineEdit *ui_evidence_name; - AOLineEditFilter *ui_evidence_name_filter; - QWidget *ui_evidence_buttons; - QVector ui_evidence_list; - AOButton *ui_evidence_left; - AOButton *ui_evidence_right; - AOButton *ui_evidence_present; - AOImage *ui_evidence_overlay; - AOButton *ui_evidence_delete; - QLineEdit *ui_evidence_image_name; - AOLineEditFilter *ui_evidence_image_name_filter; - AOButton *ui_evidence_image_button; - AOButton *ui_evidence_x; - AOButton *ui_evidence_ok; - AOButton *ui_evidence_switch; - AOButton *ui_evidence_transfer; - AOButton *ui_evidence_save; - AOButton *ui_evidence_load; - QPlainTextEdit *ui_evidence_description; - - - AOImage *ui_char_select_background; - - // pretty list of characters - QTreeWidget *ui_char_list; - - // abstract widget to hold char buttons - QWidget *ui_char_buttons; - - QVector ui_char_button_list; - QVector ui_char_button_list_filtered; - - AOButton *ui_back_to_lobby; - - QLineEdit *ui_char_password; - - AOButton *ui_char_select_left; - AOButton *ui_char_select_right; - - AOButton *ui_spectator; - - QLineEdit *ui_char_search; - QCheckBox *ui_char_passworded; - QCheckBox *ui_char_taken; - - void construct_char_select(); - void set_char_select(); - void set_char_select_page(); - void char_clicked(int n_char); - void on_char_button_context_menu_requested(const QPoint &pos); - void put_button_in_place(int starting, int chars_on_this_page); - void filter_character_list(); - - void initialize_emotes(); - void refresh_emotes(); - void set_emote_page(); - void set_emote_dropdown(); - - void initialize_evidence(); - void refresh_evidence(); - void show_evidence(int f_real_id); - void set_evidence_page(); - - void reset_ui(); - - void regenerate_ic_chatlog(); -public slots: - void objection_done(); - void preanim_done(); - void do_screenshake(); - void do_flash(); - void do_effect(QString fx_path, QString fx_sound, QString p_char, - QString p_folder); - void play_char_sfx(QString sfx_name); - - void mod_called(QString p_ip); - - void on_reload_theme_clicked(); - - void update_ui_music_name(); - -private slots: - void start_chat_ticking(); - void play_sfx(); - - void chat_tick(); - - void on_mute_list_clicked(QModelIndex p_index); - void on_pair_list_clicked(QModelIndex p_index); - - void on_chat_return_pressed(); - - void on_ooc_return_pressed(); - - void on_music_search_return_pressed(); - void on_music_search_edited(QString p_text); - void on_music_list_double_clicked(QTreeWidgetItem *p_item, int column); - void on_music_list_context_menu_requested(const QPoint &pos); - void music_fade_out(bool toggle); - void music_fade_in(bool toggle); - void music_synchronize(bool toggle); - void music_random(); - void music_list_expand_all(); - void music_list_collapse_all(); - void music_stop(bool no_effects = false); - void on_area_list_double_clicked(QTreeWidgetItem *p_item, int column); - - void select_emote(int p_id); - - void on_emote_clicked(int p_id); - - void on_emote_left_clicked(); - void on_emote_right_clicked(); - - void on_emote_dropdown_changed(int p_index); - void on_pos_dropdown_changed(int p_index); - void on_pos_dropdown_changed(QString p_text); - void on_pos_dropdown_context_menu_requested(const QPoint &pos); - void on_pos_remove_clicked(); - - void on_iniswap_dropdown_changed(int p_index); - void set_iniswap_dropdown(); - void on_iniswap_context_menu_requested(const QPoint &pos); - void on_iniswap_edit_requested(); - void on_iniswap_remove_clicked(); - - void on_sfx_dropdown_changed(int p_index); - void on_sfx_dropdown_custom(QString p_sfx); - void set_sfx_dropdown(); - void on_sfx_context_menu_requested(const QPoint &pos); - void on_sfx_play_clicked(); - void on_sfx_edit_requested(); - void on_sfx_remove_clicked(); - - void set_effects_dropdown(); - void on_effects_context_menu_requested(const QPoint &pos); - void on_effects_edit_requested(); - void on_character_effects_edit_requested(); - void on_effects_dropdown_changed(int p_index); - bool effects_dropdown_find_and_set(QString effect); - - QString get_char_sfx(); - int get_char_sfx_delay(); - - void on_evidence_name_edited(); - void on_evidence_image_name_edited(); - void on_evidence_image_button_clicked(); - void on_evidence_clicked(int p_id); - void on_evidence_double_clicked(int p_id); - - void on_evidence_hover(int p_id, bool p_state); - - void on_evidence_left_clicked(); - void on_evidence_right_clicked(); - void on_evidence_present_clicked(); - - void on_hold_it_clicked(); - void on_objection_clicked(); - void on_take_that_clicked(); - void on_custom_objection_clicked(); - void show_custom_objection_menu(const QPoint &pos); - - void show_emote_menu(const QPoint &pos); - - void on_realization_clicked(); - void on_screenshake_clicked(); - - void on_mute_clicked(); - void on_pair_clicked(); - void on_pair_order_dropdown_changed(int p_index); - - void on_defense_minus_clicked(); - void on_defense_plus_clicked(); - void on_prosecution_minus_clicked(); - void on_prosecution_plus_clicked(); - - void on_text_color_changed(int p_color); - void on_text_color_context_menu_requested(const QPoint &pos); - void set_text_color_dropdown(); - - void on_music_slider_moved(int p_value); - void on_sfx_slider_moved(int p_value); - void on_blip_slider_moved(int p_value); - - void on_log_limit_changed(int value); - void on_pair_offset_changed(int value); - void on_pair_vert_offset_changed(int value); - - void on_ooc_toggle_clicked(); - - void on_witness_testimony_clicked(); - void on_cross_examination_clicked(); - void on_not_guilty_clicked(); - void on_guilty_clicked(); - - void on_change_character_clicked(); - void on_call_mod_clicked(); - void on_settings_clicked(); - - void on_pre_clicked(); - void on_flip_clicked(); - void on_additive_clicked(); - void on_guard_clicked(); - - void on_showname_enable_clicked(); - - void on_evidence_button_clicked(); - void on_evidence_context_menu_requested(const QPoint &pos); - - void on_evidence_delete_clicked(); - bool on_evidence_x_clicked(); - void on_evidence_ok_clicked(); - void on_evidence_switch_clicked(); - void on_evidence_transfer_clicked(); - - void on_evidence_edited(); - - void evidence_close(); - void evidence_switch(bool global); - void on_evidence_save_clicked(); - void on_evidence_load_clicked(); - void evidence_save(QString filename); - void evidence_load(QString filename); - bool compare_evidence_changed(evi_type evi_a, evi_type evi_b); - - void on_back_to_lobby_clicked(); - - void on_char_list_double_clicked(QTreeWidgetItem *p_item, int column); - void on_char_select_left_clicked(); - void on_char_select_right_clicked(); - void on_char_search_changed(); - void on_char_taken_clicked(); - void on_char_passworded_clicked(); - - void on_spectator_clicked(); - - void on_switch_area_music_clicked(); - - void on_application_state_changed(Qt::ApplicationState state); - - void ping_server(); - - // Proceed to parse the oldest chatmessage and remove it from the stack - void chatmessage_dequeue(); - - void preview_emote(QString emote); - void update_emote_preview(); -}; - -#endif // COURTROOM_H diff --git a/include/datatypes.h b/include/datatypes.h deleted file mode 100644 index 3a82efff..00000000 --- a/include/datatypes.h +++ /dev/null @@ -1,136 +0,0 @@ -#ifndef DATATYPES_H -#define DATATYPES_H - -#include -#include - -enum connection_type { - TCP, - WEBSOCKETS, -}; - -static QMap to_connection_type = { - {"tcp", connection_type::TCP}, - {"ws", connection_type::WEBSOCKETS} -}; - -struct server_type { - QString name; - QString desc; - QString ip; - int port; - connection_type socket_type; -}; - -struct emote_type { - QString comment; - QString preanim; - QString anim; - int mod; - QString sfx_name; - int sfx_delay; - int sfx_duration; -}; - -struct char_type { - QString name; - QString description; - QString evidence_string; - bool taken; -}; - -struct evi_type { - QString name; - QString description; - QString image; -}; - -struct chatmessage_type { - QString message; - QString character; - QString side; - QString sfx_name; - QString pre_emote; - QString emote; - int emote_modifier; - int objection_modifier; - int realization; - int text_color; - int evidence; - int cid; - int sfx_delay; - int flip; -}; - -struct area_type { - QString name; - QString background; - bool passworded; -}; - -struct pos_type { - int x; - int y; -}; - -struct pos_size_type { - int x = 0; - int y = 0; - int width = 0; - int height = 0; -}; - -enum CHAT_MESSAGE { - DESK_MOD = 0, - PRE_EMOTE, - CHAR_NAME, - EMOTE, - MESSAGE, - SIDE, - SFX_NAME, - EMOTE_MOD, - CHAR_ID, - SFX_DELAY, - OBJECTION_MOD, - EVIDENCE_ID, - FLIP, - REALIZATION, - TEXT_COLOR, - SHOWNAME, - OTHER_CHARID, - OTHER_NAME, - OTHER_EMOTE, - SELF_OFFSET, - OTHER_OFFSET, - OTHER_FLIP, - IMMEDIATE, - LOOPING_SFX, - SCREENSHAKE, - FRAME_SCREENSHAKE, - FRAME_REALIZATION, - FRAME_SFX, - ADDITIVE, - EFFECTS, -}; - -enum EMOTE_MOD_TYPE { - IDLE = 0, - PREANIM = 1, - ZOOM = 5, - PREANIM_ZOOM = 6, -}; - -enum DESK_MOD_TYPE { - DESK_HIDE = 0, - DESK_SHOW, - DESK_EMOTE_ONLY, - DESK_PRE_ONLY, - DESK_EMOTE_ONLY_EX, - DESK_PRE_ONLY_EX, - //"EX" for "expanded" - //dumb, i know, but throw the first stone if you have a better idea -}; - -enum MUSIC_EFFECT { FADE_IN = 1, FADE_OUT = 2, SYNC_POS = 4 }; - -#endif // DATATYPES_H diff --git a/include/debug_functions.h b/include/debug_functions.h deleted file mode 100644 index 383431ab..00000000 --- a/include/debug_functions.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef DEBUG_FUNCTIONS_H -#define DEBUG_FUNCTIONS_H - -#include -#include - -void call_error(QString message); -void call_notice(QString message); - -#endif // DEBUG_FUNCTIONS_H diff --git a/include/demoserver.h b/include/demoserver.h deleted file mode 100644 index 877d5ccf..00000000 --- a/include/demoserver.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef DEMOSERVER_H -#define DEMOSERVER_H - -#include "aopacket.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -class DemoServer : public QObject -{ - Q_OBJECT -public: - explicit DemoServer(QObject *parent = nullptr); - - bool server_started = false; - int port = 27088; - int max_wait = -1; - - void set_demo_file(QString filepath); - -private: - void handle_packet(AOPacket *packet); - void load_demo(QString filename); - void reset_state(); - - QTcpServer* tcp_server; - QTcpSocket* client_sock = nullptr; - bool client_connected = false; - bool partial_packet = false; - bool debug_mode = false; - QString temp_packet = ""; - QQueue demo_data; - QString sc_packet; - int num_chars = 0; - QString p_path; - QTimer *timer; - int elapsed_time = 0; - QString filename; - -private slots: - void accept_connection(); - void destroy_connection(); - void recv_data(); - void client_disconnect(); - void playback(); - -public slots: - void start_server(); - -signals: - void skip_timers(qint64 msecs); -}; - -#endif // DEMOSERVER_H diff --git a/include/discord-rpc.h b/include/discord-rpc.h deleted file mode 100644 index 455f62aa..00000000 --- a/include/discord-rpc.h +++ /dev/null @@ -1,87 +0,0 @@ -#pragma once -#include - -// clang-format off - -#if defined(DISCORD_DYNAMIC_LIB) -# if defined(_WIN32) -# if defined(DISCORD_BUILDING_SDK) -# define DISCORD_EXPORT __declspec(dllexport) -# else -# define DISCORD_EXPORT __declspec(dllimport) -# endif -# else -# define DISCORD_EXPORT __attribute__((visibility("default"))) -# endif -#else -# define DISCORD_EXPORT -#endif - -// clang-format on - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct DiscordRichPresence { - const char *state; /* max 128 bytes */ - const char *details; /* max 128 bytes */ - int64_t startTimestamp; - int64_t endTimestamp; - const char *largeImageKey; /* max 32 bytes */ - const char *largeImageText; /* max 128 bytes */ - const char *smallImageKey; /* max 32 bytes */ - const char *smallImageText; /* max 128 bytes */ - const char *partyId; /* max 128 bytes */ - int partySize; - int partyMax; - const char *matchSecret; /* max 128 bytes */ - const char *joinSecret; /* max 128 bytes */ - const char *spectateSecret; /* max 128 bytes */ - int8_t instance; -} DiscordRichPresence; - -typedef struct DiscordJoinRequest { - const char *userId; - const char *username; - const char *discriminator; - const char *avatar; -} DiscordJoinRequest; - -typedef struct DiscordEventHandlers { - void (*ready)(void); - void (*disconnected)(int errorCode, const char *message); - void (*errored)(int errorCode, const char *message); - void (*joinGame)(const char *joinSecret); - void (*spectateGame)(const char *spectateSecret); - void (*joinRequest)(const DiscordJoinRequest *request); -} DiscordEventHandlers; - -#define DISCORD_REPLY_NO 0 -#define DISCORD_REPLY_YES 1 -#define DISCORD_REPLY_IGNORE 2 - -DISCORD_EXPORT void Discord_Initialize(const char *applicationId, - DiscordEventHandlers *handlers, - int autoRegister, - const char *optionalSteamId); -DISCORD_EXPORT void Discord_Shutdown(void); - -/* checks for incoming messages, dispatches callbacks */ -DISCORD_EXPORT void Discord_RunCallbacks(void); - -/* If you disable the lib starting its own io thread, you'll need to call this - * from your own */ -#ifdef DISCORD_DISABLE_IO_THREAD -DISCORD_EXPORT void Discord_UpdateConnection(void); -#endif - -DISCORD_EXPORT void Discord_UpdatePresence(const DiscordRichPresence *presence); -DISCORD_EXPORT void Discord_ClearPresence(void); - -DISCORD_EXPORT void Discord_Respond(const char *userid, - /* DISCORD_REPLY_ */ int reply); - -#ifdef __cplusplus -} /* extern "C" */ -#endif diff --git a/include/discord_register.h b/include/discord_register.h deleted file mode 100644 index 655a3dfb..00000000 --- a/include/discord_register.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#if defined(DISCORD_DYNAMIC_LIB) -#if defined(_WIN32) -#if defined(DISCORD_BUILDING_SDK) -#define DISCORD_EXPORT __declspec(dllexport) -#else -#define DISCORD_EXPORT __declspec(dllimport) -#endif -#else -#define DISCORD_EXPORT __attribute__((visibility("default"))) -#endif -#else -#define DISCORD_EXPORT -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -DISCORD_EXPORT void Discord_Register(const char *applicationId, - const char *command); -DISCORD_EXPORT void Discord_RegisterSteamGame(const char *applicationId, - const char *steamId); - -#ifdef __cplusplus -} -#endif diff --git a/include/discord_rich_presence.h b/include/discord_rich_presence.h deleted file mode 100644 index 42de59e2..00000000 --- a/include/discord_rich_presence.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef DISCORD_RICH_PRESENCE_H -#define DISCORD_RICH_PRESENCE_H - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include - -namespace AttorneyOnline { - -class Discord { - Q_DECLARE_TR_FUNCTIONS(Discord) - -private: - const char *APPLICATION_ID = "399779271737868288"; - std::string server_name, server_id; - int64_t timestamp; - -public: - Discord(); - ~Discord(); - - void state_lobby(); - void state_server(std::string name, std::string server_id); - void state_character(std::string name); - void state_spectate(); -}; - -} // namespace AttorneyOnline -#endif // DISCORD_RICH_PRESENCE_H diff --git a/include/discord_rpc.h b/include/discord_rpc.h deleted file mode 100644 index 6bd44041..00000000 --- a/include/discord_rpc.h +++ /dev/null @@ -1,89 +0,0 @@ -#pragma once -#include - -// clang-format off - -#if defined(DISCORD_DYNAMIC_LIB) -# if defined(_WIN32) -# if defined(DISCORD_BUILDING_SDK) -# define DISCORD_EXPORT __declspec(dllexport) -# else -# define DISCORD_EXPORT __declspec(dllimport) -# endif -# else -# define DISCORD_EXPORT __attribute__((visibility("default"))) -# endif -#else -# define DISCORD_EXPORT -#endif - -// clang-format on - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct DiscordRichPresence { - const char *state; /* max 128 bytes */ - const char *details; /* max 128 bytes */ - int64_t startTimestamp; - int64_t endTimestamp; - const char *largeImageKey; /* max 32 bytes */ - const char *largeImageText; /* max 128 bytes */ - const char *smallImageKey; /* max 32 bytes */ - const char *smallImageText; /* max 128 bytes */ - const char *partyId; /* max 128 bytes */ - int partySize; - int partyMax; - const char *matchSecret; /* max 128 bytes */ - const char *joinSecret; /* max 128 bytes */ - const char *spectateSecret; /* max 128 bytes */ - int8_t instance; -} DiscordRichPresence; - -typedef struct DiscordUser { - const char *userId; - const char *username; - const char *discriminator; - const char *avatar; -} DiscordUser; - -typedef struct DiscordEventHandlers { - void (*ready)(const DiscordUser *request); - void (*disconnected)(int errorCode, const char *message); - void (*errored)(int errorCode, const char *message); - void (*joinGame)(const char *joinSecret); - void (*spectateGame)(const char *spectateSecret); - void (*joinRequest)(const DiscordUser *request); -} DiscordEventHandlers; - -#define DISCORD_REPLY_NO 0 -#define DISCORD_REPLY_YES 1 -#define DISCORD_REPLY_IGNORE 2 - -DISCORD_EXPORT void Discord_Initialize(const char *applicationId, - DiscordEventHandlers *handlers, - int autoRegister, - const char *optionalSteamId); -DISCORD_EXPORT void Discord_Shutdown(void); - -/* checks for incoming messages, dispatches callbacks */ -DISCORD_EXPORT void Discord_RunCallbacks(void); - -/* If you disable the lib starting its own io thread, you'll need to call this - * from your own */ -#ifdef DISCORD_DISABLE_IO_THREAD -DISCORD_EXPORT void Discord_UpdateConnection(void); -#endif - -DISCORD_EXPORT void Discord_UpdatePresence(const DiscordRichPresence *presence); -DISCORD_EXPORT void Discord_ClearPresence(void); - -DISCORD_EXPORT void Discord_Respond(const char *userid, - /* DISCORD_REPLY_ */ int reply); - -DISCORD_EXPORT void Discord_UpdateHandlers(DiscordEventHandlers *handlers); - -#ifdef __cplusplus -} /* extern "C" */ -#endif diff --git a/include/eventfilters.h b/include/eventfilters.h deleted file mode 100644 index 7847608d..00000000 --- a/include/eventfilters.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef EVENTFILTERS_H -#define EVENTFILTERS_H - -#include -#include - -class AOLineEditFilter : public QObject -{ - Q_OBJECT -public: - bool preserve_selection = false; - -protected: - bool eventFilter(QObject *obj, QEvent *event) override { - QLineEdit *lineEdit = qobject_cast(obj); - if (event->type() == QEvent::FocusOut && lineEdit != nullptr && preserve_selection) { // lost focus - int start = lineEdit->selectionStart(); - #if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) - int len = lineEdit->selectionLength(); - #else - int len = lineEdit->selectedText().length(); - #endif - if (start != -1 && len != -1) { - lineEdit->setSelection(start, len);\ - return true; - } - } - return false; - } -signals: - void double_clicked(); -}; - - - -#endif // EVENTFILTERS_H diff --git a/include/file_functions.h b/include/file_functions.h deleted file mode 100644 index 31e2e16c..00000000 --- a/include/file_functions.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef FILE_FUNCTIONS_H -#define FILE_FUNCTIONS_H - -#include -#include -#include -#include - -bool file_exists(QString file_path); -bool dir_exists(QString file_path); -bool exists(QString p_path); -QString get_base_path(); - -#endif // FILE_FUNCTIONS_H diff --git a/include/hardware_functions.h b/include/hardware_functions.h deleted file mode 100644 index 05d3f2af..00000000 --- a/include/hardware_functions.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef HARDWARE_FUNCTIONS_H -#define HARDWARE_FUNCTIONS_H - -#include - -#include - -#ifdef ANDROID -#include -#endif - -QString get_hdid(); - -#endif // HARDWARE_FUNCTIONS_H diff --git a/include/interfaces/server_dialog.h b/include/interfaces/server_dialog.h deleted file mode 100644 index 63817d09..00000000 --- a/include/interfaces/server_dialog.h +++ /dev/null @@ -1,21 +0,0 @@ -#include -#pragma once - -#ifndef AO_UI_FAVORITESERVERDIALOG -#define AO_UI_FAVORITESRRVERDIALOG -namespace AttorneyOnline { - namespace UI { - class FavoriteServerDialog : public QDialog { - public: - FavoriteServerDialog() = default; - ~FavoriteServerDialog() = default; - - const QString DEFAULT_UI = "favorite_server_dialog.ui"; - const int TCP_INDEX = 0; - private slots: - virtual void onSavePressed() = 0; - virtual void onCancelPressed() = 0; - }; - } // namespace UI -} // namespace AttorneyOnline -#endif // AO_UI_FAVORITESERVERDIALOG diff --git a/include/lobby.h b/include/lobby.h deleted file mode 100644 index e5d35766..00000000 --- a/include/lobby.h +++ /dev/null @@ -1,107 +0,0 @@ -#ifndef LOBBY_H -#define LOBBY_H - -class QLabel; -class QLineEdit; -class QPushButton; -class QTextBrowser; -class QTreeWidget; -class QTreeWidgetItem; - -#include -#include "networkmanager.h" -#include "file_functions.h" - -#ifdef ANDROID -#include -#endif - -class AOApplication; - -class Lobby : public QMainWindow { - Q_OBJECT -public: - Lobby(AOApplication *p_ao_app, NetworkManager *p_net_man = nullptr); - ~Lobby(); - - void set_player_count(int players_online, int max_players); - void set_server_description(const QString &server_description); - void list_servers(); - int get_selected_server(); - int pageSelected(); - -private: - AOApplication *ao_app; - NetworkManager *net_manager; - - const QString DEFAULT_UI = "lobby.ui"; - - void list_favorites(); - void list_demos(); - void get_motd(); - void check_for_updates(); - void reset_selection(); - - int last_index = -1; - - enum TabPage { SERVER, FAVORITES, DEMOS }; - - // UI-file Lobby - - // Top Row - QLabel *ui_game_version_lbl; - QPushButton *ui_settings_button; - QPushButton *ui_about_button; - - // Server, Favs and Demo lists - QTabWidget *ui_connections_tabview; - - QTreeWidget *ui_serverlist_tree; - QLineEdit *ui_serverlist_search; - - QTreeWidget *ui_favorites_tree; - QLineEdit *ui_favorites_search; - - QTreeWidget *ui_demo_tree; - QLineEdit *ui_demo_search; - - QPushButton *ui_add_to_favorite_button; - QPushButton *ui_add_server_button; - QPushButton *ui_remove_from_favorites_button; - QPushButton *ui_edit_favorite_button; - QPushButton *ui_direct_connect_button; - QPushButton *ui_refresh_button; - - // Serverinfo / MOTD Horizontal Row - QTextBrowser *ui_motd_text; - - QLabel *ui_server_player_count_lbl; - QTextBrowser *ui_server_description_text; - QPushButton *ui_connect_button; - - // Optional Widget - QTextBrowser *ui_game_changelog_text; - - void loadUI(); - - TabPage current_page = SERVER; - -private slots: - void on_tab_changed(int index); - void on_refresh_released(); - void on_direct_connect_released(); - void on_add_to_fav_released(); - void on_add_server_to_fave_released(); - void on_edit_favorite_released(); - void on_remove_from_fav_released(); - void on_about_clicked(); - void on_server_list_clicked(QTreeWidgetItem *p_item, int column); - void on_list_doubleclicked(QTreeWidgetItem *p_item, int column); - void on_favorite_tree_clicked(QTreeWidgetItem *p_item, int column); - void on_server_search_edited(QString p_text); - void on_demo_clicked(QTreeWidgetItem *item, int column); - void onReloadThemeRequested(); // Oh boy. - void onSettingsRequested(); -}; - -#endif // LOBBY_H diff --git a/include/misc_functions.h b/include/misc_functions.h deleted file mode 100644 index 5287bee8..00000000 --- a/include/misc_functions.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef MISC_FUNCTIONS_H -#define MISC_FUNCTIONS_H - -#include -#include - -void delay(int p_milliseconds); - -#endif // MISC_FUNCTIONS_H diff --git a/include/networkmanager.h b/include/networkmanager.h deleted file mode 100644 index 3e37222b..00000000 --- a/include/networkmanager.h +++ /dev/null @@ -1,76 +0,0 @@ -#ifndef NETWORKMANAGER_H -#define NETWORKMANAGER_H - -#include "aoapplication.h" -#include "aopacket.h" - -#include -#include -#include -#include -#include - -#include - -enum MSDocumentType { - PrivacyPolicy, - Motd, - ClientVersion -}; - -class NetworkManager : public QObject { - Q_OBJECT - -private: - AOApplication *ao_app; - QNetworkAccessManager *http; - - union { - QWebSocket *ws; - QTcpSocket *tcp; - } server_socket; - connection_type active_connection_type; - bool connected = false; - - QTimer *heartbeat_timer; - - const QString DEFAULT_MS_BASEURL = "http://servers.aceattorneyonline.com"; - QString ms_baseurl = DEFAULT_MS_BASEURL; - - const int heartbeat_interval = 60 * 5 * 1000; - - bool partial_packet = false; - QString temp_packet = ""; - - unsigned int s_decryptor = 5; - -public: - explicit NetworkManager(AOApplication *parent); - ~NetworkManager() = default; - - void connect_to_server(server_type p_server); - void disconnect_from_server(); - -signals: - void server_connected(bool state); - -public slots: - void get_server_list(); - void ship_server_packet(QString p_packet); - void join_to_server(); - void handle_server_packet(const QString& p_data); - - void request_document(MSDocumentType document_type, - const std::function &cb); - void send_heartbeat(); -private slots: - void ms_request_finished(QNetworkReply *reply); - -private: - QString get_user_agent() const { - return QStringLiteral("AttorneyOnline/%1 (Desktop)") - .arg(ao_app->get_version_string()); - } -}; - -#endif // NETWORKMANAGER_H diff --git a/include/options.h b/include/options.h deleted file mode 100644 index 2beae230..00000000 --- a/include/options.h +++ /dev/null @@ -1,293 +0,0 @@ -#ifndef OPTIONS_H -#define OPTIONS_H - - -#include -#include -#include - -class Options { -private: - /** - * @brief QSettings object for config.ini - */ - QSettings config; - - /** - * @brief QSettings object for favorite_servers.ini - */ - QSettings favorite; - - - void migrateCallwords(); - - /** - * @brief Constructor for options class. - */ - Options(); - - QString m_server_subtheme; - -public: - Options(Options const &) = delete; - void operator=(Options const &) = delete; - - static Options &getInstance() - { - static Options instance; - return instance; - } - - /** - * @brief Migrates old configuration files to the most recent format. - */ - void migrate(); - - // Reads the theme from config.ini and loads it into the currenttheme - // variable - QString theme() const; - void setTheme(QString value); - - int themeScalingFactor() const; - void setThemeScalingFactor(int value); - - // Returns the value of oocname in config.ini - QString oocName() const; - void setOocName(QString value); - - // Returns the blip rate from config.ini (once per X symbols) - int blipRate() const; - void setBlipRate(int value); - - // Returns true if blank blips is enabled in config.ini and false otherwise - bool blankBlip() const; - void setBlankBlip(bool value); - - // Returns true if looping sound effects are enabled in the config.ini - bool loopingSfx() const; - void setLoopingSfx(bool value); - - // Returns true if stop music on objection is enabled in the config.ini - bool objectionStopMusic() const; - void setObjectionStopMusic(bool value); - - // Returns true if streaming is enabled in the config.ini - bool streamingEnabled() const; - void setStreamingEnabled(bool value); - - // Returns the value of defaultmusic in config.ini - int musicVolume() const; - void setMusicVolume(int value); - - // Returns the value of defaultsfx in config.ini - int sfxVolume() const; - void setSfxVolume(int value); - - // Returns the value of defaultblip in config.ini - int blipVolume() const; - void setBlipVolume(int value); - - // Returns the value of suppressaudio in config.ini - int defaultSuppressAudio() const; - void setDefaultSupressedAudio(int value); - - // Returns the value if objections interrupt and skip the message queue - // from the config.ini. - bool objectionSkipQueueEnabled() const; - void setObjectionSkipQueueEnabled(bool value); - - // returns if log will show messages as-received, while viewport will parse - // according to the queue (Text Stay Time) from the config.ini - bool desynchronisedLogsEnabled() const; - void setDesynchronisedLogsEnabled(bool value); - - // Returns the value of whether Discord should be enabled on startup - // from the config.ini. - bool discordEnabled() const; - void setDiscordEnabled(bool value); - - // Returns the value of whether shaking should be enabled. - // from the config.ini. - bool shakeEnabled() const; - void setShakeEnabled(bool value); - - // Returns the value of whether effects should be Enabled. - // from the config.ini. - bool effectsEnabled() const; - void setEffectsEnabled(bool value); - - // Returns the value of whether frame-specific effects defined in char.ini - // should be sent/received over the network. from the config.ini. - bool networkedFrameSfxEnabled() const; - void setNetworkedFrameSfxEnabled(bool value); - - // Returns the value of whether colored ic log should be a thing. - // from the config.ini. - bool colorLogEnabled() const; - void setColorLogEnabled(bool value); - - // Returns the value of whether sticky sounds should be a thing. - // from the config.ini. - bool clearSoundsDropdownOnPlayEnabled() const; - void setClearSoundsDropdownOnPlayEnabled(bool value); - - // Returns the value of whether sticky effects should be a thing. - // from the config.ini. - bool clearEffectsDropdownOnPlayEnabled() const; - void setClearEffectsDropdownOnPlayEnabled(bool value); - - // Returns the value of whether sticky preanims should be a thing. - // from the config.ini. - bool clearPreOnPlayEnabled() const; - void setClearPreOnPlayEnabled(bool value); - - // Returns the value of whether custom chatboxes should be a thing. - // from the config.ini. - // I am increasingly maddened by the lack of dynamic auto-generation system - // for settings. - bool customChatboxEnabled() const; - void setCustomChatboxEnabled(bool value); - - // Returns the value of characer sticker (avatar) setting - bool characterStickerEnabled() const; - void setCharacterStickerEnabled(bool value); - - // Returns the value of whether continuous playback should be used - // from the config.ini. - bool continuousPlaybackEnabled() const; - void setContinuousPlaybackEnabled(bool value); - - // Returns the value of whether stopping music by double clicking category - // should be used from the config.ini. - bool stopMusicOnCategoryEnabled() const; - void setStopMusicOnCategoryEnabled(bool value); - - // Returns the value of the maximum amount of lines the IC chatlog - // may contain, from config.ini. - int maxLogSize() const; - void setMaxLogSize(int value); - - // Current wait time between messages for the queue system - int textStayTime() const; - void setTextStayTime(int value); - - // Returns the letter display speed during text crawl in in-character messages - int textCrawlSpeed() const; - void setTextCrawlSpeed(int value); - - // Returns Minimum amount of time (in miliseconds) that must pass before the - // next Enter key press will send your IC message. (new behaviour) - int chatRateLimit() const; - void setChatRateLimit(int value); - - // Returns whether the log should go upwards (new behaviour) - // or downwards (vanilla behaviour). - bool logDirectionDownwards() const; - void setLogDirectionDownwards(bool value); - - // Returns whether the log should separate name from text via newline or : - bool logNewline() const; - void setLogNewline(bool value); - - // Get spacing between IC log entries. - int logMargin() const; - void setLogMargin(int value); - - // Returns whether the log should have a timestamp. - bool logTimestampEnabled() const; - void setLogTimestampEnabled(bool value); - - // Returns the format string for the log timestamp - QString logTimestampFormat() const; - void setLogTimestampFormat(QString value); - - // Returns whether to log IC actions. - bool logIcActions() const; - void setLogIcActions(bool value); - - // Returns the username the user may have set in config.ini. - QString username() const; - void setUsername(QString value); - - // Returns the audio device used for the client. - QString audioOutputDevice() const; - void setAudioOutputDevice(QString value); - - // Returns whether the user would like to have custom shownames on by default. - bool customShownameEnabled() const; - void setCustomShownameEnabled(bool value); - - // Returns the showname the user may have set in config.ini. - QString shownameOnJoin() const; - void setShownameOnJoin(QString value); - - // Get if text file logging is Enabled - bool logToTextFileEnabled() const; - void setLogToTextFileEnabled(bool value); - - // Get if demo logging is Enabled - bool logToDemoFileEnabled() const; - void setLogToDemoFileEnabled(bool value); - - // Get the subtheme from settings - QString subTheme() const; - QString settingsSubTheme() const; - void setSettingsSubTheme(QString value); - - // Returns the server- - QString serverSubTheme() const; - void setServerSubTheme(QString value); - - // Get if the theme is animated - bool animatedThemeEnabled() const; - void setAnimatedThemeEnabled(bool value); - - // Get the default scaling method - QString defaultScalingMode() const; - void setDefaultScalingMode(QString value); - - // Get a list of custom mount paths - QStringList mountPaths() const; - void setMountPaths(QStringList value); - - // Get whether to opt out of player count metrics sent to the master server - bool playerCountOptout() const; - void setPlayerCountOptout(bool value); - - // Get if sfx can be sent to play on idle - bool playSelectedSFXOnIdle() const; - void setPlaySelectedSFXOnIdle(bool value); - - // Whether opening evidence requires a single or double click - bool evidenceDoubleClickEdit() const; - void setEvidenceDoubleClickEdit(bool value); - - // Supplies an alternative masterserver URL - QString alternativeMasterserver() const; - void setAlternativeMasterserver(QString value); - - // Language the client loads on start. - QString language() const; - void setLanguage(QString value); - - // Callwords notify the user when the word/words are used in a game message. - QStringList callwords() const; - void setCallwords(QStringList value); - - // Clears the configuration file. Essentially restoring it to default. - void clearConfig(); - - // Loads the favorite servers - QVector favorites(); - void setFavorites(QVector value); - - // Interactions with favorite servers - void removeFavorite(int index); - void addFavorite(server_type server); - void updateFavorite(server_type server, int index); - - // Theming Nonesense! - QString getUIAsset(QString f_asset_name); -}; - -#endif // OPTIONS_H diff --git a/include/scrolltext.h b/include/scrolltext.h deleted file mode 100644 index 9ed5ff77..00000000 --- a/include/scrolltext.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef SCROLLTEXT_H -#define SCROLLTEXT_H - -#include -#include -#include -#include -#include - -class ScrollText : public QWidget { - Q_OBJECT - Q_PROPERTY(QString text READ text WRITE setText) - Q_PROPERTY(QString separator READ separator WRITE setSeparator) - -public: - explicit ScrollText(QWidget *parent = nullptr); - -public slots: - QString text() const; - void setText(QString text); - - QString separator() const; - void setSeparator(QString separator); - -protected: - virtual void paintEvent(QPaintEvent *); - virtual void resizeEvent(QResizeEvent *); - -private: - void updateText(); - QString _text; - QString _separator; - QStaticText staticText; - int singleTextWidth; - QSize wholeTextSize; - int leftMargin; - bool scrollEnabled; - int scrollPos; - QImage alphaChannel; - QImage buffer; - QTimer timer; - -private slots: - virtual void timer_timeout(); -}; - -#endif // SCROLLTEXT_H diff --git a/include/text_file_functions.h b/include/text_file_functions.h deleted file mode 100644 index 1da4d925..00000000 --- a/include/text_file_functions.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef TEXT_FILE_FUNCTIONS_H -#define TEXT_FILE_FUNCTIONS_H - -#include "aoapplication.h" -#include "file_functions.h" -#include -#include -#include -#include -#include -#include - -#endif // TEXT_FILE_FUNCTIONS_H diff --git a/include/widgets/add_server_dialog.h b/include/widgets/add_server_dialog.h deleted file mode 100644 index db999bfe..00000000 --- a/include/widgets/add_server_dialog.h +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -#ifndef ADD_SERVER_DIALOG_H -#define ADD_SERVER_DIALOG_H - -#include "interfaces/server_dialog.h" - -class QComboBox; -class QDialogButton; -class QDialogButtonBox; -class QLabel; -class QLineEdit; -class QPlainTextEdit; -class QPushButton; -class QSpinBox; - -class AddServerDialog : public AttorneyOnline::UI::FavoriteServerDialog { - Q_OBJECT -public: - AddServerDialog(); - ~AddServerDialog() = default; - -private: - QWidget *ui_widget; - - QLineEdit *ui_server_display_name_edit; - QLineEdit *ui_server_hostname_edit; - QSpinBox *ui_server_port_box; - QComboBox *ui_server_protocol_box; - QPlainTextEdit *ui_server_description_edit; - QDialogButtonBox *ui_server_dialog_button; - - // Legacy Server UI - QLabel *ui_server_legacy_lbl; - QLineEdit *ui_server_legacy_edit; - QPushButton *ui_server_legacy_load_button; - -private slots: - void onSavePressed() override; - void onCancelPressed() override; - void parseLegacyServerEntry(); -}; - -#endif // ADD_SERVER_DIALOG_H diff --git a/include/widgets/aooptionsdialog.h b/include/widgets/aooptionsdialog.h deleted file mode 100644 index ab366528..00000000 --- a/include/widgets/aooptionsdialog.h +++ /dev/null @@ -1,160 +0,0 @@ -#ifndef AOOPTIONSDIALOG_H -#define AOOPTIONSDIALOG_H - -#include "options.h" - -#include -#include - -class QCheckBox; -class QComboBox; -class QDialogButtonBox; -class QLineEdit; -class QPlainTextEdit; -class QScrollArea; -class QSpinBox; -class QTabWidget; -class QLabel; -class QAbstractButton; - - -#include -#include -#include -#include -#include - -class AOApplication; - -struct OptionEntry { - std::function load; - std::function save; -}; - -class AOOptionsDialog : public QDialog { - Q_OBJECT -public: - explicit AOOptionsDialog(QDialog *parent = nullptr, - AOApplication *p_ao_app = nullptr); - -private: - AOApplication *ao_app; - - // Dialog interaction buttons. Save/Discard/Restore Defaults - QDialogButtonBox *ui_settings_buttons; - - // The gameplay tab - QWidget *ui_settings_widget; - QComboBox *ui_theme_combobox; - QComboBox *ui_subtheme_combobox; - QSpinBox *ui_theme_scaling_factor_sb; - QPushButton *ui_theme_reload_button; - QPushButton *ui_theme_folder_button; - QCheckBox *ui_evidence_double_click_cb; - QCheckBox *ui_animated_theme_cb; - QSpinBox *ui_stay_time_spinbox; - QCheckBox *ui_instant_objection_cb; - QSpinBox *ui_text_crawl_spinbox; - QSpinBox *ui_chat_ratelimit_spinbox; - QFrame *ui_log_names_divider; - QLineEdit *ui_username_textbox; - QCheckBox *ui_showname_cb; - QLineEdit *ui_default_showname_textbox; - QFrame *ui_net_divider; - QLineEdit *ui_ms_textbox; - QCheckBox *ui_discord_cb; - QLabel *ui_language_label; - QComboBox *ui_language_combobox; - QLabel *ui_scaling_label; - QComboBox *ui_scaling_combobox; - QCheckBox *ui_shake_cb; - QCheckBox *ui_effects_cb; - QCheckBox *ui_framenetwork_cb; - QCheckBox *ui_colorlog_cb; - QCheckBox *ui_stickysounds_cb; - QCheckBox *ui_stickyeffects_cb; - QCheckBox *ui_stickypres_cb; - QCheckBox *ui_customchat_cb; - QCheckBox *ui_sticker_cb; - QCheckBox *ui_continuous_cb; - QCheckBox *ui_category_stop_cb; - QCheckBox *ui_sfx_on_idle_cb; - - // The callwords tab - QPlainTextEdit *ui_callwords_textbox; - QCheckBox *ui_callwords_char_textbox; - - // The audio tab - QWidget *ui_audio_tab; - QWidget *ui_audio_widget; - QComboBox *ui_audio_device_combobox; - QSpinBox *ui_suppress_audio_spinbox; - QFrame *ui_volume_blip_divider; - QSpinBox *ui_bliprate_spinbox; - QCheckBox *ui_blank_blips_cb; - QCheckBox *ui_loopsfx_cb; - QCheckBox *ui_objectmusic_cb; - QCheckBox *ui_disablestreams_cb; - - // The asset tab - QListWidget *ui_mount_list; - QPushButton *ui_mount_add; - QPushButton *ui_mount_remove; - QPushButton *ui_mount_up; - QPushButton *ui_mount_down; - QPushButton *ui_mount_clear_cache; - - // The logging tab - QCheckBox *ui_downwards_cb; - QSpinBox *ui_length_spinbox; - QCheckBox *ui_log_newline_cb; - QSpinBox *ui_log_margin_spinbox; - QLabel *ui_log_timestamp_format_lbl; - QCheckBox *ui_log_timestamp_cb; - QComboBox *ui_log_timestamp_format_combobox; - QCheckBox *ui_desync_logs_cb; - QCheckBox *ui_log_ic_actions_cb; - QCheckBox *ui_log_text_cb; - QCheckBox *ui_log_demo_cb; - - /** - * Allows the AO2 master server hoster to go broke. - */ - QWidget *ui_privacy_tab; - QCheckBox *ui_privacy_optout_cb; - QFrame *ui_privacy_separator; - QTextBrowser *ui_privacy_policy; - - bool asset_cache_dirty = false; - - bool needsDefaultAudioDevice(); - void populateAudioDevices(); - void updateValues(); - - QVector optionEntries; - - template - void setWidgetData(T *widget, const V &value); - - template V widgetData(T *widget) const; - - template - void registerOption(const QString &widgetName, V (Options::*getter)() const, - void (Options::*setter)(V)); - -signals: - void reloadThemeRequest(); - -private slots: - void savePressed(); - void discardPressed(); - void buttonClicked(QAbstractButton *button); - void onTimestampFormatEdited(); - void timestampCbChanged(int state); - void onReloadThemeClicked(); - void themeChanged(int i); - void setupUI(); - -}; - -#endif // AOOPTIONSDIALOG_H diff --git a/include/widgets/direct_connect_dialog.h b/include/widgets/direct_connect_dialog.h deleted file mode 100644 index 93175249..00000000 --- a/include/widgets/direct_connect_dialog.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef DIRECT_CONNECT_DIALOG_H -#define DIRECT_CONNECT_DIALOG_H - -#include -#include -#include - -class QLabel; -class QSpinBox; -class QLineEdit; -class QPushButton; -class QComboBox; -class QLabel; -class NetworkManager; - -class DirectConnectDialog : public QDialog { - Q_OBJECT -public: - DirectConnectDialog(NetworkManager* p_net_manager); - ~DirectConnectDialog() = default; - -private slots: - void onConnectPressed(); - void onServerConnected(); - void onConnectTimeout(); - -private: - NetworkManager* net_manager; - - QLineEdit* ui_direct_hostname_edit; - - QLabel* ui_direct_connection_status_lbl; - QPushButton* ui_direct_connect_button; - QPushButton* ui_direct_cancel_button; - - QWidget* ui_widget; - QTimer connect_timeout; - - const int TCP_INDEX = 0; - const QRegularExpression SCHEME_PATTERN{"^\\w+://.+$"}; - const int CONNECT_TIMEOUT = 5 * 1000; - const QString DEFAULT_UI = "direct_connect_dialog.ui";; - -}; - -#endif // DIRECT_CONNECT_DIALOG_H diff --git a/include/widgets/edit_server_dialog.h b/include/widgets/edit_server_dialog.h deleted file mode 100644 index 3c4595ec..00000000 --- a/include/widgets/edit_server_dialog.h +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once - -#ifndef EDIT_SERVER_DIALOG_H -#define EDIT_SERVER_DIALOG_H - -#include "interfaces/server_dialog.h" - -class QPushButton; -class QDialogButton; -class QLabel; -class QLineEdit; -class QComboBox; -class QSpinBox; -class QPlainTextEdit; -class QDialogButtonBox; - -class EditServerDialog : public AttorneyOnline::UI::FavoriteServerDialog { - Q_OBJECT -public: - EditServerDialog(int index); - ~EditServerDialog() = default; - -private: - QWidget *ui_widget; - - QLineEdit *ui_server_display_name_edit; - QLineEdit *ui_server_hostname_edit; - QSpinBox *ui_server_port_box; - QComboBox *ui_server_protocol_box; - QPlainTextEdit *ui_server_description_edit; - QDialogButtonBox *ui_server_dialog_button; - - // Legacy Server UI - QLabel *ui_server_legacy_lbl; - QLineEdit *ui_server_legacy_edit; - QPushButton *ui_server_legacy_load_button; - - int index; - void loadEntry(); - -private slots: - void onSavePressed() override; - void onCancelPressed() override; -}; - -#endif // EDIT_SERVER_DIALOG_H diff --git a/resource/fonts/Ace-Attorney.ttf b/resource/fonts/Ace-Attorney.ttf deleted file mode 100644 index 702049f9..00000000 Binary files a/resource/fonts/Ace-Attorney.ttf and /dev/null differ diff --git a/resource/logo.iconset/icon_1024x1024.png b/resource/logo.iconset/icon_1024x1024.png deleted file mode 100644 index 97c96a4a..00000000 Binary files a/resource/logo.iconset/icon_1024x1024.png and /dev/null differ diff --git a/resource/logo.iconset/icon_128x128.png b/resource/logo.iconset/icon_128x128.png deleted file mode 100644 index b08cc076..00000000 Binary files a/resource/logo.iconset/icon_128x128.png and /dev/null differ diff --git a/resource/logo.iconset/icon_128x128@2x.png b/resource/logo.iconset/icon_128x128@2x.png deleted file mode 100644 index 355253d3..00000000 Binary files a/resource/logo.iconset/icon_128x128@2x.png and /dev/null differ diff --git a/resource/logo.iconset/icon_16x16.png b/resource/logo.iconset/icon_16x16.png deleted file mode 100644 index e0e088dc..00000000 Binary files a/resource/logo.iconset/icon_16x16.png and /dev/null differ diff --git a/resource/logo.iconset/icon_16x16@2x.png b/resource/logo.iconset/icon_16x16@2x.png deleted file mode 100644 index 01bab863..00000000 Binary files a/resource/logo.iconset/icon_16x16@2x.png and /dev/null differ diff --git a/resource/logo.iconset/icon_256x256.png b/resource/logo.iconset/icon_256x256.png deleted file mode 100644 index 355253d3..00000000 Binary files a/resource/logo.iconset/icon_256x256.png and /dev/null differ diff --git a/resource/logo.iconset/icon_256x256@2x.png b/resource/logo.iconset/icon_256x256@2x.png deleted file mode 100644 index 4191c2f8..00000000 Binary files a/resource/logo.iconset/icon_256x256@2x.png and /dev/null differ diff --git a/resource/logo.iconset/icon_32x32.png b/resource/logo.iconset/icon_32x32.png deleted file mode 100644 index 01bab863..00000000 Binary files a/resource/logo.iconset/icon_32x32.png and /dev/null differ diff --git a/resource/logo.iconset/icon_32x32@2x.png b/resource/logo.iconset/icon_32x32@2x.png deleted file mode 100644 index c4e28ad2..00000000 Binary files a/resource/logo.iconset/icon_32x32@2x.png and /dev/null differ diff --git a/resource/logo.iconset/icon_512x512.png b/resource/logo.iconset/icon_512x512.png deleted file mode 100644 index 4191c2f8..00000000 Binary files a/resource/logo.iconset/icon_512x512.png and /dev/null differ diff --git a/resource/logo.iconset/icon_512x512@2x.png b/resource/logo.iconset/icon_512x512@2x.png deleted file mode 100644 index 97c96a4a..00000000 Binary files a/resource/logo.iconset/icon_512x512@2x.png and /dev/null differ diff --git a/resource/logo.iconset/icon_64x64.png b/resource/logo.iconset/icon_64x64.png deleted file mode 100644 index c4e28ad2..00000000 Binary files a/resource/logo.iconset/icon_64x64.png and /dev/null differ diff --git a/resource/logo.iconset/icon_64x64@2x.png b/resource/logo.iconset/icon_64x64@2x.png deleted file mode 100644 index b08cc076..00000000 Binary files a/resource/logo.iconset/icon_64x64@2x.png and /dev/null differ diff --git a/resource/logo_ao2.icns b/resource/logo_ao2.icns deleted file mode 100644 index fb2456c8..00000000 Binary files a/resource/logo_ao2.icns and /dev/null differ diff --git a/resource/logo_ao2.ico b/resource/logo_ao2.ico deleted file mode 100644 index b40e7866..00000000 Binary files a/resource/logo_ao2.ico and /dev/null differ diff --git a/resource/logo_ao2.png b/resource/logo_ao2.png deleted file mode 100644 index f53fe30c..00000000 Binary files a/resource/logo_ao2.png and /dev/null differ diff --git a/resource/logo_ao2.rc b/resource/logo_ao2.rc deleted file mode 100644 index ed785de8..00000000 --- a/resource/logo_ao2.rc +++ /dev/null @@ -1 +0,0 @@ -IDI_ICON1 ICON "logo_ao2.ico" diff --git a/resource/logo_kfo.ico b/resource/logo_kfo.ico deleted file mode 100644 index 3c68adff..00000000 Binary files a/resource/logo_kfo.ico and /dev/null differ diff --git a/resource/logo_kfo.png b/resource/logo_kfo.png deleted file mode 100644 index d8001233..00000000 Binary files a/resource/logo_kfo.png and /dev/null differ diff --git a/resource/translations/ao_de.qm b/resource/translations/ao_de.qm deleted file mode 100644 index 0c5e8fd9..00000000 Binary files a/resource/translations/ao_de.qm and /dev/null differ diff --git a/resource/translations/ao_de.ts b/resource/translations/ao_de.ts deleted file mode 100644 index cc476bad..00000000 --- a/resource/translations/ao_de.ts +++ /dev/null @@ -1,1929 +0,0 @@ - - - - - AOApplication - - - Disconnected from server. - Vom Server getrennt. - - - - Loading - Laden - - - - Loading music: -%1/%2 - Lade Musik: -%1/%2 - - - - Loading chars: -%1/%2 - Lade Charaktere: -%1/%2 - - - - Attorney Online %1 - Attorney Online %1 - - - - [Global log] - [Globaler Log] - - - - You have been kicked from the server. -Reason: %1 - Du wurdest von diesem Server geschmissen. -Grund: %1 - - - - You have been banned from the server. -Reason: %1 - Du wurdest von diesem Server verbannt. -Grund: %1 - - - - You are banned on this server. -Reason: %1 - Du bist von diesem Server verbannt. -Grund: %1 - - - - Demo playback - Demo Wiedergabe - - - - Play back demos you have previously recorded - Spielt Demo Dateien welche vorher aufgenommen wurden - - - - AOCaseAnnouncerDialog - - - Case Announcer - Fallansager - - - - Case title: - Fallname: - - - - Defense needed - Verteidiger benötigt - - - - Prosecution needed - Kläger benötigt - - - - Judge needed - Richter benötigt - - - - Jurors needed - Jury benötigt - - - - Stenographer needed - Stenograph benötigt - - - - AOOptionsDialog - - - - Log timestamp format: - - Log Zeitstempel Format: - - - - - Pixel - Pixel - - - - Smooth - Glatt - - - - Couldn't get the privacy policy. - Datenschutz-Bestimmungen konnten nicht abgerufen werden. - - - - Select a base folder - Wähle ein base Ordner - - - - Getting privacy policy... - Lade Datenschutz-Bestimmungen... - - - - %1 (default) - %1 (Standard) - - - - Courtroom - - - Password - Passwort - - - - Spectator - Zuschauer - - - - - Search - Suche - - - - Passworded - Gesperrt - - - - Taken - Benutzt - - - - - Could not find character (char.ini) for %1 - Charakter (char.ini) nicht gefunden für %1 - - - - Generating chars: -%1/%2 - Generiere Charaktere: -%1/%2 - - - - Showname - Anzeigename - - - - Name - Name - - - - Pre - Vor - - - - Flip - Spiegeln - - - - Guard - Wache - - - - - Casing - Fall - - - - Shownames - Anzeigenamen - - - - Immediate - Keine Unterbrechung - - - - Music - Musik - - - - Sfx - Sfx - - - - Blips - Blips - - - - - Server - Server - - - - Change character - Charakter ändern - - - - Reload theme - Aussehen neu laden - - - - Call mod - Moderator rufen - - - - Settings - Einstellungen - - - - A/M - A/M - - - - Preanim - Voranimation - - - - Back to Lobby - Zurück zur Lobby - - - - You were granted the Disable Modcalls button. - Du hast nun den "Modcall deaktivieren" Knopf. - - - - You have been banned. - Du wurdest verbannt. - - - - - None - Keine - - - - Message in-character - Nachricht als Charakter - - - - Message out-of-character - Nachricht out-of-character - - - - Additive - Hinzufügend - - - - To front - Vorne - - - - To behind - Hinten - - - - Log goes down - Log geht nach unten - - - - Log goes up - Log geht nach oben - - - - Select a character you wish to pair with. - Wähle einen Charakter mit dem du gepaart sein möchtest. - - - - Change the order of appearance for your character. - Ändere die Reihenfolge in der die Charaktere erscheinen. - - - - Display the list of characters to pair with. - Zeigt die Liste der paarbaren Charaktere. - - - - Oops, you're muted! - Ohje, du bist stumm! - - - - Set your character's emote to play on your next message. - Setzt den Ausdruck für die nächste Nachricht. - - - - Set your character's supplementary background. - Setzt die Position des Charakters. - - - - Change the horizontal percentage offset of your character's position from the center of the screen. - Ändert den Hoizontalen Abstand relativ zur Mitte. - - - - Change the vertical percentage offset of your character's position from the center of the screen. - Ändert den vertikalen Abstand relativ zur Mitte. - - - - Reset your character's supplementary background to its default. - Setzt den Zusatzhintergrund deines Charakters zurück. - - - - Set an 'iniswap', or an alternative character folder to refer to from your current character. -Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini - Setz einen 'iniswap', oder einen anderen Charakterordner von deinem aktuellen Charakter. -Bearbeiten durch tippen und Enter drücken, [X] zum entfernen. Das wird in base/iniswaps.ini gespeichert. - - - - Remove the currently selected iniswap from the list and return to the original character folder. - Entfernt den aktuellen iniswap von der Liste und stellt den originalen Ordner wieder her. - - - - Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). -Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini - Wähle einen Soundeffekt der bei der nächsten 'Preanim' gespielt wird. Lasse dies auf Standard um den emote-Sound zu verwenden. -Bearbeiten durch tippen und Enter drücken, [X] zum entfernen. Das wird in base/characters/<charname>/soundlist.ini gespeichert. - - - - Remove the currently selected sound effect. - Entfernt den aktuell ausgewählten Soundeffekt. - - - - Choose an effect to play on your next spoken message. -The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by -char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. - Wähle einen Effekt für die nächste Nachricht. -Die Effekte sind definiert in theme/effects/effects.ini. Dein Charakter kann eigene Effekte in der -char.ini [Options] Kategorie, effects = 'miscname' haben welcher dann misc/<miscname>/effects.ini liest. - - - - Hold It! - Moment mal! - - - - - - When this is turned on, your next in-character message will be a shout! - Wenn dies an ist, wird die Nächste Nachricht ein Zuruf! - - - - Objection! - Einspruch! - - - - Take That! - Nimm das! - - - - Toggle between server chat and global AO2 chat. - Wechselt zwischen Serverchat und AO2 Chat. - - - - - - - This will display the animation in the viewport as soon as it is pressed. - Dies zeigt die Animation im Spielfeld sobald es angeklickt wird. - - - - Guilty! - Schuldig! - - - - Bring up the Character Select Screen and change your character. - Zeige die Charakterauswahl und ändere deinen Charakter. - - - - Refresh the theme and update all of the ui elements to match. - Aktualisiert das Design und alle UI Elemente. - - - - Request the attention of the current server's moderator. - Fordere einen Moderator an. - - - - Allows you to change various aspects of the client. - Lässt dich verschiedene Dinge des Clients anpassen. - - - - An interface to help you announce a case (you have to be a CM first to be able to announce cases) - Ein Menü um einen Fall anzukündigen (du musst dafür erst CM sein) - - - - Switch between Areas and Music lists - Wechsel zwischen Areal- und Musikliste - - - - Play a single-shot animation as defined by the emote when checked. - Zeigt eine Animation vor dem Sprechen. - - - - If preanim is checked, display the input text immediately as the animation plays concurrently. - Starte sofort zu sprechen, ohne auf das Ende der Voranimation zu warten. - - - - Mirror your character's emotes when checked. - Spiegelt die Emotes deines Charakters. - - - - Add text to your last spoken message when checked. - Füge Text zu deiner letzten Nachricht hinzu. - - - - Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. - Ignoriere Modcalls und spiel keinen Ton ab. - - - - Lets you receive case alerts when enabled. -(You can set your preferences in the Settings!) - Lässt dich Fallalarme erhalten. -(Du kannst dies in den Einstellungen anpassen!) - - - - Display customized shownames for all users when checked. - Zeigt selbst einstellbare Namen für alle. - - - - Custom Shout! - Eigener Zwischenruf! - - - - This will display the custom character-defined animation in the viewport as soon as it is pressed. -To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect - Dies zeigt des Charakters eigenen Zwischenruf. -Um einen zu haben muss im Charakterordner eine custom.[webp/apng/gif/png] und ein custom.[wav/ogg/opus] Soundeffekt sein - - - - Play realization sound and animation in the viewport on the next spoken message when checked. - Spiele den Realisierung Sound und Animation mit der nächsten Nachricht. - - - - Shake the screen on next spoken message when checked. - Schüttelt den Bildschirm bei der nächsten Nachricht. - - - - Display the list of character folders you wish to mute. - Zeigt die Charakterliste um einen stumm zu schalten. - - - - - Increase the health bar. - Erhöhe die Gesundheit. - - - - - Decrease the health bar. - Verringere die Gesundheit. - - - - Change the text color of the spoken message. -You can also select a part of your currently typed message and use the dropdown to change its color! - Ändert die Textfarbe. -Du kannst auch nur einen Teil der Nachricht auswählen und dessen Farbe ändern! - - - - Return back to the server list. - Zurück zur Serverliste. - - - - Become a spectator. You won't be able to interact with the in-character screen. - Werde ein Zuschauer. Es ist dir nicht möglich mit dem Spielfeld zu interagieren. - - - - - - - CLIENT - CLIENT - - - - Login unsuccessful. - Login erfolgreich. - - - - You were logged out. - Du wurdest ausgeloggt. - - - - HOLD IT! - MOMENT MAL! - - - - OBJECTION! - EINSPRUCH! - - - - TAKE THAT! - NIMM DAS! - - - - CUSTOM OBJECTION! - SPEZIALRUF! - - - - - - - - shouts - Zwischenruf - - - - - - - has presented evidence - hat Beweis präsentiert - - - - - - has stopped the music - hat die Musik angehalten - - - - [LOADING] %1 - [LADEN] %1 - - - - Debug - Debug - - - - - has played a song - spielte ein Lied - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. - Du hattest keinen 'base/cases' Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird. - - - - You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. -Cases you can load: %1 - Du musst einen Dateinamen angeben (ohne .ini). Stelle sicher das er im 'base/cases' Ordner ist und das er korrekt formatiert ist. -Verfügbare Fälle: %1 - - - - Case made by %1. - Fall von %1. - - - - Navigate to %1 for the CM doc. - Gehe zu %1 für das CM Dokument. - - - - - UNKNOWN - UNBEKANNT - - - - Your case "%1" was loaded! - Dein Fall "%1" wurde geladen! - - - - Too many arguments to load a case! You only need one filename, without extension. - Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung. - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. - Du hattest keinen 'base/cases' Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird. - - - - You need to give a filename to save (extension not needed) and the courtroom status! - Du musst einen Dateinamen (ohne Erweiterung) angebenn, sowie den Gebietsstatus! - - - - Too many arguments to save a case! You only need a filename without extension and the courtroom status! - Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung sowie den Gebietsstatus! - - - - Succesfully saved, edit doc and cmdoc link on the ini! - Erfolgreich gespeichert! - - - - Stop Current Song - Lied stoppen - - - - Play Random Song - Zufälliges Lied - - - - Expand All Categories - Alle Kategorien erweitern - - - - Collapse All Categories - Alle Kategorien verstecken - - - - Fade Out Previous - Vorheriges ausblenden - - - - Fade In - Einblenden - - - - Synchronize - Synchronisieren - - - - Default - Standard - - - - Reason: - Grund: - - - - Call Moderator - Moderator rufen - - - - - Error - Fehler - - - - You must provide a reason. - Du musst einen Grund angeben. - - - - The message is too long. - Die Nachricht ist zu lang. - - - - Choose.. - Wähle.. - - - - Present this piece of evidence to everyone on your next spoken message - Präsentiere dieses Beweisstück allen in der nächsten Nachricht - - - - Save evidence to an .ini file. - Speichere Beweise in einer .ini Datei. - - - - Load evidence from an .ini file. - Lade Beweise aus einer .ini Datei. - - - - Destroy this piece of evidence - Zerstöre dieses Beweisstück - - - - Close the evidence display/editing overlay. -You will be prompted if there's any unsaved changes. - Schließe das Beweisfenster. -Du wirst gefragt wenn es ungespeicherte Änderungen gibt. - - - - Save any changes made to this piece of evidence and send them to server. - Speichert alle Änderungen an diesem Beweisstück und schickt sie zum Server. - - - - Click to edit. Press [X] to update your changes. - Klick zum editieren. Drücke [X] zum speichern deiner Änderungen. - - - - Bring up the Evidence screen. - Zeigt die Beweisliste. - - - - Switch evidence to private inventory. - Wechselt zum eigenen Inventar. - - - - Switch evidence to global inventory. - Wechselt zum globalen Inventar. - - - - - Transfer evidence to private inventory. - Übertrage Beweisstück zum eigenen Inventar. - - - - - Transfer evidence to global inventory. - Übertrage Beweisstück zum globalen Inventar. - - - - The piece of evidence you've been editing has changed. - Das Beweisstück das du bearbeitet hast hat sich verändert. - - - - Do you wish to keep your changes? - Möchtest du deine Änderungen behalten? - - - - Name: %1 -Image: %2 -Description: -%3 - Name: %1 -Bild: %2 -Beschreibung: -%3 - - - - Images (*.png) - Bilder (*.png) - - - - - - Click to edit... - Klicken zum bearbeiten... - - - - Add new evidence... - Neues Beweisstück... - - - - Evidence has been modified. - Beweise wurden verändert. - - - - Do you want to save your changes? - Möchtest du deine Änderungen speichen? - - - - Current evidence is global. Click to switch to private. - Beweise sind global. Klicken um zu eigenen zu wechseln. - - - - Current evidence is private. Click to switch to global. - Beweise sind die eigenen. Klicken um zu global zu wechseln. - - - - "%1" has been transferred. - "%1" wurde übertragen. - - - - Save Inventory - Inventar speichen - - - - - Ini Files (*.ini) - Ini Dateien (*.ini) - - - - Open Inventory - Inventar öffnen - - - - DemoServer - - - - Load Demo - Demo laden - - - - - Demo Files (*.demo) - Demos (*.demo) - - - - - Demo file loaded. Send /play or > in OOC to begin playback. - Demo geladen. Sende /play oder > in OOC um Wiedergabe zu beginnen. - - - - Resuming playback. - Wiedergabe fortsetzen. - - - - Pausing playback. - Wiedergabe pausieren. - - - - Setting max_wait to - Setze max_wait zu - - - - - milliseconds. - millisekunden. - - - - Not a valid integer! - Kein valider Integer! - - - - Current max_wait is - Aktueller max_wait ist - - - - Current demo file reloaded. Send /play or > in OOC to begin playback. - Demo Datei neugeladen. Sende /play or > in OOC um die Wiedergabe zu beginnen. - - - - min_wait is deprecated. Use the client Settings for minimum wait instead! - min_wait ist veraltet. Benutze die Client Einstellung Standzeit! - - - - Setting debug mode to %1 - Setze Debug Modus zu %1 - - - - Valid values are 1 or 0! - Gültige Werte sind 1 oder 0! - - - - Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. - - - - - Available commands: -load, reload, play, pause, max_wait, debug, help - Verfügbate Kommandos: -load, reload, play, pause, max_wait, debug, help - - - - Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. - Ende der Demo Datei erreicht. Sende /play oder > um die Wiedergabe neuzustarten oder /load um eine neue Datei zu öffnen. - - - - Lobby - - - Attorney Online %1 - Attorney Online %1 - - - - Search - Suche - - - - It doesn't look like your client is set up correctly. -Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - Dein Client ist nicht korrekt eingerichtet. -Hast du ALLES von tiny.cc/getao heruntergeladen und entpackt, auch den großen 'base' Ordner? - - - - Version: %1 - Version: %1 - - - - Settings - Einstellungen - - - - Allows you to change various aspects of the client. - Erlaubt es verschiedene Aspekte des Clients zu ändern. - - - - Loading - Laden - - - - Cancel - Abbrechen - - - - <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving, TrickyLeifa, Salanto<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>Wiso, dyviacat (2.10 release); CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2022 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 - - - - - Remove - Entfernen - - - - Couldn't get the message of the day. - Fehler beim abrufen der Nachricht des Tages. - - - - Version: %1 (!) - Version: %1 (!) - - - - New version available: %1 - Neue Version verfügbar: %1 - - - - Yes - Ja - - - - No - Nein - - - - About - Über - - - - Online: %1/%2 - Online: %1/%2 - - - - - - Offline - Offline - - - - NetworkManager - - - No description provided. - Keine Beschreibung erhalten. - - - - QDialogButtonBox - - - - OK - OK - - - - QObject - - - [MISSING] Streaming disabled. - [FEHLT] Streaming deaktiviert. - - - - None - Keine - - - - [MISSING] %1 - [FEHLT] %1 - - - - [STREAM] %1 - [STREAM] %1 - - - - chatlogpiece - - - - - UNKNOWN - UNBEKANNT - - - - debug_functions - - - Error: %1 - Fehler: %1 - - - - Error - Fehler - - - - Notice - Hinweis - - - - optionsdialogue - - - Settings - Einstellungen - - - - Gameplay - Spiel - - - - Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. - Stoppt die Musik wenn eine Kategorie doppelt geklickt wird. Wenn dies deaktiviert ist, benutze die Rechte Maustaste und das Kontextmenü um die Musik anzuhalten. - - - - Stop Music w/ Category: - Musik durch eine Kategorie stoppen: - - - - Sets the default scaling method, if there is not one already defined specifically for the character. - - - - - Scaling: - Skalierung: - - - - Turn this on to allow characters to define their own custom chat box designs. - Charaktere können ihre eigenen Chatboxen verwenden. - - - - Custom Chatboxes: - Eigene Chatboxen: - - - - Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Erlaubt Bildeffekte. Deaktiviere dies falls du Bedenken wegen Photosensitivität hast. - - - - Allow Effects: - Effekte erlauben: - - - - Open the theme folder of the currently selected theme. - Öffnet den Ordner des aktuell ausgewählten Theme. - - - - Open Theme Folder - Öffne Theme Ordner - - - - Overrides the base URL to retrieve server information from. - Überschreibt die Standard URL für den Abruf von Server Informationen. - - - - Alternate Server List: - Alternative Serverliste: - - - - Instant Objection: - Zwischenrufe sofort: - - - - - - ms - ms - - - - Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the Lobby for the changes to take effect, such as by joining a server and leaving it. - - - - - Theme: - Theme: - - - - - Keep current setting - - - - - - - Default - - - - - en - English - - - - - de - Deutsch - - - - - es - Español - - - - - pt - Português - - - - - pl - Polskie - - - - - jp - 日本語 - - - - - ru - Русский - - - - - Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. - Sendet schüttel, Blitze und Geräusche aus der char.ini Datei über das Netzwerk. Funkioniert nur wenn der Server dies unterstützt. - - - - Network Frame Effects: - Netzwerk Frame-Effekte: - - - - Chat Rate Limit: - Chat Rate Limit: - - - - If ticked, themes will be allowed to have animated elements. - Aktiviert animierte Theme Elemente. - - - - Animated Theme: - Animiertes Theme: - - - - Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. - Zeit (in Milisekunden) für jeden Buchstaben. - - - - Text crawl: - Kriechender Text: - - - - Refresh the theme and update all of the ui elements to match. - Aktualisiert das Design und alle UI Elemente. - - - - Reload Theme - Aussehen neu laden - - - - Your showname will be automatically set to this value when you join a server. - Dein Anzeigename wird automatisch gesetzt wenn du einem Server beitritts. - - - - Default showname: - Standard Anzeigename: - - - - Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). - An zeigt 'Sticker' an, kleine Bilder wie Avatare. - - - - Stickers: - Sticker: - - - - Turn this on to prevent preanimation checkbox from clearing after playing the emote. - Aktiviere dies damit das Kontrollkästchen für die Voranimation nicht zurückspringt nachdem sie abgespielt wurde. - - - - Sticky Preanims: - Klebende Voranimation: - - - - Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. - Standardwert für die Anzeigename Box, welche den In-Charakter Namen bestimmt. - - - - Custom shownames: - Eigener Anzeigename: - - - - Turn this on to prevent the effects dropdown from clearing the effect after playing it. - Aktiviere dies damit die Effektauswahl nicht zurückspringt nachdem er abgespielt wurde. - - - - Sticky Effects: - Klebende Effekt: - - - - Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. - Minimale Zeit (in Milisekunden) die eine IC Nachricht auf dem Bildschirm bleibt bevore die nächste kommt, wie eine Art 'Warteschlange'. 0 deaktiviert das. - - - - Text Stay Time: - Standzeit: - - - - Sets the language if you don't want to use your system language. - Setzte die Sprache falls du nicht die Systemsprache verwenden möchtest. - - - - Language: - Sprache: - - - - If the SFX dropdown has an SFX selected, send the custom SFX alongside the message even if Preanim is OFF. - - - - - Always Send SFX: - SFX immer senden: - - - - Turn this on to prevent the sound dropdown from clearing the sound after playing it. - Aktiviere dies damit die Geräuschauswahl nicht zurückspringt nachdem es abgespielt wurde. - - - - Sticky Sounds: - Klebende Geräuschauswahl: - - - - Your OOC name will be automatically set to this value when you join a server. - Dein OOC Name wird automatisch auf dies gesetzt. - - - - Default username: - Standard Benutzername: - - - - Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Erlaubt schütteln des Bildschirms. Deaktiviere dies falls du Bedenken wegen Photosensitivität hast. - - - - Allow Screenshake: - Schütteln erlauben: - - - - Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. - Erlaubt anderen auf Discord zu sehen auf welchem Server du spielst, welchen Charakter du spielst und wie lange. - - - - Discord: - Discord: - - - - Use the markup colors in the server IC chatlog. - Verwendet Farbe im IC Log so wie im Bild. - - - - Colors in IC Log: - Farben im IC Log: - - - - Sets a 'subtheme', which will stack on top of the current theme and replace anything it can. Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. - - - - - Subtheme: - Untertheme: - - - - If ticked, Evidence needs a double-click to view rather than a single click. - - - - - Evidence Double Click: - Doppelklick für Beweise: - - - - Whether or not to resume playing animations from where they left off. Turning off might reduce lag. - Spielt Animationen wieder dort ab wo sie aufgehört haben. Ausschalten kann bei Lag helfen. - - - - Continuous Playback: - Durchgehendes Abspielen: - - - - Callwords - Alarmwörter - - - - <html><head/><body><p>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br/><br/>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</p></body></html> - - - - - Audio - Audio - - - - Audio device: - Audiogerät: - - - - Sets the music's default volume. - Setzt die Musiklautstärke. - - - - Music: - Musik: - - - - - - - % - - - - - Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - Setzt die Lautstärke der Soundeffekte wie Einsprüche und die Geräusche der Charaktere. - - - - SFX: - SFX: - - - - Sets the volume of the blips, the talking sound effects. - Setzt die Lautstärke der Blips, das ist das Geräusch das die Charaktere beim Reden machen. - - - - Blips: - Blips: - - - - How much of the volume to suppress when client is not in focus. - - - - - Suppress Audio: - - - - - Sets the delay between playing the blip sounds. - Setzt die Pause zwischen einzelnen Blips. - - - - Blip rate: - Bliprate: - - - - Play a blip sound \"once per every X symbols\", where X is the blip rate. 0 plays a blip sound only once. - - - - - If true, the game will play a blip sound even when a space is 'being said'. - Wenn angehakt wird das Spiel auch bei einem Leerzeichen einen Blip machen. - - - - Blank blips: - Leere Blips: - - - - If true, the game will allow looping sound effects to play on preanimations. - Wenn aktiviert, werden wiederholende Soundeffekte bei den Voranimationen erlaubt. - - - - Enable Looping SFX: - Wiederholende Soundeffekte: - - - - If true, AO2 will ask the server to stop music when you use 'Objection!' - - - - - Kill Music On Objection: - Stoppe Musik bei Einspruch: - - - - If true, AO2 will not play any streamed audio and show that streaming is disabled. - - - - - Disable Music Streaming: - - - - - - Casing - - - - - Pretty self-explanatory. - Eigentlich selbsterklärend. - - - - This server does not support case alerts. - Dieser Server unterstützt Fallalarme nicht. - - - - If checked, you will get alerts about case announcements. - Wenn angehakt wirst du benachrichtigt wenn ein Fall angekündigt wird. - - - - If checked, you will get alerts about case announcements if a defense spot is open. - Wenn angehakt wirst du benachrichtigt wenn ein Verteidiger benötigt wird. - - - - Defense - - - - - If checked, you will get alerts about case announcements if a juror spot is open. - Wenn angehakt wirst du benachrichtigt wenn eine Jury benötigt wird. - - - - Juror - - - - - If checked, you will get alerts about case announcements if a stenographer spot is open. - Wenn angehakt wirst du benachrichtigt wenn ein Stenograph benötigt wird. - - - - Stenographer - - - - - If checked, you will appear amongst the potential CMs on the server. - Wenn angehakt wirst du als potentielle CM angezeigt. - - - - Case Master - - - - - If you're a CM, enter what cases you are willing to host. - Wenn du CM bist, gib ein welche Fälle du spielen möchtest. - - - - Hosting cases: - Fallleitung: - - - - If checked, you will get alerts about case announcements if a prosecutor spot is open. - Wenn angehakt wirst du benachrichtigt wenn ein Kläger benötigt wird. - - - - Prosecution - - - - - If checked, you will get alerts about case announcements if the judge spot is open. - Wenn angehakt wirst du benachrichtigt wenn ein Richter benötigt wird. - - - - Judge - - - - - Assets - - - - - <html><head/><body><p>Add or remove base folders for use by assets.</p><p><br/>Base folders on the bottom are prioritized over those above them.</p></body></html> - - - - - ↓ - - - - - Remove - - - - - ↑ - - - - - Add... - - - - - Clears the lookup cache for assets. -Use this when you have added an asset that takes precedence over another existing asset. - - - - - Clear Cache - - - - - Logging - - - - - If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. - Wenn angehakt werden neue Nachrichten unten erscheinen (wie beim OOC). Das traditionelle (AO1) Verhalten wäre nicht angehakt. - - - - Log goes downwards: - Verlauf geht nach unten: - - - - The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. - Die menge an Zeilen die das IC Log behält bevor ältere Nachrichten gelöscht werden. 0 bedeutet unendlich. - - - - Log length: - Länge: - - - - entries - - - - - If ticked, new messages will appear separated, with the message coming on the next line after the name. -When unticked, it displays it as 'name: message'. - - - - - Log newline: - Absätze protokollieren: - - - - The distance in pixels between each entry in the IC log. -Default: 0. - - - - - Log margin: - Protokollabstand: - - - - px - - - - - If ticked, log will contain a timestamp in UTC before the name. - Das Protokoll enthält vor dem Namen einen Zeitstempel in UTC. - - - - Log timestamp: - Zeitstempel: - - - - Log timestamp format: - - - - - - h:mm:ss AP - - - - - hh:mm:ss - - - - - h:mm AP - - - - - hh:mm - - - - - If ticked, log will show IC actions such as shouting and presenting evidence. - Protokolliert Charakteraktionen wie Zwischenrufe und Beweisstücke. - - - - Log IC actions: - Aktionen protokollieren: - - - - If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). - Wenn angehakt werden die Nachrichten sofort im Protokoll angezeigt, ansonsten wartet es auf den Chat. - - - - Desynchronize IC Logs: - Protokoll desynchronisieren: - - - - Text logs of gameplay will be automatically written in the /logs folder. - - - - - Log to Text Files: - - - - - Gameplay will be automatically recorded as demos in the /logs folder. - - - - - Log to Demo Files: - - - - - Privacy - - - - - Do not include me in public player counts - - - - diff --git a/resource/translations/ao_en.qm b/resource/translations/ao_en.qm deleted file mode 100644 index 937ea3e7..00000000 Binary files a/resource/translations/ao_en.qm and /dev/null differ diff --git a/resource/translations/ao_en.ts b/resource/translations/ao_en.ts deleted file mode 100644 index 1d0b217f..00000000 --- a/resource/translations/ao_en.ts +++ /dev/null @@ -1,1773 +0,0 @@ - - - - - AOApplication - - - Disconnected from server. - - - - - Loading - - - - - Loading music: -%1/%2 - - - - - Loading chars: -%1/%2 - - - - - Attorney Online %1 - - - - - [Global log] - - - - - You have been kicked from the server. -Reason: %1 - - - - - You have been banned from the server. -Reason: %1 - - - - - You are banned on this server. -Reason: %1 - - - - - Demo playback - - - - - Play back demos you have previously recorded - - - - - AOCaseAnnouncerDialog - - - Case Announcer - - - - - Case title: - - - - - Defense needed - - - - - Prosecution needed - - - - - Judge needed - - - - - Jurors needed - - - - - Stenographer needed - - - - - AOOptionsDialog - - - Settings - - - - - Gameplay - - - - - Theme: - - - - - Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. - - - - - Log goes downwards: - - - - - If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. - - - - - Log length: - - - - - Default username: - - - - - Your OOC name will be automatically set to this value when you join a server. - - - - - Custom shownames: - - - - - Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. - - - - - Discord: - - - - - Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. - - - - - Language: - - - - - Sets the language if you don't want to use your system language. - - - - - Callwords - - - - - <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - - - - - Audio - - - - - Audio device: - - - - - Sets the audio device for all sounds. - - - - - Music: - - - - - SFX: - - - - - Blips: - - - - - Sets the volume of the blips, the talking sound effects. - - - - - Blip rate: - - - - - Sets the delay between playing the blip sounds. - - - - - Play a blip sound "once per every X symbols", where X is the blip rate. 0 plays a blip sound only once. - - - - - Blank blips: - - - - - If true, the game will play a blip sound even when a space is 'being said'. - - - - - Enable Looping SFX: - - - - - If true, the game will allow looping sound effects to play on preanimations. - - - - - Kill Music On Objection: - - - - - - Keep current setting - - - - - Subtheme: - - - - - Sets a 'subtheme', which will stack on top of the current theme and replace anything it can.Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. - - - - - Reload Theme - - - - - Refresh the theme and update all of the ui elements to match. - - - - - Animated Theme: - - - - - If ticked, themes will be allowed to have animated elements. - - - - - The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. - - - - - Log newline: - - - - - If ticked, new messages will appear separated, with the message coming on the next line after the name. When unticked, it displays it as 'name: message'. - - - - - Log margin: - - - - - The distance in pixels between each entry in the IC log. Default: 0. - - - - - Log timestamp: - - - - - If ticked, log will contain a timestamp in UTC before the name. - - - - - - Log timestamp format: - - - - - - Log IC actions: - - - - - If ticked, log will show IC actions such as shouting and presenting evidence. - - - - - Text Stay Time: - - - - - Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. - - - - - Desynchronize IC Logs: - - - - - If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). - - - - - Instant Objection: - - - - - If Text Stay Time is more than 0, instant objection will skip queued messages instead of waiting to catch up. - - - - - Text crawl: - - - - - Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. - - - - - Chat Rate Limit: - - - - - Minimum amount of time (in miliseconds) that must pass before the next Enter key press will send your IC message. - - - - - Default showname: - - - - - Your showname will be automatically set to this value when you join a server. - - - - - Alternate Server List: - - - - - Overrides the base URL to retrieve server information from. - - - - - Scaling: - - - - - Sets the default scaling method, if there is not one already defined specifically for the character. - - - - - Pixel - - - - - Smooth - - - - - Allow Screenshake: - - - - - Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. - - - - - Allow Effects: - - - - - Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. - - - - - Network Frame Effects: - - - - - Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. - - - - - Colors in IC Log: - - - - - Use the markup colors in the server IC chatlog. - - - - - Sticky Sounds: - - - - - Turn this on to prevent the sound dropdown from clearing the sound after playing it. - - - - - Sticky Effects: - - - - - Turn this on to prevent the effects dropdown from clearing the effect after playing it. - - - - - Sticky Preanims: - - - - - Turn this on to prevent preanimation checkbox from clearing after playing the emote. - - - - - Custom Chatboxes: - - - - - Turn this on to allow characters to define their own custom chat box designs. - - - - - Stickers: - - - - - Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). - - - - - Continuous Playback: - - - - - Whether or not to resume playing animations from where they left off. Turning off might reduce lag. - - - - - Stop Music w/ Category: - - - - - Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. - - - - - Log to Text Files: - - - - - Text logs of gameplay will be automatically written in the /logs folder. - - - - - Log to Demo Files: - - - - - Gameplay will be automatically recorded as demos in the /logs folder. - - - - - Sets the music's default volume. - - - - - Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - - - - - Add or remove base folders for use by assets. Base folders on the bottom are prioritized over those above them. - - - - - Couldn't get the privacy policy. - - - - - If true, AO2 will ask the server to stop music when you use 'Objection!' - - - - - Casing - - - - - This server supports case alerts. - - - - - This server does not support case alerts. - - - - - Pretty self-explanatory. - - - - - Casing: - - - - - If checked, you will get alerts about case announcements. - - - - - Defense: - - - - - If checked, you will get alerts about case announcements if a defense spot is open. - - - - - Prosecution: - - - - - If checked, you will get alerts about case announcements if a prosecutor spot is open. - - - - - Judge: - - - - - If checked, you will get alerts about case announcements if the judge spot is open. - - - - - Juror: - - - - - If checked, you will get alerts about case announcements if a juror spot is open. - - - - - Stenographer: - - - - - If checked, you will get alerts about case announcements if a stenographer spot is open. - - - - - CM: - - - - - If checked, you will appear amongst the potential CMs on the server. - - - - - Hosting cases: - - - - - If you're a CM, enter what cases you are willing to host. - - - - - Assets - - - - - Add… - - - - - Select a base folder - - - - - Remove - - - - - ↑ - - - - - ↓ - - - - - Clear Cache - - - - - Clears the lookup cache for assets. Use this when you have added an asset that takes precedence over another existing asset. - - - - - Privacy - - - - - Do not include me in public player counts - - - - - Getting privacy policy... - - - - - %1 (default) - - - - - Courtroom - - - Password - - - - - Spectator - - - - - - Search - - - - - Passworded - - - - - Taken - - - - - Could not find character (char.ini) for %1 - - - - - Generating chars: -%1/%2 - - - - - Showname - - - - - Message - - - - - Name - - - - - Pre - - - - - Flip - - - - - - Casing - - - - - Shownames - - - - - Immediate - - - - - % x offset - - - - - % y offset - - - - - Change the horizontal percentage offset of your character's position from the center of the screen. - - - - - Change the vertical percentage offset of your character's position from the center of the screen. - - - - - Set an 'iniswap', or an alternative character folder to refer to from your current character. -Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini - - - - - You were granted the Disable Modcalls button. - - - - - [LOADING] %1 - - - - - You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. -Cases you can load: %1 - - - - - Case made by %1. - - - - - Navigate to %1 for the CM doc. - - - - - Your case "%1" was loaded! - - - - - - Server - - - - - Back to Lobby - - - - - Music - - - - - Sfx - - - - - Blips - - - - - Change character - - - - - Reload theme - - - - - Call mod - - - - - Settings - - - - - A/M - - - - - Preanim - - - - - You have been banned. - - - - - - None - - - - - Guard - - - - - Additive - - - - - To front - - - - - To behind - - - - - Log goes down - - - - - Log goes up - - - - - Select a character you wish to pair with. - - - - - Change the order of appearance for your character. - - - - - Display the list of characters to pair with. - - - - - Oops, you're muted! - - - - - Set your character's emote to play on your next message. - - - - - Set your character's supplementary background. - - - - - Reset your character's supplementary background to its default. - - - - - Remove the currently selected iniswap from the list and return to the original character folder. - - - - - Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). -Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini - - - - - Remove the currently selected sound effect. - - - - - Choose an effect to play on your next spoken message. -The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by -char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. - - - - - Hold It! - - - - - - - When this is turned on, your next in-character message will be a shout! - - - - - Objection! - - - - - Take That! - - - - - Toggle between server chat and global AO2 chat. - - - - - - - - This will display the animation in the viewport as soon as it is pressed. - - - - - Guilty! - - - - - Bring up the Character Select Screen and change your character. - - - - - Refresh the theme and update all of the ui elements to match. - - - - - Request the attention of the current server's moderator. - - - - - Allows you to change various aspects of the client. - - - - - An interface to help you announce a case (you have to be a CM first to be able to announce cases) - - - - - Switch between Areas and Music lists - - - - - Play a single-shot animation as defined by the emote when checked. - - - - - If preanim is checked, display the input text immediately as the animation plays concurrently. - - - - - Mirror your character's emotes when checked. - - - - - Add text to your last spoken message when checked. - - - - - Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. - - - - - Lets you receive case alerts when enabled. -(You can set your preferences in the Settings!) - - - - - Display customized shownames for all users when checked. - - - - - Custom Shout! - - - - - This will display the custom character-defined animation in the viewport as soon as it is pressed. -To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect - - - - - Play realization sound and animation in the viewport on the next spoken message when checked. - - - - - Shake the screen on next spoken message when checked. - - - - - Display the list of character folders you wish to mute. - - - - - - Increase the health bar. - - - - - - Decrease the health bar. - - - - - Change the text color of the spoken message. -You can also select a part of your currently typed message and use the dropdown to change its color! - - - - - Return back to the server list. - - - - - Become a spectator. You won't be able to interact with the in-character screen. - - - - - - - - CLIENT - - - - - Login unsuccessful. - - - - - You were logged out. - - - - - HOLD IT! - - - - - OBJECTION! - - - - - TAKE THAT! - - - - - CUSTOM OBJECTION! - - - - - - - - shouts - - - - - - - has presented evidence - - - - - - - has stopped the music - - - - - Debug - - - - - - has played a song - - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. - - - - - Too many arguments to load a case! You only need one filename, without extension. - - - - - - - - UNKNOWN - - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. - - - - - You need to give a filename to save (extension not needed) and the courtroom status! - - - - - Too many arguments to save a case! You only need a filename without extension and the courtroom status! - - - - - Succesfully saved, edit doc and cmdoc link on the ini! - - - - - Stop Current Song - - - - - Play Random Song - - - - - Expand All Categories - - - - - Collapse All Categories - - - - - Fade Out Previous - - - - - Fade In - - - - - Synchronize - - - - - Default - - - - - Reason: - - - - - Call Moderator - - - - - - Error - - - - - You must provide a reason. - - - - - The message is too long. - - - - - Present this piece of evidence to everyone on your next spoken message - - - - - Save evidence to an .ini file. - - - - - Load evidence from an .ini file. - - - - - Destroy this piece of evidence - - - - - Choose.. - - - - - Close the evidence display/editing overlay. -You will be prompted if there's any unsaved changes. - - - - - Save any changes made to this piece of evidence and send them to server. - - - - - Click to edit. Press [X] to update your changes. - - - - - Bring up the Evidence screen. - - - - - Switch evidence to private inventory. - - - - - Switch evidence to global inventory. - - - - - - Transfer evidence to private inventory. - - - - - - Transfer evidence to global inventory. - - - - - The piece of evidence you've been editing has changed. - - - - - Do you wish to keep your changes? - - - - - Name: %1 -Image: %2 -Description: -%3 - - - - - Images (*.png) - - - - - - - Click to edit... - - - - - Add new evidence... - - - - - Evidence has been modified. - - - - - Do you want to save your changes? - - - - - Current evidence is global. Click to switch to private. - - - - - Current evidence is private. Click to switch to global. - - - - - "%1" has been transferred. - - - - - Save Inventory - - - - - - Ini Files (*.ini) - - - - - Open Inventory - - - - - DemoServer - - - - Load Demo - - - - - - Demo Files (*.demo) - - - - - - Demo file loaded. Send /play or > in OOC to begin playback. - - - - - Resuming playback. - - - - - Pausing playback. - - - - - Setting max_wait to - - - - - - milliseconds. - - - - - Not a valid integer! - - - - - Current max_wait is - - - - - Current demo file reloaded. Send /play or > in OOC to begin playback. - - - - - min_wait is deprecated. Use the client Settings for minimum wait instead! - - - - - Setting debug mode to %1 - - - - - Valid values are 1 or 0! - - - - - Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. - - - - - Available commands: -load, reload, play, pause, max_wait, debug, help - - - - - Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. - - - - - Lobby - - - Attorney Online %1 - - - - - Search - - - - - It doesn't look like your client is set up correctly. -Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - - - - - Version: %1 - - - - - Settings - - - - - Allows you to change various aspects of the client. - - - - - Loading - - - - - Cancel - - - - - <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 - - - - - Yes - - - - - No - - - - - About - - - - - Couldn't get the message of the day. - - - - - Version: %1 (!) - - - - - New version available: %1 - - - - - Online: %1/%2 - - - - - - Offline - - - - - NetworkManager - - - No description provided. - - - - - QDialogButtonBox - - - - OK - - - - - QObject - - - None - - - - - [MISSING] %1 - - - - - [STREAM] %1 - - - - - chatlogpiece - - - - - UNKNOWN - - - - - debug_functions - - - Error: %1 - - - - - Error - - - - - Notice - - - - diff --git a/resource/translations/ao_es.qm b/resource/translations/ao_es.qm deleted file mode 100644 index 1e06f030..00000000 Binary files a/resource/translations/ao_es.qm and /dev/null differ diff --git a/resource/translations/ao_es.ts b/resource/translations/ao_es.ts deleted file mode 100644 index b329653f..00000000 --- a/resource/translations/ao_es.ts +++ /dev/null @@ -1,2161 +0,0 @@ - - - - - AOApplication - - - Disconnected from server. - Desconectado del servidor. - - - Error connecting to master server. Will try again in %1 seconds. - Error al conectarse a la lista de servidores. Se intentará nuevamente en %1 segundos. - - - There was an error connecting to the master server. -We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. -Please check your Internet connection and firewall, and please try again. - I translated master servers as "lista de servidores" because literally nobody will understand if i make the literal translation "servidor maestro". And in the end a master server is just a list of servers. Also removed the part about having multiple master servers, i just don't think the average user will understand this even if i do a good translation. - Hubo un error al obtener la lista de servidores. Verifique su conexión a Internet y firewall, y vuelva a intentarlo. - - - Outdated version! Your version: %1 -Please go to aceattorneyonline.com to update. - ¡Versión desactualizada! Su versión: %1 -Ingrese a aceattorneyonline.com para actualizar. - - - You have been exiled from AO. -Have a nice day. - Has sido exiliado de AO. -Que tengas un buen día. - - - - Loading - Cargando - - - Loading evidence: -%1/%2 - Cargando evidencia: -%1/%2 - - - - Loading music: -%1/%2 - Cargando música: -%1/%2 - - - - Loading chars: -%1/%2 - Cargando personajes: -%1/%2 - - - - Attorney Online %1 - Attorney Online %1 - - - - [Global log] - - - - - You have been kicked from the server. -Reason: %1 - Has sido expulsado del servidor. -Razón: %1 - - - - You have been banned from the server. -Reason: %1 - Has sido bloqueado de este servidor. -Razón: %1 - - - - You are banned on this server. -Reason: %1 - Has sido bloqueado en este servidor. -Razón: %1 - - - You have been kicked from the server. -Reason: - Has sido expulsado del servidor. -Razón: - - - You are banned on this server. -Reason: - Has sido bloqueado en este servidor. -Razón: - - - - Demo playback - - - - - Play back demos you have previously recorded - - - - - AOCaseAnnouncerDialog - - - Case Announcer - Anunciar caso - - - - Case title: - Título del caso: - - - - Defense needed - Se necesita abogado - - - - Prosecution needed - Se necesita fiscal - - - - Judge needed - Se necesita juez - - - - Jurors needed - Se necesita jurado - - - - Stenographer needed - Se necesita taquígrafo - - - Witness needed - Se necesita testigo - - - - AOOptionsDialog - - - Settings - Ajustes - - - - Gameplay - Jugabilidad - - - - Theme: - Tema visual: - - - - Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. - Establece el tema visual utilizado en el juego. Si el nuevo tema también cambia el aspecto del lobby, deberá volver a cargar el lobby para que los cambios surtan efecto, como unirse a un servidor y volver al lobby. - - - - Subtheme: - - - - - Sets a 'subtheme', which will stack on top of the current theme and replace anything it can.Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. - - - - - Reload Theme - - - - - Refresh the theme and update all of the ui elements to match. - Actualiza el tema y todos los elementos de la interfaz de usuario para que coincidan. - - - - Animated Theme: - - - - - If ticked, themes will be allowed to have animated elements. - - - - - Log goes downwards: - Invertir historial IC: - - - - If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. - Si está marcado, los nuevos mensajes aparecerán en la parte inferior (como el chat OOC). - - - - Log length: - Limite del historial: - - - The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. - La cantidad de mensajes que mantendrá el historial del chat IC antes de eliminar mensajes más antiguos. 0 significa 'infinito'. - - - - The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. - - - - - Log newline: - Nueva línea en log: - - - - If ticked, new messages will appear separated, with the message coming on the next line after the name. When unticked, it displays it as 'name: message'. - Si es marcado, los mensajes nuevos aparecerán separados, y el mensaje aparecerá en la siguiente línea después del nombre. Cuando está desmarcado, lo muestra como 'nombre: mensaje'. - - - - Log margin: - Margen en log: - - - - The distance in pixels between each entry in the IC log. Default: 0. - La distancia en píxeles entre cada entrada en el registro de IC. Predeterminado: 0. - - - - Log timestamp: - Marca de tiempo en log: - - - - If ticked, log will contain a timestamp in UTC before the name. - Si está marcado, el registro contendrá una marca de tiempo en UTC antes del nombre. - - - - - Log timestamp format: - - - - - - Log IC actions: - - - - - If ticked, log will show IC actions such as shouting and presenting evidence. - - - - - Text Stay Time: - - - - - Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. - - - - - Desynchronize IC Logs: - - - - - If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). - - - - - Instant Objection: - - - - - If Text Stay Time is more than 0, instant objection will skip queued messages instead of waiting to catch up. - - - - - Text crawl: - - - - - Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. - - - - - Chat Rate Limit: - - - - - Minimum amount of time (in miliseconds) that must pass before the next Enter key press will send your IC message. - - - - - Default username: - Usuario predeterminado: - - - - Your OOC name will be automatically set to this value when you join a server. - Su nombre OOC se establecerá automáticamente a este cuando se una a un servidor. - - - - Custom shownames: - Mostrar nombres: - - - - Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. - Activa la casilla 'Mostrar nombres' de forma predeterminada en el juego, que a su vez determina si el cliente debe mostrar nombres personalizados en los personajes. - - - - Default showname: - - - - - Your showname will be automatically set to this value when you join a server. - - - - - Alternate Server List: - - - - - Overrides the base URL to retrieve server information from. - - - - - Add or remove base folders for use by assets. Base folders on the bottom are prioritized over those above them. - - - - - Couldn't get the privacy policy. - - - - Backup MS: - Master SV de respaldo: - - - If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. - Si la lista de servidores predeterminada falla, el juego probará la dirección proporcionada aquí. - - - - Discord: - Discord: - - - - Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. - Permite a otros en Discord ver en qué servidor estás, qué personaje juegas y cuánto tiempo has estado jugando. - - - - Scaling: - - - - - Sets the default scaling method, if there is not one already defined specifically for the character. - - - - - Pixel - - - - - Smooth - - - - - Log to Text Files: - - - - - Text logs of gameplay will be automatically written in the /logs folder. - - - - - Log to Demo Files: - - - - - Gameplay will be automatically recorded as demos in the /logs folder. - - - - - Play a blip sound "once per every X symbols", where X is the blip rate. 0 plays a blip sound only once. - - - - - If true, AO2 will ask the server to stop music when you use 'Objection!' - - - - - Assets - - - - - Add… - - - - - Select a base folder - - - - - Remove - - - - - ↑ - - - - - ↓ - - - - - Clear Cache - - - - - Clears the lookup cache for assets. Use this when you have added an asset that takes precedence over another existing asset. - - - - - Privacy - - - - - Do not include me in public player counts - - - - - Getting privacy policy... - - - - - %1 (default) - - - - Allow Shake/Flash: - Permitir Shake/Flash: - - - Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Permite el movimiento de la pantalla y el parpadeo. Desactive esto si tiene inquietudes o problemas con la fotosensibilidad y/o convulsiones. - - - - Language: - Idioma: - - - - Sets the language if you don't want to use your system language. - Establece el idioma si no desea utilizar el idioma de su sistema. - - - Punctuation delay modifier. Enable it for the blips to slow down on punctuations. - Habilítelo para agregar una pequeña pausa en los signos de puntuación. - - - - Callwords - Palabras clave - - - - <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - <html><head/><body>Ingrese tantas palabras de llamada como desee.<br>Esto no distingue entre mayúsculas y minúsculas. ¡Asegúrese de dejar cada palabra en su propia línea!<br>No deje una línea con un espacio al final; recibirá una alerta cada vez que alguien use un espacio en sus mensajes.</body></html> - - - - Audio - Audio - - - - Audio device: - Dispositivo: - - - - Sets the audio device for all sounds. - Establece el dispositivo de audio. - - - - Music: - Música: - - - - Sets the music's default volume. - Establece el volumen predeterminado de la música. - - - - SFX: - SFX: - - - - Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - Establece el volumen predeterminado de SFX. Las interjecciones y los efectos de sonido reales cuentan como 'SFX'. - - - Gives the default value for the in-game 'Custom shownames' checkbox, which in turn determines whether the client should display custom in-character names. - Activa la casilla 'Mostrar nombres' de forma predeterminada en el juego, que a su vez determina si el cliente debe mostrar nombres personalizados en los personajes. - - - Slower text speed: - Texto más lento: - - - Set the text speed to be the same as the AA games. - La velocidad del texto será la misma que en los juegos de AA. - - - Blip delay on punctuations: - Retraso en puntuación: - - - Sets the default volume for music. - Establece el volumen predeterminado de la música. - - - Sets the default volume for SFX sounds, like interjections or other character sound effects. - Establece el volumen predeterminado para sonidos SFX, como las interjecciones y otros efectos de sonido de personajes. - - - - Blips: - Blips: - - - - Sets the volume of the blips, the talking sound effects. - Establece el volumen de los blips, el sonido al hablar. - - - - Blip rate: - Tasa de blips: - - - - Sets the delay between playing the blip sounds. - Establece el retraso entre la reproducción de los sonidos blip. - - - - Blank blips: - Blips en blanco: - - - - If true, the game will play a blip sound even when a space is 'being said'. - Si está marcada, el juego reproducirá un sonido blip incluso cuando se 'dice' un espacio. - - - - Enable Looping SFX: - Habilitar repetición de SFX: - - - - If true, the game will allow looping sound effects to play on preanimations. - Si está habilitado, el juego permitirá que se reproduzcan efectos de sonido en bucle en preanimaciones. - - - - Kill Music On Objection: - Parar la música al objetar: - - - If true, the game will stop music when someone objects, like in the actual games. - Si está habilitado, el juego detendrá la música cuando alguien haga una objeción, como en los juegos. - - - - - Keep current setting - - Mantener la configuración actual - - - - Allow Screenshake: - Permitir screenshake: - - - - Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Permite el movimiento de la pantalla (ADVERTENCIA: esto podría inducir convulsiones debido a imágenes parpadeantes). - - - - Allow Effects: - Permitir efectos: - - - - Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Permite efectos de pantalla (ADVERTENCIA: esto podría inducir convulsiones debido a imágenes parpadeantes). - - - - Network Frame Effects: - Enviar efectos al servidor: - - - - Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. - Envíe temblores de pantalla, destellos y sonidos como se define en char.ini a través de la red. Solo funciona para servidores que admiten esta funcionalidad. - - - - Colors in IC Log: - Colores en el registro IC: - - - - Use the markup colors in the server IC chatlog. - Permite colores en el chat IC del servidor. - - - - Sticky Sounds: - Mantener sonidos: - - - - Turn this on to prevent the sound dropdown from clearing the sound after playing it. - Actívelo para evitar que el menú desplegable de sonido borre el sonido después de reproducirlo. - - - - Sticky Effects: - Mantener efectos: - - - - Turn this on to prevent the effects dropdown from clearing the effect after playing it. - Actívelo para evitar que el menú desplegable de efectos elimine el efecto después de reproducirlo. - - - - Sticky Preanims: - Mantener preanims: - - - - Turn this on to prevent preanimation checkbox from clearing after playing the emote. - Actívelo para evitar que la casilla preanimation se desactive después de reproducir el emote. - - - - Custom Chatboxes: - Chatboxes personalizados: - - - - Turn this on to allow characters to define their own custom chat box designs. - Actívelo para permitir que los personajes definan sus propios diseños de cuadros de chat personalizados. - - - - Stickers: - - - - - Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). - - - - - Continuous Playback: - - - - - Whether or not to resume playing animations from where they left off. Turning off might reduce lag. - - - - - Stop Music w/ Category: - - - - - Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. - - - - Play a blip sound "once per every X symbols", where X is the blip rate. - Reproduce un sonido de blip "una vez por cada X símbolos", donde X es la tasa de blip. - - - If true, AO2 will stop the music for you when you or someone else does 'Objection!'. - Si es activado, AO2 detendrá la música por ti cuando tú u otra persona hagan un '¡Protesto!'. - - - - Casing - Caso - - - - This server supports case alerts. - Este servidor admite alertas de casos. - - - - This server does not support case alerts. - Este servidor no admite alertas de casos. - - - - Pretty self-explanatory. - Bastante autoexplicativo. - - - - Casing: - Caso: - - - - If checked, you will get alerts about case announcements. - Si está marcado, recibirá anuncios de casos. - - - - Defense: - Abogado: - - - - If checked, you will get alerts about case announcements if a defense spot is open. - Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de abogado libre. - - - - Prosecution: - Fiscal: - - - - If checked, you will get alerts about case announcements if a prosecutor spot is open. - Si está marcada, recibirá alertas sobre anuncios de casos si hay un puesto de fiscal libre. - - - - Judge: - Juez: - - - - If checked, you will get alerts about case announcements if the judge spot is open. - Si está marcado, recibirá alertas sobre anuncios de casos si el puesto de juez está libre. - - - - Juror: - Jurado: - - - - If checked, you will get alerts about case announcements if a juror spot is open. - Si está marcado, recibirá alertas sobre anuncios de casos si hay un puesto de jurado libre. - - - - Stenographer: - Taquígrafo: - - - - If checked, you will get alerts about case announcements if a stenographer spot is open. - Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de taquígrafo libre. - - - - CM: - CM: - - - - If checked, you will appear amongst the potential CMs on the server. - Si está marcado, aparecerá entre los posibles CM en el servidor. - - - Automatic Logging: - Registro automático: - - - If checked, all logs will be automatically written in the /logs folder. - Si está marcado, todos los registros se guardarán automáticamente en la carpeta logs. - - - Witness: - Testigo: - - - If checked, you will appear amongst the potential witnesses on the server. - Si está marcado, aparecerá entre los posibles testigos en el servidor. - - - - Hosting cases: - Casos: - - - - If you're a CM, enter what cases you are willing to host. - Si eres un CM, ingresa qué casos estás dispuesto a organizar. - - - Only inline coloring will be shown such as <>,|| etc. - Solo se mostrará el color en línea, como <>, ||, etc. - - - IC log will mirror the IC box. Meaning that if somebody gets interrupted nobody will know what they wanted to say. Enable for a more realistic experience. - El registro de IC reflejará el chat In-Character. Lo que significa que si alguien es interrumpido, nadie sabrá lo que se iba a decir. Habilitar para una experiencia más realista. - - - IC log will mirror the IC box. Meaning that if somebody gets interrupted nobody will know what they wanted to say. Enable for a more realistic experience - El registro de IC reflejará el chat In-Character. Lo que significa que si alguien es interrumpido, nadie sabrá lo que se iba a decir. Habilitar para una experiencia más realista. - - - Colorful IC log: - Log IC colorido: - - - Enables colored text in the log. - Habilita texto con color en el log. - - - Only inline coloring: - Solo coloración en línea: - - - Only inline coloring will be shown such as <>,|| etc - Solo se mostrará el color en línea, como <>, ||, etc. - - - Mirror IC log: - IC log refleja interrupciones: - - - IC log will mirror the IC box. Meaning that if somebody gets interupted nobody will know what they wanted to say. Enable for a more realistic expierence - El registro de IC reflejará el chat In-Character. Lo que significa que si alguien es interrumpido, nadie sabrá lo que se iba a decir. Habilitar para una experiencia más realista. - - - - Courtroom - - - Password - Contraseña - - - - Spectator - Espectador - - - - - Search - Buscar - - - - Passworded - A translation wouldn't fit because of the shitty theme system. - - - - - Taken - En uso - - - - Could not find character (char.ini) for %1 - - - - Could not find %1 - No se pudo encontrar %1 - - - - Generating chars: -%1/%2 - Generando personajes: -%1/%2 - - - Generating chars: - - Generando personajes: - - - - - Showname - A translation wouldn't fit because of the shitty theme system. - - - - - Message - Mensaje - - - - Name - Nombre - - - - Pre - A translation wouldn't fit because of the shitty theme system. - - - - - Flip - A translation wouldn't fit because of the shitty theme system. - - - - - Guard - Guardia - - - - - Casing - This could be translated as 'caso' and it wouldn't get cut, but there are so many other buttons that can't be translated on the courtroom window that might as well leave this also untranslated so it's at least consistent. - - - - - Shownames - A translation wouldn't fit because of the shitty theme system. - - - - - Immediate - A translation wouldn't fit because of the shitty theme system. - - - - White - Blanco - - - Green - Verde - - - Red - Rojo - - - Orange - Naranja - - - Blue - Azul - - - Yellow - Amarillo - - - Rainbow - Arcoíris - - - Pink - Rosado - - - Cyan - Cian - - - % offset - % desplazamiento - - - - Music - - - - - Sfx - - - - - Blips - - - - - Change character - - - - - Reload theme - - - - - Call mod - - - - - Settings - - - - - A/M - - - - - Preanim - - - - - Back to Lobby - 'Volver al lobby' got cut, changed to just Lobby - Lobby - - - - You were granted the Disable Modcalls button. - Se le concedió el botón para deshabilitar llamadas a moderadores. - - - - You have been banned. - Has sido vetado. - - - You were granted the Guard button. - Te ha sido otorgado el botón Guardia. - - - This does nothing, but there you go. - Esto no hace nada, pero ahí lo tienes. - - - You opened the settings menu. - Abriste el menú de configuración. - - - You will now pair up with - Ahora te emparejarás con - - - if they also choose your character in return. - si ellos también eligen a tu personaje a cambio. - - - - - None - Nada - - - - Additive - Aditivo - - - - % x offset - - - - - % y offset - - - - - To front - Al frente - - - - To behind - Al fondo - - - - Log goes down - - - - - Log goes up - - - - - Select a character you wish to pair with. - Seleccione un personaje con el que desee emparejarse. - - - Change the percentage offset of your character's position from the center of the screen. - Cambia el desplazamiento porcentual de la posición de tu personaje desde el centro de la pantalla. - - - - Change the order of appearance for your character. - Cambia el orden de aparición de tu personaje. - - - - Display the list of characters to pair with. - Muestra la lista de personajes para emparejar. - - - - Oops, you're muted! - ¡Ups, estas silenciado! - - - - Set your character's emote to play on your next message. - Configura el emote de tu personaje para usar en tu próximo mensaje. - - - - Set your character's supplementary background. - Establece el fondo suplementario de tu personaje. - - - Set an 'iniswap', or an alternative character folder to refer to from your current character. -Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/iniswaps.ini - Establece un 'iniswap', o una carpeta de caracteres alternativa para consultar desde su personaje actual. -Edite escribiendo y presionando Enter, [X] para eliminar. Esto es guardado en base/characters/<charname>/iniswaps.ini - - - - Change the horizontal percentage offset of your character's position from the center of the screen. - - - - - Change the vertical percentage offset of your character's position from the center of the screen. - - - - - Reset your character's supplementary background to its default. - - - - - Set an 'iniswap', or an alternative character folder to refer to from your current character. -Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini - - - - - Remove the currently selected iniswap from the list and return to the original character folder. - Elimina el iniswap seleccionado actualmente de la lista y regresa a la carpeta de caracteres original. - - - - Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). -Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini - Establece un efecto de sonido para jugar en su próximo 'Preanim'. Dejarlo en Predeterminado usará el sonido definido por emoticones (si hay). -Edite escribiendo y presionando Enter, [X] para eliminar. Esto es guardado en base/characters/<charname>/iniswaps.ini - - - - Remove the currently selected sound effect. - - - - - Choose an effect to play on your next spoken message. -The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by -char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. - Elije un efecto para reproducir en su próximo mensaje hablado. -Los efectos se definen en theme/effects/effects.ini. Tu personaje puede definir efectos personalizados por -char.ini [Opciones] categoría, effects = 'miscname' donde se refiere a misc/<miscname>/effects.ini para leer los efectos. - - - - Hold It! - ¡Un Momento! - - - - - - When this is turned on, your next in-character message will be a shout! - Why the exclamation? - Cuando esto es activado, tu próximo mensaje del personaje será un grito. - - - - Objection! - ¡Protesto! - - - - Take That! - ¡Toma Eso! - - - - Toggle between server chat and global AO2 chat. - Alternar entre el chat del servidor y el chat global. - - - - - - - This will display the animation in the viewport as soon as it is pressed. - Esto mostrará la animación en el viewport tan pronto como se presione. - - - - Guilty! - ¡Culpable! - - - - Bring up the Character Select Screen and change your character. - Abre la pantalla de selección de personaje y cambia tu personaje. - - - - Refresh the theme and update all of the ui elements to match. - Actualiza el tema y todos los elementos de la interfaz de usuario para que coincidan. - - - - Request the attention of the current server's moderator. - Solicite la atención del moderador actual del servidor. - - - - Allows you to change various aspects of the client. - Le permite cambiar varios aspectos del cliente. - - - - An interface to help you announce a case (you have to be a CM first to be able to announce cases) - Una interfaz para ayudarlo a anunciar un caso (debe ser un CM para poder anunciar casos) - - - - Switch between Areas and Music lists - Cambiar entre áreas y listas de música - - - - Play a single-shot animation as defined by the emote when checked. - Reproduzca una animación de un solo disparo según lo definido por el emote cuando esté marcado. - - - - If preanim is checked, display the input text immediately as the animation plays concurrently. - Si se marca preanim, muestre el texto de entrada inmediatamente mientras la animación se reproduce simultáneamente. - - - - Mirror your character's emotes when checked. - Refleja los gestos de tu personaje cuando esté marcado. - - - - Add text to your last spoken message when checked. - Agregar texto a su último mensaje hablado cuando esté marcado. - - - - Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. - No escucha llamadas de moderación cuando esté marcado, evitando que reproduzcan sonidos o centrando la atención en la ventana. - - - - Lets you receive case alerts when enabled. -(You can set your preferences in the Settings!) - Le permite recibir alertas de casos cuando está habilitado. -(¡Puedes configurar tus preferencias en la Configuración!) - - - - Display customized shownames for all users when checked. - Mostrar nombres personalizados para todos los usuarios cuando esté marcado. - - - - Custom Shout! - ¡Grito personalizado! - - - - This will display the custom character-defined animation in the viewport as soon as it is pressed. -To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect - Esto mostrará la animación de personaje personalizada definida en el viewport tan pronto como se presione. -Para hacer una, la carpeta de tu personaje debe contener efectos personalizados [webp/apng/gif/png]. Y efectos personalizados de sonido [wav/ogg/opus] - - - - Play realization sound and animation in the viewport on the next spoken message when checked. - Reproduzca sonido y animación de realización en la ventana gráfica en el siguiente mensaje hablado cuando esté marcado. - - - - Shake the screen on next spoken message when checked. - Agite la pantalla en el siguiente mensaje hablado cuando esté marcado. - - - - Display the list of character folders you wish to mute. - Muestra la lista de carpetas de caracteres que desea silenciar. - - - - - Increase the health bar. - Aumenta la barra de salud. - - - - - Decrease the health bar. - Disminuye la barra de salud. - - - - Change the text color of the spoken message. -You can also select a part of your currently typed message and use the dropdown to change its color! - Cambia el color del texto en el chat IC. -¡También puede seleccionar una parte de su mensaje escrito actualmente y usar el menú desplegable para cambiar su color! - - - - Return back to the server list. - Regresar a la lista de servidores. - - - - Become a spectator. You won't be able to interact with the in-character screen. - Conviértete en espectador. No podrás interactuar como personaje. - - - - - - - CLIENT - - - - - Login unsuccessful. - - - - - You were logged out. - - - - - HOLD IT! - - - - - OBJECTION! - - - - - TAKE THAT! - - - - - CUSTOM OBJECTION! - - - - - - - - shouts - - - - - - - has presented evidence - ha presentado evidencia - - - - - - has stopped the music - - - - - [LOADING] %1 - - - - - - has played a song - ha reproducido la canción - - - You will now pair up with %1 if they also choose your character in return. - Ahora se emparejará con %1 si también eligen a su personaje. - - - You are no longer paired with anyone. - Ya no estás emparejado con nadie. - - - Are you sure you typed that well? The char ID could not be recognised. - ¿Estás seguro de que lo escribiste bien? El ID de personaje no pudo ser reconocido. - - - You have set your offset to - Ha configurado su desplazamiento en - - - Your offset must be between -100% and 100%! - ¡Su desplazamiento debe estar entre -100% y 100%! - - - That offset does not look like one. - Ese desplazamiento no se parece a uno. - - - You switched your music and area list. - Cambiaste tu lista de música y área. - - - You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. - Ha habilitado forzosamente funciones que el servidor puede no admitir. Es posible que no pueda hablar IC, o peor, debido a esto. - - - Your pre-animations interrupt again. - Sus pre-animaciones interrumpen de nuevo. - - - Your pre-animations will not interrupt text. - Sus pre-animaciones no interrumpirán el texto. - - - Couldn't open chatlog.txt to write into. - No se pudo abrir chatlog.txt para escribir. - - - The IC chatlog has been saved. - El chat IC se ha guardado. - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. - ¡No tienes una carpeta `base/cases /`! Ha sido creada para ti. Pero debido a que no existia la carpeta, tampoco habían casos guardados ahí. - - - - You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. -Cases you can load: %1 - ¡Debe dar un nombre de archivo para cargar (no se necesita extensión)! Asegúrese de que esté en la carpeta `base/cases/` y de que tenga el formato correcto. -Casos que puede cargar: %1 - - - - Case made by %1. - Caso hecho por %1. - - - - Navigate to %1 for the CM doc. - Navegue a %1 para el documento del CM. - - - - - - - UNKNOWN - - - - - Your case "%1" was loaded! - Su caso "%1" fue cargado! - - - - Debug - - - - - Stop Current Song - - - - - Play Random Song - Reproducir canción aleatoria - - - - Expand All Categories - Expandir todas las categorías - - - - Collapse All Categories - Contraer todas las categorías - - - - Fade Out Previous - Desvanecer Anterior - - - - Fade In - Fundirse - - - - Synchronize - Sincronizar - - - - Default - Predeterminado - - - You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. -Cases you can load: - ¡Debe dar un nombre de archivo para cargar (no se necesita extensión)! Asegúrese de que esté en la carpeta `base/cases/` y de que tenga el formato correcto. -Casos que puede cargar: - - - - Too many arguments to load a case! You only need one filename, without extension. - ¡Demasiados argumentos para cargar un caso! Solo necesita un nombre de archivo, sin extensión. - - - Case made by - Caso hecho por - - - Navigate to - Navegue a - - - for the CM doc. - para el documento de CM. - - - Your case " - Su caso " - - - " was loaded! - " fue cargado! - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. - ¡No tienes una carpeta `base/cases /`! Fue creada para ti. - - - - You need to give a filename to save (extension not needed) and the courtroom status! - ¡Debe dar un nombre de archivo para guardar (no se necesita la extensión) y el estado de la sala del tribunal! - - - - Too many arguments to save a case! You only need a filename without extension and the courtroom status! - why two exclamations, seems excesive. - ¡Demasiados argumentos para salvar un caso! Solo necesita un nombre de archivo sin extensión y el estado de la sala del tribunal. - - - - Succesfully saved, edit doc and cmdoc link on the ini! - ¡Guardado con éxito, puede editar el doc y doc link en el archivo ini! - - - - - Server - - - - OOC Message - Mensaje OOC - - - Too many arguments to save a case! You only need a filename without extension and the courtroom status. - ¡Demasiados argumentos para salvar un caso! Solo necesita un nombre de archivo sin extensión y el estado de la sala del tribunal. - - - - Reason: - Razón: - - - - Call Moderator - Llamar Moderador - - - - - Error - Error - - - - You must provide a reason. - Debes proporcionar una razón. - - - - The message is too long. - El mensaje es muy largo. - - - Choose... - Elegir... - - - - Present this piece of evidence to everyone on your next spoken message - Presente esta evidencia a todos en su próximo mensaje hablado - - - - Save evidence to an .ini file. - Guardar evidencia en un archivo .ini. - - - - Load evidence from an .ini file. - Cargar evidencia de un archivo .ini. - - - - Destroy this piece of evidence - Destruye esta evidencia - - - - Choose.. - Elegir.. - - - - Close the evidence display/editing overlay. -You will be prompted if there's any unsaved changes. - Cierra la superposición para visualizar/editar evidencia. -Se le preguntará si hay cambios no guardados. - - - - Save any changes made to this piece of evidence and send them to server. - Guardar los cambios realizados en esta evidencia y enviarlos al servidor. - - - Double-click to edit. Press [X] to update your changes. - Doble click para editar. Presione [X] para actualizar sus cambios. - - - - Click to edit. Press [X] to update your changes. - - - - - Bring up the Evidence screen. - Abrir la ventana de evidencia. - - - - Switch evidence to private inventory. - Enviar la evidencia al inventario privado. - - - - Switch evidence to global inventory. - Cambiar la evidencia al inventario global. - - - - - Transfer evidence to private inventory. - Transferir evidencia al inventario privado. - - - - - Transfer evidence to global inventory. - Transferir evidencia al inventario global. - - - - The piece of evidence you've been editing has changed. - La evidencia que has estado editando ha cambiado. - - - - Do you wish to keep your changes? - ¿Desea conservar sus cambios? - - - - Name: %1 -Image: %2 -Description: -%3 - Nombre: %1 -Imagen: %2 -Descripción: -%3 - - - - Images (*.png) - Imágenes (* .png) - - - - - - Click to edit... - - - - Double-click to edit... - Doble click para editar... - - - - Add new evidence... - Añadir nueva evidencia... - - - - Evidence has been modified. - La evidencia ha sido modificada. - - - - Do you want to save your changes? - ¿Quieres guardar tus cambios? - - - - Current evidence is global. Click to switch to private. - La evidencia actual es global. Haga clic para cambiar a privado. - - - - Current evidence is private. Click to switch to global. - La evidencia actual es privada. Haga clic para cambiar a global. - - - - "%1" has been transferred. - "%1" ha sido transferido. - - - - Save Inventory - Guardar inventario - - - - - Ini Files (*.ini) - Archivos Ini (*.ini) - - - - Open Inventory - Abrir el inventario - - - - DemoServer - - - - Load Demo - - - - - - Demo Files (*.demo) - - - - - - Demo file loaded. Send /play or > in OOC to begin playback. - - - - - Resuming playback. - - - - - Pausing playback. - - - - - Setting max_wait to - - - - - - milliseconds. - - - - - Not a valid integer! - - - - - Current max_wait is - - - - - Current demo file reloaded. Send /play or > in OOC to begin playback. - - - - - min_wait is deprecated. Use the client Settings for minimum wait instead! - - - - - Setting debug mode to %1 - - - - - Valid values are 1 or 0! - - - - - Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. - - - - - Available commands: -load, reload, play, pause, max_wait, debug, help - - - - - Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. - - - - - Lobby - - - Attorney Online %1 - Attorney Online %1 - - - - Search - Buscar - - - Name - Nombre - - - - It doesn't look like your client is set up correctly. -Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - No parece que su cliente esté configurado correctamente. -¿Descargó todos los recursos correctamente desde tiny.cc/getao, incluida la gran carpeta 'base'? - - - - Version: %1 - Versión: %1 - - - - Settings - Ajustes - - - - Allows you to change various aspects of the client. - Le permite cambiar varios aspectos del cliente. - - - - Loading - Cargando - - - - Cancel - Cancelar - - - - <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 - - - - - Couldn't get the message of the day. - - - - - Version: %1 (!) - - - - - New version available: %1 - - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 - <h2>Attorney Online %1</h2>El simulador de drama legal<p><b>Código fuente:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Desarrollo mayor:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Desarrollo del cliente:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Prueba de control de calidad:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Agradecimiento especial:</b><br>CrazyJC y MaximumVolty (versión 2.8); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, y FanatSors (AO1); server hosts, game masters, case makers, creadores de contenido y toda la comunidad AO2.<p>El proyecto Attorney Online novela visual en red tiene copyright (c) 2016-2020 Attorney Online developers. Se aplican licencias de código abierto. Todos los demás activos son propiedad de sus respectivos dueños.<p>Usando Qt versión %2 con el motor de audio BASS.<br>Plugin APNG cargado: %3<p>Compilado el %4 - - - - Yes - - - - - No - - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the %3 audio engine.<p>Built on %4 - <h2>Attorney Online %1</h2>El simulador de drama legal<p><b>Código fuente:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Desarrollo mayor:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Desarrollo del cliente:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Prueba de control de calidad:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Agradecimiento especial:</b><br>CrazyJC y MaximumVolty (versión 2.8); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, y FanatSors (AO1); server hosts, game masters, case makers, creadores de contenido y toda la comunidad AO2.<p>El proyecto Attorney Online novela visual en red tiene copyright (c) 2016-2020 Attorney Online developers. Se aplican licencias de código abierto. Todos los demás activos son propiedad de sus respectivos dueños.<p>Usando Qt versión %2 con el motor de audio %3.<p>Compilado el %4 - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC and MaximumVolty (2.8 release); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the %3 audio engine.<p>Built on %4 - <h2>Attorney Online %1</h2>El simulador de drama legal<p><b>Código fuente:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Desarrollo mayor:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Desarrollo del cliente:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Prueba de control de calidad:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Agradecimiento especial:</b><br>CrazyJC y MaximumVolty (versión 2.8); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, y FanatSors (AO1); server hosts, game masters, case makers, creadores de contenido y toda la comunidad AO2.<p>El proyecto Attorney Online novela visual en red tiene copyright (c) 2016-2020 Attorney Online developers. Se aplican licencias de código abierto. Todos los demás activos son propiedad de sus respectivos dueños.<p>Usando Qt versión %2 con el motor de audio %3.<p>Compilado el %4 - - - - About - Acerca de - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Cents02<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy, Raidensnake - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Cents02<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy, Raidensnake - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - <h2>Attorney Online %1</h2>El simulador de drama legal<p><b>Código fuente:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https: //github.com/AttorneyOnline/AO2-Client</a><p><b>Desarrollo mayor:</b> <br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Agradecimiento especial:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (diseño de interfaz de usuario), Draxirch (diseño de interfaz de usuario), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - - - - Online: %1/%2 - En línea: %1/%2 - - - - - Offline - Fuera de línea - - - - NetworkManager - - - No description provided. - - - - - QDialogButtonBox - - - - OK - - - - - QObject - - - None - Nada - - - - [MISSING] %1 - - - - - [STREAM] %1 - - - - - chatlogpiece - - - - - UNKNOWN - - - - has played a song: - ha comenzado a reproducir la canción: - - - - debug_functions - - - Error: %1 - - - - - Error - - - - - Notice - In spanish it would be "Aviso", but I believe it's going to be more useful for bug reports to not translate any debug strings. - - - - diff --git a/resource/translations/ao_it.qm b/resource/translations/ao_it.qm deleted file mode 100644 index 15d2c63a..00000000 Binary files a/resource/translations/ao_it.qm and /dev/null differ diff --git a/resource/translations/ao_it.ts b/resource/translations/ao_it.ts deleted file mode 100644 index 39426061..00000000 --- a/resource/translations/ao_it.ts +++ /dev/null @@ -1,1800 +0,0 @@ - - - - - AOApplication - - Attorney Online 2 - Attorney Online 2 - - - - Disconnected from server. - Disconesso dal server. - - - - Attorney Online %1 - Attorney Online %1 - - - - Loading - Caricamento - - - - Loading chars: -%1/%2 - Caricamento dei personaggi: -%1/%2 - - - - Loading music: -%1/%2 - Caricamento della musica: -%1/%2 - - - - [Global log] - [Log globali] - - - - You have been kicked from the server. -Reason: %1 - Sei stato cacciato dal server. -Motivo: %1 - - - - You have been banned from the server. -Reason: %1 - Sei stato bannato dal server. -Motivo: %1 - - - - You are banned on this server. -Reason: %1 - Sei bannato da questo server. -Motivo: %1 - - - - Demo playback - Registrazioni demo - - - - Play back demos you have previously recorded - Riproduci demo precedentemente registrate - - - - AOCaseAnnouncerDialog - - - Case Announcer - Annunciatore casi - - - - Case title: - Titolo del caso: - - - - Defense needed - Difesa richiesta - - - - Prosecution needed - Procura richiesta - - - - Judge needed - Giudice richiesto - - - - Jurors needed - Giurati richiesti - - - - Stenographer needed - Stenografo richiesto - - - - AOOptionsDialog - - - Settings - Impostazioni - - - - Gameplay - Gameplay - - - - Theme: - Tema: - - - - Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. - Imposta il tema usato in gioco. Se il nuovo tema cambia la lobby; per funzionare bene hai bisogno di ricaricare il client affinché prendano i nuovi effetti, come entrare in un server e uscire. - - - - Subtheme: - Sottotema: - - - - Sets a 'subtheme', which will stack on top of the current theme and replace anything it can.Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. - Imposta un suttotema e che si posizionerà in cima al tema corrente e rimpiazzerà tutto ciò che può. Mantienilo come server per lasciar decidere ad esso. Mantienilo default per lasciarlo senza cambiamenti. - - - - Reload Theme - Ricarica il Tema - - - - Refresh the theme and update all of the ui elements to match. - Ricarica il tema e lo aggiorna per combaciare gli elementi dell'interfaccia dell'utente. - - - - Animated Theme: - Tema animato: - - - - If ticked, themes will be allowed to have animated elements. - Se spuntato, i temi avranno la possibilità di utilizzare elementi animati. - - - - Log goes downwards: - Log verso il basso: - - - - If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. - Se spuntato, nuovi messaggi appariranno nella parte inferiore (Come la chat dell’OOC). Il tradizionale (AO1) è equivalente al non essere spuntato. - - - - Log length: - Lunghezza del Log: - - - - The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. - La quantità di riga che la chat IC mantiene prima di cancellare quelle precedenti. Un valore pari a zero o inferiore verrà considerato come infinito. - - - - Log newline: - Log riga aggiuntiva: - - - - If ticked, new messages will appear separated, with the message coming on the next line after the name. When unticked, it displays it as 'name: message'. - Se spuntato, i messaggi appariranno sotto il nome nel log. Quando non è spuntato i messaggi vengono mostrati sulla stessa riga del nome. - - - - Log margin: - Margine del Log: - - - - The distance in pixels between each entry in the IC log. Default: 0. - La distanza in pixel tra ogni messaggio nel log IC. Default: 0. - - - - Log timestamp: - Orario del Log: - - - - If ticked, log will contain a timestamp in UTC before the name. - Se spuntato, i log avranno l’orario HH:MM:SS prima del nome in ogni messaggio mandato. - - - - - Log timestamp format: - - Formato dell’orario dei Log: - - - - - Log IC actions: - Azioni nel log IC: - - - - If ticked, log will show IC actions such as shouting and presenting evidence. - Se spuntato, il log IC mostrerà le azioni svolte come le “shouts” e il presentare delle prove. - - - - Text Stay Time: - Durata dei messaggi: - - - - Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. - Quantità minima di tempo (in millisecondi) che un messaggio in IC può rimanere. Imposta a 0 per cancellare questa scelta. - - - - Desynchronize IC Logs: - Desincronizzare i log IC: - - - - If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). - Se spuntato, il log mostrerà i messaggi come ricevuti, mentre il viewport li mostrerà in base alla coda (Durata dei messaggi). - - - - Instant Objection: - Obiezione istantanea: - - - - If Text Stay Time is more than 0, instant objection will skip queued messages instead of waiting to catch up. - Se la durata dei messaggi è oltre lo 0, l’obiezione istantanea salterà i messaggi in coda invece di aspettare per recuperarli. - - - - Text crawl: - Scansione del testo: - - - - Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. - Quantità di tempo (in millisecondi) speso su ogni lettera quando un messaggio appare in IC. - - - - Chat Rate Limit: - Limite velocità chat: - - - - Minimum amount of time (in miliseconds) that must pass before the next Enter key press will send your IC message. - Quantità minima di tempo (in millisecondi) che dovrebbe passare prima che il prossimo “INVIO” mandi il tuo messaggio in IC. - - - - Default username: - Username di base: - - - - Your OOC name will be automatically set to this value when you join a server. - Il tuo nome in OOC prenderà automaticamente questo valore quando entrerai in un server. - - - - Custom shownames: - Shownames personalizzati: - - - - Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. - Se spuntato mostrerà il nome personalizzato di chiunque ne abbia inserito uno. - - - - Default showname: - Showname di default: - - - - Your showname will be automatically set to this value when you join a server. - Il tuo showname verrà automaticamente cambiato in questo valore quando entri in un server. - - - - Alternate Server List: - Lista Server Altrernativa: - - - - Overrides the base URL to retrieve server information from. - Sovrascrive l'URL base per ricevere informazioni sul server. - - - - Discord: - Discord: - - - - Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. - Permetti agli altri utenti su Discord di vedere in quale server ti trovi, che personaggio stai usando, e per quanto tempo stai giocando. - - - - Language: - Lingua: - - - - Sets the language if you don't want to use your system language. - Selezione una lingua automaticamente se non vuoi usare quella di sistema. - - - - - Keep current setting - - Mantenere la seguente impostazione - - - - Scaling: - Risoluzione: - - - - Sets the default scaling method, if there is not one already defined specifically for the character. - Imposta il metodo di risoluzione base, se non ce n'è già uno specifico per un personaggio. - - - - Pixel - Pixel - - - - Smooth - Smooth - - - - Allow Screenshake: - Abilità lo scuotimento: - - - - Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Permette lo scuotimento. Disabilitalo se ti crea problemi. - - - - Allow Effects: - Abilita gli Effetti: - - - - Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Permette gli effetti sullo schermo. Disabilitalo se ti crea problemi. - - - - Network Frame Effects: - Network Frame Effects: - - - - Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. - Mostra lo scuotimento dello schermo, flash e i suoni attraverso i char.ini sul network. Funziona solo con i server che supportano questa funzionalità. - - - - Colors in IC Log: - Colori in IC Log: - - - - Use the markup colors in the server IC chatlog. - Usa i colori disponibili nel log IC. - - - - Sticky Sounds: - Suoni permanenti: - - - - Turn this on to prevent the sound dropdown from clearing the sound after playing it. - Attivalo per prevenire la rimozione dell'effetto sonoro dopo averlo eseguito. - - - - Sticky Effects: - Effetti permanenti: - - - - Turn this on to prevent the effects dropdown from clearing the effect after playing it. - Attivalo per prevenire la rimozione dell'effetto dopo averlo eseguito. - - - - Sticky Preanims: - Preanimazioni permanenti: - - - - Turn this on to prevent preanimation checkbox from clearing after playing the emote. - Attivalo per evitare che si deselezioni la casella delle preanimazioni dopo che ne è stata eseguita una. - - - - Custom Chatboxes: - Chatbox personalizzate: - - - - Turn this on to allow characters to define their own custom chat box designs. - Attivalo per permettere al personaggio di usare le chatbox personalizzate. - - - - Stickers: - Stickers: - - - - Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). - Attivalo per fare in modo che i personaggi definiscono i propri sticker (immagini uniche che si mostrano sopra la chatbox - come avatar o showname). - - - - Continuous Playback: - Riproduzione continua: - - - - Whether or not to resume playing animations from where they left off. Turning off might reduce lag. - Se riprendere o meno la riproduzione delle animazioni da dove erano state interrotte. La disattivazione potrebbe creare un ritardo. - - - - Stop Music w/ Category: - Ferma la Musica con le Categorie: - - - - Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. - Interrompi la musica cliccando due volte sopra una categoria. Se questo è disattivato, clicca il tasto destro e usa il menù per fermarla. - - - - Log to Text Files: - Da log a file di testo: - - - - Text logs of gameplay will be automatically written in the /logs folder. - I log verranno scritti automaticamente nella cartella /logs. - - - - Log to Demo Files: - Da log a File Demo: - - - - Gameplay will be automatically recorded as demos in the /logs folder. - Il gameplay verrà automaticamente registrato come demo nella cartella /logs. - - - - Callwords - Callwords - - - - <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - <html><head/><body>Inserisci quante Callwords vuoi!. Sensibili a maiuscole e minuscole. Sii sicuro di lasciare una sola Callword per riga!!; Non lasciare uno spazio alla fine di una riga -- verrai avvertito ogni volta che qualcuno metterà uno spazio in un suo messaggio.</body></html> - - - - Audio - Audio - - - - Audio device: - Dispositivo Audio: - - - - Sets the audio device for all sounds. - Imposta il dispositivo audio per tutti i suoni. - - - - Music: - Musica: - - - - Sets the music's default volume. - Imposta il volume default della musica. - - - - SFX: - SFX: - - - - Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - Imposta il volume default. Le shouts e i rumori emessi dagli effetti conteranno come SFX. - - - - Blips: - Blips: - - - - Sets the volume of the blips, the talking sound effects. - Imposta il volume dei blips, il suono che si sente nel mentre si parla. - - - - Blip rate: - Velocità dei blips: - - - - Sets the delay between playing the blip sounds. - Imposta il ritardo durante il suono dei blips. - - - - Play a blip sound "once per every X symbols", where X is the blip rate. 0 plays a blip sound only once. - Fai partire un blip per ogni simbolo X. Dove X è la velocità dei blips. - - - - Blank blips: - Blip vuoto: - - - - If true, the game will play a blip sound even when a space is 'being said'. - Se vero, il gioco emetterà un blip anche se viene usato uno spazio. - - - - Enable Looping SFX: - Abilità loop SFX: - - - - If true, the game will allow looping sound effects to play on preanimations. - Se spuntato, il gioco permetterà il suono dei loop durante le preanimazioni. - - - - Kill Music On Objection: - Zittisci la Musica con una Obiezione: - - - - If true, AO2 will ask the server to stop music when you use 'Objection!' - Se vero, AO2 chiederà di fermare la musica quando sarà eseguita una 'Obiezione!' - - - - Casing - Casing - - - - This server supports case alerts. - Questo server supporta gli annunci casi. - - - - This server does not support case alerts. - Questo server non supporta gli annunci casi. - - - - Pretty self-explanatory. - Abbastanza auto-esplicativo. - - - - Casing: - Casing: - - - - If checked, you will get alerts about case announcements. - Se spuntato, riceverai degli annunci casi. - - - - Defense: - Difesa: - - - - If checked, you will get alerts about case announcements if a defense spot is open. - Se spuntato, riceverai degli avvertimenti riguardo casi in cui è libero il ruolo di difensore. - - - - Prosecution: - Procura: - - - - If checked, you will get alerts about case announcements if a prosecutor spot is open. - Se spuntato, riceverai degli avvertimenti riguardo casi in cui è libero il ruolo di procuratore. - - - - Judge: - Giudice: - - - - If checked, you will get alerts about case announcements if the judge spot is open. - Se spuntato, riceverai degli avvertimenti riguardo casi in cui è libero il ruolo di giudice. - - - - Juror: - Giurato: - - - - If checked, you will get alerts about case announcements if a juror spot is open. - Se spuntato, riceverai degli avvertimenti riguardo casi in cui è libero il ruolo di giurato. - - - - Stenographer: - Stenografo: - - - - If checked, you will get alerts about case announcements if a stenographer spot is open. - Se spuntato, riceverai degli avvertimenti riguardo casi in cui è libero il ruolo di stenografo. - - - - CM: - CM: - - - - If checked, you will appear amongst the potential CMs on the server. - Se spuntato, apparirai come un potenziale CM nel server. - - - - Hosting cases: - Ospitare casi: - - - - If you're a CM, enter what cases you are willing to host. - Se sei un CM, specifica il caso che vorrai giocare. - - - - Assets - Assets - - - - Add or remove base folders for use by assets. Base folders on the bottom are prioritized over those above them. - Aggiungi o rimuovi cartelle Base per gli assets. Le cartelle Base verranno scansionate in ordine dato. - - - - Add… - Aggiungi… - - - - Select a base folder - Seleziona una cartella base - - - - Remove - RImuovi - - - - ↑ - - - - - ↓ - - - - - Clear Cache - Svuota Cache - - - - Clears the lookup cache for assets. Use this when you have added an asset that takes precedence over another existing asset. - Svuota la cache di ricerca. Usa questo quando hai aggiunto un asset che prende il posto di un altro asset aggiunto in precedenza. - - - - Privacy - Privacy - - - - Do not include me in public player counts - Non includermi nel contatore pubblico dei giocatori - - - - Getting privacy policy... - Leggi l'informativa sulla privacy... - - - - %1 (default) - %1 (default) - - - - Couldn't get the privacy policy. - Impossibile ottenera l'informativa sulla privacy. - - - - Courtroom - - - Password - Password - - - - Spectator - Spettatore - - - - - Search - Cerca - - - - Passworded - Protetto - - - - Taken - Preso - - - - Could not find character (char.ini) for %1 - Impossibile trovare personaggio (char.ini) per %1 - - - - Generating chars: -%1/%2 - Generando i char: -%1/%2 - - - - - None - Nulla - - - - Showname - Showname - - - - Message - Messaggio - - - - Name - Nome - - - - Pre - - Pre - - - - - - Flip - Specchia - - - - Guard - Guardia - - - - Additive - Aggiungi - - - - - Casing - Casing - - - - Shownames - Shownames - - - - Immediate - Immediato - - - - % x offset - % x offset - - - - % y offset - % y offset - - - - To front - Di fronte - - - - To behind - Da dietro - - - - Log goes down - Log verso il basso - - - - Log goes up - Log verso l'alto - - - - Select a character you wish to pair with. - Seleziona un personaggio con cui vuoi fare coppia. - - - - Change the horizontal percentage offset of your character's position from the center of the screen. - Cambia la percentuale in orizzontale dell'offset del personaggio posizionato al centro dello schermo. - - - - Change the vertical percentage offset of your character's position from the center of the screen. - Cambia la percentuale in verticale dell'offset del personaggio posizionato al centro dello schermo. - - - - Change the order of appearance for your character. - Cambia l'ordine d'apparizione del tuo personaggio. - - - - Display the list of characters to pair with. - Elenca la lista dei personaggi con cui fare coppia. - - - - Oops, you're muted! - Oops, sei mutato! - - - - Set your character's emote to play on your next message. - Imposta l'emote del personaggio che apparirà nel prossimo messaggio. - - - - Set your character's supplementary background. - Imposta lo sfondo supplementare del tuo personaggio. - - - - Reset your character's supplementary background to its default. - Resetta lo sfondo supplementare del tuo personaggio a Default. - - - - Set an 'iniswap', or an alternative character folder to refer to from your current character. -Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini - Imposta un iniswap, o una cartella alternativa che si riferisce direttamente al tuo personaggio. -Modifica digitando e premendo INVIO, [X] per rimuoverlo. Questo salva il tuo base/iniswap.ini - - - - Remove the currently selected iniswap from the list and return to the original character folder. - Rimuove il seguente iniswap scelto e ritorni al personaggio che avevi in origine. - - - - Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). -Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini - Imposta un suono ad effetto da fare partire con la tua prossima preanim. Lasciandola a default userà il suono preimpostato di quella emote (se lo ha). -Modifica digitando e premendo INVIO, [X] per rimuoverlo. Questo lo salva nel tuo base/characters/<charname>/soundlist.ini - - - - Remove the currently selected sound effect. - Rimuove il suono correntemente scelto. - - - - Choose an effect to play on your next spoken message. -The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by -char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. - Scegli un effetto da fare partire col tuo prossimo messaggio. Gli effetti sono definiti nel theme/effects/effects.ini. Il tuo personaggio può definire dei suoni personalizzati attraverso il suo -char.ini [Options] category, effects = ;miscname; che si riferisce a misc/<miscname>/effects.ini per leggere gli effetti. - - - - Music - Musica - - - - Sfx - Sfx - - - - Blips - Blips - - - - Hold It! - Un attimo! - - - - - - When this is turned on, your next in-character message will be a shout! - Quando questo è selezionato, il tuo prossimo messaggio avrà una shout! - - - - Objection! - Obiezione! - - - - Take That! - Ecco! - - - - - Server - Server - - - - Toggle between server chat and global AO2 chat. - Alterna tra la chat del server e la chat globale di AO2. - - - - - - - This will display the animation in the viewport as soon as it is pressed. - Questo mostrerà l’animazione nella schermata non appena viene premuto. - - - - Guilty! - Colpevole! - - - - Change character - Cambia personaggio - - - - Bring up the Character Select Screen and change your character. - Ti porta alla Schermata Selezione Personaggi per farti cambiare personaggio. - - - - Reload theme - Ricarica il tema - - - - Refresh the theme and update all of the ui elements to match. - Ricarica il tema e lo aggiorna per abbinare gli elementi dell'interfaccia dell'utente. - - - - Call mod - Chiama mod - - - - Request the attention of the current server's moderator. - Richiama l'attenzione di un moderatore corrente del server. - - - - Settings - Impostazioni - - - - Allows you to change various aspects of the client. - Permette di cambiare vari aspetti del client. - - - - An interface to help you announce a case (you have to be a CM first to be able to announce cases) - Un'interfaccia per aiutarti ad annunciare un caso (devi essere CM per poter annunciare casi) - - - - A/M - A/M - - - - Switch between Areas and Music lists - Cambia tra la lista Aree e Musica - - - - Preanim - Preanimazione - - - - Play a single-shot animation as defined by the emote when checked. - Riproduci un'animazione se definita dal personaggio quando spuntata. - - - - If preanim is checked, display the input text immediately as the animation plays concurrently. - Se la preanimazione è spuntata, mostra immediatamente il messaggio inserito immediatamente mentre l’animazione viene riprodotta. - - - - Mirror your character's emotes when checked. - Specchia il tuo personaggio se spuntato. - - - - Add text to your last spoken message when checked. - Aggiunge un messaggio all’ultimo messaggio scritto se spuntato. - - - - Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. - Permette di non ascoltare le chiamate per moderatori se spuntato, prevenendo la riproduzione del suono o l’attenzione sulla finestra. - - - - Lets you receive case alerts when enabled. -(You can set your preferences in the Settings!) - Ti permette di ricevere annunci per i casi quando abilitato. -(Puoi cambiare le tue preferenze nelle impostazioni!) - - - - Display customized shownames for all users when checked. - Mostra gli showname personalizzati di tutti gli utenti se spuntato. - - - - Custom Shout! - Shout Personalizzato! - - - - This will display the custom character-defined animation in the viewport as soon as it is pressed. -To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect - Questo mostrerà un'animazione definita del personaggio nel viewport non appena viene premuto. -Per crearne uno, la cartella del tuo personaggio deve contenere custom.[webp/apng/gif/png] e custom.[wav/ogg/opus] per gli effetti sonori - - - - Play realization sound and animation in the viewport on the next spoken message when checked. - Riproduce il suono realization e l&apos;animazione nel viewport nel prossimo messaggio scritto se spuntato. - - - - Shake the screen on next spoken message when checked. - Scuote lo schermo nel tuo prossimo messaggio scritto se spuntato. - - - - Display the list of character folders you wish to mute. - Mostra la lista delle cartelle dei personaggi che vorresti smutare. - - - - - Increase the health bar. - Aumenta la barra della salute. - - - - - Decrease the health bar. - Diminuisci la barra della salute. - - - - Change the text color of the spoken message. -You can also select a part of your currently typed message and use the dropdown to change its color! - Cambia il colore dei messaggi scritti. -Puoi anche selezionare il colore dei tuoi messaggi attualmente scritti e usare la selezione per cambiare colore! - - - - Back to Lobby - Indietro alla lobby - - - - Return back to the server list. - Ritorna indietro alla lista server. - - - - Become a spectator. You won't be able to interact with the in-character screen. - Diventa uno spettatore. Non sarai in grado di interagire con i personaggi a schermo. - - - - - - - CLIENT - CLIENT - - - - You were granted the Disable Modcalls button. - Sei in grado di disabilitare il bottone dei Modcall. - - - - Login unsuccessful. - Accesso non riuscito. - - - - You were logged out. - Ti sei scollegato. - - - - HOLD IT! - UN ATTIMO! - - - - OBJECTION! - OBIEZIONE! - - - - TAKE THAT! - ECCO! - - - - CUSTOM OBJECTION! - OBIEZIONE PERSONALIZZATA! - - - - - - - shouts - urla - - - - - - has presented evidence - ha presentato una prova - - - - - - has stopped the music - ha fermato la musica - - - - You have been banned. - Sei stato bannato. - - - - - has played a song - ha riprodotto una canzone - - - - [LOADING] %1 - [CARICAMENTO] %1 - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. - Non hai una cartella `base/cases/`! È appena stata creata, ma visto che ERA apposta per te, è probabile che il file che stai cercando non può essere trovato lì. - - - - You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. -Cases you can load: %1 - Hai bisogno di dare un nome ad un file per caricarlo (estensione non necessaria)! Sii sicuro che si trovi nella cartella: `base/cases/` e che il .ini sia correttamente scritto. -Casi che puoi caricare: %1 - - - - Too many arguments to load a case! You only need one filename, without extension. - Troppe parole per caricare un caso! Hai solo bisogno del nome di un file, senza estensione. - - - - Case made by %1. - Caso fatto da %1. - - - - Navigate to %1 for the CM doc. - Vai su %1 per il doc fatto dal CM. - - - - - - - UNKNOWN - SCONOSCIUTO - - - - Your case "%1" was loaded! - Il tuo caso %1 è stato caricato! - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. - Non hai una cartella `base/cases/`! È appena stata creata, ma visto che ERA apposta per te, probabilmente l'hai cancellata in qualche modo. - - - - You need to give a filename to save (extension not needed) and the courtroom status! - Hai bisogno di dare il nome di un file (estensione non necessaria) e lo stato della stanza! - - - - Too many arguments to save a case! You only need a filename without extension and the courtroom status! - Troppe parole per salvare un caso! Hai bisogno solamente di un nome di un file senza estensione e lo stato della stanza! - - - - Succesfully saved, edit doc and cmdoc link on the ini! - Salvato con successo, modifica il link doc e cmdoc nell'ini! - - - - Debug - Debug - - - - Stop Current Song - Ferma la seguente ost - - - - Play Random Song - Riproduci un'ost Casuale - - - - Expand All Categories - Espandi Tutte le Categorie - - - - Collapse All Categories - Comprimi Tutte le Categorie - - - - Fade Out Previous - Dissolvenza precedente - - - - Fade In - Dissolvenza - - - - Synchronize - Sincronizza - - - - Default - Default - - - - Reason: - Motivo: - - - - Call Moderator - Chiama Moderatore - - - - - Error - Errore - - - - You must provide a reason. - Devi fornire un motivo. - - - - The message is too long. - Il messaggio è troppo lungo. - - - - Present this piece of evidence to everyone on your next spoken message - Presenta questa prova a tutti nel tuo prossimo messaggio - - - - Save evidence to an .ini file. - Salva prove in un file .ini. - - - - Load evidence from an .ini file. - Carica prove da un file .ini. - - - - Destroy this piece of evidence - Elimina questa prova - - - - Choose.. - Selezione.. - - - - Close the evidence display/editing overlay. -You will be prompted if there's any unsaved changes. - Chiudi la schermata di visualizza/modifica delle prove. -Verrai avvisato se ci sono cambiamenti non salvati. - - - - Save any changes made to this piece of evidence and send them to server. - Salva ogni cambiamento fatto a questa prova e mandale sul server. - - - - Click to edit. Press [X] to update your changes. - Premi sull'icona della matita per modificare. Premi su [X] per effettuare i cambiamenti. - - - - Bring up the Evidence screen. - Evidenza la schermata delle prove. - - - - Switch evidence to private inventory. - Passa le prove all'inventario privato. - - - - Switch evidence to global inventory. - Passa le prove all'inventario globale. - - - - - Transfer evidence to private inventory. - Trasferisci le prove nell’inventario privato. - - - - - Transfer evidence to global inventory. - Trasferisci le prove nell’inventario globale. - - - - The piece of evidence you've been editing has changed. - La prova che stavi modificando è cambiata. - - - - Do you wish to keep your changes? - Vuoi salvare le modifiche? - - - - Name: %1 -Image: %2 -Description: -%3 - Nome: %1 -Immagine: %2 -Descrizione: -%3 - - - - Images (*.png) - Immagini (*.png) - - - - - - Click to edit... - Premi la matita per modificare... - - - - Add new evidence... - Aggiungi una nuova prova... - - - - Evidence has been modified. - La Prova è stata modificata. - - - - Do you want to save your changes? - Vuoi salvare i tuoi cambiamenti? - - - - Current evidence is global. Click to switch to private. - La prova corrente è globale, premi per renderla privata. - - - - Current evidence is private. Click to switch to global. - La prova corrente è privata, premi per renderlo globale. - - - - "%1" has been transferred. - "%1"è stata trasferita. - - - - Save Inventory - Salva Inventario - - - - - Ini Files (*.ini) - File Ini (*.ini) - - - - Open Inventory - Apri inventario - - - - DemoServer - - - - Load Demo - Carica Demo - - - - - Demo Files (*.demo) - File Demo (*.demo) - - - - - Demo file loaded. Send /play or > in OOC to begin playback. - File demo caricato. Scrivi /play o > in OOC per iniziare la riproduzione. - - - - Resuming playback. - Riprendendo la riproduzione. - - - - Pausing playback. - Mettendo in pausa la riproduzione. - - - - Setting max_wait to - Inserendo l'attesa massima a - - - - - milliseconds. - millisecondi. - - - - Not a valid integer! - Numero non valido! - - - - Current max_wait is - L'attesa massima corrente è - - - - Current demo file reloaded. Send /play or > in OOC to begin playback. - File demo corrente caricato. Scrivi /play o > in OOC per cominciare la riproduzione. - - - - min_wait is deprecated. Use the client Settings for minimum wait instead! - min_wait è inutilizzato. Usa le impostazioni del client per l’attesa minima! - - - - Setting debug mode to %1 - Imposta la modalità debug su %1 - - - - Valid values are 1 or 0! - I valori validi sono 1 o 0! - - - - Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. - Imposta la modalità debug usando /debug 1 per attivarlo, e /debug 0 per disabilitarlo, ed utilizzerà il quinto timer (TI#4) per mostrare il tempo rimanente fino alla prossima demo. - - - - Available commands: -load, reload, play, pause, max_wait, debug, help - Comandi disponibili: -load, reload, play, pause, max_wait, help - - - - Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. - Termine del file demo. Scrivi /play o > in OOC per ricominciare, oppure /load per aprire un nuovo file. - - - - Lobby - - - Attorney Online %1 - Attorney Online %1 - - - - Search - Ricerca - - - - It doesn't look like your client is set up correctly. -Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - Sembra che il tuo client non sia impostato correttamente. -Hai scaricato tutte le risorse correttamente da tiny.cc/getao, includendo la cartella base? - - - - Version: %1 - Versione: %1 - - - - Settings - Impostazioni - - - - Allows you to change various aspects of the client. - Permette di cambiare vari aspetti del client. - - - - - Offline - Offline - - - - Loading - Caricamento - - - - Cancel - Cancella - - - - <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 - <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 - - - - Yes - - - - - No - No - - - - About - Aiuto - - - - Couldn't get the message of the day. - Impossibile mostrare il messaggio del giorno. - - - - Version: %1 (!) - Versione: %1 (!) - - - - New version available: %1 - Nuova versione disponiile: %1 - - - - Online: %1/%2 - Online: %1/%2 - - - - NetworkManager - - - No description provided. - - - - - QDialogButtonBox - - - - OK - OK - - - - QObject - - - None - Nulla - - - - [MISSING] %1 - [MANCANTE] %1 - - - - [STREAM] %1 - [STREAM] %1 - - - - chatlogpiece - - - - - UNKNOWN - SCONOSCIUTO - - - - debug_functions - - - Error: %1 - Errore: %1 - - - - Error - Errore - - - - Notice - Avviso - - - diff --git a/resource/translations/ao_jp.qm b/resource/translations/ao_jp.qm deleted file mode 100644 index 5812be18..00000000 Binary files a/resource/translations/ao_jp.qm and /dev/null differ diff --git a/resource/translations/ao_jp.ts b/resource/translations/ao_jp.ts deleted file mode 100644 index 33f52f0b..00000000 --- a/resource/translations/ao_jp.ts +++ /dev/null @@ -1,1865 +0,0 @@ - - - - - AOApplication - - - Disconnected from server. - サーバーがつながらなくなりました - - - Error connecting to master server. Will try again in %1 seconds. - マスターサーバーにつながりません。%1秒の後でもう一回 - - - Attorney Online - 逆転裁判オンライン - - - - Loading - ロード中 - - - Loading evidence: -%1/%2 - 証拠がロード中: %1/%2 - - - - Loading music: -%1/%2 - 音楽がロード中: %1/%2 - - - - Loading chars: -%1/%2 - キャラがロード中: %1/%2 - - - - Attorney Online %1 - 逆転裁判オンライン %1 - - - - [Global log] - - - - - You have been kicked from the server. -Reason: %1 - - - - - You have been banned from the server. -Reason: %1 - - - - - You are banned on this server. -Reason: %1 - - - - - Demo playback - - - - - Play back demos you have previously recorded - - - - - AOCaseAnnouncerDialog - - - Case Announcer - - - - - Case title: - - - - - Defense needed - - - - - Prosecution needed - - - - - Judge needed - - - - - Jurors needed - - - - - Stenographer needed - - - - - AOOptionsDialog - - - Settings - 設定 - - - - Gameplay - - - - - Theme: - - - - - Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. - - - - - Log goes downwards: - - - - - If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. - - - - - Log length: - - - - - Default username: - - - - - Your OOC name will be automatically set to this value when you join a server. - - - - - Custom shownames: - - - - - Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. - - - - - Discord: - - - - - Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. - - - - - Language: - - - - - Sets the language if you don't want to use your system language. - - - - - Callwords - - - - - <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - - - - - Audio - - - - - Audio device: - - - - - Sets the audio device for all sounds. - - - - - Music: - 音楽: - - - - SFX: - 効果音: - - - - Blips: - ブリップ: - - - - Sets the volume of the blips, the talking sound effects. - - - - - Blip rate: - - - - - Sets the delay between playing the blip sounds. - - - - - Play a blip sound "once per every X symbols", where X is the blip rate. 0 plays a blip sound only once. - - - - - Blank blips: - - - - - If true, the game will play a blip sound even when a space is 'being said'. - - - - - Enable Looping SFX: - - - - - If true, the game will allow looping sound effects to play on preanimations. - - - - - Kill Music On Objection: - - - - - - Keep current setting - - - - - Subtheme: - - - - - Sets a 'subtheme', which will stack on top of the current theme and replace anything it can.Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. - - - - - Reload Theme - - - - - Refresh the theme and update all of the ui elements to match. - - - - - Animated Theme: - - - - - If ticked, themes will be allowed to have animated elements. - - - - - The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. - - - - - Log newline: - - - - - If ticked, new messages will appear separated, with the message coming on the next line after the name. When unticked, it displays it as 'name: message'. - - - - - Log margin: - - - - - The distance in pixels between each entry in the IC log. Default: 0. - - - - - Log timestamp: - - - - - If ticked, log will contain a timestamp in UTC before the name. - - - - - - Log timestamp format: - - - - - - Log IC actions: - - - - - If ticked, log will show IC actions such as shouting and presenting evidence. - - - - - Text Stay Time: - - - - - Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. - - - - - Desynchronize IC Logs: - - - - - If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). - - - - - Instant Objection: - - - - - If Text Stay Time is more than 0, instant objection will skip queued messages instead of waiting to catch up. - - - - - Text crawl: - - - - - Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. - - - - - Chat Rate Limit: - - - - - Minimum amount of time (in miliseconds) that must pass before the next Enter key press will send your IC message. - - - - - Default showname: - - - - - Your showname will be automatically set to this value when you join a server. - - - - - Alternate Server List: - - - - - Overrides the base URL to retrieve server information from. - - - - - Scaling: - - - - - Sets the default scaling method, if there is not one already defined specifically for the character. - - - - - Pixel - - - - - Smooth - - - - - Allow Screenshake: - - - - - Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. - - - - - Allow Effects: - - - - - Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. - - - - - Network Frame Effects: - - - - - Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. - - - - - Colors in IC Log: - - - - - Use the markup colors in the server IC chatlog. - - - - - Sticky Sounds: - - - - - Turn this on to prevent the sound dropdown from clearing the sound after playing it. - - - - - Sticky Effects: - - - - - Turn this on to prevent the effects dropdown from clearing the effect after playing it. - - - - - Sticky Preanims: - - - - - Turn this on to prevent preanimation checkbox from clearing after playing the emote. - - - - - Custom Chatboxes: - - - - - Turn this on to allow characters to define their own custom chat box designs. - - - - - Stickers: - - - - - Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). - - - - - Continuous Playback: - - - - - Whether or not to resume playing animations from where they left off. Turning off might reduce lag. - - - - - Stop Music w/ Category: - - - - - Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. - - - - - Log to Text Files: - - - - - Text logs of gameplay will be automatically written in the /logs folder. - - - - - Log to Demo Files: - - - - - Gameplay will be automatically recorded as demos in the /logs folder. - - - - - Sets the music's default volume. - - - - - Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - - - - - Add or remove base folders for use by assets. Base folders on the bottom are prioritized over those above them. - - - - - Couldn't get the privacy policy. - - - - - If true, AO2 will ask the server to stop music when you use 'Objection!' - - - - - Casing - - - - - This server supports case alerts. - - - - - This server does not support case alerts. - - - - - Pretty self-explanatory. - - - - - Casing: - - - - - If checked, you will get alerts about case announcements. - - - - - Defense: - 弁護士 - - - - If checked, you will get alerts about case announcements if a defense spot is open. - - - - - Prosecution: - 検事 - - - - If checked, you will get alerts about case announcements if a prosecutor spot is open. - - - - - Judge: - 裁判官 - - - - If checked, you will get alerts about case announcements if the judge spot is open. - - - - - Juror: - 陪審員 - - - - If checked, you will get alerts about case announcements if a juror spot is open. - - - - - Stenographer: - 記録官 - - - - If checked, you will get alerts about case announcements if a stenographer spot is open. - - - - - CM: - - - - - If checked, you will appear amongst the potential CMs on the server. - - - - - Hosting cases: - - - - - If you're a CM, enter what cases you are willing to host. - - - - - Assets - - - - - Add… - - - - - Select a base folder - - - - - Remove - - - - - ↑ - - - - - ↓ - - - - - Clear Cache - - - - - Clears the lookup cache for assets. Use this when you have added an asset that takes precedence over another existing asset. - - - - - Privacy - - - - - Do not include me in public player counts - - - - - Getting privacy policy... - - - - - %1 (default) - - - - - Courtroom - - - Password - パースワード - - - - Spectator - 観客 - - - - - Search - 検索 - - - - Passworded - - - - - Taken - - - - - Could not find character (char.ini) for %1 - - - - - Generating chars: -%1/%2 - - - - - Showname - - - - - Message - - - - - Name - 名前 - - - - Pre - - - - - Flip - フリップ - - - - Guard - ガード - - - - Additive - - - - - - Casing - - - - - Shownames - - - - - Immediate - - - - White - - - - Green - - - - Red - - - - Orange - オレンジ - - - Blue - - - - Yellow - 黄色 - - - - You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. -Cases you can load: %1 - - - - - Case made by %1. - - - - - Navigate to %1 for the CM doc. - - - - - Your case "%1" was loaded! - - - - - - Server - サーバー - - - - - None - - - - - % x offset - - - - - % y offset - - - - - Log goes down - - - - - Log goes up - - - - - Change the horizontal percentage offset of your character's position from the center of the screen. - - - - - Change the vertical percentage offset of your character's position from the center of the screen. - - - - - Set an 'iniswap', or an alternative character folder to refer to from your current character. -Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini - - - - - Remove the currently selected sound effect. - - - - - Hold It! - 待った! - - - - - - When this is turned on, your next in-character message will be a shout! - - - - - Objection! - 意義あり! - - - - Take That! - くらえ! - - - - Toggle between server chat and global AO2 chat. - - - - - - - - This will display the animation in the viewport as soon as it is pressed. - - - - - Guilty! - 有罪! - - - - Bring up the Character Select Screen and change your character. - - - - - Refresh the theme and update all of the ui elements to match. - - - - - Request the attention of the current server's moderator. - - - - - Allows you to change various aspects of the client. - クライアントで変更できます - - - - An interface to help you announce a case (you have to be a CM first to be able to announce cases) - - - - - Switch between Areas and Music lists - - - - - Play a single-shot animation as defined by the emote when checked. - - - - - If preanim is checked, display the input text immediately as the animation plays concurrently. - - - - - Mirror your character's emotes when checked. - - - - - Add text to your last spoken message when checked. - - - - - Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. - - - - - Lets you receive case alerts when enabled. -(You can set your preferences in the Settings!) - - - - - Display customized shownames for all users when checked. - - - - - Custom Shout! - - - - - This will display the custom character-defined animation in the viewport as soon as it is pressed. -To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect - - - - - Play realization sound and animation in the viewport on the next spoken message when checked. - - - - - Shake the screen on next spoken message when checked. - - - - - Display the list of character folders you wish to mute. - - - - - - Increase the health bar. - - - - - - Decrease the health bar. - - - - - Change the text color of the spoken message. -You can also select a part of your currently typed message and use the dropdown to change its color! - - - - - Back to Lobby - ロビーに戻る - - - - Login unsuccessful. - - - - - You were logged out. - - - - - HOLD IT! - - - - - OBJECTION! - - - - - TAKE THAT! - - - - - CUSTOM OBJECTION! - - - - - - - - shouts - - - - - - - has presented evidence - - - - - - - has stopped the music - - - - - [LOADING] %1 - - - - - Debug - - - - - - has played a song - - - - Rainbow - - - - Pink - ピンク - - - Cyan - シアン - - - - To front - - - - - To behind - - - - - Select a character you wish to pair with. - - - - - Change the order of appearance for your character. - - - - - Display the list of characters to pair with. - - - - - Oops, you're muted! - - - - - Set your character's emote to play on your next message. - - - - - Set your character's supplementary background. - - - - - Reset your character's supplementary background to its default. - - - - - Remove the currently selected iniswap from the list and return to the original character folder. - - - - - Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). -Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini - - - - - Choose an effect to play on your next spoken message. -The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by -char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. - - - - - Music - 音楽 - - - - Sfx - 効果音 - - - - Blips - ブリップ - - - - Change character - キャラを変更します - - - - Reload theme - - - - - Call mod - - - - - Settings - 設定 - - - - A/M - - - - - Preanim - - - - - Return back to the server list. - サーバーリストに戻る - - - - Become a spectator. You won't be able to interact with the in-character screen. - - - - - You were granted the Disable Modcalls button. - - - - - - - - CLIENT - クライアント - - - - You have been banned. - - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. - - - - - Too many arguments to load a case! You only need one filename, without extension. - - - - - - - - UNKNOWN - 未知 - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. - - - - - You need to give a filename to save (extension not needed) and the courtroom status! - - - - - Too many arguments to save a case! You only need a filename without extension and the courtroom status! - - - - - Succesfully saved, edit doc and cmdoc link on the ini! - - - - Master - マスター - - - - Stop Current Song - - - - - Play Random Song - - - - - Expand All Categories - - - - - Collapse All Categories - - - - - Fade Out Previous - - - - - Fade In - - - - - Synchronize - - - - - Default - - - - - Reason: - - - - - Call Moderator - モデレーターを呼ぶ - - - - - Error - エラー - - - - You must provide a reason. - - - - - The message is too long. - - - - Choose... - 選択... - - - - Present this piece of evidence to everyone on your next spoken message - - - - - Save evidence to an .ini file. - - - - - Load evidence from an .ini file. - - - - - Destroy this piece of evidence - - - - - Choose.. - - - - - Close the evidence display/editing overlay. -You will be prompted if there's any unsaved changes. - - - - - Save any changes made to this piece of evidence and send them to server. - - - - - Click to edit. Press [X] to update your changes. - - - - - Bring up the Evidence screen. - - - - - Switch evidence to private inventory. - - - - - Switch evidence to global inventory. - - - - - - Transfer evidence to private inventory. - - - - - - Transfer evidence to global inventory. - - - - - The piece of evidence you've been editing has changed. - - - - - Do you wish to keep your changes? - - - - - Name: %1 -Image: %2 -Description: -%3 - - - - - Images (*.png) - イメージ (*.png) - - - - - - Click to edit... - - - - - Add new evidence... - 新しい証拠を付け加える... - - - - Evidence has been modified. - - - - - Do you want to save your changes? - - - - - Current evidence is global. Click to switch to private. - - - - - Current evidence is private. Click to switch to global. - - - - - "%1" has been transferred. - - - - - Save Inventory - - - - - - Ini Files (*.ini) - - - - - Open Inventory - - - - - DemoServer - - - - Load Demo - - - - - - Demo Files (*.demo) - - - - - - Demo file loaded. Send /play or > in OOC to begin playback. - - - - - Resuming playback. - - - - - Pausing playback. - - - - - Setting max_wait to - - - - - - milliseconds. - - - - - Not a valid integer! - - - - - Current max_wait is - - - - - Current demo file reloaded. Send /play or > in OOC to begin playback. - - - - - min_wait is deprecated. Use the client Settings for minimum wait instead! - - - - - Setting debug mode to %1 - - - - - Valid values are 1 or 0! - - - - - Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. - - - - - Available commands: -load, reload, play, pause, max_wait, debug, help - - - - - Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. - - - - - Discord - - Objection! - 意義あり! - - - In Lobby - ロビーでいる - - - Idle - 落ちている - - - In a Server - サーバーでいます - - - Spectating - 観客している - - - - Lobby - - Attorney Online - 逆転裁判オンライン - - - - Attorney Online %1 - 逆転裁判オンライン %1 - - - - Search - 検索 - - - Name - 名前 - - - - It doesn't look like your client is set up correctly. -Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - クライアントの設定が正しくないかもしれません。「tiny.cc/getao」からのファイルをダウンロードしましたか? - - - - Version: %1 - バージョン: %1 - - - - Settings - 設定 - - - - Allows you to change various aspects of the client. - クライアントで変更できます - - - - Loading - ロード中 - - - - Cancel - キャンセル - - - - <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 - - - - - Yes - - - - - No - - - - - About - について - - - - Couldn't get the message of the day. - - - - - Version: %1 (!) - - - - - New version available: %1 - - - - - Online: %1/%2 - オンライン: %1/%2 - - - - - Offline - オフライン - - - - NetworkManager - - - No description provided. - - - - - QDialogButtonBox - - - - OK - - - - - QObject - - - None - - - - - [MISSING] %1 - - - - - [STREAM] %1 - - - - - chatlogpiece - - - - - UNKNOWN - 未知 - - - has played a song: - は音楽をかける - - - - debug_functions - - - Error: %1 - エラー: %1 - - - - Error - エラー - - - - Notice - 通知 - - - diff --git a/resource/translations/ao_pl.qm b/resource/translations/ao_pl.qm deleted file mode 100644 index 4d8de447..00000000 Binary files a/resource/translations/ao_pl.qm and /dev/null differ diff --git a/resource/translations/ao_pl.ts b/resource/translations/ao_pl.ts deleted file mode 100644 index ce5d6ca2..00000000 --- a/resource/translations/ao_pl.ts +++ /dev/null @@ -1,2096 +0,0 @@ - - - - - AOApplication - - - Disconnected from server. - Odłączono od serwera. - - - Error connecting to master server. Will try again in %1 seconds. - Błąd podczas łączenia się z głównym serwerem. Spróbuj ponownie za %1 sekundy. - - - There was an error connecting to the master server. -We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. -Please check your Internet connection and firewall, and please try again. - Odkryto błąd podczas łączenia się z głównym serwerem. -Używamy wielu master serwerów, aby zminimalizować każdą możliwą przerwę, ale klient wyczerpał wszystkie możliwe metody znalezienia i połączenia się z jednym. -Sprawdź swoje połączenie internetowe oraz zaporę ogniową i spróbuj ponownie. - - - Outdated version! Your version: %1 -Please go to aceattorneyonline.com to update. - Nieaktualna wersja! Twoja wersja: %1 -Udaj się do aceattorneyonline.com, aby ją zaktualizować. - - - You have been exiled from AO. -Have a nice day. - Zostałeś wygnany z AO. -Życzymy miłego dnia. - - - - Loading - Wczytywanie - - - Loading evidence: -%1/%2 - Ładowanie dowodów: -%1/%2 - - - - Loading music: -%1/%2 - Wczytywanie muzyki: -%1/%2 - - - - Loading chars: -%1/%2 - Wczytywanie postaci: -%1/%2 - - - - Attorney Online %1 - Attorney Online %1 - - - - [Global log] - [Globalny dziennik] - - - - You have been kicked from the server. -Reason: %1 - Zostałeś/aś wyrzucony/a z tego serwera. -Powód: %1 - - - - You have been banned from the server. -Reason: %1 - Zostałeś/aś zbanowany/a z tego serwera. -Powód: %1 - - - - You are banned on this server. -Reason: %1 - Jesteś zbanowany/a na tym serwerze. -Powód: %1 - - - - Demo playback - Odtwarzanie dem - - - - Play back demos you have previously recorded - Odtwarzanie dem, które poprzednio nagrałeś/aś - - - - AOCaseAnnouncerDialog - - - Case Announcer - Ogłaszacz rozpraw - - - - Case title: - Tytuł rozprawy: - - - - Defense needed - Potrzebny obrońca - - - - Prosecution needed - Potrzebny prokurator - - - - Judge needed - Potrzebny sędzia - - - - Jurors needed - Potrzebny ławnik - - - - Stenographer needed - Potrzebny stenograf - - - Witness needed - Potrzebny świadek - - - - AOOptionsDialog - - - Settings - Ustawienia - - - - Gameplay - Gra - - - - Theme: - Motyw: - - - - Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. - Ustawia motyw używany w grze. Jeżeli nowy motyw zmienia wygląd poczekalni, będziesz musiał(a) ją również odświeżyć, aby zmiany zaczęły działać, np. poprzez dołączenie do serwera i wyjście z niego. - - - - Subtheme: - Podmotyw: - - - - Sets a 'subtheme', which will stack on top of the current theme and replace anything it can.Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. - Ustawia 'podmotyw', który będzie dodatkiem dla obecnego motywu i będzie zastępywać wszystko to co może. Ustaw na 'server', aby serwer decydował za ciebie. Ustaw na 'default', aby się nie zmieniał. - - - - Reload Theme - Odśwież Motyw - - - - Refresh the theme and update all of the ui elements to match. - Odśwież motyw i uaktualnij wszystkie elementy interfejsu, aby do niego pasowały. - - - - Animated Theme: - Animowany Motyw: - - - - If ticked, themes will be allowed to have animated elements. - Jeśli jest to zaznaczone, motywy będą mogły zawierać animowane elementy. - - - - Log goes downwards: - Dziennik idzie w dół: - - - - If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. - Jeżeli jest to zaznaczone, nowe wiadomości zaczną się pojawiać na dole (tak jak na czacie OOC). Tradycyjne zachowanie (z AO1) jest równoważne do tego bycia odznaczonym. - - - - Log length: - Długość dziennika: - - - The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. - Ilość wiadomości, jakie dziennik IC będzie pokazywał zanim usunie starsze wiadomości. Wartość 0 lub niżej, liczy się jako 'nieskończone'. - - - - Log newline: - Odstępy w dzienniku: - - - - If ticked, new messages will appear separated, with the message coming on the next line after the name. When unticked, it displays it as 'name: message'. - Jeśli jest to zaznaczone, nowe wiadomości będą pojawiać się oddzielnie, z wiadomością w kolejnym wierszu po ksywce. Jeżeli odznaczone, będzie się pokazywać w formacie 'ksywka: wiadomość'. - - - - Log margin: - Margines dziennika: - - - - The distance in pixels between each entry in the IC log. Default: 0. - Odległość w pikselach pomiędzy każdym wpisem w dzienniku IC. Domyślnie: 0. - - - - Log timestamp: - Daty w dzienniku: - - - - If ticked, log will contain a timestamp in UTC before the name. - Jeżeli jest to zaznaczone, dziennik będzie pokazywać datę w UTC przed ksywką. - - - - Log IC actions: - Zapisuj akcje IC: - - - - If ticked, log will show IC actions such as shouting and presenting evidence. - Jeśli jest to zaznaczone, dziennik będzie pokazywać akcje IC takie jak krzyki i prezentowanie dowodów. - - - - Text Stay Time: - Czas Pozostania Tekstu: - - - Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behaivor. - Minimalna ilość czasu (w milisekundach), w której wiadomość IC musi pozostać na ekranie, zanim kolejna zostanie wyświetlona, działa niczym 'kolejka'. Ustaw na 0, aby wyłączyć tą funkcję. - - - - Desynchronize IC Logs: - Desynchronizacja Dziennika IC: - - - - If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). - Jeżeli jest to zaznaczone, dziennik pokaże wiadomości jako odebrane, podczas gdy okno będzie analizować kolejkę (Czas Pozostania Tekstu). - - - - Instant Objection: - Natychmiastowy Sprzeciw: - - - - If Text Stay Time is more than 0, instant objection will skip queued messages instead of waiting to catch up. - Jeśli wartość Czasu Pozostania Tekstu jest większa, niż 0, natychmiastowe sprzeciwy pominą kolejkowane wiadomości, zamiast czekania na nadrobienie zaległości. - - - - Default username: - Domyślna nazwa użytkownika: - - - - Your OOC name will be automatically set to this value when you join a server. - Twoja nazwa OOC będzie automatycznie ustawiana do tej wartości, gdy dołączysz na serwer. - - - - Custom shownames: - Niestandardowe ksywki: - - - - Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. - Daje domyślną wartość przyciskowi 'Niestandardowe ksywki', który określa, czy klient powinien pokazywać niestandardowe nazwy IC. - - - Backup MS: - Kopia zapasowa master serwera: - - - If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. - Jeśli wbudowane szukanie serwerów zawiedzie, gra spróbuje użyć adresu podanego tutaj i użyje go jako adresu zapasowego master serwera. - - - - Discord: - - - - - Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. - Pozwala innym na Discordzie zobaczyć na jakim serwerze się znajdujesz, jaką postać używasz i jak długo grałeś. - - - Allow Shake/Flash: - Zezwalaj Wstrząśnięcia/Błyśnięcia: - - - Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Pozwala na wstrząśnięcia ekranu i błyśnięcia. Wyłącz to, jeśli przejmujesz się lub masz problemy z światłoczułością oraz/lub napady padaczkowe. - - - - The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. - Ilość wiadomości, jakie dziennik IC będzie pokazywał zanim usunie starsze wiadomości. Wartość 0 lub niżej, liczy się jako 'nieskończone'. - - - - - Log timestamp format: - - Format dat w dzienniku: - - - - - Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. - Minimalna ilość czasu (w milisekundach), w której wiadomość IC musi pozostać na ekranie, zanim kolejna zostanie wyświetlona, działa niczym 'kolejka'. Ustaw na 0, aby wyłączyć tą funkcję. - - - - Text crawl: - Czołganie się tekstu: - - - - Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. - Ilość czasu (w milisekundach), spędzona dla każdej litery, gdy tekst IC jest wyświetlany. - - - - Chat Rate Limit: - Ograniczenie Szybkości Czatu: - - - - Minimum amount of time (in miliseconds) that must pass before the next Enter key press will send your IC message. - Minimalna ilość czasu (w milisekundach), która musi minąć zanim następne naciśnięcie klawiszu Enter wyśle twoją wiadomość IC. - - - - Default showname: - Domyślna ksywka: - - - - Your showname will be automatically set to this value when you join a server. - Twoja ksywka będzie automatycznie ustawiana na tą, gdy dołączysz na serwer. - - - - Alternate Server List: - Alternatywna Lista Serwerów: - - - - Overrides the base URL to retrieve server information from. - Nadpisuje podstawowy adres URL, żeby otrzymywać z niego informacje o serwerze. - - - - Language: - Język: - - - - Sets the language if you don't want to use your system language. - Ustawia język, jeśli nie chcesz używać języka systemowego. - - - - - Keep current setting - - Zostaw obecne ustawienia - - - - Scaling: - Skalowanie: - - - - Sets the default scaling method, if there is not one already defined specifically for the character. - Ustawia domyślny sposób skalowania, jeżeli nie jest już on ustawiony przez postać. - - - - Pixel - Pikselowe - - - - Smooth - Gładkie - - - - Allow Screenshake: - Zezwalaj Wstrząśnięcia: - - - - Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Zezwala na wstrząśnięcia ekranu. Wyłącz to, jeśli przejmujesz się lub masz problemy z światłoczułością oraz/lub z napadami padaczkowymi. - - - - Allow Effects: - Zezwalaj Efekty: - - - - Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Zezwala na efekty ekranu. Wyłącz to, jeśli przejmujesz się lub masz problemy z światłoczułością oraz/lub z napadami padaczkowymi. - - - - Network Frame Effects: - Efekty Network Frame: - - - - Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. - Wysyła wstrząśnięcia ekranu, błyśnięcia i dźwięki, jak zdefiniowano w pliku char.ini, przez sieć. Działa tylko w przypadku serwerów, które obsługują tę funkcję. - - - - Colors in IC Log: - Kolory w Dzienniku IC: - - - - Use the markup colors in the server IC chatlog. - Użyj znaczników kolorów w serwerowym dzienniku IC. - - - - Sticky Sounds: - Lepkie Dźwięki: - - - - Turn this on to prevent the sound dropdown from clearing the sound after playing it. - Włącz to, aby zapobiec listę dźwięków przed odznaczeniem zaznaczonego dźwięku po jego odtworzeniu. - - - - Sticky Effects: - Lepkie Efekty: - - - - Turn this on to prevent the effects dropdown from clearing the effect after playing it. - Włącz to, aby zapobiec listę efektów przed odznaczeniem zaznaczonego efektu po jego odtworzeniu. - - - - Sticky Preanims: - Lepkie Przed-animacje: - - - - Turn this on to prevent preanimation checkbox from clearing after playing the emote. - Włącz to, aby zapobiec przycisku wyboru przed-animacji od odznaczenia się po odegraniu emotki. - - - - Custom Chatboxes: - Niestandardowe Okna Czatu: - - - - Turn this on to allow characters to define their own custom chat box designs. - Włącz to, aby pozwolić postaciom definiować swoje własne designy okienek czatu. - - - - Stickers: - Naklejki: - - - - Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). - Włącz to, aby pozwolić postaciom zdefiniować ich własne naklejki (unikatowe obrazki, które pojawią się nad oknem czatu, niczym awatary lub ksywki). - - - - Continuous Playback: - Nieprzerwane Odtwarzanie: - - - - Whether or not to resume playing animations from where they left off. Turning off might reduce lag. - Od tego zależy, czy animacje będą odtwarzać się od punktu wyjścia. Wyłączenie tego, może zmniejszyć spowolnienia. - - - - Stop Music w/ Category: - Zatrzymaj Muzykę Kategorią: - - - - Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. - Zatrzymaj muzykę podczas dwukrotnego kliknięcia w kategorię. Jeśli jest to wyłączone, użyj menu pod prawym przyciskiem, aby zatrzymać muzykę. - - - - Log to Text Files: - Zapisuj dziennik do plików tekstowych: - - - - Text logs of gameplay will be automatically written in the /logs folder. - Dziennik z rozgrywki będzie automatycznie zapisywany w formie plików tekstowych w folderze /logs. - - - - Log to Demo Files: - Zapisuj dziennik do plików demo: - - - - Gameplay will be automatically recorded as demos in the /logs folder. - Rozgrywka będzie automatycznie zapisywana jako dema w folderze /logs. - - - - Callwords - Zawołania - - - - <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - <html><head/><body>Wpisz tyle zawołań, ile dusza zapragnie. Wielkość liter nie ma znaczenia. Miej na uwadze, aby każde zawołanie było w swoim wierszu!<br>Nie zostawiaj spacji na końcu -- zostaniesz zaalarmowany za każdym razem, kiedy ktoś użyje spacji w swojej wiadomości.</body></html> - - - - Audio - Dźwięk - - - - Audio device: - Urządzenie dźwiękowe: - - - - Sets the audio device for all sounds. - Ustawia urządzenie dźwiękowe dla wszystkich dźwięków. - - - - Music: - Muzyka: - - - - Sets the music's default volume. - Ustawia domyślną głośność muzyki. - - - - SFX: - Efekty dźwiękowe (SFX): - - - - Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - Ustawia domyślną głośność efektów dźwiękowych (SFX). Sprzeciwy, jak i same efekty specjalne są zaliczane jako 'SFX'. - - - - Blips: - Blipy: - - - - Sets the volume of the blips, the talking sound effects. - Ustawia głośność blipów, efektów dźwiękowych mówienia. - - - - Blip rate: - Szybkość blipów: - - - - Sets the delay between playing the blip sounds. - Ustawia opóźnienie pomiędzy graniem blipów. - - - - Play a blip sound "once per every X symbols", where X is the blip rate. 0 plays a blip sound only once. - Zagraj dźwięk blipa "raz na X symboli", gdzie X to tempo blipów. Wartość 0 odtwarza dźwięk blipa tylko raz. - - - - Add or remove base folders for use by assets. Base folders on the bottom are prioritized over those above them. - Dodawaj lub usuwaj foldery base, do użycia przez zasoby. Foldery base na dole będą otwierane wcześniej, od tych nad nimi. - - - - Couldn't get the privacy policy. - Nie udało się uzyskać polityki prywatności. - - - Play a blip sound "once per every X symbols", where X is the blip rate. - Zagraj dźwięk blipa "raz na X symboli", gdzie X to tempo blipów. - - - - Blank blips: - The 'blip' isn't an accurate polish representation of this english word. - Puste blipy: - - - - If true, the game will play a blip sound even when a space is 'being said'. - Jeżeli jest to zaznaczone, gra zagra dźwięk blip za każdym razem spacja "jest mówiona". - - - - Enable Looping SFX: - Włącz pętlące się efekty dźwiękowe (SFX): - - - - If true, the game will allow looping sound effects to play on preanimations. - Jeśli jest to zaznaczone, gra zezwoli na pętlące się efekty dźwiękowe (SFX) na odtwarzanie podczas animacji. - - - - Kill Music On Objection: - Przerwij muzykę na czas sprzeciwu: - - - - If true, AO2 will ask the server to stop music when you use 'Objection!' - Jeśli jest to zaznaczone, gra zapyta serwer by przerwać muzykę, kiedy ktoś się sprzeciwi. - - - - Assets - Zasoby - - - Add or remove base folders for use by assets. Base folders will be searched in the order provided. - Dodawaj lub usuwaj foldery base, do użycia przez zasoby.Foldery base będą otwierane w podanej kolejności. - - - - Add… - Dodaj... - - - - Select a base folder - Wybierz folder base - - - - Remove - Usuń - - - - ↑ - - - - - ↓ - - - - - Clear Cache - Wyczyść pamięć Cache - - - - Clears the lookup cache for assets. Use this when you have added an asset that takes precedence over another existing asset. - Czyści pamięć podręczną zasobów. Użyj tego, kiedy dodałeś/aś zasób, który ma pierwszeństwo przed innym istniejącym zasobem. - - - - Privacy - Prywatność - - - - Do not include me in public player counts - Nie uwzględnia ciebie w liczeniu liczby graczy - - - - Getting privacy policy... - Uzyskiwanie polityki prywatności... - - - - %1 (default) - %1 (domyślne) - - - If true, AO2 will stop the music for you when you or someone else does 'Objection!'. - Jeśli zaznaczone, gra przerwie muzykę, kiedy ktoś się sprzeciwi. - - - Automatic Logging: - Auto-Zapisywanie: - - - If checked, all logs will be automatically written in the /logs folder. - Jeśli jest to zaznaczone, dziennik będzie automatycznie zapisywany w twoim folderze /logs. - - - If true, the game will stop music when someone objects, like in the actual games. - Jeśli zaznaczone, gra przerwie muzykę, kiedy ktoś sprzeciwi się, tak jak w oryginalnych grach. - - - - Casing - Rozprawy - - - - This server supports case alerts. - Ten serwer wspiera komunikaty rozpraw. - - - - This server does not support case alerts. - Ten serwer nie wspiera komunikatów rozpraw. - - - - Pretty self-explanatory. - Dosyć oczywiste. - - - - Casing: - Rozprawy: - - - - If checked, you will get alerts about case announcements. - Jeżel jest to zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw. - - - - Defense: - Obrona: - - - - If checked, you will get alerts about case announcements if a defense spot is open. - Jeśli jest to zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce obrony jest otwarte. - - - - Prosecution: - Prokuratura: - - - - If checked, you will get alerts about case announcements if a prosecutor spot is open. - Jeśli jest to zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce prokuratora jest otwarte. - - - - Judge: - Sędzia: - - - - If checked, you will get alerts about case announcements if the judge spot is open. - Jeśli jest to zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce sędzi jest otwarte. - - - - Juror: - Ławnik: - - - - If checked, you will get alerts about case announcements if a juror spot is open. - Jeżeli jest to zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce ławnika jest otwarte. - - - - Stenographer: - Stenograf: - - - - If checked, you will get alerts about case announcements if a stenographer spot is open. - Jeżeli jest to zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce stenografa jest otwarte. - - - - CM: - Zarządca rozpraw (CM): - - - - If checked, you will appear amongst the potential CMs on the server. - Jeśli jest to zaznaczone, pojawisz się wśród potencjalnych zarządców rozpraw (CM) na serwerze. - - - Witness: - Świadek: - - - If checked, you will appear amongst the potential witnesses on the server. - Jeżeli zaznaczone, pojawisz się wśród potencjalnych świadków na serwerze. - - - - Hosting cases: - Hostowane rozprawy: - - - - If you're a CM, enter what cases you are willing to host. - Jeżeli jesteś zarządcą rozpraw (CM), wpisz jakie rozprawy jesteś chętny hostowania. - - - - Courtroom - - - Password - Hasło - - - - Spectator - Spektator - - - - - Search - Wyszukaj - - - - Passworded - Zahasłowany - - - - Taken - Zajęty - - - - Could not find character (char.ini) for %1 - Nie znaleziono postaci (char.ini) dla %1 - - - Could not find %1 - Nie znaleziono %1 - - - - Generating chars: -%1/%2 - Generowanie postaci: -%1/%2 - - - - Showname - Ksywka - - - - Message - Wiadomość - - - - Name - Nazwa - - - - Pre - przed- - - - - Flip - Odwróć - - - - Guard - Na Służbie (mod) - - - - Additive - I'm not sure about this one either.The previous form was "Dodatek". - Kontynuacja - - - - - Casing - Rozprawy - - - - Shownames - Ksywki - - - - Immediate - Natychmiastowe - - - White - Biały - - - Green - Zielony - - - Red - Czerwony - - - Orange - Pomarańczowy - - - Blue - Niebieski - - - Yellow - Żółty - - - This does nothing, but there you go. - To nic nie robi, ale proszę bardzo. - - - - You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. -Cases you can load: %1 - Musisz podać nazwę pliku, którego chcesz załadować (rozszerzenie nie jest potrzebne!) Upewnij się, że jest w folderze `base/cases/` i że jest to poprawnie sformatowane ini. -Rozprawy które możesz załadować: %1 - - - - Case made by %1. - Rozprawa stworzona przez %1. - - - - Navigate to %1 for the CM doc. - Przejdź do %1, aby dojść do dokumentu CM. - - - - Your case "%1" was loaded! - Twoja rozprawa "%1" została wczytana! - - - - - Server - Serwer - - - - - None - Nic - - - - % x offset - % wyrówanie x - - - - % y offset - % wyrówanie y - - - - Log goes down - Dziennik idzie w dół - - - - Log goes up - Dziennik idzie w górę - - - - Change the horizontal percentage offset of your character's position from the center of the screen. - Zmień procent poziomego wyrównania pozycji twojej postaci licząc od środka ekranu. - - - - Change the vertical percentage offset of your character's position from the center of the screen. - Zmień procent pionowego wyrównania pozycji twojej postaci licząc od środka ekranu. - - - - Reset your character's supplementary background to its default. - Zresetuj twoje pomocnicze tło postaci do domyślnej wartości. - - - - Set an 'iniswap', or an alternative character folder to refer to from your current character. -Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini - Ustaw 'iniswap' albo alternatywny folder postaci, aby odnosił się do twojej obecnej postaci. -Edytuj poprzez wciśnięcie Enter po wpisaniu tekstu, [X] aby usunąć. Zapisuje się to w base/characters/iniswaps.ini - - - - Remove the currently selected sound effect. - Wycofaj obecny zaznaczony efekt dźwiękowy. - - - - Hold It! - Zaczekaj! - - - - - - When this is turned on, your next in-character message will be a shout! - Kiedy jest to włączone, twoja następna wiadomość IC będzie krzykiem! - - - - Objection! - Sprzeciw! - - - - Take That! - Trzymaj To! - - - - Toggle between server chat and global AO2 chat. - Przełączaj pomiędzy czatem serwerowym i globalnym czatem AO2. - - - - - - - This will display the animation in the viewport as soon as it is pressed. - To będzie wyświetlać animację w oknie, jak tylko zostanie to wciśnięte. - - - - Guilty! - Winny! - - - - Bring up the Character Select Screen and change your character. - Wyświetl ekran zmiany postaci i zmień swoją postać. - - - - Refresh the theme and update all of the ui elements to match. - Odśwież motyw i uaktualnij wszystkie elementy interfejsu, aby dopasować. - - - - Request the attention of the current server's moderator. - Zażądaj uwagę moderatora obecnego serwera. - - - - Allows you to change various aspects of the client. - Umożliwia zmianę różnych aspektów klienta. - - - - An interface to help you announce a case (you have to be a CM first to be able to announce cases) - Interfejs, który pomoże ci ogłosić rozprawę (musisz być zarządcą rozpraw (CM), aby móc ogłaszać rozprawy) - - - - Switch between Areas and Music lists - Przełączaj pomiędzy listami Obszarów i Muzyki - - - - Play a single-shot animation as defined by the emote when checked. - Odegraj pojedyńczą animację, jak zdefiniowano przez emotkę, gdy jest to zaznaczone. - - - - If preanim is checked, display the input text immediately as the animation plays concurrently. - Jeśli przed-animacja jest zaznaczona, wyświetl wpisany tekst natychmiastowo, jednocześnie podczas odgrywania animacji. - - - - Mirror your character's emotes when checked. - Odbij lustrzanie emotki twojej postaci, gdy jest to zaznaczone. - - - - Add text to your last spoken message when checked. - Dodaj tekst do twojej ostatniej wiadomości, gdy jest to zaznaczone. - - - - Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. - Gdy jest to zaznaczone, nie odgrywa dźwięku i wyłącza efekt migającego okienka, gdy ktoś wezwie moderatora. - - - - Lets you receive case alerts when enabled. -(You can set your preferences in the Settings!) - Pozwala ci otrzymywać komunikaty rozpraw, gdy włączone. -(Możesz ustawić swoje preferencje w Ustawieniach!) - - - - Display customized shownames for all users when checked. - Wyświetl niestandardowe ksywki dla wszystkich użytkowników, gdy jest to zaznaczone. - - - - Custom Shout! - Niestandardowy Krzyk! - - - - This will display the custom character-defined animation in the viewport as soon as it is pressed. -To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect - Będzie to wyświatlać animację zdefiniowaną przez niestandardową postaći w oknie, jak tylko zostanie to wciśnięte. -Aby stworzyć coś takiego, folder twojej postaci musi zawierać niestandardowe [webp/apng/gif/png] i niestandardowe [wav/ogg/opus] efekty dźwiękowe - - - - Play realization sound and animation in the viewport on the next spoken message when checked. - Zagraj dźwięk realizacji i animację w oknie podczas następnej wiadomości, gdy jest to zaznaczone. - - - - Shake the screen on next spoken message when checked. - Wstrząśnij ekranem podczas następnej wiadomości, gdy jest to zaznaczone. - - - - Display the list of character folders you wish to mute. - Wyświetl listę folderów postaci, których chcesz zmutować. - - - - - Increase the health bar. - Zwiększ pasek życia. - - - - - Decrease the health bar. - Obniż pasek życia. - - - - Change the text color of the spoken message. -You can also select a part of your currently typed message and use the dropdown to change its color! - Zmień kolor tekstu twojej wiadomości. -Możesz również zaznaczyć część twojej obecnie pisanej wiadomości i użyć listy aby zmienić jej kolor! - - - - Back to Lobby - Powrót do poczekalni - - - - Login unsuccessful. - Logowanie nieudane. - - - - You were logged out. - Zostałeś/aś wylogowany/a. - - - - HOLD IT! - ZACZEKAJ! - - - - OBJECTION! - SPRZECIW! - - - - TAKE THAT! - TRZYMAJ TO! - - - - CUSTOM OBJECTION! - NIESTANDARDOWY SPRZECIW! - - - - - - - shouts - krzyknął/ęła - - - - - - has presented evidence - zaprezentował(a) dowód - - - - - - has stopped the music - zatrzymał(a) muzykę - - - - [LOADING] %1 - [WCZYTYWANIE] %1 - - - - Debug - Debug - - - [STREAM] %1 - [STREAM] %1 - - - [MISSING] %1 - [BRAKUJĄCY] %1 - - - - - has played a song - włączył(a) piosenkę - - - You will now pair up with %1 if they also choose your character in return. - Będziesz teraz w parze z %1, jeśli oni również wybiorą twoją postać. - - - You have set your offset to %1%%. - Ustawiłeś/aś swoje wyrównanie do %1%%. - - - Rainbow - Tęczowy - - - Disable Modcalls - Wyłącz wezwania moda - - - Pink - Różowy - - - Cyan - Turkusowy - - - % offset - % wyrówanie - - - - To front - Do przodu - - - - To behind - Do tyłu - - - - Select a character you wish to pair with. - Zaznacz postać, z którą chcesz się sparować. - - - Change the percentage offset of your character's position from the center of the screen. - Zmień procentową odległość dla pozycji twojej postaci licząc od środka ekranu. - - - - Change the order of appearance for your character. - Zmień kolejność występowania dla twojej postaci. - - - - Display the list of characters to pair with. - Wyświetl listę postaci do sparowania się z. - - - - Oops, you're muted! - Ups, jesteś zmutowany! - - - - Set your character's emote to play on your next message. - Ustaw emotkę twojej postaci do odegrania podczas następnej wiadomości. - - - - Set your character's supplementary background. - Ustaw uzupełniające tło twojej postaci. - - - Set an 'iniswap', or an alternative character folder to refer to from your current character. -Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/iniswaps.ini - Ustaw 'iniswap' albo alternatywny folder postaci, aby odnosił się do twojej obecnej postaci. -Edytuj poprzez pisanie i naciśnięcie enter, [X] aby usunąć. To się zapisuje do base/characters/<charname>/iniswaps.ini - - - - Remove the currently selected iniswap from the list and return to the original character folder. - Usuń obecne zaznaczony iniswap z listy i powróć do pierwotnego foldera postaci. - - - - Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). -Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini - Ustaw efekt dźwiękowy do zagrania dla twojej następnej 'Animacji'. Zostawienie tego jako domyślne, użyje dźwięku zdefiniowanego przez emotkę (jeśli istnieje). -Edytuj poprzez wciśnięcie Enter po wpisaniu tekstu, [X] aby usunąć. Zapisuje się to w base/characters/<charname>/soundlist.ini - - - - Choose an effect to play on your next spoken message. -The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by -char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. - Wybierz efekt dla twojej następnej wiadomości. -Efekty są zdefiniowane w pliku theme/effect/effects.ini. Twoja postać może zdefiniować niestandardowe efekty przez -kategorię char.ini [Options], effects = 'miscname' gdzie się odnosi do misc/<miscname>/effects.ini, aby przejrzeć efekty. - - - - Music - Muzyka - - - - Sfx - Sfx - - - - Blips - Blipy - - - Log limit - Limit dziennika - - - - Change character - Zmiana postaci - - - - Reload theme - Odśwież motyw - - - - Call mod - Wezwij moda - - - - Settings - Ustawienia - - - - A/M - O meaning 'Obszar' and M meaning 'Muzyka'. - O/M - - - - Preanim - Whatever, I'll just call it an animation. - Animacja - - - - Return back to the server list. - Wróć z powrotem do listy serwerów. - - - - Become a spectator. You won't be able to interact with the in-character screen. - Funkcja spektatora. Nie będziesz mógł wchodzić w interakcję z oknem IC. - - - - You were granted the Disable Modcalls button. - Zostałeś/aś obdarzonym/a przyciskiem Wyłącz Wezwania Moda. - - - - - - - CLIENT - KLIENT - - - - You have been banned. - Zostałeś/aś zbanowany. - - - You were granted the Guard button. - Zostałeś obdarzonym przyciskiem Na Służbie. - - - You opened the settings menu. - Otworzyłeś/aś ustawienia. - - - You will now pair up with - Będzie teraz w parze z - - - if they also choose your character in return. - jeżeli oni również wybiorą ciebie spowrotem. - - - You are no longer paired with anyone. - Nie jesteś już w parze. - - - Are you sure you typed that well? The char ID could not be recognised. - Czy jesteś pewien, że dobrze to napisałeś? ID postaci nie zostało rozpoznane. - - - You have set your offset to - Musisz ustawić swoje wyrównanie do - - - Your offset must be between -100% and 100%! - Twoje wyrównanie musi być między -100%, a 100%! - - - That offset does not look like one. - To wyrównanie nie jest poprawne. - - - You have set your vertical offset to %1%%. - Ustawiłeś/aś swoje pionowe wyrównanie do %1%%. - - - Your vertical offset must be between -100% and 100%! - Twoje pionowe wyrównanie musi być pomiędzy -100%, a 100%! - - - That vertical offset does not look like one. - To pionowe wyrównanie nie jest poprawne. - - - You switched your music and area list. - Przełączyłeś/aś swoją listę obszarów i muzyki. - - - You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. - Włączyłeś/aś funkcje, które ten serwer może nie wspierać. Możliwe, że nie będziesz mógł/mogła rozmawiać na czacie IC lub gorzej przez to. - - - Your pre-animations interrupt again. - Twoje animacje będą przerywać tekst znowu. - - - Your pre-animations will not interrupt text. - Twoje animacje nie będą przerywać tekstu. - - - Couldn't open chatlog.txt to write into. - Nie można było otworzyć chatlog.txt, aby móc w nim pisać. - - - The IC chatlog has been saved. - Dziennik czatu IC został zapisany. - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. - Nie masz folderu `base/cases/`! Został zrobiony tylko dla ciebie, ale widząc, że ZOSTAŁ zrobiony tylko dla ciebie, prawdopodobnie plik rozpraw, którego szukasz nie został znaleziony tutaj. - - - - Too many arguments to load a case! You only need one filename, without extension. - Zbyt dużo parametrów, aby załadować rozprawę! Potrzebujesz tylko jedną nazwę pliku, bez rozszerzenia nazwy pliku. - - - - - - - UNKNOWN - NIEZNANE - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. - Nie masz folderu `base/cases/`! Został zrobiony tylko dla ciebie, ale widząc, że ZOSTAŁ zrobiony tylko dla ciebie, prawdopodobnie jakoś usunąłeś/usunęłaś go. - - - - You need to give a filename to save (extension not needed) and the courtroom status! - Musisz podać nazwę pliku, aby go zapisać (rozszerzenie nie jest potrzebne) i status sali sądowej! - - - - Too many arguments to save a case! You only need a filename without extension and the courtroom status! - Zbyt dużo parametrów, aby zapisać rozprawę! Potrzebujesz tylko jedną nazwę pliku, bez rozszerzenia nazwy pliku i statusu sali sądowej! - - - - Succesfully saved, edit doc and cmdoc link on the ini! - Zapisano pomyślnie, edytuj dokument i link cmdoc w .ini! - - - - Stop Current Song - Zatrzymaj Obecną Piosenkę - - - - Play Random Song - Włącz Losową Piosenkę - - - - Expand All Categories - Rozwiń Wszystkie Kategorie - - - - Collapse All Categories - Zwiń Wszystkie Kategorie - - - - Fade Out Previous - Wyciszaj poprzednie - - - - Fade In - Stopniowe podgłoszenie - - - - Synchronize - Zsynchronizuj - - - - Default - Domyślne - - - - Reason: - Powód: - - - - Call Moderator - Wezwij Moderatora - - - - - Error - Błąd - - - - You must provide a reason. - Musisz podać przyczynę. - - - - The message is too long. - Ta wiadomość jest zbyt długa. - - - Choose... - Wybierz... - - - - Present this piece of evidence to everyone on your next spoken message - Zaprezentujesz ten dowód każdemu podczas twojej następnej wiadomości - - - - Save evidence to an .ini file. - Zapisz dowody do pliku .ini. - - - - Load evidence from an .ini file. - Załaduj dowody z pliku .ini. - - - - Destroy this piece of evidence - Zniszcz ten dowód - - - - Choose.. - Wybierz.. - - - - Close the evidence display/editing overlay. -You will be prompted if there's any unsaved changes. - Zamknij wyświetlanie/edytowanie okienka dowodów. -Zostaniesz zawiadomiony, jeśli są jakieś niezapisane zmiany. - - - - Save any changes made to this piece of evidence and send them to server. - Zapisz zmiany do tego dowodu i wyślij je do serwera. - - - Double-click to edit. Press [X] to update your changes. - Kliknij dwa razy, aby edytować. Naciśnij [X], by uaktualnić zmiany. - - - Click the pencil icon to edit. Press [X] to update your changes. - Naciśnij na ikonę ołówka, aby edytować. Naciśnij [X], aby zaktualizować swoje zmiany. - - - Edit this piece of evidence. - Edytuj ten dowód. - - - - Click to edit. Press [X] to update your changes. - Naciśnij, aby edytować. Kliknij [X], aby zaktualizować swoje zmiany. - - - - Bring up the Evidence screen. - Wyświetl ekran dowodów. - - - - Switch evidence to private inventory. - Przełącz ekran dowodów do prywatnego ekwipunku. - - - - Switch evidence to global inventory. - Przełącz ekran dowodów do globalnego ekwipunku. - - - - - Transfer evidence to private inventory. - Przenieś dowody do prywatnego ekwipunku. - - - - - Transfer evidence to global inventory. - Przenieś dowody do globalnego ekwipunku. - - - - The piece of evidence you've been editing has changed. - Dowód, który edytujesz, właśnie się zmienił. - - - - Do you wish to keep your changes? - Czy chcesz zatrzymać zmiany? - - - - Name: %1 -Image: %2 -Description: -%3 - Nazwa: %1 -Obraz: %2 -Opis: -%3 - - - - Images (*.png) - Obrazy (*.png) - - - - - - Click to edit... - Naciśnij, aby edytować... - - - Click the pencil to edit... - Naciśnij na ołówek, aby edytować... - - - Double-click to edit... - Kliknij dwa razy, aby edytować... - - - - Add new evidence... - Dodaj nowy dowód... - - - - Evidence has been modified. - Dowody zostały zmodyfikowane. - - - - Do you want to save your changes? - Czy chcesz zapisać zmiany? - - - - Current evidence is global. Click to switch to private. - Obecne dowody są globalne. Kliknij, aby przełączyć się na prywatne. - - - - Current evidence is private. Click to switch to global. - Obecne dowody są prywatne. Kliknij, aby przełączyć się na globalne. - - - - "%1" has been transferred. - "%1" został przeniesiony/a. - - - - Save Inventory - Zapisz ekwipunek - - - - - Ini Files (*.ini) - Pliki ini (*.ini) - - - - Open Inventory - Otwórz ekwipunek - - - - DemoServer - - - - Load Demo - Wczytaj Demo - - - - - Demo Files (*.demo) - Pliki Demo (*.demo) - - - - - Demo file loaded. Send /play or > in OOC to begin playback. - Plik demo wczytany. Wyślij /play lub > w czacie OOC, aby rozpocząć odtwarzanie. - - - - Resuming playback. - Wznawianie odtwarzania. - - - - Pausing playback. - Pauzowanie odtwarzania. - - - - Setting max_wait to - Ustawianie max_wait do - - - - - milliseconds. - milisekund. - - - - Not a valid integer! - Nie jest to prawidłowa liczba całkowita! - - - - Current max_wait is - Bieżący max_wait to - - - - Current demo file reloaded. Send /play or > in OOC to begin playback. - Bieżący plik demo wczytany ponownie. Wyślij /play lub > w czacie OOC, aby rozpocząć odtwarzanie. - - - - min_wait is deprecated. Use the client Settings for minimum wait instead! - min_wait nie jest już używany. Użyj Ustawień AO2, aby zmienić minimalną wartość czekania! - - - - Setting debug mode to %1 - Ustawianie trybu debugowania do %1 - - - - Valid values are 1 or 0! - Prawidłowe wartości to 1 albo 0! - - - - Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. - Włącz i wyłącz tryb debugowania za pomocą /debug 1 oraz /debug 0, który będzie używać piątego licznika (TI#4), aby pokazać pozostały czas do następnej lini demo. - - - - Available commands: -load, reload, play, pause, max_wait, debug, help - Dostępne komendy: -load, reload, play, pause, max_wait, debug, help - - - Available commands: -load, reload, play, pause, max_wait, help - Dostępne komendy: -load, reload, play, pause, max_wait, help - - - - Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. - Osiągnięto koniec pliku demo. Wyślij /play lub > w czacie OOC, aby zrestartować demo lub /load, aby otworzyć nowy plik. - - - - Lobby - - - Attorney Online %1 - Attorney Online %1 - - - - Search - Szukaj - - - Name - Nazwa - - - - It doesn't look like your client is set up correctly. -Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - Wygłąda na to, że twój klient nie jest ustawiony poprawnie. -Czy pobrałeś wszystkie zasoby poprawnie z tiny.cc/getao, włączając duży folder 'base'? - - - - Version: %1 - Wersja: %1 - - - - Settings - Ustawienia - - - - Allows you to change various aspects of the client. - Umożliwia zmianę różnych aspektów klienta. - - - - Loading - Ładowanie - - - - Cancel - Anuluj - - - - <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 - <h2>Attorney Online %1</h2>Symulator dramy sądowej<p><b>Kod źródłowy:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Główny rozwój:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Rozwój Klienta:</b><br>Cents02, windrammer, skyedeving<p><b>Testowanie QA:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (inaczej Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translacje:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Szczególne podziękowania:</b><br>CrazyJC (dyrektor wydania 2.8) i MaximumVolty (promocja wydania 2.8); Remy, Hibiki, court-records.net (sprite'y); Qubrick (webAO); Rue (strona internetowa); Draxirch (design interfejsu); Lewdton i Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy oraz FanatSors (AO1); hostom serwerów, mistrzom gier, twórcom rozpraw, twórcom kontentu, i dla całej społeczności AO2!<p>Attorney Online sieciowy projekt wizualnej powieści ma prawa autorskie (c) 2016-2021 Attorney Online developerzy. Dotyczy licencji open-source. Wszystkie inne własności należą do ich odpowiednich właścicieli.<p>Działa na wersji Qt %2 z silnikiem audio BASS.<br>Plugin APNG załadowany: %3<p>Zbudowany na %4 - - - - Couldn't get the message of the day. - Nie można było uzyskać wiadomość dnia. - - - - Version: %1 (!) - Wersja: %1 (!) - - - - New version available: %1 - Dostępna jest nowa wersja: %1 - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 - <h2>Attorney Online %1</h2>Symulator dramy sądowej<p><b>Kod źródłowy:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Główny rozwój:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Rozwój Klienta:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Testowanie QA:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (inaczej Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Szczególne podziękowania:</b><br>CrazyJC (dyrektor wydania 2.8) i MaximumVolty (promocja wydania 2.8); Remy, Hibiki, court-records.net (sprite'y); Qubrick (webAO); Rue (strona internetowa); Draxirch (design UI); Lewdton i Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy oraz FanatSors (AO1); hostom serwerów, mistrzom gier, twórcom rozpraw, twórcom kontentu, i dla całej społeczności AO2!<p>Attorney Online sieciowy projekt wizualnej powieści ma prawa autorskie (c) 2016-2020 Attorney Online developerzy. Dotyczy licencji open-source. Wszystkie inne własności należą do ich odpowiednich właścicieli.<p>Działa na wersji Qt %2 z silnikiem audio BASS.<br>Plugin APNG załadowany: %3<p>Zbudowany na %4 - - - - Yes - Tak - - - - No - Nie - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the %3 audio engine.<p>Built on %4 - <h2>Attorney Online %1</h2>Symulator dramy sądowej<p><b>Kod źródłowy:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Główny rozwój:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Rozwój Klienta:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Testowanie QA:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Szczególne podziękowania:</b><br>CrazyJC (dyrektor wydania 2.8) and MaximumVolty (promocja wydania 2.8); Remy, Hibiki, court-records.net (sprite'y); Qubrick (webAO); Rue (strona internetowa); Draxirch (design UI); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); hostom serwerów, mistrzom gier, twórcom rozpraw, twórcom kontentu, i dla całej społeczności AO2!<p>Attorney Online sieciowy projekt wizualnej powieści ma prawa autorskie (c) 2016-2020 Attorney Online developerzy. Dotyczy licencji open-source. Wszystkie inne własności należą do ich odpiowiednich właścicieli.<p>Działa na wersji QT %2 z %3 silnikiem audio.<p>Zbudowany na %4 - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>2.8 Major Release development:</b><br>Crystalwarrior, Iamgoofball<p><b>2.8 Quality Assurance:</b><br>WillDean, Captain N, Mr M, Riel, Seimmet, Fury McFlurry,CedricDewitt, Chewable Tablets, Fantos, Futugaze,Geck, Minx, Pandae, Sierra, CrazyJC, CaseyMayCazy,GreenBowers, Robotic Overlord, Veritas, Gin-Gi<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy, the AO2 community, server hosts, game masters,case makers, content creators and players! - <h2>Attorney Online %1</h2>Symulator dramy sądowej<p><b>Kod źródłowy:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Główny rozwój:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Główny rozwój nad wydaniem 2.8:</b><br>Crystalwarrior, Iamgoofball<p><b>Zapewnienie jakości 2.8:</b><br>WillDean, Captain N, Mr M, Riel, Seimmet, Fury McFlurry,CedricDewitt, Chewable Tablets, Fantos, Futugaze,Geck, Minx, Pandae, Sierra, CrazyJC, CaseyMayCazy,GreenBowers, Robotic Overlord, Veritas, Gin-Gi<p><b>Szczególne podziękowania:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy, społeczności AO2, hostów serwerów, mistrzów gier, twórców rozpraw, twórców kontentu i dla graczy! - - - - About - Opis - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - <h2>Attorney Online: %1</h2>Symulator dramy sądowej<p><b>Kod żródłowy:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Główny rozwój:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Szczególne podziękowania:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - - - - Online: %1/%2 - - - - - - Offline - - - - - NetworkManager - - - No description provided. - Nie podano opisu. - - - - QDialogButtonBox - - - - OK - OK - - - - QObject - - - None - Nic - - - - [MISSING] %1 - [BRAKUJĄCY] %1 - - - - [STREAM] %1 - [STREAM] %1 - - - - chatlogpiece - - - - - UNKNOWN - NIEZNANE - - - has played a song: - włączył piosenkę: - - - - debug_functions - - - Error: %1 - Błąd: %1 - - - - Error - Błąd - - - - Notice - Ogłoszenie - - - diff --git a/resource/translations/ao_pt.qm b/resource/translations/ao_pt.qm deleted file mode 100644 index 6916ab6d..00000000 Binary files a/resource/translations/ao_pt.qm and /dev/null differ diff --git a/resource/translations/ao_pt.ts b/resource/translations/ao_pt.ts deleted file mode 100644 index f9aa5334..00000000 --- a/resource/translations/ao_pt.ts +++ /dev/null @@ -1,2099 +0,0 @@ - - - - - AOApplication - - - Disconnected from server. - Desconectado do servidor. - - - Error connecting to master server. Will try again in %1 seconds. - Erro ao conectar ao servidor principal. Testando novamente em %1 segundos. - - - There was an error connecting to the master server. -We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. -Please check your Internet connection and firewall, and please try again. - Ocorreu um erro ao obter a lista de servidores. Verifique sua conexão à Internet e firewall e tente novamente. - - - Outdated version! Your version: %1 -Please go to aceattorneyonline.com to update. - Versão desatualizada! Sua versão: %1 -Acesse aceattorneyonline.com para atualizar. - - - You have been exiled from AO. -Have a nice day. - Você foi exilado do Attorney Online. -Tenha um bom dia. - - - - Loading - Carregando - - - - Loading chars: -%1/%2 - Carregando personagens: -%1/%2 - - - Loading evidence: -%1/%2 - Carregando evidências: -%1/%2 - - - - Attorney Online %1 - Attorney Online %1 - - - - Loading music: -%1/%2 - Carregando músicas: -%1/%2 - - - - [Global log] - - - - - You have been kicked from the server. -Reason: %1 - Você foi expulso do servidor. -Motivo: %1 - - - - You have been banned from the server. -Reason: %1 - Você foi banido do servidor. -Motivo: %1 - - - - You are banned on this server. -Reason: %1 - Você foi banido neste servidor. -Motivo: %1 - - - - Demo playback - - - - - Play back demos you have previously recorded - - - - - AOCaseAnnouncerDialog - - - Case Announcer - Anunciar caso - - - - Case title: - Título do caso: - - - - Defense needed - Precisa-se de Defesa - - - - Prosecution needed - Precisa-se de Promotor - - - - Judge needed - Precisa-se de Juíz - - - - Jurors needed - Precisa-se de Jurados - - - - Stenographer needed - Precisa-se de Estenógrafo - - - Witness needed - Precisa-se de Testemunha - - - - AOOptionsDialog - - - Settings - Configurações - - - - Gameplay - Jogabilidade - - - - Theme: - Tema visual: - - - - Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. - Define o tema usado no jogo. Se o novo tema alterar a aparência do lobby, será necessário recarregá-lo para que as alterações tenham efeito, como ingressar em um servidor e deixá-lo. - - - - Subtheme: - - - - - Sets a 'subtheme', which will stack on top of the current theme and replace anything it can.Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. - - - - - Reload Theme - - - - - Refresh the theme and update all of the ui elements to match. - Atualize o tema e todos os elementos da interface do usuário para corresponder. - - - - Animated Theme: - - - - - If ticked, themes will be allowed to have animated elements. - - - - - Log goes downwards: - Log vai para baixo: - - - - If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. - Removed the part about AO1 behaviour, nobody cares boomer. - Se selecionado, novas mensagens irão aparecer na parte inferior (assim como o chat OOC). - - - - Log length: - Tamanho do log: - - - The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. - A quantidade de mensagens que o chat do IC manterá antes de excluir as mensagens mais antigas. Um valor igual ou inferior a 0 conta como 'infinito'. - - - - The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. - - - - - Log newline: - Nova linha no log: - - - - If ticked, new messages will appear separated, with the message coming on the next line after the name. When unticked, it displays it as 'name: message'. - Se marcada, novas mensagens aparecerão separadamente e a mensagem aparecerá na próxima linha após o nome. Quando desmarcado, ele mostra como 'nome: mensagem'. - - - - Log margin: - Margem no log: - - - - The distance in pixels between each entry in the IC log. Default: 0. - A distância em pixels entre cada entrada no log IC. Padrão: 0. - - - - Log timestamp: - Timestamp no registro: - - - - If ticked, log will contain a timestamp in UTC before the name. - Se marcado, o registro conterá um carimbo de tempo em UTC antes do nome. - - - - - Log timestamp format: - - - - - - Log IC actions: - - - - - If ticked, log will show IC actions such as shouting and presenting evidence. - - - - - Text Stay Time: - - - - - Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. - - - - - Desynchronize IC Logs: - - - - - If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). - - - - - Instant Objection: - - - - - If Text Stay Time is more than 0, instant objection will skip queued messages instead of waiting to catch up. - - - - - Text crawl: - - - - - Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. - - - - - Chat Rate Limit: - - - - - Minimum amount of time (in miliseconds) that must pass before the next Enter key press will send your IC message. - - - - - Default username: - Nome de usuário padrão: - - - - Your OOC name will be automatically set to this value when you join a server. - Seu nome OOC será automaticamente definido com esse valor quando você ingressar em um servidor. - - - - Custom shownames: - Nomes personalizados: - - - - Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. - 'Custom shownames' changed to 'Shownames' because that's the actual name - Fornece o valor padrão para a caixa de seleção 'Shownames' no jogo, que determina se o cliente deve exibir nomes personalizados nos personagens. - - - - Default showname: - - - - - Your showname will be automatically set to this value when you join a server. - - - - - Alternate Server List: - - - - - Overrides the base URL to retrieve server information from. - - - - - Add or remove base folders for use by assets. Base folders on the bottom are prioritized over those above them. - - - - - Couldn't get the privacy policy. - - - - Backup MS: - MS de backup: - - - If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. - Se as pesquisas internas do servidor falharem, o jogo tentará o endereço fornecido aqui e o usará como um endereço de servidor principal de backup. - - - - Discord: - - - - - Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. - Permite que outras pessoas no Discord vejam em que servidor você está, qual personagem está jogando e há quanto tempo está jogando. - - - - Scaling: - - - - - Sets the default scaling method, if there is not one already defined specifically for the character. - - - - - Pixel - - - - - Smooth - - - - - Log to Text Files: - - - - - Text logs of gameplay will be automatically written in the /logs folder. - - - - - Log to Demo Files: - - - - - Gameplay will be automatically recorded as demos in the /logs folder. - - - - - Play a blip sound "once per every X symbols", where X is the blip rate. 0 plays a blip sound only once. - - - - - If true, AO2 will ask the server to stop music when you use 'Objection!' - - - - - Assets - - - - - Add… - - - - - Select a base folder - - - - - Remove - - - - - ↑ - - - - - ↓ - - - - - Clear Cache - - - - - Clears the lookup cache for assets. Use this when you have added an asset that takes precedence over another existing asset. - - - - - Privacy - - - - - Do not include me in public player counts - - - - - Getting privacy policy... - - - - - %1 (default) - - - - Allow Shake/Flash: - Permitir Shake/Flash: - - - Allows screenshaking and flashing. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Permite agitar e piscar. Desative isso se você tiver preocupações ou problemas com fotosensibilidade e/ou convulsões. - - - - Language: - Língua: - - - - Sets the language if you don't want to use your system language. - Define o idioma se você não quiser usar o idioma do sistema. - - - Punctuation delay modifier. Enable it for the blips to slow down on punctuations. - Habilite para adicionar uma pequena pausa nos sinais de pontuação. - - - - Callwords - Palavras-chave - - - - <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - <html><head/><body>Digite quantas palavras-chave você desejar. Estes não diferenciam maiúsculas de minúsculas. Certifique-se de deixar cada palavra chave em sua própria linha!<br>Não deixe uma linha com um espaço no final - você será alertado toda vez que alguém usar um espaço em suas mensagens.</body></html> - - - - Audio - Áudio - - - - Audio device: - Dispositivo de áudio: - - - - Sets the audio device for all sounds. - Define o dispositivo de áudio para todos os sons. - - - - Music: - Música: - - - - Sets the music's default volume. - Define o volume padrão da música. - - - - SFX: - SFX: - - - - Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - Define o volume padrão do SFX. Interjeições e efeitos sonoros reais contam como 'SFX'. - - - Gives the default value for the in-game 'Custom shownames' checkbox, which in turn determines whether the client should display custom in-character names. - Fornece o valor padrão para a caixa de seleção 'Shownames' no jogo, que determina se o cliente deve exibir nomes personalizados nos caracteres. - - - Slower text speed: - Texto mais lento: - - - Set the text speed to be the same as the AA games. - A velocidade do texto será a mesma dos jogos AA. - - - Blip delay on punctuations: - Atraso na pontuação: - - - Sets the default volume for music. - Define o volume padrão da música. - - - Sets the default volume for SFX sounds, like interjections or other character sound effects. - Define o volume padrão para sons SFX, como interjeições ou outros efeitos sonoros de personagens. - - - - Blips: - - - - - Sets the volume of the blips, the talking sound effects. - Define o volume dos blips, os efeitos sonoros de fala. - - - - Blip rate: - Taxa de blip: - - - - Sets the delay between playing the blip sounds. - Define o atraso entre a reprodução dos sons de blip. - - - - Blank blips: - Blips em branco: - - - - If true, the game will play a blip sound even when a space is 'being said'. - Se ativado, o jogo emitirá um sinal sonoro, mesmo quando um espaço estiver sendo "dito". - - - - Enable Looping SFX: - Ative o SFX em loop: - - - - If true, the game will allow looping sound effects to play on preanimations. - Se ativado, o jogo permitirá que efeitos sonoros em loop sejam reproduzidos em pré-animações. - - - - Kill Music On Objection: - Parar a música no protesto: - - - If true, the game will stop music when someone objects, like in the actual games. - Se ativado, o jogo interrompe a música quando alguém protestar , como nos jogos reais. - - - - - Keep current setting - - Mantenha as configurações atuais - - - - Allow Screenshake: - Permitir screenshake: - - - - Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Permite o tremor de tela (AVISO: Pode causar convulsões devido à imagens tremidas). - - - - Allow Effects: - Permitir efeitos: - - - - Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Permite efeitos de tela (AVISO: Pode causar convulsões devido à imagens tremidas).. - - - - Network Frame Effects: - Envie efeitos para o servidor: - - - - Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. - Envie vibrações, flashes e sons na tela, conforme definido no char.ini pela rede. Funciona apenas para servidores que suportam essa funcionalidade. - - - - Colors in IC Log: - Cores no Log IC: - - - - Use the markup colors in the server IC chatlog. - Permitir cores no chat do IC no servidor. - - - - Sticky Sounds: - Manter sons: - - - - Turn this on to prevent the sound dropdown from clearing the sound after playing it. - Marque para evitar que o som do menu suspenso apague o som após a reprodução. - - - - Sticky Effects: - Manter efeitos: - - - - Turn this on to prevent the effects dropdown from clearing the effect after playing it. - Ative-o para impedir que o menu suspenso de efeito exclua o efeito após reproduzi-lo. - - - - Sticky Preanims: - Manter preanims: - - - - Turn this on to prevent preanimation checkbox from clearing after playing the emote. - Ative-o para impedir que a caixa de seleção de pré-animação seja desmarcada após a execução do emote. - - - - Custom Chatboxes: - Caixas de bate-papo personalizadas: - - - - Turn this on to allow characters to define their own custom chat box designs. - Ative isso para permitir que os personagens tenham as suas próprias caixas de bate-papo personalizadas. - - - - Stickers: - - - - - Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). - - - - - Continuous Playback: - - - - - Whether or not to resume playing animations from where they left off. Turning off might reduce lag. - - - - - Stop Music w/ Category: - - - - - Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. - - - - Play a blip sound "once per every X symbols", where X is the blip rate. - Reproduz um som de blip "uma vez para cada símbolo X", em que X é a taxa de blip. - - - If true, AO2 will stop the music for you when you or someone else does 'Objection!'. - Se ativado, o AO2 interromperá a música quando você ou outra pessoa fizer uma 'Protesto!'. - - - - Casing - Caso - - - - This server supports case alerts. - Este servidor suporta anúncios de casos. - - - - This server does not support case alerts. - Este servidor não suporta alertas de caso. - - - - Pretty self-explanatory. - Bastante auto-explicativo. - - - - Casing: - Caso: - - - - If checked, you will get alerts about case announcements. - Se marcado, você será alertado quando houverem anúncios de casos. - - - - Defense: - Defesa: - - - - If checked, you will get alerts about case announcements if a defense spot is open. - Se marcado, você receberá alertas sobre os anúncios de casos, se um ponto de defesa estiver aberto. - - - - Prosecution: - Promotor: - - - - If checked, you will get alerts about case announcements if a prosecutor spot is open. - Se marcado, você receberá alertas sobre os anúncios de casos, se uma posição de promotor estiver disponível. - - - - Judge: - Juíz: - - - - If checked, you will get alerts about case announcements if the judge spot is open. - Se marcado, você receberá alertas sobre os anúncios de casos, se o local do juíz: estiver aberto. - - - - Juror: - Jurado: - - - - If checked, you will get alerts about case announcements if a juror spot is open. - Se marcado, você receberá alertas sobre os anúncios de casos, se um local do jurado estiver aberto. - - - - Stenographer: - Estenógrafo: - - - - If checked, you will get alerts about case announcements if a stenographer spot is open. - Se marcado, você receberá alertas sobre anúncios de casos, se um local de estenógrafo estiver aberto. - - - - CM: - CM: - - - - If checked, you will appear amongst the potential CMs on the server. - Se marcado, você aparecerá entre os CMs possíveis no servidor. - - - Automatic Logging: - Registro automático: - - - If checked, all logs will be automatically written in the /logs folder. - Se marcado, todos os registros serão automaticamente salvos na pasta logs. - - - Witness: - Testemunha: - - - If checked, you will appear amongst the potential witnesses on the server. - Se marcado, você aparecerá entre as testemunhas em potencial no servidor. - - - - Hosting cases: - Casos: - - - - If you're a CM, enter what cases you are willing to host. - Se você é um CM, insira os casos que deseja hospedar. - - - Colorful IC log: - Log IC colorido: - - - Enables colored text in the log. - Ativa o texto colorido no log. - - - Only inline coloring: - Somente coloração em linha: - - - Only inline coloring will be shown such as <>,|| etc. - Somente a coloração em linha será mostrada como <>, ||, etc. - - - Mirror IC log: - O log IC reflete interrupções: - - - IC log will mirror the IC box. Meaning that if somebody gets interrupted nobody will know what they wanted to say. Enable for a more realistic experience. - O log IC espelhará o chat IC Significando que se alguém for interrompido, ninguém saberá o que queria dizer. Habilite para uma experiência mais realista. - - - - Courtroom - - - Password - Senha - - - - Spectator - Espectador - - - - - Search - Pesquisar - - - - Passworded - A translation wouldn't fit because of the shitty theme system. - - - - - Taken - Em uso - - - - Could not find character (char.ini) for %1 - - - - - Generating chars: -%1/%2 - Gerando personagens: -%1/%2 - - - Could not find %1 - Não foi possível encontrar %1 - - - - Showname - A translation wouldn't fit because of the shitty theme system. - - - - - Message - Mensagem - - - OOC Message - Mensagem OOC - - - - Name - Nome - - - - Pre - A translation wouldn't fit because of the shitty theme system. - - - - - Flip - A translation wouldn't fit because of the shitty theme system. - - - - - - Casing - A translation wouldn't fit because of the shitty theme system. - - - - - Shownames - A translation wouldn't fit because of the shitty theme system. - - - - - Immediate - A translation wouldn't fit because of the shitty theme system. - - - - White - Branco - - - Green - Verde - - - Red - Vermelho - - - Orange - Laranja - - - Blue - Azul - - - Yellow - Amarelo - - - Rainbow - Arco Iris - - - Pink - Rosa - - - Cyan - Ciano - - - % offset - % deslocamento - - - - Music - - - - - Sfx - - - - - Blips - - - - - - Server - - - - - Change character - - - - - Reload theme - - - - - Call mod - - - - - Settings - - - - - A/M - - - - - Preanim - - - - - Back to Lobby - A translation wouldn't fit because of the shitty theme system. - Lobby - - - - You were granted the Disable Modcalls button. - Você recebeu o botão Desativar Modcalls. - - - - You have been banned. - Você foi banido. - - - This does nothing, but there you go. - Isso não faz nada, mas lá vai você. - - - You opened the settings menu. - Você abriu o menu de configurações. - - - You will now pair up with - Agora você vai fazer par com - - - if they also choose your character in return. - se eles também escolherem seu personagem em troca. - - - - - None - Nada - - - - Guard - Guarda - - - - Additive - Aditivo - - - - % x offset - - - - - % y offset - - - - - To front - Para frente - - - - To behind - Ao fundo - - - - Log goes down - - - - - Log goes up - - - - - Select a character you wish to pair with. - Selecione um personagem com o qual deseja parear. - - - Change the percentage offset of your character's position from the center of the screen. - Altere o deslocamento percentual da posição do seu personagem no centro da tela. - - - - Change the order of appearance for your character. - Mude a ordem de aparência do seu personagem. - - - - Display the list of characters to pair with. - Exibe a lista de caracteres para corresponder. - - - - Oops, you're muted! - Opa, você está mudo! - - - - Set your character's emote to play on your next message. - Defina o emote do seu personagem para usar na próxima mensagem. - - - - Set your character's supplementary background. - Defina o plano de fundo suplementar para o seu personagem. - - - Set an 'iniswap', or an alternative character folder to refer to from your current character. -Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/iniswaps.ini - Defina um 'iniswap' ou uma pasta de caracteres alternativa para consultar seu personagem atual. -Edite digitando e pressionando Enter, [X] para excluir. Isso é salvo em base/characters/<charname>/iniswaps.ini - - - - Change the horizontal percentage offset of your character's position from the center of the screen. - - - - - Change the vertical percentage offset of your character's position from the center of the screen. - - - - - Reset your character's supplementary background to its default. - - - - - Set an 'iniswap', or an alternative character folder to refer to from your current character. -Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini - - - - - Remove the currently selected iniswap from the list and return to the original character folder. - Remova o iniswap atualmente selecionado da lista e retorne à pasta de caracteres original. - - - - Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). -Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini - Configure um efeito sonoro para tocar no seu próximo 'Preanim'. Deixá-lo no padrão usará o som definido pelos emoticons (caso existam). -Edite digitando e pressionando Enter, [X] para excluir. Isso é salvo em base/characters/<charname>/soundlist.ini - - - - Remove the currently selected sound effect. - - - - - Choose an effect to play on your next spoken message. -The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by -char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. - Escolha um efeito para reproduzir na sua próxima mensagem falada. -Os efeitos são definidos em theme / effects / effects.ini. Seu personagem pode definir efeitos personalizados ao -categoria char.ini [Opções], effects = 'miscname', onde se refere a misc/<miscname>/effects.ini to read the effects. - - - - Hold It! - Um momento! - - - - - - When this is turned on, your next in-character message will be a shout! - Quando isso estiver ativado, sua próxima mensagem do personagem será um grito. - - - - Objection! - Protesto! - - - - Take That! - Tome isso! - - - - Toggle between server chat and global AO2 chat. - Alterne entre o bate-papo do servidor e o global. - - - - - - - This will display the animation in the viewport as soon as it is pressed. - Isso exibirá a animação na janela de visualização assim que for pressionada. - - - - Guilty! - Culpado! - - - - Bring up the Character Select Screen and change your character. - Abra a tela de seleção de personagem e mude seu personagem. - - - - Refresh the theme and update all of the ui elements to match. - Atualize o tema e todos os elementos da interface do usuário para corresponder. - - - - Request the attention of the current server's moderator. - Solicite a atenção do moderador do servidor atual. - - - - Allows you to change various aspects of the client. - Permite alterar vários aspectos do cliente. - - - - An interface to help you announce a case (you have to be a CM first to be able to announce cases) - Uma interface para ajudá-lo a anunciar um caso (deve ser um CM para poder anunciar casos) - - - - Switch between Areas and Music lists - Alterne entre áreas e listas de músicas - - - - Play a single-shot animation as defined by the emote when checked. - Reproduza uma animação de tiro único, conforme definido pelo emote, quando marcada. - - - - If preanim is checked, display the input text immediately as the animation plays concurrently. - Se pré-impressão estiver marcada, exiba o texto de entrada imediatamente enquanto a animação estiver sendo reproduzida simultaneamente. - - - - Mirror your character's emotes when checked. - Reflita os gestos do seu personagem quando marcado. - - - - Add text to your last spoken message when checked. - Adicione texto à sua última mensagem falada quando marcado. - - - - Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. - Você não ouve chamadas de moderação quando marcado, impedindo-os de tocar sons ou concentrando a atenção na janela. - - - - Lets you receive case alerts when enabled. -(You can set your preferences in the Settings!) - Permite que você receba alertas de caso quando ativado. -(Você pode configurar suas preferências em Configurações!) - - - - Display customized shownames for all users when checked. - Mostrar nomes personalizados para todos os usuários quando marcado. - - - - Custom Shout! - Grito personalizado! - - - - This will display the custom character-defined animation in the viewport as soon as it is pressed. -To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect - Isso exibirá a animação de caracteres personalizados definida na viewport assim que for pressionada. -Para criar uma, a pasta do seu personagem deve conter efeitos personalizados [webp/apng/gif/png]. E efeitos sonoros personalizados [wav/ogg/opus] - - - - Play realization sound and animation in the viewport on the next spoken message when checked. - Tocar animação de som e performance na janela de desenho na seguinte mensagem falada quando marcada. - - - - Shake the screen on next spoken message when checked. - Agite a tela na próxima mensagem falada quando marcada. - - - - Display the list of character folders you wish to mute. - Exibe a lista de pastas de caracteres que você deseja silenciar. - - - - - Increase the health bar. - Aumente a barra de saúde. - - - - - Decrease the health bar. - Abaixe a barra de saúde. - - - - Change the text color of the spoken message. -You can also select a part of your currently typed message and use the dropdown to change its color! - Mude a cor do texto no chat IC. -Você também pode selecionar uma parte da sua mensagem escrita no momento e usar o menu suspenso para alterar sua cor! - - - - Return back to the server list. - Retorne à lista de servidores. - - - - Become a spectator. You won't be able to interact with the in-character screen. - Torne-se um espectador. Você não será capaz de interagir como personagem. - - - - - - - CLIENT - - - - - Login unsuccessful. - - - - - You were logged out. - - - - - HOLD IT! - - - - - OBJECTION! - - - - - TAKE THAT! - - - - - CUSTOM OBJECTION! - - - - - - - - shouts - - - - - - - has presented evidence - apresentou evidência - - - - - - has stopped the music - - - - - [LOADING] %1 - - - - - Debug - - - - - - has played a song - tocou a música - - - You will now pair up with %1 if they also choose your character in return. - Agora você será emparelhado com %1 se também escolher seu personagem. - - - You are no longer paired with anyone. - Você não está mais fazendo par com ninguém. - - - Are you sure you typed that well? The char ID could not be recognised. - Você tem certeza que você escreveu isso certo? O ID do personagem não pôde ser encontrado. - - - You have set your offset to - Você definiu seu deslocamento como - - - Your offset must be between -100% and 100%! - Seu deslocamento deve estar entre -100% e 100%! - - - That offset does not look like one. - Esse deslocamento não se parece com um. - - - You switched your music and area list. - Você mudou sua lista de músicas e áreas. - - - You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. - Você forçou recursos que o servidor pode não suportar. Você pode não conseguir falar de IC, ou pior, por causa disso. - - - Your pre-animations interrupt again. - Suas pré-animações interrompem novamente. - - - Your pre-animations will not interrupt text. - Suas pré-animações não interromperão o texto. - - - Couldn't open chatlog.txt to write into. - Não foi possível abrir o chatlog.txt para gravar. - - - The IC chatlog has been saved. - O chat do IC foi salvo. - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. - Você não possui uma pasta `base/cases/`! Foi feito para você, mas, como foi feito para você, provavelmente o arquivo do caso que você está procurando não pode ser encontrado lá. - - - - You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. -Cases you can load: %1 - Você precisa fornecer um nome de arquivo para carregar (extensão não necessária)! Verifique se está na pasta `base/cases/` e se é um ini formatado corretamente. -Casos que você pode carregar: %1 - - - - Too many arguments to load a case! You only need one filename, without extension. - Muitos argumentos para carregar um caso! Você só precisa de um nome de arquivo, sem extensão. - - - - Case made by %1. - Caso feito por %1. - - - - Navigate to %1 for the CM doc. - Navegue para %1 para o documento do CM. - - - - - - - UNKNOWN - - - - - Your case "%1" was loaded! - Seu caso "%1" foi carregado! - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. - Você não possui uma pasta `base/cases/`! Foi feito para você, mas, como foi feito para você, é provável que você o tenha excluído. - - - - You need to give a filename to save (extension not needed) and the courtroom status! - Você deve fornecer um nome de arquivo para salvar (sem extensão necessária) e o estado do tribunal! - - - Too many arguments to save a case! You only need a filename without extension and the courtroom status. - Muitos argumentos para salvar um caso! Você só precisa de um nome de arquivo sem extensão e o estado do tribunal. - - - - Too many arguments to save a case! You only need a filename without extension and the courtroom status! - Muitos argumentos para salvar um caso! Você só precisa de um nome de arquivo sem extensão e o estado do tribunal. - - - - Succesfully saved, edit doc and cmdoc link on the ini! - Salvo com sucesso, você pode editar o documento e o link do documento no arquivo ini! - - - - Stop Current Song - - - - - Play Random Song - Tocar música aleatória - - - - Expand All Categories - Expandir todas as categorias - - - - Collapse All Categories - Recolher todas as categorias - - - - Fade Out Previous - Desvanecer Anterior - - - - Fade In - Aparecimento gradual - - - - Synchronize - Sincronizar - - - - Default - Predeterminado - - - - Reason: - Razão: - - - - Call Moderator - Chamar um Moderador - - - - - Error - Erro - - - - You must provide a reason. - Você deve fornecer um motivo. - - - - The message is too long. - A mensagem é muito longa. - - - Choose... - Escolha... - - - - Present this piece of evidence to everyone on your next spoken message - Apresente essa evidência a todos na sua próxima mensagem falada - - - - Save evidence to an .ini file. - Salve evidências em um arquivo .ini. - - - - Load evidence from an .ini file. - Carregar evidências de um arquivo .ini. - - - - Destroy this piece of evidence - Destrua esta evidência - - - - Choose.. - Escolher.. - - - - Close the evidence display/editing overlay. -You will be prompted if there's any unsaved changes. - Feche a sobreposição para visualizar/editar evidências. -Você será perguntado se existem alterações não salvas. - - - - Save any changes made to this piece of evidence and send them to server. - Salve as alterações feitas nesta evidência e envie-as para o servidor. - - - Double-click to edit. Press [X] to update your changes. - Clique duas vezes para editar. Pressione [X] para atualizar suas alterações. - - - - Click to edit. Press [X] to update your changes. - - - - - Bring up the Evidence screen. - Abra a tela de evidências. - - - - Switch evidence to private inventory. - Enviar evidência para inventário privado. - - - - Switch evidence to global inventory. - Mude a evidência para o inventário global. - - - - - Transfer evidence to private inventory. - Transfira evidências para o inventário privado. - - - - - Transfer evidence to global inventory. - Transfira evidências para o inventário global. - - - - The piece of evidence you've been editing has changed. - A evidência que você está editando mudou. - - - - Do you wish to keep your changes? - Deseja manter suas alterações? - - - - Name: %1 -Image: %2 -Description: -%3 - Nome: %1 -Imagem: %2 -Descrição: -%3 - - - - Images (*.png) - Imagens (* .png) - - - - - - Click to edit... - - - - Double-click to edit... - Clique duas vezes para editar... - - - - Add new evidence... - Adicionar nova evidência... - - - - Evidence has been modified. - A evidência foi modificada. - - - - Do you want to save your changes? - Você quer salvar suas mudanças? - - - - Current evidence is global. Click to switch to private. - A evidência atual é global. Clique para mudar para privado. - - - - Current evidence is private. Click to switch to global. - A evidência atual é privada. Clique para mudar para global. - - - - "%1" has been transferred. - "%1" foi transferido. - - - - Save Inventory - Salvar inventário - - - - - Ini Files (*.ini) - Arquivos INI (* .ini) - - - - Open Inventory - Abrir inventário - - - - DemoServer - - - - Load Demo - - - - - - Demo Files (*.demo) - - - - - - Demo file loaded. Send /play or > in OOC to begin playback. - - - - - Resuming playback. - - - - - Pausing playback. - - - - - Setting max_wait to - - - - - - milliseconds. - - - - - Not a valid integer! - - - - - Current max_wait is - - - - - Current demo file reloaded. Send /play or > in OOC to begin playback. - - - - - min_wait is deprecated. Use the client Settings for minimum wait instead! - - - - - Setting debug mode to %1 - - - - - Valid values are 1 or 0! - - - - - Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. - - - - - Available commands: -load, reload, play, pause, max_wait, debug, help - - - - - Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. - - - - - Lobby - - - Attorney Online %1 - Attorney Online %1 - - - - Search - Pesquisar - - - Name - Nome - - - - It doesn't look like your client is set up correctly. -Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - Seu cliente não parece estar configurado corretamente. -Você baixou todos os recursos corretamente do tiny.cc/getao, incluindo a grande pasta 'base'? - - - - Version: %1 - Versão: %1 - - - - Settings - Configurações - - - - Allows you to change various aspects of the client. - Permite alterar vários aspectos do cliente. - - - - - Offline - Offline - - - - Loading - Carregando - - - - Cancel - Cancelar - - - - <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 - - - - - Couldn't get the message of the day. - - - - - Version: %1 (!) - - - - - New version available: %1 - - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 - <h2>Attorney Online %1</h2>O simulador de drama jurídico<p><b>Código fonte:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Desenvolvimento principal:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Desenvolvimento de cliente:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Teste de controle de qualidade:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Agradecimentos especiais:</b><br>CrazyJC y MaximumVolty (versão 2.8); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, y FanatSors (AO1); server hosts, game masters, case makers, criadores de conteúdo e toda a comunidade AO2.<p>O projeto Attorney Online possui direitos autorais (c) 2016-2020 Attorney Online developers. Aplicam-se licenças de código aberto. Todos os outros ativos são de propriedade de seus respectivos proprietários.<p>Usando a versão Qt %2 com o mecanismo de áudio BASS..<br>Plugin APNG carregado: %3<p>Compilado em %4 - - - - Yes - Sim - - - - No - Não - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the %3 audio engine.<p>Built on %4 - <h2>Attorney Online %1</h2>O simulador de drama jurídico<p><b>Código fonte:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Desenvolvimento principal:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Desenvolvimento de cliente:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Teste de controle de qualidade:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Agradecimentos especiais:</b><br>CrazyJC y MaximumVolty (versão 2.8); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, y FanatSors (AO1); server hosts, game masters, case makers, criadores de conteúdo e toda a comunidade AO2.<p>O projeto Attorney Online possui direitos autorais (c) 2016-2020 Attorney Online developers. Aplicam-se licenças de código aberto. Todos os outros ativos são de propriedade de seus respectivos proprietários.<p>Usando a versão Qt %2 com o mecanismo de áudio %3.<p>Compilado em %4 - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC and MaximumVolty (2.8 release); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the %3 audio engine.<p>Built on %4 - <h2>Attorney Online %1</h2>O simulador de drama jurídico<p><b>Código fonte:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Desenvolvimento principal:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Desenvolvimento de cliente:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Teste de controle de qualidade:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Agradecimentos especiais:</b><br>CrazyJC y MaximumVolty (versão 2.8); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, y FanatSors (AO1); server hosts, game masters, case makers, criadores de conteúdo e toda a comunidade AO2.<p>O projeto Attorney Online possui direitos autorais (c) 2016-2020 Attorney Online developers. Aplicam-se licenças de código aberto. Todos os outros ativos são de propriedade de seus respectivos proprietários.<p>Usando a versão Qt %2 com o mecanismo de áudio %3.<p>Compilado em %4 - - - - About - Sobre - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Cents02<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy, Raidensnake - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Cents02<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy, Raidensnake - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - <h2>Attorney Online %1</h2>O simulador de drama jurídico<p><b>Código fonte:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Desenvolvimento principal:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Agradecimentos especiais:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - - - - Online: %1/%2 - Online: %1/%2 - - - - NetworkManager - - - No description provided. - - - - - QDialogButtonBox - - - - OK - - - - - QObject - - - None - Nada - - - - [MISSING] %1 - - - - - [STREAM] %1 - - - - - chatlogpiece - - - - - UNKNOWN - - - - has played a song: - tocou a música: - - - - debug_functions - - - Error: %1 - - - - - Error - - - - - Notice - - - - diff --git a/resource/translations/ao_ru.qm b/resource/translations/ao_ru.qm deleted file mode 100644 index cc1ddb42..00000000 Binary files a/resource/translations/ao_ru.qm and /dev/null differ diff --git a/resource/translations/ao_ru.ts b/resource/translations/ao_ru.ts deleted file mode 100644 index dcc09128..00000000 --- a/resource/translations/ao_ru.ts +++ /dev/null @@ -1,2078 +0,0 @@ - - - - - AOApplication - - - Disconnected from server. - Соединение с сервером разорвано. - - - Error connecting to master server. Will try again in %1 seconds. - Ошибка соединения с главным сервером. Повторная попытка соединения через %1 с. - - - There was an error connecting to the master server. -We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. -Please check your Internet connection and firewall, and please try again. - Не удалось соединиться с главным сервером. -Мы используем несколько главных серверов для того, чтобы сократить время простоя, но клиент перепробовал все возможные варианты и не смог подключиться ни к одному из серверов. -Пожалуйста, проверьте ваши настройки браундмауэра и соединение с Интернетом попробуйте перезайти. - - - Outdated version! Your version: %1 -Please go to aceattorneyonline.com to update. - Устаревшая версия! У вас установлена версия %1 -Пройдите на сайт aceattorneyonline.com для обновления. - - - You have been exiled from AO. -Have a nice day. - Вас изгнали из AO. -Всего хорошего. - - - Attorney Online - Attorney Online - - - - Loading - Загрузка - - - Loading evidence: -%1/%2 - Загрузка улик: -%1/%2 - - - - Loading music: -%1/%2 - Загрузка музыки: -%1/%2 - - - - Loading chars: -%1/%2 - Загрузка персонажей: -%1/%2 - - - - Attorney Online %1 - Attorney Online %1 - - - - [Global log] - - - - - You have been kicked from the server. -Reason: %1 - Вас выпнули с сервера. -Причина: %1 - - - - You have been banned from the server. -Reason: %1 - Вы были забанены на сервере. -Причина: %1 - - - - You are banned on this server. -Reason: %1 - Вы забанены на этом сервере. -Причина: %1 - - - You have been kicked from the server. -Reason: - Вас выпнули с сервера. -Причина: - - - You are banned on this server. -Reason: - Вы забанены на этом сервере. -Причина: - - - - Demo playback - - - - - Play back demos you have previously recorded - - - - - AOCaseAnnouncerDialog - - - Case Announcer - Объявление о проведении заседания - - - - Case title: - Название дела: - - - - Defense needed - Нужна защита - - - - Prosecution needed - Нужно обвинение - - - - Judge needed - Нужен судья - - - - Jurors needed - Нужны присяжные - - - - Stenographer needed - Нужен стенографист - - - - AOOptionsDialog - - - Settings - Настройки - - - - Gameplay - Игра - - - - Theme: - Тема: - - - - Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. - Определяет внешний вид игры. Для применения новой темы может понадобиться перезайти на сервер. - - - - Subtheme: - Подтема: - - - - Sets a 'subtheme', which will stack on top of the current theme and replace anything it can.Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. - Определяет подтему, которая ставится поверх текущей темы и заменяет все, что может. -Выберите "сервер", чтобы оставить выбор за сервером. -Выберите "по умолчанию", чтобы она не менялась. - - - - Reload Theme - Перезагрузить тему - - - - Refresh the theme and update all of the ui elements to match. - Перезагрузить тему и обновить все элементы интерфейса. - - - - Animated Theme: - Анимированные темы: - - - - If ticked, themes will be allowed to have animated elements. - Разрешить темам использовать анимированные элементы. - - - - Log goes downwards: - История чата идёт вниз: - - - - If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. - Показывать новые сообщения в игровом чате снизу (как в ООС-чате), а не сверху (как в AO1). - - - - Log length: - Размер истории игрового чата: - - - The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. - Максимальное количество сообщений, сохраняемых в игровом чате. -При превышении лимита старые сообщения будут удаляться. -Поставьте 0 или отрицательное значение, чтобы снять ограничение. - - - - The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. - Максимальное количество строк сообщений, сохраняемых в игровом чате. -При превышении лимита старые строки будут удаляться. -Поставьте 0 или отрицательное значение, чтобы снять ограничение. - - - - Log newline: - Сохранять перенос строки: - - - - If ticked, new messages will appear separated, with the message coming on the next line after the name. When unticked, it displays it as 'name: message'. - Показывать новое сообщение на следующей строке после имени. -Если опция выключена, сообщения будут отображаться в следующем формате: "имя: сообщение". - - - - Log margin: - Интервал: - - - - The distance in pixels between each entry in the IC log. Default: 0. - Ширина интервала (в пикселях) между сообщениями в истории игрового чата. -Значение по умолчанию: 0. - - - - Log timestamp: - Метки времени: - - - - If ticked, log will contain a timestamp in UTC before the name. - Показывать метки времени в часовом поясе UTC в игровом чате перед именем. - - - - - Log timestamp format: - - - - - - Log IC actions: - Действия: - - - - If ticked, log will show IC actions such as shouting and presenting evidence. - Показывать действия (возгласы, предъявленные улики и пр.) в истории игрового чата. - - - - Text Stay Time: - Задержка текста: - - - - Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. - Минимальное время (в миллисекундах), которое сообщение игрового чата должно отображаться перед показом следующего, образуя очередь. -Поставьте 0 для отключения очереди. - - - - Desynchronize IC Logs: - Независимая история чата: - - - - If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). - Показывать сообщения в истории игрового чата в реальном времени, -а в самом игровом чате - в соответствии с настройками очереди ("Задержка текста"). - - - - Instant Objection: - Возглас без задержки: - - - - If Text Stay Time is more than 0, instant objection will skip queued messages instead of waiting to catch up. - Если "Задержка текста" больше нуля, включение данной опции позволяет отобразить возглас, минуя сообщения в очереди. - - - - Text crawl: - Скорость вывода: - - - - Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. - Время задержки (в миллисекундах) после показа каждой буквы в игровом чате. - - - - Chat Rate Limit: - Частота отправки: - - - - Minimum amount of time (in miliseconds) that must pass before the next Enter key press will send your IC message. - Минимальное время (в миллисекундах), которое должно пройти, -прежде чем нажатие Enter снова отправит ваше сообщение в игровой чат. - - - - Default username: - Никнейм по умолчанию: - - - - Your OOC name will be automatically set to this value when you join a server. - Псевдоним по умолчанию для ООС-чата. - - - - Custom shownames: - Пользовательские имена: - - - - Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. - Значение по умолчанию для переключателя "Пользовательские имена" в основном окне приложения. - - - - Default showname: - - - - - Your showname will be automatically set to this value when you join a server. - - - - Backup MS: - Запасной ГС: - - - If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. - Если клиент не сможет соединиться со встроенным главным сервером (ГС), он проверит адреса из этого списка. - - - - Alternate Server List: - - - - - Overrides the base URL to retrieve server information from. - - - - - Discord: - Discord: - - - - Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. - Показывать в Discord сервер, на котором вы играете, вашего персонажа и продолжительность игры. - - - - Language: - Язык: - - - - Sets the language if you don't want to use your system language. - Изменяет язык интерфейса приложения, если вы не хотите использовать язык системы. - - - - - Keep current setting - - сохранить текущие настройки - - - - Scaling: - - - - - Sets the default scaling method, if there is not one already defined specifically for the character. - - - - - Pixel - - - - - Smooth - - - - - Allow Screenshake: - Встряска экрана: - - - - Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Разрешить показ встрясок экрана. -Отключите, если вы страдаете от светочувствительности и/или припадков. - - - - Allow Effects: - Визуальные эффекты: - - - - Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. - Разрешить показ визуальных эффектов. -Отключите, если вы страдаете от светочувствительности и/или припадков. - - - - Network Frame Effects: - Эффекты по сети: - - - - Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. - Разрешить отправку звуков, эффектов вспышек и встряски экрана по сети в соответствии с char.ini. -Работает только на серверах, поддерживающих данную функцию. - - - - Colors in IC Log: - Цвета в истории чата: - - - - Use the markup colors in the server IC chatlog. - Отображать цвета в истории игрового чата. - - - - Sticky Sounds: - Закрепить звуки: - - - - Turn this on to prevent the sound dropdown from clearing the sound after playing it. - Не сбрасывать выбранные настройки звука после его воспроизведения. - - - - Sticky Effects: - Закрепить эффекты: - - - - Turn this on to prevent the effects dropdown from clearing the effect after playing it. - Не сбрасывать выбранные настройки эффекта после его воспроизведения. - - - - Sticky Preanims: - Закрепить пред. анимации: - - - - Turn this on to prevent preanimation checkbox from clearing after playing the emote. - Не сбрасывать настройки пред. анимации после её воспроизведения. - - - - Custom Chatboxes: - Пользовательские подложки: - - - - Turn this on to allow characters to define their own custom chat box designs. - Отображать дизайны подложек, заданные персонажами. - - - - Stickers: - Стикеры: - - - - Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). - Разрешить персонажам задавать собственные стикеры -(уникальные изображения, отображающиеся поверх подложки; -как аватарки или пользовательские имена). - - - - Continuous Playback: - Непрерывное воспроизведение: - - - - Whether or not to resume playing animations from where they left off. Turning off might reduce lag. - Продолжать воспроизведение анимации с того места, где она остановилась. -Отключение этой опции может помочь ускорить работу приложения. - - - - Stop Music w/ Category: - Останавливать музыку категориями: - - - - Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. - Останавливать музыку по двойному клику на названии категории. -Если эта опция отключена, воспользуйтесь контекстным меню, чтобы остановить музыку. - - - - Log to Text Files: - - - - - Text logs of gameplay will be automatically written in the /logs folder. - - - - - Log to Demo Files: - - - - - Gameplay will be automatically recorded as demos in the /logs folder. - - - - - Callwords - Позывные - - - - <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - <html><head/><body>Введите в поле выше свои позывные. Если кто-то в чате напишет их, вы услышите звуковой сигнал. Регистр символов не учитывается.<br>Каждый позывной должен быть на отдельной строке. Не оставляйте в конце строк пробелы, иначе вы будете получать оповещения о каждом пробеле в чате.</body></html> - - - - Audio - Аудио - - - - Audio device: - Устройство вывода: - - - - Sets the audio device for all sounds. - Укажите устройство воспроизведения всего аудио приложения. - - - - Music: - Музыка: - - - - Sets the music's default volume. - Громкость музыки по умолчанию. - - - - SFX: - Звук. эффекты: - - - - Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - Громкость звуковых эффектов по умолчанию. В эту категорию также входят возгласы. - - - - Blips: - Сигналы: - - - - Sets the volume of the blips, the talking sound effects. - Громкость сигналов, заменяющих голос, по умолчанию. - - - - Blip rate: - Частота сигналов: - - - - Sets the delay between playing the blip sounds. - Задержка по умолчанию между сигналами, заменяющими голос. - - - - Play a blip sound "once per every X symbols", where X is the blip rate. 0 plays a blip sound only once. - - - - - Add or remove base folders for use by assets. Base folders on the bottom are prioritized over those above them. - - - - - Couldn't get the privacy policy. - - - - Play a blip sound "once per every X symbols", where X is the blip rate. - Проигрывать сигнал каждые Х символов. - - - - Blank blips: - Пустые сигналы: - - - - If true, the game will play a blip sound even when a space is 'being said'. - Проигрывать сигналы даже для пробелов. - - - - Enable Looping SFX: - Повтор звук. эффектов: - - - - If true, the game will allow looping sound effects to play on preanimations. - Разрешить воспроизведение зацикленных звуковых эффектов во время предварительной анимации. - - - - Kill Music On Objection: - Тишина при протесте: - - - - If true, AO2 will ask the server to stop music when you use 'Objection!' - Клиент будет просить сервер останавливать музыку, когда вы протестуете. - - - - Assets - - - - - Add… - - - - - Select a base folder - - - - - Remove - - - - - ↑ - - - - - ↓ - - - - - Clear Cache - - - - - Clears the lookup cache for assets. Use this when you have added an asset that takes precedence over another existing asset. - - - - - Privacy - - - - - Do not include me in public player counts - - - - - Getting privacy policy... - - - - - %1 (default) - - - - If true, AO2 will stop the music for you when you or someone else does 'Objection!'. - Останавливать музыку, когда кто-то протестует. - - - - Casing - Заседания - - - - This server supports case alerts. - Сервер поддерживает объявления заседаний. - - - - This server does not support case alerts. - Сервер не поддерживает объявления заседаний. - - - - Pretty self-explanatory. - Дополнительные пояснения не требуются. - - - - Casing: - Заседания: - - - - If checked, you will get alerts about case announcements. - Получать уведомления при объявлении заседаний. - - - - Defense: - Защита: - - - - If checked, you will get alerts about case announcements if a defense spot is open. - Получать уведомления при объявлении дел, в которых нужна сторона защиты. - - - - Prosecution: - Обвинение: - - - - If checked, you will get alerts about case announcements if a prosecutor spot is open. - Получать уведомления при объявлении дел, в которых нужна сторона обвинения. - - - - Judge: - Судья: - - - - If checked, you will get alerts about case announcements if the judge spot is open. - Получать уведомления при объявлении дел, в которых нужен судья. - - - - Juror: - Присяжные: - - - - If checked, you will get alerts about case announcements if a juror spot is open. - Получать уведомления при объявлении дел, в которых нужны присяжные заседатели. - - - - Stenographer: - Стенографист: - - - - If checked, you will get alerts about case announcements if a stenographer spot is open. - Получать уведомления при объявлении дел, в которых нужен стенографист. - - - - CM: - ПД: - - - - If checked, you will appear amongst the potential CMs on the server. - Отметьте, если хотите состоять в числе возможных производителей дел (ПД). - - - - Hosting cases: - Проведение дел: - - - - If you're a CM, enter what cases you are willing to host. - Если вы производитель дел (ПД), укажите, какими делами вы хотите заниматься. - - - Automatic Logging: - Авт. сохранение истории: - - - If checked, all logs will be automatically written in the /logs folder. - Автоматически сохранять всю историю чатов в папке /logs. - - - - Courtroom - - - Password - Пароль - - - - Spectator - Зритель - - - - - Search - Поиск - - - - Passworded - Защищён паролем - - - - Taken - Занят - - - - Could not find character (char.ini) for %1 - - - - - Generating chars: -%1/%2 - Генерация персонажей: -%1/%2 - - - Generating chars: - - Генерация персонажей: - - - - - Showname - Имя - - - - Message - Сообщение - - - - Name - Никнейм - - - - Pre - Пред. анимация - - - - Flip - Отразить - - - - Guard - Не беспокоить - - - - Additive - Дополнять - - - - - Casing - Заседания - - - - Shownames - Польз. имена - - - - Immediate - Говорить сразу - - - White - Белый - - - Green - Зелëный - - - Red - Красный - - - Orange - Оранжевый - - - Blue - Синий - - - Yellow - Жëлтый - - - This does nothing, but there you go. - В общем-то, это ни на что не влияет... - - - - You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. -Cases you can load: %1 - Укажите имя файла с делом (без расширения) для загрузки. -Убедитесь, что он расположен в папке `base/cases`, и что это правильно отформатированный файл .ini. -Вы можете загрузить следующие дела: %1 - - - - Case made by %1. - Автор дела: %1. - - - - Navigate to %1 for the CM doc. - Откройте %1 для получения материалов дела. - - - - Your case "%1" was loaded! - Ваше дело "%1" было загружено! - - - - - Server - Сервер - - - - - None - Нет - - - - % x offset - % сдвига по горизонтали - - - - % y offset - % сдвига по вертикали - - - - Log goes down - - - - - Log goes up - - - - - Change the horizontal percentage offset of your character's position from the center of the screen. - Изменить сдвиг персонажа по горизонтали относительно центра экрана. - - - - Change the vertical percentage offset of your character's position from the center of the screen. - Изменить сдвиг персонажа по вертикали относительно центра экрана. - - - - Reset your character's supplementary background to its default. - Сбросить фон вашего персонажа. - - - - Set an 'iniswap', or an alternative character folder to refer to from your current character. -Edit by typing and pressing Enter, [X] to remove. This saves to your base/iniswaps.ini - Включить т.н. подмену ini – альтернативную папку персонажа, к которой будет обращаться текущий персонаж. -Введите имя персонажа и нажмите Enter; нажмите [X], чтобы удалить. -Изменения сохраняются по следующему пути: base/iniswaps.ini - - - - Remove the currently selected sound effect. - Удалить выбранный звуковой эффект. - - - - Hold It! - Стоп! - - - - - - When this is turned on, your next in-character message will be a shout! - Когда эта опция включена, ваше следующее сообщение в игровом чате будет с возгласом! - - - - Objection! - Протестую! - - - - Take That! - Вот! - - - - Toggle between server chat and global AO2 chat. - Переключатель между чатом сервера и общим чатом AO2. - - - - - - - This will display the animation in the viewport as soon as it is pressed. - Анимация будет показана в игровом чате сразу после нажатия. - - - - Guilty! - Виновен! - - - - Bring up the Character Select Screen and change your character. - Перейти на экран выбора и сменить персонажа. - - - - Refresh the theme and update all of the ui elements to match. - Перезагрузить тему и обновить все элементы интерфейса. - - - - Request the attention of the current server's moderator. - Привлечь внимание модератора сервера. - - - - Allows you to change various aspects of the client. - Изменить параметры работы приложения. - - - - An interface to help you announce a case (you have to be a CM first to be able to announce cases) - Открыть окно, которое позволит вам объявить о деле -(для этого нужно быть производителем дел (ПД)) - - - - Switch between Areas and Music lists - Переключиться между списками музыки и локаций. - - - - Play a single-shot animation as defined by the emote when checked. - Показать разовую предварительную анимацию, -соответствующую выбранной эмоции. - - - - If preanim is checked, display the input text immediately as the animation plays concurrently. - Если включена предварительная анимация: -выводить текст, не дожидаясь окончания предварительной анимации. - - - - Mirror your character's emotes when checked. - Отразить анимации персонажа по горизонтали. - - - - Add text to your last spoken message when checked. - Добавлять текст к своему последнему сообщению. - - - - Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. - Заглушить вызовы модератора: вы не будете получать звуковые оповещения, -а окно приложения не будет привлекать к себе внимание. - - - - Lets you receive case alerts when enabled. -(You can set your preferences in the Settings!) - Получать уведомления о заседаниях. -(См. подробнее в настройках) - - - - Display customized shownames for all users when checked. - Показывать пользовательские имена для всех игроков. - - - - Custom Shout! - Пользовательский возглас! - - - - This will display the custom character-defined animation in the viewport as soon as it is pressed. -To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect - Показать в игровом чате уникальную для персонажа анимацию сразу после нажатия. -Для добавления такой анимации поместите в папку персонажа файлы custom.webp/apng/gif/png и custom.wav/ogg/opus. - - - - Play realization sound and animation in the viewport on the next spoken message when checked. - Показать вспышку и воспроизвести звук озарения во время вывода следующей реплики. - - - - Shake the screen on next spoken message when checked. - Потрясти экран во время вывода следующей реплики. - - - - Display the list of character folders you wish to mute. - Выбрать персонажей, которых нужно игнорировать. - - - - - Increase the health bar. - Поощрить - - - - - Decrease the health bar. - Оштрафовать - - - - Change the text color of the spoken message. -You can also select a part of your currently typed message and use the dropdown to change its color! - Изменить цвет текста сообщения. -Вы также можете выделить часть текста и изменить только её цвет в выпадающем меню. - - - - Back to Lobby - Назад в лобби - - - - Login unsuccessful. - - - - - You were logged out. - - - - - HOLD IT! - СТОП! - - - - OBJECTION! - ПРОТЕСТУЮ! - - - - TAKE THAT! - ВОТ! - - - - CUSTOM OBJECTION! - СВОЮ РЕПЛИКУ! - - - - - - - shouts - выкрикнул(а) - - - - - - has presented evidence - предъявил(а) улику - - - - - - has stopped the music - остановил(а) музыку - - - - [LOADING] %1 - - - - - Debug - - - - [STREAM] %1 - [ТРАНСЛЯЦИЯ] %1 - - - [MISSING] %1 - [НЕ НАЙДЕНО] %1 - - - - - has played a song - включил(а) композицию - - - You will now pair up with %1 if they also choose your character in return. - Вы встанете рядом с %1, если он(а) выберет вашего персонажа. - - - You have set your offset to %1%%. - Сдвиг вашего персонажа: %1%%. - - - Rainbow - Радужный - - - Pink - Розовый - - - Cyan - Голубой - - - % offset - % сдвига - - - - To front - Спереди - - - - To behind - Сзади - - - - Select a character you wish to pair with. - Выберите персонажа, рядом с которым хотите встать. - - - Change the percentage offset of your character's position from the center of the screen. - Изменить процент сдвига вашего персонажа относительно центра экрана. - - - - Change the order of appearance for your character. - Переместить вашего персонажа вперёд или назад относительно партнёра. - - - - Display the list of characters to pair with. - Показать список персонажей, с которыми можно встать рядом. - - - - Oops, you're muted! - Вам запретили отправлять сообщения. - - - - Set your character's emote to play on your next message. - Выберите эмоцию для отображения при выводе вашего следующего сообщения. - - - - Set your character's supplementary background. - Установить фон для вашего персонажа. - - - Set an 'iniswap', or an alternative character folder to refer to from your current character. -Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/iniswaps.ini - Включить т.н. подмену ini – альтернативную папку персонажа, к которой будет обращаться текущий персонаж. -Введите имя персонажа и нажмите Enter; нажмите [X], чтобы удалить. -Изменения сохраняются по следующему пути: base/characters/<имя_персонажа>/iniswaps.ini - - - - Remove the currently selected iniswap from the list and return to the original character folder. - Удалить выбранного для подмены ini персонажа и вернуться к папке изначально выбранного персонажа. - - - - Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). -Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini - Выберите звук, который нужно воспроизвести со следующей пред. анимацией. -Если выбрано "по умолчанию", вы услышите звук, заданный пред. анимацией (если он есть). -Выберите или введите название звука и нажмите Enter; нажмите [X], чтобы удалить. -Изменения сохраняются по следующему пути: base/characters/<имя_персонажа>/soundlist.ini - - - - Choose an effect to play on your next spoken message. -The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by -char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. - Выберите эффект, который нужно воспроизвести с вашим следующим сообщением. -Эффекты определяются файлом theme/effects/effects.ini. Ваш персонаж может задать собственные эффекты -в категории [Options] файла char.ini, effects = 'название', что отсылает к файлу misc/<название>/effects.ini. - - - - Music - Музыка - - - - Sfx - Звук. эффекты - - - - Blips - Сигналы - - - - Change character - Сменить персонажа - - - - Reload theme - Перезагрузить тему - - - - Call mod - Позвать модератора - - - - Settings - Настройки - - - - A/M - Л/М - - - - Preanim - Пред. анимации - - - - Return back to the server list. - Вернуться к списку серверов. - - - - Become a spectator. You won't be able to interact with the in-character screen. - Зайти в качестве зрителя. Вы не сможете взаимодействовать с игровым чатом. - - - - You were granted the Disable Modcalls button. - Теперь у вас есть кнопка "Не беспокоить". - - - - - - - CLIENT - КЛИЕНТ - - - - You have been banned. - Вас забанили. - - - You were granted the Guard button. - Теперь у вас есть кнопка "Охрана". - - - You opened the settings menu. - Вы открыли меню настроек. - - - You will now pair up with - Вы встанете парой с персонажем по имени - - - if they also choose your character in return. - (если он выберет вас в ответ). - - - You are no longer paired with anyone. - Вы больше не стоите рядом ни с кем. - - - Are you sure you typed that well? The char ID could not be recognised. - Убедитесь в правильности введённой информации: персонаж с таким ID не найден. - - - You have set your offset to - Вы установили сдвиг персонажа на - - - Your offset must be between -100% and 100%! - Сдвиг персонажа должен быть между -100% и 100%! - - - That offset does not look like one. - Неверный сдвиг персонажа. - - - You have set your vertical offset to %1%%. - Сдвиг вашего персонажа по вертикали: %1%%. - - - Your vertical offset must be between -100% and 100%! - Сдвиг персонажа по вертикали должен быть между -100% и 100%! - - - That vertical offset does not look like one. - Неверный сдвиг персонажа по вертикали. - - - You switched your music and area list. - Вы переключились между списками локаций и музыки. - - - You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. - Из-за того, что вы включили не поддерживаемые сервером возможности, он может не принять ваши сообщения. -Возможны и менее приятные последствия. - - - Your pre-animations interrupt again. - Персонаж будет говорить только после предварительной анимации. - - - Your pre-animations will not interrupt text. - Предварительные анимации не будут прерывать вывод текста. - - - Couldn't open chatlog.txt to write into. - Невозможно открыть chatlog.txt для записи. - - - The IC chatlog has been saved. - История игрового чата сохранена. - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. - Файл с делом не найден. Если найдёте, положите его в папку `base/cases/`, которую мы для вас создали. - - - - Too many arguments to load a case! You only need one filename, without extension. - Не удалось загрузить дело! Введите имя файла без расширения. - - - - - - - UNKNOWN - н/д - - - - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. - Папка `base/cases/` отсутствует. Она была создана. - - - - You need to give a filename to save (extension not needed) and the courtroom status! - Введите имя файла (без расширения) и укажите статус зала суда. - - - - Too many arguments to save a case! You only need a filename without extension and the courtroom status! - Убедитесь, что имя файла введено без расширения и указан статус зала суда. - - - - Succesfully saved, edit doc and cmdoc link on the ini! - Сохранение прошло успешно. Ссылки на документы можно редактировать в ini. - - - Master - Мастер - - - - Stop Current Song - Прервать текущую композицию - - - - Play Random Song - Включить случайную композицию - - - - Expand All Categories - Развернуть все категории - - - - Collapse All Categories - Свернуть все категории - - - - Fade Out Previous - Постепенное затухание предыдущей композиции - - - - Fade In - Постепенное нарастание - - - - Synchronize - Синхронизировать - - - - Default - по умолчанию - - - - Reason: - Причина: - - - - Call Moderator - Вызов модератора - - - - - Error - Ошибка - - - - You must provide a reason. - Укажите причину. - - - - The message is too long. - Слишком длинное сообщение. - - - Choose... - Выбрать... - - - - Present this piece of evidence to everyone on your next spoken message - Показать эту улику всем присутствующим вместе с вашим следующим сообщением. - - - - Save evidence to an .ini file. - Сохранить улику в файл .ini. - - - - Load evidence from an .ini file. - Загрузить улику из файла .ini. - - - - Destroy this piece of evidence - Уничтожить эту улику. - - - - Choose.. - Выбрать... - - - - Close the evidence display/editing overlay. -You will be prompted if there's any unsaved changes. - Закрыть окно редактирования улики. -Если вы не сохранили изменения, то увидите диалоговое окно. - - - - Save any changes made to this piece of evidence and send them to server. - Сохранить все изменения, внесённые в улику, и отправить её на сервер. - - - Double-click to edit. Press [X] to update your changes. - Редактирование по двойному клику. Нажмите [X] для обновления. - - - - Click to edit. Press [X] to update your changes. - - - - - Bring up the Evidence screen. - Открыть окно управления уликами. - - - - Switch evidence to private inventory. - Перейти к своему списку. - - - - Switch evidence to global inventory. - Перейти к общему списку. - - - - - Transfer evidence to private inventory. - Перенести улику в свой список. - - - - - Transfer evidence to global inventory. - Перенести улику в общий список. - - - - The piece of evidence you've been editing has changed. - В улику, которую вы редактировали, были внесены изменения. - - - - Do you wish to keep your changes? - Хотите сохранить внесённые изменения? - - - - Name: %1 -Image: %2 -Description: -%3 - Название: %1 -Изображение: %2 -Описание: -%3 - - - - Images (*.png) - Изображения (*.png) - - - - - - Click to edit... - - - - Double-click to edit... - Редактирование по двойному клику... - - - - Add new evidence... - Добавить новую улику... - - - - Evidence has been modified. - Улика была изменена. - - - - Do you want to save your changes? - Хотите сохранить внесённые изменения? - - - - Current evidence is global. Click to switch to private. - Вы видите общий список улик. Нажмите здесь для просмотра своих улик. - - - - Current evidence is private. Click to switch to global. - Вы видите свой список улик. Нажмите здесь для просмотра общих улик. - - - - "%1" has been transferred. - Улика "%1" была перенесена. - - - - Save Inventory - Сохранить список улик - - - - - Ini Files (*.ini) - Файлы ini (*.ini) - - - - Open Inventory - Загрузить список улик - - - - DemoServer - - - - Load Demo - Загрузить демо - - - - - Demo Files (*.demo) - Файлы демо (*.demo) - - - - - Demo file loaded. Send /play or > in OOC to begin playback. - - - - - Resuming playback. - - - - - Pausing playback. - - - - - Setting max_wait to - - - - - - milliseconds. - - - - - Not a valid integer! - - - - - Current max_wait is - - - - - Current demo file reloaded. Send /play or > in OOC to begin playback. - - - - - min_wait is deprecated. Use the client Settings for minimum wait instead! - - - - - Setting debug mode to %1 - - - - - Valid values are 1 or 0! - - - - - Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line. - - - - - Available commands: -load, reload, play, pause, max_wait, debug, help - - - - - Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file. - - - - - Lobby - - Attorney Online - Attorney Online - - - - Attorney Online %1 - Attorney Online %1 - - - - Search - Поиск - - - Name - Никнейм - - - - It doesn't look like your client is set up correctly. -Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - Кажется, ваш клиент неправильно настроен. -Вы точно скачали все ресурсы с tiny.cc/getao, включая огромную папку `base`? - - - - Version: %1 - Версия: %1 - - - - Settings - Настройки - - - - Allows you to change various aspects of the client. - Изменить параметры работы приложения. - - - - Loading - Загрузка - - - - Cancel - Отмена - - - - <h2>Attorney Online %1</h2>The courtroom drama simulator.<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Client development:</b><br>Cents02, windrammer, skyedeving<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2021 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the BASS audio engine.<br>APNG plugin loaded: %3<p>Built on %4 - <h2>Attorney Online %1</h2>Симулятор драмы в зале суда.<p><b>Исходный код:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Основная разработка:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball, in1tiate<p><b>Разработка клиента:</b><br>Cents02, windrammer, skyedeving<p><b>Тестирование:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Translations:</b><br>k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox (Русский), windrammer (Español, Português)<p><b>Благодарности:</b><br>CrazyJC (директор по выпуску версии 2.8) и MaximumVolty (продвижение версии 2.8); Remy, Hibiki, court-records.net (спрайты); Qubrick (webAO); Rue (вебсайт); Draxirch (дизайн интерфейса); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); держатели серверов, ГМ, ПД, создатели контента, и всё сообщество AO2!<p>Проект сетевой визуальной новеллы Attorney Online (c) 2016-2021 разработчики Attorney Online. Применяется лицензия на открытое ПО. Все прочие файлы являются собственностью их владельцев.<p>Работает на Qt версии %2 с аудио-движком BASS.<br>Плагин APNG загружен: %3<p>Сборка от %4 - - - - Yes - Да - - - - No - Нет - - - - Couldn't get the message of the day. - - - - - Version: %1 (!) - - - - - New version available: %1 - - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the %3 audio engine.<p>Built on %4 - <h2>Attorney Online %1</h2>Симулятор драмы в зале суда<p><b>Исходный код:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Основная разработка:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Разработка клиента:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Тестирование:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Благодарности:</b><br>CrazyJC (директор по выпуску версии 2.8) и MaximumVolty (продвижение версии 2.8); Remy, Hibiki, court-records.net (спрайты); Qubrick (webAO); Rue (вебсайт); Draxirch (дизайн интерфейса); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, и FanatSors (AO1); держатели серверов, ГМ, ПД, создатели контента, и всё сообщество AO2!<p>Проект сетевой визуальной новеллы Attorney Online (c) 2016-2020 разработчики Attorney Online. Применяется лицензия на открытое ПО. Все прочие файлы являются собственностью их владельцев.<p>Работает на Qt версии %2 с аудио-движком %3.<p>Сборка от %4 - - - - About - О программе - - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - <h2>Attorney Online %1</h2>Симулятор судебной драмы<p><b>Исходный код:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Основной разработкой занимались:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Особенная благодарность:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (дизайн интерфейса), Draxirch (дизайн интерфейса), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - - - - Online: %1/%2 - Онлайн: %1/%2 - - - - - Offline - Не в сети - - - - NetworkManager - - - No description provided. - - - - - QDialogButtonBox - - - - OK - - - - - QObject - - - None - Нет - - - - [MISSING] %1 - [НЕ НАЙДЕНО] %1 - - - - [STREAM] %1 - [ТРАНСЛЯЦИЯ] %1 - - - - chatlogpiece - - - - - UNKNOWN - н/д - - - has played a song: - включил(а) композицию: - - - - debug_functions - - - Error: %1 - Ошибка: %1 - - - - Error - Ошибка - - - - Notice - Уведомление - - - diff --git a/resource/ui/direct_connect_dialog.ui b/resource/ui/direct_connect_dialog.ui deleted file mode 100644 index 3cc66207..00000000 --- a/resource/ui/direct_connect_dialog.ui +++ /dev/null @@ -1,70 +0,0 @@ - - - direct_connect_dialog - - - - 0 - 0 - 401 - 77 - - - - Form - - - - - - - - scheme://hostname.domain:port - - - - - - - - - - - Not Connected - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Connect - - - - - - - Cancel - - - - - - - - - - diff --git a/resource/ui/favorite_server_dialog.ui b/resource/ui/favorite_server_dialog.ui deleted file mode 100644 index a1d5f28e..00000000 --- a/resource/ui/favorite_server_dialog.ui +++ /dev/null @@ -1,141 +0,0 @@ - - - add_server_widget - - - - 0 - 0 - 420 - 420 - - - - - 230 - 260 - - - - Form - - - - - - - - Legacy Entry : - - - - - - - - - - Convert - - - - - - - - - - - Display Name: - - - - - - - - - - Hostname : - - - - - - - - - - Port: - - - - - - - 65535 - - - - - - - Protocol : - - - - - - - - TCP - - - - - WEBSOCKET - - - - - - - - Description: - - - - - - - - 0 - 0 - - - - - - - - - - QFrame::Plain - - - Qt::Horizontal - - - - - - - QDialogButtonBox::Close|QDialogButtonBox::Save - - - - - - - - diff --git a/resource/ui/lobby.ui b/resource/ui/lobby.ui deleted file mode 100644 index 40b78596..00000000 --- a/resource/ui/lobby.ui +++ /dev/null @@ -1,706 +0,0 @@ - - - lobby_form - - - - 0 - 0 - 600 - 550 - - - - - 0 - 0 - - - - - 300 - 280 - - - - Qt::CustomContextMenu - - - - - - QWidget#lobby_form { - background-color : rgba(102, 102, 102, 255); -} - -QLabel { - color: white; -} - -QLineEdit { - background-color: rgb(102,102,102); - color: rgb(255, 255, 255); -} - -QTreeWidget { - background-color: rgb(102,102,102); - color: white -} - -QWidget#demo_tab { - border: 1px solid white -} - -QPushButton { - border: 1px solid lightgray; - background-color: rgb(84,33,0); - color: white; - padding: 3; -} - -QPushButton:hover { - border: 1px solid white; - background-color: rgb(122,40,0); -} - -QPushButton:pressed { - border: 1px solid white; - background-color: rgb(125,41,0); - color: white; -} - -QTabBar::tab { - border: 2px solid lightgray; - background-color: rgb(100,41,0); - color: lightgray; - padding: 2; - margin-right: 5px; - margin-left: 5px; - border-bottom: 0; -} - -QTabBar::tab:selected, QTabBar::tab:hover { - color: white; - background-color: rgb(122,40,0); -} - -QTabBar::tab:selected { - background-color: rgb(122,40,0); - border: 2px solid white; - border-bottom: 0; -} - -QTabBar::tab:!selected { - margin-top: 2px; /* make non-selected tabs look smaller */ -} - -QHeaderView::section { - border: 1px solid white; - background-color: rgb(122,40,0); - margin-right: 2px; - padding: 1; -} - -QHeaderView::section:pressed { - background-color: rgb(84,33,0); -} - -QHeaderView::up-arrow -{ - image: url(":/resource/ui/lobby_assets/up-arrow.png"); -} - -QHeaderView::down-arrow -{ - image: url(":/resource/ui/lobby_assets/down-arrow.png"); -} - -QScrollBar:vertical { - background-color: rgba(140,140,140, 255); - color : white -} - -QScrollBar:horizontall { - background-color: rgba(140,140,140, 255); - color : white -} - - - - 0 - - - 4 - - - 2 - - - 4 - - - 0 - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Version: 2.10.1 - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 100 - 0 - - - - Settings - - - - - - - - 0 - 0 - - - - - 100 - 0 - - - - About - - - - - - - - - - Game Lobby - - - - - - - - - - - 0 - 0 - - - - - - - - 3 - 0 - - - - - - - Qt::CustomContextMenu - - - Qt::LeftToRight - - - - - - 0 - - - true - - - - Public Servers - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Search - - - - - - - background-color: rgba(140, 140, 140, 255); -color: rgb(255, 255, 255); - - - Qt::ElideNone - - - true - - - - # - - - AlignTrailing|AlignVCenter - - - - - Name - - - - - - - - - Favorites - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::CustomContextMenu - - - background-color: rgba(140, 140, 140, 255); -color: rgb(255, 255, 255); - - - Qt::ElideNone - - - true - - - - # - - - - - Name - - - - - - - - - Demos - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - background-color: rgba(140, 140, 140, 255); -color: rgb(255, 255, 255); - - - Qt::ElideNone - - - 0 - - - true - - - - Server - - - - - Name - - - - - - - - - - - - - - Add Server - - - - - - - Remove Server - - - - - - - Edit Server - - - - - - - - - - - Direct Connect - - - - - - - Add To Favorites - - - - - - - - - - - Refresh - - - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Minimum - - - - 5 - 20 - - - - - - - - - 2 - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 4 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - color: #F8A818; -background-color: #383838; -border: 1px solid white; - - - Server Info - - - Qt::AlignCenter - - - - - - - color: #F8A818; -background-color: #383838; -border: 1px solid white; - - - Offline - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - background-color: rgba(140, 140, 140, 255); -color: rgb(255, 255, 255); - - - <!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" /><meta charset="utf-8" /><style type="text/css"> -p, li { white-space: pre-wrap; } -hr { height: 1px; border-width: 0; } -li.unchecked::marker { content: "\2610"; } -li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Segoe UI'; font-size:9pt; 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;">No description provided.</p></body></html> - - - - - - - false - - - Connect - - - - - - - - - - - 0 - 3 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - color: #F8A818; -background-color: #383838; -border: 1px solid white; - - - Message of the Day - - - Qt::AlignCenter - - - - - - - background-color: rgba(140, 140, 140, 255); -color: rgb(255, 255, 255); - - - <!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" /><meta charset="utf-8" /><style type="text/css"> -p, li { white-space: pre-wrap; } -hr { height: 1px; border-width: 0; } -li.unchecked::marker { content: "\2610"; } -li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Segoe UI'; font-size:9pt; font-weight:400; font-style:normal;"> -<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;"><br /></p></body></html> - - - true - - - - - - - - - - - - - - - - - diff --git a/resource/ui/lobby_assets/down-arrow.png b/resource/ui/lobby_assets/down-arrow.png deleted file mode 100644 index ce40d081..00000000 Binary files a/resource/ui/lobby_assets/down-arrow.png and /dev/null differ diff --git a/resource/ui/lobby_assets/up-arrow.png b/resource/ui/lobby_assets/up-arrow.png deleted file mode 100644 index 46ddf4c6..00000000 Binary files a/resource/ui/lobby_assets/up-arrow.png and /dev/null differ diff --git a/resource/ui/options_dialog.ui b/resource/ui/options_dialog.ui deleted file mode 100644 index db6db725..00000000 --- a/resource/ui/options_dialog.ui +++ /dev/null @@ -1,1091 +0,0 @@ - - - optionsdialogue - - - - 0 - 0 - 450 - 415 - - - - Qt::NoContextMenu - - - Settings - - - - - - Qt::NoFocus - - - 0 - - - - Gameplay - - - - - - true - - - - - 0 - 0 - 394 - 858 - - - - - - - - - - - - - - Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. - - - Stop Music w/ Category: - - - - - - - - - - - - - - - - - Sets the default scaling method, if there is not one already defined specifically for the character. - - - Scaling: - - - - - - - Turn this on to allow characters to define their own custom chat box designs. - - - Custom Chatboxes: - - - - - - - Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. - - - Allow Effects: - - - - - - - - - - - - - - Open the theme folder of the currently selected theme. - - - Open Theme Folder - - - - - - - Overrides the base URL to retrieve server information from. - - - Alternate Server List: - - - - - - - Instant Objection: - - - - - - - ms - - - 500 - - - - - - - Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the Lobby for the changes to take effect, such as by joining a server and leaving it. - - - Theme: - - - - - - - - - - - - - Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. - - - Network Frame Effects: - - - - - - - Chat Rate Limit: - - - Qt::AutoText - - - - - - - ms - - - 5000 - - - - - - - If ticked, themes will be allowed to have animated elements. - - - Animated Theme: - - - - - - - Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. - - - Text crawl: - - - - - - - Refresh the theme and update all of the ui elements to match. - - - Reload Theme - - - - - - - - - - - - - - - - - Your showname will be automatically set to this value when you join a server. - - - Default showname: - - - - - - - - - - - - - - - - - Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). - - - Stickers: - - - - - - - Turn this on to prevent preanimation checkbox from clearing after playing the emote. - - - Sticky Preanims: - - - - - - - ms - - - 10000 - - - - - - - Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. - - - Custom shownames: - - - - - - - Turn this on to prevent the effects dropdown from clearing the effect after playing it. - - - Sticky Effects: - - - - - - - - - - - - - - Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. - - - Text Stay Time: - - - - - - - Sets the language if you don't want to use your system language. - - - Language: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If the SFX dropdown has an SFX selected, send the custom SFX alongside the message even if Preanim is OFF. - - - Always Send SFX: - - - - - - - Turn this on to prevent the sound dropdown from clearing the sound after playing it. - - - Sticky Sounds: - - - - - - - - - - - - - - Your OOC name will be automatically set to this value when you join a server. - - - Default username: - - - - - - - Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. - - - Allow Screenshake: - - - - - - - - - - - - - - Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. - - - Discord: - - - - - - - Use the markup colors in the server IC chatlog. - - - Colors in IC Log: - - - - - - - Sets a 'subtheme', which will stack on top of the current theme and replace anything it can. Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. - - - Subtheme: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - QFrame::HLine - - - QFrame::Sunken - - - - - - - QFrame::HLine - - - QFrame::Sunken - - - - - - - - - - - - - - If ticked, Evidence needs a double-click to view rather than a single click. - - - Evidence Double Click: - - - - - - - QFrame::HLine - - - QFrame::Sunken - - - - - - - - - - - - - - Whether or not to resume playing animations from where they left off. Turning off might reduce lag. - - - Continuous Playback: - - - - - - - 30 - - - - - - - 1 - - - 8 - - - - - - - <html><head/><body><p>The factor by which to scale the size of the UI</p></body></html> - - - UI Scaling Factor - - - - - - - - - - - - Callwords - - - - - - - - - <html><head/><body><p>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br/><br/>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</p></body></html> - - - true - - - - - - - - Audio - - - - - - Audio device: - - - - - - - - - - QFrame::HLine - - - QFrame::Sunken - - - - - - - How much of the volume to suppress when client is not in focus. - - - Suppress Audio: - - - - - - - % - - - 100 - - - - - - - QFrame::HLine - - - QFrame::Sunken - - - - - - - Sets the delay between playing the blip sounds. - - - Blip rate: - - - - - - - Play a blip sound \"once per every X symbols\", where X is the blip rate. 0 plays a blip sound only once. - - - - - - - If true, the game will play a blip sound even when a space is 'being said'. - - - Blank blips: - - - - - - - - - - - - - - If true, the game will allow looping sound effects to play on preanimations. - - - Enable Looping SFX: - - - - - - - - - - - - - - If true, AO2 will ask the server to stop music when you use 'Objection!' - - - Kill Music On Objection: - - - - - - - - - - - - - - If true, AO2 will not play any streamed audio and show that streaming is disabled. - - - Music Streaming enabled: - - - - - - - - - - - - - - - - 0 - 0 - - - - Assets - - - - - - - 0 - 0 - - - - <html><head/><body><p>Add or remove base folders for use by assets.</p><p><br/>Base folders on the bottom are prioritized over those above them.</p></body></html> - - - true - - - - - - - - 0 - 0 - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 40 - 16777215 - - - - - - - - - - - - 0 - 0 - - - - Remove - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 40 - 20 - - - - - - - - - 40 - 16777215 - - - - - - - - - - - - 0 - 0 - - - - Add... - - - - - - - - 0 - 0 - - - - Clears the lookup cache for assets. -Use this when you have added an asset that takes precedence over another existing asset. - - - Clear Cache - - - - - - - - - - Logging - - - - - - If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. - - - Log goes downwards: - - - - - - - - - - - - - - The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. - - - Log length: - - - - - - - entries - - - 10000 - - - - - - - If ticked, new messages will appear separated, with the message coming on the next line after the name. -When unticked, it displays it as 'name: message'. - - - Log newline: - - - - - - - - - - - - - - The distance in pixels between each entry in the IC log. -Default: 0. - - - Log margin: - - - - - - - px - - - 1000 - - - - - - - If ticked, log will contain a timestamp in UTC before the name. - - - Log timestamp: - - - - - - - - - - - - - - Log timestamp format: - - - - - - - - true - - - - - - - If ticked, log will show IC actions such as shouting and presenting evidence. - - - Log IC actions: - - - - - - - - - - - - - - If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). - - - Desynchronize IC Logs: - - - - - - - - - - - - - - Text logs of gameplay will be automatically written in the /logs folder. - - - Log to Text Files: - - - - - - - - - - - - - - Gameplay will be automatically recorded as demos in the /logs folder. - - - Log to Demo Files: - - - - - - - - - - - - - - - Privacy - - - - - - Do not include me in public player counts - - - - - - - QFrame::HLine - - - QFrame::Sunken - - - - - - - - - - - - - - QDialogButtonBox::Cancel|QDialogButtonBox::RestoreDefaults|QDialogButtonBox::Save - - - - - - - - diff --git a/resources.qrc b/resources.qrc deleted file mode 100644 index 2f8d264a..00000000 --- a/resources.qrc +++ /dev/null @@ -1,19 +0,0 @@ - - - resource/fonts/Ace-Attorney.ttf - resource/logo_ao2.png - resource/translations/ao_de.qm - resource/translations/ao_en.qm - resource/translations/ao_es.qm - resource/translations/ao_jp.qm - resource/translations/ao_pl.qm - resource/translations/ao_pt.qm - resource/translations/ao_ru.qm - resource/ui/options_dialog.ui - resource/ui/favorite_server_dialog.ui - resource/ui/direct_connect_dialog.ui - resource/ui/lobby.ui - resource/ui/lobby_assets/down-arrow.png - resource/ui/lobby_assets/up-arrow.png - - diff --git a/shared-release/qrc_resources.cpp b/shared-release/qrc_resources.cpp deleted file mode 100644 index ceb5bb8b..00000000 --- a/shared-release/qrc_resources.cpp +++ /dev/null @@ -1,17660 +0,0 @@ -/**************************************************************************** -** Resource object code -** -** Created by: The Resource Compiler for Qt version 5.15.2 -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -static const unsigned char qt_resource_data[] = { - // /media/stoned/SHARED/Git/AO2-Client/resource/logo_ao2.png - 0x0,0x0,0x72,0x76, - 0x89, - 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, - 0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x8,0x6,0x0,0x0,0x0,0xc3,0x3e,0x61,0xcb, - 0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd, - 0xa7,0x93,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0, - 0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x20,0x0,0x49,0x44,0x41,0x54,0x78, - 0xda,0xec,0xbd,0x79,0x90,0x65,0xe9,0x59,0xde,0xf9,0xfb,0xb6,0x73,0xce,0xdd,0x6f, - 0xee,0x95,0x95,0x95,0xb5,0x74,0x55,0x77,0x55,0x77,0x75,0xab,0xd5,0xdd,0xa2,0x25, - 0xb4,0xa0,0x15,0x81,0x41,0x20,0xc2,0x63,0x4f,0xc0,0xc4,0xd8,0xe0,0x19,0xdb,0x98, - 0x1,0xcf,0xe2,0x98,0x9,0xec,0xb1,0xac,0xc0,0xa3,0x89,0xf0,0x2c,0x8e,0x98,0x18, - 0x22,0x8,0x87,0xed,0x19,0xa1,0x99,0x0,0x83,0x85,0xc1,0x3,0x8,0x24,0x4,0x48, - 0x20,0x9,0xa9,0x1b,0xb5,0xba,0xbb,0x5a,0xd5,0x5b,0x55,0xd7,0x9e,0x4b,0xe5,0x76, - 0x6f,0xde,0xfd,0x2c,0xdf,0x32,0x7f,0x9c,0x5b,0x59,0x55,0x52,0xb7,0xc4,0x26,0x90, - 0xb0,0x6f,0xc5,0x89,0xcc,0xbc,0x71,0xb3,0xee,0x3d,0xdf,0xf7,0x7e,0xef,0xf2,0x3c, - 0xcf,0xfb,0xa6,0xe0,0x2f,0xc1,0x23,0x84,0x70,0xeb,0xdb,0x18,0x58,0x0,0x16,0x81, - 0x63,0xc0,0x71,0x60,0x15,0x38,0x2,0x2c,0x1,0x33,0x40,0x13,0xa8,0x2,0x11,0xa0, - 0xa7,0xbf,0x67,0x81,0x2,0x18,0x1,0x3,0xa0,0xb,0x6c,0x3,0x37,0xa6,0xd7,0xb5, - 0xe9,0xb5,0x5,0xec,0x0,0x29,0x80,0x10,0xe2,0x5b,0x7e,0xed,0xbe,0x25,0xef,0xa0, - 0x28,0x8a,0xe9,0xfa,0x8b,0x9a,0x52,0x6a,0x15,0x38,0x3,0x3c,0xc,0x3c,0x8,0x1c, - 0xf7,0xde,0x2f,0x17,0x45,0xd1,0xb2,0xd6,0x9a,0x2c,0xcb,0xcc,0x64,0x32,0x11,0x59, - 0x9e,0xe3,0x9d,0x23,0x84,0x80,0x73,0xe,0x1f,0x42,0xb9,0x81,0xd3,0xaf,0x4a,0x6b, - 0xb4,0x52,0x8,0x29,0x51,0x4a,0x11,0x47,0x11,0x95,0x4a,0x25,0x68,0x63,0xa,0xad, - 0x54,0xa1,0xb5,0xee,0xb,0x21,0x36,0xa7,0x86,0x70,0x1e,0x38,0x7,0xbc,0xe4,0xbd, - 0xbf,0xde,0xeb,0xf5,0x46,0x95,0x4a,0xc5,0x27,0x49,0x72,0xf7,0xe2,0x7e,0xb,0x18, - 0x88,0xf8,0x16,0x38,0xd5,0x0,0x78,0xe7,0x40,0x8,0xe5,0x43,0x58,0x94,0x42,0x3c, - 0x2c,0xa5,0x7c,0x33,0x21,0xbc,0xd1,0x87,0x70,0x26,0x4d,0xd3,0xa5,0xd1,0x68,0x14, - 0xf7,0x7a,0x3d,0x6,0xc3,0x21,0x69,0x9a,0x62,0x8b,0x2,0x13,0x45,0x28,0xa5,0xd0, - 0x5a,0x53,0x49,0x12,0xe2,0x24,0x21,0x8e,0x22,0xa4,0x94,0x77,0x6d,0x50,0x98,0x2e, - 0x84,0xf,0x81,0xa2,0x28,0xc8,0xf3,0x9c,0x3c,0xcf,0x9,0xde,0xe3,0xbd,0xc7,0x79, - 0x4f,0x1c,0x45,0x44,0x51,0x44,0xad,0x56,0xa3,0x5a,0xad,0x92,0x24,0x49,0xae,0xb5, - 0xde,0x12,0x52,0xbe,0x4c,0x8,0x4f,0x86,0x10,0x3e,0x1f,0x42,0x78,0x56,0x49,0xb9, - 0xd,0x58,0x31,0x7d,0x8f,0xff,0x68,0x0,0x7f,0x9a,0x93,0x6e,0x2d,0x3e,0x4,0x21, - 0xa5,0x9c,0x27,0x84,0x37,0x48,0x29,0xbf,0x8b,0x10,0xbe,0x23,0xcf,0xf3,0x53,0xfb, - 0xbd,0x5e,0x7d,0x6f,0x77,0x57,0x74,0xf7,0xf7,0xc9,0xf3,0x9c,0x24,0x49,0x68,0x34, - 0x1a,0xb4,0x5b,0x2d,0xea,0xf5,0x3a,0x71,0x1c,0x13,0x27,0x9,0xea,0x4f,0xb9,0x11, - 0xce,0x7b,0xf2,0x2c,0xa3,0xb0,0x96,0xc9,0x78,0xcc,0x68,0x3c,0x26,0x4d,0x53,0x9c, - 0x73,0x44,0xc6,0x50,0xaf,0xd7,0x69,0x34,0x1a,0x21,0xa9,0x54,0x46,0x5a,0xa9,0x4b, - 0x1,0x3e,0x1b,0x42,0xf8,0xa4,0x80,0x3f,0xcc,0xb2,0x6c,0x5b,0x69,0x1d,0x92,0x38, - 0xfe,0x8f,0x6,0xf0,0xc7,0x79,0x8c,0xc7,0x23,0x94,0x52,0xb1,0x94,0xea,0x8c,0x94, - 0xf2,0x7d,0x21,0xf0,0xbd,0x59,0x96,0x3e,0xb4,0xd7,0xe9,0xd4,0x37,0x37,0x37,0x19, - 0xc,0x6,0x18,0xad,0x99,0x9b,0x9b,0x63,0x61,0x61,0x81,0x66,0xb3,0x49,0x1c,0xc7, - 0x7f,0x6e,0x2e,0x37,0x78,0x4f,0x61,0x2d,0xa3,0xd1,0x88,0xc1,0x60,0xc0,0x70,0x38, - 0x24,0x0,0xd5,0x6a,0x95,0x76,0xbb,0x4d,0xb5,0x52,0x19,0x6b,0xad,0xcf,0x3,0xbf, - 0xe9,0x43,0xf8,0x98,0x77,0xf6,0xbc,0x73,0x21,0xab,0x56,0x2b,0xdf,0x74,0xe1,0xe1, - 0x9b,0xc6,0x0,0xbc,0xf7,0xf4,0xfa,0x63,0xaa,0x49,0x54,0xf,0x84,0x37,0x2b,0x25, - 0x7f,0xd0,0x39,0xff,0x9d,0xfb,0xfb,0xdd,0x95,0x1b,0x37,0xae,0x8b,0xbd,0xbd,0x5d, - 0x2a,0xd5,0x3a,0x87,0x97,0x97,0x59,0x5a,0x5a,0xa2,0x56,0xab,0x1d,0xb8,0xf2,0x6f, - 0x86,0x70,0x35,0x99,0x4c,0xe8,0xf5,0xfb,0xec,0x77,0x6e,0xe2,0x51,0x34,0x1a,0x2d, - 0xda,0xad,0x76,0x48,0x92,0x64,0x13,0xf8,0x14,0xf0,0xb,0x21,0xf0,0xb9,0xa2,0x70, - 0xfd,0x7a,0xfd,0x9b,0xc7,0x10,0xfe,0xc2,0xd,0x60,0xbf,0xd7,0xa3,0x5a,0xa9,0xe2, - 0xbc,0xaf,0x4b,0x29,0xde,0x29,0x10,0x7f,0x2b,0xcb,0xb2,0x77,0xde,0xbc,0xb9,0xd9, - 0xbe,0x72,0xf5,0x32,0xd6,0xa6,0x1c,0x3e,0x7c,0x88,0xd5,0x23,0x73,0xcc,0xcc,0xac, - 0x22,0x44,0xf4,0x4d,0x1c,0xb4,0x2c,0x79,0xb6,0xcb,0x24,0xb,0xec,0xef,0xf7,0x18, - 0xe,0x26,0x18,0x53,0x65,0x66,0x66,0x8e,0x7a,0xbd,0xde,0x53,0x4a,0x7d,0x6,0xc2, - 0x47,0x7c,0x8,0xbf,0x93,0xc4,0x71,0x7f,0x6d,0x73,0x93,0xd5,0xc3,0x87,0xff,0xc3, - 0x35,0x80,0x7e,0xbf,0xf,0x42,0x54,0x94,0x52,0x6f,0x57,0x4a,0xfd,0xdd,0x34,0x4d, - 0xdf,0x73,0xfd,0xfa,0xf5,0xc6,0xb5,0x6b,0xd7,0x48,0x12,0xc5,0xc9,0x93,0x2b,0x2c, - 0x2d,0xce,0x13,0x45,0x15,0x84,0x10,0x48,0x59,0x45,0x8,0xfd,0x4d,0x1a,0xb9,0x2, - 0x21,0x58,0x9c,0x1b,0x13,0x82,0x27,0x4,0x8b,0x75,0x8e,0xc1,0xc0,0xb2,0xdf,0x1d, - 0xe3,0x83,0xa7,0xdd,0x6e,0xd3,0x68,0x34,0x86,0x4a,0xa9,0xdf,0x3,0xfe,0xa5,0xf3, - 0xee,0x53,0x1,0x31,0x6e,0xd6,0x6a,0xff,0x61,0x19,0xc0,0xfe,0x60,0x80,0xf,0x41, - 0x29,0xc4,0xeb,0xa5,0x94,0x3f,0x5e,0x14,0xc5,0xf,0x5c,0xbf,0x7e,0x75,0xe6,0xca, - 0xe5,0x4b,0xb4,0xdb,0xb3,0x9c,0x3e,0x7d,0x1f,0x73,0x73,0x2d,0x84,0x48,0x11,0xc2, - 0xa0,0x54,0xd,0x21,0xe4,0xb7,0x48,0xd5,0x1a,0x8,0xc1,0xe3,0xdc,0x18,0xe7,0x73, - 0x84,0xa8,0x42,0xd0,0x8c,0x46,0x43,0x6e,0xdc,0x78,0x1e,0xe7,0x60,0x71,0xe9,0x4, - 0x8d,0x46,0xb3,0x27,0xa5,0xfc,0x75,0x2,0x3f,0x63,0x2d,0x4f,0x49,0x89,0x6d,0xb5, - 0xea,0x7f,0xb9,0xd,0x60,0x6b,0x67,0xb,0xad,0x22,0x2,0xe1,0x90,0x56,0xfa,0xbf, - 0x8,0x21,0xfc,0x9d,0x8d,0x8d,0x8d,0xe3,0x2f,0xbd,0xf4,0x3c,0x36,0xbd,0xce,0xfd, - 0x67,0x4e,0x71,0xfa,0xec,0xbb,0x50,0xaa,0x74,0xf3,0x52,0x4a,0x84,0x50,0xdf,0xc2, - 0x0,0x95,0xc3,0xfb,0x80,0xf7,0xe0,0x5c,0xc6,0xd6,0xe6,0x93,0x8c,0x86,0x3,0x84, - 0x3e,0xa,0x22,0xa2,0xd5,0x9e,0xa3,0x5a,0xa9,0xde,0x10,0x42,0x7c,0xb8,0xb0,0xc5, - 0xbf,0x9e,0x6d,0x37,0xd7,0x2f,0x5f,0x59,0xe3,0xde,0x53,0x27,0xfe,0xf2,0x19,0xc0, - 0xcd,0xed,0x6d,0x2,0x41,0x47,0xda,0xbc,0x4b,0x4a,0xf5,0xf,0xf7,0xf7,0xf7,0xdf, - 0xf6,0xfc,0xf3,0x5f,0xd6,0x45,0x31,0xe6,0x75,0xaf,0x3b,0x4d,0x2c,0xfb,0x8c,0xfa, - 0x1b,0xcc,0x2c,0x3e,0xc0,0xec,0xfc,0x69,0x94,0x32,0xfc,0x65,0x79,0x38,0x67,0xe9, - 0xec,0x5e,0xa4,0xbb,0xfb,0x2,0xb5,0xc6,0x12,0xb3,0xb,0xa7,0x18,0x8e,0xc6,0xec, - 0xec,0xf6,0x51,0xb2,0x42,0xab,0x35,0xe3,0xa2,0x28,0xfa,0x2,0xc1,0xff,0xaf,0xd9, - 0x24,0xfd,0xad,0x5a,0xbd,0x5e,0xb4,0xda,0xad,0xbf,0x1c,0x6,0xf0,0xdb,0xbf,0xfd, - 0x65,0xde,0xfa,0xb6,0x13,0xc,0x6,0xd9,0xa2,0x90,0xe2,0xc7,0xbd,0xb3,0x7f,0xef, - 0x95,0x57,0x5e,0x59,0xbc,0x76,0xed,0x1a,0x67,0xce,0x1c,0xe3,0xbe,0xfb,0x8e,0x61, - 0x8c,0x66,0x3c,0xe8,0xb2,0xbd,0xf1,0x65,0x82,0x10,0x1c,0x3a,0xfc,0x8,0x8d,0xe6, - 0xca,0xad,0x34,0xf9,0xf6,0x7,0x7d,0xd5,0x8c,0x59,0x94,0x48,0xce,0x1,0xa4,0x73, - 0xeb,0x75,0xe1,0x8e,0xe7,0xbf,0xf2,0x57,0xc4,0x57,0xdc,0x7e,0x78,0x8d,0x9f,0xbf, - 0xea,0x48,0xdf,0x7e,0x9d,0x78,0x8d,0xd7,0x85,0x70,0xc7,0xc7,0x29,0xbf,0x1b,0xe, - 0x6e,0x72,0x73,0xe3,0x69,0x84,0xf7,0xcc,0x2f,0x3f,0x48,0xa5,0xde,0x46,0x8,0xb0, - 0x4e,0xd2,0xed,0x66,0xec,0x77,0x7b,0xd4,0x6a,0x35,0xea,0xf5,0xfa,0x9e,0x10,0xe2, - 0x5f,0x23,0xc4,0xff,0x99,0x54,0xaa,0x37,0xb7,0x36,0xd6,0x38,0x79,0xf2,0xd4,0x37, - 0xb4,0x52,0xf8,0x86,0x1a,0xc0,0xb5,0xb5,0x35,0xba,0x59,0x8f,0xf9,0x64,0xe6,0xdb, - 0xa2,0x28,0xfa,0xa9,0x5e,0xaf,0xf7,0xde,0xa7,0x9f,0xfd,0x92,0x4e,0x62,0xc5,0x9b, - 0xde,0xf8,0x16,0x5a,0xad,0xa,0x21,0x4c,0xa6,0xb,0xa9,0x19,0xf6,0x77,0x99,0x8c, - 0x76,0x49,0xe2,0xa,0x49,0x52,0x47,0xe9,0x18,0x21,0x24,0x81,0x80,0x14,0x25,0x44, - 0x7b,0xf7,0x43,0xe2,0xf,0xe0,0x7c,0x10,0xf8,0xd7,0xb8,0x21,0x71,0x57,0x8c,0x46, - 0x8,0x2,0x12,0x1,0x84,0x5b,0x68,0x60,0x8,0x7,0xaf,0x93,0xb8,0xe9,0x46,0xa, - 0x2,0xb7,0xc,0x30,0x20,0xf0,0x4,0xe4,0xc1,0x73,0x12,0xb,0xb8,0xaf,0x38,0xed, - 0x1e,0x1f,0x3c,0x2,0x51,0xe6,0x2,0x36,0x23,0xcf,0x53,0x84,0x4a,0x88,0x93,0x19, - 0x4c,0x14,0xe1,0x43,0x3a,0x7d,0xaf,0xa,0x42,0x26,0xc,0x6,0x1d,0x36,0x37,0x6e, - 0x50,0x64,0x8e,0xa5,0xe5,0x63,0xd6,0x18,0xf3,0x69,0xef,0xfd,0x4f,0xbd,0xf0,0xf2, - 0x8b,0x5f,0x38,0xb2,0xbc,0x12,0x4e,0xdf,0x77,0xef,0xb7,0x9e,0x1,0x5c,0xbd,0x7a, - 0x8d,0x3c,0xcf,0xa3,0x7a,0xa3,0xf1,0x57,0x3,0xfc,0xd3,0xab,0x57,0x2e,0xdf,0xf7, - 0xd4,0x13,0x9f,0xe4,0xbe,0x93,0x8b,0xbc,0xf1,0xed,0xdf,0x4f,0x1c,0xb5,0xa6,0x27, - 0x29,0x47,0x49,0x8f,0xd1,0x4d,0x84,0xd0,0x84,0xe0,0xbf,0xfa,0x13,0x86,0x5b,0x1e, - 0xe0,0x9b,0xad,0x8a,0xd,0xaf,0xfa,0x54,0xf8,0xaa,0x4f,0x29,0x40,0x48,0x4a,0xea, - 0xc1,0x53,0xd8,0x3e,0xd6,0x7,0xa4,0xa8,0x12,0x82,0x23,0xcf,0xfb,0x6c,0x5d,0x7e, - 0x92,0x6b,0x97,0x5e,0x46,0x37,0x4f,0xb2,0x7a,0xfc,0x61,0x6a,0xf5,0xc6,0xe5,0x10, - 0xc2,0x87,0x26,0x79,0xfe,0x8b,0x5a,0x88,0xf4,0xf8,0xb1,0xa3,0xdf,0x90,0x3b,0xf8, - 0x86,0x64,0x58,0x37,0xd6,0xd6,0x91,0x52,0x36,0x22,0x63,0xfe,0xfb,0xbc,0x28,0xfe, - 0xe7,0x67,0x9e,0x7d,0xfa,0xc8,0xf3,0xcf,0x7c,0x92,0x33,0x47,0x24,0xf3,0x33,0x9, - 0x2a,0xae,0x51,0xa9,0xcf,0x20,0x84,0x46,0xeb,0x18,0xa3,0x2b,0xd3,0xf2,0xae,0x4, - 0x46,0xee,0xba,0x28,0xbf,0x96,0x6e,0xfb,0x5b,0xe0,0x12,0x2,0x21,0xe4,0x1d,0x97, - 0xb8,0x23,0xe4,0x4,0x42,0x8,0x4,0x21,0xc9,0x6d,0x81,0xb3,0x13,0xbc,0xcf,0xe8, - 0xed,0x5c,0xa5,0x7f,0xfd,0x69,0xa4,0x28,0x28,0xdc,0x8,0x47,0x4c,0x51,0xf8,0x99, - 0x28,0x4a,0xde,0x15,0x69,0x9d,0x84,0x10,0x9e,0xfe,0xc7,0xff,0xf8,0x3,0xe9,0x7d, - 0xf7,0xde,0xc3,0xaf,0xff,0xfa,0xc7,0xbe,0xb9,0x3d,0xc0,0xb5,0xeb,0x37,0x28,0x8a, - 0xe2,0x50,0x9c,0x24,0x3f,0x35,0xe8,0xf,0x7e,0xf8,0xf,0x3e,0xf7,0xbb,0x49,0x24, - 0xfb,0x3c,0xfa,0xe8,0x3,0xf4,0x37,0x5e,0x40,0x6a,0x4d,0xa3,0xb5,0xc0,0xe1,0x53, - 0x6f,0x23,0xa9,0x1f,0x22,0x36,0x5f,0xf,0xc2,0xfd,0x5a,0x71,0x59,0xbc,0xc6,0xa9, - 0x14,0xdf,0xb8,0x13,0xfe,0x9a,0xa5,0x5f,0x98,0xd6,0xff,0x8e,0x10,0x3c,0x3e,0x38, - 0xbc,0xb7,0x77,0x5c,0xe,0x1f,0xee,0xf8,0x7e,0xfa,0x3c,0xd6,0xb1,0x7f,0xe3,0x3c, - 0xa3,0xee,0xd,0x52,0xaf,0x98,0x39,0xfa,0x6,0xd2,0xfd,0x1b,0x6c,0x6d,0xed,0xb2, - 0x70,0xfc,0x6d,0xcc,0xcf,0x2f,0xe7,0x4a,0xe9,0x5f,0xb0,0xb6,0xf8,0x27,0x52,0xaa, - 0x1b,0x27,0x8e,0x1f,0xfd,0xe6,0x34,0x80,0xa7,0xbf,0x74,0x8e,0xa5,0xe5,0x5,0x46, - 0xa3,0xf1,0x29,0x63,0xcc,0xff,0xde,0xe9,0x74,0xbe,0xff,0xe9,0x67,0x9e,0x96,0xb, - 0xad,0x9c,0x43,0xf3,0x8a,0xc5,0x95,0xd3,0xf4,0x76,0xd7,0x49,0xf7,0x2e,0x61,0xb4, - 0xa2,0x31,0x77,0x8c,0xe6,0xdc,0x89,0x69,0x5c,0x2f,0x4f,0x4f,0x79,0x5a,0x40,0x20, - 0x41,0x80,0x36,0x35,0xe2,0xc6,0x62,0xe9,0x42,0xcb,0x65,0xa6,0x48,0xb7,0x8,0x3e, - 0x7,0x4,0xca,0x34,0x51,0xa6,0x3d,0xc5,0x8,0xfe,0x9c,0x5c,0xfc,0x9d,0xcf,0x6, - 0x4f,0x96,0xf7,0x70,0x2e,0xc3,0x7,0x4b,0xf0,0xe,0x1f,0xdc,0x6d,0x63,0x20,0x10, - 0xbc,0x7f,0xf5,0x44,0x52,0x8,0x6c,0x3e,0x66,0xff,0xda,0x39,0x8a,0x74,0x80,0x75, - 0x81,0x64,0xf6,0x24,0x8d,0xd9,0x45,0xd6,0x2e,0x3c,0x41,0xa5,0x7d,0x98,0xd6,0xc2, - 0xc3,0x64,0x99,0x21,0xa9,0x54,0x82,0xd6,0xfa,0xb7,0x2,0xe1,0x1f,0xcc,0xb4,0xe7, - 0x5e,0x9c,0x9d,0x69,0xfe,0x99,0x25,0x86,0x7f,0x26,0xff,0xcb,0xf9,0x17,0x5e,0xa0, - 0x5e,0x6d,0x90,0xe5,0xd9,0x59,0xa5,0xe4,0x4f,0x6f,0x6e,0x6e,0xbe,0xeb,0xc5,0x97, - 0x5e,0xe4,0xad,0x6f,0x79,0x33,0xcb,0x87,0x66,0xb8,0xfa,0xf2,0x67,0x70,0x6e,0x42, - 0xab,0xb5,0x4c,0x3e,0xd8,0xc5,0x18,0x83,0x9f,0xa6,0x6f,0xbe,0xc8,0x4b,0x94,0x4f, - 0x47,0x98,0x4a,0x13,0xa1,0xd,0x84,0x80,0xd6,0x12,0xa5,0x13,0x4c,0xa4,0xf,0xc, - 0xa0,0xe4,0xc,0xa,0x82,0x14,0x7,0x49,0x81,0x8,0x1a,0xa4,0x2,0x59,0x72,0xfb, - 0xf8,0x0,0x4a,0xfd,0x91,0x6f,0x5d,0x7c,0xed,0x73,0xfd,0xf5,0xa,0x7d,0x7c,0x28, - 0xc0,0xb9,0xf2,0x12,0xb7,0x13,0xc2,0x2,0x85,0x45,0x22,0xb2,0x14,0x11,0x0,0x21, - 0x9,0xce,0xe2,0x8a,0x1c,0xe7,0xb,0x9c,0xcd,0x9,0x22,0x10,0x6c,0x81,0x40,0xe0, - 0x90,0x34,0xe7,0x4f,0xb1,0xb1,0xf6,0x1c,0x59,0x9e,0xb1,0x74,0xec,0x21,0x56,0x56, - 0x1e,0x22,0x9d,0x38,0xd6,0xd6,0xd7,0xd1,0xda,0x10,0x45,0xf1,0x67,0x85,0x10,0x7f, - 0x5f,0x4a,0x75,0xee,0xb9,0x73,0xcf,0xf2,0xfd,0xdf,0xff,0xbe,0x3f,0xb5,0x21,0xfc, - 0xa9,0xd,0xe0,0x17,0x7f,0xe9,0xdf,0xf1,0xce,0xb7,0xbf,0x83,0xfd,0xfd,0xfd,0x87, - 0x94,0x92,0x3f,0x73,0xed,0xda,0xb5,0xb7,0x5d,0xbe,0x72,0x89,0xef,0x7c,0xcf,0xbb, - 0x59,0x5a,0x5a,0x24,0x84,0xc0,0xb0,0xb7,0xc5,0xd6,0xc6,0x73,0x34,0xdb,0x4b,0xb4, - 0x66,0x57,0x91,0x52,0x95,0xc9,0x5e,0xf0,0x84,0x69,0xc6,0xac,0x84,0x47,0x48,0x81, - 0x52,0x6a,0x1a,0xfb,0x6f,0x97,0x6b,0x1,0x41,0x11,0xf4,0x34,0x6f,0x17,0x77,0x95, - 0x79,0xaf,0xb6,0x49,0x5f,0x2f,0xa0,0x28,0xe1,0x41,0x56,0xca,0x7c,0xdf,0xa7,0x77, - 0x57,0x91,0xe2,0x8f,0xb7,0x34,0xe2,0x2b,0x4e,0xb6,0x14,0x96,0x0,0x78,0x24,0x10, - 0x50,0xc1,0x95,0x15,0xc1,0xb4,0x42,0x80,0x40,0xf0,0xe,0xe7,0x3d,0xa8,0x8,0x21, - 0x4,0xde,0x4f,0xc9,0xb0,0xce,0x1a,0x83,0xe1,0x2e,0x49,0x63,0x96,0xb9,0xd9,0x63, - 0xb4,0x9b,0xcb,0x40,0x60,0x67,0x67,0x8b,0x2f,0xfe,0xe1,0x17,0x58,0x3d,0x76,0x1f, - 0xb5,0x5a,0xed,0x9,0xe0,0xbf,0x4a,0x92,0xf8,0x99,0x6e,0xaf,0xcf,0x43,0xf,0xdc, - 0xff,0x17,0x67,0x0,0x5f,0xfc,0xc3,0xa7,0x98,0x5d,0x58,0x20,0x9d,0x8c,0xcf,0x6a, - 0x6d,0xfe,0xc5,0x95,0x2b,0x97,0xdf,0xf6,0xdb,0x9f,0xf8,0x15,0xbe,0xf7,0x7b,0xbe, - 0x87,0x37,0xbd,0xe5,0x9d,0xd3,0x72,0x2b,0x10,0xe9,0x18,0x6b,0xc7,0x84,0xe0,0xa6, - 0x49,0x92,0xfa,0xaa,0xf,0x21,0x70,0x10,0xdc,0x14,0xfd,0x13,0x77,0x95,0x7a,0x1, - 0x70,0xa8,0x3b,0x3c,0x41,0xf8,0x13,0x7c,0xfc,0xe9,0x6b,0xdd,0xa4,0x8c,0xd3,0x44, - 0x40,0xa0,0xb0,0x23,0xac,0x2f,0x10,0x42,0x11,0x47,0x8d,0x29,0xa,0xf9,0x27,0xcf, - 0x23,0x24,0x6e,0x5a,0x5a,0x96,0x46,0x2a,0xa7,0xa5,0x69,0xe9,0x9c,0xc2,0x6d,0xcf, - 0xc1,0xad,0x52,0x34,0xe0,0xc3,0x6d,0x1,0x4c,0x98,0x1a,0x76,0x64,0x2a,0x18,0x93, - 0x30,0x99,0x8c,0x78,0xf2,0x73,0x9f,0xe4,0xe9,0x2f,0x7e,0x86,0xa5,0x23,0xa7,0x39, - 0xfb,0xf0,0x5b,0xa8,0x56,0xab,0x4f,0xfa,0x10,0xfe,0x5e,0xb3,0xd5,0x78,0x76,0xe3, - 0xfa,0x6,0xdf,0xf6,0xf8,0xa3,0x7f,0xbe,0x6,0xf0,0x91,0x8f,0x7c,0x84,0x1f,0xfe, - 0xe1,0x1f,0xe6,0xc5,0x97,0x2e,0x52,0xe4,0xd9,0x29,0x13,0x99,0x7f,0x79,0xed,0xda, - 0xb5,0x77,0x7d,0xf2,0xe3,0xff,0x8e,0xf9,0xa6,0xa0,0x56,0xab,0x73,0xfa,0x81,0xc7, - 0x78,0xfb,0x7b,0xde,0x4f,0x9c,0x54,0x90,0xe2,0x2f,0x9e,0xb6,0x75,0x45,0x1f,0x97, - 0xad,0x91,0x8f,0x2f,0xe3,0x7d,0x3e,0xb5,0xa1,0x40,0x40,0x11,0xcc,0x3c,0x42,0xc6, - 0x44,0xd1,0xc,0x49,0x75,0x15,0x21,0xbf,0x39,0x4,0x1c,0x45,0x91,0xf3,0x85,0xcf, - 0x7c,0x82,0x27,0xff,0xe0,0x93,0x28,0x55,0xe2,0xf,0x4b,0x47,0xce,0xf0,0xc0,0xeb, - 0xde,0x4c,0xa5,0x52,0xf9,0x6c,0x8,0xfe,0x47,0xa5,0x14,0x2f,0xce,0xce,0x2c,0x72, - 0xee,0xdc,0x53,0xbc,0xf7,0xbd,0xef,0xfd,0xf3,0xf3,0x0,0xe7,0xce,0x9d,0x27,0x10, - 0x96,0xb5,0xd6,0xff,0x62,0x7d,0x7d,0xfd,0xfd,0x1f,0xff,0xd8,0xbf,0x65,0xb1,0x25, - 0xa8,0x56,0x2b,0x78,0xef,0x9,0x41,0x70,0xfa,0x81,0x47,0x68,0xb5,0x67,0x4b,0xbd, - 0x9d,0x8e,0x90,0x12,0xa4,0x2a,0xcf,0x71,0xa4,0x35,0xfa,0x16,0x9f,0x2f,0x40,0x45, - 0xd1,0x81,0x6b,0xbf,0xe5,0x32,0x83,0x77,0xf8,0x52,0xff,0x77,0xf0,0xa8,0xd4,0xea, - 0x48,0xa5,0xf,0x5e,0xc7,0xd7,0x30,0x2e,0x21,0xa0,0x5e,0x93,0x98,0x28,0x66,0xd2, - 0x7d,0x1e,0xc5,0x26,0x42,0xda,0xd7,0x58,0x6,0x41,0x8,0x1a,0xd4,0x29,0xaa,0x73, - 0xaf,0xc7,0x87,0x18,0xef,0x2d,0xc1,0xfb,0x69,0x76,0x3f,0xbd,0xbc,0xbf,0x9d,0xc5, - 0x3b,0x8b,0xf3,0xe,0xef,0x2c,0xde,0xe6,0xd8,0xc1,0x10,0xe7,0x1c,0xe,0x8f,0x17, - 0xa0,0xe2,0x4,0x94,0x42,0x4,0xf0,0x53,0x7c,0x43,0x8,0x49,0xb0,0x96,0xe0,0x1c, - 0x3e,0x40,0xee,0x6f,0x55,0x10,0x1,0xef,0x1c,0xde,0x7b,0xac,0x75,0x14,0x79,0x41, - 0x6f,0xbf,0xc3,0xc5,0x97,0x9e,0xbd,0xb,0x1b,0x99,0x64,0x19,0xcb,0xab,0x67,0x79, - 0xf8,0xb1,0xb7,0x11,0x45,0xd1,0x6f,0x59,0xe7,0xff,0xae,0x12,0xe2,0xfa,0x43,0xf, - 0x9d,0x3d,0x28,0xa3,0xbf,0xa1,0x6,0x10,0x42,0xe0,0x99,0x67,0xce,0x21,0x2,0x4d, - 0x13,0xc7,0xff,0x7c,0x7b,0x67,0xfb,0xbf,0xfc,0x95,0x5f,0xfe,0x39,0x59,0xd3,0x63, - 0xe6,0xe6,0xda,0x10,0x42,0x19,0xc7,0xa7,0x5b,0x24,0x95,0x44,0x1a,0x81,0x12,0x2, - 0xad,0x4,0xc2,0x24,0x54,0x84,0x43,0x1b,0xd0,0x5a,0xe0,0x30,0x68,0x1f,0xd0,0xf5, - 0x1a,0x5a,0x8a,0xbb,0x6e,0xa2,0x48,0x33,0x5c,0x3a,0x42,0x8,0x81,0x96,0x2,0xe7, - 0x3,0xf5,0x99,0x39,0x6a,0x8d,0xd6,0x1f,0xb1,0xfa,0xb,0x2c,0x2e,0xc4,0xcc,0x34, - 0x14,0x4a,0xec,0x53,0xd2,0xb,0x82,0x20,0x6b,0x5f,0x1,0x81,0x38,0x84,0x1f,0x1, - 0x1,0x67,0x5,0x9e,0x45,0x3a,0xfb,0x9a,0xde,0x70,0x52,0x22,0x82,0xd3,0xcc,0xbe, - 0x4c,0xfa,0xfc,0x34,0xde,0x4f,0x37,0x6d,0xfa,0x7c,0x3e,0x1a,0x33,0xde,0xe9,0xe0, - 0x15,0xb8,0x50,0x94,0xa2,0xd3,0x4a,0xd,0x53,0xa9,0xdc,0x81,0x34,0x82,0xb,0xe0, - 0xc7,0x63,0xbc,0x17,0x58,0xa,0x8a,0xc2,0x22,0x7c,0xc0,0xfb,0x40,0x9a,0x3b,0xa, - 0x5b,0xe6,0x9,0x45,0x11,0xb0,0x2e,0xe0,0xbc,0x47,0x6,0xf0,0xd3,0x8a,0x62,0x98, - 0x67,0x60,0x3d,0xa7,0xee,0x7f,0x23,0xf,0xbe,0xee,0xdb,0x83,0x31,0xfa,0xe7,0xbd, - 0x73,0xff,0x75,0x92,0x24,0xdd,0xfb,0xef,0x3f,0xfd,0x8d,0xf5,0x0,0x3f,0xfb,0xb3, - 0x1f,0xe6,0xd1,0x6f,0x7b,0x13,0x83,0x61,0x3f,0xaa,0x57,0x6a,0xff,0x70,0x30,0x1c, - 0xfe,0x8f,0x1f,0xff,0xcd,0x5f,0x8a,0x35,0x3b,0xcc,0x35,0xeb,0x4,0x5,0x4a,0x28, - 0x94,0x89,0x31,0x4a,0x23,0xcb,0xac,0x88,0xa0,0x14,0x46,0xa,0x8c,0xd4,0x18,0x15, - 0x61,0x34,0x60,0x14,0xad,0x66,0x82,0xd6,0x31,0xc2,0x39,0x52,0x63,0xa8,0xa,0x8b, - 0xa,0x81,0x10,0x4,0x42,0x69,0xc6,0xfd,0x11,0x83,0xdd,0xe,0xed,0x44,0x52,0x8b, - 0x24,0x37,0x47,0x5,0xb3,0x2b,0x47,0x98,0x3f,0xb4,0x30,0x3d,0x35,0xa5,0xb1,0x84, - 0x10,0xa6,0x27,0xb5,0x8c,0xb3,0x4a,0x48,0xb4,0x31,0x78,0x59,0x5,0x97,0xd1,0x92, - 0x7b,0xd4,0x9a,0x39,0x3e,0x5e,0x22,0xc8,0x16,0x5e,0x2d,0x10,0x30,0x7,0xb9,0x84, - 0xc0,0x21,0xdd,0xe,0xb8,0x1e,0xa2,0x58,0x23,0xed,0x47,0xf4,0xf3,0x36,0x41,0x27, - 0x48,0x21,0x49,0xd3,0x21,0x52,0x82,0xd2,0xf2,0xae,0x32,0x2e,0x84,0x40,0x66,0x3, - 0xa,0xcb,0x60,0x7f,0xc4,0xcd,0xab,0xd7,0x59,0xa9,0x6b,0x32,0xeb,0xe9,0x4e,0x1c, - 0xd5,0xb9,0x19,0x6a,0xcd,0x3a,0x1,0x7f,0x80,0x5,0x8d,0x82,0x22,0xf6,0x81,0xc2, - 0x3a,0x26,0x79,0x46,0x70,0x5,0x21,0x2f,0x48,0x1d,0xe4,0x99,0xc3,0x86,0x2,0x5, - 0xd8,0xdc,0xe2,0x9c,0xc5,0x6,0x87,0xcf,0x2d,0x5,0x1e,0xe1,0x1c,0xce,0x79,0x8a, - 0x0,0x52,0x1a,0x4e,0xde,0xf7,0x66,0x8e,0x1c,0x7b,0xa0,0x50,0x52,0xfd,0xf3,0x34, - 0x9d,0xfc,0x4f,0x21,0x84,0xf4,0x4d,0x6f,0x7a,0xfc,0x8f,0xe5,0x5,0xf4,0x1f,0xf5, - 0x85,0x7b,0x7b,0x7b,0xfc,0xa3,0x7f,0xf8,0x4f,0x78,0xdf,0xfb,0xff,0x13,0xae,0x5d, - 0xcd,0xff,0xda,0x64,0x32,0xf9,0xef,0x7e,0xef,0x77,0x3f,0x11,0x57,0x45,0x8f,0xe3, - 0x47,0xf,0x97,0xa7,0xd4,0x94,0x31,0xb5,0x84,0xdb,0x15,0x46,0x2b,0x94,0x36,0xc4, - 0xc2,0x22,0xb5,0xa6,0x12,0xc7,0x28,0x1d,0x11,0xa4,0x24,0xd2,0x86,0x4a,0xb5,0x56, - 0xc6,0xb6,0xe0,0x71,0x14,0xa8,0x90,0xa0,0xa6,0x47,0x59,0x28,0x4f,0x12,0x72,0x44, - 0x4f,0xd3,0x8c,0x35,0xaa,0x12,0x11,0x65,0x7d,0x16,0xe6,0xeb,0xb4,0xeb,0xd1,0xed, - 0xec,0x3f,0x4c,0x13,0x2e,0x29,0x9,0xaa,0xc,0x7,0x91,0x52,0x98,0x28,0x6,0xe1, - 0xb1,0xe3,0x31,0x3e,0x73,0x64,0x72,0x19,0x11,0x9f,0x41,0xa9,0x6,0xc2,0x17,0x4, - 0x5f,0x10,0x0,0x29,0xc,0x52,0x19,0x30,0x33,0x38,0x3b,0x40,0xb8,0x21,0xa6,0x3a, - 0x66,0x71,0xbe,0x8e,0x94,0x1a,0x17,0xea,0x58,0x5b,0x23,0xb8,0x49,0x59,0xb5,0xd8, - 0xa9,0x3b,0x16,0xb7,0xbc,0x40,0x19,0x6a,0x2a,0x91,0xa2,0xb7,0x29,0x30,0xd5,0x84, - 0x28,0xb3,0x14,0xb9,0xa5,0x5d,0xab,0x51,0xad,0xd7,0xca,0x8f,0x8,0x20,0x2c,0x6d, - 0xa1,0x40,0x1a,0x64,0x70,0xd8,0x0,0x79,0x96,0x31,0x1a,0x8d,0x11,0xc1,0xe3,0xbc, - 0x23,0xb3,0xe,0x3b,0x49,0xb1,0x56,0x92,0x53,0x45,0xb8,0x14,0x6b,0xdd,0xb4,0x4, - 0x6,0xe7,0x2,0xce,0x5,0xf2,0xc2,0xb1,0x79,0xf5,0x1c,0x51,0x54,0x33,0xf3,0x4b, - 0xab,0x3f,0xa1,0x8d,0xb9,0xd4,0xff,0xd4,0x6f,0xfe,0xdf,0x9f,0xd8,0xdc,0x24,0x38, - 0x87,0x50,0xea,0xcf,0xce,0x0,0x3e,0xf0,0x81,0xf,0xf0,0xcf,0xfe,0xb7,0xff,0x83, - 0x1f,0xfb,0x89,0x1f,0xe3,0xd2,0xc5,0xb,0x8f,0x4b,0xa9,0x7e,0xea,0xe9,0x2f,0x3d, - 0xd1,0x9e,0x8f,0xb7,0x38,0xfb,0xe0,0x2a,0xca,0x68,0xa4,0x2a,0x6b,0x71,0xef,0x15, - 0x2,0x87,0x16,0x10,0x49,0x5,0x4a,0x23,0x5,0xf8,0xb8,0x46,0xac,0x25,0x41,0x6b, - 0x3c,0x82,0xaa,0x12,0xe8,0x38,0x46,0x28,0x43,0x89,0x96,0x6,0x40,0x4e,0x4f,0x4a, - 0x19,0x40,0x72,0xeb,0x70,0x84,0x72,0x73,0xb5,0x41,0x8,0x41,0x52,0x8d,0x51,0x71, - 0x7c,0x87,0x6c,0xfc,0x4e,0x66,0xcf,0x81,0x1f,0x13,0xb2,0x1,0x32,0x9e,0xc5,0xe5, - 0x19,0xc5,0xb8,0x4f,0xaf,0xa8,0xa0,0xa2,0x39,0xea,0xc1,0xa0,0x11,0xf8,0xe0,0x28, - 0x9c,0x63,0x67,0x67,0x8b,0xb9,0xd9,0x23,0xd4,0xeb,0x49,0x19,0xd3,0x31,0x64,0xea, - 0x7e,0x8a,0xfe,0x79,0xcc,0x70,0xd,0xd3,0x98,0x2f,0xef,0xcd,0xed,0xe1,0xa,0xb, - 0x51,0x1d,0x79,0x4b,0xe1,0x7b,0x7,0x1b,0x28,0x90,0x54,0xbd,0x22,0x56,0x12,0x54, - 0x44,0x90,0x9e,0x20,0x2,0xba,0x16,0x51,0x9f,0x6d,0xa2,0xe3,0x68,0x7a,0x2a,0x43, - 0x99,0xd3,0x38,0x4f,0xf0,0x8e,0x22,0xb7,0x14,0x4a,0x60,0x8c,0x2,0x5f,0x20,0x9c, - 0x25,0xf5,0x2,0x6a,0x11,0xca,0xe5,0xb8,0x20,0x29,0x7c,0x82,0x73,0xe,0x84,0x42, - 0x8,0x8f,0x77,0x1e,0x5f,0x38,0xfc,0xd4,0x1b,0xb8,0xc9,0xcb,0x8c,0xfa,0xb5,0x46, - 0xb5,0x31,0xfb,0x81,0xfa,0xdb,0xbf,0xeb,0xc2,0xac,0x89,0x3e,0x2b,0x94,0x22,0xdc, - 0xea,0x7b,0xf8,0xb3,0x30,0x80,0xf7,0xbe,0xe7,0x3d,0x98,0x4a,0x8d,0xc9,0x78,0xbc, - 0xa4,0xb5,0xfe,0xa9,0xb,0x17,0x5e,0xbc,0xb7,0xbf,0xf5,0xc,0x6f,0x7a,0xf8,0x10, - 0x5e,0xe4,0xb8,0x22,0x3,0x2b,0xf0,0x41,0x12,0x47,0x75,0xaa,0x15,0x83,0x8,0xa1, - 0x3c,0x59,0x52,0x23,0x9,0xa5,0xc5,0x4f,0xd2,0x72,0xd1,0xa4,0x24,0x35,0x8a,0x4a, - 0xb0,0x28,0x1d,0x97,0x89,0x92,0x94,0x28,0x33,0xcd,0x1d,0x82,0xc0,0x23,0xf1,0x1, - 0xac,0xf7,0xf8,0x0,0xd2,0x97,0x49,0x9f,0xb7,0x2,0x97,0xa5,0x7,0x37,0x98,0x7, - 0x89,0x91,0x39,0x91,0x12,0x14,0x59,0xf,0x37,0x1e,0x30,0x1a,0x67,0x34,0xbd,0xc7, - 0x68,0x85,0x30,0x31,0x85,0xab,0xa0,0x64,0x84,0x50,0x92,0x40,0x81,0xd4,0x9,0x79, - 0xee,0xd9,0xef,0xed,0xd1,0x6a,0x2d,0x12,0x44,0x1d,0x81,0x7,0x29,0xf1,0x18,0x26, - 0xb2,0x89,0xa,0x7b,0xb8,0x6c,0x40,0x70,0x39,0xc5,0xfe,0x3a,0x4a,0x6,0x64,0x54, - 0xc7,0xd4,0xe7,0xf0,0x44,0x78,0x3f,0x2d,0x69,0x83,0x47,0x8,0x41,0x36,0x29,0x48, - 0x5d,0x40,0x3a,0x8b,0xb,0xe0,0x44,0x40,0xea,0x32,0x1,0x14,0x2e,0x47,0xc9,0xf2, - 0xe4,0xda,0xc2,0x83,0x77,0xf8,0x74,0x8c,0xb3,0x96,0x3c,0x2d,0x70,0x79,0x76,0x80, - 0x18,0x6a,0xad,0x10,0x4a,0x10,0x54,0x82,0xcc,0x33,0x4c,0xb0,0xc4,0x95,0xa,0xe3, - 0x49,0xce,0x64,0x32,0x44,0xca,0x29,0xdb,0x24,0x41,0x49,0x81,0x66,0xc0,0xa8,0x7b, - 0x1e,0xa1,0x1e,0x3d,0x1e,0x57,0xaa,0xff,0x34,0xcd,0xb3,0xbf,0xf1,0xf2,0xc5,0x4b, - 0xeb,0xef,0xfd,0xce,0x77,0xf3,0xbe,0xf7,0xbd,0x8f,0x8f,0x7d,0xec,0x63,0x7f,0x3a, - 0x3,0xb8,0x7e,0xfd,0x3a,0xcf,0x9d,0x7f,0x81,0xa8,0x28,0x74,0xa3,0xd1,0xfa,0x89, - 0xed,0x9d,0x9d,0xf7,0xbe,0xfc,0xe5,0xdf,0xe7,0xf1,0x7,0xda,0x38,0x1f,0x8,0xce, - 0x97,0x4e,0x5b,0xc6,0x78,0x2f,0x9,0x61,0x4c,0x12,0x55,0xa9,0xd4,0x1a,0xa0,0x2b, - 0xe5,0x51,0xc9,0x52,0x32,0xeb,0x88,0xa5,0x20,0xae,0xd6,0xa9,0x54,0x93,0x72,0x71, - 0x92,0x1a,0xaa,0xc8,0x4a,0xa6,0xcc,0xc4,0x28,0x29,0xf0,0x24,0xd3,0xee,0x1d,0x4b, - 0x62,0x46,0x28,0xef,0x70,0xb6,0x40,0x8d,0x3,0xce,0x4b,0xa4,0xa9,0x80,0x50,0x78, - 0x3b,0xc1,0xba,0x82,0xe0,0x27,0xe4,0xd9,0x90,0xfe,0xee,0x18,0x17,0x32,0xb0,0xe, - 0x33,0x93,0xe0,0xdc,0x84,0xd1,0x0,0x7a,0x85,0x41,0x56,0x9a,0x18,0x6d,0x28,0xf2, - 0x8c,0xee,0xb0,0xb,0x28,0x7a,0x83,0x1,0xd5,0x5a,0x83,0xed,0xdd,0x75,0x26,0xd9, - 0x88,0x80,0xa4,0xd1,0x68,0xe1,0x5d,0x81,0x57,0x86,0xdd,0xbe,0x67,0x36,0xf4,0x19, - 0x8f,0xc6,0x44,0xc2,0x91,0xd,0xa,0x44,0x31,0x42,0xc6,0x1d,0x6a,0x33,0xd,0x44, - 0xa5,0x8a,0x94,0x31,0x42,0x27,0xe8,0xb8,0x89,0x8a,0x3c,0x2,0x8d,0x4c,0x53,0x2c, - 0x2,0xe1,0x1d,0x5a,0x55,0x88,0xab,0x2d,0xf0,0x96,0x60,0xc7,0x48,0x3c,0x51,0xa5, - 0x82,0x74,0x5,0x4a,0x5,0x2c,0x8a,0xa4,0xad,0x71,0xce,0x91,0xd,0x87,0x64,0x93, - 0x31,0xa9,0xf3,0x44,0x4a,0x23,0xa5,0x44,0x47,0x31,0xa1,0x48,0x99,0x4c,0xc6,0x8c, - 0xd2,0x21,0xde,0x5a,0xa4,0x14,0xb7,0xf1,0x10,0x51,0x1e,0xa,0xed,0x77,0x18,0x76, - 0x2e,0x20,0x17,0x1e,0x78,0x87,0x52,0xea,0x1f,0x6c,0xae,0xaf,0xff,0xa3,0xff,0xe1, - 0x27,0x3f,0x90,0x3f,0x72,0xf6,0xc,0xb,0x5f,0x47,0x74,0xfa,0x75,0xd,0xe0,0xe8, - 0xd1,0xa3,0x3c,0xf3,0xe5,0xf3,0xc,0x7a,0xfd,0xef,0x4c,0xb3,0xec,0x47,0x9f,0xfe, - 0xc3,0xcf,0xa8,0xd3,0xab,0x9a,0x5a,0x25,0x29,0x33,0x5d,0x4a,0x60,0x47,0x88,0x98, - 0x6a,0x2d,0xa1,0x5a,0xd1,0x74,0x7a,0x5d,0xea,0xb,0x2b,0x28,0x53,0xc1,0xa6,0x23, - 0xa,0x65,0x58,0x58,0x3e,0x4c,0x5c,0x69,0xa0,0x74,0x54,0x7a,0x7,0xa,0x82,0xd2, - 0x98,0xca,0x14,0xd2,0x35,0x55,0x84,0x88,0x4a,0xbe,0x3d,0x38,0x6c,0x31,0x41,0xc5, - 0x13,0x9c,0xb,0x78,0x1b,0xf0,0xc1,0x81,0x7,0x6d,0x34,0x2a,0xa9,0xe1,0x95,0xc6, - 0x76,0xd6,0xb0,0xbd,0x6d,0x26,0xa3,0x9,0xde,0x6,0x90,0x82,0xf6,0x6c,0x8d,0xda, - 0x62,0x9d,0x41,0x7f,0xc0,0x53,0x5f,0xd8,0xa6,0x75,0xe2,0x24,0x47,0x4f,0xd5,0x51, - 0x2a,0x66,0xd8,0xdf,0xa3,0xd3,0xdd,0x23,0x8,0x4d,0x9a,0x8e,0xcb,0x7c,0x21,0x8a, - 0x19,0xf,0x25,0x59,0x3a,0x46,0x8b,0x9c,0xb8,0x5a,0x47,0x47,0x9,0x9b,0x7d,0xc7, - 0x2b,0x2f,0xac,0xf1,0xba,0x33,0x2d,0x66,0xe7,0x2b,0x8c,0x95,0x61,0xd4,0xcd,0xc8, - 0x46,0x29,0x38,0x47,0xdc,0xb4,0x98,0x5a,0xb,0x53,0x99,0x45,0x45,0x4d,0x12,0x11, - 0xd0,0x42,0xe1,0xbd,0xc5,0x79,0xc8,0x6d,0x40,0x28,0x83,0x89,0xaa,0x28,0x15,0xe1, - 0x9c,0x45,0x90,0x81,0xb0,0x48,0x67,0x9,0x26,0x81,0xa0,0x90,0xb2,0xf4,0x7a,0x95, - 0xfa,0xc,0x85,0xf3,0x64,0xd9,0x84,0xe1,0xde,0x56,0x59,0x49,0x45,0x9,0x4e,0x19, - 0xf6,0xb6,0x76,0x98,0x69,0xcf,0x62,0xf3,0x94,0xc9,0x64,0xf4,0xd5,0x9b,0xa8,0x5, - 0xae,0xd8,0x60,0xb0,0x3f,0x2b,0xea,0xed,0xe5,0xbf,0xa5,0xb4,0xf9,0x5c,0xbb,0xde, - 0xfc,0xf7,0xf3,0xcb,0xcb,0x5f,0x37,0x14,0x7c,0x4d,0x3,0x18,0x8f,0xc7,0x7c,0xe6, - 0xb3,0x7f,0x40,0x77,0x67,0x77,0xd9,0x44,0xf1,0x4f,0xbe,0xf0,0xfc,0x97,0x17,0xea, - 0xba,0xc3,0xea,0xca,0x2,0x45,0x7e,0xbb,0x3e,0x17,0xca,0x50,0x89,0x24,0xd5,0x6a, - 0x4c,0x90,0x2,0x15,0x6b,0x4c,0x54,0x45,0xc7,0x15,0x82,0x4d,0x9,0xaa,0x42,0xd2, - 0x68,0x21,0x85,0x80,0x20,0x8,0x42,0xe0,0x88,0x51,0xc2,0x20,0xa3,0xfa,0x57,0x57, - 0xe4,0x52,0xa3,0x48,0xd0,0x52,0x81,0xf7,0xd8,0xd2,0x3b,0xa3,0x95,0x41,0xeb,0x26, - 0x1,0x87,0xeb,0xef,0x50,0xdc,0x5c,0x23,0x2b,0x1c,0x9e,0x80,0x50,0x82,0xfa,0x6c, - 0x9d,0xda,0x42,0x85,0x61,0x2f,0x25,0xdd,0x1b,0x73,0xef,0x91,0x84,0xac,0x5e,0x1a, - 0x95,0xf3,0x81,0x71,0x11,0x8,0x2a,0xa2,0xdd,0x9a,0x67,0x38,0xd8,0x67,0x30,0xe8, - 0x92,0xc4,0x9,0x8d,0x7a,0x9d,0x3c,0xeb,0xd3,0x1f,0xf6,0x99,0x89,0x12,0x10,0x86, - 0x56,0x23,0x61,0x6e,0xc9,0x30,0xee,0x59,0xba,0x91,0xa5,0x39,0x5b,0x45,0x54,0x12, - 0xec,0xfa,0x1e,0x36,0x2d,0xf0,0xe9,0x3e,0x79,0x3c,0xa6,0x1e,0x2,0xba,0x25,0x90, - 0xaa,0x8d,0x72,0x8e,0x4c,0x96,0x9b,0x1f,0xf2,0x82,0xa2,0x0,0x15,0x55,0x91,0x42, - 0x21,0x55,0x44,0xd9,0x93,0x9a,0x83,0x71,0x38,0x6b,0xf1,0xe9,0xe4,0xe,0x5,0x91, - 0x44,0x9b,0x18,0x65,0x12,0xb2,0xf1,0x98,0xe0,0x73,0xe2,0x5a,0x8b,0x22,0xaa,0x12, - 0xd7,0x37,0x31,0x26,0x22,0x8e,0x62,0x9c,0xb3,0xe4,0x79,0xf6,0x55,0xac,0xbe,0x51, - 0x92,0xc9,0xe8,0x12,0x93,0xa8,0x36,0x93,0x54,0xea,0x3f,0x39,0x1c,0xd,0xbe,0xf4, - 0x99,0xcf,0x3f,0x71,0x7d,0xf3,0xc6,0xd5,0x3f,0x99,0x1e,0xe0,0x53,0x9f,0xfa,0x1d, - 0x2e,0x5d,0x5b,0x67,0x92,0xa6,0xb2,0x5a,0xad,0xfe,0xb7,0x3b,0x3b,0xbb,0x7f,0xf3, - 0x95,0xf3,0xbf,0x2f,0x1f,0x7d,0xf0,0x30,0x52,0x45,0x84,0x60,0xa7,0xf1,0x5c,0x21, - 0xa3,0x2a,0xb1,0x51,0x28,0x15,0x21,0x95,0x24,0x4e,0x6a,0xc4,0xcd,0x79,0x84,0x2f, - 0xf0,0x4e,0x60,0xb4,0xa6,0x5a,0x8b,0xef,0x50,0xec,0x94,0xd9,0xba,0x52,0xd1,0xab, - 0x6a,0xff,0x84,0x82,0x20,0x35,0xe9,0x60,0xc0,0x8d,0xeb,0x57,0x88,0x8c,0x46,0x49, - 0x85,0xcd,0x2d,0xf3,0x47,0x56,0x20,0xdf,0x65,0xb8,0x7e,0x89,0x2c,0xcd,0x9,0x1e, - 0x84,0x12,0xd4,0xda,0x55,0xea,0xcd,0xa,0xbd,0xfd,0x8c,0xfd,0xad,0x7d,0x12,0x19, - 0x68,0x36,0x24,0x23,0x9a,0x84,0xa8,0x89,0xf7,0x5,0xfd,0xc1,0x0,0x9b,0xe,0x99, - 0x14,0x5,0x85,0xb3,0xc4,0x91,0xa6,0x3f,0x1a,0x32,0xce,0x73,0x32,0x9b,0x13,0xbc, - 0x20,0x38,0x47,0xf0,0x60,0x7,0x7b,0xcc,0xa9,0x21,0xd2,0x7,0x26,0xa3,0x1c,0x2f, - 0x15,0x49,0x25,0x6,0xef,0x29,0xf2,0x2,0xe1,0xcb,0xb6,0x31,0x13,0x7,0xf0,0x19, - 0xe8,0x6,0x3b,0xd7,0x6f,0xa0,0x25,0x64,0xc1,0xd3,0xc9,0x33,0xe,0x1d,0xbf,0x97, - 0xf6,0xec,0x4c,0xd9,0xc0,0x72,0x90,0xb4,0xba,0x12,0x21,0x11,0x2,0xef,0x8a,0xdb, - 0x10,0xb0,0x80,0x20,0x2,0x52,0x6,0x5c,0x9e,0x97,0xdc,0x92,0x89,0x91,0xda,0x20, - 0x6c,0x8e,0x2a,0x91,0x31,0x82,0x8,0x14,0xce,0x23,0xe,0xc0,0x21,0x49,0x8,0x11, - 0x20,0xd0,0x8c,0xc9,0x72,0x87,0x8c,0x67,0x57,0xa4,0x90,0xe9,0xee,0xde,0xce,0xef, - 0x3f,0x70,0xf6,0x75,0x7e,0x3c,0xea,0xf3,0xec,0xb3,0xe7,0x5e,0x3,0xba,0x7e,0xd, - 0xb0,0xa7,0xbb,0x3b,0x26,0x38,0x4b,0xa3,0x56,0x7b,0x43,0x9e,0x17,0x7f,0xfb,0xfc, - 0xb9,0x2f,0xa8,0xd3,0x47,0xd,0xb1,0x91,0x84,0x20,0x1,0x85,0x10,0xa0,0xa2,0x18, - 0x2d,0x24,0x52,0x29,0xc2,0x54,0xd4,0x71,0xb,0xfa,0xf5,0x32,0x42,0x6a,0x4d,0x14, - 0xab,0x69,0xd9,0x74,0x2b,0x6f,0x9e,0xda,0xbc,0x7c,0x75,0xfb,0xb,0x6e,0xca,0xf5, - 0x4,0xb0,0xa9,0xc7,0xfb,0xb2,0xdc,0x72,0xce,0x91,0xf5,0xd7,0xc9,0x7,0x1b,0x8c, - 0xd3,0x1,0x85,0xb7,0xa0,0x1c,0x95,0x9a,0xa6,0xde,0xaa,0xd0,0xeb,0x67,0xc,0x76, - 0x86,0x18,0x69,0x9,0xd2,0x91,0xe7,0x96,0x6c,0xd8,0x61,0xbc,0xbf,0x47,0xaf,0x37, - 0x64,0x38,0xe8,0xa3,0x8,0x78,0xeb,0xd0,0x52,0xa3,0x90,0x68,0xad,0x71,0x4,0x12, - 0xa9,0x18,0xf,0x47,0x64,0x69,0xc1,0xa8,0xbb,0x4b,0xba,0xbf,0x43,0xf0,0x1e,0xa9, - 0x3c,0x5a,0xa,0xd2,0x4e,0x9f,0x71,0xa7,0x4f,0xa4,0x25,0x71,0xd5,0xe0,0xb4,0xc7, - 0xa,0x87,0x75,0x8e,0xe0,0x52,0xb2,0xc1,0x3a,0x2e,0x4c,0xc9,0x1e,0x2,0x2e,0x94, - 0x32,0x26,0x25,0x41,0xa9,0x92,0xe4,0x92,0x4a,0x1e,0x5c,0x5a,0x2b,0xb4,0x89,0x6e, - 0xbb,0xe7,0x0,0xde,0x5,0x82,0x2f,0xd0,0x46,0xa2,0x8d,0x3a,0xe8,0x7c,0x3a,0x58, - 0xcf,0xa0,0x1,0x83,0x50,0x15,0x98,0x36,0xc8,0xdc,0x76,0xef,0xe,0xa9,0x2,0x76, - 0x70,0x85,0xdd,0x8d,0x6b,0xc2,0x87,0xf0,0x23,0xed,0x66,0xfb,0xdb,0x7,0x83,0x1, - 0xa7,0x4e,0xde,0xc3,0x47,0x3f,0xfa,0xd1,0x3f,0x7a,0x8,0xf8,0xd5,0x5f,0xfd,0x55, - 0x6a,0xad,0x3a,0xd6,0xe6,0x15,0x19,0xc5,0x3f,0xfe,0xca,0xa5,0x8b,0x47,0x75,0xb1, - 0xce,0xe1,0xa5,0x15,0x82,0xf,0x20,0x4b,0x37,0x4d,0x90,0x84,0xa0,0xd0,0x53,0xee, - 0x4b,0xa,0x10,0x5a,0xdf,0x2d,0xde,0x54,0xa5,0xa6,0xcf,0x5b,0x8f,0x54,0xb2,0x34, - 0x84,0x29,0x80,0xf3,0x5a,0x6,0x70,0xbb,0xcc,0xe,0x90,0x7b,0xec,0x24,0xc3,0x4b, - 0x4d,0xee,0xa,0xd6,0xaf,0x5d,0x65,0x69,0xde,0xa0,0x45,0x8c,0xb,0x1e,0x11,0x41, - 0x2c,0x3c,0x79,0x67,0x9f,0xd1,0xbe,0x47,0xc9,0x1c,0xad,0x24,0x4a,0xa,0x8c,0x96, - 0xa8,0x42,0x30,0x1e,0xf5,0x58,0x9c,0x99,0xa7,0x3d,0x7b,0x82,0x61,0x56,0x10,0x17, - 0xe,0x21,0x5,0xfd,0xfd,0x2d,0x6a,0xcd,0x19,0xe2,0xb8,0x42,0xe1,0x2c,0x33,0xf3, - 0x31,0x2e,0x1d,0xb3,0xb6,0xb6,0x41,0xd3,0xe7,0x44,0x91,0xc0,0xe7,0xae,0x84,0x72, - 0xad,0x65,0x6f,0x67,0x9f,0xf9,0x7a,0x82,0x91,0x82,0x5c,0x4b,0x82,0xf5,0xf8,0xc2, - 0x12,0x42,0x60,0x6b,0xed,0x3a,0xe3,0x74,0x4c,0x55,0x57,0xb1,0x79,0x81,0xcd,0xb, - 0xf6,0x76,0xf7,0x71,0xee,0x6,0x83,0x61,0xca,0x78,0x9c,0x32,0x9e,0x64,0x84,0x50, - 0x50,0x49,0xc,0xb5,0x6a,0x54,0x5e,0x15,0x4d,0xa3,0x51,0x25,0x8e,0xc,0xa,0x81, - 0xb5,0xa5,0x96,0x0,0x65,0xa6,0xda,0xc3,0x50,0xc2,0xc7,0x4a,0x43,0x10,0xc8,0x50, - 0x52,0xe1,0x4a,0x83,0x2b,0x22,0x10,0x12,0x29,0x7c,0x29,0x2e,0x1,0x8a,0xc9,0x90, - 0x2b,0x5f,0xfe,0x7d,0x1a,0xb3,0x8b,0xcb,0x51,0x94,0xfc,0xfd,0xee,0x5e,0xe7,0x99, - 0x77,0xbf,0xe7,0xfb,0x86,0xbf,0xf1,0x1b,0xff,0xfe,0x8f,0x6e,0x0,0x3f,0xf0,0x3, - 0x3f,0xc0,0x93,0xbf,0xfb,0x19,0xba,0x42,0xbc,0x6b,0x34,0x1e,0xbf,0xff,0xe9,0xcf, - 0x7f,0x8a,0xb7,0xbc,0xae,0x8a,0x10,0x8a,0x70,0x8b,0xc9,0x13,0x1a,0xa1,0x2,0x41, - 0x68,0x82,0x4,0xa9,0x12,0x4c,0xac,0x21,0x8a,0xc0,0xdd,0xae,0xcd,0x9d,0xb5,0x48, - 0xef,0x70,0x36,0x46,0xaa,0x88,0x92,0x1f,0xbc,0x2d,0xc4,0x7c,0xad,0xfc,0x44,0x88, - 0xc0,0x68,0x3c,0x22,0x77,0x39,0xde,0x95,0x12,0xaa,0xcc,0x5a,0xd6,0xd7,0xf6,0xc9, - 0x87,0x86,0x85,0xb9,0x2a,0x71,0x3c,0xa5,0x91,0x5,0x8c,0x26,0x8e,0x40,0x81,0xd6, - 0x1,0x94,0xc1,0x3b,0xf,0xa,0xa2,0x71,0x87,0x81,0x56,0x74,0xb7,0xae,0xb3,0x72, - 0xcf,0x3,0x44,0x5a,0xd1,0xed,0xde,0x24,0xaa,0x34,0x68,0xcf,0x2d,0x32,0x1a,0xf6, - 0xc8,0xf3,0x94,0x46,0xa3,0x85,0x74,0x39,0x1b,0xd7,0x2f,0x90,0x4f,0x46,0x78,0x32, - 0x7c,0x30,0x38,0xb,0x22,0x38,0xa4,0x14,0x38,0xeb,0x49,0x9d,0xa3,0x2a,0x34,0x91, - 0x94,0xe4,0x4a,0x60,0x73,0xcf,0xfa,0xf5,0x1e,0x5b,0x3b,0x3,0x86,0xe3,0x8c,0xcd, - 0xad,0x1,0xd7,0x6f,0xf6,0xd9,0x9b,0x78,0x9e,0xbd,0xf2,0x5,0x4c,0x94,0xa0,0x94, - 0x2e,0x93,0xbd,0xa9,0xcc,0x2d,0x84,0x30,0xe5,0x13,0x1c,0x52,0x78,0xea,0x35,0xc3, - 0xe1,0x43,0x6d,0x4e,0xdd,0x73,0x88,0x95,0xc3,0x2d,0x94,0xb0,0x84,0x30,0x65,0x3f, - 0x43,0x40,0xa9,0x98,0x10,0x81,0xc8,0x73,0x42,0x11,0x48,0xa4,0xa7,0x8,0x72,0x8a, - 0x46,0xde,0x12,0xae,0xba,0xa9,0xf7,0x11,0xe4,0xbb,0x17,0xe9,0xad,0x3f,0xcf,0xec, - 0xb1,0x47,0xff,0x8a,0xd2,0xea,0xbb,0xf6,0xfb,0xdd,0x5f,0xfe,0xd0,0x87,0x3e,0xc4, - 0x87,0x3e,0xf4,0xa1,0xaf,0x4a,0x8,0xbf,0xca,0x0,0x7e,0xfa,0xa7,0x9f,0xe0,0xcc, - 0xfd,0x37,0xd8,0x1c,0xe,0x9b,0x49,0x25,0xfe,0xd1,0xb,0x2f,0x3d,0xdf,0xa,0x7b, - 0x17,0x49,0xa2,0x37,0x94,0x9b,0x7f,0x7,0xf9,0x22,0xa4,0x42,0x28,0x89,0xd2,0x2, - 0xa9,0x25,0x44,0x6,0xa4,0x3c,0xc8,0x6c,0x6f,0x41,0xa6,0xde,0xdd,0xc6,0xcf,0xf, - 0xa2,0x4e,0x28,0x59,0xf3,0xaf,0x85,0x52,0xe7,0x85,0xc5,0xa,0x4b,0xc0,0x93,0x65, - 0x19,0x3e,0x4,0x96,0x8f,0x1f,0xa3,0xd1,0x6a,0xd1,0xeb,0x6e,0x60,0xb2,0x3e,0x8d, - 0x9a,0xa6,0x50,0x82,0xe1,0xc0,0x21,0x15,0xe0,0x5,0xc2,0x5a,0x10,0x81,0x3c,0x17, - 0x18,0x37,0x1,0xa,0x7a,0x9d,0xe,0xda,0x5c,0xa6,0x3a,0x7f,0x88,0xda,0xcc,0x22, - 0x95,0x5a,0x1b,0x23,0x24,0xb5,0x4a,0x93,0xe1,0x68,0x87,0x60,0xc7,0xac,0xdf,0xb8, - 0xca,0x60,0xbf,0x43,0x10,0x1,0x1f,0x1b,0x86,0x23,0x4b,0x8,0x20,0xa7,0x62,0x13, - 0x2d,0x4,0xa3,0xd4,0x11,0x55,0x15,0x21,0xc0,0x5e,0x3f,0x45,0xc5,0x9,0xde,0x34, - 0xb8,0xb0,0xb1,0xcd,0x97,0x9e,0xbb,0xc6,0x28,0x83,0xb9,0xc5,0x45,0xda,0xed,0x16, - 0x95,0x4a,0x42,0x1c,0xc7,0x44,0x91,0x41,0x29,0x85,0xb5,0x16,0x5b,0x14,0x78,0x1f, - 0xd0,0x3a,0xc1,0x98,0x8,0x21,0x5,0xd6,0x3a,0x2e,0x5f,0x1f,0xf3,0xe2,0x85,0x2f, - 0x13,0x19,0xcf,0xca,0x52,0xcc,0xd9,0xb3,0x27,0x58,0x39,0x51,0x36,0xc0,0xa,0x63, - 0x20,0xd8,0xb2,0x4c,0x36,0x9,0x51,0xb0,0x14,0x5e,0x12,0xa4,0x2f,0x85,0x28,0x8, - 0x10,0x6,0x44,0x5e,0x3a,0x5d,0x51,0xd0,0xbf,0xf2,0x87,0xc4,0xb3,0xf7,0xd4,0xab, - 0xf5,0xe6,0x8f,0x3a,0x67,0x3f,0xfd,0x1b,0xbf,0xf8,0xd1,0xce,0xe0,0x91,0x87,0xbf, - 0xb6,0x7,0x8,0x21,0xf0,0xc4,0x13,0xcf,0xb0,0x71,0x33,0x26,0x8e,0xd5,0x7b,0xfa, - 0x83,0xc1,0x3b,0xaf,0x9e,0xff,0x2c,0x2b,0xad,0x69,0xd4,0x9e,0xc6,0xf8,0xd2,0x30, - 0x5,0x91,0x51,0x18,0x4d,0x9,0x92,0x68,0x59,0x2a,0x73,0x0,0x19,0x99,0x3,0x66, - 0x4f,0x99,0x4,0x57,0x4,0xac,0xf7,0x18,0x4,0x42,0xe8,0x69,0xd9,0x78,0x5b,0x4, - 0x52,0xca,0xc1,0x6e,0xa3,0x7a,0xa5,0xa9,0x28,0x84,0x2c,0x11,0x2d,0x37,0x5,0x82, - 0xb4,0x36,0xac,0xde,0xfb,0x0,0x49,0x5d,0xb1,0xb7,0x2e,0xd8,0x7e,0xa9,0x4b,0x25, - 0x91,0x64,0x7d,0xcb,0x78,0x6c,0x69,0xcf,0x44,0x78,0x57,0xc6,0x52,0x27,0x40,0x78, - 0x81,0x8c,0x2b,0xf8,0xdd,0x6d,0x42,0xee,0xb9,0xd2,0xe9,0x50,0xb4,0x76,0x39,0x73, - 0xdf,0x43,0x34,0xab,0x1a,0x63,0x14,0x85,0xcb,0x19,0xf5,0x7,0x5c,0xbb,0x7e,0x8d, - 0x74,0x7f,0x8f,0xd9,0x30,0x22,0x52,0x82,0x46,0x35,0xc1,0x7a,0x81,0xa4,0x84,0x5f, - 0x1,0x8c,0x94,0x14,0x1e,0xb2,0x3c,0x27,0x4,0xc8,0xa,0xd8,0x1a,0xe6,0xbc,0x7c, - 0xe9,0x32,0x69,0x96,0x70,0xdf,0x43,0x8f,0xa1,0x55,0x29,0x76,0x49,0xd3,0x8c,0x74, - 0x32,0xa1,0xb3,0xb7,0x47,0x9e,0xe7,0x28,0xa5,0xa8,0xd7,0xeb,0x54,0xab,0x55,0xbc, - 0x77,0x6c,0x6d,0xf5,0x49,0x27,0x13,0x92,0x24,0xa6,0x3d,0xd3,0xa6,0xd1,0x68,0xd0, - 0x6a,0x35,0x28,0xa,0xcb,0xb5,0x8d,0x2e,0x2f,0xbe,0xfc,0x45,0x96,0x96,0x5e,0xe0, - 0xf1,0x37,0x3d,0xc8,0xea,0x91,0x59,0x82,0x2d,0x75,0x6,0xc6,0x28,0x42,0x50,0x24, - 0x94,0x1b,0x5f,0x1c,0x78,0xdb,0x32,0x2f,0xb,0x8,0x84,0x56,0x8c,0x3a,0x1b,0xa4, - 0x17,0xce,0x73,0xea,0xe1,0x37,0xbe,0x55,0x8,0xf9,0xdd,0x69,0x5c,0xf9,0x37,0xa3, - 0x67,0x9f,0x62,0x73,0x73,0x93,0xe5,0xe5,0xe5,0x57,0x37,0x80,0x27,0x9f,0x78,0x82, - 0x6b,0x6b,0x1b,0xc4,0x91,0x69,0x0,0x3f,0x72,0xe1,0xa5,0x17,0xeb,0x66,0xb4,0x45, - 0x54,0xd3,0x8,0x14,0x95,0x38,0x26,0x78,0xca,0x8d,0x16,0x9e,0xc8,0x48,0x22,0x63, - 0x40,0x69,0x84,0x89,0x11,0x80,0x54,0x9a,0x4a,0x5c,0x45,0x49,0x75,0x7b,0xf2,0x86, - 0xae,0xa2,0x8d,0x80,0xe0,0x11,0xd2,0x0,0x11,0x45,0x61,0x19,0xc,0x33,0xc6,0x93, - 0x3e,0xa3,0xd1,0x84,0xe1,0x60,0x44,0xaf,0x3f,0xa4,0xdb,0xed,0xd3,0x1f,0x8c,0x70, - 0x41,0x21,0x27,0x7b,0xcc,0x29,0x85,0x10,0x12,0x1f,0x4,0xca,0x7,0x86,0xbb,0x37, - 0xa9,0x36,0x8e,0xa2,0x22,0x4d,0x52,0x53,0xe0,0x2c,0xe3,0x14,0xc6,0x85,0xa7,0x7d, - 0xa7,0x31,0x7b,0x41,0xf0,0x12,0xa1,0x4,0x26,0x58,0xbc,0x73,0xd4,0xfc,0x90,0xfd, - 0xdd,0x1b,0xbc,0xdc,0xd9,0xa4,0x40,0x60,0xaa,0xd,0xbc,0xd6,0xc,0x7b,0x5d,0x94, - 0xcd,0x69,0xcb,0xc,0x25,0x1c,0x46,0x29,0x4c,0x88,0x9,0x41,0x81,0xf4,0x77,0xe8, - 0xbd,0x5,0x45,0xe1,0x49,0x5d,0xa0,0xb0,0x5,0xcf,0x9c,0xdf,0x61,0x63,0xd8,0x64, - 0x7e,0xf1,0x10,0xad,0x76,0x7c,0x47,0x58,0x13,0x54,0x2a,0x15,0x98,0x69,0xe3,0xbd, - 0xa7,0xc8,0x73,0x86,0x83,0x21,0xbd,0x5e,0x8f,0xbd,0x9d,0x1d,0xbc,0x77,0xb4,0x67, - 0x66,0x98,0x5f,0x98,0x67,0x30,0x18,0x72,0xed,0xca,0x35,0x94,0x84,0xf6,0xec,0x2c, - 0x33,0xb3,0xb3,0xd4,0xeb,0x75,0x94,0x10,0xac,0xdf,0xd8,0xe3,0x17,0x2e,0xfc,0xe, - 0xab,0xc7,0xda,0x3c,0xfe,0x86,0x53,0x34,0xea,0x9,0xe3,0x5e,0x9f,0x22,0x4f,0x99, - 0x9d,0xad,0x51,0x8d,0x15,0xd9,0x34,0xa1,0xf6,0x28,0x64,0x30,0x50,0x4,0xc6,0x23, - 0x9,0x95,0x84,0xe2,0xfa,0x4b,0xc,0x4f,0x9c,0xa9,0xd4,0x1a,0xcd,0x1f,0xd1,0x5a, - 0x7d,0xfc,0x70,0xed,0x50,0xf7,0xe7,0x7f,0xfe,0xe7,0x5e,0xdd,0x3,0x7c,0xf4,0xa3, - 0x1f,0x45,0x44,0x6,0xad,0x34,0x20,0xdf,0x3a,0x1c,0xe,0xbf,0xe3,0xe2,0x97,0x9f, - 0xe2,0x68,0xd2,0x20,0x2f,0xa,0xf2,0x89,0x25,0x1d,0x8d,0xf,0xe2,0x58,0x99,0x70, - 0xc0,0x58,0x94,0x27,0x55,0xc8,0x41,0x79,0xaa,0xa5,0x62,0x30,0x95,0x75,0xf9,0x10, - 0xc8,0xa,0xcf,0xfe,0x20,0xa3,0x37,0x48,0xe9,0xd,0x33,0xfa,0x43,0xc7,0x60,0x58, - 0x30,0x18,0x4e,0x18,0xc,0xc6,0xc,0x47,0x13,0x46,0xe3,0x31,0xa3,0xd1,0x84,0x34, - 0xcd,0x98,0x6b,0x27,0xbc,0xe1,0x75,0xc7,0x78,0xf0,0xf4,0xa,0x83,0xe1,0x0,0xab, - 0x35,0x7b,0x93,0x1c,0x1f,0x40,0xbb,0xc0,0x95,0x57,0x2e,0xb1,0x72,0xfc,0x10,0x6e, - 0xdc,0x47,0x89,0x40,0xa2,0xb,0xb2,0x58,0x80,0x55,0x44,0xb1,0x22,0x58,0x4f,0x6a, - 0x21,0xcb,0x3d,0xd8,0x40,0x10,0x96,0xb4,0xf0,0x74,0x6,0x19,0xce,0x5a,0xa,0x1b, - 0x70,0x48,0xaa,0x95,0x88,0xa4,0x18,0x60,0x85,0xa2,0x8e,0xc7,0xe0,0x91,0x1e,0x82, - 0x57,0x24,0x75,0x41,0x6e,0x3,0xd6,0x7,0x84,0x82,0xc4,0x48,0x12,0x55,0x90,0x2a, - 0x43,0xc8,0x3d,0xc3,0x49,0xc1,0xe7,0x9e,0xeb,0xd0,0xb,0x87,0x58,0x59,0x9d,0x2f, - 0xe3,0xfa,0x2d,0xc,0xe3,0xae,0x46,0x93,0xf2,0xe7,0x28,0x8e,0x99,0x4b,0x12,0x66, - 0xe7,0xe7,0xc8,0xd2,0x8c,0xce,0xde,0x2e,0x5b,0x9b,0x37,0x29,0xf2,0x4d,0x5a,0xed, - 0x16,0x47,0x8e,0x1e,0x21,0xcf,0x32,0x36,0xd6,0xd6,0xd8,0xda,0xdc,0xa4,0xd5,0x6a, - 0x13,0x47,0x6,0xef,0x1d,0x79,0xe1,0x79,0xf2,0xf3,0x2f,0xf3,0xec,0x97,0x2e,0x32, - 0x37,0x3f,0x4b,0x51,0x38,0xd6,0x37,0xb6,0x78,0xf4,0xbe,0x39,0x1e,0x7f,0xf8,0x18, - 0x7e,0x8a,0xc4,0x7a,0x2f,0x88,0x62,0x83,0x4f,0xb,0x94,0x30,0x38,0xaf,0x18,0x77, - 0x77,0xd8,0xbc,0xf2,0x12,0x27,0xce,0x3e,0xf6,0x66,0x8,0xef,0x9c,0x8c,0xc7,0xbf, - 0x52,0x6f,0xb4,0xef,0x2,0x87,0xe,0xc,0xe0,0xda,0xb5,0x9b,0x54,0x1b,0xd,0xf2, - 0x3c,0x8d,0xab,0xd5,0xfa,0xf,0x5d,0xb9,0xfc,0x4a,0xab,0xb7,0x79,0x8d,0xad,0x4a, - 0x84,0xf3,0x8e,0xeb,0x9f,0x7e,0x6,0x1d,0x19,0x94,0x14,0x77,0x32,0xa2,0xe5,0x8d, - 0x8b,0xd2,0x85,0x2b,0x21,0xa9,0x19,0x43,0xee,0x60,0x82,0x21,0x97,0x31,0x32,0xaa, - 0x82,0xd0,0xe4,0x99,0xc5,0x5a,0x4b,0xb3,0xd5,0x2a,0x4b,0xa7,0x10,0x8,0xbe,0xcc, - 0xf,0x24,0x2,0xa3,0x15,0x18,0x45,0x91,0x15,0xbc,0x7c,0x71,0x9d,0xad,0xcd,0xe, - 0x1,0x88,0x2a,0x31,0xcd,0x5a,0x44,0xb3,0xa2,0x69,0xc6,0x11,0x71,0x77,0x97,0x17, - 0xfe,0xe0,0x77,0xd9,0xd8,0x9b,0x30,0xca,0x72,0x8c,0x16,0x8c,0x33,0xcb,0x28,0x75, - 0x9c,0xbb,0x60,0x49,0x33,0x4f,0xb7,0x97,0xd3,0x1f,0x66,0x38,0x1b,0xc8,0x73,0xcb, - 0x70,0x9c,0x31,0x18,0x95,0x3c,0xc4,0xf1,0xd5,0x19,0xbe,0xfd,0xb1,0x55,0x8e,0xae, - 0xce,0x50,0x4d,0xc,0x52,0x28,0x82,0xd,0x78,0x77,0x4b,0xbf,0x20,0x70,0xc1,0x32, - 0xc1,0x13,0x64,0xc0,0x5a,0x8,0x46,0x11,0xd7,0x6a,0x28,0xeb,0x30,0xf9,0x84,0x27, - 0xce,0xf,0x99,0x98,0x15,0x16,0x5a,0x2d,0x9c,0x73,0x58,0x6b,0xf1,0xde,0x1f,0x80, - 0x3a,0xb7,0xc,0xe1,0xd6,0xc0,0x29,0x29,0xe5,0x41,0x7f,0x43,0x52,0x49,0x38,0x7c, - 0xe4,0x8,0xf3,0x8b,0x8b,0xec,0x6e,0xef,0xb0,0xb9,0xbe,0xce,0xd6,0xcd,0x2d,0xe, - 0x2d,0x2f,0x73,0xff,0x83,0xf,0x72,0xe9,0xc2,0x5,0x5e,0x79,0xf9,0xe5,0x69,0xe5, - 0x64,0xb9,0xef,0x81,0x7,0x38,0x75,0x7a,0x6,0x63,0xc,0x69,0x96,0x73,0xe3,0xf2, - 0x35,0x6e,0xee,0xec,0xf3,0xf9,0xee,0xe,0x97,0x5e,0xbc,0x42,0xa4,0x4,0xd5,0xc4, - 0xa0,0xd5,0xed,0xfe,0x3,0xef,0xc0,0x18,0xcd,0x4c,0x33,0x42,0xec,0x5d,0x26,0x1d, - 0x9f,0xae,0x45,0x49,0xf5,0x87,0x2,0xe1,0x13,0x28,0x3d,0xbe,0x71,0xe3,0xc6,0x57, - 0x7b,0x80,0xc7,0x1e,0x4b,0xd8,0xeb,0xa,0x8c,0x89,0x1e,0xcc,0xb2,0xec,0xdd,0xe7, - 0x9f,0x79,0xa,0x91,0xe5,0xc,0x42,0x20,0x8e,0x14,0xca,0x6,0xac,0xcd,0xb0,0x40, - 0x10,0x12,0x57,0x14,0x98,0xd8,0x20,0xa5,0xc0,0xa3,0x91,0x42,0x30,0xb4,0x39,0x6b, - 0x59,0x41,0x65,0xf6,0x10,0xcd,0x99,0x39,0xaa,0xc6,0x60,0x8b,0x82,0x4e,0x67,0x8f, - 0xe0,0x3d,0x8b,0x4b,0x4b,0xc4,0x71,0x8c,0xb3,0x96,0xc9,0x64,0x82,0x2b,0xb2,0x32, - 0xe3,0x76,0x9e,0x4a,0xa4,0xa9,0x57,0x12,0x84,0x10,0xa4,0x85,0x67,0x6d,0x27,0xa5, - 0x28,0xa,0xb2,0x74,0x97,0xc2,0x16,0x18,0xe1,0x68,0x35,0xeb,0x28,0x63,0xd0,0x26, - 0x2e,0xab,0xf,0x21,0xe,0x92,0x4a,0xe7,0x3c,0x59,0x9e,0x93,0x66,0x39,0xd6,0xda, - 0x92,0x37,0x2f,0x2c,0x45,0x91,0xd1,0xaa,0x8,0x1e,0x7d,0x60,0x99,0xb7,0x3e,0x7e, - 0x8c,0x7,0xef,0x6d,0xd1,0x6a,0x26,0xb8,0x10,0x21,0x84,0x47,0x62,0xf,0x4e,0x11, - 0x22,0x42,0x28,0x85,0x9b,0x38,0x7c,0x1,0x58,0x87,0xf0,0x63,0xd6,0xb7,0x3d,0x17, - 0x2f,0x39,0x94,0xc,0x9c,0xdf,0xb0,0xc,0xcd,0x32,0xcd,0x66,0x9d,0x3c,0xcb,0xe, - 0xa6,0x8e,0xdd,0x52,0xf5,0x1c,0x4c,0x21,0x9b,0xe,0x98,0xa,0xbe,0xac,0x74,0x94, - 0xd6,0x65,0x42,0x18,0xc7,0x28,0xad,0x89,0xa2,0x88,0xc3,0x47,0x56,0x98,0x9d,0x9b, - 0x63,0xeb,0xe6,0x26,0xd7,0x2e,0x5d,0xa6,0xb3,0xb7,0x8b,0x94,0x12,0xef,0x3d,0xad, - 0x99,0x19,0x4e,0x3f,0x70,0x3f,0x73,0xb,0xb,0x74,0xb6,0xb7,0xe9,0x76,0xba,0x9c, - 0x7f,0xe1,0x25,0xba,0xfb,0x7d,0x62,0xa3,0x38,0xf1,0xc0,0x59,0x76,0x77,0x3b,0xc, - 0x8b,0x8c,0xbe,0x15,0x90,0x8e,0x68,0x1a,0x4f,0xac,0x24,0x22,0x40,0x91,0x59,0x8e, - 0x55,0xea,0xec,0xac,0xdf,0xc0,0xcf,0x5f,0xe6,0xe8,0xe9,0xb3,0x6f,0xf,0x3e,0xbc, - 0xbe,0xd5,0x6a,0x7f,0xfe,0xb7,0x3e,0xfe,0xf1,0xbb,0xd,0xe0,0x83,0x1f,0xfc,0x20, - 0xef,0x7a,0xd7,0xff,0x42,0x78,0xfb,0x65,0x7e,0xf9,0xbf,0xf9,0xd5,0xef,0xdb,0xd8, - 0xb8,0x7e,0x78,0xeb,0xea,0x2b,0xcc,0x68,0x49,0x35,0x56,0x24,0x91,0xe2,0xae,0xa1, - 0x5d,0x42,0xe0,0x5,0x44,0xb1,0x4,0x99,0xe0,0xd1,0xec,0x8f,0x73,0xb6,0xc6,0x82, - 0xc5,0xe5,0x23,0x1c,0x5a,0x9c,0x47,0x8,0x18,0xc,0x46,0x6c,0x6d,0xdd,0xa4,0x5e, - 0xab,0xb1,0xb0,0xbc,0x4c,0x9e,0x65,0x6c,0x6f,0x6d,0x91,0xe7,0x39,0x52,0x4a,0x8c, - 0x89,0x98,0x9d,0x9b,0x67,0x32,0x99,0x94,0x93,0xb9,0xb2,0x14,0x6b,0xed,0x14,0x60, - 0x54,0xc4,0x71,0x44,0xa3,0xd1,0xc0,0x18,0x83,0xbc,0x75,0x92,0xa4,0x2c,0x41,0x13, - 0xef,0xc8,0xf2,0x9c,0xf1,0x38,0x65,0x34,0x9e,0x30,0x49,0x53,0xf2,0xc2,0x96,0xa0, - 0x11,0x1,0x57,0x14,0x24,0x3a,0xf0,0xd8,0x3,0x8b,0xbc,0xfd,0xf1,0x63,0xac,0x1e, - 0x6a,0x61,0xb4,0x64,0x67,0x77,0xcc,0x76,0xb7,0xc0,0xbb,0xb2,0xb3,0x50,0x69,0x71, - 0xa0,0x2e,0xf6,0x2e,0x1c,0x8,0x4d,0x42,0x0,0x6c,0x81,0x74,0x23,0xba,0x3,0xcd, - 0xc6,0xbe,0x67,0xb3,0x93,0x21,0x9b,0x27,0x68,0x36,0x1a,0xa5,0x1b,0x95,0x92,0x74, - 0x92,0x62,0x8b,0x9c,0x3c,0xcb,0x88,0xa2,0x8,0xef,0x3d,0x83,0x7e,0xbf,0x8c,0xfd, - 0x45,0x71,0x30,0x9a,0xe,0x4,0x52,0xa,0x4c,0x14,0x51,0xad,0xd5,0x68,0xb5,0xdb, - 0x68,0x63,0x18,0x8d,0x86,0x10,0x2,0xab,0xc7,0x8f,0xa1,0xb5,0x66,0x63,0x7d,0x9d, - 0xf9,0xc5,0x45,0x4e,0x9e,0xbe,0x8f,0x85,0xc5,0x45,0x9c,0x73,0x74,0xf7,0x7b,0x7c, - 0xe9,0xe9,0x67,0x18,0x4d,0x32,0xa4,0x36,0xc4,0x91,0x41,0x6a,0xc3,0xf2,0xca,0xe1, - 0x52,0x94,0x92,0x95,0xd9,0xbf,0xc,0x8e,0xd1,0xb0,0x87,0x29,0x86,0x44,0x58,0xce, - 0x5d,0xde,0x23,0xcd,0xb,0xe,0x9b,0x73,0x2c,0x1d,0x3b,0xb9,0x60,0x8c,0xf9,0x81, - 0xb5,0xf5,0xcb,0x5f,0xf8,0xf4,0xb9,0x2f,0x86,0x5f,0xfc,0xa5,0x5f,0xe2,0x7,0xe4, - 0x36,0xc0,0x93,0x0,0x0,0x20,0x0,0x49,0x44,0x41,0x54,0xff,0xfa,0x5f,0x2f,0xd, - 0xe0,0x8d,0x8f,0x3f,0xce,0x87,0x3f,0x72,0x1f,0xff,0x26,0x8e,0x96,0xb4,0x73,0xdf, - 0xf3,0xca,0x4b,0x2f,0x30,0x17,0x79,0x5a,0xb5,0xe4,0x40,0xb7,0x27,0xef,0x28,0x1f, - 0x9d,0xf7,0x4,0x1,0xde,0xa,0xac,0xcf,0xd8,0x4b,0x73,0xd6,0x6,0x9e,0xd5,0xd5, - 0x23,0x2c,0x2d,0xcc,0x21,0x84,0x60,0x3c,0x9e,0xb0,0xbd,0xb5,0x45,0xbb,0xd5,0x26, - 0xaa,0x24,0x74,0xba,0x5d,0x44,0x8,0xd4,0x6a,0x35,0xe6,0x17,0x16,0x10,0x42,0x30, - 0xe8,0xf7,0xd9,0xdc,0xd8,0x24,0xcb,0x33,0xa2,0x28,0xa6,0x5a,0xab,0x61,0xa2,0xf8, - 0x60,0x5e,0xdf,0xad,0x18,0x7a,0xeb,0x54,0xa5,0x69,0xb9,0xd9,0xe3,0xd1,0x98,0x71, - 0x9a,0x92,0x67,0x39,0x6e,0xba,0x11,0xc1,0x97,0x0,0x8a,0xb7,0x5,0x5a,0xa,0x8e, - 0xaf,0xb4,0x39,0x75,0x6a,0x89,0xd9,0xd9,0x6,0x57,0xf6,0x1c,0x97,0x77,0xf7,0xa6, - 0x4d,0x27,0xe2,0x55,0xfa,0x34,0xc2,0xb4,0xfd,0x33,0xdc,0x21,0x3a,0xe,0xb7,0x1b, - 0x13,0x29,0xd8,0xde,0x9d,0xa0,0x93,0x43,0x1c,0x6f,0xb5,0xe,0xe2,0x7b,0x51,0x14, - 0x78,0xef,0xcb,0xf1,0x73,0x71,0x8c,0xf3,0x9e,0x74,0x92,0x92,0x54,0x6b,0xd3,0x44, - 0xb4,0x6c,0x14,0xf5,0xce,0x93,0x67,0x29,0xa3,0xe1,0x88,0xbd,0xdd,0x3d,0x7a,0xfb, - 0xfb,0x34,0x5b,0x4d,0x1a,0xcd,0x26,0x9d,0xdd,0x5d,0x1e,0x7a,0xe4,0x11,0x5a,0xed, - 0x36,0xe7,0xcf,0x9d,0xa3,0xc8,0x73,0x4e,0xde,0x57,0x6e,0x3e,0xc0,0xce,0xce,0x2e, - 0x5f,0x7a,0xfa,0x19,0xfa,0xfd,0x1,0x71,0xad,0x8e,0xb7,0x96,0x76,0x7b,0x9e,0x7a, - 0xad,0x46,0x96,0x65,0x68,0x63,0x68,0x37,0x9b,0x68,0x5d,0x56,0x60,0xd6,0x2d,0x31, - 0x18,0xc,0x19,0x74,0xb6,0x11,0xe3,0x2e,0xed,0x9a,0xa0,0xe8,0x6e,0xd0,0xdf,0xdb, - 0x66,0x66,0xe9,0xf0,0x77,0x2d,0x2f,0xad,0xfe,0xf4,0x8f,0x7d,0xef,0xc9,0xb5,0x2f, - 0x8e,0x7a,0x77,0x84,0x0,0x71,0x86,0x24,0xf9,0x3c,0x20,0x1e,0xef,0xf5,0xfb,0x67, - 0xf7,0x6e,0xbc,0xc2,0x52,0xbb,0x36,0xd5,0xe8,0x7,0xea,0x89,0x27,0x51,0xe5,0x62, - 0xb9,0x10,0xe8,0x8c,0x3,0x9d,0x89,0xa4,0xe7,0x14,0x5b,0x7b,0x3,0x5a,0x8b,0x87, - 0x59,0xac,0x1a,0x16,0x17,0xe6,0x90,0x52,0x52,0x58,0xcb,0xd6,0xd6,0x4d,0x5a,0xad, - 0x26,0x26,0x8e,0x99,0x4c,0x52,0x66,0x5a,0x2d,0xa2,0xc8,0x90,0x65,0x39,0x7b,0x9d, - 0xe,0xc3,0x5e,0x1f,0x63,0x34,0x2b,0x47,0x56,0x48,0xf3,0x7c,0xaa,0x99,0xe7,0x8e, - 0x6,0x90,0xf2,0x4,0x8d,0xc6,0x63,0x86,0x83,0x11,0xc3,0xd1,0x90,0x2c,0xcd,0xb0, - 0xce,0x95,0x9d,0x40,0xd3,0xde,0x81,0x40,0x20,0xe4,0x8e,0xe0,0x4b,0x40,0x68,0xa6, - 0x19,0x71,0xe6,0xcc,0x11,0xe,0x1d,0x2a,0x5b,0xb0,0xf3,0x2c,0xc7,0xf9,0x12,0x90, - 0x2a,0x3b,0x77,0xc1,0xf9,0x40,0x61,0x3,0x71,0xa4,0x99,0x69,0x26,0x28,0x75,0x67, - 0x9f,0x1,0x4c,0x0,0xe5,0x4a,0xe1,0x76,0x8,0xd0,0xed,0x67,0xc,0xc7,0x86,0x53, - 0x47,0x16,0xee,0x16,0xa8,0x56,0x2a,0x18,0xad,0x29,0x8a,0x2,0xeb,0xdc,0x41,0x6e, - 0x53,0x6e,0x44,0x29,0xec,0xb4,0xb6,0xc0,0x5a,0x87,0x2b,0x32,0xac,0x2d,0x67,0x10, - 0x36,0x5a,0x4d,0xce,0x9c,0x3d,0xcb,0xee,0xce,0x2e,0xaf,0x7b,0xf4,0x31,0xe6,0x17, - 0x17,0x78,0xf9,0xf9,0xe7,0x19,0x8f,0x46,0xac,0x1e,0x3b,0xce,0xa1,0x29,0x85,0xdb, - 0xed,0xee,0xf3,0xb9,0xdf,0xff,0xc,0xc3,0xe1,0xa8,0xa4,0x86,0x3,0x54,0x62,0xc3, - 0xf1,0x63,0x47,0x71,0xce,0xa1,0x94,0xa2,0x5a,0x49,0xe,0xc2,0x86,0x9b,0x8a,0x44, - 0xe2,0x28,0x42,0x2d,0x2c,0x53,0xe4,0xb3,0x54,0xd2,0x35,0x16,0x2b,0x23,0xb2,0xbd, - 0x4b,0xb8,0xf9,0x43,0xf7,0x49,0x21,0xde,0x52,0x98,0xe8,0xdf,0xce,0xf7,0x7a,0x84, - 0x10,0xd0,0x1f,0xfc,0xe0,0x7,0xc9,0xe4,0x15,0xd6,0xb6,0x7a,0xea,0xc8,0x52,0xe5, - 0xbb,0xd7,0xd7,0x6e,0x54,0x47,0x9d,0x1d,0x46,0xf5,0x8,0x3f,0x25,0x7c,0x7a,0xa3, - 0x0,0x42,0xe2,0xa4,0x21,0x17,0x15,0xbc,0xa9,0x11,0xcf,0x36,0xe8,0x6e,0x6e,0xd0, - 0x5a,0x5c,0xa1,0x52,0x6f,0x10,0x47,0x86,0x38,0x8a,0x8,0x21,0xd0,0xd9,0xdd,0x25, - 0x89,0x13,0x2a,0xd5,0x1a,0xc6,0x18,0x5a,0xcd,0x6,0x59,0x96,0x73,0xf1,0xd2,0x55, - 0x6e,0x6e,0x6d,0xd1,0xac,0x25,0x9c,0x38,0x7e,0x9c,0x46,0xb3,0x49,0x8,0x81,0x34, - 0x2f,0xe,0x54,0xb1,0x93,0xc9,0x84,0xd1,0xb0,0x1c,0xbf,0x36,0x4e,0x33,0xa,0xe7, - 0x4a,0xa4,0x6b,0xea,0x97,0xa5,0x54,0xb7,0x67,0x6,0x4c,0x49,0x16,0x6f,0x2d,0xae, - 0xc8,0x58,0x9d,0xaf,0x73,0xe8,0xd8,0x12,0x93,0xd4,0x71,0xf5,0xf2,0x2e,0xd6,0x81, - 0xf3,0xe0,0xd0,0x38,0xeb,0xc8,0xf2,0x82,0x2c,0x2f,0x13,0xb6,0xc3,0xf3,0x75,0x1e, - 0x3a,0xb9,0xc8,0x72,0xa3,0xc6,0xb4,0x87,0x3,0x2f,0x3c,0xe5,0x3f,0x10,0x53,0x94, - 0x72,0xb7,0x97,0x72,0xb9,0x1b,0x58,0x5c,0x3e,0x44,0xbd,0xd9,0x0,0xef,0xf,0xa6, - 0x8c,0x3a,0x57,0x4a,0xb5,0x92,0x4a,0xe5,0xae,0xea,0xe8,0x96,0xe7,0xf2,0xde,0xb3, - 0xdf,0xed,0xf2,0xca,0x4b,0x2f,0x93,0xe7,0x19,0xb6,0xb0,0xd4,0xea,0xd,0x8e,0x9f, - 0xbc,0x7,0xa5,0x35,0xf5,0x46,0x9d,0xb9,0x85,0x79,0xb6,0x6f,0xde,0x64,0xeb,0xe6, - 0x16,0xcb,0x47,0x8e,0x70,0xe4,0xd8,0x51,0x84,0x10,0x8c,0x46,0x23,0xfe,0xe0,0x33, - 0x9f,0x65,0x77,0x67,0x17,0x93,0x54,0x90,0x4a,0x13,0xbc,0x63,0x7e,0x76,0x81,0x51, - 0x9a,0x13,0x19,0x8d,0xd6,0x9a,0xed,0x9d,0x3d,0x7a,0xfd,0x72,0x54,0xdd,0x64,0x32, - 0xa1,0xc8,0xf3,0x32,0x27,0x1,0x8e,0x1d,0x3f,0xc6,0x6c,0x7d,0x8e,0xcb,0x37,0xfb, - 0x34,0xdd,0x45,0xea,0x47,0x1e,0x4e,0x2a,0xd5,0xea,0x77,0xed,0x77,0x76,0x7f,0xa5, - 0x35,0xbb,0x58,0x7c,0xf8,0xc3,0x1f,0x46,0x77,0xbb,0x1d,0x64,0x61,0x99,0x6b,0xb4, - 0xe,0x59,0xe7,0xde,0x7a,0xe9,0xe5,0x17,0xe8,0xef,0xef,0xe3,0xb3,0x4,0x25,0x5, - 0x4e,0x68,0xa,0x5d,0xa5,0x3e,0xb3,0x40,0x7b,0x76,0x8e,0xb9,0x5a,0x8d,0x28,0x32, - 0x6c,0x6d,0x6e,0xd2,0xed,0x74,0x59,0x7e,0x70,0x85,0xd1,0x24,0x65,0xa6,0xd5,0x9c, - 0xba,0xfe,0x31,0xd6,0x3a,0xea,0xcd,0x6,0xc6,0x68,0xa2,0xc8,0x30,0x18,0xe,0x79, - 0xf1,0xc2,0x65,0xfa,0xfb,0x5d,0x4e,0x1e,0x5f,0xe5,0xe8,0xd1,0xa3,0x28,0xad,0xa7, - 0xc9,0x9b,0x63,0x3c,0x1a,0xd1,0xed,0xee,0xd3,0xeb,0xf7,0x49,0xb3,0x1c,0x17,0x6e, - 0x91,0x41,0x7e,0x1a,0x3b,0x25,0xc1,0x4d,0x15,0x38,0xd3,0xc6,0x11,0x25,0x40,0x49, - 0x59,0xbe,0x47,0xb3,0x46,0x64,0xc,0xd5,0x5a,0x95,0xd4,0x1a,0x94,0xd2,0x8,0x29, - 0x29,0xbc,0x23,0x73,0x45,0x9,0xca,0x64,0x39,0xde,0x3b,0x66,0xda,0x31,0x47,0x57, - 0x67,0x38,0x34,0x5b,0xc3,0x4b,0xc9,0xe6,0x60,0x42,0x14,0x6b,0x84,0x80,0xb4,0x70, - 0x78,0x11,0xd0,0xce,0x23,0xa5,0xa0,0x28,0x1c,0x57,0xd6,0x53,0x92,0x4a,0x8b,0xf9, - 0x85,0x39,0x6,0xfb,0x3d,0xb2,0x2c,0x25,0xb7,0x65,0xb7,0x8f,0x89,0xc,0x8d,0x7a, - 0xed,0xe0,0x5e,0xee,0x2c,0xfd,0x6,0xfd,0x3e,0x9b,0xeb,0xeb,0x68,0xad,0x99,0x99, - 0x9b,0x43,0x29,0xc5,0xde,0xee,0xe,0xca,0xc4,0xd4,0xeb,0x75,0x76,0xb7,0xb7,0x59, - 0x3a,0xbc,0x8c,0xb5,0x96,0x6b,0x97,0xaf,0x90,0xd4,0xea,0xac,0xac,0xae,0xa2,0x94, - 0x22,0xcf,0x73,0x9e,0xf8,0xfc,0x13,0xac,0xaf,0xad,0x63,0x92,0xa,0x78,0x4f,0x10, - 0x1e,0x19,0x3c,0xe,0xc1,0x70,0x34,0x66,0x32,0x99,0xb0,0xb3,0xbb,0xcb,0x78,0x34, - 0xc2,0x4d,0xa5,0xf3,0xe2,0x60,0x7d,0x24,0x36,0xcf,0xd8,0xdc,0xbc,0x49,0xe3,0xd4, - 0x49,0xd6,0xf7,0x72,0x74,0xf7,0x32,0x2b,0xf,0x6d,0x70,0xe4,0xd8,0xc9,0x37,0x4b, - 0xa5,0x8e,0xe4,0x59,0x7a,0xe5,0xf8,0xea,0x2a,0xfa,0xa1,0x87,0x5e,0x4f,0xaf,0xdf, - 0x43,0x69,0xf5,0xfa,0xc1,0x60,0x70,0xcf,0x8d,0xcb,0x17,0xc9,0x6d,0xc1,0x30,0x85, - 0xc6,0xdc,0x32,0xcb,0xab,0xf7,0x50,0x6d,0x94,0xee,0xfb,0xd6,0x63,0x38,0x18,0x30, - 0x18,0xc,0x99,0x99,0x9b,0x43,0xc8,0x92,0xd9,0x8a,0x22,0x53,0x5a,0x7c,0x6f,0x40, - 0x14,0xc7,0x44,0xa6,0x1c,0xad,0xba,0xdf,0xeb,0x73,0xfe,0xc5,0xb,0xd8,0x2c,0xe5, - 0x75,0x67,0xef,0x67,0x71,0x71,0xe1,0x40,0x51,0x3b,0xe8,0xf,0xb8,0xb1,0xb6,0xc6, - 0xe6,0xd6,0x2e,0xd6,0x87,0xe9,0x6,0x97,0x6a,0xe2,0xe0,0x7d,0xa9,0x36,0xa,0x65, - 0xff,0x5c,0x8,0xe5,0x90,0x88,0x24,0x32,0x98,0xc8,0x10,0x45,0x31,0x49,0x12,0x63, - 0xa2,0x8,0xa3,0x75,0x99,0x28,0x4a,0x89,0xb5,0x96,0xe1,0x68,0x4c,0x7f,0x38,0x62, - 0x92,0x96,0x13,0x3e,0xa5,0x80,0xf9,0x76,0x85,0xe3,0xab,0x33,0x34,0x5b,0x55,0x84, - 0x56,0xa4,0xd6,0x51,0x8d,0x2,0x43,0xe7,0x9,0x63,0xb,0xde,0xe3,0x7c,0x38,0xe0, - 0xc8,0xd3,0xcc,0xb1,0xb1,0x9d,0xd1,0x1f,0x16,0x2c,0x2f,0x37,0xd9,0xdd,0xda,0xa6, - 0xdf,0xef,0x53,0x6b,0x34,0x98,0x9b,0x9b,0xa3,0x5a,0xab,0xa2,0xb5,0xfe,0xa,0xfe, - 0x42,0x90,0xe7,0x39,0xeb,0xd7,0xaf,0x73,0xf9,0xe2,0x45,0xce,0x3c,0xf8,0x20,0xf3, - 0xb,0xb,0xec,0x77,0xf7,0xd9,0xd9,0xde,0xc2,0xb9,0xc0,0xd2,0xe1,0x5,0x26,0x93, - 0x31,0xb5,0x7a,0x9d,0x4a,0xa5,0xc2,0xd5,0x4b,0x97,0xc8,0x8b,0x82,0x53,0x67,0x4e, - 0x1e,0xf4,0x54,0x3c,0xf7,0xec,0x73,0x5c,0x7c,0xf1,0x45,0x74,0x52,0xb9,0xdd,0x5, - 0x15,0xca,0xe1,0x94,0x3b,0x9d,0x1e,0x5b,0xdb,0xbb,0x64,0x93,0x31,0x8,0x81,0xd2, - 0x86,0xa8,0x52,0x2b,0xbd,0xe1,0x1d,0x1e,0x48,0x45,0x11,0x93,0xf1,0x84,0x2c,0x2f, - 0x88,0x2a,0x35,0xec,0x68,0x8f,0x9b,0xd7,0xaf,0x70,0x78,0xf5,0xf8,0xd1,0x10,0xc2, - 0x63,0x8d,0x46,0xeb,0xca,0xcd,0x9d,0x6d,0x74,0xb5,0x11,0xf8,0xdd,0x8f,0xef,0x88, - 0x77,0x7c,0xe7,0xdc,0x5b,0xb6,0x6e,0x6e,0xd6,0x9b,0x91,0x63,0xf9,0xec,0x71,0x9c, - 0xb5,0x8c,0x44,0x8b,0x7a,0x7b,0x16,0xad,0xe4,0x6d,0x5d,0xfb,0xd4,0x4d,0xd7,0x9b, - 0x4d,0xc4,0x70,0x88,0xf7,0xa1,0x64,0xb2,0x94,0x62,0x38,0x1a,0x93,0x17,0x5,0xf5, - 0x7a,0x95,0x24,0x89,0x19,0xc,0x87,0x9c,0x7f,0xf1,0x2,0xbe,0xc8,0x79,0xf8,0xa1, - 0x7,0x98,0x99,0x9d,0x2d,0x9b,0x1b,0xc6,0x63,0xae,0x5d,0xbf,0xce,0xc6,0xe6,0x36, - 0x99,0xf5,0x48,0xa5,0xa6,0x90,0xf0,0x6d,0x48,0x1a,0x51,0x66,0xfc,0xc1,0xf9,0x92, - 0x13,0x9f,0x92,0x29,0x45,0x10,0xe4,0x69,0xc1,0x28,0x2d,0xa0,0x3f,0x3c,0x70,0xbb, - 0x52,0x94,0xed,0x24,0xce,0xda,0x92,0x61,0x98,0xe6,0x9,0x33,0xb5,0x88,0x63,0xf3, - 0x55,0xda,0x33,0x15,0x54,0xa4,0xf0,0xb9,0xa7,0x66,0xe1,0xa1,0x15,0xcd,0x89,0x96, - 0xe4,0xe2,0xbe,0xe3,0xf9,0x1d,0x87,0x98,0x64,0x58,0x6b,0x29,0x8,0xec,0x74,0x26, - 0x6c,0xf5,0x1d,0x4a,0x48,0xac,0xf3,0xd8,0x3c,0x63,0xd0,0xf7,0x34,0xea,0x75,0x66, - 0xe7,0x66,0xa9,0xbc,0xc6,0xe6,0x77,0x76,0x77,0xd9,0xde,0x2a,0xd5,0x3c,0xb5,0x46, - 0x83,0xf9,0xc5,0x45,0xd2,0xc9,0x4,0x29,0x5,0xe9,0x24,0x25,0x4a,0x62,0xda,0x33, - 0x2d,0x86,0xfd,0x3e,0xb,0x4b,0x4b,0x8c,0x47,0x23,0x6e,0x6e,0x6c,0x70,0xf8,0xc8, - 0x11,0x16,0x16,0xe6,0xa7,0x12,0xbc,0x35,0x9e,0x7b,0xe6,0x19,0xe4,0xb4,0x49,0x96, - 0x50,0x32,0xac,0xbe,0x28,0x90,0x4a,0x31,0xe9,0xef,0x97,0x87,0x2e,0x8a,0xcb,0x83, - 0xe4,0xcb,0xc4,0x37,0xdc,0x6a,0x94,0x1,0x84,0x2a,0x45,0xba,0x2e,0x4,0xfa,0xfd, - 0x1e,0xcd,0x56,0x93,0x6a,0xd5,0xe1,0x7,0xbb,0xa4,0x93,0x71,0xc5,0xc4,0xf1,0x5b, - 0x37,0x37,0xaf,0xfd,0x4a,0xb5,0xde,0xf2,0xba,0x56,0x3f,0xcc,0x63,0x6f,0x5a,0x6b, - 0x58,0x6b,0xdf,0xd4,0xd9,0xdd,0xe4,0x3d,0x6f,0x3f,0xcb,0x1b,0xbe,0xed,0x38,0xde, - 0x79,0x7e,0xed,0xb7,0x5e,0xe0,0xb9,0x97,0x2e,0x70,0xff,0x99,0x7b,0x51,0x53,0xd7, - 0x3b,0x18,0x8e,0xa8,0x54,0x6b,0x8c,0xc6,0x63,0xd4,0x54,0x7d,0x1a,0x99,0xd2,0x3b, - 0xf4,0xfa,0x3,0x92,0x38,0xa2,0x56,0xad,0x92,0xe7,0x5,0x2f,0xbc,0x7c,0x9,0x6f, - 0xcb,0xcd,0x6f,0xcf,0xcc,0x60,0xad,0xe5,0xe6,0xe6,0x26,0x97,0xaf,0x5c,0x67,0x98, - 0x66,0xc8,0xe9,0x7,0xbd,0x2d,0x6d,0x52,0x28,0xa9,0x50,0xb7,0xf8,0x72,0xa5,0xcb, - 0x53,0x55,0x14,0x8c,0xc6,0x93,0x69,0xc7,0x51,0xb8,0xcb,0x50,0x9c,0x2d,0xf0,0xb6, - 0xcc,0x55,0x84,0x54,0x48,0xad,0x11,0x42,0x92,0x44,0x8a,0x23,0xf3,0x55,0x8e,0xb4, - 0x2b,0x34,0x62,0x5,0x5a,0x62,0x23,0xcd,0x91,0x59,0xc3,0xa9,0x76,0x42,0xab,0xe8, - 0x21,0x87,0x19,0x27,0xa3,0x88,0x99,0xa3,0x6d,0xd6,0xb7,0xe1,0x95,0x6d,0xc7,0x60, - 0x52,0x10,0xac,0xe7,0x48,0x53,0x53,0xaf,0x69,0x6e,0xe,0xa7,0xc3,0xa6,0x2b,0x49, - 0xd9,0xeb,0x27,0xef,0x1e,0xfa,0x20,0xa7,0xb9,0xc0,0x85,0x97,0x5e,0x62,0xed,0xea, - 0x55,0xbe,0xfd,0x3b,0xbe,0x83,0x2c,0xcd,0x18,0xd,0x87,0x28,0xa5,0x70,0xce,0x51, - 0xe4,0x39,0xb6,0x28,0x68,0xcd,0xcc,0x82,0xf,0x65,0xb5,0x63,0xc,0x57,0x2f,0x5d, - 0xa2,0x52,0xad,0x71,0xe4,0xe8,0x2a,0x52,0x4a,0xc6,0xe3,0x31,0x4f,0x3d,0xf9,0x24, - 0x93,0x34,0x23,0x4a,0x2a,0x53,0x90,0x4d,0x4e,0x15,0xc0,0x16,0x5c,0xf9,0x5e,0x5a, - 0x2a,0x6c,0x9e,0x1d,0xb8,0x7c,0x98,0xba,0x7e,0xa9,0xf0,0xb6,0xc0,0x17,0x19,0x52, - 0x55,0x91,0xda,0x30,0x1c,0x8d,0x39,0x7a,0x78,0x85,0xb7,0x3c,0x74,0xf,0xdb,0x7b, - 0x3,0xf2,0x74,0x88,0x32,0xd1,0xe3,0xb5,0x6a,0xab,0x3d,0x1e,0xa5,0x1d,0xbd,0xb7, - 0xdb,0x21,0x8a,0xcc,0xb1,0x49,0x9a,0xde,0xab,0x19,0xf2,0x96,0xb7,0xdd,0xcf,0xe1, - 0x43,0xb,0x48,0x65,0x78,0x53,0xd7,0xf2,0xf1,0x4f,0xfd,0x1a,0x26,0x8a,0x38,0x75, - 0xe2,0x28,0x7a,0x3a,0x52,0xbd,0xb0,0xf6,0xa0,0x3c,0x33,0x46,0xa3,0xb4,0xa2,0x28, - 0x2c,0x21,0x78,0x1a,0xf5,0x26,0x42,0x48,0x2e,0x5d,0xbd,0x42,0x3a,0x1e,0xf2,0xf0, - 0x43,0x67,0x69,0xcf,0xcc,0x30,0x18,0xc,0x78,0xe5,0x95,0x4b,0x6c,0xed,0x76,0x9, - 0x42,0x4e,0xdb,0xbb,0x4a,0x23,0xaf,0x24,0x11,0xf3,0x73,0x33,0xd4,0x6b,0x65,0x9f, - 0x0,0x21,0x90,0x17,0x96,0xd1,0x78,0xc2,0x70,0x34,0x22,0x4d,0xb3,0xdb,0x8d,0x95, - 0x94,0x93,0xc3,0xbd,0x2d,0x8,0xde,0x21,0xa4,0x42,0x4d,0x71,0x82,0xb2,0xbd,0xb, - 0xe6,0x9b,0x31,0xef,0x78,0x68,0x81,0x34,0x2f,0x98,0x8c,0x2d,0x4,0x85,0xf2,0x9e, - 0x90,0x16,0x34,0xc7,0x5,0x73,0x95,0x94,0xdf,0xb8,0xe6,0xb9,0x3e,0x90,0x1c,0xa9, - 0x3b,0xbe,0x7d,0x76,0x9b,0x4a,0x1e,0x88,0x94,0x66,0xa5,0x19,0x23,0x6a,0x31,0x93, - 0x2c,0xe7,0xca,0x76,0x17,0xd3,0x5a,0x45,0xa,0x49,0xaf,0x3f,0x64,0x71,0x61,0x8e, - 0x61,0xbf,0x8f,0x73,0x8e,0x5a,0xa3,0x41,0x9e,0x65,0xec,0x6e,0x6f,0xb3,0xb1,0xb6, - 0xce,0xc5,0x57,0x2e,0x73,0x78,0x79,0x89,0x6a,0xad,0xc6,0xa0,0x3f,0x40,0x29,0x8d, - 0x9d,0xc6,0xe6,0xd1,0x68,0x4,0x42,0xd0,0x6a,0xb7,0xb1,0xce,0xd2,0x68,0x36,0x99, - 0x8c,0xc7,0x74,0xf7,0x3a,0x9c,0x3a,0x73,0x1a,0x63,0xc,0x21,0xc0,0xb,0xcf,0xbf, - 0x88,0x4a,0x7,0xbc,0xf1,0xec,0x9,0xc6,0x5,0xf4,0xc7,0x29,0xb9,0x7,0x8d,0x23, - 0x89,0x66,0xa8,0x45,0x92,0x58,0x6,0xe,0xcd,0xb7,0xb9,0xb9,0xd7,0xe3,0xdc,0xd5, - 0x5d,0x84,0x52,0xe5,0x7a,0x38,0x7b,0x9b,0x5d,0xcc,0xd2,0xa9,0xe0,0x46,0x92,0x5b, - 0x8f,0x32,0x9a,0x87,0x5e,0x7f,0x82,0xad,0xbd,0x5d,0x36,0xfa,0x39,0xde,0xf9,0x7b, - 0x10,0xe1,0x9e,0x24,0x89,0x3a,0x3a,0x32,0x86,0xd4,0xda,0xfb,0xfb,0xfd,0xfe,0xe2, - 0xd1,0xc3,0x55,0x56,0xe,0xcf,0x10,0xb0,0xb8,0x10,0x38,0x73,0x66,0x89,0xf9,0x99, - 0x88,0xcb,0x97,0xaf,0x62,0xad,0xe5,0xde,0x7b,0x8e,0x53,0xab,0x55,0xe9,0xee,0xf7, - 0x4b,0x43,0x28,0x8a,0xd2,0x0,0xa4,0x62,0x30,0x9a,0x22,0x7a,0x95,0x84,0xed,0xdd, - 0x5d,0x76,0xb6,0xb7,0x39,0x7b,0xe6,0x34,0xed,0x56,0x8b,0xf5,0xf5,0x75,0x2e,0x5e, - 0xbc,0xc4,0x38,0x77,0xa5,0xbb,0x9f,0x46,0xb6,0x48,0x6b,0xda,0xad,0x26,0xf3,0x73, - 0x6d,0x22,0x53,0x96,0x88,0xfb,0xbd,0x92,0xc,0x9a,0x4c,0xd2,0x83,0xb2,0x4a,0x8, - 0x41,0xf0,0x6e,0x5a,0x8,0xf8,0xa9,0x52,0x47,0x23,0xa7,0x6e,0xf0,0xce,0x9a,0xbe, - 0x51,0xd5,0xbc,0xfd,0xfe,0x19,0x1e,0x38,0x12,0xf1,0xf4,0xa5,0xb4,0x44,0xf9,0x74, - 0x20,0xb7,0x65,0x9b,0xd5,0x78,0xc,0x3b,0x26,0xf0,0xe2,0x5e,0x60,0x27,0x85,0xfd, - 0xd4,0x73,0x3a,0x2e,0x48,0x24,0x68,0x27,0x49,0xf3,0xb2,0xdd,0x6b,0x58,0x78,0x6, - 0x85,0x62,0x29,0x8e,0xe8,0xf,0x87,0x1c,0x3e,0xb4,0x58,0x12,0x5b,0xce,0xd1,0xef, - 0x76,0x59,0xbb,0x7a,0x95,0x4e,0xa7,0xc3,0xcd,0x8d,0xd,0x8e,0xdf,0x73,0xf,0x51, - 0x52,0x41,0x4d,0x6b,0xf1,0xa2,0xc8,0x29,0xb2,0x94,0xce,0xce,0xe,0x51,0x92,0x30, - 0xec,0xf,0xd0,0x26,0x22,0x8e,0x4b,0x15,0x8f,0x31,0x86,0x1b,0xd7,0xae,0x51,0x6b, - 0xd4,0x69,0xb5,0x4b,0xa,0x6b,0x77,0x77,0x97,0xfd,0x8d,0x6b,0xfc,0xed,0xf7,0xbf, - 0x95,0xe5,0xb9,0x19,0x72,0xeb,0x40,0x1b,0xe6,0x96,0xf,0x33,0xbf,0x30,0x8f,0x51, - 0x8a,0xdd,0x8d,0x1b,0xec,0x6d,0x6d,0x61,0xb4,0xe2,0xf2,0xfa,0x2e,0x17,0xb7,0x6, - 0x64,0xae,0x54,0x56,0x15,0xd9,0xe4,0x76,0xef,0xe1,0x14,0x13,0x11,0xa2,0xcc,0x89, - 0x6,0xc3,0x31,0x51,0x2c,0x38,0x75,0x7c,0x89,0xe1,0x45,0x47,0x27,0xb5,0xf3,0x4a, - 0xc9,0xb3,0x21,0xf0,0x94,0xfe,0x9b,0xff,0xf9,0xf,0xf2,0xaf,0xfe,0xaf,0x8f,0x3c, - 0x3c,0x1c,0xf4,0xa2,0xfb,0x4e,0xb5,0xd0,0x5a,0x93,0xe5,0x25,0xd0,0xb3,0xb4,0xd8, - 0xe0,0xd1,0x87,0x8f,0xf1,0x6b,0x9f,0x78,0x81,0xb5,0x8d,0x9b,0xa4,0x59,0xc6,0xe9, - 0x53,0xf7,0xd0,0x9e,0xd2,0x96,0xde,0x97,0xa5,0x9b,0x56,0x8a,0x7e,0x7f,0x78,0x80, - 0x4a,0x5d,0xb9,0x7a,0x9d,0x7b,0x8e,0xad,0xd2,0x6e,0xb7,0x78,0xf9,0xe5,0xb,0x5c, - 0xbd,0xb1,0x4e,0x90,0xea,0xc0,0xdd,0x4b,0x29,0x69,0xb7,0x1a,0x2c,0xcc,0xce,0xa0, - 0xb5,0x66,0x38,0x1e,0xb3,0x79,0x73,0x87,0xd1,0x78,0x42,0x61,0xed,0xed,0x4d,0x9f, - 0x6a,0x8,0x5c,0x9e,0x97,0x4a,0x2,0xad,0x51,0x52,0x83,0x7e,0x75,0x15,0xc9,0x7c, - 0x2b,0xe6,0xd0,0x6c,0x82,0xf3,0x70,0xe1,0x66,0xc1,0x5a,0x2f,0x30,0x1a,0x7,0xcc, - 0xa4,0xec,0xb9,0x9b,0xa4,0x29,0xba,0x90,0x8c,0x42,0x83,0xfd,0x2,0xb4,0x84,0xa1, - 0x15,0xac,0x4d,0x24,0x67,0xea,0x8e,0xdc,0x65,0xc,0xf3,0xf2,0xbd,0x47,0xe3,0x94, - 0xa4,0xda,0x60,0x38,0x9a,0x70,0x68,0x69,0xa1,0xc4,0xfa,0x1,0x6b,0x2d,0x59,0x96, - 0x51,0xad,0x55,0xc9,0xb3,0x8c,0x63,0xc7,0x8f,0xb3,0x78,0xe8,0x10,0x97,0xae,0xae, - 0x81,0xf7,0xf4,0xbb,0x5d,0x86,0x83,0x72,0x2d,0xac,0xb5,0xe4,0xfd,0x1,0x6b,0xeb, - 0x9b,0x2c,0x1e,0x2e,0x7b,0xfd,0xa3,0x28,0x22,0xcf,0x32,0x2e,0xbf,0x72,0x99,0xd3, - 0xf,0xdc,0x5f,0x4e,0x1e,0x77,0x8e,0xe7,0x9f,0xfb,0x32,0xf,0x1f,0x9f,0x67,0x65, - 0x71,0x16,0xef,0x3,0x4b,0x87,0x16,0x39,0x76,0xea,0x14,0x8d,0x46,0xe3,0xa0,0xf7, - 0xa5,0xdd,0xa8,0x52,0x64,0x19,0x83,0x5e,0x8f,0xf9,0x56,0x8d,0x76,0xa2,0xd9,0x1c, - 0x16,0x65,0xfe,0x33,0x5d,0xaf,0x32,0x2c,0x94,0xb9,0x81,0x50,0x12,0x1f,0x2,0x93, - 0xb4,0xc0,0x7,0xc1,0x4c,0xab,0xc1,0x52,0x7b,0x40,0x67,0xd3,0x29,0xef,0x79,0xfd, - 0xcf,0xfd,0x3f,0x3f,0xfb,0xff,0xca,0x9f,0xfe,0x99,0x7f,0x55,0xc9,0xf3,0xfc,0x6c, - 0x36,0xe9,0x73,0xcf,0xea,0x61,0x92,0xb8,0x85,0xf3,0x31,0xc6,0x8,0xb4,0x96,0x3c, - 0x74,0x76,0x5,0xad,0x5,0xde,0x16,0xec,0xee,0x75,0x39,0x77,0xfe,0x45,0x3a,0xdd, - 0x1e,0x49,0x52,0x96,0x33,0xa3,0x51,0x29,0xaf,0x4e,0xb3,0x8c,0x56,0xb3,0xc1,0xf5, - 0x1b,0x6b,0xd4,0xe2,0x88,0x76,0xbb,0xc5,0xb3,0xe7,0x9e,0xe3,0xf2,0x8d,0xd,0x50, - 0x66,0x6a,0x99,0x9e,0xd8,0x28,0xe,0x1f,0x5a,0xa0,0xd5,0xa8,0xd3,0xe9,0x76,0xb9, - 0x74,0xf9,0xa,0x97,0x2f,0x5f,0xa1,0xd3,0xdd,0xa7,0xb0,0xf6,0x8e,0x76,0xee,0x1c, - 0xef,0x6c,0x59,0x6,0x9a,0x8,0x1d,0xc5,0x77,0x61,0x0,0xaf,0xd6,0x9,0x1c,0x10, - 0xf4,0x52,0xcd,0xb,0xbb,0x8a,0x73,0x1b,0x8a,0x4c,0x34,0xf1,0xa6,0xc1,0xde,0xb0, - 0x60,0xbf,0xdb,0xa5,0x1d,0x39,0x4e,0xce,0x27,0xf4,0xad,0xe0,0x16,0xee,0xe4,0x3, - 0x6c,0x67,0xd3,0x6e,0xe4,0x3b,0x66,0xfc,0x59,0x6b,0xe9,0xf5,0x47,0xd4,0x6b,0x55, - 0xc6,0xe3,0x9,0x91,0x31,0x84,0x69,0xe3,0x6b,0x14,0xc5,0xdc,0xdc,0xdc,0xe2,0x85, - 0x17,0x5e,0x42,0x4a,0x89,0x14,0xa5,0xce,0xcf,0x18,0xc3,0x78,0x38,0x64,0x6f,0x77, - 0xef,0xa0,0x34,0x1c,0xd,0xfa,0x74,0xf6,0x7b,0x54,0xab,0x35,0xf2,0x34,0x65,0x3c, - 0x18,0x70,0xe9,0xe5,0xb,0x64,0x85,0x9d,0x86,0xc6,0x21,0xd7,0xae,0x5e,0x27,0xdf, - 0xdf,0xe6,0xd,0x67,0x8e,0x13,0x42,0x60,0x71,0x79,0x99,0x7b,0xcf,0x9e,0xa5,0xde, - 0x68,0xe0,0x43,0x98,0x4e,0x1b,0xd,0x44,0x71,0xcc,0xe2,0x94,0xcb,0x8f,0x23,0x4d, - 0xa3,0x62,0xbe,0xa2,0x43,0xea,0x16,0xe4,0xac,0x6e,0x8b,0x50,0x43,0xa0,0xb0,0x1e, - 0x29,0x2a,0x54,0xe2,0x26,0x87,0xe6,0xeb,0x44,0xda,0xe3,0x9c,0x7b,0xe0,0x3f,0xfd, - 0xc1,0xff,0xac,0xa1,0xbd,0x2b,0x16,0x83,0x90,0xc7,0x8,0x19,0x4b,0x87,0xe7,0x50, - 0x51,0x84,0x56,0x29,0x46,0x68,0x6e,0xdc,0xd8,0x62,0x32,0x1e,0x73,0x68,0xa1,0xce, - 0xcd,0x4e,0xe,0xce,0xd2,0xef,0xf7,0x79,0xe6,0xb9,0xf3,0x9c,0xbe,0xf7,0x14,0x8b, - 0xf3,0xb3,0xec,0xee,0xee,0x92,0xe7,0x5,0x52,0xa,0xf2,0x2c,0xa5,0xdf,0xed,0x30, - 0xbf,0xb4,0xc8,0xf3,0x2f,0xbe,0xcc,0xde,0xfe,0x0,0xa9,0x24,0xc2,0x3b,0x8,0x9e, - 0x46,0xad,0x4a,0xb5,0x12,0x13,0x63,0x99,0xaf,0xc5,0x2c,0x56,0xea,0x9c,0xdb,0xdb, - 0xc6,0xa6,0x13,0xa2,0x4a,0x15,0xef,0xc5,0x94,0x39,0x3,0xa5,0xcd,0x6b,0x6e,0xf6, - 0x6b,0x4c,0x6b,0xa1,0xd3,0x4f,0x19,0x4e,0x1c,0x95,0x4a,0x9,0x94,0xa4,0xa3,0x21, - 0x83,0xfd,0xe,0x4b,0xad,0x84,0x53,0xcb,0x25,0xfb,0xe7,0x9c,0x63,0x38,0x29,0x6e, - 0xf3,0x60,0x2,0xfa,0x85,0xc0,0x85,0x12,0xc,0xbe,0x85,0x0,0xbb,0x29,0x4b,0x39, - 0x9e,0xa4,0xcc,0xcd,0xb6,0xf,0x12,0xde,0xce,0x7e,0x8f,0xf5,0xf5,0x4d,0xf6,0x7b, - 0x7d,0x32,0xe7,0xf,0x2a,0x80,0x3b,0xff,0x30,0x85,0xb5,0xf6,0xa0,0x43,0x3a,0xcb, - 0xb,0x94,0xd6,0xb4,0x9a,0xd,0x8a,0x2c,0x7,0x2,0xeb,0xeb,0xeb,0xcc,0xcd,0xcd, - 0x32,0x1a,0xe,0x18,0xf6,0x7,0xbc,0xf8,0xfc,0xb,0xbc,0xf5,0xbe,0x15,0x9a,0xf5, - 0x2a,0xed,0xd9,0x59,0x4e,0xdc,0x7b,0x2f,0x66,0xa,0xaa,0x7d,0xe5,0xa3,0xd9,0x6e, - 0x97,0xb3,0x6,0xd3,0xb4,0x64,0x50,0xc3,0xab,0xcd,0xd4,0x2b,0x73,0x21,0xad,0x15, - 0x91,0xd1,0x38,0xeb,0xf1,0x26,0x42,0x25,0xa5,0x7c,0x3f,0x31,0x96,0x71,0x2e,0x57, - 0x11,0x62,0x49,0x13,0xc2,0x52,0x9a,0xa6,0xcb,0x15,0xe3,0x89,0xb4,0x2c,0x1b,0x15, - 0x5,0xe8,0xa8,0xca,0xf6,0xd6,0x98,0x99,0x76,0x85,0x77,0xbf,0xed,0x24,0xbf,0xf8, - 0xeb,0x2f,0x21,0x94,0xc6,0xe7,0x29,0xcb,0x4d,0xc3,0xd5,0x4b,0x17,0x49,0xd3,0x23, - 0x65,0x4e,0xd0,0xeb,0x51,0x49,0x12,0x3a,0x9d,0x3d,0x2a,0xb5,0x1a,0x6b,0x6b,0x9b, - 0x64,0x69,0xca,0x43,0xa7,0x56,0x58,0x59,0x9a,0xe5,0xd2,0xb5,0x4d,0x8c,0x31,0x9c, - 0xbd,0xf7,0x28,0x8f,0xdc,0x7f,0x92,0xfb,0x4f,0x1d,0xa5,0xd3,0x1f,0xf1,0xe4,0x97, - 0x9e,0xe3,0xa1,0x33,0xf7,0x70,0x68,0x71,0x8e,0x24,0x8e,0xf8,0x9d,0xcf,0x3f,0xcb, - 0xa7,0x9f,0x7a,0x11,0x21,0xff,0xe4,0xd3,0xeb,0xb2,0x3c,0x67,0x32,0x1e,0x91,0x8d, - 0x87,0x48,0x97,0x73,0xcf,0x72,0x8b,0x95,0xa5,0x6,0x41,0x9,0x9c,0xcf,0xa9,0x2b, - 0x45,0x56,0x40,0xb0,0xa1,0x94,0x62,0x7,0x18,0x67,0x81,0xd4,0x7a,0xb2,0xa2,0xc0, - 0xe6,0x1,0x2b,0x4b,0x5a,0xb8,0xbf,0xdf,0xa5,0xd2,0x68,0xd3,0xa8,0xaf,0xe0,0xbd, - 0xa7,0xd3,0xe9,0x30,0xc9,0x72,0x4e,0x1c,0x5f,0xc5,0xfb,0xc0,0x53,0x4f,0x3f,0x4b, - 0x5e,0x94,0xc6,0xaf,0xa4,0x3c,0x80,0xb3,0x85,0x28,0x95,0xbc,0x42,0x8,0xb2,0x34, - 0x25,0x89,0xe3,0xb2,0x3f,0xf2,0x96,0x38,0x64,0x34,0x66,0x79,0x65,0x85,0x9d,0xad, - 0x6d,0x26,0x93,0x14,0x63,0xc7,0xbc,0xfe,0xbe,0x47,0xd0,0xc6,0xb0,0x7a,0xe2,0xc4, - 0x6b,0x6e,0x7e,0x8,0xa5,0x17,0x88,0x93,0x84,0xc9,0x64,0x82,0x75,0xfe,0xee,0xd6, - 0xc8,0xaf,0x68,0x8d,0x6f,0x35,0xeb,0x2c,0x2f,0x35,0xe9,0x74,0x27,0xec,0xf,0xb, - 0x86,0x83,0x9,0x78,0x4b,0xa4,0xa,0x9c,0x65,0x49,0x8,0xe,0x6b,0xa9,0xd4,0xf1, - 0x49,0xda,0x6f,0xb4,0x6a,0x8a,0x62,0x92,0xe1,0x6c,0x41,0x70,0x39,0x13,0x59,0x25, - 0x8e,0xa0,0xd1,0x48,0xc8,0x32,0x87,0xf4,0x5,0x21,0x18,0x92,0x48,0xf3,0xd7,0xde, - 0xf9,0x28,0xdd,0xe1,0x84,0x5f,0xfd,0xec,0x39,0x6,0xb5,0x16,0xf3,0x4b,0x4b,0x68, - 0x55,0x5a,0x9d,0x77,0x96,0x37,0x9e,0x3d,0xc1,0xf7,0xbe,0xeb,0x8d,0x28,0xa5,0xf8, - 0xbd,0x27,0x9e,0xe1,0xaf,0xbe,0xf7,0x2d,0xbc,0xf1,0x91,0xfb,0x59,0x59,0x5a,0xc0, - 0x18,0x8d,0xf7,0x9e,0x99,0xf6,0x84,0xb3,0xa7,0x8e,0x11,0x45,0xe6,0x60,0x8,0xe4, - 0x9b,0x1e,0x3d,0x4b,0xf3,0x67,0x7f,0x99,0xff,0xef,0xf7,0x9e,0x3e,0xa8,0x12,0x5e, - 0x6d,0x11,0x10,0x2,0x25,0x6f,0xa9,0x8a,0x3,0xce,0x96,0x7f,0x4,0x2a,0xb8,0x12, - 0x73,0x2f,0xb2,0x94,0xb9,0xba,0x66,0x7e,0x66,0x86,0x46,0x6c,0x28,0x8,0xb8,0x22, - 0xc7,0x84,0x40,0x2f,0x13,0xac,0x77,0xb,0x5c,0x16,0xf0,0x53,0xa7,0x39,0xc9,0x3d, - 0x6b,0xd2,0x33,0x2e,0x24,0x93,0x50,0x86,0x2a,0xe7,0x3d,0x5a,0x4,0x5a,0x8d,0x92, - 0xd8,0x19,0xd,0x87,0xd4,0x6a,0x35,0xe6,0xe6,0xe6,0xc8,0xf3,0x82,0x49,0x96,0x11, - 0x10,0xd3,0x10,0x28,0xd0,0x5a,0x1f,0x84,0xb0,0x3,0x6c,0x42,0x4a,0xd2,0x2c,0x23, - 0x8e,0xa3,0x92,0x3e,0xd7,0x9a,0x4e,0xa7,0x43,0x9c,0x24,0x53,0x61,0xa8,0x67,0x7d, - 0x6d,0x8d,0x37,0x9f,0x3a,0x4c,0xb3,0x5e,0x61,0x6e,0x61,0x81,0xc6,0x1d,0x64,0xd3, - 0xab,0x36,0x72,0x28,0x45,0x92,0x24,0x38,0xeb,0x99,0x64,0xc5,0xed,0x9,0x6a,0xce, - 0x81,0xb9,0x4d,0x60,0x69,0xad,0x69,0x35,0xaa,0x9c,0x58,0x69,0xd1,0xef,0xa7,0x64, - 0x83,0x3e,0xc3,0x7d,0x51,0x1a,0x80,0x28,0x8,0x41,0x57,0xb5,0x52,0xf7,0x68,0x42, - 0x38,0x91,0x65,0x13,0x73,0xf4,0x50,0x5,0x6d,0x4a,0xf2,0x7,0x19,0xd8,0xdb,0xea, - 0x60,0x8b,0xc,0x67,0x3d,0xe7,0x5f,0xde,0x67,0x71,0xe9,0x10,0x9b,0xdb,0x7b,0xb4, - 0x9a,0x31,0x73,0xed,0x6,0xc7,0x57,0x16,0x98,0x6f,0xd5,0xb8,0xb8,0xd1,0xa1,0x3b, - 0xb6,0xec,0x8c,0xc7,0x3c,0x7c,0xdf,0x2a,0x7f,0xe5,0x3b,0x1e,0xe3,0xf5,0xf,0x94, - 0xf3,0x6d,0x5f,0xba,0x7c,0x83,0xbf,0xf3,0x43,0xdf,0xc7,0xc2,0x6c,0xbb,0xec,0x8c, - 0xf5,0xe1,0x0,0x3f,0xaf,0x57,0x93,0x3,0xad,0xff,0xad,0x47,0xbd,0x5a,0xe1,0xc7, - 0xfe,0xc6,0xfb,0xb9,0xb6,0xbe,0xcd,0xd3,0x17,0xd6,0x50,0x5a,0x1f,0x24,0x36,0x52, - 0x4a,0x8c,0x56,0x24,0x49,0x4c,0x25,0x4e,0x10,0x52,0x30,0x99,0xb2,0x83,0x81,0xd2, - 0xf0,0xc4,0x54,0xa8,0x7a,0xb8,0xa5,0x79,0xf7,0x23,0xcb,0x5c,0xda,0x99,0x30,0x1e, - 0xe7,0x98,0xa2,0x40,0x0,0xd6,0x6,0x2e,0x6e,0x7,0x7a,0x99,0xbc,0xeb,0xe0,0x8c, - 0x9d,0x60,0x3f,0x75,0x58,0x67,0x9,0x42,0x21,0xbc,0x47,0x85,0xc0,0xe1,0xd9,0x2a, - 0xc1,0x66,0x6c,0x6e,0x6c,0x50,0x9f,0x22,0x77,0xfb,0xbd,0x3e,0xbd,0x5e,0x9f,0x56, - 0x2d,0xa6,0x55,0x8d,0x18,0xf6,0xfb,0x84,0xe0,0x31,0x91,0x29,0x4f,0x24,0x90,0x24, - 0x15,0x4c,0x64,0xa6,0x18,0x86,0x25,0x8e,0xe3,0xb2,0x2b,0x8a,0xc0,0xce,0xee,0x1e, - 0xf5,0x46,0x93,0xfe,0x2d,0x10,0x2b,0x1f,0xf3,0xf0,0xbd,0xaf,0x47,0x69,0xcd,0xc2, - 0xa1,0x43,0x77,0x24,0xbf,0xaf,0x21,0x95,0x95,0x92,0x28,0x8e,0xb1,0xae,0x6c,0x25, - 0x2f,0x69,0x92,0x70,0xd7,0xa8,0xdb,0x80,0x28,0xb5,0x7,0x46,0xb1,0x34,0x57,0x21, - 0x49,0x34,0x8b,0xed,0x98,0x5a,0x3d,0xc6,0xe6,0x92,0xd9,0x19,0xc9,0xe5,0x1d,0x6f, - 0xac,0xe5,0xb8,0xb6,0xd6,0xad,0x66,0xe9,0x44,0x2f,0x2d,0x37,0xa9,0xb5,0x12,0x9c, - 0xf3,0x28,0xa5,0xc9,0x8d,0x66,0xa7,0xb7,0xcb,0xe2,0x42,0x83,0xb3,0xa7,0x9b,0x7c, - 0xfa,0xb,0x5b,0xb4,0x67,0xda,0xcc,0x54,0x2,0x49,0x6c,0xf0,0x3e,0xf0,0xe0,0xfd, - 0xf7,0xf2,0xce,0x77,0x2c,0x61,0x91,0xdc,0xec,0xf4,0xb9,0xef,0x9e,0x55,0x9a,0xf5, - 0xea,0x81,0x2b,0x7c,0xf0,0xde,0xe3,0x7,0xcc,0xde,0xab,0xc5,0xec,0x57,0x3b,0xdd, - 0xb3,0xed,0x26,0x67,0xee,0x59,0xe5,0xe9,0xb,0x6b,0x54,0x92,0x84,0x4a,0x25,0x2e, - 0xbf,0x26,0x31,0x5a,0x95,0xfc,0xfb,0x60,0x3c,0xa1,0x3f,0x1c,0x97,0x2c,0x9c,0xb5, - 0x53,0x92,0x68,0x3a,0x6a,0xaa,0x18,0xf3,0xc8,0x83,0x8b,0x2c,0xb7,0xd,0xd7,0xb7, - 0xf7,0xc9,0x72,0x4f,0xac,0xcb,0x99,0x7d,0x5e,0xc2,0xc4,0x39,0xfc,0xad,0x86,0xfd, - 0xe9,0xd8,0x97,0xb4,0x70,0x8c,0xa2,0x69,0xb7,0x8e,0xb5,0x48,0x21,0x98,0x8c,0x27, - 0x78,0xe7,0xd9,0xbb,0x7e,0x95,0xd5,0x93,0xa7,0x69,0xb6,0xdb,0x74,0xbb,0x5d,0x7a, - 0xbd,0x1,0x55,0x1d,0x78,0xc7,0xc3,0xc7,0xf9,0xee,0xb7,0x3c,0xc8,0xaf,0xff,0xf6, - 0xe7,0xc9,0xb3,0x9c,0x4a,0x1c,0xd1,0xeb,0xf5,0xb1,0xce,0xa1,0x8d,0x29,0x91,0xc8, - 0x29,0x8d,0x7d,0xb,0xdf,0x48,0xd3,0x94,0xe1,0x68,0x42,0xbd,0xd1,0x62,0x38,0x1a, - 0x32,0x1a,0x8e,0x38,0xb5,0x3c,0xc3,0x6c,0xab,0x4e,0xfd,0xff,0x27,0xee,0xbd,0x83, - 0xec,0xba,0xee,0x3b,0xcf,0xcf,0x39,0x37,0xbd,0x1c,0xba,0xdf,0xeb,0x9c,0xd1,0xdd, - 0x0,0x88,0x40,0x80,0x4,0x9,0x66,0x8a,0x92,0x48,0x91,0x12,0x2d,0x89,0x23,0xdb, - 0x92,0x6d,0xad,0x67,0x53,0xd5,0xac,0xbd,0x9e,0xad,0xda,0xaa,0x9d,0x8d,0x5e,0x6b, - 0xab,0x66,0x6a,0x67,0xaa,0xc6,0x65,0x8f,0x35,0xc1,0x2e,0xd5,0xec,0x58,0x96,0x4a, - 0x96,0x6d,0x49,0x56,0x64,0xce,0x19,0x20,0x41,0x12,0x0,0x81,0x46,0xea,0x6,0xd0, - 0x39,0x77,0xbf,0xfc,0x6e,0x3e,0xfb,0xc7,0x7d,0x68,0x2,0x42,0x20,0x15,0x2c,0xdf, - 0x2a,0x14,0x50,0x5,0xe0,0xf5,0x7d,0xf7,0xfc,0xee,0x39,0xbf,0xf0,0xd,0xe9,0xc, - 0xc9,0x16,0xce,0xe0,0xc3,0x14,0x3d,0xa4,0x8c,0x74,0x14,0xa5,0x90,0xa8,0x30,0xea, - 0x35,0x44,0xd,0xb0,0x4b,0xd2,0x77,0x82,0x78,0x2c,0x8e,0x69,0x9,0xf2,0x5d,0x69, - 0xe2,0x31,0x83,0x5c,0x3e,0x4d,0x22,0x9d,0x40,0x49,0x93,0x4e,0x23,0x80,0x73,0x8b, - 0x9a,0xe7,0x7,0x83,0x7a,0x10,0x4,0xfd,0xae,0x5d,0x17,0xee,0xd2,0x1c,0xf5,0xf5, - 0x1c,0x7a,0x3c,0x43,0x20,0x75,0xc2,0x50,0xc7,0x68,0x65,0xb2,0x1f,0xbb,0x67,0x8c, - 0x53,0xe7,0xd6,0x38,0x3b,0x53,0xa7,0x3b,0x91,0x6a,0x91,0x2a,0x4d,0x86,0xc6,0xc6, - 0x48,0xa6,0xd3,0xa0,0x14,0x7d,0xbd,0xdd,0x84,0x4a,0x5d,0x31,0xd6,0xfd,0xb0,0x2f, - 0x73,0x75,0x26,0x2f,0x58,0xdf,0x28,0x73,0x61,0x61,0x95,0xb1,0x6d,0x43,0x24,0xe2, - 0x71,0x34,0x2d,0xaa,0x65,0x2b,0x95,0x1a,0x4b,0xa5,0x12,0xb5,0x5a,0x1d,0xd5,0x6a, - 0xf3,0xea,0x84,0x1c,0xd8,0x35,0xc4,0x1d,0xfb,0x76,0x22,0x35,0x8d,0x6f,0x7e,0xef, - 0x49,0xf4,0x98,0x41,0x7b,0xda,0x24,0xc,0x5,0x6e,0xa0,0x8,0xc2,0x80,0x86,0x63, - 0x13,0x86,0x21,0x32,0x69,0x10,0xb3,0x24,0xb1,0x66,0x95,0x46,0xdd,0x8e,0xac,0xe8, - 0xc2,0x8,0x4f,0xaf,0x17,0x8a,0x34,0x3,0xc5,0x66,0xa5,0x86,0x65,0xe8,0x60,0x80, - 0x2e,0x14,0x9,0x1,0xd9,0x5c,0x9e,0xd2,0xc6,0x6,0x9b,0xa5,0x12,0xae,0xe3,0xb0, - 0xbd,0x37,0xcd,0xb1,0xf7,0x8e,0x33,0xb7,0x5e,0x23,0x95,0x49,0xd3,0x68,0x34,0x48, - 0xa5,0x92,0xac,0xae,0xae,0x53,0x2a,0x95,0xd1,0x64,0x4,0x91,0xb,0x5a,0x9d,0x4b, - 0x5d,0xd3,0x8,0xc3,0x90,0x4a,0xa5,0xa,0x42,0x46,0x20,0x10,0x4,0xcd,0x7a,0x8d, - 0xdd,0xb7,0xee,0xc2,0xb2,0x2c,0x7a,0x6,0xa2,0x46,0xdb,0xd,0xdf,0xfe,0xcb,0xd4, - 0x70,0xc,0x3d,0x2,0xea,0x4,0x9e,0x8b,0xae,0xeb,0x57,0x90,0x6c,0xa4,0xae,0x61, - 0xc5,0x2c,0x32,0x69,0x8d,0x54,0xda,0x22,0x11,0x93,0x48,0xe5,0x52,0x2f,0x2d,0x53, - 0x5e,0xb9,0x40,0xa9,0x16,0x80,0xdf,0xf,0xca,0xea,0xd3,0x11,0x14,0xed,0x66,0x8d, - 0xe5,0x8b,0x17,0x78,0x2f,0xa8,0x92,0x4a,0x45,0x20,0x10,0x25,0xd,0x30,0x62,0x90, - 0x6a,0xc7,0xb2,0x74,0x3a,0xda,0x53,0x9c,0x9a,0xdc,0xa4,0x6e,0x9b,0xf8,0x7e,0x80, - 0xd1,0xf2,0xd1,0xbb,0xc4,0x6b,0xf,0x7e,0xc6,0xc5,0xbe,0x9e,0x2,0xe7,0x33,0xaf, - 0x1e,0xa1,0xd4,0xf0,0x49,0xa7,0x92,0x34,0x1a,0xd,0x4a,0xe5,0x2a,0x95,0x5a,0x1d, - 0xc7,0x89,0x14,0x3d,0x84,0xa6,0x83,0x52,0xc4,0x34,0xf8,0x1f,0xbe,0xf4,0x69,0x6e, - 0xd9,0x35,0xc6,0xb9,0xb,0x33,0xe8,0x86,0xc1,0x67,0x3f,0x71,0x3b,0xc5,0x60,0x9a, - 0x1d,0x7d,0x69,0xd0,0x74,0x6e,0xbf,0x63,0x7,0x4e,0xe8,0x45,0xf7,0xa6,0x20,0x5b, - 0x4c,0x92,0xc8,0x26,0xa9,0x56,0x6c,0x36,0xd7,0xec,0x88,0x6a,0x15,0x2a,0x34,0x53, - 0xd0,0xdd,0x99,0xc0,0x71,0x1c,0xd6,0x97,0x4a,0x98,0x52,0x91,0x4c,0x98,0x84,0x2e, - 0x3c,0xf1,0xda,0xc,0x27,0xd7,0x36,0xb0,0x6d,0x1b,0x37,0x54,0x98,0xbe,0xcd,0x68, - 0xef,0x10,0x39,0x2b,0x45,0x2c,0x9b,0xe5,0xeb,0x3f,0x7c,0x1a,0x2f,0xa6,0xc8,0xb7, - 0xb7,0x45,0x95,0x90,0xeb,0x22,0xa4,0x24,0xc,0x15,0xf5,0x7a,0xbd,0x65,0x72,0x19, - 0xd5,0xe9,0xe5,0x72,0x99,0x98,0x65,0x61,0xdb,0xe,0xba,0xae,0x91,0xb5,0x24,0x83, - 0xdd,0xed,0xb4,0x15,0x8b,0xe4,0x5a,0x73,0x12,0x4d,0x46,0xb5,0xfb,0x4f,0x7,0x82, - 0x52,0x8a,0x7a,0xd3,0x26,0x99,0x48,0x20,0x5b,0xb8,0xcc,0x8,0x6e,0x26,0x10,0x9a, - 0x76,0x5,0xd0,0x45,0xd7,0xd,0xc,0x5d,0xa7,0x23,0xed,0x63,0xcf,0x4e,0xa0,0x39, - 0xeb,0x9c,0x7b,0xeb,0x69,0x9a,0x4d,0x7,0xd7,0xa9,0x52,0x73,0x75,0x3c,0xab,0x80, - 0x30,0x63,0x5,0x3d,0xc,0xc3,0x7c,0xad,0x5a,0xe7,0xcd,0xd9,0x4d,0x8e,0x9f,0xa9, - 0x50,0xcc,0x5b,0xe4,0xd2,0x11,0x7,0xd0,0x32,0x35,0xa4,0x95,0xc0,0x37,0xb3,0xac, - 0x2e,0x6f,0x92,0x8c,0x19,0xd8,0x76,0x13,0xcf,0x8f,0xc0,0x8,0xbf,0x4c,0x73,0x44, - 0x21,0x4,0x17,0xe7,0x16,0x79,0xf3,0xdd,0x9,0x4,0x21,0xd3,0xb3,0xf3,0x54,0x6b, - 0xd,0x3c,0xcf,0xdd,0xea,0xfc,0x6d,0xa1,0x84,0x2,0x97,0xff,0xfe,0x37,0x1f,0x61, - 0x7c,0xa8,0x87,0x67,0x9f,0x7d,0x89,0xcd,0xcd,0x12,0xa7,0x2f,0x2c,0xb0,0x6b,0xdb, - 0x0,0x1b,0x76,0x8d,0x7a,0x3d,0x60,0xbd,0x11,0x20,0xc5,0x1a,0xc5,0xa4,0x24,0x1e, - 0x13,0x64,0xc,0x58,0x38,0x29,0x88,0xa7,0x92,0x48,0x9,0xae,0xd7,0x24,0x91,0xc9, - 0x61,0xb4,0xe4,0x69,0x4f,0x4d,0xce,0x13,0x3a,0xe,0xa8,0xf0,0x12,0x31,0x1,0x3f, - 0x50,0x54,0xd7,0x4a,0xcc,0xcf,0xae,0x93,0xca,0xb7,0x3,0x30,0xda,0x93,0x67,0xa0, - 0xbb,0x83,0xed,0xbb,0x77,0xb3,0xb6,0x51,0xa2,0xb3,0x2d,0xc3,0x7c,0xd5,0x6d,0xe9, - 0x1f,0x8a,0x56,0xf2,0x28,0x68,0x36,0x9b,0x11,0xaa,0xd7,0xf5,0x68,0xda,0xd1,0xe, - 0x54,0x6f,0x34,0xd1,0x74,0x1d,0xc7,0x6e,0xe2,0x79,0x1e,0xfb,0x7a,0xdb,0xc9,0x24, - 0xe3,0x94,0xeb,0xe,0x27,0xce,0x4d,0xe3,0x3a,0xe,0x86,0x65,0xd1,0xd3,0xd1,0x4e, - 0x36,0x95,0xc0,0x30,0xf4,0x88,0xf3,0xd3,0xc2,0x17,0xbe,0x7f,0xe6,0x2,0xb7,0xee, - 0xdd,0x81,0xd0,0xc,0x5e,0x78,0xe7,0x34,0xd3,0x2b,0xa5,0x2d,0x49,0xfd,0xcb,0x2f, - 0xd3,0x30,0x10,0x42,0xa1,0x4a,0xab,0x9c,0xaf,0x7a,0xd4,0xaa,0x1,0xaf,0x1e,0xde, - 0x64,0x65,0xc3,0x41,0x93,0xa0,0x1b,0x16,0x6d,0x3b,0x6d,0x62,0x7a,0xd8,0xa6,0x7, - 0x7e,0x90,0xf1,0x3d,0x8f,0xa4,0x32,0x49,0x5a,0x12,0xcf,0xf3,0x59,0x58,0xf2,0xb1, - 0xed,0x88,0x89,0xaa,0xd8,0x40,0xd3,0x16,0x28,0x98,0x8a,0x39,0xb7,0x42,0xc3,0x4f, - 0x6e,0x6d,0x6d,0xea,0x17,0x7c,0xeb,0x85,0x10,0xc8,0x4b,0x22,0x4f,0x28,0x8a,0x6d, - 0x39,0xfe,0x8f,0xdf,0xff,0x6d,0x2e,0xce,0x2d,0xf1,0xaf,0xfe,0xd3,0xb7,0xf1,0x5a, - 0xe8,0x1f,0xa1,0xc9,0xad,0xc5,0xf7,0x5d,0x87,0xcf,0xdd,0x7f,0xb,0xf7,0xdd,0xb1, - 0x8f,0x7f,0xfd,0xd5,0xbf,0xe4,0xd6,0x6d,0x3d,0xfc,0xe6,0xa3,0xf,0xb0,0xb6,0xb4, - 0xc1,0xc2,0xd4,0xc,0xcf,0x2d,0xac,0xf1,0xda,0x82,0x4b,0xe8,0xd9,0xdc,0xd7,0x6f, - 0x51,0x90,0x6,0xb6,0xa3,0x10,0x16,0xb8,0x5e,0x48,0x68,0xbb,0x68,0x12,0x42,0x21, - 0xd1,0x55,0x95,0x52,0xb5,0x89,0x49,0x54,0x12,0x56,0x9c,0x0,0x3f,0x50,0xf8,0x81, - 0x8c,0x86,0x33,0x8e,0x83,0x1e,0xfa,0x91,0xac,0x8b,0x8a,0x72,0x9f,0xde,0xf6,0x2c, - 0xf9,0xf6,0x76,0x32,0xf9,0x1c,0x9e,0xef,0xf3,0xe8,0x7d,0xb7,0xf0,0xad,0x67,0xde, - 0xc6,0x71,0x22,0x4e,0x62,0x18,0x4,0xa8,0x4b,0x2f,0x86,0xfa,0xa0,0xf4,0xb3,0x2f, - 0xa1,0x99,0xc2,0x48,0xfc,0x42,0x84,0x3e,0x7b,0x47,0x77,0xa0,0x69,0x1a,0xe9,0xb8, - 0x49,0x2e,0x9f,0x62,0x6d,0x33,0xe0,0xec,0xfc,0x32,0xaf,0xbf,0x75,0x8c,0x5c,0x32, - 0x4e,0x2e,0x97,0x26,0xc,0x14,0x99,0x84,0x4e,0xdc,0xd0,0x59,0xde,0x6c,0x50,0xab, - 0x37,0xf8,0xc6,0xf,0x5f,0xe4,0xa9,0xc3,0xa7,0xf1,0x83,0x0,0x2b,0x69,0x80,0xd0, - 0x9,0x5c,0xa7,0x5,0xcf,0x8f,0x12,0xe5,0xc0,0x73,0x99,0x9b,0x6b,0x80,0x54,0x98, - 0x1a,0x78,0x76,0x48,0x3e,0x11,0x89,0x60,0xaa,0x16,0x33,0xd9,0xf,0x82,0xb4,0xee, - 0x7,0x41,0x82,0xd0,0x23,0x11,0xd7,0x8,0x7c,0x9d,0xba,0xd3,0x44,0xaa,0x10,0x53, - 0x33,0xd0,0x75,0x81,0xa6,0x49,0x34,0x4d,0xa1,0xe2,0x1,0xb7,0x8c,0x66,0x38,0x31, - 0x13,0xb1,0x75,0x2f,0x4d,0xb8,0x74,0xc3,0xb8,0x76,0x46,0x77,0xa3,0x24,0x46,0x8b, - 0x26,0x58,0x1b,0xa5,0xa,0x4b,0x6b,0x25,0x52,0x89,0x38,0xc5,0xb6,0xc,0xc9,0x44, - 0x9c,0x74,0x2a,0x49,0xb5,0xde,0xa0,0x2d,0x9d,0x60,0xad,0x5c,0x8f,0xb2,0xf2,0x2d, - 0xb8,0x73,0xc0,0x9e,0x6d,0xbd,0xfc,0x77,0x5f,0xfa,0xc,0x2f,0xbf,0x71,0x84,0xbd, - 0xc3,0xdd,0x6c,0xdf,0xbe,0x8d,0x81,0x6d,0x23,0x24,0x33,0x69,0x9c,0x7a,0x95,0xee, - 0xe5,0x35,0x4e,0x9f,0x99,0xe3,0x8b,0x77,0x76,0x71,0x5b,0x5f,0x2,0x4d,0x9,0x52, - 0x96,0x44,0x37,0x5,0x81,0xd4,0x91,0x2d,0xeb,0x58,0x69,0x4a,0xb4,0x98,0x8e,0xdf, - 0x74,0xf1,0x1a,0x1e,0xa8,0xe8,0x4d,0xd3,0x9,0x71,0x9d,0x80,0xba,0xab,0x90,0xd2, - 0x67,0xbd,0xda,0xe4,0x8d,0xe9,0x59,0x92,0xc9,0x4,0xa1,0xef,0xe1,0x5,0x1,0xc9, - 0x54,0x8a,0xa5,0xb9,0x79,0xde,0x3e,0x72,0x94,0xc3,0xef,0x9f,0x63,0x71,0x65,0x9d, - 0x64,0x31,0x86,0x69,0xc5,0xf0,0xfd,0x60,0xcb,0xc9,0x54,0xd3,0xb4,0x96,0x75,0xad, - 0x46,0xb9,0x52,0x41,0x29,0x81,0xe3,0x34,0x9,0x83,0x80,0x94,0x1,0x55,0xdb,0xe3, - 0x8d,0x89,0x19,0x1a,0xc7,0x2e,0x50,0x6d,0xba,0x98,0xf1,0x14,0x43,0xdb,0xc6,0x98, - 0x9e,0x59,0xa4,0x7d,0xb8,0x1d,0xbd,0x1e,0xe0,0xdb,0x3e,0xfd,0x43,0x37,0xe1,0x9, - 0x8d,0xe1,0xf1,0x31,0x1e,0x7f,0xfe,0xd,0x7e,0xf4,0xd2,0x11,0x94,0xd4,0x8,0x5b, - 0x43,0x9f,0x4b,0x20,0x59,0x82,0x0,0x23,0x1e,0x8d,0xe2,0x85,0x5b,0xc1,0x34,0x22, - 0x86,0x76,0x18,0x40,0xb9,0xe6,0x90,0x8a,0x6b,0x58,0x66,0x6b,0xb4,0x1e,0x6,0x4, - 0x41,0x10,0xd3,0x83,0xc0,0x37,0xe2,0x96,0x62,0x57,0x7f,0x2,0x29,0x75,0x1a,0x76, - 0x44,0x48,0x90,0x48,0x5c,0x37,0x6c,0xf5,0xfb,0x61,0xbd,0xa6,0xb0,0x4c,0x93,0x6c, - 0xa2,0x49,0xad,0x11,0x6d,0x69,0x81,0xef,0x6f,0x35,0x20,0x3f,0xea,0xc2,0x57,0x6a, - 0xd,0xe,0xbd,0x7b,0x2,0x3f,0x84,0x52,0xcd,0xa6,0x90,0xcf,0xd0,0xd9,0x9e,0x23, - 0x9b,0x49,0x44,0x5d,0xab,0x20,0x60,0xa4,0xbf,0x87,0x3f,0xf9,0xc3,0xdf,0xe7,0x99, - 0x57,0xde,0xe6,0x9b,0x3f,0x7a,0x91,0xb5,0xaa,0x8d,0x90,0x92,0x6d,0xfd,0x1d,0xfc, - 0xdf,0xff,0xfc,0xcb,0xd4,0x9b,0x36,0xcf,0xbf,0x7c,0x98,0x4f,0xde,0xbe,0x8b,0xd1, - 0xe1,0x1,0x62,0xf1,0x4,0xba,0x6e,0x10,0x4b,0xc7,0xe9,0xe8,0xc8,0x71,0x67,0x79, - 0x99,0xfb,0xbb,0x13,0x11,0x63,0xd9,0x10,0xc4,0x63,0x6,0xba,0x21,0x51,0x31,0x3, - 0xa3,0x85,0xe3,0x53,0x42,0x41,0xe8,0xa1,0x92,0x26,0xbe,0x61,0x44,0xbc,0xff,0x20, - 0x44,0x23,0xc4,0xd5,0x5c,0x4c,0xe1,0x81,0x32,0x90,0x46,0x48,0x67,0x36,0x89,0x34, - 0x4c,0x2,0x29,0x39,0x37,0xbf,0x4e,0xad,0x56,0x63,0x7e,0x71,0x85,0xef,0xbf,0xf8, - 0xe,0xbd,0x3,0xbd,0x3c,0x78,0xff,0x30,0x6f,0x9e,0xb8,0x88,0x65,0x59,0xf8,0xbe, - 0x4f,0xbd,0x5e,0x43,0x4a,0x49,0x22,0x99,0xc0,0x68,0x5,0x42,0xb3,0x69,0x23,0x34, - 0x89,0xdd,0x68,0xa2,0x6b,0x92,0x81,0x62,0x1e,0x27,0xd4,0xc8,0x76,0xf5,0xb2,0x74, - 0x6e,0x8a,0x63,0xe7,0xe6,0x79,0xe4,0xd1,0x47,0xf9,0xd2,0x7f,0xfb,0xcf,0x78,0xfa, - 0x87,0xdf,0x23,0x98,0x3d,0x4a,0x36,0x93,0xa4,0x6f,0xef,0x10,0xdd,0x2d,0xa4,0x50, - 0xc3,0xb6,0x79,0xe1,0xf5,0x77,0xf1,0x2,0x45,0xd8,0x6a,0x95,0xdb,0xd5,0x12,0xe9, - 0x7c,0x3b,0xe9,0x6c,0x92,0x4a,0xc3,0x43,0x6f,0xf5,0x48,0xba,0x32,0x1e,0x83,0x45, - 0x3,0x2b,0x1e,0x43,0xa,0x90,0x52,0x27,0x9b,0x36,0x30,0xf4,0x48,0x71,0x74,0x4e, - 0x40,0x33,0xc,0x4d,0x3d,0xc,0x95,0x68,0x34,0x3,0x26,0xa7,0x1d,0x4c,0x23,0xaa, - 0xc9,0xdb,0x33,0x91,0x4c,0x9b,0x2e,0x15,0x4a,0x42,0x2c,0xad,0x91,0x6b,0x4b,0x2, - 0x82,0x9a,0xab,0x38,0x79,0x7e,0x9e,0x74,0x2a,0xc1,0x9e,0x8f,0x20,0x45,0x26,0x44, - 0x54,0xb6,0xd4,0x1a,0x36,0x87,0xde,0x39,0xc1,0xcb,0xaf,0xbf,0x4d,0xb1,0x3d,0xc7, - 0xc7,0xef,0xbf,0x93,0xdb,0xa,0x6d,0x74,0xb4,0x65,0x5b,0x49,0x4f,0xb8,0xb5,0x91, - 0x48,0x29,0x28,0xb4,0x65,0xf9,0x9d,0xc7,0x3e,0xc9,0xf8,0xb6,0x7e,0xfe,0xf5,0x9f, - 0xff,0x2d,0xd3,0x2b,0x25,0x1e,0xbe,0x7b,0x3f,0x3b,0xb6,0xd,0xf2,0x83,0x27,0x5f, - 0xe2,0x8d,0xa3,0xa7,0x39,0x77,0x71,0x1e,0x4,0x7c,0xee,0xb3,0xed,0xe8,0x46,0x54, - 0x77,0xa7,0x13,0x16,0x3,0x19,0x83,0xa9,0xb9,0x4d,0x12,0x49,0x8d,0x64,0x4c,0x63, - 0xad,0xa4,0x13,0x37,0x5,0x99,0x38,0xf8,0x2d,0x1d,0xc3,0x16,0x23,0x31,0x2a,0x1f, - 0x85,0xc0,0xb1,0x9b,0xb8,0x5e,0x80,0x52,0x12,0xc7,0xd,0xb0,0x1d,0x9f,0x30,0x50, - 0xd8,0x4d,0x1f,0x43,0x48,0xea,0x8e,0x8b,0x65,0x19,0x2c,0xac,0x35,0x59,0x5c,0xdd, - 0x60,0xb5,0x6a,0xb3,0x51,0xad,0xf3,0xe0,0x48,0x3f,0xf7,0x1e,0xbc,0x99,0xc9,0xd9, - 0x15,0x96,0x2a,0xe,0x61,0x10,0x60,0x3b,0x1e,0x56,0xb3,0x49,0x32,0x99,0xdc,0xca, - 0x95,0x6c,0xd7,0x23,0xc,0x42,0x74,0x11,0x22,0x85,0x60,0xbc,0xbf,0x83,0xcf,0x3e, - 0x78,0x27,0xbe,0x66,0xd1,0xdd,0x9e,0x62,0x64,0xdb,0x36,0xbe,0xf0,0x4f,0x3e,0x45, - 0x9b,0x61,0x73,0xe7,0x78,0x7,0x27,0x96,0x63,0x74,0x75,0xf7,0xd1,0x33,0x30,0xb0, - 0x95,0x4,0x7a,0x5e,0x40,0xbd,0x5e,0xc7,0xae,0x6c,0xb4,0x44,0xca,0x14,0x4a,0x6, - 0xf4,0x16,0xe2,0x64,0x2d,0x87,0x77,0xcb,0x1e,0x9,0x53,0x87,0xc0,0xa3,0x90,0xf0, - 0xa3,0xe6,0x9c,0xdf,0x20,0x10,0x1a,0x4e,0x18,0x52,0x6f,0x78,0xd8,0xb6,0x44,0x68, - 0x21,0x61,0x97,0x8b,0x48,0x2a,0xa9,0x87,0x61,0x88,0x65,0xa,0x8a,0xed,0x51,0xd9, - 0x17,0xa9,0x74,0x85,0xd4,0x6c,0x7f,0xeb,0x8c,0x6e,0x56,0x3,0x3c,0xdf,0x41,0xd7, - 0x24,0xa6,0xae,0xb3,0x77,0xac,0x9f,0xc9,0xd9,0x65,0xda,0x26,0x26,0x39,0xb0,0x6f, - 0x17,0x96,0x69,0xd0,0x68,0xd,0x85,0xe2,0x2d,0x7f,0xdc,0x4b,0x6c,0xa1,0x4a,0xb5, - 0xce,0x91,0xe3,0xa7,0x39,0xfc,0xee,0x49,0xfc,0x30,0x64,0xe7,0xd8,0x10,0x9d,0x85, - 0x36,0xca,0xa5,0xa,0x42,0x29,0x34,0x9,0xd9,0x74,0xea,0x9a,0x3d,0x1,0xa5,0xe0, - 0xe0,0xbe,0x9d,0x7c,0xf1,0x33,0xf7,0xf2,0xa7,0x5f,0xff,0x11,0x43,0xfd,0x5d,0x2d, - 0x88,0x98,0xcb,0x3d,0xfb,0xc6,0xb9,0x69,0xa4,0x97,0xc5,0x95,0x8d,0xa8,0xbc,0x6a, - 0x25,0x4b,0x33,0xcb,0x9b,0xbc,0x3e,0x55,0xa7,0x3d,0x5e,0x61,0xff,0x60,0x9a,0x9c, - 0x21,0x31,0xd,0xb,0xa9,0x49,0xda,0x93,0x11,0xed,0x5c,0x97,0xd,0x8c,0x16,0xa, - 0x49,0x6a,0x51,0xb,0xb7,0xe9,0xba,0xa0,0x4,0xbe,0x2f,0x69,0x34,0x2,0x1c,0x15, - 0xe2,0x4,0x3e,0x75,0x27,0xa0,0x6a,0x37,0x9,0x63,0x2e,0x86,0x26,0xa8,0x36,0x1c, - 0xde,0x3a,0x35,0xcd,0x9d,0xb7,0xdd,0x4c,0xcc,0xd0,0x58,0x9e,0x9f,0xa3,0xd9,0x18, - 0xe3,0xe0,0xcd,0xdb,0xf9,0xfe,0x8b,0xef,0x12,0x22,0xa2,0xa,0xa0,0x56,0xa3,0xbd, - 0x50,0x88,0x54,0xbf,0x88,0x8c,0xb0,0x5d,0xcf,0xa5,0x2b,0x9f,0xa2,0x52,0x6f,0xd2, - 0x5d,0xcc,0x53,0xec,0x28,0x90,0xce,0xe6,0x18,0x19,0xe8,0x89,0xba,0x9b,0x94,0xb0, - 0xe7,0x37,0x49,0x1b,0x21,0xbb,0xf7,0xdd,0x4c,0x47,0x5f,0xd7,0x15,0xcf,0x23,0x11, - 0xb7,0xe8,0xef,0xee,0xe0,0xe8,0xc9,0xb3,0x5b,0xd0,0xf9,0xce,0x9e,0x1e,0xfa,0xf3, - 0x8a,0x99,0xb9,0xa,0xbe,0xab,0x48,0x76,0x14,0xc8,0x5a,0xe,0x85,0xb4,0xd6,0xa, - 0x1a,0xd0,0xd,0x8d,0x78,0x4c,0x42,0xa8,0xc8,0x67,0x34,0x4c,0x53,0x63,0xc5,0xd0, - 0xa8,0x87,0x21,0x3a,0x4a,0x29,0xcf,0xb,0x8,0x2,0x7,0x9d,0x0,0x37,0x8,0x9, - 0x3,0x85,0x14,0x82,0x4c,0xca,0xc4,0xb2,0x74,0x42,0xa5,0x30,0xf4,0x18,0x86,0x2e, - 0x70,0x3,0x9b,0x86,0xeb,0x13,0xb7,0x4c,0xbe,0xf1,0x9d,0x27,0xf8,0xc9,0xb,0x87, - 0xf8,0x67,0xbf,0xf3,0x39,0x62,0xba,0xc6,0xec,0xcc,0x3c,0x7,0xe,0xee,0xa3,0x54, - 0xae,0xb1,0xb4,0xba,0xc1,0xbb,0xc7,0x4f,0xf3,0xc6,0xdb,0x47,0xf1,0xec,0x26,0x3d, - 0x3d,0x5d,0x94,0xea,0xe,0x2f,0xbf,0x75,0x92,0x86,0xe3,0x62,0xc5,0x62,0x98,0x22, - 0x64,0xcf,0xf8,0x20,0x5f,0xfc,0xb5,0x4f,0x70,0xe0,0xe6,0x9d,0xd7,0x6c,0x18,0x85, - 0xa1,0x62,0xef,0xf6,0x11,0x72,0xa9,0x18,0xe9,0x44,0x8c,0x20,0xc,0x48,0xc7,0xd, - 0xf6,0x6d,0x1f,0xe4,0x96,0x9d,0xc3,0x9c,0x9f,0x5b,0x61,0x79,0x6d,0x93,0x44,0xdc, - 0x62,0xbd,0x5c,0xe3,0xf5,0xf7,0x27,0xd1,0x5d,0x9b,0xbb,0x76,0xb4,0xd1,0x96,0x32, - 0x89,0x21,0x31,0x4d,0xd,0xc3,0xd4,0xc9,0xc7,0x4,0x96,0x11,0x15,0x4c,0x86,0xa1, - 0x63,0x58,0x3a,0x61,0xa8,0x70,0x1d,0x8f,0xc0,0x88,0xca,0x2f,0xbb,0x19,0x62,0x2b, - 0x41,0x95,0x80,0xba,0x1b,0x60,0x69,0x82,0x84,0x1,0x35,0x60,0x79,0x71,0x91,0x4c, - 0x3e,0xcf,0xc4,0xcc,0x1a,0x9f,0xbc,0x2f,0xc6,0x81,0xfd,0xbb,0xf9,0xee,0x53,0xaf, - 0x70,0xeb,0xed,0x7,0xb8,0xe7,0xb6,0x3d,0x3c,0x77,0xe8,0x7d,0x36,0xea,0x1e,0x41, - 0x18,0x44,0xf8,0x88,0x30,0x8c,0x8e,0x1b,0xa5,0xf0,0x3d,0x1f,0xa7,0xd9,0xa4,0xb7, - 0xa7,0x88,0xef,0x3a,0x74,0x15,0xdb,0x89,0xc5,0x13,0xad,0x9,0xa3,0xbc,0xa2,0x3b, - 0x96,0xca,0x66,0x49,0xe5,0xb2,0x91,0x18,0xc7,0x4f,0x65,0xf7,0x3b,0xc7,0x87,0x78, - 0xfc,0xf9,0xd7,0x51,0x4a,0x91,0xc9,0xe5,0xe9,0xe9,0x48,0xb3,0xad,0xb3,0xc1,0xb9, - 0x19,0x89,0xa1,0xb,0xc,0xcb,0x62,0xb0,0xad,0x46,0x47,0xc1,0xa2,0x69,0xfb,0x94, - 0x2b,0x11,0x28,0xd6,0x71,0x4,0x52,0x82,0xe7,0x85,0x6c,0x56,0x5c,0x6a,0x59,0xf, - 0x91,0xa,0x43,0x5d,0x29,0xe5,0x99,0xa6,0x41,0x21,0x1d,0x43,0x20,0xa9,0xd4,0x3d, - 0xbc,0x30,0x88,0xce,0xeb,0xaa,0x87,0x5f,0x76,0x59,0x2f,0x37,0x49,0xc6,0x63,0x8c, - 0xd,0xa5,0x49,0xc5,0xe1,0xcd,0xd3,0x33,0xe4,0x3a,0x86,0x8,0xe3,0xed,0x7c,0xff, - 0xe9,0x57,0x71,0x5d,0x8f,0x3f,0xfc,0xe7,0xbf,0xcb,0xf9,0x33,0x53,0x78,0xcd,0x3a, - 0xf3,0x6b,0x1b,0x1c,0x7e,0xef,0x14,0xc5,0x5c,0x8a,0x9b,0xbb,0xdb,0x59,0x6b,0x36, - 0xb1,0x32,0x19,0x9a,0x41,0x85,0xf5,0x9a,0xd,0x9e,0x4d,0x77,0x77,0xf,0xdd,0x1d, - 0x6d,0x8c,0xe,0x15,0xb7,0x40,0x22,0xd7,0xeb,0xfd,0x17,0xb,0x79,0xfa,0x8a,0x39, - 0x32,0xa9,0x4,0x4a,0x41,0x5b,0x2a,0x85,0xe7,0xf9,0xbc,0xf0,0xd6,0x49,0xfc,0x50, - 0xb1,0xe7,0x80,0xc1,0xfc,0xd2,0x2a,0xaf,0x1f,0x3d,0x8b,0xa8,0x55,0xb9,0x7f,0x47, - 0x3b,0x32,0x84,0x66,0x23,0xc4,0x8c,0xb,0x6c,0xc7,0xc3,0x76,0x3c,0x5c,0x47,0x23, - 0x9f,0x8d,0xd0,0xce,0x56,0x18,0xd,0x7f,0x54,0xab,0x47,0x50,0xb7,0x1d,0xaa,0xae, - 0x8b,0xed,0x1b,0x34,0x1a,0x2e,0xbe,0x52,0x38,0x1e,0x78,0x4a,0xe1,0xb8,0x3e,0x2b, - 0x95,0x5,0x92,0xe9,0xc,0xba,0x61,0x52,0x6d,0xd4,0xf9,0xab,0xef,0x3d,0xc3,0x97, - 0x3e,0xff,0x20,0x6d,0x6d,0x79,0x9e,0x7a,0xf1,0x10,0xdd,0x9d,0x5,0x6e,0xdf,0x33, - 0xca,0x93,0x6f,0x9e,0xc4,0xf5,0x7c,0x94,0xef,0x47,0x6c,0x21,0xc3,0x88,0x38,0x2, - 0x4e,0x33,0x1a,0xa4,0x15,0xb2,0x94,0xab,0x35,0xda,0xda,0x22,0x66,0xd0,0x75,0xe7, - 0x1d,0xd7,0x49,0xac,0x46,0x87,0xfa,0x30,0xcd,0x48,0x3d,0xa4,0xa3,0xab,0x93,0x8e, - 0x78,0x83,0xd5,0xb5,0x1a,0x9b,0xd,0xc8,0x15,0x8a,0x58,0xc2,0xc5,0xa9,0xd7,0x98, - 0x98,0x12,0xa4,0x62,0x92,0x64,0x5c,0x62,0x18,0x1a,0x61,0x10,0x12,0xb3,0x24,0xa9, - 0xa4,0x8e,0x6e,0x68,0xcc,0xa0,0xd3,0x8,0x95,0xa7,0x83,0x6a,0x4,0xa1,0xc8,0xd5, - 0x1d,0x9f,0x64,0x42,0x27,0x16,0x17,0x98,0x42,0x8b,0x74,0x6d,0xa4,0x40,0x17,0x82, - 0xd1,0xc1,0x4,0x33,0xb,0x3e,0xbe,0x1f,0x92,0x4d,0x19,0x68,0xaa,0x46,0x36,0x9b, - 0x22,0x19,0x93,0xe4,0x8b,0x1d,0xbc,0xf9,0xee,0x49,0x4e,0x4d,0xcd,0x70,0xf7,0xfd, - 0xb7,0x71,0xea,0xd8,0xfb,0x74,0x66,0x62,0x7c,0x6c,0xfb,0x30,0x89,0x6c,0x12,0xdd, - 0xd0,0x38,0xb7,0xb4,0xce,0x27,0x1e,0x7c,0x80,0xe7,0x5e,0x3b,0xc2,0x4b,0x47,0x4e, - 0xd3,0xd3,0x37,0x4c,0x57,0x4f,0xf,0x37,0x8d,0xe,0xd1,0x9e,0x8,0xe8,0xef,0xe9, - 0xb8,0x2,0xf2,0xf5,0xd3,0xf,0x23,0x15,0x8f,0xb1,0xef,0xa6,0x51,0xf2,0xb9,0x4c, - 0x4,0xfc,0xe8,0xe9,0xc1,0xb0,0xe2,0x64,0xa4,0xe4,0xf8,0xc5,0x65,0xb2,0xa9,0x4, - 0x7f,0xf7,0xf7,0x4f,0x72,0xe8,0xe8,0x69,0xee,0x1f,0x6a,0xfd,0xda,0xe3,0x4a,0x0, - 0x0,0x20,0x0,0x49,0x44,0x41,0x54,0x23,0x69,0x46,0x10,0x30,0xe9,0x7b,0x10,0x48, - 0xa4,0x2e,0xb7,0x58,0x3f,0x86,0x10,0x18,0x8,0x4c,0x53,0x44,0xdd,0xda,0x40,0x10, - 0x78,0x8a,0xb8,0x61,0xe1,0x3b,0xa,0x11,0x4a,0x94,0xd2,0xb1,0x95,0x17,0x81,0x2a, - 0x54,0x48,0xe8,0xfb,0xa4,0xb3,0x1d,0xc4,0x13,0xc9,0x68,0xf4,0x6b,0x58,0xcc,0x2e, - 0x6d,0x70,0xf4,0xf8,0x29,0x1e,0x7d,0xe8,0x7e,0xb4,0x7,0x2,0x16,0x17,0x97,0x78, - 0xe0,0xe0,0x5e,0xde,0x3c,0x76,0x8e,0x35,0x4d,0xa3,0xb3,0x90,0x21,0xf4,0x6c,0x74, - 0x23,0x8e,0xeb,0x7a,0x4,0xbe,0x87,0xa5,0x41,0x47,0x3e,0xcd,0xca,0x46,0x8a,0x44, - 0x2a,0xf9,0xa1,0x7d,0xff,0x6b,0x3d,0x8b,0xbe,0x9e,0xe,0x32,0xa9,0x24,0x5a,0x2c, - 0x45,0x7b,0x12,0x86,0xf2,0x21,0xeb,0x15,0xd,0x3f,0xc,0xc8,0xc6,0x2c,0x86,0xf2, - 0x4d,0xee,0xde,0x95,0xa3,0x54,0x73,0x9,0xb8,0x44,0x73,0x53,0x4,0x81,0x20,0x6c, - 0xb5,0xbd,0x75,0x74,0x7c,0x4d,0xa0,0x8,0x9b,0xba,0x52,0x54,0x84,0x66,0xf4,0xc4, - 0x93,0x3a,0x99,0xb4,0x89,0xeb,0x46,0x49,0x8a,0x22,0x12,0xfc,0xd0,0xa4,0xc2,0xb1, - 0x5,0xa6,0xa1,0x47,0x58,0xf9,0x66,0xc0,0x50,0xde,0x47,0x6b,0xae,0xb0,0x6b,0xfb, - 0x76,0x4e,0x9e,0xed,0x22,0x9b,0x6b,0xe3,0xe2,0xe2,0x3a,0x77,0xdc,0x1a,0x49,0x96, - 0x2f,0xce,0xce,0xa1,0xf7,0x18,0x78,0xbe,0x8b,0xd0,0x24,0xe9,0x74,0x8a,0xb6,0xb6, - 0x2c,0x1f,0xbf,0xfb,0x16,0x5e,0x3b,0x72,0x82,0xd5,0x72,0x83,0xcd,0x95,0x5,0xc4, - 0x40,0x9e,0x9e,0xe1,0x61,0x2c,0xed,0xc6,0xf,0x42,0xd7,0x75,0x3e,0xfd,0xf1,0x3b, - 0xc9,0xa6,0x92,0x84,0x61,0x88,0x6e,0x68,0x9c,0x99,0x5d,0x26,0x6b,0x49,0x1e,0x7b, - 0xf8,0x7e,0x56,0x97,0x96,0x79,0xe3,0xe8,0x69,0xba,0x53,0x3a,0xf9,0x84,0xc4,0x71, - 0x2,0xb0,0x24,0xbe,0xf2,0xc9,0x7,0x26,0x1d,0x39,0x2b,0xa2,0x79,0xc7,0x22,0x10, - 0x85,0xa9,0x83,0xb4,0x62,0x11,0x48,0x45,0x85,0x84,0x8e,0x83,0x1b,0x28,0x4c,0x4d, - 0xd2,0xa8,0x7a,0xa4,0x94,0xa0,0xec,0x28,0xe6,0xb1,0x9,0x3,0x85,0x26,0x2d,0x74, - 0x4d,0xc7,0xb2,0x4c,0x36,0xcb,0x55,0x72,0xd9,0xc,0xe5,0xba,0x60,0x71,0x76,0x96, - 0xa4,0x16,0x52,0xec,0xec,0x40,0x78,0x4d,0x32,0xb9,0x1c,0x7,0xf7,0x8e,0x32,0x35, - 0xb7,0x42,0x5b,0x26,0x89,0xd4,0x14,0x8d,0x56,0x73,0xc8,0xf7,0x3c,0xe2,0x52,0xd1, - 0xd7,0xd3,0x85,0xa7,0xc5,0xb0,0x62,0xb1,0x9f,0xbd,0x53,0xaa,0x14,0x85,0x7c,0x96, - 0x91,0xe1,0x41,0xec,0xd0,0x67,0xff,0xa0,0x43,0x3e,0x29,0x99,0x59,0x57,0x48,0xdd, - 0x22,0x6d,0x41,0xca,0xf0,0x70,0x5c,0x49,0x2a,0xae,0x23,0xc,0x81,0xeb,0xa9,0xf, - 0x46,0xc9,0x7a,0xd4,0xdf,0x70,0x3,0x8d,0xd0,0x95,0x28,0xa8,0xea,0x4a,0x85,0x9b, - 0x42,0x37,0xd0,0x75,0x9d,0x74,0xdc,0x42,0xc5,0xd5,0x65,0x65,0x5b,0xa4,0x3e,0xd5, - 0xa8,0x7b,0x48,0xe5,0x63,0x18,0x71,0x52,0x71,0x81,0x14,0x21,0x22,0xa6,0x53,0xcc, - 0x67,0x78,0xe4,0x9e,0x9b,0x39,0x7c,0xec,0x2c,0xa6,0x8c,0xda,0x98,0x97,0xa8,0xcf, - 0xbe,0xef,0x73,0xfc,0xd5,0x23,0xb8,0xbe,0xcd,0xc8,0xf0,0x0,0x96,0x61,0x30,0xdc, - 0xdf,0xc3,0x1f,0xff,0x5f,0xbf,0xc7,0xc5,0xd9,0x45,0x52,0xc9,0x38,0xc9,0x44,0x2, - 0xa7,0x5a,0xc2,0x73,0x1c,0x44,0x8b,0x25,0x74,0x4d,0x29,0x33,0x29,0x18,0x1e,0xe8, - 0x8e,0x7a,0x7,0x6b,0x6b,0xfc,0xed,0x77,0x7e,0xc2,0xf4,0xfc,0x32,0x8f,0x7c,0xfc, - 0x2e,0x76,0x8f,0xf,0xf2,0x1f,0xbf,0xfe,0x5d,0xd6,0xeb,0x1e,0x43,0x5,0x2d,0x1a, - 0xe5,0xa,0x81,0xe7,0x49,0xa,0x31,0x3,0xb,0x1,0x8d,0x88,0x29,0x63,0xd7,0x3, - 0x54,0x22,0xc4,0xb0,0x34,0x14,0xf5,0xcb,0x4a,0xd4,0x88,0x18,0xda,0xac,0xba,0x84, - 0x7e,0x18,0xe9,0x58,0x5,0xa,0xcd,0x13,0xd4,0x5c,0x1f,0x57,0x41,0x3c,0x99,0x60, - 0x79,0x71,0x11,0xa9,0x1b,0x84,0x41,0x80,0x15,0x8b,0x31,0xbd,0xb4,0xce,0xdf,0xfc, - 0xfd,0x13,0x7c,0xf6,0x33,0xf,0x12,0xba,0x1e,0xae,0x6d,0xf3,0xd0,0xbd,0xb7,0xf2, - 0xc4,0x4b,0x47,0x90,0x52,0xd2,0xdf,0x9e,0x64,0x62,0xed,0xd2,0xb0,0xc6,0x24,0x69, - 0x48,0x8a,0x85,0x36,0xba,0x7,0x87,0x48,0xa5,0x33,0x3f,0x73,0x23,0x4d,0x29,0x45, - 0x2a,0x91,0x60,0x78,0xb0,0x87,0xa0,0x76,0x96,0x81,0x8e,0x28,0x77,0x28,0xd9,0x82, - 0x4c,0x36,0xc7,0x68,0x97,0x20,0xae,0xc0,0x75,0x3d,0xf2,0x6d,0x31,0x2c,0x4b,0xdf, - 0x6a,0x6c,0x5e,0x4a,0x31,0x4,0x20,0x3,0x9d,0xd0,0x91,0x28,0x15,0x6e,0xea,0x41, - 0x18,0xae,0xa,0x61,0x50,0x6b,0x4,0xf8,0xd9,0x68,0x64,0x7b,0x9,0x88,0x23,0x82, - 0xa8,0x1d,0xaa,0x82,0x30,0xf2,0xe8,0xd4,0x20,0xd0,0x54,0x24,0x9d,0x2e,0x42,0xbc, - 0xcd,0x55,0xe,0x8c,0x74,0xd0,0x1d,0x13,0xc,0x8f,0xf6,0x47,0x39,0x4c,0x4b,0x10, - 0xc1,0x8a,0xc5,0xd8,0x7b,0xd7,0x1,0x9a,0xcd,0x6,0xd9,0xb6,0x1c,0xba,0x11,0x25, - 0x43,0xed,0xf9,0x2c,0xc5,0xf6,0x1c,0x28,0xb0,0x6d,0x1b,0x3f,0x93,0x20,0x9e,0x48, - 0x7c,0xe8,0xc3,0x88,0xb4,0x7a,0x60,0x63,0xb3,0x8c,0x99,0xce,0xf0,0xd5,0x7f,0xf5, - 0xbf,0x60,0xc9,0x90,0xf7,0x8f,0xbe,0xcf,0xf1,0x73,0x73,0x48,0x23,0xc6,0x72,0xad, - 0xc1,0x70,0xce,0x45,0x93,0x12,0x3b,0x10,0x74,0x6a,0x26,0x4a,0x8f,0x54,0x3d,0x74, - 0x4d,0xa0,0x42,0x70,0xea,0x97,0x16,0xe4,0x83,0xf6,0x69,0xe8,0x2b,0xdc,0xa6,0x47, - 0xe0,0x45,0xe4,0x90,0x52,0xcd,0xa7,0xd6,0xc,0x30,0x94,0xa4,0xdc,0xf0,0xc1,0x8c, - 0xb3,0xb2,0xb4,0xcc,0xda,0xd2,0x22,0x23,0xe3,0xe3,0xd8,0x8d,0x3a,0xe9,0x54,0x82, - 0xcf,0x1d,0xdc,0xcb,0x8f,0x9f,0x7f,0x9d,0xc7,0x5f,0x7d,0x8f,0x3b,0x76,0x8f,0xf0, - 0xbb,0x5f,0xfc,0x35,0x46,0x46,0x86,0xf9,0xe4,0xdd,0xfb,0x38,0x72,0xe4,0x18,0xa3, - 0xbd,0x45,0xce,0xac,0x4c,0x47,0xd5,0x94,0x61,0x91,0x4e,0x47,0x41,0x3f,0x32,0x3e, - 0xf2,0x91,0x17,0xff,0x72,0xba,0x99,0x2,0x4c,0xd3,0x60,0xfb,0x60,0x7,0xcb,0xe7, - 0x4f,0x12,0x4,0x31,0x1c,0x2f,0x64,0xc3,0xb6,0xc8,0xa5,0x34,0xb6,0x15,0x1b,0x6c, - 0xac,0x4,0xa0,0x34,0x5c,0xf,0xa4,0x54,0x97,0x23,0xc3,0xb6,0x5e,0x6c,0xc7,0x97, - 0x78,0xa1,0x24,0x54,0xc1,0xaa,0x8e,0x52,0xb3,0x52,0xb7,0x54,0xdd,0x9,0xc5,0x55, - 0xa3,0x5a,0x5,0x9e,0x27,0x2e,0x8d,0x98,0x8,0x55,0x48,0xd3,0x8d,0x74,0xf3,0xea, - 0xcd,0x6,0xba,0x8,0x29,0xad,0xaf,0x61,0x57,0x2b,0xc4,0x2c,0xf3,0x8a,0xbc,0x45, - 0x29,0x45,0x32,0x9b,0x22,0x99,0x4d,0x6d,0x99,0x2d,0x6c,0x61,0xf9,0x2f,0x69,0xee, - 0x98,0x26,0xe6,0x15,0xca,0xdf,0x37,0xbe,0xc2,0x50,0xd1,0xdb,0xd7,0xcb,0xef,0xf4, - 0xf6,0x10,0x8b,0x59,0x94,0xd6,0xd7,0x99,0x59,0x5e,0x67,0xb3,0xe1,0x21,0x42,0x8f, - 0x9e,0x8c,0x41,0x93,0x0,0x23,0xc,0x9,0x31,0xb1,0xbd,0x90,0xc0,0xf7,0xa8,0xdb, - 0x1,0xed,0x19,0x83,0x98,0x21,0xa3,0xda,0xbe,0xe6,0xa1,0x9b,0x1a,0x52,0x13,0x84, - 0x81,0xc2,0x77,0x83,0xad,0x8c,0x7b,0xb3,0xea,0x51,0x69,0x4,0x1f,0xe8,0xfb,0x87, - 0x30,0xbf,0xba,0x81,0x1d,0x4a,0xfa,0x86,0x86,0x70,0x5d,0x7,0xd3,0x8a,0x31,0xd4, - 0x5d,0xe0,0xde,0xbb,0x6f,0xa3,0x52,0x2e,0xf3,0x67,0xdf,0x7a,0x82,0x6f,0x3d,0xbe, - 0xc0,0x8e,0x9b,0x76,0x32,0x3a,0xb6,0x8d,0x5f,0xfb,0xf8,0x1d,0x9c,0x3d,0x7d,0x8e, - 0x9e,0xae,0x2,0xfb,0xc6,0x43,0x5e,0x3d,0x31,0x4d,0x10,0x6,0x98,0x86,0x81,0x69, - 0x99,0x1f,0x59,0xcf,0xdf,0xf7,0x7d,0xea,0xd5,0x1a,0x81,0xef,0xa3,0xb7,0xb8,0x80, - 0xb6,0x1f,0xb2,0xb6,0xbe,0x8e,0xa1,0x9,0x2,0x1f,0x56,0xca,0x8a,0x66,0x10,0x63, - 0x24,0xd7,0x24,0x1d,0x13,0xac,0x5f,0xda,0xd3,0x54,0x64,0x46,0x75,0xad,0x91,0x9b, - 0x17,0x6a,0x4,0xa1,0x20,0x14,0xe1,0x9c,0xe,0x6a,0x56,0x37,0x4c,0xbf,0x66,0x63, - 0x88,0x9f,0x4e,0x3d,0x2f,0xbb,0xcf,0x96,0x10,0x9,0x22,0xf4,0x31,0x75,0xc1,0x52, - 0xb9,0x4a,0x10,0x28,0x34,0x2d,0x52,0xb9,0x8a,0x98,0x32,0x57,0x4f,0xb0,0x3e,0xca, - 0xb6,0xf6,0xb3,0x5c,0xf1,0x78,0xc,0x21,0xa0,0x51,0xab,0x73,0x71,0x7a,0x8e,0xc7, - 0x5f,0x79,0x87,0x5a,0xbd,0x4e,0xce,0x94,0x74,0xa7,0x2d,0x1c,0x7c,0x7c,0x14,0x16, - 0x2e,0x82,0x48,0xb7,0xc7,0xf6,0x42,0x56,0xcb,0x2e,0xc5,0xac,0x19,0x9,0x5d,0x86, - 0xa,0xcf,0xbe,0xda,0x3a,0xc6,0xf5,0x42,0x1a,0x4e,0xc4,0x32,0x16,0x44,0xae,0xdf, - 0x15,0xdb,0xc1,0xd,0x15,0x3d,0xbd,0x3d,0x38,0x8e,0x13,0xcd,0xe2,0x5d,0x97,0x3b, - 0x6f,0x1e,0xa3,0x50,0x2c,0x70,0xe7,0x81,0x3d,0x94,0x2a,0x55,0x9e,0x7f,0xeb,0x24, - 0x67,0x2f,0xcc,0xe2,0x79,0x3e,0x3,0xbd,0x9d,0x3c,0x70,0xef,0xed,0x48,0xc3,0xe0, - 0xe3,0x77,0xee,0xe3,0xd8,0xe4,0x2,0xcb,0x2d,0xcd,0x7f,0xf9,0x11,0x7,0x68,0x42, - 0x8,0xe6,0xa7,0x67,0x38,0xfa,0xf6,0x7b,0xf8,0xa,0x36,0x6c,0x9f,0xd5,0x72,0x5, - 0xe5,0x6d,0x62,0xa8,0xd,0x6,0x3a,0x4c,0x42,0xa5,0x98,0x5e,0x13,0x64,0x62,0x8a, - 0xb1,0xa2,0x1e,0x79,0x35,0x60,0x5f,0xa1,0x2,0x1a,0x5e,0xa3,0x31,0xe7,0x4,0x6, - 0x21,0x22,0x10,0x30,0xad,0x7,0x41,0x70,0x51,0xd3,0xd,0xaf,0xd6,0x10,0x86,0xa6, - 0x3e,0x90,0x7d,0xb9,0xc2,0xb3,0x77,0x4b,0xcb,0x34,0x8a,0x20,0x43,0x97,0x38,0x76, - 0x8d,0xa6,0xe3,0x92,0x4a,0x98,0xb8,0x5e,0x80,0x61,0x18,0x1f,0xdd,0x68,0xf3,0x17, - 0x32,0x52,0xf2,0x79,0xe2,0x85,0xd7,0x79,0xeb,0xad,0xf7,0x98,0x98,0x9a,0xe1,0xec, - 0xcc,0x32,0x66,0x3a,0x4f,0xc6,0x8,0x30,0x35,0x8d,0x6,0x21,0xe0,0x71,0xb9,0xa9, - 0x73,0xd4,0x88,0x51,0xac,0x95,0x3d,0x8a,0x39,0x23,0xf2,0x2d,0xb8,0xc6,0x67,0x57, - 0x9a,0x41,0xe4,0xe9,0xb,0xac,0x3a,0x1,0xfa,0xf8,0xcd,0x34,0xcf,0x4e,0x91,0x76, - 0xeb,0x54,0xaa,0x75,0x74,0x4d,0x52,0x77,0x7c,0xf6,0xc,0xe7,0xb9,0xf3,0xd6,0x5d, - 0x28,0xa5,0xe8,0xea,0xeb,0xe3,0xae,0x7d,0x3b,0xd8,0x39,0xd4,0xcd,0xec,0x46,0x9d, - 0x5a,0xd3,0x26,0x93,0x8c,0x73,0xdf,0x1d,0xfb,0x28,0xaf,0xaf,0xd3,0xd1,0x51,0xe0, - 0xf6,0xdd,0x23,0x5c,0x5c,0x58,0xc5,0xf,0xa2,0xd6,0xfa,0x47,0xbd,0xf2,0x85,0x76, - 0xba,0x7a,0x8a,0x94,0xab,0xd,0x16,0x2a,0xab,0xac,0xae,0x9c,0x63,0xc7,0x70,0x9c, - 0x64,0xab,0x3,0xeb,0x78,0x8a,0xf9,0x4d,0xc5,0x9e,0x3e,0x9f,0xb4,0x25,0xaf,0x74, - 0xcf,0x69,0xa9,0x94,0x5e,0xb2,0x35,0xb8,0xfc,0x77,0x27,0x30,0x8,0x2,0x3c,0x4d, - 0x57,0x17,0xa5,0xe7,0x79,0x17,0x75,0x5d,0xaf,0x56,0x5d,0x9d,0xa0,0xc5,0xb1,0xbf, - 0x4,0x96,0x94,0x42,0x5c,0x6,0x9d,0xa,0xb7,0xec,0x11,0x34,0x29,0xd1,0xa5,0xcd, - 0x46,0xa5,0x1a,0xd,0x86,0xfc,0xa0,0x45,0x9d,0xfa,0x87,0xbd,0xa4,0x94,0x4c,0x5e, - 0x9c,0xe5,0x5f,0xff,0xfb,0x6f,0xf2,0x9d,0xa7,0xdf,0x60,0xc7,0xe8,0x10,0xbf,0xfb, - 0x1b,0x9f,0xc6,0x34,0xc,0x62,0x12,0x7c,0x15,0xe2,0x7b,0x3e,0x41,0xa0,0xd1,0xf0, - 0x4,0x75,0xf7,0x4a,0xc3,0x29,0xd7,0xf,0x59,0x2b,0x7b,0x38,0xfe,0x95,0x2e,0xe3, - 0x42,0x40,0xc3,0x9,0xa8,0x37,0xa3,0xd9,0x86,0x17,0x4,0xac,0x24,0xda,0xf9,0xe2, - 0xff,0xfe,0xff,0xf0,0x3f,0xff,0xd1,0xbf,0xa4,0x50,0x68,0xa7,0x56,0xab,0x51,0xb3, - 0x5d,0xf4,0xc0,0xe1,0xbf,0xfe,0xc2,0x43,0x64,0x52,0xc9,0x28,0x29,0x4b,0xa7,0x19, - 0xde,0xbe,0x9d,0xce,0xce,0xe,0x4c,0x9,0xcb,0x2b,0xeb,0x80,0xa0,0x90,0xcb,0x30, - 0x30,0xd0,0x87,0x69,0x9a,0x3c,0x7c,0xdf,0x1,0xda,0xd3,0x31,0x6c,0x2f,0xea,0x6, - 0x6e,0x4d,0x42,0x5b,0x34,0xb3,0x4b,0xbf,0xa4,0x94,0x2d,0x15,0x94,0x16,0x5,0x4c, - 0xd7,0xd1,0xd,0x13,0xbb,0xde,0x60,0xad,0xb4,0x4e,0x4f,0x36,0x24,0xa1,0x85,0x28, - 0x65,0x20,0x5,0xac,0x54,0x14,0x71,0x3d,0x64,0xbc,0x53,0xe0,0x6,0x3e,0x42,0xf9, - 0x57,0x82,0x2b,0x5a,0xc7,0xf9,0x25,0x53,0x15,0x21,0xa3,0x1d,0xa1,0xe1,0x9b,0x84, - 0x61,0xd8,0xf0,0x3c,0xef,0xbc,0xae,0x94,0x5a,0xd2,0x34,0x7d,0xc9,0xe,0xad,0x4e, - 0x3b,0xf4,0x49,0xc7,0xb4,0x48,0x2d,0x2b,0x88,0x14,0xb2,0xb6,0xbc,0x1a,0x5b,0x32, - 0x69,0xd1,0xbc,0x4c,0x90,0x8e,0xc3,0xe2,0xea,0x3a,0xf9,0x44,0x1c,0xd3,0x8c,0x91, - 0x48,0x25,0xae,0x50,0xf4,0xf8,0xe9,0x3f,0xff,0xb2,0x30,0x3,0x9b,0xa5,0x2a,0x3d, - 0x85,0x2c,0x9f,0xbb,0x7f,0x3f,0xbf,0xf9,0xd8,0xc3,0xf4,0xf,0xe,0xb0,0xba,0x51, - 0xe6,0xe2,0xbb,0xef,0x12,0x78,0x6,0x41,0x28,0x10,0x32,0x24,0x50,0x1e,0x25,0xdf, - 0xc6,0x92,0x92,0x98,0xf1,0x1,0xc0,0xd4,0xf1,0x42,0x56,0x4b,0x1e,0xf9,0xb4,0x4e, - 0xdc,0xd4,0x40,0x40,0xd3,0xe,0x59,0xaf,0x78,0x84,0xad,0x1d,0x6e,0xa5,0xd9,0xc0, - 0xcd,0x8f,0x10,0xb3,0x2c,0xe,0xdc,0x7e,0x1b,0x7f,0xf2,0xd5,0x3f,0xe5,0x6b,0x7f, - 0xf1,0x35,0x9e,0x7d,0xf2,0x49,0x7e,0xeb,0xb1,0x4f,0x70,0x70,0xff,0xae,0x2b,0xbe, - 0x57,0x7b,0xb1,0x48,0x26,0x9b,0x65,0xbd,0x52,0xe7,0xe9,0x17,0x5e,0xa7,0xf7,0xb7, - 0x3f,0x1f,0x41,0xd8,0x5a,0x5c,0x82,0x91,0x81,0x1e,0x1e,0xbe,0x77,0x3f,0x3f,0x7e, - 0xea,0x65,0x1a,0xd,0xbb,0x5,0x32,0x6d,0x70,0x61,0xf2,0x3c,0xf9,0xf6,0x7c,0x4, - 0xf2,0xc,0xa2,0x29,0x62,0xb3,0xd1,0xc4,0x6e,0x34,0x23,0x23,0x29,0x2,0x56,0x16, - 0x97,0x99,0x5e,0xda,0xa0,0x5c,0x5e,0xa1,0xad,0x10,0x43,0x29,0x19,0x59,0xc7,0x84, - 0x51,0x0,0xdc,0x3c,0xa0,0x11,0xb7,0x34,0x9c,0xf0,0x32,0x85,0x93,0x4b,0xaf,0xba, - 0x54,0x91,0xc8,0xb4,0x76,0x79,0x1e,0x25,0xa8,0x7,0x26,0x8,0x56,0x94,0x52,0xb, - 0xda,0xfe,0x3,0xb7,0xbb,0x52,0x88,0x7,0x6b,0xb5,0xea,0xf6,0xfe,0x4c,0x9d,0x6c, - 0xc2,0x88,0xb6,0x90,0x50,0x80,0x4,0xd7,0x53,0xf8,0x1,0xd8,0x6e,0x80,0x19,0x8b, - 0xe1,0xf9,0x3a,0x71,0xdd,0x47,0xd3,0xe0,0xfc,0x92,0x43,0x77,0x7b,0x91,0xc5,0x85, - 0x15,0x7a,0x7a,0x3b,0x9,0x3c,0x37,0xe2,0xca,0xcd,0xce,0x72,0xfe,0xdc,0x79,0xea, - 0xb5,0x1a,0xf9,0xf6,0xb6,0x5f,0x9a,0xcf,0xad,0x94,0x92,0xc9,0xb3,0xe7,0xd9,0x3d, - 0xd2,0xcb,0x63,0xbf,0xf6,0x20,0x1d,0xdd,0x5d,0xc4,0x2c,0xb,0x4f,0x49,0x8e,0xbf, - 0xf3,0x1e,0x45,0x4b,0x52,0xdb,0x12,0x78,0x10,0x24,0x54,0xc4,0xee,0x8d,0x9b,0x7a, - 0xb,0x94,0x79,0x49,0xe2,0x46,0xd1,0x74,0x2,0x6c,0x37,0xa4,0x6e,0x87,0x54,0x1a, - 0xfe,0x16,0x35,0xbc,0x11,0x78,0x1c,0xba,0x58,0x22,0xde,0xb3,0x8d,0xed,0x7b,0xf6, - 0x50,0xaf,0xd5,0x28,0x76,0x74,0xf0,0xc9,0x87,0x3e,0xc9,0xae,0x3d,0x7b,0x20,0xc, - 0x70,0xab,0x9b,0x24,0xe3,0x26,0xb1,0x98,0xd5,0x4a,0xb8,0x54,0x64,0x8d,0x27,0x14, - 0xaf,0x1f,0x7a,0x87,0xb7,0x4e,0x4c,0x72,0xd3,0xf6,0x11,0x92,0x97,0xcd,0x45,0x6, - 0x7a,0x3a,0x78,0xf7,0xd8,0x29,0xb6,0xf5,0x75,0x32,0x34,0x34,0x40,0xa3,0xde,0xe0, - 0xd4,0xc9,0x73,0xac,0xae,0xac,0xb1,0xb9,0x51,0xa2,0xb4,0x59,0xa6,0x51,0x6f,0x22, - 0xa4,0xa4,0xad,0xbd,0x8d,0xb6,0x62,0x1b,0xab,0xcb,0x6b,0x94,0x36,0x36,0x99,0x29, - 0x55,0x8,0xec,0x25,0x32,0x9,0x3,0xc3,0x8,0x81,0x0,0x4f,0xe9,0xd8,0x1e,0x8c, - 0x14,0x5,0x8,0x8d,0x46,0x18,0xc3,0x10,0x21,0x95,0xaa,0x4f,0x36,0x65,0x60,0x58, - 0x12,0xd3,0x10,0x8,0x25,0xb6,0xc4,0x59,0x5,0x60,0xfb,0x3a,0x17,0xca,0x5,0xbc, - 0x50,0x7f,0x57,0xa1,0xfe,0x52,0x7b,0xe7,0xed,0xb7,0xfc,0x83,0x7,0xef,0xd8,0xdb, - 0xb4,0x9d,0x7b,0x33,0x72,0x93,0xee,0x76,0x6b,0xab,0x7b,0x24,0x54,0x24,0x5e,0xec, - 0x87,0x8a,0x5a,0x43,0x10,0x33,0xc3,0x8,0x84,0xa0,0xb,0xc,0x5d,0xb0,0xb0,0xd6, - 0x20,0x97,0xeb,0x42,0x27,0xe4,0x85,0x67,0x5e,0x65,0x65,0x71,0x11,0xa7,0x51,0x67, - 0x7d,0x79,0x8d,0xf9,0xf9,0x45,0xd2,0xe9,0x24,0x3d,0xfd,0x7d,0xbf,0xb4,0x0,0x0, - 0x98,0x3a,0x73,0x9e,0xfd,0x7,0x6e,0x8e,0x9a,0x2f,0xad,0x6c,0xcd,0x17,0x26,0xc7, - 0xde,0x39,0x46,0x3c,0xb4,0xa9,0xb7,0x86,0x59,0x8,0x83,0x34,0x51,0xc2,0x17,0x84, - 0x8a,0x84,0xa9,0x5f,0x55,0x52,0xf9,0x81,0xc2,0xb,0x3e,0x68,0xbb,0x7a,0xca,0x63, - 0xb9,0x66,0xd3,0x58,0xa,0x90,0x8b,0x1b,0x6c,0x86,0x1,0xed,0x7d,0xbd,0x5c,0x98, - 0xbc,0x80,0xeb,0xf9,0xec,0xbc,0x69,0x27,0xa3,0xbb,0xf7,0xb1,0x5c,0x71,0x38,0xfc, - 0xf6,0x7b,0xac,0x2c,0xcc,0x93,0xb0,0x74,0xe2,0xf1,0x38,0xba,0xae,0xe1,0x3a,0xe, - 0x96,0x8,0x78,0xf9,0xf0,0x71,0x9e,0x79,0xe5,0x8,0xc3,0x3,0x3d,0x74,0x75,0xb4, - 0x6f,0x21,0x9e,0xb3,0xd9,0x34,0x76,0xb3,0xc9,0xf0,0x60,0x1f,0xf1,0x44,0x9c,0xb1, - 0xed,0xdb,0x18,0x19,0x1b,0x66,0x70,0x78,0x80,0x81,0xc1,0x3e,0xfa,0x6,0x7b,0xc9, - 0xe7,0xb3,0x2c,0x2f,0x2e,0x70,0xe4,0xd0,0x3b,0x9c,0x3b,0x33,0x89,0xb4,0x2c,0x62, - 0x66,0x9d,0x83,0x63,0x19,0x72,0xb9,0x38,0xb6,0xe3,0x44,0xf8,0x46,0xa9,0xd1,0x96, - 0xd2,0x30,0xa4,0x42,0x97,0x44,0xaa,0xa6,0x52,0x52,0x6b,0xfa,0xe4,0xb3,0x16,0xa6, - 0x26,0xd0,0x35,0xad,0xb5,0x13,0x7c,0xa0,0xbf,0x5c,0x6a,0xc6,0x98,0xad,0xb7,0x81, - 0x10,0x3f,0x59,0x59,0x5d,0xfa,0x91,0xf6,0x7b,0xbf,0xff,0x7,0x84,0x2a,0x2c,0x4, - 0xa1,0xfa,0x5c,0x68,0xaf,0x6a,0x63,0x5d,0xe6,0x96,0x8c,0xaf,0x8,0x21,0xf0,0x43, - 0x1c,0x3f,0xa0,0x61,0x43,0x2a,0xa5,0xd1,0x74,0x14,0x71,0x3d,0xc2,0xa2,0xf9,0x61, - 0xc8,0xc2,0x7a,0xc8,0xad,0x7b,0xc7,0x49,0x67,0x92,0x54,0xab,0x75,0xaa,0xd5,0x3a, - 0x85,0x62,0x1b,0x5d,0x3d,0x1d,0x6c,0xbf,0x69,0x27,0xf1,0x64,0xf2,0x97,0xb6,0xfd, - 0x57,0x2b,0x35,0x26,0xcf,0x4e,0x72,0xd3,0xee,0xed,0x57,0xd0,0xca,0xd,0xdd,0xe0, - 0xd8,0xb1,0x9,0x54,0x79,0x8d,0xa6,0x52,0x4,0x42,0x11,0x6,0x82,0xb4,0xd0,0xd0, - 0x5,0xb8,0x41,0x74,0xe6,0x5f,0x7e,0x14,0xfc,0x74,0xa1,0xe3,0x29,0x9f,0x9a,0xe3, - 0x72,0x7e,0xd5,0xc6,0xa8,0x9,0x32,0x6e,0xc8,0xda,0xc9,0x33,0x2c,0xad,0xad,0x92, - 0x2f,0x26,0x58,0x5a,0x59,0x65,0x63,0xb3,0x8a,0x52,0x8a,0xd1,0xed,0x3b,0x18,0xdd, - 0xbb,0x9f,0xf5,0x46,0xc8,0xe1,0x23,0xc7,0x98,0x3a,0x77,0x16,0xaf,0x51,0x43,0x13, - 0xb0,0xba,0x51,0xe6,0xf6,0x5b,0xf6,0xf0,0xec,0xcb,0x87,0xf9,0xc1,0xb3,0xaf,0x61, - 0xe8,0x3a,0xdb,0x6,0x7b,0xb1,0x2c,0x83,0xce,0x62,0x3b,0xc9,0x64,0x82,0x54,0x32, - 0x7e,0xcd,0xe3,0x51,0x29,0x85,0x6d,0xdb,0x2c,0xcc,0xce,0xa2,0x2,0x8f,0x9e,0xde, - 0xe,0xde,0xbf,0xb8,0xc0,0xb1,0x89,0xb3,0x4c,0xcd,0x57,0x38,0x3d,0x13,0xd1,0xe7, - 0xd2,0x9,0x1d,0x5d,0x2a,0xc,0x6d,0xb,0x5,0x8a,0x1d,0x28,0x62,0x86,0x47,0xbd, - 0xa1,0xc8,0xa6,0x34,0x2c,0x19,0x81,0x79,0xb6,0xac,0x96,0x5b,0x95,0xcd,0x7c,0x2d, - 0xc5,0x72,0x23,0x1d,0x80,0xfa,0x9a,0x69,0xc4,0x8e,0x6a,0xfb,0xf6,0xdd,0x82,0x94, - 0x68,0x42,0x6a,0x9f,0xaf,0x94,0xd6,0x32,0xdb,0x8b,0x2d,0x49,0xf2,0x16,0xe9,0xc4, - 0xb,0xc0,0xf1,0x15,0x75,0x47,0x91,0xcd,0x98,0xd4,0x1c,0x93,0x84,0x7e,0xc9,0x2c, - 0x42,0xe7,0xfc,0x42,0x8d,0xae,0x42,0x91,0xce,0x62,0x9e,0x8e,0xce,0x76,0xf2,0xf9, - 0xc,0x9a,0x94,0x14,0x3a,0x3b,0xe9,0xe9,0xef,0xff,0x50,0x7a,0xd7,0x4f,0x6b,0xeb, - 0xdc,0x68,0xfb,0x3f,0xf4,0xfa,0xdb,0x24,0x12,0x26,0xc3,0xa3,0x23,0x57,0xfc,0x9d, - 0xa1,0x6b,0x4c,0x9c,0x9a,0xa4,0xbe,0x30,0x43,0x80,0x22,0x40,0xe1,0xab,0x90,0x6a, - 0x18,0x60,0xa,0x30,0x85,0xc4,0xd,0x42,0x74,0x29,0xb1,0x74,0x8d,0x4b,0xf4,0xfe, - 0x4b,0x3f,0x37,0x20,0xc0,0x57,0x3e,0x33,0x9b,0xe,0x8b,0x2b,0x2e,0xc5,0x30,0x72, - 0x32,0xd3,0x43,0x45,0x63,0x72,0x9a,0x85,0x93,0xa7,0x68,0xba,0x15,0x96,0x6a,0x91, - 0x21,0x43,0xa5,0x54,0xc1,0xf7,0x7c,0xb6,0x8d,0x8f,0xb3,0xfb,0xc0,0x1d,0x68,0xd9, - 0xe,0x4e,0x5d,0x98,0x67,0x62,0xe2,0x2c,0xe7,0x2f,0xce,0x92,0x4c,0x25,0xb8,0x65, - 0x7b,0x3f,0xc7,0x4f,0x5f,0xe0,0xf1,0x17,0xf,0x31,0x79,0x71,0x8e,0x9e,0xae,0x22, - 0xbd,0x9d,0x5,0xb2,0x99,0xf4,0xd,0x9f,0x89,0x69,0x59,0xe4,0xdb,0xdb,0xf0,0x5c, - 0x87,0xb5,0xcd,0x32,0xcf,0x1c,0x3a,0xca,0xe2,0xd2,0x32,0xeb,0xe5,0x26,0xeb,0xe5, - 0x26,0x95,0x9a,0x47,0xdc,0xd4,0xd0,0x35,0x19,0xa1,0x7b,0x5a,0x3e,0xc,0x81,0xe7, - 0x61,0x18,0xa2,0x15,0x0,0x6,0x86,0x14,0xad,0x23,0x20,0x3a,0xe,0xa3,0x42,0x4e, - 0x30,0x55,0xca,0x51,0xf3,0x93,0x6b,0x2,0xf5,0x67,0x8,0xb1,0xa0,0xdd,0x75,0xd7, - 0xbd,0xd8,0xb6,0xdd,0xd4,0x74,0xed,0xa1,0x72,0xa5,0x36,0x34,0x90,0x6a,0x92,0x8e, - 0xeb,0x5b,0x6f,0x87,0x1f,0x28,0x1c,0x3f,0x64,0xb5,0x62,0x93,0x8e,0x83,0x6f,0x37, - 0xd1,0x85,0xc0,0xf1,0x5,0x4d,0x47,0x52,0xae,0xd5,0x29,0xd7,0x61,0xa8,0xa7,0x3, - 0xc7,0x89,0xf4,0xff,0xe2,0xc9,0x4,0xc3,0x63,0x63,0x98,0x2d,0x8b,0xb5,0x4b,0xd8, - 0x80,0x28,0xd3,0x15,0x5b,0x28,0x59,0xd5,0x12,0x51,0x2a,0x95,0x2a,0xc4,0x93,0x89, - 0x2b,0xce,0xe9,0x9f,0x5e,0xfc,0x8b,0x17,0x66,0x39,0xfa,0xd6,0x7b,0xdc,0xf3,0xc0, - 0x5d,0xc4,0x13,0x89,0xab,0xd8,0x32,0x67,0xce,0xcf,0xb3,0x7c,0xee,0xc,0x52,0xd3, - 0xa8,0x7,0xd1,0x34,0x33,0x10,0xb0,0xe9,0x39,0x34,0x14,0xd4,0x43,0x8f,0x65,0xd7, - 0xa5,0xe2,0xfb,0x94,0x5c,0x8f,0x75,0xdb,0x65,0xdd,0x75,0x59,0xb4,0x5d,0x96,0x6c, - 0x8f,0x15,0xdb,0x61,0x72,0xb9,0x41,0x4f,0xd3,0x22,0x76,0xd9,0x7d,0x48,0x21,0xa0, - 0x66,0x53,0x99,0x9c,0x67,0xf1,0xec,0x14,0xa7,0xce,0x4f,0xa2,0xa5,0x12,0x18,0xa6, - 0xc5,0xea,0xf2,0x2a,0xa5,0xcd,0x32,0xd9,0x5c,0x9e,0x9d,0x37,0xdf,0xc2,0xe0,0xae, - 0x7d,0xc4,0xb,0x3d,0xcc,0xaf,0x94,0x70,0x6c,0x9b,0x7c,0x2a,0xc6,0xd9,0x8b,0xf3, - 0x9c,0x3c,0x7b,0x81,0x97,0xdf,0x78,0x87,0x7a,0xd3,0x66,0xb0,0xaf,0x9b,0x4c,0xea, - 0xc6,0xbb,0xa2,0x61,0x9a,0xa4,0x33,0x19,0xde,0x3f,0x3d,0xc5,0x91,0xe3,0xef,0x63, - 0x8a,0xa8,0xf7,0x62,0x6a,0x2,0x53,0x97,0x18,0xba,0xa4,0xe1,0x84,0x58,0x86,0x41, - 0xdc,0x12,0x4,0x81,0xc0,0xf5,0x35,0xc,0x53,0xd0,0x68,0x2a,0x32,0x49,0x3,0x43, - 0x82,0x71,0x59,0xb7,0x53,0x2a,0x81,0xed,0x69,0x9c,0x2d,0xb5,0xe1,0x29,0xfd,0x7d, - 0x9,0xff,0xa1,0x52,0xa9,0x34,0x75,0x3f,0x70,0x99,0xbe,0x70,0xa6,0xba,0x6d,0x6c, - 0xd7,0x21,0x61,0xa6,0x3f,0x36,0xbf,0xb1,0x49,0x4f,0x5b,0x7c,0xcb,0xf1,0xe2,0xd2, - 0x2,0xc6,0x2d,0x81,0xa,0x15,0xb6,0x3,0xae,0x1f,0x7d,0x70,0xc3,0xf1,0x68,0xba, - 0x4d,0xe6,0xcf,0x4f,0x71,0xf3,0xf8,0x10,0xbe,0xed,0xb0,0xb2,0xb2,0x41,0xbe,0x2d, - 0x47,0xb9,0x5c,0xbf,0xac,0xcc,0x91,0x97,0xa9,0x80,0xb,0x7c,0xcf,0x8f,0xd0,0xb2, - 0xcd,0x26,0x1b,0x6b,0x9b,0x64,0xdb,0xdb,0xf9,0xdc,0x17,0x1e,0x41,0x8b,0x59,0xd7, - 0x5c,0xfc,0xa5,0xc5,0x15,0x5e,0x7c,0xfa,0x25,0x6e,0x3b,0x78,0x33,0xf9,0xf6,0xb6, - 0xab,0xb6,0x4e,0x1,0xb4,0x75,0x76,0xe2,0x48,0x9d,0xac,0x2e,0x70,0x84,0x41,0xad, - 0xe5,0x26,0xea,0x2a,0x85,0xed,0xdb,0x48,0x22,0x33,0xcb,0x92,0xeb,0x5d,0x51,0x2, - 0xaa,0xc8,0xb7,0x1c,0xd7,0xf,0xd9,0x6c,0xf8,0x6c,0xbb,0xd6,0x60,0x5a,0x8,0xc, - 0x20,0x5f,0x6e,0x60,0x97,0xa6,0x38,0x32,0x3d,0xc7,0xd2,0x7d,0x77,0xb1,0xef,0x81, - 0x8f,0x91,0xb,0xdb,0xa8,0x55,0x6b,0xc4,0x13,0x71,0xb2,0xb9,0x2c,0xfd,0x83,0x23, - 0xc,0x8d,0x8c,0xe3,0xba,0xe,0xab,0xcb,0xb,0x24,0x87,0xf6,0x30,0x7d,0x61,0x9a, - 0xcd,0xcd,0xd,0xbe,0xf9,0xf7,0xcf,0xf2,0xfc,0xab,0x6f,0xf3,0xe5,0x2f,0x3c,0xc2, - 0x43,0xf7,0xdf,0x4e,0x2e,0x93,0xbe,0x2e,0xb8,0x56,0x4a,0x49,0xdd,0xb6,0xb9,0xf3, - 0xf6,0x7e,0xa4,0xf2,0x29,0x55,0x6c,0xe6,0x16,0x4a,0x58,0x22,0x6c,0x71,0x20,0x3, - 0xd6,0x4b,0x36,0xc9,0x58,0x1c,0x21,0x5,0xd,0x27,0x46,0x3a,0x15,0x60,0xe8,0xf6, - 0x15,0xca,0xeb,0x97,0x3f,0xa4,0x92,0x6d,0xd2,0xf0,0x74,0x90,0xe1,0x5b,0x81,0xa, - 0x4b,0x32,0xc2,0x2c,0xee,0x64,0xf7,0xde,0xe,0x7c,0x8f,0x38,0x42,0x7e,0xb6,0x51, - 0x59,0x33,0xc7,0xbb,0x8c,0x2d,0x1,0xe4,0xba,0xdd,0x72,0xd8,0xd4,0x4,0xba,0x84, - 0x46,0x23,0xaa,0x2b,0x94,0x82,0xd5,0x72,0x1d,0xdb,0xf3,0x19,0x1c,0x6a,0xa3,0xd6, - 0x80,0xf1,0xa1,0x3e,0x52,0xa9,0x44,0xe4,0x6,0x1a,0xf8,0x18,0xa6,0x41,0xbe,0xbd, - 0x9d,0x78,0x32,0x4e,0x3c,0x91,0x20,0x96,0x48,0x90,0xce,0x66,0x49,0x67,0x33,0xe4, - 0xdb,0xdb,0x19,0x1c,0x1e,0xe0,0x96,0xdb,0xf7,0xb3,0xef,0xd6,0xdd,0x98,0xa6,0x79, - 0xd,0x1e,0x9c,0x64,0x66,0x7a,0x8e,0x1f,0x7f,0xf7,0x27,0x8c,0x8f,0xf,0xb2,0xff, - 0xe0,0x81,0xab,0x20,0xd0,0x5b,0x75,0xbc,0x2f,0x79,0xeb,0xad,0x77,0x48,0xb,0xf, - 0x43,0x44,0xd4,0x2f,0xa1,0x42,0xe2,0x52,0x92,0xd4,0x35,0x12,0x9a,0x46,0x52,0xd3, - 0x49,0x6a,0x3a,0x71,0x4d,0xbb,0xec,0x97,0x24,0xa5,0x4b,0x1c,0x2f,0x64,0xba,0x1a, - 0x29,0x91,0xb4,0x89,0xc8,0xbd,0xe3,0x9a,0x81,0x20,0x24,0x29,0x37,0xa0,0x7e,0xee, - 0x22,0x73,0xa7,0x4f,0x63,0x87,0x3e,0x89,0xb6,0x3c,0xc9,0x74,0x9a,0x7c,0x3e,0x4b, - 0x22,0x19,0x67,0x69,0x71,0x89,0xe9,0x8b,0x33,0x84,0xa1,0x64,0x78,0x64,0x14,0xcd, - 0x30,0x78,0xf0,0xd3,0x8f,0xf0,0xd9,0xc7,0x3e,0xc7,0xd9,0xc9,0xb,0x7c,0xfb,0xbb, - 0x3f,0xe6,0x9d,0x63,0xa7,0xc8,0x64,0x92,0xe4,0x72,0x39,0x62,0xa6,0x81,0xa6,0x7d, - 0xd0,0x13,0x68,0xda,0x1e,0x6f,0xbc,0xfb,0x3e,0x4d,0xd6,0xf8,0xf2,0x6f,0xee,0xe2, - 0xee,0x83,0x23,0xdc,0x79,0xc7,0x8,0x77,0x1d,0x1c,0xa6,0xaf,0x27,0x8b,0xe7,0x6, - 0xd4,0x1b,0xe,0xae,0xeb,0x61,0xea,0x20,0x44,0x88,0xe7,0xd4,0xc9,0x66,0x34,0x9c, - 0x40,0x11,0x37,0x25,0x52,0x80,0x69,0xc8,0x2b,0x5e,0x92,0xa9,0x72,0x8a,0x35,0x3b, - 0xd1,0x44,0xa9,0xaf,0xc6,0xe3,0xc9,0x93,0xb5,0x4a,0x5,0x6d,0x70,0xb0,0x8d,0xae, - 0xee,0x1e,0x9a,0xb6,0xdd,0xd0,0x75,0xe3,0xd3,0x1b,0xa5,0x4a,0x67,0x4f,0xda,0x46, - 0xd3,0xc1,0xb,0x43,0x6a,0x4d,0x1f,0x5d,0x17,0xc4,0x63,0xd1,0x2c,0xa0,0x54,0x75, - 0x29,0xb4,0xa7,0x18,0xd9,0x96,0x67,0xcf,0x9e,0x22,0x7,0xe,0xc,0xf3,0xc8,0xc3, - 0xfb,0x59,0x58,0x29,0xd3,0xac,0x42,0x21,0x9f,0x26,0x16,0xb3,0xd0,0x4c,0x93,0x9e, - 0xbe,0x3e,0xfa,0xfa,0xfa,0xe9,0xe8,0xec,0xa4,0xab,0xa7,0x8b,0xde,0x81,0x5e,0x3a, - 0xbb,0x8b,0x74,0x76,0x16,0xe9,0xe8,0x2c,0x90,0x6f,0xcb,0x11,0x6f,0x9,0x1d,0x5e, - 0x4d,0x7f,0x12,0x1c,0x39,0x76,0x8a,0xa7,0x9e,0x78,0x9e,0xa1,0xde,0x76,0x76,0xee, - 0xbd,0x69,0x8b,0x3c,0x71,0x75,0x22,0x17,0xd,0xa0,0x5e,0x7f,0xfb,0x4,0x5a,0x6d, - 0x93,0x98,0xa1,0x91,0xd2,0x74,0xb2,0xba,0x41,0xd6,0x30,0xc9,0xe8,0x26,0x19,0xc3, - 0x24,0x6d,0x1a,0xa4,0x74,0x9d,0x94,0xa1,0x93,0xb2,0x74,0x52,0xa6,0x4e,0xca,0x34, - 0x50,0x21,0x5c,0x58,0xb1,0x49,0xbb,0xb0,0xa0,0x1c,0x42,0x14,0x39,0x74,0xb4,0xeb, - 0xdb,0x99,0x60,0xa,0x81,0x2c,0xd5,0x28,0x9d,0x3c,0xcd,0xfc,0xe9,0x33,0x54,0x5d, - 0x7,0x5f,0xd7,0x9,0x2,0x45,0xa1,0x50,0xa0,0xa7,0xaf,0x1b,0x85,0xa2,0x56,0xaf, - 0x71,0x76,0x72,0x92,0x99,0x8b,0xd3,0xdc,0xfb,0xb1,0xfb,0xf9,0xcd,0xdf,0xfa,0x12, - 0xf9,0xb6,0x36,0x5e,0x7b,0xfd,0x10,0x4,0x65,0xca,0x1b,0x33,0x2c,0x6e,0x56,0x59, - 0xaf,0xda,0x2c,0xad,0x6f,0x30,0x39,0x3b,0xcb,0xb1,0xa9,0x9,0x8c,0x74,0x95,0x4f, - 0x7c,0x7c,0x88,0x54,0x3a,0x3a,0xee,0x74,0x9,0xe9,0x54,0x8c,0xc1,0xa1,0x2,0x37, - 0xed,0xee,0x63,0x78,0xb8,0x48,0x47,0x21,0x81,0x69,0x8,0x6a,0x35,0x7,0xd7,0xf1, - 0x49,0xa5,0xd,0x2c,0x4b,0x47,0x93,0x2a,0xc2,0x25,0x1a,0x3a,0x7e,0x18,0xe2,0x7a, - 0x21,0x55,0x47,0x71,0xa6,0x94,0xc7,0x51,0xc6,0x79,0x94,0xfa,0x63,0x4d,0xd7,0x37, - 0x4f,0x9f,0x9e,0x40,0x1b,0x19,0x19,0xa4,0xb7,0x6f,0x88,0xf5,0xb5,0xd5,0xba,0x65, - 0x99,0xbb,0x1a,0x76,0x70,0x9b,0x19,0xae,0x53,0xcc,0xe9,0xf8,0x41,0x88,0xe3,0x84, - 0xe8,0xba,0x46,0x2a,0x69,0x90,0xca,0xc4,0xe9,0x1f,0x6c,0xe3,0xe0,0xc1,0x5e,0x86, - 0x86,0x72,0x74,0x76,0xa6,0xe9,0xe8,0xe9,0x8e,0x34,0x7f,0x8b,0x9,0xde,0x7a,0x77, - 0x9e,0x62,0x3a,0x17,0x9,0x48,0x2b,0x45,0x79,0x63,0x93,0xf9,0x73,0x17,0x98,0x9b, - 0xbc,0x48,0xad,0x5c,0xa5,0xbd,0xab,0xe3,0x3,0xb3,0xe7,0xeb,0x6e,0x7d,0x2,0xc7, - 0xf5,0xf9,0xe1,0xd3,0xaf,0xf2,0xc4,0x53,0x2f,0x72,0xcb,0x8e,0x41,0x8a,0x85,0x3c, - 0x3d,0x3,0x3,0xc4,0x5a,0x4e,0xdc,0x97,0xbf,0xf9,0x8,0xc9,0x6a,0xa9,0xc9,0xd9, - 0xb,0x4b,0x4c,0x2d,0x97,0x58,0x2f,0xd7,0x48,0x68,0x2e,0xa6,0xd4,0x30,0xa5,0x8e, - 0xd6,0xca,0x7e,0x35,0x23,0x82,0x82,0x47,0xbe,0xd5,0x92,0x30,0x26,0x50,0xa6,0x0, - 0xd,0xce,0x2d,0x35,0xc8,0x54,0x24,0x1d,0x68,0x84,0xca,0x63,0x45,0x79,0x54,0xf0, - 0x89,0xb,0x81,0x25,0x74,0xe4,0xd,0x12,0x58,0xd,0x81,0x28,0x55,0x29,0x9d,0x3c, - 0xcd,0xc2,0xd4,0x14,0x4d,0x5d,0xa2,0xc,0x83,0x72,0xa9,0x4c,0x3a,0x9d,0xe2,0xa6, - 0x5d,0x3b,0x19,0x1c,0x1a,0x64,0xf2,0xcc,0x29,0x36,0x56,0x57,0x18,0xdf,0x79,0x13, - 0x77,0xdc,0x75,0x27,0xf9,0xf6,0xe,0x56,0xab,0x8a,0xa0,0x51,0xa7,0xcd,0x9b,0xa4, - 0xb3,0x3f,0x4e,0x66,0x20,0x4f,0xcf,0x68,0x9e,0x3d,0xbb,0xdb,0xd8,0x39,0xd6,0x86, - 0x61,0x44,0xed,0x3b,0x69,0x98,0x8,0xdd,0xd8,0x82,0xc6,0xeb,0xba,0xa4,0x50,0x4c, - 0x33,0x30,0xd4,0xc1,0xd0,0x68,0x2f,0xf9,0x42,0xa4,0xc8,0x9a,0x48,0x18,0x24,0x2c, - 0x81,0xeb,0xf8,0xd8,0x2d,0x26,0x95,0xe3,0x45,0xa5,0xfb,0x6a,0xc3,0x64,0xa6,0x9e, - 0x47,0x9,0xf9,0x13,0xdb,0x6d,0xfe,0x75,0x2a,0x9d,0x9,0x16,0xe6,0xe7,0xd0,0xa6, - 0xa7,0xa7,0xe9,0xec,0x28,0x50,0x28,0x74,0x28,0xdf,0xf3,0xc,0xa4,0xfe,0xd9,0x6a, - 0x79,0xdd,0x18,0x29,0x6a,0x68,0x9a,0x4e,0xff,0x50,0x81,0x91,0xd1,0x22,0x3d,0x7d, - 0x39,0x86,0x47,0x3b,0x19,0x1c,0x2a,0x60,0x5a,0x6,0x52,0x6a,0x48,0x2b,0x83,0xb4, - 0xd2,0x48,0xdd,0xa0,0xd0,0xd7,0xc5,0x52,0xa9,0xc1,0xc2,0x85,0x4d,0x8a,0xb9,0x74, - 0xd4,0x8b,0xd6,0x4,0x46,0x32,0x46,0xb1,0xbf,0x8b,0xc1,0xf1,0x6d,0x57,0x25,0x6f, - 0xd7,0xdc,0xf2,0x17,0x56,0xf8,0x93,0xaf,0x7d,0x9b,0x23,0x47,0x8e,0xf2,0xe9,0xbb, - 0xf7,0x92,0xb1,0x2c,0x34,0xa9,0x33,0x38,0x36,0xb2,0xc5,0x7f,0x13,0x42,0x10,0x28, - 0xc1,0xc2,0x5a,0x8d,0xc3,0xef,0x9e,0xe3,0xf4,0xf9,0x65,0xe2,0xc5,0x1e,0x1e,0x79, - 0xec,0x31,0x5c,0x23,0xc6,0xa9,0xb7,0xdf,0xc4,0x9,0x7c,0xaa,0xae,0x4b,0xcd,0xf3, - 0xa8,0x7b,0x1e,0x35,0xc7,0xa3,0xde,0x74,0xa9,0x3a,0x1e,0x15,0xc7,0xa7,0xda,0xf0, - 0xa8,0xd7,0x3d,0x4e,0x2d,0xd5,0x51,0xeb,0x8a,0x2e,0x22,0x8f,0xe3,0x36,0x69,0xe1, - 0x2b,0xf,0x5b,0xf9,0x54,0x43,0x17,0x8f,0x10,0x4b,0x68,0xe8,0x42,0xde,0xb0,0x92, - 0xd1,0x0,0xb5,0xb6,0xc9,0xd2,0xfb,0x13,0x2c,0x6f,0xae,0x23,0x33,0x19,0x16,0x16, - 0x16,0x39,0x72,0xf8,0x30,0x17,0xa7,0xce,0x53,0xdd,0x5c,0x45,0x97,0x82,0xaa,0xed, - 0xb1,0x7d,0xfb,0x18,0x43,0x43,0x83,0xac,0xac,0xae,0x13,0x6f,0x1b,0x60,0x79,0xd3, - 0x43,0x4d,0xbe,0x49,0xbb,0xbb,0x4a,0x2a,0x6e,0x12,0xcf,0xb6,0x63,0xe6,0xfb,0xd0, - 0xac,0x34,0x52,0x8f,0x94,0x51,0xa4,0xd4,0xd0,0x4c,0xb,0xcd,0xb4,0xb6,0x5c,0xc4, - 0xa4,0x94,0x18,0xa6,0x41,0xa1,0x23,0xc7,0xc8,0x78,0xf,0xdd,0x7d,0x5,0x32,0xb9, - 0x14,0xb9,0xb6,0x2c,0xbe,0xeb,0xe3,0x3a,0xee,0x25,0xdb,0x29,0x2e,0x56,0x33,0x94, - 0xbc,0xa4,0x83,0xe2,0x8f,0x93,0xc9,0xd4,0xf1,0xc5,0xf9,0x59,0x9e,0x7b,0xee,0xb9, - 0x48,0x26,0x23,0x8,0x2,0x5c,0xc7,0xc1,0xf7,0xfd,0xc3,0xa6,0x61,0x4c,0x6c,0xb8, - 0xe9,0x3,0xf3,0xab,0x75,0x76,0xee,0x28,0x92,0xed,0x28,0xe2,0x4b,0xa8,0xd8,0x8a, - 0xea,0x9a,0x44,0xc4,0x22,0x32,0x68,0xa8,0x88,0xac,0x61,0x45,0x0,0x42,0x62,0x58, - 0x4d,0x8a,0xc5,0xe,0xde,0x7c,0x7e,0x92,0xe1,0xee,0x2,0x86,0xa1,0x93,0xca,0x66, - 0xe9,0xe9,0xef,0xa7,0xad,0x58,0xbc,0x21,0xf1,0x51,0x4a,0x81,0xe7,0x7,0x3c,0xf7, - 0xea,0xdb,0xfc,0x87,0xaf,0x7f,0x97,0xa4,0x2e,0xf8,0x9d,0x47,0xee,0xa2,0xbb,0xab, - 0x83,0xf2,0x42,0x89,0x64,0x7b,0xa,0xc3,0x30,0x91,0x52,0xe0,0x87,0x30,0xb3,0x50, - 0xe2,0xf4,0xe4,0x2,0xa1,0x16,0x63,0x74,0xcf,0xad,0x7c,0x72,0xcf,0x1e,0x52,0x99, - 0x8,0x2e,0x56,0x2a,0x97,0x79,0xf9,0xef,0xfe,0xb,0x76,0x73,0xd,0x3f,0xbc,0xde, - 0xb4,0x31,0xaa,0x4a,0xaa,0x1e,0x50,0xd2,0x18,0xc2,0xa4,0xa1,0x3c,0x72,0xd2,0x42, - 0x22,0x18,0xd3,0x72,0x6c,0x2a,0x9b,0xb5,0xd0,0x66,0x35,0x6c,0x50,0x51,0xe,0x45, - 0x99,0xa0,0x4d,0xc4,0x30,0x85,0xbc,0xee,0xcc,0x4b,0x48,0x49,0xdc,0xf1,0x69,0xbc, - 0x74,0x98,0x77,0xcf,0x4f,0xb3,0xfd,0xf3,0x9f,0xa1,0x7f,0x70,0x88,0xe9,0x8b,0x17, - 0xf0,0x1d,0x7,0x29,0x60,0x69,0x71,0x89,0xd3,0xa7,0xcf,0x70,0xd3,0x4d,0x3b,0x79, - 0xe8,0x53,0x9f,0xe0,0x99,0x27,0x9f,0xa1,0xf7,0xa6,0xbb,0x58,0x98,0x4a,0xe2,0x1e, - 0x7d,0x86,0xfe,0xa9,0x29,0x8c,0x5c,0x1b,0xf9,0xed,0xbb,0xc8,0xdc,0x7c,0x10,0xf, - 0x13,0xa7,0x11,0xc3,0x6e,0x84,0x38,0x4d,0x97,0xc0,0xf,0x22,0xda,0x57,0x20,0xb7, - 0xd8,0xcd,0x84,0x61,0xe4,0x47,0x10,0xba,0xa8,0x50,0x22,0x63,0x69,0xf2,0x3,0xfd, - 0x34,0x26,0xe7,0xa9,0x6d,0x94,0x8,0x85,0xce,0x9a,0x9d,0x40,0xa1,0xce,0xaa,0x30, - 0x7c,0xc3,0xf7,0x22,0x9d,0xa3,0x2d,0xb1,0xe8,0xdb,0x6e,0xbb,0x8d,0xaf,0x7c,0xe5, - 0x2b,0x8,0x21,0x96,0xbe,0xfc,0xe5,0xdf,0x7d,0x42,0x8f,0xe5,0xf,0xbc,0x7a,0x7c, - 0x9e,0xb,0x17,0x6b,0xc0,0x99,0x2d,0xd4,0xcc,0xa5,0x2,0xfa,0xa,0xe0,0xc0,0x65, - 0x95,0x82,0x94,0x82,0xe9,0x55,0x9f,0xb9,0x81,0x5e,0x76,0x8e,0xe,0x30,0xba,0x73, - 0x27,0xa9,0xf4,0xf5,0x33,0xdd,0x4b,0x82,0x46,0xb3,0xf3,0xcb,0x7c,0xfd,0xef,0x9e, - 0xe0,0x7,0x4f,0xbd,0xcc,0xce,0xa1,0x2e,0x7e,0xeb,0x53,0x77,0xd2,0xd7,0xdb,0x4d, - 0xae,0xd0,0xc1,0xea,0xdc,0x3a,0xc5,0xbe,0x6e,0x7c,0x25,0x98,0x9e,0x5e,0xe7,0xcc, - 0xb9,0x59,0x42,0x3d,0xc1,0xee,0xdb,0xef,0x62,0x74,0xf7,0xae,0xab,0xa0,0x55,0xd9, - 0x5c,0xe,0x27,0xd3,0x4d,0xa5,0x56,0x66,0xb4,0xd3,0xa4,0x58,0x4c,0x6d,0x61,0x9, - 0xa2,0xce,0xa1,0x8f,0xe7,0xba,0xac,0x96,0x5d,0xe6,0x26,0x6c,0x76,0x85,0x31,0x6c, - 0xe5,0x91,0x10,0x6,0x97,0x54,0x3,0x2c,0xa1,0xd1,0x25,0x92,0xe4,0x44,0x8c,0xb2, - 0x72,0x28,0x85,0xe,0x8b,0x41,0x9d,0xd,0x61,0x93,0x97,0x31,0x72,0xc2,0xdc,0x3a, - 0x1a,0xae,0x15,0xc,0xa6,0xd4,0xd0,0x66,0x96,0x79,0xeb,0xbf,0x7c,0x83,0xbe,0x87, - 0x1e,0xe0,0xd6,0xbb,0xee,0xc1,0x32,0x34,0x36,0x37,0x96,0x18,0xe9,0x1d,0xe1,0xed, - 0xb7,0x8e,0x30,0x3c,0x3c,0x44,0x67,0x57,0x27,0xfb,0x6f,0xd9,0xcf,0xd1,0xf7,0x8e, - 0xd2,0xbf,0xf3,0x36,0x26,0xed,0x26,0x6c,0xbc,0x44,0xaf,0xda,0x60,0xf6,0xf5,0x57, - 0x79,0xe9,0x6f,0xdf,0x60,0xa5,0x1a,0x10,0x78,0x2d,0xc1,0x69,0x3f,0x68,0xc9,0xe7, - 0x5e,0x9f,0x83,0xf1,0x81,0x27,0x63,0x24,0xee,0x19,0xd3,0x21,0xd7,0xdb,0x4d,0x33, - 0x30,0x40,0x84,0x4f,0x2f,0x2c,0x5c,0x9c,0xfb,0xad,0x2f,0xfd,0x16,0xcf,0x3e,0x57, - 0xba,0x72,0xe2,0x3f,0x32,0xf2,0x0,0xf,0x3d,0x34,0x4a,0xa9,0x54,0x3f,0x10,0x2a, - 0xf5,0xa3,0xd9,0x73,0x13,0xdd,0x45,0xbf,0x84,0xa9,0x6b,0x97,0x2d,0x32,0x5b,0xb3, - 0x72,0x21,0xa3,0xa0,0x10,0x97,0x77,0x9a,0x84,0x60,0xb5,0xea,0xb1,0x7b,0xe7,0x1e, - 0xfe,0xe9,0x17,0x1e,0x66,0x64,0xe7,0xce,0xd6,0x7c,0x59,0x5d,0xcd,0x9,0x94,0x91, - 0xf6,0xde,0xd3,0xaf,0x1c,0xe6,0x1b,0x7f,0xf7,0x4,0x93,0x17,0xe7,0xb8,0x77,0xff, - 0x76,0xfe,0xc9,0xc7,0x6f,0xa3,0xbf,0xbf,0x87,0xc1,0xd1,0x31,0x5e,0x7c,0xe6,0x55, - 0x54,0x60,0x53,0x18,0xdd,0xc3,0xe2,0x4a,0x5,0x23,0x9e,0x62,0xef,0xc1,0x3b,0xd8, - 0x76,0xd3,0x4e,0xcc,0x9f,0x5a,0xf8,0xd5,0x95,0x55,0x9e,0x7a,0xfa,0x39,0x7e,0xf8, - 0xe4,0x4b,0x9c,0xba,0xb8,0x41,0x67,0x2a,0xe0,0xdf,0xfc,0x37,0xfd,0x74,0xe4,0x35, - 0x4a,0x1b,0x25,0x5c,0x2f,0xc0,0xf5,0x3c,0x6a,0x8d,0x75,0x3c,0xdf,0xe3,0xf1,0xe7, - 0x96,0x69,0x1c,0x71,0x48,0xb,0x49,0x53,0xf9,0xe4,0xa4,0x75,0x5d,0x46,0x93,0x8f, - 0xa2,0x1e,0x7a,0xd4,0x94,0x8b,0x43,0x80,0xab,0x42,0xc,0x21,0x49,0xb,0x93,0xb4, - 0x30,0xb1,0x84,0x44,0x72,0x15,0x9a,0x82,0x40,0x85,0x4c,0xa8,0x1a,0x8d,0xee,0x22, - 0xbe,0x82,0xdb,0xf6,0x6e,0xe7,0xf6,0x7,0x3e,0x85,0x34,0xe2,0x8c,0x8e,0x8f,0x70, - 0xc7,0x1d,0x7,0x71,0x5d,0x97,0x23,0x87,0xdf,0x61,0x75,0x65,0x95,0x20,0x84,0xb7, - 0x9f,0xff,0x7b,0xb2,0xab,0x47,0xe8,0x49,0x9,0x5e,0x3d,0xdf,0xa0,0xd4,0xc,0x5b, - 0xcf,0xf7,0x3,0x5b,0x9a,0xcb,0x17,0xee,0xc3,0x9a,0x68,0x42,0x4a,0xb4,0xee,0x71, - 0x82,0x58,0x7e,0x4d,0xc0,0xe7,0x35,0x4d,0x7f,0x3d,0x95,0x8a,0xf3,0x17,0x7f,0xf1, - 0x17,0x57,0x3a,0x86,0x6c,0x6c,0xdc,0x8a,0xa6,0x4f,0xe2,0xfa,0xd6,0xfb,0xa6,0xa1, - 0x3f,0x9f,0x6c,0xeb,0xfc,0x72,0x69,0x6e,0x83,0xbc,0x64,0x6b,0x86,0x7d,0x89,0x28, - 0x22,0x44,0xe4,0x60,0xad,0x5a,0xa3,0x53,0x37,0x88,0xa4,0xdd,0x94,0x34,0xf0,0x7c, - 0x38,0x7e,0xf6,0x2,0xef,0x9e,0x3c,0x47,0xba,0xbd,0x9d,0x7c,0x3e,0xbf,0xe5,0x9a, - 0x79,0xe9,0xff,0x94,0x2a,0x35,0xe,0xbd,0x73,0x82,0xbf,0xfd,0xf1,0x73,0xbc,0x7d, - 0xf4,0x14,0x4a,0x29,0x1e,0xbe,0x6b,0x2f,0x9f,0xbd,0xff,0x56,0x6,0x87,0x87,0xe8, - 0x1f,0x19,0xe6,0xbd,0x77,0x4e,0xf0,0xca,0xb,0x6f,0x30,0xb6,0x67,0x17,0xa6,0x2d, - 0xb9,0xf3,0x53,0x9f,0x61,0x70,0x7c,0xec,0x2a,0x28,0x75,0xb3,0xd1,0xe0,0x85,0x17, - 0x5f,0xe1,0x9b,0x7f,0xf3,0x43,0xde,0x9f,0x5c,0xc1,0x93,0x49,0x84,0x9e,0x65,0xc3, - 0x75,0x78,0xe3,0xe4,0x1a,0xf5,0xb5,0x45,0x4e,0x9f,0x99,0xc3,0xf5,0x82,0xe8,0x2d, - 0xa,0x2,0xca,0x4d,0x45,0x76,0xcd,0x60,0x58,0xc6,0x28,0x85,0x36,0x69,0x61,0xde, - 0x90,0xb2,0xae,0x21,0xc8,0x4a,0x93,0x2c,0x26,0x21,0xe0,0xa8,0x80,0x9a,0x72,0xa9, - 0x28,0x97,0xf5,0xb0,0x89,0x21,0x24,0x59,0x61,0x91,0x93,0x16,0x6,0x1f,0x1c,0x11, - 0x9a,0x90,0x8c,0x92,0xe0,0xd4,0xe2,0x32,0x2b,0x84,0xcc,0x17,0x32,0xd4,0xcb,0xeb, - 0xec,0xdc,0x7f,0x7,0x27,0x8e,0x4f,0xb0,0x6b,0xd7,0x4d,0xa4,0xd3,0x69,0xf6,0xdf, - 0xba,0x8f,0x93,0xef,0x4f,0xb0,0xba,0xb2,0xc6,0x9e,0xbb,0x3f,0xcd,0x53,0x3f,0xaa, - 0x71,0xfc,0xc2,0x69,0x64,0x10,0xe2,0x2b,0x9f,0x30,0x8c,0x9e,0xb7,0xe3,0x47,0x7e, - 0x83,0x9a,0x94,0x98,0x9a,0x16,0x79,0x39,0x88,0xf,0x90,0xbf,0xe1,0x56,0xa7,0x45, - 0x6c,0x59,0xdd,0x89,0x78,0x92,0x40,0x4b,0x22,0x95,0x7a,0x39,0xc,0xc3,0xf7,0x9a, - 0x4d,0x9b,0xde,0xde,0xae,0xab,0x31,0x3f,0xbf,0xf1,0x1b,0xbf,0x41,0x36,0xd3,0xc6, - 0x66,0x79,0x13,0x4d,0xca,0x4f,0x7b,0x41,0xf0,0xed,0x85,0x73,0x27,0x32,0x1d,0x34, - 0xb6,0x4,0xf,0x2e,0x2d,0xfc,0x55,0xc2,0x4c,0xbe,0x4f,0xd3,0x73,0x31,0x75,0x8d, - 0x94,0x65,0xd1,0x70,0x3,0xa,0xd9,0x38,0x3,0xfd,0xbd,0xa4,0x72,0x45,0x52,0xc9, - 0x14,0x86,0x65,0x51,0xb5,0x3d,0x96,0xd6,0x2b,0x9c,0x9e,0x9c,0xe6,0xf4,0xe4,0x45, - 0xea,0x4d,0x87,0x6c,0x2a,0xce,0xa3,0xf7,0xee,0xe7,0xd1,0x7,0x6e,0x8f,0x74,0xf2, - 0xa5,0xc1,0xc5,0x99,0x25,0xce,0x9c,0x5f,0x66,0xdb,0xde,0x5b,0xb8,0xe5,0xbe,0xfb, - 0xe8,0xe8,0xe9,0xb9,0xa2,0xf7,0x7f,0xa9,0x6f,0x7e,0xe6,0xf4,0x19,0xfe,0xbf,0x6f, - 0x7c,0x87,0xe7,0x5e,0x3f,0x41,0xdd,0x37,0x91,0xba,0x75,0xd9,0x20,0x3c,0x20,0x53, - 0x3d,0x4e,0xda,0x99,0xff,0xa0,0xf5,0x2a,0xc0,0xd,0x40,0x94,0x75,0xf6,0xa9,0x14, - 0x9e,0xa,0xf0,0x9,0x6f,0x18,0x0,0x37,0xe2,0x3a,0x86,0x80,0xad,0x7c,0x4a,0xad, - 0x63,0x42,0x43,0xd2,0xa9,0x25,0xc8,0x8,0x73,0xeb,0x78,0x10,0xc0,0x7a,0x68,0x73, - 0xc6,0xaf,0x20,0x8a,0xed,0x3c,0xf6,0xc5,0x5f,0xe7,0xae,0x87,0x1e,0x65,0xfa,0xc2, - 0xc,0x3,0xc3,0x3,0xdc,0x73,0xcf,0x5d,0x11,0x6a,0xc9,0xb6,0x39,0x73,0xea,0x1c, - 0x8b,0xf3,0x8b,0xac,0xac,0xae,0xf2,0xd2,0xcb,0x2f,0x11,0xf7,0x36,0xa8,0x2c,0x9c, - 0xa3,0x52,0x2a,0x63,0x6a,0x92,0xba,0xe3,0xe1,0x7,0x21,0x9,0x33,0x52,0x4b,0xf9, - 0xe9,0x40,0xbd,0xfc,0xa8,0x95,0x42,0xe0,0x4,0x1,0xb2,0x38,0x44,0xac,0xbd,0xb7, - 0x2e,0x84,0xfa,0xa7,0xb9,0x5c,0xdb,0xf7,0x36,0xd6,0x37,0x38,0x71,0xe2,0x28,0xa7, - 0x4f,0x9f,0xde,0x12,0xc6,0x6,0x60,0x62,0x62,0x2,0x4d,0x17,0x14,0x8b,0x9d,0xd8, - 0x76,0x73,0xd9,0xd0,0x8d,0x3,0x6e,0xc8,0xb8,0x5f,0xdb,0x24,0x69,0xea,0x51,0x92, - 0x71,0x1d,0xfa,0x86,0x2e,0x65,0xcb,0x37,0x37,0x52,0xff,0x4c,0x9a,0x1a,0x8f,0xed, - 0xb5,0xd8,0x9e,0xa9,0xb3,0x3e,0x37,0x4b,0xbc,0x39,0x47,0x79,0xe9,0x3c,0xdf,0x7c, - 0xf6,0x38,0x87,0x8e,0x9d,0x65,0x79,0x6d,0x83,0x50,0x29,0x86,0xba,0xb,0x7c,0xe1, - 0x81,0x5b,0xb9,0x6d,0xf7,0x76,0x9a,0x9e,0xce,0xd2,0xa6,0x83,0x63,0xe4,0x18,0xdc, - 0x7f,0x17,0xf,0x3c,0xf6,0x5,0x6e,0xba,0xf5,0x56,0x52,0xd9,0xec,0x55,0x3a,0x4, - 0xe5,0x72,0x99,0xef,0x7c,0xf7,0x7,0xfc,0x9b,0x3f,0xfb,0x2b,0xe,0x9f,0x5a,0xc6, - 0x97,0x89,0xab,0x6d,0x68,0x85,0x44,0x5,0x2e,0xa6,0xb7,0x89,0xeb,0x47,0x58,0x46, - 0xdb,0xd,0x71,0x1a,0x92,0x9d,0x61,0x92,0xa4,0xd0,0xa8,0x29,0x8f,0x94,0x34,0x91, - 0xfc,0x7c,0xd3,0x4a,0x41,0x34,0x67,0x48,0xb,0x93,0x8c,0xb0,0x8,0x8,0x59,0x9, - 0x1b,0xd4,0x95,0x8f,0x2e,0x24,0x66,0xcb,0x65,0xd5,0x12,0x1a,0x1e,0x3e,0xf5,0x46, - 0x9d,0x99,0xd5,0xd,0x46,0x77,0xec,0x60,0x6c,0x7c,0x3b,0x47,0x8f,0x1e,0x63,0x6c, - 0x7c,0x8c,0x58,0xcc,0x42,0xd7,0x75,0xa,0x85,0x76,0x42,0x15,0x12,0xf8,0x1,0xc5, - 0x62,0x7,0x8e,0x88,0xd1,0xb5,0x6d,0x2f,0x76,0xa8,0x51,0xa9,0x54,0x70,0xed,0x26, - 0x86,0xa6,0x45,0xa,0x26,0xd7,0xb8,0x97,0x4b,0x3b,0xb4,0xd6,0x3a,0xa7,0x3d,0x2d, - 0x8e,0x51,0xe8,0x47,0xd3,0xb4,0x57,0x7c,0x2f,0xf8,0xb7,0xa6,0x61,0x36,0x5f,0x7b, - 0xed,0x25,0xa6,0xa6,0xa6,0x3e,0xa8,0xbc,0x7e,0xda,0xa5,0xa3,0xd8,0x1e,0xa7,0xb3, - 0x6b,0xd0,0xa9,0xd7,0x6b,0x8e,0x61,0x5a,0x9f,0x59,0x2f,0x95,0x4c,0xc3,0xaf,0x23, - 0x5b,0xe7,0xf6,0x8d,0xae,0x40,0x85,0x98,0x9a,0x4e,0xda,0x92,0xdc,0x31,0x6c,0x91, - 0x8e,0x69,0x4,0x1e,0x8,0x2b,0xe,0x23,0xf7,0xa2,0xe7,0x87,0xb8,0x30,0x35,0x19, - 0x79,0xe4,0xb4,0x65,0xb9,0x6f,0xef,0xe,0x12,0xa9,0x22,0x66,0xe7,0x36,0xc6,0xef, - 0x7c,0x80,0x3,0x9f,0x7c,0x98,0x1d,0xb7,0x1e,0xa0,0xd0,0xd5,0x85,0x71,0x8d,0xce, - 0xa0,0xe7,0x7a,0xbc,0xf5,0xd6,0xdb,0xfc,0xdb,0x3f,0xfd,0x1a,0xdf,0x7e,0xfc,0x10, - 0x1b,0x4d,0x3,0xa9,0x19,0xd7,0x59,0x3e,0x41,0x28,0x34,0x4c,0x7f,0x93,0x94,0x74, - 0xb0,0xc,0x49,0xa0,0x4,0x5d,0x76,0x8c,0x7e,0x61,0xd1,0x54,0x91,0x16,0x90,0x25, - 0x7e,0x7e,0x49,0xba,0x2b,0x4a,0x58,0x21,0x48,0x4b,0x93,0xa4,0x30,0xa8,0x28,0x97, - 0x95,0xa0,0x81,0x12,0x82,0x64,0xab,0xab,0x68,0x8,0x8d,0x46,0xe8,0x50,0x59,0x5b, - 0xa1,0xe4,0x3a,0x7c,0xfc,0x53,0xf,0x33,0x3f,0x37,0x8f,0xeb,0xb9,0xc,0xd,0xd, - 0x46,0x6f,0xad,0x26,0x69,0x6b,0x6b,0xc3,0x8a,0x59,0x84,0x41,0x80,0xa1,0xeb,0x54, - 0x6b,0x75,0xf6,0xec,0xbf,0x8d,0x9e,0x91,0x9b,0x68,0x84,0x1a,0xf5,0x5a,0x1d,0xe5, - 0xb9,0x48,0xa1,0xae,0x73,0xfe,0x2b,0x9c,0x20,0x52,0x1f,0x15,0xb9,0x6e,0x8c,0x54, - 0xce,0x46,0xa9,0x7f,0x99,0xc9,0x64,0xf,0x77,0x14,0x8b,0xbc,0xfb,0xde,0x3b,0xd4, - 0x6a,0xb5,0x6b,0x7,0x40,0xad,0x56,0x23,0x16,0x4f,0x53,0x2c,0x76,0xd2,0x6c,0x36, - 0xe6,0x75,0x5d,0xbb,0xd5,0x57,0xda,0xf8,0xb6,0x41,0x83,0x3d,0x23,0x31,0xd6,0x36, - 0xbc,0x2d,0x44,0xef,0xb5,0x42,0x30,0x8,0x43,0x4c,0x5d,0x23,0x6e,0x4a,0xf6,0xf6, - 0x9a,0x18,0x12,0x4e,0x95,0x12,0xa8,0x9b,0x7f,0x93,0xb1,0x83,0xf,0x73,0xe6,0xd4, - 0x29,0x66,0xa7,0xa7,0xd9,0xb7,0x67,0x2f,0xf,0x3c,0xf0,0x49,0xf6,0x3d,0xf0,0x29, - 0xee,0x7b,0xec,0xd7,0xb9,0xfb,0xc1,0x4f,0xd2,0x3b,0x38,0x80,0x15,0x8b,0x5d,0xf3, - 0x4b,0x29,0xa5,0x98,0x9b,0x9d,0xe3,0x2f,0xff,0xf2,0x5b,0xfc,0xbb,0xaf,0x7d,0x87, - 0x89,0xd9,0x3a,0x4a,0x4b,0xdc,0x20,0x1,0x6a,0x65,0xaa,0xd2,0x20,0xf4,0x1d,0x84, - 0xb3,0x89,0xeb,0x7,0x48,0x5b,0x67,0x7b,0x98,0x8c,0x8,0xaf,0xf8,0x24,0x85,0x71, - 0xdd,0x5d,0xed,0xe7,0xbd,0x4c,0xa1,0x91,0x95,0x16,0x4a,0x28,0x56,0x82,0x8,0xa1, - 0x98,0x92,0x26,0x96,0xd0,0x8,0x51,0x38,0x22,0x60,0x65,0x61,0x81,0x74,0x67,0x27, - 0x43,0xc3,0xa3,0x9c,0x3a,0x7d,0x9a,0xb1,0xb1,0xd1,0xc8,0x68,0x12,0x10,0x52,0x90, - 0xcd,0x65,0xc8,0xb7,0xe7,0x31,0x8d,0x48,0x82,0x67,0x72,0x72,0x92,0x42,0xa1,0xc0, - 0x81,0xdb,0xef,0xa4,0x7b,0x68,0x9c,0x86,0x32,0xa8,0x54,0xaa,0x8,0xaf,0x79,0xc5, - 0x60,0xd1,0x30,0x4,0x37,0xef,0x4e,0xf3,0xf1,0xcf,0x1c,0x24,0x5d,0x68,0x67,0xb1, - 0x16,0x3,0xa9,0xbd,0xec,0xfb,0xc1,0xff,0x2b,0xa5,0x6c,0xbe,0xf9,0xe6,0x6b,0x57, - 0xbc,0xfd,0x57,0x5,0x0,0xc0,0xf2,0xf2,0x32,0xc7,0x8e,0xbd,0xc7,0xf6,0xed,0x3b, - 0x1d,0xa0,0xaa,0xeb,0xe6,0x67,0x82,0xa0,0x11,0xdb,0x3f,0xaa,0x33,0x79,0xb1,0x11, - 0x99,0x29,0x8b,0x6b,0x27,0x4b,0x5e,0xe0,0x63,0x68,0x3a,0xb9,0x84,0xc6,0xad,0x3, - 0x26,0x15,0x47,0x60,0xdf,0xf4,0x1b,0xec,0xbd,0xeb,0x41,0xe6,0x2f,0x5e,0xa0,0xb2, - 0x59,0xe2,0x81,0x87,0x1e,0xe6,0xa1,0x47,0x7f,0x8d,0x7b,0x1e,0xfc,0x4,0xb7,0xdc, - 0x71,0x80,0xce,0xae,0xe,0xb4,0x1b,0xd0,0xcc,0x1b,0x8d,0x6,0xaf,0xbd,0xf2,0x6, - 0xff,0xee,0x3f,0x7e,0x9d,0x9f,0xbc,0x3a,0x41,0x3d,0x4c,0x5c,0x57,0x43,0xf0,0x12, - 0x92,0xd5,0x77,0xea,0x34,0xcb,0x2b,0x34,0x36,0x97,0x68,0x34,0xea,0x54,0xeb,0x55, - 0x9a,0xb6,0xc7,0x78,0x98,0xa2,0x28,0x74,0x42,0x14,0xba,0x90,0x68,0x48,0xfe,0x21, - 0x2e,0x89,0x20,0x2d,0x4c,0xc,0xa1,0xb1,0xa6,0x9a,0x4,0x28,0x52,0xc2,0x24,0x2e, - 0x75,0xea,0xca,0xc3,0xf7,0x1d,0x26,0x4e,0x4e,0xd0,0xbd,0x6d,0x94,0x44,0x22,0x49, - 0xb5,0x5a,0x65,0x74,0x6c,0xdb,0x15,0x9f,0x11,0x8b,0x59,0x14,0x3b,0xa,0x14,0x8b, - 0x5,0x12,0xf1,0x4,0x13,0xa7,0x4e,0xb3,0xba,0xba,0xc2,0xe0,0xc0,0x0,0xbb,0xf7, - 0xee,0xa3,0xbd,0x77,0x88,0x99,0x8b,0x53,0x28,0xbb,0xd6,0xea,0xae,0x46,0xce,0xbe, - 0x77,0xdf,0xde,0x46,0x7b,0x46,0x70,0x7c,0x56,0x63,0xbd,0x26,0x6b,0x2,0xfe,0x28, - 0x9b,0xcd,0xbe,0xf3,0xad,0x6f,0x7d,0x83,0xe5,0xe5,0xe5,0xab,0x77,0xae,0x6b,0x7d, - 0x81,0x2f,0x7d,0xe9,0x4b,0xd4,0xeb,0x36,0x61,0xa8,0x66,0x75,0x5d,0x1b,0x2f,0x37, - 0xb8,0x79,0x61,0x76,0x19,0xb7,0xe9,0x61,0x68,0x72,0xab,0xf4,0xbb,0xbc,0xba,0xbb, - 0x54,0x11,0x18,0x9a,0x46,0x36,0xae,0xb1,0xaf,0xcf,0xa4,0xe2,0xe9,0x9c,0x5a,0xcb, - 0x70,0xf6,0xb9,0x57,0x70,0x36,0x6b,0xec,0xbe,0xeb,0xe,0x6e,0xda,0xb3,0x8b,0xdd, - 0x37,0xef,0xa2,0xa7,0xaf,0x27,0x42,0x12,0x5f,0x8f,0x3,0x10,0x84,0xcc,0xcd,0xce, - 0xf1,0xd7,0x7f,0xfd,0x5d,0xfe,0xfc,0x9b,0x3f,0xe4,0xf4,0x7c,0x3,0xa5,0xc5,0x6f, - 0x58,0xf6,0xf8,0x4e,0x83,0xea,0xda,0x2c,0xd5,0x95,0x8b,0x34,0x2b,0x6b,0x78,0x76, - 0xd,0xcf,0xf5,0x90,0x4,0x74,0xa,0xc9,0x4e,0x91,0xa4,0x65,0xe1,0xf8,0x73,0x9f, - 0xfb,0x3f,0xcb,0x95,0x14,0x3a,0x9,0x61,0xb0,0x1c,0x36,0x8,0x8,0xc9,0x8,0xb, - 0x53,0x68,0x54,0x95,0x87,0x5b,0xaf,0x31,0xb3,0xb4,0xc4,0xfe,0xdb,0xef,0x60,0x71, - 0x69,0x99,0x9e,0xde,0x2e,0x32,0xad,0x66,0xd6,0xe5,0x13,0xc1,0x54,0x3a,0x45,0x4f, - 0x6f,0xf,0xbd,0x3d,0x3d,0x6c,0xac,0xaf,0x73,0x72,0x62,0x2,0xdb,0xb1,0xe9,0xeb, - 0xed,0x65,0x79,0x6d,0x8d,0xea,0xd2,0x45,0xc,0x5d,0xa0,0x69,0xe0,0xfa,0x1,0x8e, - 0x1d,0x70,0x66,0x3e,0x64,0x72,0x3d,0x6,0x88,0x1f,0x5,0x81,0xfa,0xe3,0x66,0xd3, - 0x76,0x77,0xec,0x18,0xe7,0xcc,0x99,0x33,0x1f,0x2d,0x0,0xbe,0xf0,0x85,0x2f,0xf0, - 0xad,0x6f,0x7d,0x9b,0xb1,0xb1,0x11,0x5f,0x29,0xb5,0xa0,0xeb,0xc6,0xa7,0xe6,0x57, - 0x1b,0xd9,0x14,0x36,0x9,0x53,0xb6,0xda,0xbc,0x51,0x10,0x5c,0x22,0x1f,0xa8,0x16, - 0x7,0xde,0xd0,0x75,0xb2,0x71,0x8d,0x9b,0xfb,0x4c,0x96,0xaa,0x8a,0x43,0xcf,0x9e, - 0xa3,0x78,0xae,0x41,0x71,0xda,0xc4,0x69,0x53,0x7c,0xfc,0x8b,0x9f,0x25,0x93,0xc9, - 0xdc,0x70,0x21,0xab,0x95,0x2a,0xef,0xbc,0xfd,0x2e,0x7f,0xfe,0x9f,0xbf,0xc5,0xf, - 0x5e,0x38,0x46,0xd9,0x35,0x11,0x52,0xbf,0x6e,0xf7,0x23,0xc,0x3c,0xea,0x1b,0x8b, - 0x54,0x96,0xa7,0x70,0x1b,0x65,0xa4,0x61,0x12,0x4b,0xb7,0x93,0xc8,0x76,0x60,0x25, - 0x73,0x8,0xcd,0xa4,0xcb,0xb3,0xe9,0xc7,0xe0,0x57,0x7d,0x59,0x42,0xc3,0x14,0x1a, - 0x4b,0x61,0xa4,0x9f,0xd0,0x26,0x63,0x78,0x84,0xd8,0xf8,0x94,0x36,0xd6,0xa9,0x85, - 0x8a,0x9d,0xbb,0xf6,0x30,0x3f,0x3f,0xcf,0xf6,0x1d,0xe3,0x5b,0xbb,0x61,0x24,0xf9, - 0x1e,0x9d,0xf3,0xba,0xae,0xd1,0x5e,0x68,0x63,0x68,0x78,0x90,0x4c,0x3a,0xcb,0xea, - 0xea,0x1a,0xd3,0x33,0x33,0x4c,0x4d,0x4d,0x21,0x9a,0xab,0x58,0x91,0x69,0x7b,0xc4, - 0xd7,0xd8,0xc,0x59,0xe,0x3b,0x90,0xfe,0x64,0x7e,0x39,0x0,0x0,0x11,0xf2,0x49, - 0x44,0x41,0x54,0x7a,0x6c,0x9,0xd4,0xbf,0x88,0xc5,0xac,0x73,0x2f,0xbf,0xf2,0x3a, - 0xe3,0x63,0x23,0x4c,0x4c,0x4c,0x7c,0xb4,0x0,0x78,0xf9,0xe5,0x97,0xf9,0xf5,0x5f, - 0xff,0x1c,0xd5,0x6a,0x1d,0x8,0x16,0xa5,0xd4,0x52,0x9a,0x61,0xdd,0x5f,0x2a,0x97, - 0x45,0xd6,0x88,0x44,0x19,0x23,0xe5,0x8f,0x2d,0x33,0x2f,0x14,0xe0,0x6,0x57,0x6, - 0xc0,0xf9,0x19,0x9b,0xcd,0x73,0x1,0xdb,0xe3,0x3b,0xe8,0x90,0x45,0xea,0x41,0x8d, - 0xd1,0x4f,0x1f,0xbc,0x2e,0x4c,0xcc,0xf7,0x7d,0xe6,0x66,0xe6,0x78,0xe6,0xe9,0x17, - 0xf8,0xda,0x37,0x7f,0xc8,0x91,0xb3,0xeb,0xf8,0x32,0x76,0xc3,0x60,0x71,0x6a,0x9b, - 0x94,0x97,0x26,0x71,0x6a,0x9b,0x58,0xc9,0x1c,0xe9,0xe2,0x0,0xa9,0xc2,0x0,0x89, - 0x6c,0x7,0x66,0x32,0x8b,0x99,0xcc,0x62,0xa5,0xa,0x34,0x43,0x8f,0x74,0xb3,0x4c, - 0xfa,0x97,0x94,0xf4,0xfd,0xcc,0x41,0x80,0xc6,0x62,0xd8,0x40,0x47,0x92,0x93,0x16, - 0x15,0x15,0xb1,0x77,0xe7,0xe6,0x67,0xe9,0x1a,0x18,0x44,0x37,0x63,0x20,0xa0,0xb7, - 0xb7,0x77,0xeb,0x59,0xac,0xaf,0x6d,0x60,0x59,0x66,0xcb,0xbe,0x4f,0x10,0x4f,0xc4, - 0xe9,0xee,0xed,0xa2,0xab,0xab,0x8b,0x74,0x2a,0x8d,0x61,0xc5,0x58,0x9c,0x99,0x42, - 0xb,0x1a,0xad,0x5e,0xad,0xc0,0x89,0x15,0x50,0xb1,0x9c,0x12,0x82,0xff,0x14,0x4, - 0xc1,0x5f,0x25,0x93,0xc9,0x70,0x61,0xe1,0x22,0x87,0xe,0x1d,0xbe,0x76,0xf2,0x7a, - 0xbd,0x9b,0x3e,0x71,0x62,0x82,0x47,0x1f,0x7d,0x94,0xa5,0xa5,0x35,0x25,0x84,0x38, - 0xa7,0x1b,0xc6,0x41,0x47,0xc9,0x41,0xaf,0x5e,0x26,0x6d,0xca,0x2b,0xda,0x8f,0x61, - 0x18,0xc9,0xae,0x7b,0x81,0x8f,0xae,0x69,0xe4,0xe2,0x1a,0xe3,0x1d,0x6,0xef,0xbc, - 0xd7,0x20,0x55,0x6f,0x63,0x38,0xb6,0xd,0x5d,0xea,0x38,0x8d,0x6,0xf9,0xfb,0xc6, - 0x28,0xf4,0xf6,0x5c,0xf5,0xf3,0xea,0xb5,0x3a,0xa7,0x4e,0x9e,0xe6,0xc7,0x3f,0x7e, - 0x8a,0xbf,0xfe,0xf1,0xab,0x4c,0x6f,0x4,0x88,0x1b,0x64,0xf8,0x2a,0xc,0xa8,0xad, - 0xcd,0x52,0xdb,0x98,0xc3,0x8c,0x67,0xc8,0x74,0xe,0x93,0xcc,0x77,0xa3,0xc7,0x52, - 0xd7,0x2c,0x9,0xc3,0x58,0x86,0xb2,0xbd,0x49,0xd1,0x73,0xb0,0x84,0xfc,0x95,0x7, - 0x41,0x4c,0xe8,0x48,0x4,0x4b,0x61,0x83,0x94,0x34,0xb0,0x84,0x4e,0x9,0xf,0x3c, - 0x8f,0x85,0x85,0x5,0x76,0xdf,0x7a,0x80,0xf9,0x85,0x45,0x6,0x6,0xfa,0x23,0xf7, - 0x70,0x4d,0xa3,0x51,0xab,0x33,0x37,0x3b,0x4f,0x3a,0x9d,0x46,0x6f,0x95,0x7e,0x9a, - 0xa6,0x91,0x6f,0xcb,0xd1,0xdd,0xd3,0x45,0x47,0x67,0x17,0xc7,0x8e,0x1c,0xc2,0x2e, - 0x2d,0x45,0x8c,0x1f,0x91,0xc0,0x49,0x74,0x22,0xa4,0xf6,0xb6,0x52,0xfc,0x6f,0x4a, - 0xa9,0xcd,0x78,0xdc,0xe4,0x8d,0x37,0xde,0xbc,0x7e,0xf5,0x72,0xa3,0x9b,0x3e,0x7c, - 0xf8,0x30,0xe7,0xcf,0x4f,0x31,0x30,0x30,0x54,0x95,0x52,0xac,0x18,0xa6,0xf5,0x50, - 0xa9,0xe1,0x24,0x62,0xa1,0x8d,0xa5,0xcb,0xad,0x0,0x50,0x2a,0xc2,0xa9,0xbb,0x81, - 0x8f,0x2e,0x25,0xed,0x29,0x83,0x36,0xb,0x4e,0xbf,0x1f,0x30,0x62,0x8c,0xd2,0xa6, - 0x17,0x88,0x8c,0x1f,0x7c,0xd8,0x9e,0x65,0x78,0xff,0xee,0x2b,0x92,0x87,0xf5,0xf5, - 0xd,0xde,0x7b,0xe7,0x28,0x3f,0xf8,0xd1,0x53,0xfc,0xf0,0xa5,0xf7,0x29,0x39,0xc6, - 0xf5,0x4b,0x4e,0x21,0x8,0xbc,0x26,0x95,0xe5,0xb,0x4,0x6e,0x33,0x5a,0xf8,0xb6, - 0x6e,0x34,0x23,0xc6,0x8d,0x8e,0x75,0x21,0x75,0x1c,0x2b,0x45,0xb3,0xb1,0x4a,0x47, - 0x4b,0x1,0xe5,0x57,0x7d,0x25,0x84,0x41,0x80,0x62,0x35,0x6c,0x52,0x94,0x71,0x4a, - 0x4,0x34,0x85,0x22,0x2c,0x97,0xa9,0x6,0x1,0xe3,0x3b,0x77,0x33,0x3d,0x33,0xc3, - 0x8e,0x9d,0xdb,0xd1,0x34,0x8d,0x78,0x22,0x4e,0xb9,0x54,0x61,0xe6,0xe2,0xc,0xa9, - 0x54,0x92,0xd8,0x65,0xed,0x6f,0xc3,0x30,0x30,0x2c,0x93,0x57,0x9f,0x79,0x9c,0xc6, - 0xfa,0x3c,0x81,0xd0,0xa9,0xc5,0x3a,0x51,0x7a,0xbc,0x4,0xea,0x7f,0x15,0x42,0x1c, - 0x7a,0xf2,0xc9,0x9f,0x70,0xe2,0xc4,0x89,0xf,0x49,0x58,0x3f,0xe4,0xea,0xef,0xef, - 0x26,0x9f,0xcf,0xe3,0xfb,0xde,0xd3,0x2,0xbe,0x96,0xcc,0x77,0x6,0x8b,0xb6,0x8e, - 0x77,0x19,0xf3,0xf0,0xf2,0x67,0xa9,0x5a,0xa5,0xcc,0xec,0xa2,0x4f,0xcc,0x4b,0x52, - 0xd0,0x8b,0x5b,0x6f,0xad,0xe3,0xd5,0x99,0x39,0x35,0x41,0x10,0x6,0x5b,0x7d,0x87, - 0x99,0xe9,0x19,0x5e,0x79,0xf1,0x15,0xfe,0xfa,0x3b,0x3f,0xe6,0xf1,0x37,0xce,0x52, - 0xf,0x3e,0x7c,0xcb,0x2f,0x2d,0x4e,0xa2,0x99,0x31,0x72,0xbd,0x3b,0x30,0x93,0xb9, - 0xf,0x78,0x6c,0x37,0x66,0x21,0x22,0x63,0x59,0x96,0x8b,0xdb,0x38,0x23,0x83,0xcb, - 0x48,0x14,0xbf,0xda,0xab,0x53,0x26,0x88,0xb,0x9d,0xe9,0xa0,0x46,0x5,0x85,0x8b, - 0x20,0x26,0x5,0x93,0x87,0xdf,0x60,0x66,0xea,0x1c,0x95,0x52,0x85,0x57,0x5e,0x79, - 0x6d,0x2b,0x9,0x1c,0x19,0x1d,0x26,0x99,0x4a,0xf2,0xde,0x91,0x63,0xcc,0xce,0xcc, - 0x5d,0x21,0xae,0xbd,0xbe,0xba,0x4a,0x65,0x7d,0x9,0x84,0xa4,0xa6,0xe7,0xf1,0xf5, - 0x84,0x52,0x2a,0xfc,0x4b,0xdf,0x77,0x1f,0xcf,0xe7,0x73,0xa4,0x52,0xf1,0xf,0xef, - 0x5f,0x7c,0xd8,0x3f,0xf8,0xd4,0xa7,0x1e,0xe1,0xc2,0x85,0x29,0x52,0x89,0x74,0x18, - 0x6,0xc1,0x84,0xae,0x69,0x7b,0x3d,0x8c,0xd1,0x46,0xad,0x42,0xb6,0xc5,0x47,0x53, - 0xa,0xfc,0xe0,0x83,0x1d,0xc0,0xd4,0x24,0xce,0xba,0xa2,0x68,0x77,0xd3,0x6d,0xf6, - 0x21,0x10,0x34,0xc2,0x3a,0xe7,0x9a,0x27,0xa9,0x27,0x2,0x6e,0x7d,0xf4,0x61,0x34, - 0x5d,0x67,0xe2,0xe4,0x29,0x9e,0x7b,0xf6,0x59,0xbe,0xf7,0xc4,0x8b,0xbc,0x37,0x55, - 0x26,0x94,0xb1,0x1b,0x82,0x88,0x9b,0xe5,0x15,0x6a,0x6b,0xb3,0x24,0xdb,0xba,0x49, - 0xb6,0xf5,0xfc,0x5c,0x4a,0xa5,0xc2,0x4a,0x51,0x12,0xa,0xbd,0xb1,0x41,0x9e,0x5f, - 0x7d,0x3e,0x20,0x10,0xa4,0x84,0x41,0x9,0x97,0x65,0x15,0x10,0x8,0x48,0x29,0x85, - 0x16,0x4,0xcc,0x2f,0x2d,0xb1,0xef,0xce,0xbb,0x98,0x9e,0x9e,0x21,0x9b,0xcd,0xd0, - 0xd1,0x51,0x8c,0xec,0x75,0xf2,0x39,0xaa,0xd5,0x1a,0x17,0x26,0x2f,0xd0,0x68,0x34, - 0xb0,0xac,0x8,0x45,0xf5,0xc3,0xef,0xfc,0xd,0x67,0xe,0x3d,0x8b,0x2d,0x13,0x34, - 0xcd,0x76,0x84,0x90,0xaf,0x0,0xff,0x22,0x66,0xc5,0x36,0x7f,0xf8,0xa3,0xef,0x33, - 0x30,0x30,0xc4,0xfa,0xfa,0xfa,0x2f,0x16,0x0,0x13,0x13,0x13,0x2c,0x2e,0x2e,0x32, - 0x75,0x7e,0x92,0xb1,0x1d,0x3b,0x6a,0xbe,0xe7,0x4f,0x1a,0x86,0xf9,0xb1,0x9a,0xa7, - 0xda,0x94,0x53,0x27,0x65,0x4a,0xc2,0x4b,0x1,0xe0,0xfb,0x68,0x9a,0xc4,0xd2,0x24, - 0xfa,0x86,0xc6,0xb8,0xdc,0x4e,0x52,0x4b,0xd3,0x8,0xeb,0x9c,0x69,0x9e,0x60,0xc1, - 0x5f,0x65,0x5a,0xb8,0xdc,0xf9,0xc8,0xc3,0x9c,0x3d,0x7b,0x8e,0xc7,0x1f,0x7f,0x82, - 0xa7,0x5f,0x39,0xca,0xf9,0x35,0x5,0xda,0x8d,0xfb,0xf1,0xcd,0xf2,0x2a,0xf5,0xcd, - 0x45,0x32,0x1d,0x43,0xc4,0xd2,0x85,0x5f,0xf0,0x40,0xce,0xb2,0x11,0x3a,0xc4,0x9b, - 0x65,0xb2,0xff,0x8,0x49,0xa1,0x26,0x4,0x9,0xa1,0xe3,0x2a,0x97,0x3a,0xa,0x13, - 0x30,0x4,0x34,0x2b,0x65,0x6c,0x21,0xd8,0x77,0xe0,0x76,0xde,0x7d,0xef,0x28,0xc3, - 0x23,0x43,0xa4,0xd3,0x51,0x3e,0x90,0xcb,0xe7,0xa8,0xd7,0xea,0x2c,0xce,0x2f,0xb1, - 0xba,0xb2,0xc6,0x6b,0xaf,0xbc,0xca,0x73,0xdf,0xf9,0xcf,0xb8,0x9e,0x47,0xc5,0x2c, - 0x82,0x66,0x4c,0xa3,0xd4,0xff,0x24,0x84,0xf6,0xfe,0x93,0x4f,0x3d,0xce,0x57,0xbe, - 0xf2,0x15,0xbe,0xf7,0xbd,0xef,0xfd,0xe2,0x3b,0xc0,0x56,0x26,0x9b,0xb2,0xf8,0xed, - 0xcf,0xff,0x57,0x68,0x4,0x73,0x1b,0xe5,0xcd,0x4d,0xc3,0xb4,0x3e,0x51,0xaa,0xbb, - 0x31,0x53,0x39,0xc4,0x74,0xf9,0x41,0x0,0x48,0x81,0x29,0x25,0x46,0xd5,0x60,0x40, - 0xe,0xa0,0xb,0x8d,0x73,0xf6,0x4,0x13,0xee,0x1c,0x47,0xc3,0x6,0xf3,0x6e,0x93, - 0x44,0x26,0xc3,0xc4,0xa9,0xd3,0x3c,0xff,0xc6,0x49,0x16,0xaa,0x26,0x42,0x1a,0x37, - 0x22,0xe,0xe0,0xd4,0x4b,0x34,0x36,0x17,0x49,0x77,0xc,0x61,0x26,0x72,0xfc,0xa2, - 0x34,0x64,0x21,0x4,0x2a,0x9e,0x63,0xdd,0xaf,0x93,0x70,0x6a,0x64,0xfe,0x11,0x82, - 0xc0,0x14,0x12,0x3,0x68,0x2a,0x97,0x86,0x88,0xc6,0xb2,0x26,0xb0,0xbc,0xb4,0x48, - 0xcf,0xd8,0x38,0x9d,0x9d,0xdd,0xbc,0xff,0xfe,0x9,0x76,0xec,0x18,0xc7,0xb2,0xa2, - 0x59,0x41,0x5b,0x5b,0x1e,0xc7,0x76,0x58,0x59,0x5d,0xe3,0xd0,0x9b,0x6f,0xb2,0xb1, - 0xba,0x40,0x59,0x25,0x50,0x7a,0xac,0xa6,0x94,0xfa,0xc3,0x72,0xad,0xf2,0x83,0x42, - 0xa1,0xc0,0xe9,0xd3,0xa7,0x78,0xe9,0xa5,0x97,0x3e,0x5a,0x30,0x7e,0xd4,0x1b,0xe, - 0xdc,0x80,0x81,0xe1,0x5e,0x4e,0x9d,0x39,0x7,0x70,0x5a,0x93,0xd2,0xd0,0xcc,0xd8, - 0x5d,0x1b,0x35,0x5b,0x4b,0x48,0x1f,0xa1,0x4,0xae,0xef,0xa1,0x84,0xc4,0x2c,0x69, - 0xe8,0xcd,0x10,0x1b,0xc5,0x5,0x6f,0x86,0xf7,0xbc,0x59,0x56,0x8b,0x69,0x76,0xdd, - 0x73,0xf,0xb9,0x5c,0x9e,0xa9,0xf3,0x53,0x9c,0x9b,0x2b,0xb1,0x54,0xb7,0x10,0x9a, - 0x71,0xc3,0xd,0xd3,0x77,0x6a,0x34,0x36,0x16,0x49,0x15,0xfa,0x31,0xe3,0x59,0x7e, - 0x59,0x1c,0x74,0x21,0x34,0xc2,0x44,0x8e,0x75,0xaf,0x4a,0xc6,0x69,0x90,0xfc,0x47, - 0x8,0x82,0x98,0xd0,0x71,0x43,0xf,0x57,0x5,0x34,0x84,0xc0,0x4,0x70,0x5d,0x96, - 0x37,0x36,0x38,0x70,0xf7,0x3d,0xd8,0x4d,0x9b,0xa9,0xf3,0xe7,0x19,0x1f,0x1f,0xc3, - 0x30,0xc,0x74,0x43,0xa7,0x58,0x2c,0xb0,0xbc,0xbc,0x42,0x18,0x2a,0xd6,0x6a,0xe, - 0xeb,0xe5,0xaa,0x27,0x85,0xfc,0x6a,0x10,0x86,0x5f,0x95,0x8,0xff,0x13,0x9f,0xb8, - 0x8f,0xe7,0x9e,0x7b,0xe1,0xa3,0xef,0x46,0x3f,0xcb,0xd,0x1f,0x3b,0x76,0x9c,0xb9, - 0xf9,0x59,0x46,0xb7,0x8d,0x5,0xbe,0x1f,0xbc,0xa7,0x69,0xb2,0xb,0x3d,0xb6,0x7f, - 0xb3,0xda,0x10,0x71,0x19,0x10,0x28,0x85,0xf0,0xe2,0x74,0x37,0xc,0xb2,0x32,0xc7, - 0x4e,0x6b,0x94,0x9,0xfb,0x1c,0xe5,0x6d,0x5d,0xfc,0xee,0xef,0xfd,0x1,0x77,0xde, - 0x7d,0x2f,0x9b,0x1b,0xeb,0xbc,0xf1,0xce,0x69,0xca,0x2a,0x17,0xb9,0x89,0xdd,0xc0, - 0x1f,0x28,0xc,0x7c,0xea,0x1b,0xb,0xc4,0xb3,0x9d,0x98,0x89,0x5f,0xde,0xe2,0x5f, - 0x5e,0x19,0xf8,0x89,0x36,0x4a,0x6e,0x95,0x76,0xb7,0x49,0xec,0x57,0x5c,0x1e,0x4a, - 0x4,0x9a,0x90,0xd4,0x43,0x27,0xd2,0x30,0x12,0x82,0xb8,0x10,0x94,0x37,0xd6,0x91, - 0xe9,0xc,0xfb,0x6f,0xbb,0x9d,0x85,0xf9,0x45,0x66,0x66,0xe7,0x18,0x1b,0x1b,0x8d, - 0x7c,0x1,0x34,0xc9,0xa9,0x53,0xa7,0x79,0xe2,0xc9,0x27,0x98,0x99,0x99,0x41,0xa, - 0xf1,0xb7,0xa,0xfe,0x50,0x93,0xb2,0xfa,0xea,0xab,0x2f,0xff,0x4c,0x8b,0xff,0x91, - 0xaa,0x80,0x6b,0x5d,0x2f,0xbc,0xf8,0x1c,0xa8,0xb0,0x1c,0x6,0xc1,0x1f,0x19,0x9a, - 0xf6,0x13,0x99,0x2a,0x30,0xdf,0x0,0xcf,0x37,0xe9,0x6d,0x18,0x18,0xa1,0xce,0xae, - 0xf8,0x2e,0x34,0x1,0x1b,0x78,0xec,0xb9,0xf5,0x76,0x7a,0xfb,0xfa,0x71,0x5d,0x87, - 0xa5,0xcd,0x26,0xe4,0xb6,0xa1,0xa4,0x41,0xe0,0x39,0x57,0x13,0x18,0xf8,0xc0,0x96, - 0xd5,0xae,0xae,0x63,0x26,0xa2,0x66,0xce,0x3f,0x8c,0xfa,0x84,0x42,0x6a,0x16,0xb5, - 0xce,0x9d,0xbc,0x9f,0xca,0xd0,0x50,0x1,0xbf,0xca,0xe2,0x50,0x1,0x69,0x61,0x92, - 0x95,0x16,0xb1,0xd6,0xf7,0xab,0x89,0x48,0xc3,0xf0,0xdd,0x17,0x9f,0x63,0x79,0x71, - 0x91,0xb1,0xd1,0x51,0x96,0x16,0x96,0xf8,0xde,0x77,0xff,0x1e,0xdb,0xb6,0xa9,0x56, - 0xab,0xbc,0xfc,0xf2,0x8b,0x5c,0xb8,0x30,0x85,0xa,0xc3,0x67,0xc3,0x30,0xfc,0x3f, - 0x3,0x3f,0xd8,0xb8,0xef,0xfe,0x7b,0xf9,0xca,0x57,0xbe,0xf2,0xb3,0xe7,0x23,0x3f, - 0xcf,0x8d,0x7f,0xf9,0xcb,0x5f,0xe6,0xb9,0xe7,0x9e,0xa5,0xbb,0xab,0xbb,0x1a,0xaa, - 0xf0,0x1d,0x5d,0xd3,0x76,0x7,0xba,0x35,0x1c,0x96,0x1d,0x7a,0x5c,0x8d,0x9b,0xe2, - 0xbb,0xe8,0x31,0x3a,0xb9,0xe0,0x5e,0xe4,0x5d,0x56,0x39,0xf8,0xe0,0x43,0x74,0x74, - 0x74,0xf0,0xfa,0x9b,0x6f,0xf1,0xf2,0xb1,0x59,0x42,0x3d,0x1d,0x19,0x41,0x3b,0xd, - 0x74,0x23,0x16,0xe1,0xcb,0x10,0xa8,0xc0,0xc7,0x77,0x1b,0x78,0xcd,0x2a,0x6e,0xa3, - 0x2,0x42,0x10,0xcb,0xb4,0xff,0xd2,0x27,0x76,0x57,0xef,0x4,0x6,0x8d,0x78,0x96, - 0xa6,0xbd,0x49,0xd1,0xf3,0xae,0xcf,0x7,0xf8,0x39,0x31,0x3,0xe2,0x43,0xde,0x40, - 0x43,0x48,0xca,0xa1,0x8b,0x86,0xc2,0x16,0x12,0xd,0x41,0x50,0xab,0x12,0xc4,0xe2, - 0xdc,0xf5,0xb1,0xfb,0x29,0x16,0x8b,0x9c,0x3b,0x73,0x8e,0xc9,0xa9,0x29,0x5e,0x79, - 0xe5,0x65,0x9e,0x7f,0xee,0x79,0x80,0xd7,0x51,0xea,0xf,0x10,0x9c,0x73,0x9b,0x2e, - 0x8b,0xcb,0x8b,0x7c,0xfd,0xeb,0x5f,0xff,0xd5,0x4,0xc0,0xf1,0xe3,0xc7,0xf1,0x83, - 0x80,0x9e,0x9e,0x1e,0x34,0x5d,0x5b,0x57,0xa1,0x7a,0x47,0xd3,0xb4,0xbd,0xae,0xa9, - 0xd,0x28,0xd7,0xe4,0x4e,0x63,0x9c,0x10,0x97,0x77,0x9b,0x13,0x2c,0xe7,0x2d,0x3e, - 0xf9,0xc8,0xa7,0xb9,0x30,0x33,0xcb,0xf,0x5e,0x78,0x8f,0x86,0x4a,0xb4,0x86,0x49, - 0x92,0xc0,0xb5,0x51,0xa1,0x4f,0xe0,0xd9,0x34,0x4a,0x4b,0xd8,0xd5,0xd,0x94,0xa, - 0xd0,0xcd,0x18,0x46,0x3c,0x8d,0x95,0xcc,0x5c,0x93,0x9,0xf4,0xf,0x12,0x4,0xba, - 0x49,0xd5,0x4c,0xe0,0xd7,0x57,0x28,0x2a,0x7e,0xa1,0xa0,0x53,0xb4,0xd4,0x4a,0x8, - 0x71,0x9,0xf1,0x8,0x9,0x69,0x99,0x5f,0x5d,0xe3,0x73,0x4d,0xa1,0xd1,0xc4,0xa7, - 0xa9,0x7c,0x4c,0x22,0x6d,0x41,0x53,0x29,0x56,0xd6,0xd7,0xd8,0x7d,0xfb,0x41,0x6e, - 0x3b,0x78,0x0,0xd7,0xf5,0xf8,0xfe,0xf,0xbe,0xcf,0x1b,0x6f,0xbc,0x8e,0x42,0xbd, - 0x25,0xa4,0xf8,0x1f,0xa5,0x26,0x8f,0xfb,0xbe,0xcf,0xe1,0x23,0x87,0xb9,0x78,0xf1, - 0xe2,0xcf,0x57,0x91,0xfc,0x22,0xf,0x6d,0x7e,0x7e,0x9e,0xf6,0x8e,0x76,0x4c,0xdd, - 0x5c,0x9,0x55,0x78,0x44,0xd7,0xf4,0x3d,0x65,0x33,0x18,0x58,0x69,0x96,0xb1,0xdc, - 0x1a,0xc7,0xdc,0x59,0xb2,0x3b,0xc7,0xfe,0xff,0xf2,0xce,0xe5,0x37,0xae,0xbb,0x8a, - 0xe3,0x9f,0xf3,0xfb,0xdd,0xc7,0x3c,0xec,0xf1,0x2b,0x7e,0xa5,0x36,0x79,0x34,0x69, - 0x95,0x4,0xda,0x22,0x50,0x55,0x21,0xca,0x73,0x81,0x84,0x4,0x7b,0xb6,0x6c,0x10, - 0x2a,0x42,0x6c,0x10,0x52,0x25,0xfe,0x8,0x10,0x20,0xc1,0x6,0x76,0xed,0x86,0xd, - 0xa8,0xb4,0xd0,0x52,0x35,0x34,0x50,0xb5,0x49,0x9b,0x86,0x24,0x4d,0x5a,0x1a,0x9a, - 0xc4,0x89,0xed,0x71,0x6c,0xc7,0xe3,0x99,0x3b,0x33,0xf7,0xf1,0xfb,0x1d,0x16,0xe3, - 0x38,0xce,0xa3,0x6d,0x1a,0x3b,0x8f,0x8a,0x23,0x5d,0xcd,0x66,0x74,0xaf,0xee,0x39, - 0xe7,0x9e,0xdf,0x39,0xdf,0xf3,0x62,0xc7,0xae,0x3d,0xfc,0xf1,0x85,0x43,0x2c,0x76, - 0xa2,0xd,0xb1,0xfb,0xda,0x1a,0x95,0xf9,0x33,0x74,0x9b,0x4b,0x84,0xa5,0x2a,0xd5, - 0xe1,0xed,0xc4,0x7d,0x43,0xd8,0xa8,0xbc,0x6,0xe7,0xde,0x5d,0xb4,0x4e,0xc2,0x32, - 0xd,0x6b,0x8,0x93,0xc5,0xdb,0xc2,0x8,0x32,0x75,0xb4,0x34,0xa7,0xa5,0x39,0xf9, - 0x95,0x91,0x3a,0x72,0x55,0x29,0x7a,0x67,0xfe,0xb5,0xef,0x94,0xaa,0xc3,0xa1,0x58, - 0xc,0xab,0x9a,0xad,0xf3,0x26,0x31,0x82,0x24,0x2d,0xce,0xcf,0xcf,0xf1,0xd8,0xe3, - 0x8f,0xf3,0xe2,0x4b,0x7f,0xe3,0xc8,0x91,0x23,0x88,0xc8,0x1b,0x22,0xf2,0x43,0xa3, - 0xe6,0x68,0xc7,0x75,0x38,0xfc,0xfa,0xe1,0xcd,0x85,0xa4,0x9b,0x65,0xda,0xfc,0xdc, - 0x3c,0x13,0xe3,0x13,0x58,0x31,0xb,0xaa,0x7a,0xd8,0x5a,0xbb,0xff,0x52,0xd8,0xd9, - 0x79,0xa6,0x33,0xcf,0x42,0xde,0x66,0xf7,0x81,0x3,0x9c,0x3e,0xbf,0xc4,0x99,0x85, - 0xfc,0x6,0x8f,0xdf,0xd8,0x0,0x97,0x77,0xa9,0xc,0x8e,0x51,0x1d,0x9a,0xdc,0xd4, - 0xc2,0xc8,0x8f,0xa,0x23,0xd9,0x50,0xc8,0x2a,0x1b,0xcb,0x98,0x6f,0x1e,0xef,0xb2, - 0x92,0xb7,0x18,0x4c,0x93,0x5b,0x8e,0xc,0x72,0xfc,0x7a,0x13,0x49,0x49,0x2c,0xd5, - 0xb5,0xca,0xa0,0x92,0xd8,0xf5,0x6c,0x60,0x24,0xe6,0xa6,0xf0,0xb3,0x88,0x90,0xe2, - 0xc8,0xf1,0x34,0x28,0x50,0x94,0x0,0x28,0xa4,0xd7,0x15,0xd4,0x58,0x5c,0xe4,0xd0, - 0xdb,0xc7,0x78,0xe7,0x9d,0x53,0xa0,0x7a,0x48,0x44,0x9e,0x32,0xde,0x1c,0xdd,0xb3, - 0x6f,0xf,0xcf,0x3f,0xf7,0xfc,0xe6,0x31,0x89,0xad,0xe0,0xf1,0xec,0xdc,0x2c,0x93, - 0x13,0x93,0xa8,0x2f,0x16,0x14,0x5e,0x33,0xc6,0xec,0x4c,0xcb,0xe1,0xde,0xa6,0x2b, - 0xa4,0xd9,0xf5,0xcc,0x77,0x6b,0xa8,0x89,0x6e,0x2a,0x1c,0x23,0x6,0x57,0x64,0x4, - 0x71,0x75,0xcb,0x65,0xef,0x8b,0x9c,0x22,0x4d,0x28,0xba,0x2d,0xf2,0x34,0xa1,0x48, - 0xdb,0x14,0x59,0xa7,0xe7,0x7c,0xaa,0xeb,0x29,0xc6,0x75,0xfb,0x88,0x45,0xc,0xae, - 0x54,0xa5,0x95,0xd4,0x99,0x70,0xfa,0xb1,0xfe,0x40,0xa2,0x39,0x4d,0xcd,0xa9,0x4a, - 0x48,0x9f,0x9,0x9,0xd6,0x4a,0xc4,0x3f,0x49,0x24,0x10,0x8b,0xa5,0x24,0x1,0x39, - 0xb0,0x48,0x8e,0x5,0x62,0x20,0x9,0x2,0x64,0x60,0x90,0x8e,0x73,0xa,0xfa,0x22, - 0xc8,0x8f,0x50,0x8e,0x4f,0x4d,0x4f,0xf1,0xcc,0xb3,0xcf,0x6c,0xd,0x28,0xb5,0x55, - 0xcc,0x9e,0x9d,0x9b,0x65,0x76,0x6e,0x8e,0xc9,0x89,0xed,0x4b,0x82,0x1e,0xb4,0x62, - 0x6,0x4b,0x71,0xe9,0xc0,0x6a,0x92,0x4,0xa9,0x86,0x4,0x71,0xdf,0x4d,0xbf,0x3a, - 0x13,0x84,0x64,0xed,0x6,0x41,0x58,0xda,0x32,0xb,0x50,0x64,0x1d,0xba,0xab,0x8b, - 0x64,0x9d,0x55,0x54,0x1d,0xc6,0x4,0x98,0x20,0xea,0x2d,0x9e,0x5a,0x5b,0x45,0x5f, - 0x64,0x1d,0xf2,0x6e,0x8b,0xa2,0x9b,0xa0,0xde,0x21,0x26,0x58,0x7b,0xbe,0x22,0x41, - 0x4c,0x5b,0xc,0x41,0x72,0x89,0x6d,0x4,0x1f,0xfa,0x9c,0x86,0x66,0x74,0xb4,0x60, - 0xc4,0x94,0x37,0x9d,0x61,0x34,0x40,0x19,0x43,0x43,0x53,0x56,0x5,0x8a,0x28,0x42, - 0x86,0x46,0x30,0x95,0x6a,0x26,0x22,0xcf,0x8a,0xf0,0x13,0xe0,0xfd,0xcc,0xe5,0xbc, - 0xfc,0xca,0xcb,0x5b,0xf6,0x91,0x6c,0xb9,0xcd,0x9d,0x9b,0x9f,0xe5,0x81,0x89,0xed, - 0x4d,0x55,0xe,0x22,0xe2,0xe2,0xc0,0x7c,0xde,0x77,0x2f,0x97,0xba,0x69,0x8a,0x89, - 0xfa,0x6f,0x28,0xec,0x90,0xb5,0x56,0xee,0x22,0x6d,0x13,0xc4,0x95,0xcd,0x85,0x55, - 0xde,0x93,0x36,0x97,0xc8,0xbb,0x9,0x51,0xa5,0x46,0xa9,0x7f,0x84,0xa8,0x5c,0x23, - 0x8c,0xcb,0xd8,0x30,0xee,0x5d,0x51,0x89,0x30,0xae,0x10,0x96,0xfa,0x9,0x4b,0x7d, - 0xd8,0x30,0x46,0x5d,0x41,0x9e,0x26,0xf8,0x22,0xc3,0xac,0x2d,0x5e,0x92,0xb8,0x4a, - 0x33,0x6d,0xb0,0x2d,0xeb,0x50,0xbe,0xc9,0x51,0xd0,0xf0,0x19,0x6d,0x72,0x46,0x4d, - 0x5,0xbb,0x45,0xbe,0x8a,0x11,0x61,0xd5,0x67,0x24,0xa5,0x98,0x62,0x78,0x18,0x1b, - 0x45,0x4d,0x81,0x5f,0xa8,0xf7,0x3f,0x37,0x36,0xac,0xaf,0x5c,0x38,0xc7,0x3b,0xd7, - 0xd5,0xf4,0xdd,0x77,0xa,0x0,0x30,0x3b,0x3f,0xc7,0xe4,0xe8,0x68,0xaa,0xf8,0xd7, - 0x10,0x39,0x1b,0x5a,0xf3,0x88,0x71,0xcd,0xe1,0x6e,0x7b,0x5,0xb5,0x65,0x6c,0x50, - 0x62,0xad,0xd9,0x6c,0x6d,0x53,0x78,0x44,0x9e,0x26,0x98,0x20,0xbc,0x31,0x97,0x7f, - 0x8b,0xc1,0x96,0x2f,0x32,0x3a,0x8d,0x3a,0x36,0x88,0x29,0xd7,0x46,0xb1,0x51,0xe9, - 0x63,0x3d,0xf9,0x5e,0x87,0x92,0xc5,0x46,0x65,0xc2,0xa8,0xc,0xaa,0x64,0x9d,0x55, - 0x7c,0x91,0x62,0xc3,0x12,0x2e,0xae,0x52,0xb4,0xea,0x4c,0xe8,0xd5,0x92,0x78,0x59, - 0x33,0xfb,0xd,0xcd,0x18,0x37,0x55,0x82,0x2d,0xa,0x19,0x5,0x68,0x9,0x5c,0xe8, - 0x8b,0x48,0x6b,0xfd,0x4,0x41,0x70,0x16,0x78,0x1a,0xf4,0xd7,0xa0,0xcd,0x37,0x8f, - 0xbe,0xc5,0x72,0x92,0x6c,0x7d,0x5e,0xe2,0x4e,0x79,0xd4,0x73,0xb,0x75,0x6,0x6, - 0x86,0xdc,0x85,0x7a,0xfd,0xf8,0x40,0xad,0xff,0xd,0x6b,0xed,0x54,0x44,0xb6,0x33, - 0x6f,0x2f,0x9a,0xbc,0xf0,0x94,0x23,0x4b,0xcd,0x76,0x48,0x9d,0xe9,0x21,0x82,0x62, - 0x28,0xba,0xad,0xdb,0xb2,0x2,0x2e,0x4f,0xe9,0x34,0xea,0xc4,0xd5,0xa1,0x5e,0xae, - 0xe0,0x76,0x64,0x22,0x82,0x9,0x22,0xc2,0xb8,0x82,0xaa,0x27,0xef,0x26,0x98,0xa8, - 0x42,0x5b,0x1c,0x3,0xed,0xab,0x95,0x44,0x99,0x7a,0x16,0x7d,0x87,0x51,0x53,0xd9, - 0x92,0xc2,0x92,0x5e,0x83,0x89,0x32,0x1b,0x28,0xef,0xf6,0x7,0xb4,0x2b,0xb1,0x33, - 0xc6,0xbc,0xa2,0xf0,0xe3,0x4e,0xd6,0xf9,0x93,0x2a,0xf9,0xb1,0x13,0xc7,0xef,0x5c, - 0x62,0xea,0x4e,0x86,0x55,0x8b,0x4b,0x8b,0xec,0x1c,0xdc,0x41,0x3c,0x1c,0x5d,0xf4, - 0x99,0x7f,0x49,0x44,0xf2,0xc8,0xb0,0x8f,0xec,0x72,0xb5,0xaa,0x2b,0x3c,0x3a,0x66, - 0x98,0x59,0xea,0xa2,0x71,0xd,0x63,0x3,0x8a,0xb4,0x8d,0xa2,0xd8,0x20,0xbe,0x75, - 0x47,0xcf,0x15,0xb4,0x97,0x67,0x29,0xf5,0xd,0x13,0x56,0x6a,0x9b,0x47,0xc,0x45, - 0xb0,0x41,0xaf,0xd,0x5b,0xc4,0xa0,0x51,0x95,0xb4,0x55,0x67,0xc2,0xf5,0xa4,0x55, - 0xf7,0x6d,0xfa,0x25,0xa6,0xdf,0x84,0x9b,0xc6,0x26,0x5,0x68,0x88,0xe7,0xbd,0x92, - 0x70,0xbe,0x1a,0x92,0x7,0x76,0x59,0xe0,0x37,0xea,0xf5,0x67,0x95,0xfe,0xd2,0xc9, - 0xf6,0xe5,0x2e,0xa7,0xde,0x3f,0x7d,0x47,0x43,0xdf,0x3b,0x9e,0x1,0x59,0x6c,0x2d, - 0x32,0x37,0x3b,0xc7,0xc4,0xd8,0x70,0xa2,0xea,0xfe,0xa1,0xc8,0xbf,0x43,0x6b,0xa6, - 0xb2,0x22,0x9f,0x3e,0xb7,0xb0,0x6c,0xda,0x5,0x98,0x78,0x0,0x63,0x43,0x4c,0x10, - 0x91,0x25,0x2b,0x4,0x51,0xf9,0xd6,0x0,0x20,0x55,0x92,0xe5,0x8b,0x4,0x71,0x85, - 0xb8,0x6f,0x78,0x4b,0xe1,0xe2,0x2b,0xb3,0x8d,0xc4,0x46,0xb4,0x5d,0xca,0x40,0x67, - 0x5,0xa7,0x5,0xa,0x8c,0xd8,0xd2,0xa6,0x5,0x9f,0xa2,0x9c,0xd,0x3d,0xef,0x55, - 0xc,0x8d,0x92,0xf5,0x62,0xcc,0x6b,0x22,0xfc,0x34,0x77,0xc5,0xef,0xc2,0x20,0x5c, - 0x39,0xf2,0xe6,0x5b,0x2c,0x35,0x96,0xee,0x38,0xf6,0x71,0xd7,0x52,0x60,0xf5,0x4b, - 0x8b,0x6c,0x2f,0x45,0x3e,0xab,0xd4,0xde,0x37,0xae,0xf8,0x2b,0x62,0x9a,0xc6,0x6, - 0xf,0x1a,0xdf,0x19,0xc8,0x5b,0x8b,0x38,0xaf,0xa8,0xa,0x2e,0xcf,0x8,0x4b,0xd5, - 0x5b,0x50,0x0,0xa1,0xb3,0xba,0x80,0x2b,0x52,0xfa,0x86,0xb6,0xdf,0x41,0xcc,0x48, - 0xd0,0x20,0xa6,0xd5,0x9c,0x25,0x72,0x19,0x93,0xa6,0x72,0xdb,0xe5,0x64,0x2,0xe4, - 0x28,0xb3,0xd6,0x73,0xba,0xac,0xd4,0xcb,0x16,0x17,0xd8,0x8b,0x2,0xbf,0x4,0x9e, - 0x36,0x4e,0xe,0x3b,0xe3,0xdd,0x89,0x93,0x27,0xef,0x1e,0xf8,0xc5,0x3d,0xa0,0x47, - 0x1e,0x3a,0x80,0xa8,0x58,0x67,0xdc,0x17,0x10,0x9e,0xf2,0xaa,0xdf,0xcd,0x9d,0x1b, - 0x6c,0x67,0x60,0xfa,0xa7,0x28,0xd,0x4c,0x61,0x82,0xe8,0x23,0x36,0x92,0xa,0x45, - 0x9a,0xd0,0xbc,0x74,0x8e,0xda,0xf8,0xae,0x5e,0x3d,0xe0,0x87,0x81,0x40,0xca,0x96, - 0x58,0x86,0x62,0xfe,0x38,0x8f,0xae,0xd4,0xd9,0x69,0x2a,0x9f,0xf8,0x6e,0x2,0x64, - 0x28,0x97,0x8c,0x67,0x26,0x82,0x46,0x64,0x50,0x6b,0x56,0x5,0x9e,0x13,0xe4,0x57, - 0x36,0xb0,0x6f,0xa0,0x5a,0x1c,0x3b,0x79,0xe2,0xae,0xcb,0xe2,0x9e,0x28,0xc0,0x15, - 0xda,0xff,0xf0,0xc3,0xa8,0xd7,0x8a,0x58,0xfb,0x35,0x51,0xfd,0x81,0xaa,0x7e,0x3d, - 0x2f,0x5c,0x7f,0x26,0x65,0xa8,0x8c,0x13,0x56,0xc7,0xb0,0x61,0x79,0x3,0xc2,0x7e, - 0xd5,0xf4,0xaf,0x2e,0x7c,0x40,0x58,0xea,0xa3,0x3c,0x38,0x7e,0xad,0xa2,0x88,0x80, - 0x7a,0x5c,0x9e,0x51,0xa4,0x9,0x59,0xa7,0xd9,0x5b,0xd7,0x32,0x34,0x71,0xfb,0xaf, - 0x2b,0x82,0x4f,0x96,0xd8,0x7d,0xe1,0x6d,0xf6,0x53,0xfa,0x44,0x8c,0xed,0xe0,0x59, - 0x30,0x9e,0x8b,0x21,0xac,0xf6,0x4,0x9f,0x18,0x91,0x83,0xa0,0xbf,0xf5,0xce,0xff, - 0xdd,0x1a,0x93,0x9c,0x78,0xf7,0xf4,0x3d,0x93,0xc1,0x3d,0x55,0x0,0x80,0xed,0xdb, - 0x26,0x18,0x19,0x1f,0xa1,0xc8,0x8b,0x7e,0x81,0x6f,0x0,0xdf,0x57,0xf5,0x5f,0x2d, - 0x9c,0x1f,0xc8,0x89,0xd0,0x78,0x4,0x5b,0x1d,0x23,0x88,0xfb,0x11,0xdb,0xeb,0x52, - 0xee,0xb6,0x96,0xe9,0x36,0x17,0xa9,0x8d,0xef,0xbe,0x7a,0x54,0x88,0xe0,0x8b,0x9c, - 0x2c,0x59,0xa1,0xdb,0x5c,0x24,0xeb,0x34,0x71,0x79,0x86,0xd,0x42,0x6,0xb6,0x3f, - 0x44,0x5c,0x1d,0xdc,0x1c,0xc6,0xa0,0x8e,0xfe,0xb,0x47,0x79,0xa2,0xdd,0x59,0xef, - 0xfa,0xfd,0x30,0x66,0x3a,0x94,0x55,0x3c,0xf3,0xd6,0x53,0xf,0xa1,0x1d,0x8,0x18, - 0xb3,0x2a,0x70,0x48,0x44,0xfe,0x80,0xd7,0x17,0xe3,0x28,0x5e,0xb9,0xdc,0x6c,0x70, - 0x76,0xe6,0xfc,0x3d,0xe5,0xff,0x3d,0x57,0x80,0x2b,0xf4,0xb9,0xdd,0xfb,0xe9,0x44, - 0x1d,0xa2,0x22,0xea,0xf7,0xf8,0x2f,0x23,0x7c,0xf,0xe5,0x9b,0xce,0xbb,0xc9,0xc2, - 0x1b,0x71,0x41,0x1f,0x52,0x1e,0xc1,0x96,0x6,0x69,0x5f,0x5e,0xa0,0x32,0x38,0x49, - 0x54,0xa9,0xa1,0x28,0xbe,0xc8,0xe8,0xae,0x2e,0xd1,0x6e,0xd4,0xc9,0xbb,0xad,0xf5, - 0x76,0x25,0x13,0x84,0xc,0x4c,0xee,0x5d,0xab,0x21,0xdc,0x7c,0x74,0x60,0x96,0x3f, - 0xe0,0x8b,0xb,0x1f,0x30,0x2a,0xf1,0xfa,0xdd,0x36,0xa,0x3d,0xc1,0xb3,0x24,0x9e, - 0x7a,0xa0,0x34,0x2,0x21,0xb7,0xa2,0x22,0x52,0x17,0x78,0x59,0x90,0x67,0x4,0x5e, - 0xcd,0xd2,0xa4,0x51,0xaa,0xc,0x72,0xe2,0xdd,0x93,0xf7,0x5,0xdf,0xef,0x1b,0x5, - 0xd8,0x48,0x7b,0xf6,0xec,0x41,0x9d,0x8b,0x3,0x1b,0x1c,0x0,0xbe,0x3,0x7c,0x5b, - 0xd5,0x1f,0x70,0x5e,0xab,0x85,0xef,0x2d,0x3c,0xa,0x6b,0xf,0x60,0x4b,0x83,0x14, - 0x79,0x46,0xb2,0x3c,0x47,0xde,0x4d,0xae,0x11,0xb2,0x18,0x4b,0x6d,0x6c,0x17,0x95, - 0xa1,0x89,0xad,0xa,0xb,0xf0,0xdd,0x6,0x7b,0xcf,0x1f,0x65,0x9f,0x86,0x78,0x20, - 0x53,0xa5,0x25,0x9e,0x65,0xf1,0x2c,0x59,0x4f,0x23,0x10,0x32,0x2b,0x20,0xd2,0x36, - 0x22,0xa7,0x80,0xbf,0x80,0xfe,0x39,0x2f,0x8a,0xe3,0xd3,0xd3,0xd3,0xdd,0x83,0xaf, - 0xbe,0x7a,0xdf,0xf1,0xfa,0xbe,0x54,0x80,0x2b,0x34,0x35,0x35,0x45,0x27,0xed,0xca, - 0x48,0x6d,0x70,0x14,0x78,0x1c,0xf8,0x16,0xf0,0x24,0xaa,0xf,0x3a,0xef,0xab,0xe, - 0x23,0x59,0x5e,0x90,0xe5,0x1e,0xe7,0xd,0x5e,0xd,0x8a,0x1,0xb1,0xf4,0x8f,0xee, - 0xa0,0x6f,0xdb,0x4d,0x86,0x55,0x2b,0x37,0xfa,0x14,0xd7,0xb3,0x42,0xae,0xff,0xbf, - 0xef,0xad,0xa3,0xcb,0x13,0x6,0x2e,0x1e,0x63,0xaa,0x28,0x68,0x58,0x58,0x35,0xd0, - 0xb1,0x50,0xf4,0xd6,0x73,0x27,0x2,0xff,0x15,0xf8,0x27,0xf0,0x82,0xc0,0xeb,0xed, - 0xa4,0x55,0x8f,0xc2,0x50,0xcf,0xcc,0xcc,0xdc,0xb7,0x3c,0xbe,0xaf,0x15,0x60,0x23, - 0xed,0xdd,0xfd,0x20,0xce,0xfb,0x20,0x30,0x66,0xc,0x91,0xc7,0x50,0xbe,0x4,0xfa, - 0x84,0xa2,0xf,0xa9,0xea,0xb8,0x7a,0x8d,0xa,0xaf,0x38,0xe7,0x71,0x18,0xc2,0xca, - 0x8,0x12,0x55,0x10,0x5b,0x42,0x82,0x18,0x31,0xe1,0xd5,0x84,0x8f,0xf4,0x7a,0x84, - 0xd7,0x95,0x43,0xb5,0xd7,0x28,0xb2,0x3e,0x76,0xad,0x40,0x5d,0x8e,0xba,0x14,0x75, - 0x29,0x14,0x5d,0x70,0x5d,0xc4,0xa5,0x88,0xcf,0xae,0xc,0x6d,0xca,0x45,0x64,0x41, - 0xe0,0x3d,0x11,0x79,0x1d,0xf8,0x97,0xa2,0x47,0xbd,0xf7,0xf3,0xc6,0x98,0xe2,0x3f, - 0x5b,0x8c,0xd9,0xff,0xdf,0x2b,0xc0,0x35,0x61,0xe4,0xe8,0x4,0x36,0xcd,0x4c,0x32, - 0x58,0xab,0x7a,0x23,0x9f,0x1,0xf6,0x89,0xc8,0xa3,0xa8,0x7e,0x16,0x91,0x1d,0xa8, - 0x4e,0xaa,0x6a,0x4d,0xd1,0x50,0x21,0x58,0x9b,0x65,0xd6,0xb3,0xe,0x6b,0xcb,0x73, - 0x94,0xd,0x63,0xea,0x55,0x59,0x1f,0x65,0xad,0xbe,0xf7,0xdb,0xbb,0x14,0x28,0x4, - 0x72,0x84,0xa6,0x20,0x73,0x8,0xe7,0x41,0x4e,0xa8,0x72,0x4c,0x84,0x53,0xce,0xfb, - 0x73,0x51,0x2b,0x68,0xe5,0x41,0xe1,0xcf,0xd4,0xcf,0x7e,0xea,0x78,0xf9,0xa9,0x54, - 0x80,0x1b,0x68,0x62,0x80,0x27,0xe7,0x1b,0x5c,0x98,0x9e,0x2e,0x5,0x41,0x30,0xa6, - 0x5e,0xc7,0x11,0xd9,0x1,0xec,0x2,0x9d,0x56,0x65,0x5a,0x44,0x46,0x81,0x21,0x54, - 0x7,0x80,0x32,0x10,0xe9,0xd5,0xa2,0x58,0x15,0xc8,0x80,0x36,0x22,0xab,0xa0,0x97, - 0x55,0xb9,0x84,0xc8,0x8c,0xc0,0xc,0xc8,0x59,0x45,0xcf,0x1a,0x91,0xba,0x57,0xbf, - 0xf0,0x95,0x99,0x99,0xce,0xef,0xb7,0x6d,0x83,0x9b,0xc,0x5c,0xf8,0xb4,0xd1,0xff, - 0x0,0xce,0x87,0x73,0x4e,0xce,0xb4,0x13,0xea,0x0,0x0,0x0,0x0,0x49,0x45,0x4e, - 0x44,0xae,0x42,0x60,0x82, - // /media/stoned/SHARED/Git/AO2-Client/resource/fonts/Ace-Attorney.ttf - 0x0,0x0,0xe,0x74, - 0x0, - 0x0,0x3d,0x98,0x78,0x9c,0xed,0x1b,0x4b,0x6c,0x24,0xc5,0xf5,0x75,0x8f,0xbd,0x1f, - 0xaf,0xbd,0xff,0x65,0xff,0xd0,0xbb,0x2c,0xb0,0xb,0xf8,0xc3,0x7e,0x60,0x81,0x45, - 0xe9,0x65,0x91,0x1,0x61,0x91,0x68,0x8d,0x20,0x42,0x49,0x60,0x6c,0xcf,0xda,0xc3, - 0xae,0x3d,0xc6,0x9e,0xc5,0x6b,0x12,0x45,0x75,0x40,0x4a,0xe,0x48,0x81,0x1b,0x22, - 0x1f,0x71,0xc8,0x21,0x89,0x38,0x44,0x88,0x3,0x87,0x48,0xe9,0x48,0x7b,0x48,0x94, - 0x55,0x94,0x3,0x11,0x44,0x22,0x12,0x84,0x48,0xc9,0x21,0x7,0xe,0x49,0x14,0x50, - 0x3c,0x9d,0x57,0x55,0xef,0x55,0x57,0x55,0x77,0xcf,0x8c,0xbd,0x11,0x4a,0xa4,0x8c, - 0x55,0x53,0x9f,0xae,0x7a,0xff,0x7a,0xef,0x55,0x4d,0x1b,0x2,0x0,0xe8,0x3,0x1, - 0x15,0x88,0xbe,0x38,0x3e,0x7c,0xbc,0x72,0xf7,0xba,0x61,0x80,0x4d,0x3d,0x38,0xfa, - 0xec,0xe4,0x6c,0x75,0xfe,0xc6,0x57,0xf7,0xbf,0x8a,0xed,0x37,0x1,0xc2,0x93,0xd3, - 0x97,0x96,0x2f,0x1c,0x8c,0xfe,0x75,0x3f,0x3e,0x7f,0x9,0x60,0xe4,0xed,0x99,0x5a, - 0x75,0xea,0x99,0xad,0xe9,0x2b,0xf8,0xec,0x43,0x9c,0x73,0xf7,0xc,0xe,0x54,0x20, - 0x7d,0x0,0xa0,0xb2,0x7,0xfb,0x47,0x66,0x66,0x9b,0x57,0xfa,0xcf,0xf4,0xbe,0x85, - 0xfd,0x33,0x0,0xc1,0x57,0x2e,0x35,0x26,0xab,0x0,0x5f,0xed,0x5,0x38,0x73,0x1a, - 0xfb,0xcf,0xce,0x56,0xaf,0xcc,0xc3,0x53,0xe9,0x27,0x0,0x3d,0xaf,0xe1,0xfc,0x68, - 0xae,0x3a,0x5b,0x1b,0xb9,0xf9,0x41,0x6c,0xf6,0xbc,0x3,0xb0,0xee,0xb1,0xf9,0xc6, - 0x62,0x13,0xc2,0x74,0x5,0xf1,0x4d,0xc9,0xe7,0x58,0x42,0x2c,0x15,0x2c,0x3b,0xf1, - 0x1b,0x29,0xf,0x8e,0x40,0x4f,0xb0,0x15,0xfb,0x37,0xc0,0x56,0x1c,0x59,0x7,0x87, - 0xe1,0x4e,0xb8,0xf,0xbe,0x0,0x4f,0xc3,0x33,0xf0,0x22,0x7c,0x33,0xda,0x1b,0x1d, - 0x4c,0x53,0xb5,0xf6,0x8,0xc,0xe1,0xf8,0x59,0x1c,0xaf,0xe2,0xf8,0x9e,0xe8,0x40, - 0x9a,0xa6,0x1f,0xa7,0x7f,0x4c,0x3f,0x4a,0xff,0x90,0x7e,0x90,0xbe,0x9f,0xbe,0x97, - 0xbe,0xfb,0xe1,0xfd,0x1f,0xde,0x2b,0xa1,0xfe,0x4f,0x7f,0xfe,0x2f,0xf,0xf7,0x13, - 0xe8,0xf2,0xd6,0xfa,0xf4,0xa6,0x67,0xb6,0x9c,0xf9,0x3b,0xa,0x48,0xd,0xff,0x66, - 0xf2,0xc0,0x7d,0x59,0x9d,0xc6,0x95,0x58,0x9a,0x15,0x6c,0x40,0xb,0xb,0x78,0x1d, - 0xda,0x72,0x8c,0xdf,0x2f,0x63,0x6f,0xac,0x12,0xe7,0x24,0xf1,0x14,0x5c,0xc3,0xef, - 0x7e,0x2c,0x9,0x96,0x97,0x75,0x9,0xb0,0x84,0x38,0x16,0xe2,0xb3,0x50,0x8e,0x61, - 0x1d,0xf4,0xeb,0xa2,0xc6,0x69,0x4c,0x8d,0xd3,0x7c,0xbb,0x5d,0x56,0xe4,0x1c,0xb5, - 0x7e,0xcc,0xad,0x83,0x6b,0xba,0x98,0x7e,0xbf,0x45,0x3,0xe1,0x33,0xf4,0xd8,0xb5, - 0x57,0x24,0x97,0xc1,0x35,0x77,0x1d,0xc3,0x76,0xca,0x58,0xd6,0x56,0xfc,0xf6,0x67, - 0xed,0xd0,0x82,0x91,0x9b,0x3f,0x66,0xc1,0xb7,0xe8,0xb,0xae,0x95,0xc8,0x24,0x50, - 0x12,0x7e,0x4,0xb6,0x2b,0x59,0x87,0x5,0x9a,0x3d,0x1c,0xfc,0xc0,0xe8,0x64,0x2f, - 0xad,0x90,0xdf,0xfd,0xd8,0xb,0x68,0xd5,0x7a,0xb8,0x85,0xda,0x15,0xd8,0x8d,0x7b, - 0x41,0xb7,0x7b,0xd0,0x7f,0x9c,0xa3,0x76,0x2f,0x6c,0x42,0x3c,0xba,0xbd,0xe,0xd7, - 0x4e,0x50,0x7b,0x3d,0x9c,0x81,0x39,0x6a,0x6f,0x80,0x5d,0xf0,0x13,0x6a,0x6f,0x44, - 0x6f,0xf9,0x73,0x6a,0xf7,0xc1,0x20,0xfc,0x8a,0xda,0x9b,0x10,0xfe,0x3f,0xa8,0xdd, - 0xf,0x23,0xc1,0x0,0xb5,0x7,0xe0,0x50,0xf0,0x0,0xb5,0x37,0x23,0x79,0x5f,0xa3, - 0xf6,0xe,0x38,0xc6,0x6d,0xfc,0xda,0x10,0x7c,0x4b,0x7a,0xb4,0x9e,0x8d,0xd8,0x3d, - 0x1e,0x7c,0x87,0xda,0x1,0xec,0x9,0x7e,0x41,0xed,0x10,0x36,0x7,0xbf,0xa7,0x76, - 0x5,0x86,0x82,0x3f,0x53,0xbb,0x7,0x8e,0x86,0xbb,0xa8,0xdd,0xb,0x37,0x84,0xf, - 0x50,0x7b,0x1d,0xec,0x9,0xc7,0xa9,0xbd,0x1e,0xae,0x84,0x17,0xa9,0xbd,0x1,0x6e, - 0xf,0x3f,0xa6,0xf6,0x46,0xd8,0x59,0x19,0xa0,0x76,0x1f,0x3c,0x5d,0x39,0x44,0xed, - 0x4d,0x30,0x54,0xf9,0x3a,0xb5,0xfb,0xe1,0xd9,0xca,0x8f,0xa9,0x3d,0x0,0xf,0x2a, - 0xec,0xb2,0x8d,0xbc,0xf4,0x3c,0x46,0xed,0x1d,0x70,0x9e,0xdb,0xc8,0xcb,0xd6,0x9e, - 0xef,0x9f,0x6b,0xcc,0x2f,0x2f,0xd4,0xa7,0x67,0x9a,0xd1,0x43,0xd5,0x17,0xea,0x53, - 0xd1,0x68,0x6d,0x6e,0x31,0x3a,0x3e,0x72,0xd7,0x89,0xb3,0x93,0xb5,0xe8,0x6c,0xb3, - 0xd9,0x58,0x98,0xab,0x2d,0x9f,0xaf,0x4d,0x5f,0xbe,0x54,0x5d,0x18,0x6d,0xcc,0x35, - 0xc7,0x9b,0xb,0x97,0x27,0x9b,0x91,0xfd,0xd4,0x6e,0x47,0x34,0xf5,0xc9,0xda,0xc2, - 0x62,0xbd,0x31,0x17,0xdd,0x35,0x34,0x82,0x8f,0x7,0xf9,0xb1,0x5,0xa1,0xbe,0x18, - 0x55,0xa3,0xe6,0x42,0x75,0xaa,0x36,0x5b,0x5d,0xb8,0x18,0x35,0x2e,0x44,0xa3,0xe3, - 0x8f,0x46,0x6a,0xc2,0x4c,0x63,0x3e,0x7a,0x74,0xae,0x59,0x5b,0x98,0xab,0x36,0x11, - 0x48,0xf5,0x52,0xf4,0xf0,0xec,0xc4,0x23,0x33,0xcd,0xe6,0xfc,0x7d,0xc3,0xc3,0x17, - 0x70,0xc6,0xa2,0x2,0x31,0x34,0xd9,0x98,0xcd,0x88,0xde,0x77,0xf5,0x33,0x9b,0x90, - 0x7d,0x57,0x3f,0x8d,0x96,0xaa,0x8b,0xd1,0xc4,0xe5,0xfa,0xa5,0x66,0xb4,0x54,0x6f, - 0xce,0x44,0x19,0xf2,0x3e,0x82,0xb5,0xb4,0xb4,0x34,0xa4,0xe0,0x21,0x46,0x9,0xad, - 0x10,0x85,0xd5,0x45,0x62,0x16,0x87,0x71,0xf2,0xd2,0xf0,0xe9,0x7b,0x4e,0x8d,0x9c, - 0x3e,0x61,0xb1,0xf3,0x78,0x63,0x6e,0xf0,0x5c,0x63,0x76,0xb6,0xb6,0x30,0x59,0x47, - 0x82,0xc7,0xea,0x93,0x48,0x53,0x6d,0xb4,0xfe,0x42,0x2d,0x9a,0xa8,0x4f,0x47,0xcf, - 0x5f,0xae,0x4e,0x5e,0xac,0xcf,0x4d,0x47,0x2f,0xd6,0xe6,0x67,0x96,0x17,0x16,0xa3, - 0xe7,0x1a,0x48,0xd6,0xec,0x32,0xd2,0x78,0x25,0x9a,0xa8,0x4d,0x9d,0x9b,0x3e,0xf9, - 0xf8,0xd4,0x93,0xa3,0x73,0x68,0xec,0xd,0x98,0x87,0x65,0x58,0x80,0x3a,0x4c,0xc3, - 0xc,0x34,0x31,0x0,0x3c,0x84,0x8e,0xff,0x5,0xec,0x4f,0x61,0x7b,0x14,0x6a,0x68, - 0xec,0x8b,0xd8,0x3a,0xe,0x23,0x70,0x17,0x9c,0xc0,0xc0,0x30,0x89,0x63,0x11,0xd6, - 0x4d,0xfc,0x6b,0xe0,0xca,0x39,0xec,0x2f,0xc3,0x79,0xfc,0x9e,0x86,0xcb,0x70,0x9, - 0x57,0x2f,0xe0,0xba,0x6,0x8e,0x37,0x61,0x1c,0xcb,0x2,0x8e,0x4e,0x2a,0xc8,0x65, - 0x6b,0xcb,0xc6,0x23,0xf,0xea,0x93,0xd8,0x5b,0x40,0x6a,0xea,0xa,0x7a,0x84,0xf4, - 0xc,0x21,0x55,0x7a,0xf5,0x60,0x6e,0x75,0x31,0xd,0x75,0xc5,0x4d,0x15,0x8b,0x1c, - 0xad,0x22,0x97,0x35,0x98,0x55,0xd0,0x2f,0xe2,0x58,0x3,0x2e,0x28,0xae,0xc7,0xe1, - 0x51,0x55,0x33,0x84,0x19,0x25,0xa7,0x8,0x47,0x65,0xbf,0xa6,0x70,0x54,0xb1,0xa5, - 0x29,0xa9,0x22,0x7d,0x11,0x3c,0x8c,0x70,0x26,0xd0,0x31,0xcd,0x28,0x3a,0xe6,0x31, - 0xbc,0xe,0xe3,0xdf,0x5,0x82,0xb1,0x68,0x51,0x31,0x84,0xdf,0xd,0x9c,0x5d,0x20, - 0xe9,0x68,0x1f,0x5c,0x85,0xcf,0xca,0x24,0xa2,0x9e,0x7e,0x8a,0xe3,0x4b,0xb8,0x52, - 0xf2,0x31,0x81,0x10,0xeb,0x88,0xbd,0xa9,0xc6,0xea,0x58,0xcf,0x38,0x74,0x67,0x38, - 0xfb,0x3c,0xba,0x96,0xd4,0xdf,0x90,0x45,0x9f,0xe6,0x91,0x69,0xeb,0x9e,0x8b,0xe2, - 0xa7,0x5a,0x32,0x8b,0xf8,0x54,0x43,0x5e,0xc2,0xd6,0x69,0xb8,0x7,0x4e,0xa1,0xc6, - 0x4e,0xa3,0x1d,0x15,0x6b,0xe7,0x71,0x35,0x3a,0xa8,0xec,0x72,0x16,0xff,0xa4,0xa4, - 0x27,0x11,0x96,0x96,0xf0,0x18,0xb6,0x26,0xc9,0x22,0x6b,0x8,0xa1,0x8e,0xd2,0xab, - 0x29,0x29,0x48,0xeb,0x8d,0xe0,0x79,0x84,0x53,0xc5,0x19,0x17,0xb1,0x3f,0xa7,0x46, - 0x5e,0xc4,0xe7,0xf3,0x88,0x7f,0x59,0xd9,0x4d,0x4,0xcf,0x21,0x5c,0x2d,0xad,0x59, - 0x65,0x5f,0x52,0x8e,0x57,0x14,0x84,0x1a,0x6a,0xe1,0x1c,0xae,0x39,0x89,0x34,0x4c, - 0xa1,0xa5,0x8d,0x22,0x4,0x8,0x83,0x7a,0xf0,0xa,0x7a,0xcf,0x9e,0x50,0x5,0x9a, - 0xf4,0xd,0x5d,0x63,0x39,0xa1,0xe2,0x12,0xe5,0xc,0x80,0x69,0xb2,0x9b,0x5,0x8c, - 0x8e,0x3f,0x71,0x1e,0x62,0x88,0xa2,0x83,0xa1,0x50,0xb9,0x82,0xce,0x5,0xb4,0x57, - 0x4f,0x42,0x9c,0xae,0xb2,0xd6,0xa,0x4d,0xbf,0x80,0xf0,0x8a,0x3e,0xbd,0x2a,0x58, - 0x89,0x50,0x66,0xe1,0xeb,0xd1,0xfb,0x6e,0xc7,0xfc,0xd,0x2,0xf7,0x83,0x40,0x75, - 0x3,0xd1,0xa4,0xaf,0xe3,0xfc,0x5f,0x63,0x7d,0x4a,0x1,0xcd,0xfa,0xdf,0x4d,0x7f, - 0x27,0x93,0x38,0x6c,0xdd,0x2a,0x1,0xe2,0xe8,0xd3,0xf4,0x7c,0x29,0x57,0xd7,0x24, - 0x52,0x9c,0xfd,0x51,0xfa,0x5e,0xeb,0xac,0x9c,0xbb,0x22,0x74,0xcc,0x94,0x9f,0x98, - 0x68,0x31,0x54,0xe8,0x51,0x5c,0x90,0xe8,0xda,0xf4,0x92,0x0,0x47,0x5a,0xb1,0x14, - 0x51,0x90,0x4,0x71,0x98,0xa8,0x75,0x3,0x18,0x13,0x7c,0xe,0x1c,0x38,0x52,0x94, - 0xa,0x2,0xc3,0x14,0xba,0x70,0x1b,0xa1,0x5a,0xd8,0x52,0xd9,0xa3,0x55,0x72,0x85, - 0xd5,0xe,0x49,0xd6,0x31,0xe2,0xdd,0x5f,0x8c,0xd3,0x7c,0x68,0x65,0x2b,0xb1,0xf8, - 0x20,0x3a,0xec,0x92,0x26,0x6e,0xc1,0x39,0x6a,0x34,0x15,0xf6,0xac,0x40,0x78,0x33, - 0x2d,0x68,0x84,0x61,0xbb,0xa7,0xd7,0x2d,0x28,0x95,0xdd,0x48,0xe5,0x4d,0x70,0x33, - 0xdc,0x6,0x77,0xe0,0x56,0x39,0x81,0x5b,0xe5,0x7e,0xcc,0xc3,0xcf,0xa1,0x5b,0x69, - 0x4f,0xfb,0x2a,0x3e,0x2c,0xe3,0x80,0x64,0xda,0x62,0x99,0x73,0xed,0xf1,0xde,0x8a, - 0xad,0x71,0xa1,0xa9,0xb7,0xe7,0xb7,0x58,0x3f,0xfe,0xb8,0xa7,0xcb,0xc0,0x1e,0x17, - 0x84,0x3f,0xe6,0xd9,0xbe,0x2e,0xb3,0x1a,0x5b,0x52,0x96,0x44,0x2d,0xd6,0xa2,0xfd, - 0x7c,0x53,0xfb,0xcf,0xc1,0x83,0x53,0x36,0x7f,0xb3,0xd2,0x4b,0x5c,0xa2,0x97,0x41, - 0xc,0x38,0xa7,0xe0,0xde,0xeb,0xd1,0x87,0x91,0x6,0xe3,0x64,0x49,0x51,0x49,0x3d, - 0xc9,0x1b,0xc9,0x79,0x9a,0x31,0x1a,0x12,0xd6,0xda,0xd8,0x7d,0x66,0xec,0xae,0x4c, - 0xca,0x5e,0x5f,0xee,0x59,0xb5,0x4a,0x14,0xcf,0x33,0xda,0x10,0x16,0xb5,0x31,0xad, - 0x89,0x73,0x1a,0xa,0xd5,0x5e,0x15,0x6a,0xdf,0x6f,0xb4,0x65,0xc6,0x14,0xc9,0x4f, - 0x6e,0x57,0xbb,0xbb,0x59,0xf9,0x3f,0x48,0x2a,0x60,0xe9,0xa3,0xd8,0x7b,0x8,0x70, - 0xe4,0xc7,0xb5,0x8d,0xcb,0xb1,0x38,0x63,0x1,0xd2,0x4d,0xb4,0x24,0xb1,0x3e,0xcf, - 0xdd,0xe3,0xce,0xe3,0x28,0xa3,0xa5,0x5b,0xdc,0x32,0xdb,0x67,0xdf,0xe5,0xda,0xe1, - 0x89,0xb5,0x59,0x1f,0x63,0x37,0x9e,0x8e,0x69,0x22,0xed,0x1a,0xfb,0x4a,0xdc,0xe7, - 0x3c,0x3f,0x5,0xc7,0x62,0x72,0x5e,0xd1,0xaa,0xe3,0x22,0xdb,0xe2,0x7e,0xd0,0xc1, - 0x16,0x5b,0x31,0x78,0xd0,0xc9,0xbe,0xf2,0x1e,0x55,0xf1,0x84,0x7b,0x35,0x46,0xf9, - 0x80,0xcf,0x6c,0xa,0xd9,0xde,0xe1,0x7e,0x7e,0x44,0xc1,0x52,0x60,0xc8,0x76,0x45, - 0x37,0xb6,0x9a,0x3a,0xfb,0xc3,0xd8,0xaa,0x9e,0xab,0x61,0x80,0x59,0x2b,0xf8,0x5b, - 0x59,0x81,0xb2,0xa9,0xc0,0xf5,0x2f,0xab,0xb2,0xa9,0x82,0x5a,0x18,0xda,0xdb,0xd5, - 0x94,0xaa,0x38,0xb8,0x73,0x98,0x8d,0xbc,0x19,0x3a,0xeb,0x5,0xa8,0x6d,0xb4,0xa6, - 0x2d,0x57,0x27,0x5,0x96,0x5,0x13,0xcf,0x88,0xc3,0xce,0x10,0x62,0xcf,0x66,0xd4, - 0x2a,0xee,0xa9,0xe4,0x62,0xbd,0xa1,0xad,0x17,0xe4,0x69,0x72,0x1b,0x9e,0xab,0xf7, - 0xc2,0xc1,0x4e,0xb6,0xce,0x14,0x19,0xd,0x17,0x48,0xa8,0xd,0x2f,0xc2,0x58,0x94, - 0xef,0xf1,0xb8,0x26,0x8f,0x97,0xa,0x8d,0xc1,0x58,0x6f,0x46,0xaf,0xbb,0x3f,0xdb, - 0xd2,0x5b,0x2a,0xdd,0x98,0x68,0xe9,0x28,0x75,0xd6,0xa5,0x47,0xd,0xe9,0xd8,0xf8, - 0xef,0xc4,0x48,0x3c,0xb4,0xe8,0x2c,0xb3,0x34,0xd6,0xa,0x53,0xc2,0xd4,0x24,0x90, - 0x45,0x92,0x44,0x79,0x2,0x5,0xbd,0x95,0x70,0xc4,0x57,0x94,0xd0,0xec,0x16,0xcd, - 0xc2,0x31,0xdf,0xce,0x76,0x95,0x49,0xa5,0x4c,0x1e,0x2d,0x8d,0xcd,0xf0,0x9f,0xc6, - 0x8e,0xc,0x98,0x1e,0xad,0xf3,0xc4,0x64,0x5b,0x4c,0x81,0x84,0xe2,0xee,0x33,0xad, - 0x9d,0x52,0xdd,0x18,0xdc,0x90,0xe1,0xb7,0x3d,0x4f,0xb9,0x3e,0xd8,0xee,0xa4,0x98, - 0xd,0x7e,0x2f,0x96,0x29,0x7a,0x2a,0xe,0x3d,0x3,0x3e,0x2d,0x26,0xaa,0x43,0x56, - 0x2b,0xf,0xa6,0xda,0x46,0xdb,0x82,0x76,0x74,0x46,0xcf,0x7f,0xd6,0xe,0xa1,0xfd, - 0x78,0x9e,0x6f,0xcf,0xe,0x63,0x5b,0x62,0x8e,0x1d,0xfa,0x7e,0xaf,0x2b,0x7d,0xa4, - 0x19,0xc6,0x2e,0xf5,0xc1,0x31,0x46,0xd3,0x95,0x9a,0x99,0xb2,0x6f,0x79,0x29,0xad, - 0x30,0xdc,0x4d,0x21,0x14,0x9c,0x65,0x4,0x98,0x4c,0x91,0x77,0x5c,0xc0,0x3b,0x8f, - 0xe3,0x72,0x51,0x7e,0xd8,0x55,0x5c,0x36,0xb4,0x33,0x4f,0xe0,0xd6,0x7e,0xdc,0xf5, - 0xe3,0x74,0x8e,0xe7,0xcc,0xcf,0x3b,0x32,0xc8,0x7c,0x45,0x87,0xcc,0x59,0xde,0x6d, - 0x2a,0x81,0x10,0x4f,0xcc,0x4f,0x47,0x6e,0x98,0x6,0xce,0xe5,0xfd,0x8c,0xd5,0xc4, - 0x56,0xe6,0x90,0xe6,0x59,0x59,0xa9,0x4f,0x61,0x62,0x51,0x18,0x1b,0x28,0x49,0xce, - 0xaa,0xf4,0xfc,0xde,0x9c,0x2e,0x3a,0xc6,0xb,0x96,0xaa,0x91,0x9f,0x0,0x47,0x1b, - 0x52,0xda,0xb6,0xe7,0x61,0x89,0x13,0x4f,0xae,0x64,0x85,0xa1,0x4f,0xf5,0x5b,0xd2, - 0xba,0xb3,0xec,0x84,0xa0,0x53,0x96,0xb1,0xd1,0x91,0xf1,0x5a,0xec,0x46,0x90,0x15, - 0x27,0xae,0x94,0x99,0x13,0x3e,0x71,0x95,0x69,0x43,0xf9,0xd4,0x8c,0x6f,0x5b,0xff, - 0x5e,0x5f,0x42,0x68,0x49,0x8b,0xef,0x30,0x4f,0xdb,0x8d,0xb7,0x17,0x3a,0x9d,0xb3, - 0x3d,0xaa,0x73,0x7a,0x60,0xea,0x89,0x5a,0x6b,0xb7,0xbb,0xd8,0xe3,0x9c,0xe7,0x51, - 0x75,0xb,0x58,0x7,0x2d,0xc8,0xf2,0x91,0x40,0xe6,0x23,0x5e,0x8e,0xa8,0xc7,0x2d, - 0x4c,0xc0,0xde,0xd6,0xd6,0x22,0xdb,0xb0,0xe2,0x37,0x83,0x95,0xcb,0x10,0x7d,0x48, - 0x79,0x28,0xf8,0xb4,0xcf,0xb3,0x1,0x9d,0xe1,0x1c,0x82,0x5b,0xe0,0x18,0x9e,0x2c, - 0x57,0x99,0xd5,0x2b,0xa9,0x24,0x96,0x8f,0x24,0xc9,0x5,0xb6,0xb6,0x62,0xf6,0x7c, - 0xae,0xb4,0xbb,0xf6,0x2d,0x9e,0xd4,0xad,0x5b,0x8e,0x4c,0x4f,0x89,0xa7,0x89,0x8e, - 0xf6,0x65,0xdd,0x81,0x15,0xe8,0xc4,0xa6,0x8f,0xe4,0xc6,0xd2,0xa4,0xa5,0x32,0x5f, - 0xc,0xc8,0x46,0xc8,0xa4,0xdb,0xc0,0x4a,0x59,0x4e,0x89,0x91,0x41,0x9c,0xe5,0x9f, - 0x96,0xa5,0xf8,0x31,0xda,0x87,0x17,0xbb,0xf2,0x6,0x7,0x9e,0xed,0x6f,0x43,0xec, - 0xaf,0xc8,0xa7,0x65,0xb1,0x42,0xde,0x24,0x74,0xaf,0x6d,0xe1,0xea,0xb7,0xec,0xbe, - 0x80,0x29,0xe1,0xda,0xb9,0x17,0x48,0x32,0x99,0x82,0x7f,0x5e,0x48,0x48,0xb7,0x49, - 0x69,0x1c,0x89,0xb3,0x9d,0xc5,0xf7,0x63,0xa9,0xe4,0x32,0xaf,0xcf,0x5e,0xe6,0xcb, - 0x68,0x52,0xb0,0xf6,0x56,0xf4,0x4a,0x95,0xaf,0x78,0xf7,0x2b,0xfb,0xbb,0xf5,0x81, - 0x26,0xb2,0x58,0xbc,0x39,0x32,0x21,0x9d,0xb4,0xec,0x67,0x89,0xba,0x5b,0xf0,0xce, - 0x1f,0xb9,0xb3,0x51,0x61,0x3f,0xd5,0x76,0x47,0x45,0xc5,0x6,0x7a,0x26,0x8b,0x3a, - 0xb7,0xf8,0x31,0xa8,0x6b,0xf,0xe8,0x7b,0x3c,0x93,0x79,0x5b,0xfa,0xb2,0x69,0xf6, - 0x3d,0x9d,0xd1,0x8b,0x30,0x34,0x26,0xc4,0x79,0x92,0xc9,0x5e,0xd1,0xd8,0xaf,0x75, - 0xd0,0xe6,0xae,0x71,0xd5,0x37,0xa,0x12,0x47,0x51,0x34,0x32,0x51,0x87,0xb8,0x5a, - 0xa1,0xe7,0xbc,0xdf,0x56,0x12,0xf7,0xf9,0xda,0xa3,0x94,0x1b,0x7,0x72,0x99,0x68, - 0xa7,0xf5,0x3d,0x9e,0xde,0x4a,0xcf,0x28,0x65,0x19,0x83,0x9d,0x29,0x58,0xf1,0x83, - 0xb1,0x8,0x7b,0x2f,0x65,0x51,0xc9,0xb9,0x73,0xd8,0xd2,0x51,0x2f,0xfa,0xe,0xf8, - 0xba,0x6e,0x7f,0x59,0x53,0x6c,0x47,0x39,0x89,0x7b,0x7d,0x7f,0x4f,0xb1,0x1f,0x59, - 0xb3,0x6,0xbb,0xd5,0x64,0x6e,0x7c,0x8d,0x9a,0x2d,0xce,0x4b,0x3a,0x67,0x86,0xc2, - 0xd5,0xaf,0x9f,0x9f,0xb7,0xd3,0x3b,0xf8,0xe7,0x9d,0xcc,0x87,0x76,0x63,0x7,0xd7, - 0x7f,0xa6,0x88,0x29,0x22,0x12,0x8d,0x26,0x7e,0xca,0x5a,0x10,0x16,0x1,0x4e,0x5e, - 0x6a,0xcf,0x63,0x9e,0x2c,0x59,0xa,0x9a,0xe5,0xf2,0x15,0xe7,0x6a,0x3d,0xcf,0x1f, - 0xb7,0x63,0x82,0x7d,0xba,0x4a,0x28,0x27,0xa1,0x5a,0xc7,0x4a,0x5e,0xa3,0x2c,0x2b, - 0x9f,0xd3,0xb7,0xbb,0xef,0x65,0x9,0xc6,0x50,0x7a,0x6f,0x59,0x6e,0x2f,0xd2,0xa2, - 0xb3,0x1b,0x2c,0xe0,0xb3,0x74,0x5e,0xf,0xed,0xcf,0xd2,0xc,0x91,0xf0,0x96,0xc6, - 0xa4,0x3c,0x5d,0x6c,0x1b,0x2c,0xd,0x96,0xb5,0xdf,0x67,0x5d,0x70,0x3d,0x20,0x17, - 0x57,0xf2,0x67,0x7e,0xdb,0x6f,0xac,0xed,0x8e,0x38,0xf1,0xec,0x82,0x79,0xe0,0x92, - 0xb8,0xfd,0x15,0x51,0x3c,0xce,0xfd,0x15,0x70,0xe1,0xe5,0x78,0x2f,0x93,0x81,0x5f, - 0xfb,0x32,0xc9,0x3f,0xf7,0x65,0xc4,0xb5,0xde,0x5b,0xc5,0x3e,0xb6,0xbb,0xbd,0xc5, - 0x3c,0x50,0xed,0xff,0xe,0x63,0xf6,0x58,0xec,0x8e,0x17,0x9c,0xd3,0x7c,0x9e,0x8b, - 0xfb,0x1d,0x72,0x12,0xf8,0xdc,0xed,0x54,0xe7,0xda,0x26,0xb6,0xe5,0x7d,0x44,0x67, - 0x3a,0xed,0x3b,0xdd,0x55,0xde,0x2c,0x98,0x3c,0x16,0x3a,0xd7,0xca,0x8f,0x25,0xaa, - 0x99,0x98,0x9c,0xa8,0xdc,0x77,0x15,0xd4,0x46,0x42,0xf4,0xdb,0x2,0xc4,0xf6,0x5d, - 0x7e,0x18,0x33,0x36,0x25,0x7,0xcd,0x9f,0x8,0x12,0x27,0x97,0xed,0x86,0x3f,0x4b, - 0xde,0xb6,0xcc,0xd,0x74,0xee,0x27,0x99,0x44,0x8d,0xae,0x12,0x87,0x6,0x57,0x17, - 0x1c,0x77,0xa8,0x4e,0x5d,0x2c,0xb6,0xe,0x75,0x8c,0x14,0xa1,0xfd,0xfb,0x52,0x37, - 0x94,0x33,0x35,0x9e,0xf4,0x9d,0x2c,0x56,0x80,0x73,0x4a,0x71,0x62,0xbc,0xef,0x8d, - 0x7d,0xca,0x69,0xbc,0x95,0x84,0xb1,0x15,0x25,0x5,0xd5,0x49,0xa1,0xcc,0x3b,0xdb, - 0xbe,0x80,0xb6,0xb1,0x2,0xbc,0xf1,0xd2,0x73,0x70,0xd6,0x4f,0x9c,0xb8,0x98,0x9f, - 0xc7,0xf2,0x15,0x6b,0x93,0xaf,0x1f,0xa9,0x1d,0x79,0xb,0xc8,0xcb,0x35,0x36,0xcf, - 0x7d,0xf9,0xba,0x94,0xb2,0x7c,0x85,0xef,0xab,0xe9,0x64,0xdd,0xe3,0xc8,0x77,0x5b, - 0xfb,0xbb,0x7b,0xf3,0xc2,0x8b,0x25,0x4b,0xc7,0x4f,0x42,0x59,0x36,0x1f,0x30,0x6f, - 0xc4,0x6b,0x2a,0x2c,0xdb,0xc,0xf5,0x3a,0x75,0xa6,0x2f,0xf9,0x8d,0xca,0xe1,0x59, - 0x10,0x2c,0x96,0x4d,0xf6,0x76,0x81,0xc8,0x6c,0x7,0xcf,0x49,0x8c,0xa1,0x57,0xe2, - 0x74,0x6c,0x68,0x6f,0x3b,0xcd,0x30,0x57,0xce,0xbb,0xf,0x49,0x66,0x4d,0x2a,0xb, - 0x64,0x5d,0x0,0xf1,0xe6,0x7b,0x17,0x23,0x7f,0xbe,0x99,0x36,0x71,0x81,0x56,0xae, - 0x24,0x74,0xff,0xc0,0x36,0x53,0xc0,0xb9,0xfd,0x5b,0xac,0x5c,0x67,0x28,0x62,0x89, - 0xf0,0xdd,0x9d,0x60,0x2d,0xf3,0xbd,0x89,0xb9,0x49,0x9,0xb5,0x36,0xc2,0x8e,0xef, - 0xf0,0xe8,0x77,0x77,0x42,0x96,0x61,0x45,0x5b,0x51,0xc9,0xdd,0x88,0x91,0xbc,0xb, - 0x25,0x93,0x42,0xa8,0x38,0xc,0xb3,0x18,0xb1,0xc1,0xe1,0xd5,0xbe,0x1b,0xe9,0x2e, - 0x73,0x61,0xae,0x45,0x71,0xcd,0x94,0xf8,0xb5,0x7f,0x2b,0x62,0x5a,0x5d,0x45,0x7, - 0xff,0xd4,0x6d,0xfd,0xe6,0x15,0x58,0x72,0xcd,0x7e,0xfb,0x55,0x98,0xd5,0xed,0x87, - 0xc4,0xab,0xdf,0xe5,0x8a,0x83,0x44,0xc5,0x43,0x1d,0xd,0xdb,0x71,0x4b,0x52,0xe5, - 0x1b,0x2c,0xb2,0x92,0x9c,0x5f,0x35,0x3e,0x59,0x68,0x99,0x66,0xda,0xe6,0xf8,0xc9, - 0xf7,0x1f,0x7a,0x9c,0xad,0xc3,0x40,0x21,0xbb,0x53,0xfb,0xa1,0x70,0xc7,0xe5,0xee, - 0xb,0x6d,0xec,0x9,0x63,0x6d,0x8b,0x49,0xeb,0x3b,0xc9,0xf9,0xed,0x6e,0x7d,0x62, - 0xd2,0x39,0x53,0xe9,0xfa,0x36,0xd3,0xf7,0xe2,0xfe,0x29,0xc7,0x9f,0xbf,0x2e,0xe7, - 0x2f,0xba,0xa7,0x5b,0xe9,0x84,0x2d,0x1,0x1c,0x1b,0xcd,0xed,0x5e,0x5f,0xa7,0x1d, - 0x7c,0xb9,0x75,0x9a,0x24,0x3e,0xf4,0x89,0x32,0x2c,0xa7,0xfb,0xbf,0x2a,0x6,0xad, - 0x24,0xbe,0xf,0x54,0x16,0x2e,0xd8,0xff,0x7,0x49,0x89,0xa7,0xf1,0x64,0x46,0x76, - 0x9f,0x40,0x91,0xe5,0xad,0x2d,0x5f,0x88,0x4b,0x6e,0xb7,0x92,0xf6,0xe3,0x39,0xce, - 0xfd,0xdf,0xde,0xca,0xcf,0xcb,0x1c,0xf3,0x64,0x3e,0x56,0x14,0xf3,0x2c,0x9d,0x94, - 0xc4,0x3e,0x82,0x18,0x78,0x4f,0xc8,0x17,0xd8,0x7b,0xbc,0x30,0xb6,0xb0,0x1e,0x8a, - 0xa2,0x9a,0xab,0x55,0xbd,0xd7,0x15,0xf5,0x66,0xff,0xa9,0x5b,0x20,0xca,0xf7,0x57, - 0x29,0x6b,0xc2,0xb1,0x86,0xf3,0xb3,0x2b,0xd3,0x2e,0xef,0x74,0x81,0xce,0x84,0xca, - 0xf,0x5f,0xc7,0x6f,0x71,0x45,0xb4,0x95,0x15,0x73,0x8e,0x4e,0xbc,0x7a,0xf5,0xe7, - 0x60,0x9f,0x17,0xae,0x7,0x4a,0x64,0x7f,0xfd,0x77,0x2,0x6c,0xf,0xcc,0x8b,0xc7, - 0x7b,0xd9,0xef,0x11,0x6b,0xd6,0x67,0xb9,0xb7,0x2e,0xee,0x77,0x3b,0x2f,0x83,0xbf, - 0x51,0xf9,0xc5,0x62,0x59,0x75,0x7f,0x27,0x20,0x0,0x98,0x6a,0x43,0xfd,0x2a,0x79, - 0xce,0x65,0x89,0x71,0x97,0x36,0x9c,0xb7,0x69,0x7d,0x6f,0x26,0x28,0xb7,0x90,0x67, - 0xed,0xf6,0x39,0x2d,0x64,0x94,0xf8,0xef,0xf4,0xda,0xb5,0xca,0x67,0x85,0xc9,0x95, - 0x84,0xf1,0xb1,0xa2,0x44,0xb,0xb1,0xed,0x9d,0x75,0xae,0x8d,0x59,0xa3,0xf4,0x19, - 0x1d,0xee,0xf3,0x2,0x92,0x53,0xd9,0x5e,0x51,0xe3,0x89,0x2a,0x65,0x7a,0xf5,0xc7, - 0x43,0xe0,0xf7,0x4f,0x7b,0x4b,0xde,0xe9,0xb3,0x56,0x6,0xfa,0x8e,0x29,0x1,0xeb, - 0x37,0x31,0x7,0xc6,0xda,0xdf,0x61,0xed,0x1,0x7e,0xff,0xbd,0xb7,0xab,0x37,0xfe, - 0xbc,0x62,0xac,0x48,0x14,0x50,0xa,0x85,0x54,0xeb,0x3a,0xc3,0xfb,0xf9,0xbe,0x77, - 0xaf,0x3f,0x2f,0x7b,0xe5,0x2a,0x42,0x90,0xff,0xeb,0xfb,0x3e,0x40,0x65,0x1e,0x85, - 0xf2,0x33,0x6d,0xb4,0xbd,0xdf,0xc0,0xf2,0x4f,0xc,0x1e,0x7,0xb0,0xcc,0x60,0x79, - 0x13,0xcb,0x6f,0x31,0x61,0x1c,0xc3,0xf2,0x53,0x2c,0x7f,0xc1,0xd,0xfb,0x1a,0x40, - 0x1f,0xc2,0xed,0x7b,0x1b,0x60,0xd3,0x69,0x2c,0xbf,0x4,0xe8,0x8f,0xb0,0x60,0x3d, - 0xf0,0x65,0x2c,0xaf,0x0,0x6c,0x9e,0x2,0xd8,0x82,0x30,0xb6,0xe0,0xd8,0xd6,0xef, - 0x1,0x6c,0xc3,0xf9,0xdb,0x10,0xef,0xb6,0x6b,0x0,0xdb,0xdf,0x5,0xd8,0x81,0xf3, - 0x77,0x5c,0xc2,0x82,0x78,0x77,0xfe,0x10,0xb,0xe2,0xd8,0xf5,0x6,0xc0,0xd,0xf, - 0x1,0xec,0x46,0x18,0xbb,0x3f,0x0,0xd8,0x7b,0x12,0xcb,0x9f,0x0,0xf6,0xbd,0x83, - 0xe5,0x13,0x80,0xfd,0x38,0xff,0xc0,0x4e,0x80,0x83,0x8,0xeb,0x46,0xac,0x6f,0xc4, - 0xb5,0x37,0x5d,0xc1,0x82,0xf0,0x23,0x5c,0x73,0x68,0x2b,0x16,0x9c,0x7b,0x18,0xf9, - 0x39,0xfc,0x37,0x80,0x9b,0x9f,0xc0,0xf2,0x57,0x80,0x23,0x5f,0xc2,0xf2,0x6d,0x2c, - 0xc8,0xeb,0x2d,0x3f,0xc2,0x82,0x34,0xdc,0x8a,0xf4,0xdd,0x8a,0xb4,0xdd,0xf6,0x12, - 0xc0,0x51,0x94,0xc3,0x51,0x9c,0x7f,0xc,0xe1,0x1e,0x43,0xfe,0x6e,0x7f,0x4,0xb, - 0xf2,0x7d,0x7,0xae,0xbf,0xf3,0x28,0xc0,0x20,0xd6,0x43,0x58,0xf,0xa1,0xac,0x87, - 0x71,0xee,0x30,0xca,0x75,0x18,0xe5,0x37,0x72,0x46,0xfe,0x6f,0xf5,0xbf,0x1,0xb1, - 0xe0,0x76,0x4a, - // /media/stoned/SHARED/Git/AO2-Client/resource/translations/ao_de.qm - 0x0,0x0,0xb4,0x4, - 0x3c, - 0xb8,0x64,0x18,0xca,0xef,0x9c,0x95,0xcd,0x21,0x1c,0xbf,0x60,0xa1,0xbd,0xdd,0xa7, - 0x0,0x0,0x0,0x5,0x64,0x65,0x5f,0x44,0x45,0x42,0x0,0x0,0x8,0xd8,0x0,0x0, - 0x5,0x4f,0x0,0x0,0xa8,0xc3,0x0,0x0,0x44,0x3d,0x0,0x0,0x58,0x7f,0x0,0x0, - 0x48,0xa,0x0,0x0,0x16,0xc5,0x0,0x0,0x57,0x85,0x0,0x0,0x7c,0xe4,0x0,0x0, - 0x59,0xd8,0x0,0x0,0x8c,0xa7,0x0,0x0,0x5f,0xc3,0x0,0x0,0xa9,0xf8,0x0,0x4, - 0xd3,0x0,0x0,0x0,0x71,0x73,0x0,0x5,0x48,0x35,0x0,0x0,0x78,0x6,0x0,0x5, - 0x48,0x35,0x0,0x0,0xa8,0x9d,0x0,0x5,0x56,0x45,0x0,0x0,0x79,0x2e,0x0,0x5, - 0x7b,0xba,0x0,0x0,0x3b,0xb1,0x0,0x1d,0xb,0x21,0x0,0x0,0xa9,0xbd,0x0,0x30, - 0x7f,0x4a,0x0,0x0,0x1a,0xe,0x0,0x33,0x9c,0xa,0x0,0x0,0x1c,0xb6,0x0,0x47, - 0x96,0xc4,0x0,0x0,0xa5,0xa1,0x0,0x48,0xba,0xff,0x0,0x0,0x14,0xd9,0x0,0x49, - 0x30,0x73,0x0,0x0,0x5c,0xf3,0x0,0x4c,0x99,0x62,0x0,0x0,0x6f,0xe2,0x0,0x4c, - 0x99,0x62,0x0,0x0,0xaa,0x53,0x0,0x4e,0xb8,0x84,0x0,0x0,0x72,0x10,0x0,0x54, - 0xc9,0xf3,0x0,0x0,0x77,0xd9,0x0,0x5a,0x81,0xbe,0x0,0x0,0x91,0x50,0x0,0x5b, - 0xee,0x2e,0x0,0x0,0x74,0x8d,0x0,0x5c,0xcf,0x9e,0x0,0x0,0x72,0xec,0x0,0x73, - 0x9c,0x8e,0x0,0x0,0x4f,0x36,0x0,0x74,0x22,0x2e,0x0,0x0,0x2b,0xf9,0x0,0x81, - 0x97,0x4e,0x0,0x0,0x43,0x6d,0x0,0x8b,0xa2,0x99,0x0,0x0,0x85,0xd4,0x0,0x9a, - 0x6c,0xca,0x0,0x0,0x1a,0x80,0x0,0xa0,0x39,0x3e,0x0,0x0,0x64,0xe,0x0,0xa5, - 0x9e,0x4e,0x0,0x0,0x0,0x58,0x0,0xa9,0xc1,0x3e,0x0,0x0,0x55,0x6b,0x0,0xb7, - 0xb7,0x3e,0x0,0x0,0x8b,0x27,0x0,0xc6,0xda,0xde,0x0,0x0,0x2f,0xd3,0x0,0xd1, - 0x29,0xfe,0x0,0x0,0x1f,0xdc,0x0,0xf4,0x21,0x9e,0x0,0x0,0x9b,0x5b,0x1,0x8, - 0x6f,0x91,0x0,0x0,0x8e,0x84,0x1,0x8,0xc3,0x9a,0x0,0x0,0x19,0x67,0x1,0xb, - 0xd3,0x5e,0x0,0x0,0x77,0x43,0x1,0xe,0x4a,0x51,0x0,0x0,0x61,0xb8,0x1,0x11, - 0x0,0x3,0x0,0x0,0x68,0x8b,0x1,0x36,0x85,0x9e,0x0,0x0,0x68,0xf4,0x1,0x6a, - 0x19,0x1a,0x0,0x0,0x47,0x77,0x1,0x6d,0x91,0xe4,0x0,0x0,0x96,0x11,0x1,0x71, - 0x35,0x8e,0x0,0x0,0x91,0x81,0x1,0x71,0xfc,0x57,0x0,0x0,0xa3,0xcb,0x1,0x90, - 0x8a,0xff,0x0,0x0,0xa6,0xb3,0x1,0x93,0xcc,0xe7,0x0,0x0,0x8e,0x3d,0x1,0xc6, - 0x62,0xee,0x0,0x0,0x1b,0x5f,0x1,0xd4,0x4c,0xee,0x0,0x0,0x25,0xd6,0x1,0xec, - 0xca,0xde,0x0,0x0,0x5f,0x55,0x1,0xf4,0xee,0x2e,0x0,0x0,0x6a,0xd5,0x1,0xf6, - 0xca,0x3e,0x0,0x0,0x3d,0x93,0x2,0x21,0x83,0xba,0x0,0x0,0x16,0x7,0x2,0x2a, - 0xb9,0xea,0x0,0x0,0x46,0xa0,0x2,0x48,0x6f,0xbe,0x0,0x0,0x7f,0x5c,0x2,0x5b, - 0x7c,0x2e,0x0,0x0,0x84,0xef,0x2,0x61,0xf3,0x4e,0x0,0x0,0x3,0xc0,0x2,0x77, - 0xf8,0xaa,0x0,0x0,0x15,0xc,0x2,0x7c,0x19,0x8a,0x0,0x0,0x16,0x4f,0x2,0x89, - 0x29,0x7e,0x0,0x0,0x51,0x1b,0x2,0x89,0xc1,0x81,0x0,0x0,0xa1,0x27,0x2,0x92, - 0x1b,0xfe,0x0,0x0,0x96,0x41,0x2,0xb5,0x2d,0xae,0x0,0x0,0x5d,0x20,0x2,0xc5, - 0x76,0x61,0x0,0x0,0x0,0x0,0x2,0xc6,0xd5,0xca,0x0,0x0,0x15,0xc1,0x2,0xe6, - 0xd3,0xa2,0x0,0x0,0x5e,0xc7,0x2,0xf7,0xb3,0xca,0x0,0x0,0x33,0xec,0x3,0x2a, - 0x59,0x7e,0x0,0x0,0x81,0xbd,0x3,0x32,0x44,0x60,0x0,0x0,0x2d,0xe6,0x3,0x37, - 0x52,0xde,0x0,0x0,0x63,0x2f,0x3,0x3e,0x21,0x33,0x0,0x0,0x16,0xf2,0x3,0x4c, - 0x3,0x4e,0x0,0x0,0x69,0xb7,0x3,0x4f,0x76,0x7e,0x0,0x0,0x84,0x39,0x3,0x57, - 0xb0,0x17,0x0,0x0,0x1,0xb7,0x3,0x57,0xb0,0x17,0x0,0x0,0xa8,0x72,0x3,0x69, - 0x45,0x7a,0x0,0x0,0x47,0x24,0x3,0x74,0x34,0x8a,0x0,0x0,0x17,0xa0,0x3,0xba, - 0xa8,0xe5,0x0,0x0,0x74,0x40,0x3,0xca,0x97,0x85,0x0,0x0,0x77,0xc,0x3,0xd6, - 0xdf,0x45,0x0,0x0,0x3b,0x5d,0x3,0xdb,0x87,0x6a,0x0,0x0,0x34,0x27,0x3,0xe3, - 0x60,0x4a,0x0,0x0,0x33,0x22,0x3,0xf4,0x58,0xee,0x0,0x0,0x2e,0xc1,0x3,0xf6, - 0xdf,0x45,0x0,0x0,0x7f,0xe,0x4,0x6,0x4a,0xb1,0x0,0x0,0x72,0x74,0x4,0x8, - 0xf0,0xbe,0x0,0x0,0x83,0x3d,0x4,0x3f,0x13,0xca,0x0,0x0,0x4a,0xd3,0x4,0x49, - 0x96,0x8a,0x0,0x0,0x17,0xf4,0x4,0x50,0x17,0xc4,0x0,0x0,0xa,0xe,0x4,0x80, - 0xda,0x34,0x0,0x0,0x5e,0x52,0x4,0x82,0xfd,0x59,0x0,0x0,0x82,0xef,0x4,0x86, - 0xaf,0x2e,0x0,0x0,0xb,0xed,0x4,0x87,0xdc,0xba,0x0,0x0,0xf,0x3f,0x4,0x92, - 0x8,0xb2,0x0,0x0,0x71,0xa5,0x4,0x92,0x65,0x9a,0x0,0x0,0x47,0xd7,0x4,0x93, - 0x7,0x6a,0x0,0x0,0x16,0x8f,0x4,0x98,0x49,0xbc,0x0,0x0,0xa6,0x81,0x4,0x98, - 0xa0,0x47,0x0,0x0,0x17,0x35,0x4,0x98,0xa0,0x47,0x0,0x0,0x5f,0x9b,0x4,0x9c, - 0x6,0xae,0x0,0x0,0x54,0xc6,0x4,0xb8,0x6b,0xe3,0x0,0x0,0xa4,0x7a,0x4,0xd2, - 0xef,0xfe,0x0,0x0,0x1e,0x31,0x4,0xdd,0x4a,0xde,0x0,0x0,0x28,0xed,0x4,0xe0, - 0xf6,0x35,0x0,0x0,0x7d,0x48,0x4,0xeb,0x2f,0xa,0x0,0x0,0x32,0xe5,0x4,0xf6, - 0x74,0xde,0x0,0x0,0x1f,0xc,0x5,0x1b,0xad,0x8a,0x0,0x0,0x32,0x5,0x5,0x1c, - 0x96,0x5a,0x0,0x0,0x32,0x3f,0x5,0x38,0xaa,0xc2,0x0,0x0,0x76,0xdc,0x5,0x4c, - 0x9f,0x6a,0x0,0x0,0x38,0x91,0x5,0x56,0xaf,0x95,0x0,0x0,0xaa,0xc9,0x5,0x61, - 0x3,0x44,0x0,0x0,0xb,0xf,0x5,0x96,0x60,0xba,0x0,0x0,0x14,0x84,0x5,0x9b, - 0x88,0x98,0x0,0x0,0x84,0xc1,0x5,0x9b,0x88,0x98,0x0,0x0,0xa9,0x57,0x5,0x9c, - 0x9c,0xc2,0x0,0x0,0x85,0xa4,0x5,0xae,0xc3,0x8a,0x0,0x0,0x4d,0xce,0x5,0xcd, - 0x30,0x15,0x0,0x0,0xa8,0xe7,0x6,0x26,0x54,0x91,0x0,0x0,0x72,0xb0,0x6,0x2d, - 0x36,0x3e,0x0,0x0,0x57,0x77,0x6,0x60,0x3a,0x14,0x0,0x0,0x93,0x9a,0x6,0x73, - 0x98,0x7e,0x0,0x0,0x99,0x1a,0x6,0x83,0xdc,0x2e,0x0,0x0,0x58,0xa6,0x6,0x86, - 0x8a,0xd9,0x0,0x0,0x74,0xef,0x6,0x8b,0xb5,0x54,0x0,0x0,0x95,0xde,0x6,0xb6, - 0x6c,0xfe,0x0,0x0,0x82,0x84,0x6,0xc6,0x1c,0x9e,0x0,0x0,0x13,0xa5,0x6,0xd8, - 0xf0,0x5e,0x0,0x0,0x35,0x20,0x6,0xe4,0x3a,0x33,0x0,0x0,0x8d,0xc5,0x6,0xf2, - 0x42,0x9a,0x0,0x0,0x4b,0x1a,0x6,0xf8,0x3f,0x1e,0x0,0x0,0x6d,0x4b,0x7,0x1f, - 0x3b,0x1e,0x0,0x0,0x9e,0xbd,0x7,0x55,0xb3,0xce,0x0,0x0,0x12,0x53,0x7,0x5d, - 0x43,0x91,0x0,0x0,0x90,0xdc,0x7,0x5e,0xae,0x64,0x0,0x0,0x57,0xdb,0x7,0x5e, - 0xae,0x74,0x0,0x0,0x58,0x2f,0x7,0x5f,0x40,0x71,0x0,0x0,0x91,0x16,0x7,0x64, - 0xf9,0x6f,0x0,0x0,0xa5,0x65,0x7,0x6a,0xd3,0xde,0x0,0x0,0x76,0x5a,0x7,0x7e, - 0x12,0xce,0x0,0x0,0x91,0xeb,0x7,0x8b,0x84,0xad,0x0,0x0,0x7d,0xb,0x7,0x92, - 0x89,0x9,0x0,0x0,0x88,0xd1,0x7,0x93,0x1e,0x9e,0x0,0x0,0x8b,0xd7,0x7,0x9f, - 0x6c,0xb3,0x0,0x0,0xa4,0xdd,0x7,0xad,0x58,0x6e,0x0,0x0,0x5d,0xeb,0x7,0xd3, - 0x14,0x2e,0x0,0x0,0x45,0x4a,0x7,0xdc,0x3d,0xbe,0x0,0x0,0x20,0xe5,0x7,0xe0, - 0x1a,0x4f,0x0,0x0,0x6e,0xcc,0x7,0xf9,0x3b,0xfa,0x0,0x0,0x9,0x67,0x8,0x2b, - 0x9,0x3a,0x0,0x0,0x48,0x3b,0x8,0x2e,0x78,0xc4,0x0,0x0,0x5f,0x11,0x8,0x3c, - 0x76,0x59,0x0,0x0,0x1b,0x29,0x8,0x40,0xf,0xbe,0x0,0x0,0x96,0xe2,0x8,0x48, - 0x10,0x3e,0x0,0x0,0x48,0xbc,0x8,0x49,0x6f,0x6e,0x0,0x0,0x80,0x8c,0x8,0x66, - 0x21,0xea,0x0,0x0,0x18,0x4b,0x8,0x72,0x3c,0xfe,0x0,0x0,0x6b,0xe6,0x8,0x82, - 0xd3,0xb4,0x0,0x0,0xa,0x64,0x8,0x99,0x50,0xfe,0x0,0x0,0xf,0x9b,0x8,0xaa, - 0xe3,0xe4,0x0,0x0,0x7a,0x75,0x8,0xb3,0x26,0x9e,0x0,0x0,0x27,0x1b,0x8,0xb8, - 0xa6,0x4a,0x0,0x0,0x7e,0x28,0x8,0xcb,0x30,0x7e,0x0,0x0,0x67,0x65,0x8,0xdc, - 0xf5,0x2e,0x0,0x0,0x58,0xff,0x8,0xe0,0x7,0x3e,0x0,0x0,0x3a,0xa2,0x8,0xe0, - 0x7,0x3e,0x0,0x0,0x7e,0x59,0x9,0x4,0x4f,0x11,0x0,0x0,0x7,0xa,0x9,0x13, - 0x10,0xee,0x0,0x0,0x4b,0x6b,0x9,0x25,0x56,0x7e,0x0,0x0,0x1d,0x0,0x9,0x2d, - 0xc9,0x42,0x0,0x0,0x1,0xea,0x9,0x3c,0x6,0xae,0x0,0x0,0x60,0xf8,0x9,0x3d, - 0xef,0x3a,0x0,0x0,0x34,0xd6,0x9,0x42,0x7b,0xe1,0x0,0x0,0xa3,0x8c,0x9,0x45, - 0x92,0xfe,0x0,0x0,0x39,0xf2,0x9,0x4c,0x8f,0x69,0x0,0x0,0x5b,0x9b,0x9,0x5c, - 0xb,0x5e,0x0,0x0,0x8f,0x96,0x9,0x65,0x8e,0x11,0x0,0x0,0xaa,0x88,0x9,0x8a, - 0x4,0xea,0x0,0x0,0x17,0x69,0x9,0x8d,0xf6,0xe1,0x0,0x0,0x79,0x5a,0x9,0xa2, - 0x27,0x1e,0x0,0x0,0x9e,0x62,0x9,0xae,0xf9,0x3a,0x0,0x0,0x4a,0x90,0x9,0xbb, - 0x17,0xd1,0x0,0x0,0x8,0x61,0x9,0xc8,0xb4,0xb9,0x0,0x0,0x73,0xf8,0x9,0xf7, - 0x73,0xca,0x0,0x0,0x34,0x78,0x9,0xf8,0xba,0xe,0x0,0x0,0x70,0x11,0x9,0xfb, - 0x69,0xba,0x0,0x0,0x19,0xa,0x9,0xfe,0x27,0x8a,0x0,0x0,0x15,0x53,0xa,0x21, - 0x3c,0x1e,0x0,0x0,0x56,0xa6,0xa,0x25,0xf3,0x8e,0x0,0x0,0x11,0x1c,0xa,0x30, - 0x34,0xee,0x0,0x0,0x9a,0x51,0xa,0x30,0x34,0xee,0x0,0x0,0xaa,0x19,0xa,0x35, - 0x5e,0x71,0x0,0x0,0x5e,0x82,0xa,0x50,0xfd,0xce,0x0,0x0,0x2,0xa4,0xa,0x7b, - 0x45,0x52,0x0,0x0,0xa9,0x16,0xa,0x85,0xfd,0xa9,0x0,0x0,0x7a,0x2b,0xa,0x95, - 0x12,0xfe,0x0,0x0,0x37,0x1e,0xa,0x9c,0x9,0x81,0x0,0x0,0xa2,0xdc,0xa,0xb0, - 0xb4,0xb5,0x0,0x0,0x59,0xa7,0xa,0xbc,0x8c,0x74,0x0,0x0,0x6b,0x3f,0xa,0xd7, - 0x53,0x8a,0x0,0x0,0x33,0x85,0xa,0xe3,0xe2,0x14,0x0,0x0,0x7a,0xab,0xa,0xe5, - 0x47,0xba,0x0,0x0,0x38,0xc7,0xa,0xf8,0x17,0x4,0x0,0x0,0xa,0xb5,0xb,0x14, - 0x21,0x9,0x0,0x0,0x5a,0x9a,0xb,0x2a,0x64,0x7e,0x0,0x0,0x9c,0xd0,0xb,0x33, - 0xc3,0x8e,0x0,0x0,0x6d,0xe7,0xb,0xa3,0x6,0x39,0x0,0x0,0xa5,0x17,0xb,0xa7, - 0x67,0xe7,0x0,0x0,0xb,0x72,0xb,0xaa,0xd1,0x2,0x0,0x0,0x8e,0x4,0xb,0xaf, - 0xbd,0x1,0x0,0x0,0x79,0x96,0xb,0xb7,0xd2,0xfe,0x0,0x0,0x27,0xf8,0xb,0xc1, - 0x4f,0x8e,0x0,0x0,0x50,0xd,0xb,0xc8,0x17,0x9a,0x0,0x0,0x31,0xa7,0xb,0xcc, - 0x5d,0x2a,0x0,0x0,0x19,0xc8,0xb,0xd2,0xf0,0x2e,0x0,0x0,0x0,0xbb,0xb,0xf8, - 0x7e,0x2e,0x0,0x0,0x6c,0x8e,0xc,0x1b,0xfe,0x7e,0x0,0x0,0x52,0x73,0xc,0x2d, - 0x1a,0xf1,0x0,0x0,0xa3,0x4e,0xc,0x38,0x78,0xde,0x0,0x0,0x40,0xc7,0xc,0x3a, - 0x32,0x3e,0x0,0x0,0x4e,0x4,0xc,0x46,0x2c,0xc3,0x0,0x0,0x8f,0x8,0xc,0x54, - 0x5d,0xa2,0x0,0x0,0x5f,0xc7,0xc,0x55,0xec,0x1e,0x0,0x0,0x39,0x2f,0xc,0x65, - 0x27,0x6e,0x0,0x0,0x4c,0xe6,0xc,0x78,0x8e,0x4e,0x0,0x0,0x7b,0x2f,0xc,0x7a, - 0x74,0xbe,0x0,0x0,0x70,0xe1,0xc,0x7f,0xf2,0x1e,0x0,0x0,0x5b,0xe6,0xc,0x86, - 0x7,0x3e,0x0,0x0,0x60,0x15,0xc,0xbb,0x1,0x73,0x0,0x0,0x46,0x5a,0xc,0xbb, - 0x1,0x73,0x0,0x0,0x8c,0x67,0xc,0xbb,0x1,0x73,0x0,0x0,0xa9,0x81,0xc,0xbd, - 0x72,0x9e,0x0,0x0,0xa2,0x37,0xc,0xe0,0xa9,0xbe,0x0,0x0,0x78,0xb4,0xc,0xe2, - 0xdf,0x55,0x0,0x0,0x6b,0x74,0xc,0xf9,0x5e,0xae,0x0,0x0,0x92,0xb3,0xc,0xfe, - 0x9c,0x9e,0x0,0x0,0x2d,0x40,0xd,0x4,0x5f,0x59,0x0,0x0,0x75,0x44,0xd,0xf, - 0x4e,0x6e,0x0,0x0,0x42,0x3,0xd,0x4c,0x1d,0x31,0x0,0x0,0x79,0xd2,0xd,0x58, - 0x98,0x6e,0x0,0x0,0x99,0xb6,0xd,0x9a,0x50,0xf3,0x0,0x0,0x78,0x30,0xd,0xd4, - 0x95,0x41,0x0,0x0,0x9f,0x2f,0xd,0xd7,0xfc,0x1e,0x0,0x0,0x23,0xee,0xd,0xe6, - 0x8f,0x6a,0x0,0x0,0x1a,0xbc,0xd,0xec,0xf9,0xc3,0x0,0x0,0x71,0x1a,0xd,0xfd, - 0xd,0x22,0x0,0x0,0x9,0x19,0xe,0x13,0x1f,0xfe,0x0,0x0,0x3f,0xa2,0xe,0x30, - 0x3,0xa5,0x0,0x0,0xa4,0x1a,0xe,0x30,0x6d,0x3e,0x0,0x0,0x53,0x9c,0xe,0x44, - 0x82,0x3a,0x0,0x0,0x32,0x73,0xe,0x7e,0xd9,0xce,0x0,0x0,0x41,0x5e,0xe,0x87, - 0xe7,0x64,0x0,0x0,0x9,0xae,0xe,0x89,0xf0,0x4e,0x0,0x0,0x8c,0xce,0xe,0x9f, - 0x90,0x9e,0x0,0x0,0x59,0xe3,0xe,0x9f,0x90,0x9e,0x0,0x0,0xa5,0xc8,0xe,0xa8, - 0x94,0x77,0x0,0x0,0x7a,0xe3,0xe,0xb1,0x2b,0xce,0x0,0x0,0x4e,0xa7,0xe,0xb2, - 0x85,0xee,0x0,0x0,0x2a,0x4c,0xe,0xb4,0x8c,0x1,0x0,0x0,0x7,0xaf,0xe,0xc0, - 0x3b,0xf1,0x0,0x0,0x72,0x3d,0xe,0xd0,0x9d,0x8e,0x0,0x0,0x7b,0xdb,0xe,0xdc, - 0xdd,0xce,0x0,0x0,0x22,0xe2,0xe,0xf1,0x38,0xce,0x0,0x0,0x81,0x31,0xe,0xff, - 0xbf,0x42,0x0,0x0,0x2,0x4c,0xf,0x2,0x2,0x21,0x0,0x0,0x97,0xdb,0xf,0x47, - 0x35,0x8e,0x0,0x0,0x21,0xe0,0xf,0x48,0xb8,0x5a,0x0,0x0,0x18,0xb3,0xf,0x55, - 0xd9,0xd1,0x0,0x0,0x6a,0x82,0xf,0x60,0xe2,0x5e,0x0,0x0,0x3b,0xe1,0xf,0x66, - 0x94,0x9e,0x0,0x0,0x67,0x31,0xf,0x6e,0x43,0xa5,0x0,0x0,0x8d,0x89,0xf,0xa1, - 0x93,0xca,0x0,0x0,0x46,0xe7,0xf,0xaf,0x1f,0x4f,0x0,0x0,0x6f,0x57,0xf,0xb3, - 0xad,0xaa,0x0,0x0,0x3a,0x64,0xf,0xc6,0x3f,0xf3,0x0,0x0,0x70,0x7c,0xf,0xcb, - 0x37,0xde,0x0,0x0,0x24,0xef,0xf,0xd2,0xf,0x4e,0x0,0x0,0x30,0xd6,0xf,0xd3, - 0x69,0x3e,0x0,0x0,0x42,0xf5,0xf,0xe9,0x8a,0xbe,0x0,0x0,0x90,0x16,0xf,0xef, - 0x55,0x95,0x0,0x0,0x90,0x95,0xf,0xf4,0x81,0xe1,0x0,0x0,0x9a,0x88,0xf,0xfd, - 0x3b,0x5a,0x0,0x0,0xe,0xeb,0x69,0x0,0x0,0xab,0x1,0x3,0x0,0x0,0x0,0x24, - 0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79, - 0x0,0x20,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20, - 0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x41,0x74, - 0x74,0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x25,0x31, - 0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x28,0x0,0x56,0x0,0x6f,0x0,0x6d,0x0,0x20, - 0x0,0x53,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x67, - 0x0,0x65,0x0,0x74,0x0,0x72,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x74,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x19,0x44,0x69,0x73,0x63,0x6f,0x6e, - 0x6e,0x65,0x63,0x74,0x65,0x64,0x20,0x66,0x72,0x6f,0x6d,0x20,0x73,0x65,0x72,0x76, - 0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x9a,0x0,0x46,0x0,0x65,0x0, - 0x68,0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x69,0x0, - 0x20,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x56,0x0,0x65,0x0,0x72,0x0, - 0x62,0x0,0x69,0x0,0x6e,0x0,0x64,0x0,0x75,0x0,0x6e,0x0,0x67,0x0,0x20,0x0, - 0x7a,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x4d,0x0,0x61,0x0,0x73,0x0,0x74,0x0, - 0x65,0x0,0x72,0x0,0x20,0x0,0x53,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0, - 0x72,0x0,0x2e,0x0,0x20,0x0,0x45,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x75,0x0, - 0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x73,0x0, - 0x75,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x25,0x0, - 0x31,0x0,0x20,0x0,0x53,0x0,0x65,0x0,0x6b,0x0,0x75,0x0,0x6e,0x0,0x64,0x0, - 0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x40,0x45, - 0x72,0x72,0x6f,0x72,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6e,0x67,0x20, - 0x74,0x6f,0x20,0x6d,0x61,0x73,0x74,0x65,0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72, - 0x2e,0x20,0x57,0x69,0x6c,0x6c,0x20,0x74,0x72,0x79,0x20,0x61,0x67,0x61,0x69,0x6e, - 0x20,0x69,0x6e,0x20,0x25,0x31,0x20,0x73,0x65,0x63,0x6f,0x6e,0x64,0x73,0x2e,0x7, - 0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x1,0x3,0x0,0x0,0x0,0xa,0x0,0x4c,0x0,0x61,0x0,0x64,0x0,0x65,0x0, - 0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4c,0x6f,0x61,0x64,0x69, - 0x6e,0x67,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x4c,0x0,0x61,0x0,0x64, - 0x0,0x65,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x6b, - 0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x3a,0x0,0xa,0x0,0x25,0x0,0x31, - 0x0,0x2f,0x0,0x25,0x0,0x32,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x14, - 0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x20,0x63,0x68,0x61,0x72,0x73,0x3a,0xa,0x25, - 0x31,0x2f,0x25,0x32,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x22,0x0,0x4c,0x0,0x61, - 0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x4d,0x0,0x75,0x0,0x73,0x0,0x69,0x0,0x6b, - 0x0,0x3a,0x0,0xa,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x14,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x20, - 0x6d,0x75,0x73,0x69,0x63,0x3a,0xa,0x25,0x31,0x2f,0x25,0x32,0x7,0x0,0x0,0x0, - 0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3, - 0x0,0x0,0x0,0xaa,0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x69,0x0,0x6f, - 0x0,0x6e,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x74, - 0x0,0x21,0x0,0x20,0x0,0x44,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20, - 0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x3a, - 0x0,0x20,0x0,0x25,0x0,0x31,0x0,0xa,0x0,0x42,0x0,0x69,0x0,0x74,0x0,0x74, - 0x0,0x65,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x73,0x0,0x75,0x0,0x63,0x0,0x68, - 0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x63,0x0,0x65,0x0,0x61,0x0,0x74,0x0,0x74, - 0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79,0x0,0x6f,0x0,0x6e,0x0,0x6c, - 0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x2e,0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x20, - 0x0,0x66,0x0,0xfc,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20, - 0x0,0x55,0x0,0x70,0x0,0x64,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x50,0x4f,0x75,0x74,0x64,0x61,0x74,0x65,0x64, - 0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x21,0x20,0x59,0x6f,0x75,0x72,0x20,0x76, - 0x65,0x72,0x73,0x69,0x6f,0x6e,0x3a,0x20,0x25,0x31,0xa,0x50,0x6c,0x65,0x61,0x73, - 0x65,0x20,0x67,0x6f,0x20,0x74,0x6f,0x20,0x61,0x63,0x65,0x61,0x74,0x74,0x6f,0x72, - 0x6e,0x65,0x79,0x6f,0x6e,0x6c,0x69,0x6e,0x65,0x2e,0x63,0x6f,0x6d,0x20,0x74,0x6f, - 0x20,0x75,0x70,0x64,0x61,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41, - 0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x2,0x6, - 0x0,0x45,0x0,0x73,0x0,0x20,0x0,0x67,0x0,0x61,0x0,0x62,0x0,0x20,0x0,0x65, - 0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x46,0x0,0x65,0x0,0x68, - 0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x69,0x0,0x6d, - 0x0,0x20,0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x62,0x0,0x69,0x0,0x6e,0x0,0x64, - 0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x4d, - 0x0,0x61,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x53,0x0,0x65, - 0x0,0x72,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x2e,0x0,0xa,0x0,0x57,0x0,0x69, - 0x0,0x72,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x6e, - 0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x68,0x0,0x72, - 0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x4d,0x0,0x61,0x0,0x73,0x0,0x74, - 0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x53,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65, - 0x0,0x72,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x41,0x0,0x75,0x0,0x73, - 0x0,0x66,0x0,0xe4,0x0,0x6c,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x7a,0x0,0x75, - 0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x68,0x0,0x69,0x0,0x6e,0x0,0x64, - 0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x64, - 0x0,0x6f,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x74,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x43,0x0,0x6c,0x0,0x69,0x0,0x65, - 0x0,0x6e,0x0,0x74,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x65,0x0,0x20, - 0x0,0x4d,0x0,0xf6,0x0,0x67,0x0,0x6c,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x6b, - 0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x69, - 0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0x66, - 0x0,0x69,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x72, - 0x0,0x73,0x0,0x63,0x0,0x68,0x0,0xf6,0x0,0x70,0x0,0x66,0x0,0x74,0x0,0x2e, - 0x0,0xa,0x0,0x42,0x0,0x69,0x0,0x74,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x70, - 0x0,0x72,0x0,0xfc,0x0,0x66,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x69, - 0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x49,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72, - 0x0,0x6e,0x0,0x65,0x0,0x74,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x62,0x0,0x69, - 0x0,0x6e,0x0,0x64,0x0,0x75,0x0,0x6e,0x0,0x67,0x0,0x20,0x0,0x75,0x0,0x6e, - 0x0,0x64,0x0,0x20,0x0,0x46,0x0,0x69,0x0,0x72,0x0,0x65,0x0,0x77,0x0,0x61, - 0x0,0x6c,0x0,0x6c,0x0,0x2c,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x20, - 0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x75,0x0,0x63,0x0,0x68,0x0,0x65, - 0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x65, - 0x0,0x75,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x1,0x22, - 0x54,0x68,0x65,0x72,0x65,0x20,0x77,0x61,0x73,0x20,0x61,0x6e,0x20,0x65,0x72,0x72, - 0x6f,0x72,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f, - 0x20,0x74,0x68,0x65,0x20,0x6d,0x61,0x73,0x74,0x65,0x72,0x20,0x73,0x65,0x72,0x76, - 0x65,0x72,0x2e,0xa,0x57,0x65,0x20,0x64,0x65,0x70,0x6c,0x6f,0x79,0x20,0x6d,0x75, - 0x6c,0x74,0x69,0x70,0x6c,0x65,0x20,0x6d,0x61,0x73,0x74,0x65,0x72,0x20,0x73,0x65, - 0x72,0x76,0x65,0x72,0x73,0x20,0x74,0x6f,0x20,0x6d,0x69,0x74,0x69,0x67,0x61,0x74, - 0x65,0x20,0x61,0x6e,0x79,0x20,0x70,0x6f,0x73,0x73,0x69,0x62,0x6c,0x65,0x20,0x64, - 0x6f,0x77,0x6e,0x74,0x69,0x6d,0x65,0x2c,0x20,0x62,0x75,0x74,0x20,0x74,0x68,0x65, - 0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x73,0x20, - 0x74,0x6f,0x20,0x68,0x61,0x76,0x65,0x20,0x65,0x78,0x68,0x61,0x75,0x73,0x74,0x65, - 0x64,0x20,0x61,0x6c,0x6c,0x20,0x70,0x6f,0x73,0x73,0x69,0x62,0x6c,0x65,0x20,0x6d, - 0x65,0x74,0x68,0x6f,0x64,0x73,0x20,0x6f,0x66,0x20,0x66,0x69,0x6e,0x64,0x69,0x6e, - 0x67,0x20,0x61,0x6e,0x64,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6e,0x67, - 0x20,0x74,0x6f,0x20,0x6f,0x6e,0x65,0x2e,0xa,0x50,0x6c,0x65,0x61,0x73,0x65,0x20, - 0x63,0x68,0x65,0x63,0x6b,0x20,0x79,0x6f,0x75,0x72,0x20,0x49,0x6e,0x74,0x65,0x72, - 0x6e,0x65,0x74,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61, - 0x6e,0x64,0x20,0x66,0x69,0x72,0x65,0x77,0x61,0x6c,0x6c,0x2c,0x20,0x61,0x6e,0x64, - 0x20,0x70,0x6c,0x65,0x61,0x73,0x65,0x20,0x74,0x72,0x79,0x20,0x61,0x67,0x61,0x69, - 0x6e,0x2e,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x5a,0x0,0x44,0x0,0x75,0x0,0x20, - 0x0,0x62,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x6e, - 0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x6d,0x0,0x20, - 0x0,0x53,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x76, - 0x0,0x65,0x0,0x72,0x0,0x62,0x0,0x61,0x0,0x6e,0x0,0x6e,0x0,0x74,0x0,0x2e, - 0x0,0xa,0x0,0x47,0x0,0x72,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x3a,0x0,0x20, - 0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x29,0x59,0x6f, - 0x75,0x20,0x61,0x72,0x65,0x20,0x62,0x61,0x6e,0x6e,0x65,0x64,0x20,0x6f,0x6e,0x20, - 0x74,0x68,0x69,0x73,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0xa,0x52,0x65,0x61, - 0x73,0x6f,0x6e,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70, - 0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x60,0x0, - 0x44,0x0,0x75,0x0,0x20,0x0,0x77,0x0,0x75,0x0,0x72,0x0,0x64,0x0,0x65,0x0, - 0x73,0x0,0x74,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x6e,0x0,0x20,0x0,0x64,0x0, - 0x69,0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x53,0x0,0x65,0x0, - 0x72,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x72,0x0, - 0x62,0x0,0x61,0x0,0x6e,0x0,0x6e,0x0,0x74,0x0,0x2e,0x0,0xa,0x0,0x47,0x0, - 0x72,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x30,0x59,0x6f,0x75,0x20,0x68,0x61,0x76, - 0x65,0x20,0x62,0x65,0x65,0x6e,0x20,0x62,0x61,0x6e,0x6e,0x65,0x64,0x20,0x66,0x72, - 0x6f,0x6d,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0xa,0x52, - 0x65,0x61,0x73,0x6f,0x6e,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xd,0x41,0x4f, - 0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0, - 0x66,0x0,0x44,0x0,0x75,0x0,0x20,0x0,0x77,0x0,0x75,0x0,0x72,0x0,0x64,0x0, - 0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x6e,0x0,0x20,0x0, - 0x64,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x53,0x0, - 0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x67,0x0,0x65,0x0, - 0x73,0x0,0x63,0x0,0x68,0x0,0x6d,0x0,0x69,0x0,0x73,0x0,0x73,0x0,0x65,0x0, - 0x6e,0x0,0x2e,0x0,0xa,0x0,0x47,0x0,0x72,0x0,0x75,0x0,0x6e,0x0,0x64,0x0, - 0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x30,0x59,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x62,0x65,0x65,0x6e,0x20,0x6b, - 0x69,0x63,0x6b,0x65,0x64,0x20,0x66,0x72,0x6f,0x6d,0x20,0x74,0x68,0x65,0x20,0x73, - 0x65,0x72,0x76,0x65,0x72,0x2e,0xa,0x52,0x65,0x61,0x73,0x6f,0x6e,0x3a,0x20,0x25, - 0x31,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74, - 0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x46,0x0,0x61,0x0,0x6c,0x0, - 0x6c,0x0,0x61,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x72,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x43,0x61,0x73,0x65,0x20,0x41,0x6e, - 0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61, - 0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x46,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0, - 0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0xb,0x43,0x61,0x73,0x65,0x20,0x74,0x69,0x74,0x6c,0x65,0x3a,0x7,0x0, - 0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63, - 0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x28,0x0,0x56, - 0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x65,0x0,0x69,0x0,0x64,0x0,0x69,0x0,0x67, - 0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x6e,0x0,0xf6,0x0,0x74, - 0x0,0x69,0x0,0x67,0x0,0x74,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe, - 0x44,0x65,0x66,0x65,0x6e,0x73,0x65,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0, - 0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63, - 0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x52, - 0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x62, - 0x0,0x65,0x0,0x6e,0x0,0xf6,0x0,0x74,0x0,0x69,0x0,0x67,0x0,0x74,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x4a,0x75,0x64,0x67,0x65,0x20,0x6e,0x65, - 0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41, - 0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x1a,0x0,0x4a,0x0,0x75,0x0,0x72,0x0,0x79,0x0,0x20,0x0,0x62, - 0x0,0x65,0x0,0x6e,0x0,0xf6,0x0,0x74,0x0,0x69,0x0,0x67,0x0,0x74,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x4a,0x75,0x72,0x6f,0x72,0x73,0x20,0x6e, - 0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65, - 0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x1e,0x0,0x4b,0x0,0x6c,0x0,0xe4,0x0,0x67,0x0,0x65,0x0, - 0x72,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x6e,0x0,0xf6,0x0,0x74,0x0,0x69,0x0, - 0x67,0x0,0x74,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x50,0x72,0x6f, - 0x73,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7, - 0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e, - 0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x26,0x0, - 0x53,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x6f,0x0,0x67,0x0,0x72,0x0,0x61,0x0, - 0x70,0x0,0x68,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x6e,0x0,0xf6,0x0,0x74,0x0, - 0x69,0x0,0x67,0x0,0x74,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x53, - 0x74,0x65,0x6e,0x6f,0x67,0x72,0x61,0x70,0x68,0x65,0x72,0x20,0x6e,0x65,0x65,0x64, - 0x65,0x64,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e, - 0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x40,0x0,0x20,0x0,0x2d,0x0,0x20,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x75, - 0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x45,0x0,0x69,0x0,0x6e, - 0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x75,0x0,0x6e,0x0,0x67, - 0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x68,0x0,0x61,0x0,0x6c,0x0,0x74,0x0,0x65, - 0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17,0x20,0x2d,0x20,0x4b, - 0x65,0x65,0x70,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x73,0x65,0x74,0x74, - 0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0xc8,0x0,0x3c,0x0, - 0x68,0x0,0x74,0x0,0x6d,0x0,0x6c,0x0,0x3e,0x0,0x3c,0x0,0x68,0x0,0x65,0x0, - 0x61,0x0,0x64,0x0,0x2f,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x6f,0x0,0x64,0x0, - 0x79,0x0,0x3e,0x0,0x47,0x0,0x69,0x0,0x62,0x0,0x20,0x0,0x73,0x0,0x6f,0x0, - 0x20,0x0,0x76,0x0,0x69,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x41,0x0, - 0x6c,0x0,0x61,0x0,0x72,0x0,0x6d,0x0,0x77,0x0,0xf6,0x0,0x72,0x0,0x74,0x0, - 0x65,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x77,0x0, - 0x69,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x6d,0x0,0xf6,0x0, - 0x63,0x0,0x68,0x0,0x74,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x2e,0x0,0x20,0x0, - 0x47,0x0,0x72,0x0,0x6f,0x0,0xdf,0x0,0x2f,0x0,0x4b,0x0,0x6c,0x0,0x65,0x0, - 0x69,0x0,0x6e,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x65,0x0,0x69,0x0, - 0x62,0x0,0x75,0x0,0x6e,0x0,0x67,0x0,0x20,0x0,0x69,0x0,0x73,0x0,0x74,0x0, - 0x20,0x0,0x65,0x0,0x67,0x0,0x61,0x0,0x6c,0x0,0x2e,0x0,0x20,0x0,0x46,0x0, - 0xfc,0x0,0x72,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x57,0x0,0x6f,0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x6e,0x0,0x75,0x0,0x72,0x0, - 0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x5a,0x0,0x65,0x0, - 0x69,0x0,0x6c,0x0,0x65,0x0,0x21,0x0,0x3c,0x0,0x62,0x0,0x72,0x0,0x3e,0x0, - 0x42,0x0,0x69,0x0,0x74,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x6b,0x0,0x65,0x0, - 0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x6c,0x0,0x65,0x0,0x65,0x0,0x72,0x0, - 0x65,0x0,0x20,0x0,0x5a,0x0,0x65,0x0,0x69,0x0,0x6c,0x0,0x65,0x0,0x20,0x0, - 0x61,0x0,0x6d,0x0,0x20,0x0,0x45,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x2d,0x0,0x2d,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x62,0x0,0x65,0x0, - 0x6b,0x0,0x6f,0x0,0x6d,0x0,0x6d,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x73,0x0, - 0x6f,0x0,0x6e,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x69,0x0, - 0x20,0x0,0x6a,0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x4e,0x0, - 0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0, - 0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x41,0x0, - 0x6c,0x0,0x61,0x0,0x72,0x0,0x6d,0x0,0x2e,0x0,0x3c,0x0,0x2f,0x0,0x62,0x0, - 0x6f,0x0,0x64,0x0,0x79,0x0,0x3e,0x0,0x3c,0x0,0x2f,0x0,0x68,0x0,0x74,0x0, - 0x6d,0x0,0x6c,0x0,0x3e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x1,0x12,0x3c, - 0x68,0x74,0x6d,0x6c,0x3e,0x3c,0x68,0x65,0x61,0x64,0x2f,0x3e,0x3c,0x62,0x6f,0x64, - 0x79,0x3e,0x45,0x6e,0x74,0x65,0x72,0x20,0x61,0x73,0x20,0x6d,0x61,0x6e,0x79,0x20, - 0x63,0x61,0x6c,0x6c,0x77,0x6f,0x72,0x64,0x73,0x20,0x61,0x73,0x20,0x79,0x6f,0x75, - 0x20,0x77,0x6f,0x75,0x6c,0x64,0x20,0x6c,0x69,0x6b,0x65,0x2e,0x20,0x54,0x68,0x65, - 0x73,0x65,0x20,0x61,0x72,0x65,0x20,0x63,0x61,0x73,0x65,0x20,0x69,0x6e,0x73,0x65, - 0x6e,0x73,0x69,0x74,0x69,0x76,0x65,0x2e,0x20,0x4d,0x61,0x6b,0x65,0x20,0x73,0x75, - 0x72,0x65,0x20,0x74,0x6f,0x20,0x6c,0x65,0x61,0x76,0x65,0x20,0x65,0x76,0x65,0x72, - 0x79,0x20,0x63,0x61,0x6c,0x6c,0x77,0x6f,0x72,0x64,0x20,0x69,0x6e,0x20,0x69,0x74, - 0x73,0x20,0x6f,0x77,0x6e,0x20,0x6c,0x69,0x6e,0x65,0x21,0x3c,0x62,0x72,0x3e,0x44, - 0x6f,0x20,0x6e,0x6f,0x74,0x20,0x6c,0x65,0x61,0x76,0x65,0x20,0x61,0x20,0x6c,0x69, - 0x6e,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x61,0x20,0x73,0x70,0x61,0x63,0x65,0x20, - 0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x65,0x6e,0x64,0x20,0x2d,0x2d,0x20,0x79,0x6f, - 0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x6c,0x65,0x72,0x74,0x65, - 0x64,0x20,0x65,0x76,0x65,0x72,0x79,0x74,0x69,0x6d,0x65,0x20,0x73,0x6f,0x6d,0x65, - 0x6f,0x6e,0x65,0x20,0x75,0x73,0x65,0x73,0x20,0x61,0x20,0x73,0x70,0x61,0x63,0x65, - 0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x6d,0x65,0x73,0x73,0x61,0x67, - 0x65,0x73,0x2e,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x3c,0x2f,0x68,0x74,0x6d,0x6c, - 0x3e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x22,0x0,0x45,0x0,0x66,0x0, - 0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x72,0x0, - 0x6c,0x0,0x61,0x0,0x75,0x0,0x62,0x0,0x65,0x0,0x6e,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x41,0x6c,0x6c,0x6f,0x77,0x20,0x45,0x66,0x66, - 0x65,0x63,0x74,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x26,0x0, - 0x53,0x0,0x63,0x0,0x68,0x0,0xfc,0x0,0x74,0x0,0x74,0x0,0x65,0x0,0x6c,0x0, - 0x6e,0x0,0x20,0x0,0x65,0x0,0x72,0x0,0x6c,0x0,0x61,0x0,0x75,0x0,0x62,0x0, - 0x65,0x0,0x6e,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x41, - 0x6c,0x6c,0x6f,0x77,0x20,0x53,0x63,0x72,0x65,0x65,0x6e,0x73,0x68,0x61,0x6b,0x65, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xde,0x0,0x45,0x0,0x72,0x0, - 0x6c,0x0,0x61,0x0,0x75,0x0,0x62,0x0,0x74,0x0,0x20,0x0,0x61,0x0,0x6e,0x0, - 0x64,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x75,0x0, - 0x66,0x0,0x20,0x0,0x44,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x6f,0x0,0x72,0x0, - 0x64,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x68,0x0, - 0x65,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x66,0x0,0x20,0x0,0x77,0x0, - 0x65,0x0,0x6c,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x53,0x0, - 0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x75,0x0, - 0x20,0x0,0x73,0x0,0x70,0x0,0x69,0x0,0x65,0x0,0x6c,0x0,0x73,0x0,0x74,0x0, - 0x2c,0x0,0x20,0x0,0x77,0x0,0x65,0x0,0x6c,0x0,0x63,0x0,0x68,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x6b,0x0, - 0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x73,0x0, - 0x70,0x0,0x69,0x0,0x65,0x0,0x6c,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x75,0x0, - 0x6e,0x0,0x64,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6c,0x0, - 0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x7f,0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x6f,0x74,0x68,0x65,0x72,0x73, - 0x20,0x6f,0x6e,0x20,0x44,0x69,0x73,0x63,0x6f,0x72,0x64,0x20,0x74,0x6f,0x20,0x73, - 0x65,0x65,0x20,0x77,0x68,0x61,0x74,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x79, - 0x6f,0x75,0x20,0x61,0x72,0x65,0x20,0x69,0x6e,0x2c,0x20,0x77,0x68,0x61,0x74,0x20, - 0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x61,0x72,0x65,0x20,0x79,0x6f, - 0x75,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x2c,0x20,0x61,0x6e,0x64,0x20,0x68, - 0x6f,0x77,0x20,0x6c,0x6f,0x6e,0x67,0x20,0x79,0x6f,0x75,0x20,0x68,0x61,0x76,0x65, - 0x20,0x62,0x65,0x65,0x6e,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x66,0x6f, - 0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xaa,0x0,0x45,0x0,0x72, - 0x0,0x6c,0x0,0x61,0x0,0x75,0x0,0x62,0x0,0x74,0x0,0x20,0x0,0x42,0x0,0x69, - 0x0,0x6c,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74, - 0x0,0x65,0x0,0x2e,0x0,0x20,0x0,0x44,0x0,0x65,0x0,0x61,0x0,0x6b,0x0,0x74, - 0x0,0x69,0x0,0x76,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x64, - 0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x66,0x0,0x61,0x0,0x6c,0x0,0x6c, - 0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x42,0x0,0x65,0x0,0x64, - 0x0,0x65,0x0,0x6e,0x0,0x6b,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x77,0x0,0x65, - 0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x50,0x0,0x68,0x0,0x6f,0x0,0x74, - 0x0,0x6f,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x69,0x0,0x74,0x0,0x69, - 0x0,0x76,0x0,0x69,0x0,0x74,0x0,0xe4,0x0,0x74,0x0,0x20,0x0,0x68,0x0,0x61, - 0x0,0x73,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x69, - 0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x20,0x65,0x66, - 0x66,0x65,0x63,0x74,0x73,0x2e,0x20,0x44,0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x74, - 0x68,0x69,0x73,0x20,0x69,0x66,0x20,0x79,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20, - 0x63,0x6f,0x6e,0x63,0x65,0x72,0x6e,0x73,0x20,0x6f,0x72,0x20,0x69,0x73,0x73,0x75, - 0x65,0x73,0x20,0x77,0x69,0x74,0x68,0x20,0x70,0x68,0x6f,0x74,0x6f,0x73,0x65,0x6e, - 0x73,0x69,0x74,0x69,0x76,0x69,0x74,0x79,0x20,0x61,0x6e,0x64,0x2f,0x6f,0x72,0x20, - 0x73,0x65,0x69,0x7a,0x75,0x72,0x65,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0xc6,0x0,0x45,0x0,0x72,0x0,0x6c,0x0,0x61,0x0,0x75,0x0,0x62,0x0, - 0x74,0x0,0x20,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0xfc,0x0,0x74,0x0,0x74,0x0, - 0x65,0x0,0x6c,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x20,0x0, - 0x42,0x0,0x69,0x0,0x6c,0x0,0x64,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x69,0x0, - 0x72,0x0,0x6d,0x0,0x73,0x0,0x2e,0x0,0x20,0x0,0x44,0x0,0x65,0x0,0x61,0x0, - 0x6b,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x65,0x0, - 0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x66,0x0,0x61,0x0, - 0x6c,0x0,0x6c,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x42,0x0, - 0x65,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x6b,0x0,0x65,0x0,0x6e,0x0,0x20,0x0, - 0x77,0x0,0x65,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x50,0x0,0x68,0x0, - 0x6f,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x69,0x0, - 0x74,0x0,0x69,0x0,0x76,0x0,0x69,0x0,0x74,0x0,0xe4,0x0,0x74,0x0,0x20,0x0, - 0x68,0x0,0x61,0x0,0x73,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x68,0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x73,0x63,0x72,0x65,0x65,0x6e, - 0x73,0x68,0x61,0x6b,0x69,0x6e,0x67,0x2e,0x20,0x44,0x69,0x73,0x61,0x62,0x6c,0x65, - 0x20,0x74,0x68,0x69,0x73,0x20,0x69,0x66,0x20,0x79,0x6f,0x75,0x20,0x68,0x61,0x76, - 0x65,0x20,0x63,0x6f,0x6e,0x63,0x65,0x72,0x6e,0x73,0x20,0x6f,0x72,0x20,0x69,0x73, - 0x73,0x75,0x65,0x73,0x20,0x77,0x69,0x74,0x68,0x20,0x70,0x68,0x6f,0x74,0x6f,0x73, - 0x65,0x6e,0x73,0x69,0x74,0x69,0x76,0x69,0x74,0x79,0x20,0x61,0x6e,0x64,0x2f,0x6f, - 0x72,0x20,0x73,0x65,0x69,0x7a,0x75,0x72,0x65,0x73,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x58,0x0,0x5a,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x20,0x0, - 0x28,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x4d,0x0,0x69,0x0,0x6c,0x0,0x69,0x0, - 0x73,0x0,0x65,0x0,0x6b,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x6e,0x0, - 0x29,0x0,0x20,0x0,0x66,0x0,0xfc,0x0,0x72,0x0,0x20,0x0,0x6a,0x0,0x65,0x0, - 0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x42,0x0,0x75,0x0,0x63,0x0,0x68,0x0, - 0x73,0x0,0x74,0x0,0x61,0x0,0x62,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x63,0x41,0x6d,0x6f,0x75,0x6e,0x74,0x20,0x6f,0x66, - 0x20,0x74,0x69,0x6d,0x65,0x20,0x28,0x69,0x6e,0x20,0x6d,0x69,0x6c,0x69,0x73,0x65, - 0x63,0x6f,0x6e,0x64,0x73,0x29,0x20,0x73,0x70,0x65,0x6e,0x74,0x20,0x6f,0x6e,0x20, - 0x65,0x61,0x63,0x68,0x20,0x6c,0x65,0x74,0x74,0x65,0x72,0x20,0x77,0x68,0x65,0x6e, - 0x20,0x74,0x68,0x65,0x20,0x69,0x6e,0x2d,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65, - 0x72,0x20,0x74,0x65,0x78,0x74,0x20,0x69,0x73,0x20,0x62,0x65,0x69,0x6e,0x67,0x20, - 0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x22,0x0,0x41,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x69,0x0,0x65, - 0x0,0x72,0x0,0x74,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x54,0x0,0x68,0x0,0x65, - 0x0,0x6d,0x0,0x65,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xf, - 0x41,0x6e,0x69,0x6d,0x61,0x74,0x65,0x64,0x20,0x54,0x68,0x65,0x6d,0x65,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa,0x0,0x41,0x0,0x75,0x0,0x64,0x0, - 0x69,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x41,0x75,0x64, - 0x69,0x6f,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x41,0x0,0x75, - 0x0,0x64,0x0,0x69,0x0,0x6f,0x0,0x67,0x0,0x65,0x0,0x72,0x0,0xe4,0x0,0x74, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x41,0x75,0x64,0x69, - 0x6f,0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x38,0x0,0x41,0x0,0x75,0x0,0x74,0x0,0x6d,0x0,0x61,0x0,0x74,0x0, - 0x69,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x50,0x0, - 0x72,0x0,0x6f,0x0,0x74,0x0,0x6f,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x6c,0x0, - 0x69,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x6e,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x12,0x41,0x75,0x74,0x6f,0x6d,0x61,0x74,0x69,0x63,0x20,0x4c, - 0x6f,0x67,0x67,0x69,0x6e,0x67,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x18,0x0,0x52,0x0,0xfc,0x0,0x63,0x0,0x6b,0x0,0x66,0x0,0x61,0x0,0x6c,0x0, - 0x6c,0x0,0x20,0x0,0x4d,0x0,0x53,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0xa,0x42,0x61,0x63,0x6b,0x75,0x70,0x20,0x4d,0x53,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x18,0x0,0x4c,0x0,0x65,0x0,0x65,0x0,0x72,0x0, - 0x65,0x0,0x20,0x0,0x42,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x73,0x0,0x3a,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x42,0x6c,0x61,0x6e,0x6b,0x20,0x62, - 0x6c,0x69,0x70,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x12,0x0, - 0x42,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x74,0x0,0x65,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x42,0x6c,0x69,0x70,0x20, - 0x72,0x61,0x74,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc,0x0, - 0x42,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x73,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x6,0x42,0x6c,0x69,0x70,0x73,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x6,0x0,0x43,0x0,0x4d,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x3,0x43,0x4d,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x16,0x0,0x41,0x0,0x6c,0x0,0x61,0x0,0x72,0x0,0x6d,0x0,0x77,0x0,0xf6, - 0x0,0x72,0x0,0x74,0x0,0x65,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x9,0x43,0x61,0x6c,0x6c,0x77,0x6f,0x72,0x64,0x73,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0xa,0x0,0x46,0x0,0xe4,0x0,0x6c,0x0,0x6c,0x0,0x65,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x61,0x73,0x69,0x6e,0x67,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x46,0x0,0xe4,0x0,0x6c,0x0, - 0x6c,0x0,0x65,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x43, - 0x61,0x73,0x69,0x6e,0x67,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x20, - 0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x74,0x0,0x20,0x0,0x52,0x0,0x61,0x0,0x74, - 0x0,0x65,0x0,0x20,0x0,0x4c,0x0,0x69,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x3a, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x43,0x68,0x61,0x74,0x20,0x52, - 0x61,0x74,0x65,0x20,0x4c,0x69,0x6d,0x69,0x74,0x3a,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x22,0x0,0x46,0x0,0x61,0x0,0x72,0x0,0x62,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x20,0x0,0x4c, - 0x0,0x6f,0x0,0x67,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11, - 0x43,0x6f,0x6c,0x6f,0x72,0x73,0x20,0x69,0x6e,0x20,0x49,0x43,0x20,0x4c,0x6f,0x67, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x30,0x0,0x44,0x0,0x75,0x0, - 0x72,0x0,0x63,0x0,0x68,0x0,0x67,0x0,0x65,0x0,0x68,0x0,0x65,0x0,0x6e,0x0, - 0x64,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x41,0x0,0x62,0x0,0x73,0x0,0x70,0x0, - 0x69,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x6e,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x14,0x43,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x6f,0x75,0x73,0x20, - 0x50,0x6c,0x61,0x79,0x62,0x61,0x63,0x6b,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x22,0x0,0x45,0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x65,0x0, - 0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x74,0x0,0x62,0x0,0x6f,0x0,0x78,0x0, - 0x65,0x0,0x6e,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x43, - 0x75,0x73,0x74,0x6f,0x6d,0x20,0x43,0x68,0x61,0x74,0x62,0x6f,0x78,0x65,0x73,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x28,0x0,0x45,0x0,0x69,0x0,0x67, - 0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x41,0x0,0x6e,0x0,0x7a, - 0x0,0x65,0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x61,0x0,0x6d,0x0,0x65, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x43,0x75,0x73,0x74, - 0x6f,0x6d,0x20,0x73,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x53,0x0,0x74,0x0,0x61,0x0,0x6e,0x0, - 0x64,0x0,0x61,0x0,0x72,0x0,0x64,0x0,0x20,0x0,0x42,0x0,0x65,0x0,0x6e,0x0, - 0x75,0x0,0x74,0x0,0x7a,0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x61,0x0,0x6d,0x0, - 0x65,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x44,0x65,0x66, - 0x61,0x75,0x6c,0x74,0x20,0x75,0x73,0x65,0x72,0x6e,0x61,0x6d,0x65,0x3a,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1a,0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x74, - 0x0,0x65,0x0,0x69,0x0,0x64,0x0,0x69,0x0,0x67,0x0,0x75,0x0,0x6e,0x0,0x67, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x44,0x65,0x66,0x65, - 0x6e,0x73,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x38,0x0,0x50, - 0x0,0x72,0x0,0x6f,0x0,0x74,0x0,0x6f,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x6c, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x79,0x0,0x6e,0x0,0x63,0x0,0x68, - 0x0,0x72,0x0,0x6f,0x0,0x6e,0x0,0x69,0x0,0x73,0x0,0x69,0x0,0x65,0x0,0x72, - 0x0,0x65,0x0,0x6e,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x16, - 0x44,0x65,0x73,0x79,0x6e,0x63,0x68,0x72,0x6f,0x6e,0x69,0x7a,0x65,0x20,0x49,0x43, - 0x20,0x4c,0x6f,0x67,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x10, - 0x0,0x44,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x6f,0x0,0x72,0x0,0x64,0x0,0x3a, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x44,0x69,0x73,0x63,0x6f,0x72, - 0x64,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x36,0x0,0x57,0x0,0x69, - 0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x68,0x0,0x6f,0x0,0x6c,0x0,0x65, - 0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x53,0x0,0x6f,0x0,0x75,0x0,0x6e, - 0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x65, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x45,0x6e,0x61,0x62, - 0x6c,0x65,0x20,0x4c,0x6f,0x6f,0x70,0x69,0x6e,0x67,0x20,0x53,0x46,0x58,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa,0x0,0x53,0x0,0x70,0x0,0x69,0x0, - 0x65,0x0,0x6c,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x47,0x61,0x6d, - 0x65,0x70,0x6c,0x61,0x79,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x9a,0x0, - 0x53,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x64,0x0, - 0x77,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x66,0x0,0xfc,0x0,0x72,0x0, - 0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x41,0x0,0x6e,0x0,0x7a,0x0, - 0x65,0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0, - 0x20,0x0,0x42,0x0,0x6f,0x0,0x78,0x0,0x2c,0x0,0x20,0x0,0x77,0x0,0x65,0x0, - 0x6c,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6e,0x0, - 0x20,0x0,0x49,0x0,0x6e,0x0,0x2d,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0, - 0x61,0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x4e,0x0,0x61,0x0, - 0x6d,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x69,0x0,0x6d,0x0,0x6d,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x99,0x47,0x69,0x76,0x65,0x73,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x66, - 0x61,0x75,0x6c,0x74,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x66,0x6f,0x72,0x20,0x74, - 0x68,0x65,0x20,0x69,0x6e,0x2d,0x67,0x61,0x6d,0x65,0x20,0x27,0x43,0x75,0x73,0x74, - 0x6f,0x6d,0x20,0x73,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73,0x27,0x20,0x74,0x69, - 0x63,0x6b,0x62,0x6f,0x78,0x2c,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x69,0x6e,0x20, - 0x74,0x75,0x72,0x6e,0x20,0x64,0x65,0x74,0x65,0x72,0x6d,0x69,0x6e,0x65,0x73,0x20, - 0x77,0x68,0x65,0x74,0x68,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x63,0x6c,0x69,0x65, - 0x6e,0x74,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x64,0x69,0x73,0x70,0x6c,0x61, - 0x79,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x69,0x6e,0x2d,0x63,0x68,0x61,0x72, - 0x61,0x63,0x74,0x65,0x72,0x20,0x6e,0x61,0x6d,0x65,0x73,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x18,0x0,0x46,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x6c, - 0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x75,0x0,0x6e,0x0,0x67,0x0,0x3a,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x48,0x6f,0x73,0x74,0x69,0x6e,0x67,0x20, - 0x63,0x61,0x73,0x65,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa0, - 0x0,0x57,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x53,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x7a,0x0,0x65, - 0x0,0x69,0x0,0x74,0x0,0x20,0x0,0x6c,0x0,0xe4,0x0,0x6e,0x0,0x67,0x0,0x65, - 0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x73,0x0,0x20,0x0,0x30,0x0,0x20, - 0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0xfc,0x0,0x62,0x0,0x65,0x0,0x72, - 0x0,0x73,0x0,0x70,0x0,0x72,0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x5a,0x0,0x77,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x65, - 0x0,0x6e,0x0,0x72,0x0,0x75,0x0,0x66,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x69, - 0x0,0x65,0x0,0x20,0x0,0x57,0x0,0x61,0x0,0x72,0x0,0x74,0x0,0x65,0x0,0x73, - 0x0,0x63,0x0,0x68,0x0,0x6c,0x0,0x65,0x0,0x69,0x0,0x66,0x0,0x65,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6d,0x49,0x66,0x20,0x54,0x65,0x78, - 0x74,0x20,0x53,0x74,0x61,0x79,0x20,0x54,0x69,0x6d,0x65,0x20,0x69,0x73,0x20,0x6d, - 0x6f,0x72,0x65,0x20,0x74,0x68,0x61,0x6e,0x20,0x30,0x2c,0x20,0x69,0x6e,0x73,0x74, - 0x61,0x6e,0x74,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x69, - 0x6c,0x6c,0x20,0x73,0x6b,0x69,0x70,0x20,0x71,0x75,0x65,0x75,0x65,0x64,0x20,0x6d, - 0x65,0x73,0x73,0x61,0x67,0x65,0x73,0x20,0x69,0x6e,0x73,0x74,0x65,0x61,0x64,0x20, - 0x6f,0x66,0x20,0x77,0x61,0x69,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x63,0x61, - 0x74,0x63,0x68,0x20,0x75,0x70,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x70,0x0,0x53,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x65,0x0,0x69,0x0,0x62,0x0, - 0x74,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x50,0x0,0x72,0x0, - 0x6f,0x0,0x74,0x0,0x6f,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x6c,0x0,0x65,0x0, - 0x20,0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x6f,0x0,0x6d,0x0,0x61,0x0,0x74,0x0, - 0x69,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x2f,0x0,0x6c,0x0,0x6f,0x0,0x67,0x0, - 0x73,0x0,0x20,0x0,0x4f,0x0,0x72,0x0,0x64,0x0,0x6e,0x0,0x65,0x0,0x72,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x47,0x49,0x66,0x20,0x63,0x68, - 0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x61,0x6c,0x6c,0x20,0x6c,0x6f,0x67,0x73,0x20, - 0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x75,0x74,0x6f,0x6d,0x61,0x74,0x69, - 0x63,0x61,0x6c,0x6c,0x79,0x20,0x77,0x72,0x69,0x74,0x74,0x65,0x6e,0x20,0x69,0x6e, - 0x20,0x74,0x68,0x65,0x20,0x2f,0x6c,0x6f,0x67,0x73,0x20,0x66,0x6f,0x6c,0x64,0x65, - 0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x68,0x0,0x57,0x0,0x65, - 0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x68, - 0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0,0x73, - 0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x73, - 0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x69, - 0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x43,0x0,0x4d,0x0,0x20, - 0x0,0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x7a,0x0,0x65,0x0,0x69,0x0,0x67, - 0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x44,0x49,0x66, - 0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69, - 0x6c,0x6c,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x20,0x61,0x6d,0x6f,0x6e,0x67,0x73, - 0x74,0x20,0x74,0x68,0x65,0x20,0x70,0x6f,0x74,0x65,0x6e,0x74,0x69,0x61,0x6c,0x20, - 0x43,0x4d,0x73,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65, - 0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x92,0x0,0x57,0x0,0x65, - 0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x68, - 0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0,0x73, - 0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x6e, - 0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74, - 0x0,0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x65,0x0,0x6e,0x0,0x6e, - 0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x56,0x0,0x65,0x0,0x72, - 0x0,0x74,0x0,0x65,0x0,0x69,0x0,0x64,0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x72, - 0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x6e,0x0,0xf6,0x0,0x74,0x0,0x69,0x0,0x67, - 0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0,0x64,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x53,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b, - 0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74, - 0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61, - 0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73, - 0x20,0x69,0x66,0x20,0x61,0x20,0x64,0x65,0x66,0x65,0x6e,0x73,0x65,0x20,0x73,0x70, - 0x6f,0x74,0x20,0x69,0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x86,0x0,0x57,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0, - 0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x68,0x0,0x61,0x0,0x6b,0x0,0x74,0x0, - 0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x64,0x0, - 0x75,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x68,0x0, - 0x72,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x69,0x0,0x67,0x0,0x74,0x0, - 0x20,0x0,0x77,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x69,0x0, - 0x6e,0x0,0x65,0x0,0x20,0x0,0x4a,0x0,0x75,0x0,0x72,0x0,0x79,0x0,0x20,0x0, - 0x62,0x0,0x65,0x0,0x6e,0x0,0xf6,0x0,0x74,0x0,0x69,0x0,0x67,0x0,0x74,0x0, - 0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0,0x64,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x51,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c, - 0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c, - 0x65,0x72,0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20, - 0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x69,0x66, - 0x20,0x61,0x20,0x6a,0x75,0x72,0x6f,0x72,0x20,0x73,0x70,0x6f,0x74,0x20,0x69,0x73, - 0x20,0x6f,0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x88, - 0x0,0x57,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x67, - 0x0,0x65,0x0,0x68,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x69, - 0x0,0x72,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x62, - 0x0,0x65,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69,0x0,0x63, - 0x0,0x68,0x0,0x74,0x0,0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x65, - 0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x4b, - 0x0,0x6c,0x0,0xe4,0x0,0x67,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x62,0x0,0x65, - 0x0,0x6e,0x0,0xf6,0x0,0x74,0x0,0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x77, - 0x0,0x69,0x0,0x72,0x0,0x64,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x56,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f, - 0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74, - 0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e, - 0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x61,0x20, - 0x70,0x72,0x6f,0x73,0x65,0x63,0x75,0x74,0x6f,0x72,0x20,0x73,0x70,0x6f,0x74,0x20, - 0x69,0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x90,0x0,0x57,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x6e, - 0x0,0x67,0x0,0x65,0x0,0x68,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x20,0x0,0x77, - 0x0,0x69,0x0,0x72,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20, - 0x0,0x62,0x0,0x65,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69, - 0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x77, - 0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20, - 0x0,0x53,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x6f,0x0,0x67,0x0,0x72,0x0,0x61, - 0x0,0x70,0x0,0x68,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x6e,0x0,0xf6,0x0,0x74, - 0x0,0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0,0x64, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x58,0x49,0x66,0x20,0x63, - 0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c, - 0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62,0x6f,0x75, - 0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d, - 0x65,0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x61,0x20,0x73,0x74,0x65,0x6e,0x6f,0x67, - 0x72,0x61,0x70,0x68,0x65,0x72,0x20,0x73,0x70,0x6f,0x74,0x20,0x69,0x73,0x20,0x6f, - 0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x8a,0x0,0x57, - 0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x67,0x0,0x65, - 0x0,0x68,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x72, - 0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x62,0x0,0x65, - 0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x68, - 0x0,0x74,0x0,0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x65,0x0,0x6e, - 0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x52,0x0,0x69, - 0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x62,0x0,0x65, - 0x0,0x6e,0x0,0xf6,0x0,0x74,0x0,0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x77, - 0x0,0x69,0x0,0x72,0x0,0x64,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x53,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f, - 0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74, - 0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e, - 0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x74,0x68, - 0x65,0x20,0x6a,0x75,0x64,0x67,0x65,0x20,0x73,0x70,0x6f,0x74,0x20,0x69,0x73,0x20, - 0x6f,0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x8a,0x0, - 0x57,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x67,0x0, - 0x65,0x0,0x68,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x69,0x0, - 0x72,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x62,0x0, - 0x65,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69,0x0,0x63,0x0, - 0x68,0x0,0x74,0x0,0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x65,0x0, - 0x6e,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x46,0x0, - 0x61,0x0,0x6c,0x0,0x6c,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0, - 0x6b,0x0,0xfc,0x0,0x6e,0x0,0x64,0x0,0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0, - 0x77,0x0,0x69,0x0,0x72,0x0,0x64,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x39,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79, - 0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72, - 0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e, - 0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0xa6,0x0,0x57,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x65, - 0x0,0x62,0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x4d,0x0,0x61, - 0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x53,0x0,0x65,0x0,0x72, - 0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x66,0x0,0x65,0x0,0x68,0x0,0x6c, - 0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x6c,0x0,0xe4,0x0,0x67,0x0,0x74,0x0,0x2c, - 0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0,0x64,0x0,0x20,0x0,0x64,0x0,0x61, - 0x0,0x73,0x0,0x20,0x0,0x53,0x0,0x70,0x0,0x69,0x0,0x65,0x0,0x6c,0x0,0x20, - 0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x68, - 0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x77, - 0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x7b,0x49,0x66,0x20,0x74,0x68,0x65,0x20,0x62,0x75,0x69, - 0x6c,0x74,0x2d,0x69,0x6e,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x6c,0x6f,0x6f, - 0x6b,0x75,0x70,0x73,0x20,0x66,0x61,0x69,0x6c,0x2c,0x20,0x74,0x68,0x65,0x20,0x67, - 0x61,0x6d,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x74,0x72,0x79,0x20,0x74,0x68,0x65, - 0x20,0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x20,0x67,0x69,0x76,0x65,0x6e,0x20,0x68, - 0x65,0x72,0x65,0x20,0x61,0x6e,0x64,0x20,0x75,0x73,0x65,0x20,0x69,0x74,0x20,0x61, - 0x73,0x20,0x61,0x20,0x62,0x61,0x63,0x6b,0x75,0x70,0x20,0x6d,0x61,0x73,0x74,0x65, - 0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x61,0x64,0x64,0x72,0x65,0x73,0x73, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x7a,0x0,0x44,0x0,0x61,0x0, - 0x73,0x0,0x20,0x0,0x50,0x0,0x72,0x0,0x6f,0x0,0x74,0x0,0x6f,0x0,0x6b,0x0, - 0x6f,0x0,0x6c,0x0,0x6c,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x68,0x0, - 0xe4,0x0,0x6c,0x0,0x74,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x72,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x4e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0, - 0x5a,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6d,0x0, - 0x70,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x55,0x0, - 0x54,0x0,0x43,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3f,0x49, - 0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x6c,0x6f,0x67,0x20,0x77,0x69, - 0x6c,0x6c,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x20,0x61,0x20,0x74,0x69,0x6d, - 0x65,0x73,0x74,0x61,0x6d,0x70,0x20,0x69,0x6e,0x20,0x55,0x54,0x43,0x20,0x62,0x65, - 0x66,0x6f,0x72,0x65,0x20,0x74,0x68,0x65,0x20,0x6e,0x61,0x6d,0x65,0x2e,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x84,0x0,0x50,0x0,0x72,0x0,0x6f,0x0,0x74, - 0x0,0x6f,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x6c,0x0,0x69,0x0,0x65,0x0,0x72, - 0x0,0x74,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x6b, - 0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x69,0x0,0x6f, - 0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x20, - 0x0,0x5a,0x0,0x77,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x6e, - 0x0,0x72,0x0,0x75,0x0,0x66,0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x64, - 0x0,0x20,0x0,0x42,0x0,0x65,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x73,0x0,0x73, - 0x0,0x74,0x0,0xfc,0x0,0x63,0x0,0x6b,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x4d,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c, - 0x20,0x6c,0x6f,0x67,0x20,0x77,0x69,0x6c,0x6c,0x20,0x73,0x68,0x6f,0x77,0x20,0x49, - 0x43,0x20,0x61,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0x73,0x75,0x63,0x68,0x20,0x61, - 0x73,0x20,0x73,0x68,0x6f,0x75,0x74,0x69,0x6e,0x67,0x20,0x61,0x6e,0x64,0x20,0x70, - 0x72,0x65,0x73,0x65,0x6e,0x74,0x69,0x6e,0x67,0x20,0x65,0x76,0x69,0x64,0x65,0x6e, - 0x63,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xca,0x0,0x57,0x0, - 0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0, - 0x68,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x65,0x0,0x72,0x0, - 0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0, - 0x4e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x68,0x0, - 0x74,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x66,0x0,0x6f,0x0, - 0x72,0x0,0x74,0x0,0x20,0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x50,0x0,0x72,0x0, - 0x6f,0x0,0x74,0x0,0x6f,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x6c,0x0,0x20,0x0, - 0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x7a,0x0,0x65,0x0,0x69,0x0,0x67,0x0, - 0x74,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0, - 0x73,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x77,0x0,0x61,0x0,0x72,0x0, - 0x74,0x0,0x65,0x0,0x74,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x61,0x0, - 0x75,0x0,0x66,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x43,0x0, - 0x68,0x0,0x61,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x71,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x6c,0x6f,0x67,0x20, - 0x77,0x69,0x6c,0x6c,0x20,0x73,0x68,0x6f,0x77,0x20,0x6d,0x65,0x73,0x73,0x61,0x67, - 0x65,0x73,0x20,0x61,0x73,0x2d,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x64,0x2c,0x20, - 0x77,0x68,0x69,0x6c,0x65,0x20,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x20,0x77, - 0x69,0x6c,0x6c,0x20,0x70,0x61,0x72,0x73,0x65,0x20,0x61,0x63,0x63,0x6f,0x72,0x64, - 0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x71,0x75,0x65,0x75,0x65, - 0x20,0x28,0x54,0x65,0x78,0x74,0x20,0x53,0x74,0x61,0x79,0x20,0x54,0x69,0x6d,0x65, - 0x29,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xfa,0x0,0x57,0x0,0x65, - 0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x68, - 0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x64, - 0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x6e,0x0,0x65,0x0,0x75,0x0,0x65,0x0,0x20, - 0x0,0x4e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x68, - 0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x74,0x0,0x65, - 0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x65, - 0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x28,0x0,0x77,0x0,0x69, - 0x0,0x65,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x4f, - 0x0,0x4f,0x0,0x43,0x0,0x29,0x0,0x2e,0x0,0x20,0x0,0x44,0x0,0x61,0x0,0x73, - 0x0,0x20,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x69,0x0,0x74,0x0,0x69, - 0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x28, - 0x0,0x41,0x0,0x4f,0x0,0x31,0x0,0x29,0x0,0x20,0x0,0x56,0x0,0x65,0x0,0x72, - 0x0,0x68,0x0,0x61,0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x77, - 0x0,0xe4,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x63,0x0,0x68, - 0x0,0x74,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x68,0x0,0x61, - 0x0,0x6b,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8f, - 0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x6e,0x65,0x77,0x20,0x6d, - 0x65,0x73,0x73,0x61,0x67,0x65,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x61,0x70,0x70, - 0x65,0x61,0x72,0x20,0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x62,0x6f,0x74,0x74,0x6f, - 0x6d,0x20,0x28,0x6c,0x69,0x6b,0x65,0x20,0x74,0x68,0x65,0x20,0x4f,0x4f,0x43,0x20, - 0x63,0x68,0x61,0x74,0x6c,0x6f,0x67,0x29,0x2e,0x20,0x54,0x68,0x65,0x20,0x74,0x72, - 0x61,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x20,0x28,0x41,0x4f,0x31,0x29,0x20, - 0x62,0x65,0x68,0x61,0x76,0x69,0x6f,0x75,0x72,0x20,0x69,0x73,0x20,0x65,0x71,0x75, - 0x69,0x76,0x61,0x6c,0x65,0x6e,0x74,0x20,0x74,0x6f,0x20,0x74,0x68,0x69,0x73,0x20, - 0x62,0x65,0x69,0x6e,0x67,0x20,0x75,0x6e,0x74,0x69,0x63,0x6b,0x65,0x64,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x8a,0x0,0x57,0x0,0x65,0x0,0x6e,0x0, - 0x6e,0x0,0x20,0x0,0x4e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69,0x0, - 0x63,0x0,0x68,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x6d,0x0,0x65,0x0, - 0x68,0x0,0x72,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x5a,0x0,0x65,0x0, - 0x69,0x0,0x6c,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x74,0x0, - 0x68,0x0,0x61,0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x77,0x0, - 0x69,0x0,0x72,0x0,0x64,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x73,0x0, - 0x20,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x74,0x0, - 0x6f,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x6c,0x0,0x69,0x0,0x65,0x0,0x72,0x0, - 0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x99,0x49,0x66,0x20, - 0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x6e,0x65,0x77,0x20,0x6d,0x65,0x73,0x73, - 0x61,0x67,0x65,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x61,0x70,0x70,0x65,0x61,0x72, - 0x20,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x64,0x2c,0x20,0x77,0x69,0x74,0x68, - 0x20,0x74,0x68,0x65,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x63,0x6f,0x6d, - 0x69,0x6e,0x67,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x6e,0x65,0x78,0x74,0x20, - 0x6c,0x69,0x6e,0x65,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x6e, - 0x61,0x6d,0x65,0x2e,0x20,0x57,0x68,0x65,0x6e,0x20,0x75,0x6e,0x74,0x69,0x63,0x6b, - 0x65,0x64,0x2c,0x20,0x69,0x74,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x73,0x20, - 0x69,0x74,0x20,0x61,0x73,0x20,0x27,0x6e,0x61,0x6d,0x65,0x3a,0x20,0x6d,0x65,0x73, - 0x73,0x61,0x67,0x65,0x27,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x46, - 0x0,0x41,0x0,0x6b,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x69,0x0,0x65,0x0,0x72, - 0x0,0x74,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x69,0x0,0x65, - 0x0,0x72,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x54,0x0,0x68,0x0,0x65,0x0,0x6d, - 0x0,0x65,0x0,0x20,0x0,0x45,0x0,0x6c,0x0,0x65,0x0,0x6d,0x0,0x65,0x0,0x6e, - 0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3c, - 0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x74,0x68,0x65,0x6d,0x65, - 0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x65, - 0x64,0x20,0x74,0x6f,0x20,0x68,0x61,0x76,0x65,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74, - 0x65,0x64,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x6e,0x0,0x48,0x0,0xe4,0x0,0x6c,0x0,0x74,0x0,0x20, - 0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x4d,0x0,0x75,0x0,0x73,0x0,0x69, - 0x0,0x6b,0x0,0x20,0x0,0x66,0x0,0xfc,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x6c, - 0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x20,0x0,0x77,0x0,0x65, - 0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x27,0x0,0x45, - 0x0,0x69,0x0,0x6e,0x0,0x73,0x0,0x70,0x0,0x72,0x0,0x75,0x0,0x63,0x0,0x68, - 0x0,0x27,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x6e,0x0,0x75,0x0,0x74,0x0,0x7a, - 0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x49,0x49,0x66, - 0x20,0x74,0x72,0x75,0x65,0x2c,0x20,0x41,0x4f,0x32,0x20,0x77,0x69,0x6c,0x6c,0x20, - 0x61,0x73,0x6b,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x74, - 0x6f,0x20,0x73,0x74,0x6f,0x70,0x20,0x6d,0x75,0x73,0x69,0x63,0x20,0x77,0x68,0x65, - 0x6e,0x20,0x79,0x6f,0x75,0x20,0x75,0x73,0x65,0x20,0x27,0x4f,0x62,0x6a,0x65,0x63, - 0x74,0x69,0x6f,0x6e,0x21,0x27,0x20,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0xa2,0x0,0x57,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x6b,0x0, - 0x74,0x0,0x69,0x0,0x76,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x2c,0x0, - 0x20,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0, - 0x77,0x0,0x69,0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x68,0x0,0x6f,0x0, - 0x6c,0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x53,0x0,0x6f,0x0, - 0x75,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x6b,0x0, - 0x74,0x0,0x65,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x69,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x6e,0x0,0x20,0x0,0x56,0x0,0x6f,0x0,0x72,0x0,0x61,0x0,0x6e,0x0, - 0x69,0x0,0x6d,0x0,0x61,0x0,0x74,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x65,0x0,0x72,0x0,0x6c,0x0,0x61,0x0,0x75,0x0,0x62,0x0, - 0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4c,0x49,0x66,0x20, - 0x74,0x72,0x75,0x65,0x2c,0x20,0x74,0x68,0x65,0x20,0x67,0x61,0x6d,0x65,0x20,0x77, - 0x69,0x6c,0x6c,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x20,0x6c,0x6f,0x6f,0x70,0x69,0x6e, - 0x67,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20, - 0x74,0x6f,0x20,0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e,0x20,0x70,0x72,0x65,0x61,0x6e, - 0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x94,0x0,0x57,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x61,0x0, - 0x6e,0x0,0x67,0x0,0x65,0x0,0x68,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x20,0x0, - 0x77,0x0,0x69,0x0,0x72,0x0,0x64,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0, - 0x20,0x0,0x53,0x0,0x70,0x0,0x69,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x61,0x0, - 0x75,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x69,0x0,0x20,0x0, - 0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x4c,0x0,0x65,0x0, - 0x65,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0, - 0x42,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x63,0x0, - 0x68,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x4b,0x49,0x66,0x20,0x74,0x72,0x75,0x65,0x2c,0x20,0x74,0x68,0x65,0x20,0x67,0x61, - 0x6d,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x70,0x6c,0x61,0x79,0x20,0x61,0x20,0x62, - 0x6c,0x69,0x70,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x76,0x65,0x6e,0x20,0x77, - 0x68,0x65,0x6e,0x20,0x61,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x69,0x73,0x20,0x27, - 0x62,0x65,0x69,0x6e,0x67,0x20,0x73,0x61,0x69,0x64,0x27,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x74,0x0,0x57,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20, - 0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x43,0x0,0x4d,0x0,0x20,0x0,0x62,0x0,0x69, - 0x0,0x73,0x0,0x74,0x0,0x2c,0x0,0x20,0x0,0x67,0x0,0x69,0x0,0x62,0x0,0x20, - 0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x77,0x0,0x65,0x0,0x6c,0x0,0x63, - 0x0,0x68,0x0,0x65,0x0,0x20,0x0,0x46,0x0,0xe4,0x0,0x6c,0x0,0x6c,0x0,0x65, - 0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x69,0x0,0x65, - 0x0,0x6c,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x6d,0x0,0xf6,0x0,0x63,0x0,0x68, - 0x0,0x74,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x39,0x49,0x66,0x20,0x79,0x6f,0x75,0x27,0x72,0x65,0x20,0x61,0x20, - 0x43,0x4d,0x2c,0x20,0x65,0x6e,0x74,0x65,0x72,0x20,0x77,0x68,0x61,0x74,0x20,0x63, - 0x61,0x73,0x65,0x73,0x20,0x79,0x6f,0x75,0x20,0x61,0x72,0x65,0x20,0x77,0x69,0x6c, - 0x6c,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x68,0x6f,0x73,0x74,0x2e,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x28,0x0,0x5a,0x0,0x77,0x0,0x69,0x0,0x73,0x0, - 0x63,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x72,0x0,0x75,0x0,0x66,0x0,0x65,0x0, - 0x20,0x0,0x73,0x0,0x6f,0x0,0x66,0x0,0x6f,0x0,0x72,0x0,0x74,0x0,0x3a,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x49,0x6e,0x73,0x74,0x61,0x6e,0x74, - 0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x10,0x0,0x52,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0, - 0x65,0x0,0x72,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4a, - 0x75,0x64,0x67,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa,0x0, - 0x4a,0x0,0x75,0x0,0x72,0x0,0x79,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x6,0x4a,0x75,0x72,0x6f,0x72,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x36,0x0,0x53,0x0,0x74,0x0,0x6f,0x0,0x70,0x0,0x70,0x0,0x65,0x0, - 0x20,0x0,0x4d,0x0,0x75,0x0,0x73,0x0,0x69,0x0,0x6b,0x0,0x20,0x0,0x62,0x0, - 0x65,0x0,0x69,0x0,0x20,0x0,0x45,0x0,0x69,0x0,0x6e,0x0,0x73,0x0,0x70,0x0, - 0x72,0x0,0x75,0x0,0x63,0x0,0x68,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x18,0x4b,0x69,0x6c,0x6c,0x20,0x4d,0x75,0x73,0x69,0x63,0x20,0x4f,0x6e, - 0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x10,0x0,0x53,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x63,0x0, - 0x68,0x0,0x65,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x4c, - 0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x30,0x0,0x41,0x0,0x6b,0x0,0x74,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x65, - 0x0,0x6e,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x74,0x0,0x6f,0x0,0x6b, - 0x0,0x6f,0x0,0x6c,0x0,0x6c,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x6e, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xf,0x4c,0x6f,0x67,0x20, - 0x49,0x43,0x20,0x61,0x63,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x30,0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x6c,0x0,0x61,0x0, - 0x75,0x0,0x66,0x0,0x20,0x0,0x67,0x0,0x65,0x0,0x68,0x0,0x74,0x0,0x20,0x0, - 0x6e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x74,0x0, - 0x65,0x0,0x6e,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x4c, - 0x6f,0x67,0x20,0x67,0x6f,0x65,0x73,0x20,0x64,0x6f,0x77,0x6e,0x77,0x61,0x72,0x64, - 0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x4c,0x0,0xe4, - 0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xb,0x4c,0x6f,0x67,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x22,0x0,0x50,0x0,0x72,0x0,0x6f,0x0,0x74,0x0, - 0x6f,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x6c,0x0,0x61,0x0,0x62,0x0,0x73,0x0, - 0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0xb,0x4c,0x6f,0x67,0x20,0x6d,0x61,0x72,0x67,0x69,0x6e,0x3a,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x2e,0x0,0x41,0x0,0x62,0x0,0x73,0x0,0xe4, - 0x0,0x74,0x0,0x7a,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x74, - 0x0,0x6f,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x6c,0x0,0x69,0x0,0x65,0x0,0x72, - 0x0,0x65,0x0,0x6e,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc, - 0x4c,0x6f,0x67,0x20,0x6e,0x65,0x77,0x6c,0x69,0x6e,0x65,0x3a,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x18,0x0,0x5a,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x73, - 0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x70,0x0,0x65,0x0,0x6c,0x0,0x3a,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x4c,0x6f,0x67,0x20,0x74,0x69,0x6d,0x65, - 0x73,0x74,0x61,0x6d,0x70,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x34, - 0x0,0x4d,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x6c,0x0,0x65, - 0x0,0x20,0x0,0x5a,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x20,0x0,0x28,0x0,0x69, - 0x0,0x6e,0x0,0x20,0x0,0x4d,0x0,0x69,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x65, - 0x0,0x6b,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x29,0x0,0x20, - 0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65, - 0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x20,0x0,0x4e,0x0,0x61,0x0,0x63,0x0,0x68, - 0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x20,0x0,0x61,0x0,0x75, - 0x0,0x66,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x42,0x0,0x69, - 0x0,0x6c,0x0,0x64,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x69,0x0,0x72,0x0,0x6d, - 0x0,0x20,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x69,0x0,0x62,0x0,0x74,0x0,0x20, - 0x0,0x62,0x0,0x65,0x0,0x76,0x0,0x6f,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x64, - 0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6e,0x0,0xe4,0x0,0x63,0x0,0x68,0x0,0x73, - 0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6d,0x0,0x6d,0x0,0x74, - 0x0,0x2c,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x69, - 0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x41,0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x27, - 0x0,0x57,0x0,0x61,0x0,0x72,0x0,0x74,0x0,0x65,0x0,0x73,0x0,0x63,0x0,0x68, - 0x0,0x6c,0x0,0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x27,0x0,0x2e,0x0,0x20, - 0x0,0x30,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x69, - 0x0,0x76,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x61, - 0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa6,0x4d,0x69, - 0x6e,0x69,0x6d,0x75,0x6d,0x20,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x20,0x6f,0x66,0x20, - 0x74,0x69,0x6d,0x65,0x20,0x28,0x69,0x6e,0x20,0x6d,0x69,0x6c,0x69,0x73,0x65,0x63, - 0x6f,0x6e,0x64,0x73,0x29,0x20,0x61,0x6e,0x20,0x49,0x43,0x20,0x6d,0x65,0x73,0x73, - 0x61,0x67,0x65,0x20,0x6d,0x75,0x73,0x74,0x20,0x73,0x74,0x61,0x79,0x20,0x6f,0x6e, - 0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x20,0x62,0x65,0x66,0x6f,0x72,0x65,0x20,0x74, - 0x68,0x65,0x20,0x6e,0x65,0x78,0x74,0x20,0x49,0x43,0x20,0x6d,0x65,0x73,0x73,0x61, - 0x67,0x65,0x20,0x69,0x73,0x20,0x73,0x68,0x6f,0x77,0x6e,0x2c,0x20,0x61,0x63,0x74, - 0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x61,0x20,0x27,0x71,0x75,0x65,0x75,0x65,0x27, - 0x2e,0x20,0x53,0x65,0x74,0x20,0x74,0x6f,0x20,0x30,0x20,0x74,0x6f,0x20,0x64,0x69, - 0x73,0x61,0x62,0x6c,0x65,0x20,0x74,0x68,0x69,0x73,0x20,0x62,0x65,0x68,0x61,0x76, - 0x69,0x6f,0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xde,0x0,0x4d, - 0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x20, - 0x0,0x5a,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x20,0x0,0x28,0x0,0x69,0x0,0x6e, - 0x0,0x20,0x0,0x4d,0x0,0x69,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x65,0x0,0x6b, - 0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x29,0x0,0x20,0x0,0x64, - 0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x74, - 0x0,0x72,0x0,0x65,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x20, - 0x0,0x6d,0x0,0xfc,0x0,0x73,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x62, - 0x0,0x65,0x0,0x76,0x0,0x6f,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0xe4,0x0,0x63,0x0,0x68,0x0,0x73,0x0,0x74, - 0x0,0x65,0x0,0x20,0x0,0x45,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20, - 0x0,0x44,0x0,0x72,0x0,0x75,0x0,0x63,0x0,0x6b,0x0,0x20,0x0,0x64,0x0,0x69, - 0x0,0x65,0x0,0x20,0x0,0x4e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69, - 0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x73, - 0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x71,0x4d,0x69,0x6e,0x69,0x6d,0x75,0x6d,0x20,0x61,0x6d, - 0x6f,0x75,0x6e,0x74,0x20,0x6f,0x66,0x20,0x74,0x69,0x6d,0x65,0x20,0x28,0x69,0x6e, - 0x20,0x6d,0x69,0x6c,0x69,0x73,0x65,0x63,0x6f,0x6e,0x64,0x73,0x29,0x20,0x74,0x68, - 0x61,0x74,0x20,0x6d,0x75,0x73,0x74,0x20,0x70,0x61,0x73,0x73,0x20,0x62,0x65,0x66, - 0x6f,0x72,0x65,0x20,0x74,0x68,0x65,0x20,0x6e,0x65,0x78,0x74,0x20,0x45,0x6e,0x74, - 0x65,0x72,0x20,0x6b,0x65,0x79,0x20,0x70,0x72,0x65,0x73,0x73,0x20,0x77,0x69,0x6c, - 0x6c,0x20,0x73,0x65,0x6e,0x64,0x20,0x79,0x6f,0x75,0x72,0x20,0x49,0x43,0x20,0x6d, - 0x65,0x73,0x73,0x61,0x67,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0xc,0x0,0x4d,0x0,0x75,0x0,0x73,0x0,0x69,0x0,0x6b,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4d,0x75,0x73,0x69,0x63,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x2e,0x0,0x4e,0x0,0x65,0x0,0x74,0x0,0x7a,0x0, - 0x77,0x0,0x65,0x0,0x72,0x0,0x6b,0x0,0x20,0x0,0x46,0x0,0x72,0x0,0x61,0x0, - 0x6d,0x0,0x65,0x0,0x2d,0x0,0x45,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x6b,0x0, - 0x74,0x0,0x65,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x16,0x4e, - 0x65,0x74,0x77,0x6f,0x72,0x6b,0x20,0x46,0x72,0x61,0x6d,0x65,0x20,0x45,0x66,0x66, - 0x65,0x63,0x74,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x58,0x0, - 0x53,0x0,0x70,0x0,0x69,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x65,0x0, - 0x69,0x0,0x6e,0x0,0x20,0x0,0x62,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x20,0x0, - 0x65,0x0,0x69,0x0,0x6e,0x0,0x6d,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x66,0x0, - 0xfc,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x20,0x0,0x58,0x0, - 0x20,0x0,0x42,0x0,0x75,0x0,0x63,0x0,0x68,0x0,0x73,0x0,0x74,0x0,0x61,0x0, - 0x62,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x47,0x50,0x6c,0x61,0x79,0x20,0x61,0x20,0x62,0x6c,0x69,0x70,0x20,0x73,0x6f,0x75, - 0x6e,0x64,0x20,0x22,0x6f,0x6e,0x63,0x65,0x20,0x70,0x65,0x72,0x20,0x65,0x76,0x65, - 0x72,0x79,0x20,0x58,0x20,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x22,0x2c,0x20,0x77, - 0x68,0x65,0x72,0x65,0x20,0x58,0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20,0x62,0x6c, - 0x69,0x70,0x20,0x72,0x61,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x36,0x0,0x45,0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x6c, - 0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x6c,0x0,0x62, - 0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6b,0x0,0x6c,0x0,0xe4,0x0,0x72, - 0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x18,0x50,0x72,0x65,0x74,0x74,0x79,0x20,0x73,0x65,0x6c,0x66,0x2d,0x65,0x78, - 0x70,0x6c,0x61,0x6e,0x61,0x74,0x6f,0x72,0x79,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0xe,0x0,0x4b,0x0,0x6c,0x0,0xe4,0x0,0x67,0x0,0x65,0x0,0x72, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x50,0x72,0x6f,0x73, - 0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x5a,0x0,0x41,0x0,0x6b,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x69, - 0x0,0x73,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x61, - 0x0,0x73,0x0,0x20,0x0,0x44,0x0,0x65,0x0,0x73,0x0,0x69,0x0,0x67,0x0,0x6e, - 0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x6c, - 0x0,0x65,0x0,0x20,0x0,0x55,0x0,0x49,0x0,0x20,0x0,0x45,0x0,0x6c,0x0,0x65, - 0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x3d,0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x20,0x74,0x68, - 0x65,0x20,0x74,0x68,0x65,0x6d,0x65,0x20,0x61,0x6e,0x64,0x20,0x75,0x70,0x64,0x61, - 0x74,0x65,0x20,0x61,0x6c,0x6c,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x75,0x69, - 0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x74,0x6f,0x20,0x6d,0x61,0x74, - 0x63,0x68,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x24,0x0,0x41,0x0, - 0x75,0x0,0x73,0x0,0x73,0x0,0x65,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x20,0x0, - 0x6e,0x0,0x65,0x0,0x75,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x64,0x0,0x65,0x0, - 0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x52,0x65,0x6c,0x6f,0x61, - 0x64,0x20,0x54,0x68,0x65,0x6d,0x65,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x8,0x0,0x53,0x0,0x46,0x0,0x58,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x4,0x53,0x46,0x58,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1, - 0x2,0x0,0x53,0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x74,0x0,0x20,0x0, - 0x73,0x0,0x63,0x0,0x68,0x0,0xfc,0x0,0x74,0x0,0x74,0x0,0x65,0x0,0x6c,0x0, - 0x2c,0x0,0x20,0x0,0x42,0x0,0x6c,0x0,0x69,0x0,0x74,0x0,0x7a,0x0,0x65,0x0, - 0x20,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x47,0x0,0x65,0x0,0x72,0x0, - 0xe4,0x0,0x75,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x20,0x0,0x61,0x0, - 0x75,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x63,0x0, - 0x68,0x0,0x61,0x0,0x72,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x20,0x0, - 0x44,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x69,0x0,0x20,0x0,0xfc,0x0,0x62,0x0, - 0x65,0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x4e,0x0, - 0x65,0x0,0x74,0x0,0x7a,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x6b,0x0,0x2e,0x0, - 0x20,0x0,0x46,0x0,0x75,0x0,0x6e,0x0,0x6b,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0, - 0x69,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x6e,0x0,0x75,0x0,0x72,0x0, - 0x20,0x0,0x77,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x72,0x0,0x20,0x0,0x53,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0,0x72,0x0, - 0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x75,0x0,0x6e,0x0, - 0x74,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x74,0x0,0xfc,0x0,0x74,0x0,0x7a,0x0, - 0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8c,0x53,0x65,0x6e, - 0x64,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x2d,0x73,0x68,0x61,0x6b,0x69,0x6e,0x67, - 0x2c,0x20,0x66,0x6c,0x61,0x73,0x68,0x65,0x73,0x20,0x61,0x6e,0x64,0x20,0x73,0x6f, - 0x75,0x6e,0x64,0x73,0x20,0x61,0x73,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20, - 0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x63,0x68,0x61,0x72,0x2e,0x69,0x6e,0x69,0x20, - 0x6f,0x76,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x6e,0x65,0x74,0x77,0x6f,0x72,0x6b, - 0x2e,0x20,0x4f,0x6e,0x6c,0x79,0x20,0x77,0x6f,0x72,0x6b,0x73,0x20,0x66,0x6f,0x72, - 0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x73,0x75, - 0x70,0x70,0x6f,0x72,0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x66,0x75,0x6e,0x63,0x74, - 0x69,0x6f,0x6e,0x61,0x6c,0x69,0x74,0x79,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x1,0x36,0x0,0x53,0x0,0x65,0x0,0x74,0x0,0x7a,0x0,0x74,0x0,0x20,0x0, - 0x65,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x27,0x0,0x55,0x0,0x6e,0x0,0x74,0x0, - 0x65,0x0,0x72,0x0,0x74,0x0,0x68,0x0,0x65,0x0,0x6d,0x0,0x65,0x0,0x27,0x0, - 0x2c,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x6c,0x0, - 0x6c,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x73,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x75,0x0, - 0x65,0x0,0x6c,0x0,0x6c,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x54,0x0,0x68,0x0, - 0x65,0x0,0x6d,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x65,0x0, - 0x74,0x0,0x7a,0x0,0x74,0x0,0x2e,0x0,0x20,0x0,0x4c,0x0,0x61,0x0,0x73,0x0, - 0x73,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x66,0x0, - 0x20,0x0,0x27,0x0,0x53,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0,0x72,0x0, - 0x27,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6e,0x0, - 0x20,0x0,0x53,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0, - 0x65,0x0,0x6e,0x0,0x74,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x69,0x0, - 0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0x6c,0x0, - 0x61,0x0,0x73,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x2e,0x0,0x20,0x0,0x27,0x0, - 0x53,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x64,0x0, - 0x27,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x20,0x0, - 0x73,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0x6c,0x0,0x61,0x0, - 0x73,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0xb5,0x53,0x65,0x74,0x73,0x20,0x61,0x20,0x27,0x73,0x75,0x62,0x74,0x68, - 0x65,0x6d,0x65,0x27,0x2c,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x77,0x69,0x6c,0x6c, - 0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x70,0x20,0x6f,0x66, - 0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x74,0x68,0x65, - 0x6d,0x65,0x20,0x61,0x6e,0x64,0x20,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x20,0x61, - 0x6e,0x79,0x74,0x68,0x69,0x6e,0x67,0x20,0x69,0x74,0x20,0x63,0x61,0x6e,0x2e,0x4b, - 0x65,0x65,0x70,0x20,0x69,0x74,0x20,0x61,0x74,0x20,0x27,0x73,0x65,0x72,0x76,0x65, - 0x72,0x27,0x20,0x74,0x6f,0x20,0x6c,0x65,0x74,0x20,0x74,0x68,0x65,0x20,0x73,0x65, - 0x72,0x76,0x65,0x72,0x20,0x64,0x65,0x63,0x69,0x64,0x65,0x2e,0x20,0x4b,0x65,0x65, - 0x70,0x20,0x69,0x74,0x20,0x61,0x74,0x20,0x27,0x64,0x65,0x66,0x61,0x75,0x6c,0x74, - 0x27,0x20,0x74,0x6f,0x20,0x6b,0x65,0x65,0x70,0x20,0x69,0x74,0x20,0x75,0x6e,0x63, - 0x68,0x61,0x6e,0x67,0x69,0x6e,0x67,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0xac,0x0,0x53,0x0,0x65,0x0,0x74,0x0,0x7a,0x0,0x74,0x0,0x20,0x0,0x64, - 0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x4c,0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x73, - 0x0,0x74,0x0,0xe4,0x0,0x72,0x0,0x6b,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x72,0x0,0x20,0x0,0x53,0x0,0x6f,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x65, - 0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x77, - 0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x45,0x0,0x69,0x0,0x6e,0x0,0x73,0x0,0x70, - 0x0,0x72,0x0,0xfc,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x6e, - 0x0,0x64,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x47,0x0,0x65, - 0x0,0x72,0x0,0xe4,0x0,0x75,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72, - 0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x55,0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65, - 0x20,0x53,0x46,0x58,0x27,0x73,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x76, - 0x6f,0x6c,0x75,0x6d,0x65,0x2e,0x20,0x49,0x6e,0x74,0x65,0x72,0x6a,0x65,0x63,0x74, - 0x69,0x6f,0x6e,0x73,0x20,0x61,0x6e,0x64,0x20,0x61,0x63,0x74,0x75,0x61,0x6c,0x20, - 0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20,0x63,0x6f, - 0x75,0x6e,0x74,0x20,0x61,0x73,0x20,0x27,0x53,0x46,0x58,0x27,0x2e,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x4e,0x0,0x53,0x0,0x65,0x0,0x74,0x0,0x7a,0x0, - 0x74,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x41,0x0,0x75,0x0, - 0x64,0x0,0x69,0x0,0x6f,0x0,0x67,0x0,0x65,0x0,0x72,0x0,0xe4,0x0,0x74,0x0, - 0x20,0x0,0x66,0x0,0xfc,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0, - 0x20,0x0,0x47,0x0,0x65,0x0,0x72,0x0,0xe4,0x0,0x75,0x0,0x73,0x0,0x63,0x0, - 0x68,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x25,0x53, - 0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x61,0x75,0x64,0x69,0x6f,0x20,0x64,0x65, - 0x76,0x69,0x63,0x65,0x20,0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20,0x73,0x6f,0x75, - 0x6e,0x64,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x52,0x0,0x53, - 0x0,0x65,0x0,0x74,0x0,0x7a,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x50,0x0,0x61,0x0,0x75,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x7a, - 0x0,0x77,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x20, - 0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x7a,0x0,0x65,0x0,0x6c,0x0,0x6e,0x0,0x65, - 0x0,0x6e,0x0,0x20,0x0,0x42,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x73,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2f,0x53,0x65,0x74,0x73,0x20,0x74, - 0x68,0x65,0x20,0x64,0x65,0x6c,0x61,0x79,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e, - 0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x62,0x6c,0x69, - 0x70,0x20,0x73,0x6f,0x75,0x6e,0x64,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x8e,0x0,0x53,0x0,0x65,0x0,0x74,0x0,0x7a,0x0,0x74,0x0,0x65,0x0, - 0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x53,0x0,0x70,0x0,0x72,0x0, - 0x61,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x20,0x0,0x66,0x0,0x61,0x0,0x6c,0x0, - 0x6c,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x6e,0x0,0x69,0x0, - 0x63,0x0,0x68,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0, - 0x53,0x0,0x79,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x73,0x0,0x70,0x0, - 0x72,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x20,0x0,0x76,0x0,0x65,0x0, - 0x72,0x0,0x77,0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0, - 0x6d,0x0,0xf6,0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x40,0x53,0x65,0x74,0x73,0x20, - 0x74,0x68,0x65,0x20,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x20,0x69,0x66,0x20, - 0x79,0x6f,0x75,0x20,0x64,0x6f,0x6e,0x27,0x74,0x20,0x77,0x61,0x6e,0x74,0x20,0x74, - 0x6f,0x20,0x75,0x73,0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x73,0x79,0x73,0x74,0x65, - 0x6d,0x20,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x34,0x0,0x53,0x0,0x65,0x0,0x74,0x0,0x7a,0x0,0x74,0x0, - 0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x4d,0x0,0x75,0x0,0x73,0x0, - 0x69,0x0,0x6b,0x0,0x6c,0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x73,0x0,0x74,0x0, - 0xe4,0x0,0x72,0x0,0x6b,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x20,0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x6d,0x75,0x73,0x69, - 0x63,0x27,0x73,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x76,0x6f,0x6c,0x75, - 0x6d,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xfe,0x0,0x53,0x0, - 0x65,0x0,0x74,0x0,0x7a,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0, - 0x20,0x0,0x54,0x0,0x68,0x0,0x65,0x0,0x6d,0x0,0x65,0x0,0x2e,0x0,0x20,0x0, - 0x57,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0, - 0x20,0x0,0x6e,0x0,0x65,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x54,0x0,0x68,0x0, - 0x65,0x0,0x6d,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x63,0x0,0x68,0x0, - 0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x41,0x0,0x75,0x0,0x73,0x0, - 0x73,0x0,0x65,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x72,0x0,0x20,0x0,0x4c,0x0,0x6f,0x0,0x62,0x0,0x62,0x0,0x79,0x0,0x20,0x0, - 0x76,0x0,0x65,0x0,0x72,0x0,0xe4,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72,0x0, - 0x74,0x0,0x2c,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x73,0x0,0x74,0x0,0x20,0x0, - 0x64,0x0,0x75,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x65,0x0, - 0x20,0x0,0x6e,0x0,0x65,0x0,0x75,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x64,0x0, - 0x65,0x0,0x6e,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x64,0x0,0x69,0x0, - 0x65,0x0,0x20,0x0,0xc4,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x75,0x0, - 0x6e,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0, - 0x73,0x0,0x65,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xbb,0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x74,0x68, - 0x65,0x6d,0x65,0x20,0x75,0x73,0x65,0x64,0x20,0x69,0x6e,0x2d,0x67,0x61,0x6d,0x65, - 0x2e,0x20,0x49,0x66,0x20,0x74,0x68,0x65,0x20,0x6e,0x65,0x77,0x20,0x74,0x68,0x65, - 0x6d,0x65,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x20,0x74,0x68,0x65,0x20,0x6c, - 0x6f,0x62,0x62,0x79,0x27,0x73,0x20,0x6c,0x6f,0x6f,0x6b,0x20,0x61,0x73,0x20,0x77, - 0x65,0x6c,0x6c,0x2c,0x20,0x79,0x6f,0x75,0x27,0x6c,0x6c,0x20,0x6e,0x65,0x65,0x64, - 0x20,0x74,0x6f,0x20,0x72,0x65,0x6c,0x6f,0x61,0x64,0x20,0x74,0x68,0x65,0x20,0x6c, - 0x6f,0x62,0x62,0x79,0x20,0x66,0x6f,0x72,0x20,0x74,0x68,0x65,0x20,0x63,0x68,0x61, - 0x6e,0x67,0x65,0x73,0x20,0x74,0x6f,0x20,0x74,0x61,0x6b,0x65,0x20,0x65,0x66,0x66, - 0x65,0x63,0x74,0x2c,0x20,0x73,0x75,0x63,0x68,0x20,0x61,0x73,0x20,0x62,0x79,0x20, - 0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x20,0x61,0x20,0x73,0x65,0x72,0x76,0x65,0x72, - 0x20,0x61,0x6e,0x64,0x20,0x6c,0x65,0x61,0x76,0x69,0x6e,0x67,0x20,0x69,0x74,0x2e, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xb4,0x0,0x53,0x0,0x65,0x0,0x74, - 0x0,0x7a,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x4c, - 0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x73,0x0,0x74,0x0,0xe4,0x0,0x72,0x0,0x6b, - 0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x42,0x0,0x6c, - 0x0,0x69,0x0,0x70,0x0,0x73,0x0,0x2c,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73, - 0x0,0x20,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73, - 0x0,0x20,0x0,0x47,0x0,0x65,0x0,0x72,0x0,0xe4,0x0,0x75,0x0,0x73,0x0,0x63, - 0x0,0x68,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x69, - 0x0,0x65,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x6b, - 0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x69, - 0x0,0x6d,0x0,0x20,0x0,0x52,0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20, - 0x0,0x6d,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x38,0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65, - 0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x62, - 0x6c,0x69,0x70,0x73,0x2c,0x20,0x74,0x68,0x65,0x20,0x74,0x61,0x6c,0x6b,0x69,0x6e, - 0x67,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2e, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1a,0x0,0x45,0x0,0x69,0x0,0x6e, - 0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x75,0x0,0x6e,0x0,0x67, - 0x0,0x65,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x65, - 0x74,0x74,0x69,0x6e,0x67,0x73,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x16, - 0x0,0x53,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x6f,0x0,0x67,0x0,0x72,0x0,0x61, - 0x0,0x70,0x0,0x68,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd, - 0x53,0x74,0x65,0x6e,0x6f,0x67,0x72,0x61,0x70,0x68,0x65,0x72,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x10,0x0,0x53,0x0,0x74,0x0,0x69,0x0,0x63,0x0, - 0x6b,0x0,0x65,0x0,0x72,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x9,0x53,0x74,0x69,0x63,0x6b,0x65,0x72,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x20,0x0,0x4b,0x0,0x6c,0x0,0x65,0x0,0x62,0x0,0x65,0x0,0x6e, - 0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x45,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x6b, - 0x0,0x74,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xf,0x53,0x74, - 0x69,0x63,0x6b,0x79,0x20,0x45,0x66,0x66,0x65,0x63,0x74,0x73,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x4b,0x0,0x6c,0x0,0x65,0x0,0x62,0x0, - 0x65,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x56,0x0,0x6f,0x0,0x72,0x0, - 0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x74,0x0,0x69,0x0,0x6f,0x0, - 0x6e,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x53,0x74,0x69, - 0x63,0x6b,0x79,0x20,0x50,0x72,0x65,0x61,0x6e,0x69,0x6d,0x73,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x32,0x0,0x4b,0x0,0x6c,0x0,0x65,0x0,0x62,0x0, - 0x65,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x47,0x0,0x65,0x0,0x72,0x0, - 0xe4,0x0,0x75,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x75,0x0,0x73,0x0, - 0x77,0x0,0x61,0x0,0x68,0x0,0x6c,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0xe,0x53,0x74,0x69,0x63,0x6b,0x79,0x20,0x53,0x6f,0x75,0x6e,0x64,0x73, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x46,0x0,0x4d,0x0,0x75,0x0, - 0x73,0x0,0x69,0x0,0x6b,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x72,0x0,0x63,0x0, - 0x68,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x4b,0x0, - 0x61,0x0,0x74,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x72,0x0,0x69,0x0,0x65,0x0, - 0x20,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x70,0x0,0x70,0x0,0x65,0x0,0x6e,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17,0x53,0x74,0x6f,0x70,0x20, - 0x4d,0x75,0x73,0x69,0x63,0x20,0x77,0x2f,0x20,0x43,0x61,0x74,0x65,0x67,0x6f,0x72, - 0x79,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x40,0x0,0x53,0x0,0x74, - 0x0,0x6f,0x0,0x70,0x0,0x70,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x4d,0x0,0x75,0x0,0x73,0x0,0x69,0x0,0x6b,0x0,0x20,0x0,0x77, - 0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65, - 0x0,0x20,0x0,0x4b,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x72, - 0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x70,0x0,0x70,0x0,0x65, - 0x0,0x6c,0x0,0x74,0x0,0x20,0x0,0x67,0x0,0x65,0x0,0x6b,0x0,0x6c,0x0,0x69, - 0x0,0x63,0x0,0x6b,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0,0x64, - 0x0,0x2e,0x0,0x20,0x0,0x57,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x64, - 0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x61,0x0,0x6b, - 0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x20, - 0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x2c,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x6e, - 0x0,0x75,0x0,0x74,0x0,0x7a,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x52,0x0,0x65,0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x65,0x0,0x20, - 0x0,0x4d,0x0,0x61,0x0,0x75,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x73,0x0,0x74, - 0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x64,0x0,0x61, - 0x0,0x73,0x0,0x20,0x0,0x4b,0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x78, - 0x0,0x74,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0xfc,0x0,0x20,0x0,0x75,0x0,0x6d, - 0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x4d,0x0,0x75,0x0,0x73, - 0x0,0x69,0x0,0x6b,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x7a,0x0,0x75,0x0,0x68, - 0x0,0x61,0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x70,0x53,0x74,0x6f,0x70,0x20,0x6d,0x75,0x73,0x69,0x63, - 0x20,0x77,0x68,0x65,0x6e,0x20,0x64,0x6f,0x75,0x62,0x6c,0x65,0x2d,0x63,0x6c,0x69, - 0x63,0x6b,0x69,0x6e,0x67,0x20,0x61,0x20,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79, - 0x2e,0x20,0x49,0x66,0x20,0x74,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x64,0x69,0x73, - 0x61,0x62,0x6c,0x65,0x64,0x2c,0x20,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x72, - 0x69,0x67,0x68,0x74,0x2d,0x63,0x6c,0x69,0x63,0x6b,0x20,0x63,0x6f,0x6e,0x74,0x65, - 0x78,0x74,0x20,0x6d,0x65,0x6e,0x75,0x20,0x74,0x6f,0x20,0x73,0x74,0x6f,0x70,0x20, - 0x6d,0x75,0x73,0x69,0x63,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x16, - 0x0,0x55,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x68,0x0,0x65, - 0x0,0x6d,0x0,0x65,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9, - 0x53,0x75,0x62,0x74,0x68,0x65,0x6d,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x14,0x0,0x53,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x7a,0x0, - 0x65,0x0,0x69,0x0,0x74,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xf,0x54,0x65,0x78,0x74,0x20,0x53,0x74,0x61,0x79,0x20,0x54,0x69,0x6d,0x65,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x22,0x0,0x4b,0x0,0x72,0x0,0x69, - 0x0,0x65,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72, - 0x0,0x20,0x0,0x54,0x0,0x65,0x0,0x78,0x0,0x74,0x0,0x3a,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0xb,0x54,0x65,0x78,0x74,0x20,0x63,0x72,0x61,0x77,0x6c, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xd2,0x0,0x44,0x0,0x69,0x0, - 0x65,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x20,0x0, - 0x61,0x0,0x6e,0x0,0x20,0x0,0x5a,0x0,0x65,0x0,0x69,0x0,0x6c,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x61,0x0, - 0x73,0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x20,0x0,0x4c,0x0,0x6f,0x0,0x67,0x0, - 0x20,0x0,0x62,0x0,0x65,0x0,0x68,0x0,0xe4,0x0,0x6c,0x0,0x74,0x0,0x20,0x0, - 0x62,0x0,0x65,0x0,0x76,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0xe4,0x0,0x6c,0x0, - 0x74,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x4e,0x0,0x61,0x0,0x63,0x0, - 0x68,0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x65,0x0,0x6e,0x0, - 0x20,0x0,0x67,0x0,0x65,0x0,0x6c,0x0,0xf6,0x0,0x73,0x0,0x63,0x0,0x68,0x0, - 0x74,0x0,0x20,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x64,0x0,0x65,0x0,0x6e,0x0, - 0x2e,0x0,0x20,0x0,0x30,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x64,0x0,0x65,0x0, - 0x75,0x0,0x74,0x0,0x65,0x0,0x74,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x65,0x0, - 0x6e,0x0,0x64,0x0,0x6c,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x85,0x54,0x68,0x65,0x20,0x61,0x6d,0x6f,0x75,0x6e, - 0x74,0x20,0x6f,0x66,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x6c,0x69,0x6e, - 0x65,0x73,0x20,0x74,0x68,0x65,0x20,0x49,0x43,0x20,0x63,0x68,0x61,0x74,0x6c,0x6f, - 0x67,0x20,0x77,0x69,0x6c,0x6c,0x20,0x6b,0x65,0x65,0x70,0x20,0x62,0x65,0x66,0x6f, - 0x72,0x65,0x20,0x64,0x65,0x6c,0x65,0x74,0x69,0x6e,0x67,0x20,0x6f,0x6c,0x64,0x65, - 0x72,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x6c,0x69,0x6e,0x65,0x73,0x2e, - 0x20,0x41,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x6f,0x66,0x20,0x30,0x20,0x6f,0x72, - 0x20,0x62,0x65,0x6c,0x6f,0x77,0x20,0x63,0x6f,0x75,0x6e,0x74,0x73,0x20,0x61,0x73, - 0x20,0x27,0x69,0x6e,0x66,0x69,0x6e,0x69,0x74,0x65,0x27,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x80,0x0,0x53,0x0,0x65,0x0,0x74,0x0,0x7a,0x0,0x74, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x41,0x0,0x62,0x0,0x73, - 0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x7a,0x0,0x77,0x0,0x69, - 0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x6e,0x0,0x20,0x0,0x5a,0x0,0x65,0x0,0x69,0x0,0x6c,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x50,0x0,0x72,0x0,0x6f,0x0,0x74, - 0x0,0x6f,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x6c,0x0,0x2e,0x0,0x20,0x0,0x53, - 0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x64,0x0,0x3a, - 0x0,0x20,0x0,0x30,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x44, - 0x54,0x68,0x65,0x20,0x64,0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x20,0x69,0x6e,0x20, - 0x70,0x69,0x78,0x65,0x6c,0x73,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e,0x20,0x65, - 0x61,0x63,0x68,0x20,0x65,0x6e,0x74,0x72,0x79,0x20,0x69,0x6e,0x20,0x74,0x68,0x65, - 0x20,0x49,0x43,0x20,0x6c,0x6f,0x67,0x2e,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74, - 0x3a,0x20,0x30,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x54, - 0x0,0x68,0x0,0x65,0x0,0x6d,0x0,0x65,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x6,0x54,0x68,0x65,0x6d,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x56,0x0,0x44,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x72, - 0x0,0x20,0x0,0x53,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x20, - 0x0,0x75,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x74,0x0,0xfc, - 0x0,0x74,0x0,0x7a,0x0,0x74,0x0,0x20,0x0,0x46,0x0,0x61,0x0,0x6c,0x0,0x6c, - 0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x72,0x0,0x6d,0x0,0x65,0x0,0x20,0x0,0x6e, - 0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x29,0x54,0x68,0x69,0x73,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20, - 0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74, - 0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x2e,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x4a,0x0,0x44,0x0,0x69,0x0,0x65,0x0,0x73,0x0, - 0x65,0x0,0x72,0x0,0x20,0x0,0x53,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0, - 0x72,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x73,0x0, - 0x74,0x0,0xfc,0x0,0x74,0x0,0x7a,0x0,0x74,0x0,0x20,0x0,0x46,0x0,0x61,0x0, - 0x6c,0x0,0x6c,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x72,0x0,0x6d,0x0,0x65,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x21,0x54,0x68,0x69,0x73,0x20, - 0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x73,0x20, - 0x63,0x61,0x73,0x65,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x66,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61, - 0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x6b,0x0,0xf6, - 0x0,0x6e,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x69,0x0,0x68,0x0,0x72, - 0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x65, - 0x0,0x6e,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x74,0x0,0x62,0x0,0x6f, - 0x0,0x78,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x77, - 0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x4d,0x54,0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73,0x20, - 0x6f,0x6e,0x20,0x74,0x6f,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x20,0x63,0x68,0x61,0x72, - 0x61,0x63,0x74,0x65,0x72,0x73,0x20,0x74,0x6f,0x20,0x64,0x65,0x66,0x69,0x6e,0x65, - 0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x6f,0x77,0x6e,0x20,0x63,0x75,0x73,0x74,0x6f, - 0x6d,0x20,0x63,0x68,0x61,0x74,0x20,0x62,0x6f,0x78,0x20,0x64,0x65,0x73,0x69,0x67, - 0x6e,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x62,0x0,0x41,0x0, - 0x6e,0x0,0x20,0x0,0x7a,0x0,0x65,0x0,0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0, - 0x27,0x0,0x53,0x0,0x74,0x0,0x69,0x0,0x63,0x0,0x6b,0x0,0x65,0x0,0x72,0x0, - 0x27,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x2c,0x0,0x20,0x0,0x6b,0x0,0x6c,0x0, - 0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x42,0x0,0x69,0x0,0x6c,0x0, - 0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x20,0x0, - 0x41,0x0,0x76,0x0,0x61,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x65,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x88,0x54,0x75,0x72,0x6e,0x20,0x74,0x68, - 0x69,0x73,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x20,0x63, - 0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x20,0x74,0x6f,0x20,0x64,0x65,0x66, - 0x69,0x6e,0x65,0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x6f,0x77,0x6e,0x20,0x73,0x74, - 0x69,0x63,0x6b,0x65,0x72,0x73,0x20,0x28,0x75,0x6e,0x69,0x71,0x75,0x65,0x20,0x69, - 0x6d,0x61,0x67,0x65,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x73,0x68,0x6f,0x77,0x20, - 0x75,0x70,0x20,0x6f,0x76,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x63,0x68,0x61,0x74, - 0x62,0x6f,0x78,0x20,0x2d,0x20,0x6c,0x69,0x6b,0x65,0x20,0x61,0x76,0x61,0x74,0x61, - 0x72,0x73,0x20,0x6f,0x72,0x20,0x73,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73,0x29, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xe0,0x0,0x41,0x0,0x6b,0x0, - 0x74,0x0,0x69,0x0,0x76,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x20,0x0, - 0x64,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x6d,0x0, - 0x69,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x4b,0x0, - 0x6f,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x6f,0x0,0x6c,0x0,0x6c,0x0,0x6b,0x0, - 0xe4,0x0,0x73,0x0,0x74,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x20,0x0, - 0x66,0x0,0xfc,0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0, - 0x56,0x0,0x6f,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0, - 0x74,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x63,0x0, - 0x68,0x0,0x74,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x72,0x0,0xfc,0x0,0x63,0x0, - 0x6b,0x0,0x73,0x0,0x70,0x0,0x72,0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x74,0x0, - 0x20,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x64,0x0,0x65,0x0,0x6d,0x0, - 0x20,0x0,0x73,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x67,0x0, - 0x65,0x0,0x73,0x0,0x70,0x0,0x69,0x0,0x65,0x0,0x6c,0x0,0x74,0x0,0x20,0x0, - 0x77,0x0,0x75,0x0,0x72,0x0,0x64,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x54,0x54,0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x6f, - 0x6e,0x20,0x74,0x6f,0x20,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x20,0x70,0x72,0x65, - 0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x62, - 0x6f,0x78,0x20,0x66,0x72,0x6f,0x6d,0x20,0x63,0x6c,0x65,0x61,0x72,0x69,0x6e,0x67, - 0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x74, - 0x68,0x65,0x20,0x65,0x6d,0x6f,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0xae,0x0,0x41,0x0,0x6b,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x69,0x0, - 0x65,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x73,0x0, - 0x20,0x0,0x64,0x0,0x61,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x20,0x0,0x64,0x0, - 0x69,0x0,0x65,0x0,0x20,0x0,0x45,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x6b,0x0, - 0x74,0x0,0x61,0x0,0x75,0x0,0x73,0x0,0x77,0x0,0x61,0x0,0x68,0x0,0x6c,0x0, - 0x20,0x0,0x6e,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x20,0x0,0x7a,0x0, - 0x75,0x0,0x72,0x0,0xfc,0x0,0x63,0x0,0x6b,0x0,0x73,0x0,0x70,0x0,0x72,0x0, - 0x69,0x0,0x6e,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x63,0x0, - 0x68,0x0,0x64,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x72,0x0,0x20,0x0, - 0x61,0x0,0x62,0x0,0x67,0x0,0x65,0x0,0x73,0x0,0x70,0x0,0x69,0x0,0x65,0x0, - 0x6c,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x75,0x0,0x72,0x0,0x64,0x0,0x65,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x57,0x54,0x75,0x72,0x6e,0x20, - 0x74,0x68,0x69,0x73,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x70,0x72,0x65,0x76,0x65, - 0x6e,0x74,0x20,0x74,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20,0x64, - 0x72,0x6f,0x70,0x64,0x6f,0x77,0x6e,0x20,0x66,0x72,0x6f,0x6d,0x20,0x63,0x6c,0x65, - 0x61,0x72,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74, - 0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x69, - 0x74,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xb2,0x0,0x41,0x0,0x6b, - 0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x20, - 0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x6d, - 0x0,0x69,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x47, - 0x0,0x65,0x0,0x72,0x0,0xe4,0x0,0x75,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x61, - 0x0,0x75,0x0,0x73,0x0,0x77,0x0,0x61,0x0,0x68,0x0,0x6c,0x0,0x20,0x0,0x6e, - 0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x72, - 0x0,0xfc,0x0,0x63,0x0,0x6b,0x0,0x73,0x0,0x70,0x0,0x72,0x0,0x69,0x0,0x6e, - 0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x64, - 0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x62, - 0x0,0x67,0x0,0x65,0x0,0x73,0x0,0x70,0x0,0x69,0x0,0x65,0x0,0x6c,0x0,0x74, - 0x0,0x20,0x0,0x77,0x0,0x75,0x0,0x72,0x0,0x64,0x0,0x65,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x54,0x54,0x75,0x72,0x6e,0x20,0x74,0x68,0x69, - 0x73,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x20, - 0x74,0x68,0x65,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x64,0x72,0x6f,0x70,0x64,0x6f, - 0x77,0x6e,0x20,0x66,0x72,0x6f,0x6d,0x20,0x63,0x6c,0x65,0x61,0x72,0x69,0x6e,0x67, - 0x20,0x74,0x68,0x65,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x61,0x66,0x74,0x65,0x72, - 0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x69,0x74,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x52,0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x65, - 0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x74,0x0,0x20,0x0,0x46,0x0,0x61,0x0,0x72, - 0x0,0x62,0x0,0x65,0x0,0x20,0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x49,0x0,0x43, - 0x0,0x20,0x0,0x4c,0x0,0x6f,0x0,0x67,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x20, - 0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x42, - 0x0,0x69,0x0,0x6c,0x0,0x64,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x2f,0x55,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x6d,0x61,0x72,0x6b,0x75,0x70, - 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x73, - 0x65,0x72,0x76,0x65,0x72,0x20,0x49,0x43,0x20,0x63,0x68,0x61,0x74,0x6c,0x6f,0x67, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xb4,0x0,0x53,0x0,0x70,0x0, - 0x69,0x0,0x65,0x0,0x6c,0x0,0x74,0x0,0x20,0x0,0x41,0x0,0x6e,0x0,0x69,0x0, - 0x6d,0x0,0x61,0x0,0x74,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0, - 0x20,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0, - 0x64,0x0,0x6f,0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x20,0x0, - 0x77,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x61,0x0, - 0x75,0x0,0x66,0x0,0x67,0x0,0x65,0x0,0x68,0x0,0xf6,0x0,0x72,0x0,0x74,0x0, - 0x20,0x0,0x68,0x0,0x61,0x0,0x62,0x0,0x65,0x0,0x6e,0x0,0x2e,0x0,0x20,0x0, - 0x41,0x0,0x75,0x0,0x73,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x6c,0x0, - 0x74,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x6b,0x0,0x61,0x0,0x6e,0x0,0x6e,0x0, - 0x20,0x0,0x62,0x0,0x65,0x0,0x69,0x0,0x20,0x0,0x4c,0x0,0x61,0x0,0x67,0x0, - 0x20,0x0,0x68,0x0,0x65,0x0,0x6c,0x0,0x66,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x63,0x57,0x68,0x65,0x74,0x68,0x65,0x72, - 0x20,0x6f,0x72,0x20,0x6e,0x6f,0x74,0x20,0x74,0x6f,0x20,0x72,0x65,0x73,0x75,0x6d, - 0x65,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74, - 0x69,0x6f,0x6e,0x73,0x20,0x66,0x72,0x6f,0x6d,0x20,0x77,0x68,0x65,0x72,0x65,0x20, - 0x74,0x68,0x65,0x79,0x20,0x6c,0x65,0x66,0x74,0x20,0x6f,0x66,0x66,0x2e,0x20,0x54, - 0x75,0x72,0x6e,0x69,0x6e,0x67,0x20,0x6f,0x66,0x66,0x20,0x6d,0x69,0x67,0x68,0x74, - 0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x20,0x6c,0x61,0x67,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x60,0x0,0x44,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20, - 0x0,0x4f,0x0,0x4f,0x0,0x43,0x0,0x20,0x0,0x4e,0x0,0x61,0x0,0x6d,0x0,0x65, - 0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0,0x64,0x0,0x20,0x0,0x61,0x0,0x75, - 0x0,0x74,0x0,0x6f,0x0,0x6d,0x0,0x61,0x0,0x74,0x0,0x69,0x0,0x73,0x0,0x63, - 0x0,0x68,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x66,0x0,0x20,0x0,0x64,0x0,0x69, - 0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x67,0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x74, - 0x0,0x7a,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4d, - 0x59,0x6f,0x75,0x72,0x20,0x4f,0x4f,0x43,0x20,0x6e,0x61,0x6d,0x65,0x20,0x77,0x69, - 0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x75,0x74,0x6f,0x6d,0x61,0x74,0x69,0x63,0x61, - 0x6c,0x6c,0x79,0x20,0x73,0x65,0x74,0x20,0x74,0x6f,0x20,0x74,0x68,0x69,0x73,0x20, - 0x76,0x61,0x6c,0x75,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x79,0x6f,0x75,0x20,0x6a, - 0x6f,0x69,0x6e,0x20,0x61,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x22,0x0,0x25,0x0,0x31,0x0,0x22,0x0, - 0x20,0x0,0x77,0x0,0x75,0x0,0x72,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0xfc,0x0, - 0x62,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x67,0x0,0x65,0x0, - 0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1a,0x22,0x25,0x31, - 0x22,0x20,0x68,0x61,0x73,0x20,0x62,0x65,0x65,0x6e,0x20,0x74,0x72,0x61,0x6e,0x73, - 0x66,0x65,0x72,0x72,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x25,0x0,0x20,0x0, - 0x48,0x0,0x6f,0x0,0x72,0x0,0x69,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x74,0x0, - 0x61,0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x41,0x0,0x62,0x0,0x73,0x0, - 0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xa,0x25,0x20,0x78,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x28,0x0, - 0x25,0x0,0x20,0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x69,0x0,0x6b,0x0, - 0x61,0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x41,0x0,0x62,0x0,0x73,0x0, - 0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xa,0x25,0x20,0x79,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x6,0x0, - 0x41,0x0,0x2f,0x0,0x4d,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x41, - 0x2f,0x4d,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x28,0x0,0x4e,0x0,0x65,0x0,0x75,0x0,0x65,0x0,0x73, - 0x0,0x20,0x0,0x42,0x0,0x65,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x73,0x0,0x73, - 0x0,0x74,0x0,0xfc,0x0,0x63,0x0,0x6b,0x0,0x2e,0x0,0x2e,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x41,0x64,0x64,0x20,0x6e,0x65,0x77,0x20, - 0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x2e,0x2e,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x58,0x0, - 0x46,0x0,0xfc,0x0,0x67,0x0,0x65,0x0,0x20,0x0,0x54,0x0,0x65,0x0,0x78,0x0, - 0x74,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x69,0x0, - 0x6e,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x6c,0x0,0x65,0x0,0x74,0x0,0x7a,0x0, - 0x74,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x4e,0x0,0x61,0x0,0x63,0x0,0x68,0x0, - 0x72,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x20,0x0,0x68,0x0,0x69,0x0, - 0x6e,0x0,0x7a,0x0,0x75,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x32,0x41,0x64,0x64,0x20,0x74,0x65,0x78,0x74,0x20,0x74,0x6f,0x20,0x79,0x6f,0x75, - 0x72,0x20,0x6c,0x61,0x73,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65, - 0x73,0x73,0x61,0x67,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b, - 0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x48,0x0,0x69,0x0,0x6e,0x0,0x7a,0x0, - 0x75,0x0,0x66,0x0,0xfc,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x64,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x41,0x64,0x64,0x69,0x74,0x69,0x76,0x65,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x66,0x0,0x4c,0x0,0xe4,0x0,0x73,0x0,0x73,0x0,0x74,0x0,0x20,0x0, - 0x64,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x72,0x0, - 0x73,0x0,0x63,0x0,0x68,0x0,0x69,0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x6e,0x0, - 0x65,0x0,0x20,0x0,0x44,0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x43,0x0,0x6c,0x0,0x69,0x0,0x65,0x0, - 0x6e,0x0,0x74,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x70,0x0,0x61,0x0, - 0x73,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x33,0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x79,0x6f,0x75,0x20,0x74,0x6f, - 0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x76,0x61,0x72,0x69,0x6f,0x75,0x73,0x20, - 0x61,0x73,0x70,0x65,0x63,0x74,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x63, - 0x6c,0x69,0x65,0x6e,0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x82,0x0,0x45,0x0,0x69,0x0,0x6e, - 0x0,0x20,0x0,0x4d,0x0,0x65,0x0,0x6e,0x0,0xfc,0x0,0x20,0x0,0x75,0x0,0x6d, - 0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x46, - 0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x7a,0x0,0x75, - 0x0,0x6b,0x0,0xfc,0x0,0x6e,0x0,0x64,0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x28,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x73, - 0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x66,0x0,0xfc,0x0,0x72, - 0x0,0x20,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x43,0x0,0x4d, - 0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x29,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x61,0x41,0x6e,0x20,0x69,0x6e,0x74,0x65,0x72,0x66,0x61, - 0x63,0x65,0x20,0x74,0x6f,0x20,0x68,0x65,0x6c,0x70,0x20,0x79,0x6f,0x75,0x20,0x61, - 0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x20,0x61,0x20,0x63,0x61,0x73,0x65,0x20,0x28, - 0x79,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x74,0x6f,0x20,0x62,0x65,0x20,0x61, - 0x20,0x43,0x4d,0x20,0x66,0x69,0x72,0x73,0x74,0x20,0x74,0x6f,0x20,0x62,0x65,0x20, - 0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65, - 0x20,0x63,0x61,0x73,0x65,0x73,0x29,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x5a,0x0,0x75,0x0, - 0x72,0x0,0xfc,0x0,0x63,0x0,0x6b,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x72,0x0, - 0x20,0x0,0x4c,0x0,0x6f,0x0,0x62,0x0,0x62,0x0,0x79,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xd,0x42,0x61,0x63,0x6b,0x20,0x74,0x6f,0x20,0x4c,0x6f,0x62, - 0x62,0x79,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0xa0,0x0,0x57,0x0,0x65,0x0,0x72,0x0,0x64,0x0,0x65, - 0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x5a,0x0,0x75,0x0,0x73, - 0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x75,0x0,0x65,0x0,0x72,0x0,0x2e,0x0,0x20, - 0x0,0x45,0x0,0x73,0x0,0x20,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x64, - 0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74, - 0x0,0x20,0x0,0x6d,0x0,0xf6,0x0,0x67,0x0,0x6c,0x0,0x69,0x0,0x63,0x0,0x68, - 0x0,0x20,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6d, - 0x0,0x20,0x0,0x53,0x0,0x70,0x0,0x69,0x0,0x65,0x0,0x6c,0x0,0x66,0x0,0x65, - 0x0,0x6c,0x0,0x64,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0x69,0x0,0x6e, - 0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x67,0x0,0x69,0x0,0x65,0x0,0x72, - 0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4f, - 0x42,0x65,0x63,0x6f,0x6d,0x65,0x20,0x61,0x20,0x73,0x70,0x65,0x63,0x74,0x61,0x74, - 0x6f,0x72,0x2e,0x20,0x59,0x6f,0x75,0x20,0x77,0x6f,0x6e,0x27,0x74,0x20,0x62,0x65, - 0x20,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x69,0x6e,0x74,0x65,0x72,0x61,0x63, - 0x74,0x20,0x77,0x69,0x74,0x68,0x20,0x74,0x68,0x65,0x20,0x69,0x6e,0x2d,0x63,0x68, - 0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x2e,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0xa,0x0,0x42,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x73,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x42,0x6c,0x69,0x70,0x73,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x6e, - 0x0,0x5a,0x0,0x65,0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x69, - 0x0,0x65,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x6b, - 0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x75,0x0,0x73,0x0,0x77,0x0,0x61, - 0x0,0x68,0x0,0x6c,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0xe4, - 0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61, - 0x0,0x72,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3f,0x42,0x72,0x69,0x6e,0x67,0x20,0x75,0x70, - 0x20,0x74,0x68,0x65,0x20,0x43,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x53, - 0x65,0x6c,0x65,0x63,0x74,0x20,0x53,0x63,0x72,0x65,0x65,0x6e,0x20,0x61,0x6e,0x64, - 0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61, - 0x72,0x61,0x63,0x74,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x5a,0x0,0x65,0x0, - 0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0, - 0x42,0x0,0x65,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x73,0x0,0x6c,0x0,0x69,0x0, - 0x73,0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x1d,0x42,0x72,0x69,0x6e,0x67,0x20,0x75,0x70,0x20,0x74,0x68,0x65,0x20,0x45,0x76, - 0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x2e,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0xc,0x0,0x43,0x0,0x4c,0x0,0x49,0x0,0x45,0x0,0x4e,0x0,0x54,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x4c,0x49,0x45,0x4e,0x54,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x16,0x0,0x53,0x0,0x50,0x0,0x45,0x0,0x5a,0x0,0x49,0x0,0x41,0x0,0x4c, - 0x0,0x52,0x0,0x55,0x0,0x46,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x11,0x43,0x55,0x53,0x54,0x4f,0x4d,0x20,0x4f,0x42,0x4a,0x45,0x43,0x54,0x49, - 0x4f,0x4e,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x1e,0x0,0x4d,0x0,0x6f,0x0,0x64,0x0,0x65,0x0, - 0x72,0x0,0x61,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x72,0x0,0x75,0x0, - 0x66,0x0,0x65,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x43, - 0x61,0x6c,0x6c,0x20,0x4d,0x6f,0x64,0x65,0x72,0x61,0x74,0x6f,0x72,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x1e,0x0,0x4d,0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x74,0x0, - 0x6f,0x0,0x72,0x0,0x20,0x0,0x72,0x0,0x75,0x0,0x66,0x0,0x65,0x0,0x6e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x43,0x61,0x6c,0x6c,0x20,0x6d,0x6f, - 0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x18,0x0,0x46,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x20,0x0, - 0x76,0x0,0x6f,0x0,0x6e,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x43,0x61,0x73,0x65,0x20,0x6d,0x61,0x64,0x65, - 0x20,0x62,0x79,0x20,0x25,0x31,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x8,0x0,0x46,0x0,0x61,0x0, - 0x6c,0x0,0x6c,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x61,0x73, - 0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0, - 0x61,0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0xe4,0x0,0x6e,0x0, - 0x64,0x0,0x65,0x0,0x72,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x10,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65, - 0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x62,0x0,0xc4,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72,0x0, - 0x74,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x48,0x0,0x6f,0x0, - 0x69,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x6c,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x41,0x0,0x62,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0, - 0x64,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x6c,0x0,0x61,0x0,0x74,0x0,0x69,0x0, - 0x76,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x72,0x0,0x20,0x0,0x4d,0x0,0x69,0x0, - 0x74,0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x63,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x74,0x68,0x65,0x20,0x68,0x6f,0x72,0x69, - 0x7a,0x6f,0x6e,0x74,0x61,0x6c,0x20,0x70,0x65,0x72,0x63,0x65,0x6e,0x74,0x61,0x67, - 0x65,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x6f,0x66,0x20,0x79,0x6f,0x75,0x72, - 0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73,0x20,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x20,0x66,0x72,0x6f,0x6d,0x20,0x74,0x68,0x65,0x20,0x63, - 0x65,0x6e,0x74,0x65,0x72,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x73,0x63,0x72, - 0x65,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x70,0x0,0xc4,0x0,0x6e,0x0,0x64,0x0,0x65, - 0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x52, - 0x0,0x65,0x0,0x69,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x66,0x0,0x6f,0x0,0x6c, - 0x0,0x67,0x0,0x65,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x43,0x0,0x68, - 0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x65, - 0x0,0x20,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x69, - 0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x32,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x74,0x68,0x65,0x20,0x6f,0x72,0x64, - 0x65,0x72,0x20,0x6f,0x66,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x61,0x6e,0x63,0x65, - 0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63, - 0x74,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc8,0x0,0xc4,0x0,0x6e,0x0,0x64,0x0,0x65, - 0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x54, - 0x0,0x65,0x0,0x78,0x0,0x74,0x0,0x66,0x0,0x61,0x0,0x72,0x0,0x62,0x0,0x65, - 0x0,0x2e,0x0,0xa,0x0,0x44,0x0,0x75,0x0,0x20,0x0,0x6b,0x0,0x61,0x0,0x6e, - 0x0,0x6e,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x63,0x0,0x68, - 0x0,0x20,0x0,0x6e,0x0,0x75,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e, - 0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x54,0x0,0x65,0x0,0x69,0x0,0x6c,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x4e,0x0,0x61,0x0,0x63,0x0,0x68, - 0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x20,0x0,0x61,0x0,0x75, - 0x0,0x73,0x0,0x77,0x0,0xe4,0x0,0x68,0x0,0x6c,0x0,0x65,0x0,0x6e,0x0,0x20, - 0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x73, - 0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x46,0x0,0x61,0x0,0x72,0x0,0x62,0x0,0x65, - 0x0,0x20,0x0,0xe4,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x21, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x91,0x43,0x68,0x61,0x6e,0x67,0x65, - 0x20,0x74,0x68,0x65,0x20,0x74,0x65,0x78,0x74,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65, - 0x73,0x73,0x61,0x67,0x65,0x2e,0xa,0x59,0x6f,0x75,0x20,0x63,0x61,0x6e,0x20,0x61, - 0x6c,0x73,0x6f,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x20,0x61,0x20,0x70,0x61,0x72, - 0x74,0x20,0x6f,0x66,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x75,0x72,0x72,0x65,0x6e, - 0x74,0x6c,0x79,0x20,0x74,0x79,0x70,0x65,0x64,0x20,0x6d,0x65,0x73,0x73,0x61,0x67, - 0x65,0x20,0x61,0x6e,0x64,0x20,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x64,0x72, - 0x6f,0x70,0x64,0x6f,0x77,0x6e,0x20,0x74,0x6f,0x20,0x63,0x68,0x61,0x6e,0x67,0x65, - 0x20,0x69,0x74,0x73,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x21,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x60,0x0, - 0xc4,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x6e,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x69,0x0, - 0x6b,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x41,0x0,0x62,0x0, - 0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x72,0x0,0x65,0x0, - 0x6c,0x0,0x61,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x20,0x0,0x7a,0x0,0x75,0x0, - 0x72,0x0,0x20,0x0,0x4d,0x0,0x69,0x0,0x74,0x0,0x74,0x0,0x65,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x61,0x43,0x68,0x61,0x6e,0x67,0x65,0x20, - 0x74,0x68,0x65,0x20,0x76,0x65,0x72,0x74,0x69,0x63,0x61,0x6c,0x20,0x70,0x65,0x72, - 0x63,0x65,0x6e,0x74,0x61,0x67,0x65,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x6f, - 0x66,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72, - 0x27,0x73,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x66,0x72,0x6f,0x6d, - 0x20,0x74,0x68,0x65,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x6f,0x66,0x20,0x74, - 0x68,0x65,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0xf2,0x0,0x57, - 0x0,0xe4,0x0,0x68,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e, - 0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x45,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x6b, - 0x0,0x74,0x0,0x20,0x0,0x66,0x0,0xfc,0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x69, - 0x0,0x65,0x0,0x20,0x0,0x6e,0x0,0xe4,0x0,0x63,0x0,0x68,0x0,0x73,0x0,0x74, - 0x0,0x65,0x0,0x20,0x0,0x4e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69, - 0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x2e,0x0,0xa,0x0,0x44,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x45,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x65, - 0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x66,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x20, - 0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x74,0x0,0x68,0x0,0x65,0x0,0x6d,0x0,0x65, - 0x0,0x2f,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x73, - 0x0,0x2f,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x73, - 0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x2e,0x0,0x20,0x0,0x44,0x0,0x65, - 0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61, - 0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x6b,0x0,0x61,0x0,0x6e, - 0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x65, - 0x0,0x20,0x0,0x45,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x65, - 0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0xa, - 0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69, - 0x0,0x20,0x0,0x5b,0x0,0x4f,0x0,0x70,0x0,0x74,0x0,0x69,0x0,0x6f,0x0,0x6e, - 0x0,0x73,0x0,0x5d,0x0,0x20,0x0,0x4b,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x67, - 0x0,0x6f,0x0,0x72,0x0,0x69,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x65,0x0,0x66, - 0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x73,0x0,0x20,0x0,0x3d,0x0,0x20, - 0x0,0x27,0x0,0x6d,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x6e,0x0,0x61,0x0,0x6d, - 0x0,0x65,0x0,0x27,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x62,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x77,0x0,0x65,0x0,0x6c,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x72, - 0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x6d,0x0,0x69, - 0x0,0x73,0x0,0x63,0x0,0x2f,0x0,0x3c,0x0,0x6d,0x0,0x69,0x0,0x73,0x0,0x63, - 0x0,0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x3e,0x0,0x2f,0x0,0x65,0x0,0x66, - 0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x73,0x0,0x2e,0x0,0x69,0x0,0x6e, - 0x0,0x69,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x1,0x13,0x43,0x68,0x6f,0x6f,0x73,0x65, - 0x20,0x61,0x6e,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x20,0x74,0x6f,0x20,0x70,0x6c, - 0x61,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x6e,0x65,0x78,0x74,0x20, - 0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2e,0xa, - 0x54,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20,0x61,0x72,0x65,0x20, - 0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x69,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20, - 0x74,0x68,0x65,0x6d,0x65,0x2f,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2f,0x65,0x66, - 0x66,0x65,0x63,0x74,0x73,0x2e,0x69,0x6e,0x69,0x2e,0x20,0x59,0x6f,0x75,0x72,0x20, - 0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x63,0x61,0x6e,0x20,0x64,0x65, - 0x66,0x69,0x6e,0x65,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x65,0x66,0x66,0x65, - 0x63,0x74,0x73,0x20,0x62,0x79,0xa,0x63,0x68,0x61,0x72,0x2e,0x69,0x6e,0x69,0x20, - 0x5b,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x5d,0x20,0x63,0x61,0x74,0x65,0x67,0x6f, - 0x72,0x79,0x2c,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20,0x3d,0x20,0x27,0x6d, - 0x69,0x73,0x63,0x6e,0x61,0x6d,0x65,0x27,0x20,0x77,0x68,0x65,0x72,0x65,0x20,0x69, - 0x74,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x73,0x20,0x74,0x6f,0x20,0x6d,0x69,0x73, - 0x63,0x2f,0x3c,0x6d,0x69,0x73,0x63,0x6e,0x61,0x6d,0x65,0x3e,0x2f,0x65,0x66,0x66, - 0x65,0x63,0x74,0x73,0x2e,0x69,0x6e,0x69,0x20,0x74,0x6f,0x20,0x72,0x65,0x61,0x64, - 0x20,0x74,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0xe,0x0,0x57,0x0,0xe4,0x0,0x68,0x0,0x6c,0x0,0x65,0x0,0x2e,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x43,0x68,0x6f,0x6f,0x73,0x65,0x2e, - 0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0xa8,0x0,0x53,0x0,0x63,0x0,0x68,0x0,0x6c,0x0,0x69,0x0, - 0x65,0x0,0xdf,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0, - 0x42,0x0,0x65,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x73,0x0,0x66,0x0,0x65,0x0, - 0x6e,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x2e,0x0,0xa,0x0,0x44,0x0, - 0x75,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0,0x73,0x0,0x74,0x0,0x20,0x0, - 0x67,0x0,0x65,0x0,0x66,0x0,0x72,0x0,0x61,0x0,0x67,0x0,0x74,0x0,0x20,0x0, - 0x77,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x20,0x0, - 0x75,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x73,0x0,0x70,0x0,0x65,0x0,0x69,0x0, - 0x63,0x0,0x68,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0xc4,0x0, - 0x6e,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x75,0x0,0x6e,0x0,0x67,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x67,0x0,0x69,0x0,0x62,0x0,0x74,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x60,0x43,0x6c,0x6f,0x73,0x65,0x20,0x74,0x68,0x65, - 0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x64,0x69,0x73,0x70,0x6c,0x61, - 0x79,0x2f,0x65,0x64,0x69,0x74,0x69,0x6e,0x67,0x20,0x6f,0x76,0x65,0x72,0x6c,0x61, - 0x79,0x2e,0xa,0x59,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x70, - 0x72,0x6f,0x6d,0x70,0x74,0x65,0x64,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x72,0x65, - 0x27,0x73,0x20,0x61,0x6e,0x79,0x20,0x75,0x6e,0x73,0x61,0x76,0x65,0x64,0x20,0x63, - 0x68,0x61,0x6e,0x67,0x65,0x73,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x34,0x0,0x41,0x0,0x6c,0x0, - 0x6c,0x0,0x65,0x0,0x20,0x0,0x4b,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x67,0x0, - 0x6f,0x0,0x72,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x76,0x0,0x65,0x0, - 0x72,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x63,0x0,0x6b,0x0,0x65,0x0,0x6e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17,0x43,0x6f,0x6c,0x6c,0x61,0x70,0x73, - 0x65,0x20,0x41,0x6c,0x6c,0x20,0x43,0x61,0x74,0x65,0x67,0x6f,0x72,0x69,0x65,0x73, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x6e,0x0,0x42,0x0,0x65,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x73, - 0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x67, - 0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x61,0x0,0x6c,0x0,0x2e,0x0,0x20,0x0,0x4b, - 0x0,0x6c,0x0,0x69,0x0,0x63,0x0,0x6b,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x75, - 0x0,0x6d,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x67, - 0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20, - 0x0,0x77,0x0,0x65,0x0,0x63,0x0,0x68,0x0,0x73,0x0,0x65,0x0,0x6c,0x0,0x6e, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x37,0x43,0x75,0x72,0x72, - 0x65,0x6e,0x74,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x69,0x73,0x20, - 0x67,0x6c,0x6f,0x62,0x61,0x6c,0x2e,0x20,0x43,0x6c,0x69,0x63,0x6b,0x20,0x74,0x6f, - 0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x20,0x74,0x6f,0x20,0x70,0x72,0x69,0x76,0x61, - 0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x76,0x0,0x42,0x0,0x65,0x0,0x77,0x0,0x65,0x0, - 0x69,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x6e,0x0,0x64,0x0, - 0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x67,0x0, - 0x65,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x2e,0x0,0x20,0x0,0x4b,0x0,0x6c,0x0, - 0x69,0x0,0x63,0x0,0x6b,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x75,0x0,0x6d,0x0, - 0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0x67,0x0,0x6c,0x0,0x6f,0x0,0x62,0x0, - 0x61,0x0,0x6c,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0x77,0x0,0x65,0x0, - 0x63,0x0,0x68,0x0,0x73,0x0,0x65,0x0,0x6c,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x37,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x65, - 0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x69,0x73,0x20,0x70,0x72,0x69,0x76,0x61, - 0x74,0x65,0x2e,0x20,0x43,0x6c,0x69,0x63,0x6b,0x20,0x74,0x6f,0x20,0x73,0x77,0x69, - 0x74,0x63,0x68,0x20,0x74,0x6f,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x2e,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x28,0x0,0x45,0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x72, - 0x0,0x20,0x0,0x5a,0x0,0x77,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x65, - 0x0,0x6e,0x0,0x72,0x0,0x75,0x0,0x66,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xd,0x43,0x75,0x73,0x74,0x6f,0x6d,0x20,0x53,0x68,0x6f,0x75,0x74, - 0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x34,0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x72,0x0,0x69,0x0, - 0x6e,0x0,0x67,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x69,0x0, - 0x65,0x0,0x20,0x0,0x47,0x0,0x65,0x0,0x73,0x0,0x75,0x0,0x6e,0x0,0x64,0x0, - 0x68,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x18,0x44,0x65,0x63,0x72,0x65,0x61,0x73,0x65,0x20,0x74,0x68,0x65,0x20, - 0x68,0x65,0x61,0x6c,0x74,0x68,0x20,0x62,0x61,0x72,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x10,0x0, - 0x53,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x64,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x44,0x65,0x66,0x61,0x75,0x6c,0x74, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x36,0x0,0x5a,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x74,0x0,0xf6, - 0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x65, - 0x0,0x73,0x0,0x20,0x0,0x42,0x0,0x65,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x73, - 0x0,0x73,0x0,0x74,0x0,0xfc,0x0,0x63,0x0,0x6b,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x1e,0x44,0x65,0x73,0x74,0x72,0x6f,0x79,0x20,0x74,0x68,0x69,0x73, - 0x20,0x70,0x69,0x65,0x63,0x65,0x20,0x6f,0x66,0x20,0x65,0x76,0x69,0x64,0x65,0x6e, - 0x63,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x52,0x0,0x5a,0x0,0x65,0x0,0x69,0x0,0x67,0x0,0x74, - 0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x6c,0x0,0x62,0x0,0x73,0x0,0x74,0x0,0x20, - 0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6c,0x0,0x6c, - 0x0,0x62,0x0,0x61,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x4e,0x0,0x61,0x0,0x6d, - 0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x66,0x0,0xfc,0x0,0x72,0x0,0x20,0x0,0x61, - 0x0,0x6c,0x0,0x6c,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x38,0x44,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d, - 0x69,0x7a,0x65,0x64,0x20,0x73,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73,0x20,0x66, - 0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20,0x75,0x73,0x65,0x72,0x73,0x20,0x77,0x68,0x65, - 0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x68,0x0,0x5a, - 0x0,0x65,0x0,0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x6b,0x0,0x74, - 0x0,0x65,0x0,0x72,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x20, - 0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x73,0x0,0x74,0x0,0x75,0x0,0x6d,0x0,0x6d,0x0,0x20,0x0,0x7a, - 0x0,0x75,0x0,0x20,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x6c,0x0,0x74, - 0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x37, - 0x44,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20,0x6c,0x69,0x73,0x74, - 0x20,0x6f,0x66,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x66,0x6f, - 0x6c,0x64,0x65,0x72,0x73,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x73,0x68,0x20,0x74, - 0x6f,0x20,0x6d,0x75,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x52,0x0,0x5a,0x0,0x65,0x0, - 0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0, - 0x4c,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x72,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x61,0x0,0x72,0x0,0x62,0x0,0x61,0x0, - 0x72,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0, - 0x61,0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x2c,0x44,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x74, - 0x68,0x65,0x20,0x6c,0x69,0x73,0x74,0x20,0x6f,0x66,0x20,0x63,0x68,0x61,0x72,0x61, - 0x63,0x74,0x65,0x72,0x73,0x20,0x74,0x6f,0x20,0x70,0x61,0x69,0x72,0x20,0x77,0x69, - 0x74,0x68,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x56,0x0,0x49,0x0,0x67,0x0,0x6e,0x0,0x6f,0x0, - 0x72,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x4d,0x0,0x6f,0x0, - 0x64,0x0,0x63,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x73,0x0,0x20,0x0,0x75,0x0, - 0x6e,0x0,0x64,0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x69,0x0,0x65,0x0,0x6c,0x0, - 0x20,0x0,0x6b,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0, - 0x54,0x0,0x6f,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x71,0x44,0x6f,0x20,0x6e,0x6f,0x74,0x20,0x6c,0x69, - 0x73,0x74,0x65,0x6e,0x20,0x74,0x6f,0x20,0x6d,0x6f,0x64,0x20,0x63,0x61,0x6c,0x6c, - 0x73,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20, - 0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x6d,0x20, - 0x66,0x72,0x6f,0x6d,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x73,0x6f,0x75, - 0x6e,0x64,0x73,0x20,0x6f,0x72,0x20,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x67,0x20, - 0x61,0x74,0x74,0x65,0x6e,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65, - 0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x4c,0x0,0x4d,0x0,0xf6, - 0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x64, - 0x0,0x75,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20, - 0x0,0xc4,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x75,0x0,0x6e,0x0,0x67, - 0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x65,0x0,0x69,0x0,0x63, - 0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x3f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x21,0x44,0x6f,0x20,0x79,0x6f,0x75,0x20,0x77,0x61,0x6e,0x74,0x20,0x74,0x6f, - 0x20,0x73,0x61,0x76,0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x6e,0x67, - 0x65,0x73,0x3f,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x4c,0x0,0x4d,0x0,0xf6,0x0,0x63,0x0,0x68,0x0, - 0x74,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0xc4,0x0,0x6e,0x0, - 0x64,0x0,0x65,0x0,0x72,0x0,0x75,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x6e,0x0, - 0x20,0x0,0x62,0x0,0x65,0x0,0x68,0x0,0x61,0x0,0x6c,0x0,0x74,0x0,0x65,0x0, - 0x6e,0x0,0x3f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x21,0x44,0x6f,0x20, - 0x79,0x6f,0x75,0x20,0x77,0x69,0x73,0x68,0x20,0x74,0x6f,0x20,0x6b,0x65,0x65,0x70, - 0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x3f,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0xc,0x0,0x46,0x0,0x65,0x0,0x68,0x0,0x6c,0x0,0x65,0x0,0x72,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x45,0x72,0x72,0x6f,0x72,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x32,0x0,0x42,0x0,0x65,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x73,0x0,0x65,0x0, - 0x20,0x0,0x77,0x0,0x75,0x0,0x72,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0, - 0x76,0x0,0x65,0x0,0x72,0x0,0xe4,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72,0x0, - 0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1b,0x45,0x76,0x69, - 0x64,0x65,0x6e,0x63,0x65,0x20,0x68,0x61,0x73,0x20,0x62,0x65,0x65,0x6e,0x20,0x6d, - 0x6f,0x64,0x69,0x66,0x69,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x32,0x0,0x41,0x0,0x6c, - 0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x4b,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x67, - 0x0,0x6f,0x0,0x72,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x72, - 0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x15,0x45,0x78,0x70,0x61,0x6e,0x64,0x20,0x41, - 0x6c,0x6c,0x20,0x43,0x61,0x74,0x65,0x67,0x6f,0x72,0x69,0x65,0x73,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x14,0x0,0x45,0x0,0x69,0x0,0x6e,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x6e,0x0, - 0x64,0x0,0x65,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x46, - 0x61,0x64,0x65,0x20,0x49,0x6e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2a,0x0,0x56,0x0,0x6f,0x0,0x72, - 0x0,0x68,0x0,0x65,0x0,0x72,0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x73,0x0,0x20, - 0x0,0x61,0x0,0x75,0x0,0x73,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x6e,0x0,0x64, - 0x0,0x65,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x46,0x61, - 0x64,0x65,0x20,0x4f,0x75,0x74,0x20,0x50,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x10,0x0,0x53,0x0,0x70,0x0,0x69,0x0,0x65,0x0,0x67,0x0,0x65,0x0, - 0x6c,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x46,0x6c,0x69, - 0x70,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x36,0x0,0x47,0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x72,0x0, - 0x69,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0, - 0x72,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x3a,0x0, - 0xa,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x17,0x47,0x65,0x6e,0x65,0x72,0x61,0x74,0x69,0x6e,0x67,0x20, - 0x63,0x68,0x61,0x72,0x73,0x3a,0xa,0x25,0x31,0x2f,0x25,0x32,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa, - 0x0,0x57,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x5,0x47,0x75,0x61,0x72,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x53,0x0, - 0x63,0x0,0x68,0x0,0x75,0x0,0x6c,0x0,0x64,0x0,0x69,0x0,0x67,0x0,0x21,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x47,0x75,0x69,0x6c,0x74,0x79,0x21, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x16,0x0,0x4d,0x0,0x4f,0x0,0x4d,0x0,0x45,0x0,0x4e,0x0,0x54, - 0x0,0x20,0x0,0x4d,0x0,0x41,0x0,0x4c,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x8,0x48,0x4f,0x4c,0x44,0x20,0x49,0x54,0x21,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x16, - 0x0,0x4d,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x20,0x0,0x6d, - 0x0,0x61,0x0,0x6c,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8, - 0x48,0x6f,0x6c,0x64,0x20,0x49,0x74,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x90,0x0,0x53,0x0,0x74, - 0x0,0x61,0x0,0x72,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x66, - 0x0,0x6f,0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0x73, - 0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x2c, - 0x0,0x20,0x0,0x6f,0x0,0x68,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x75, - 0x0,0x66,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x45,0x0,0x6e, - 0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x56, - 0x0,0x6f,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x74, - 0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0x77, - 0x0,0x61,0x0,0x72,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x5e,0x49,0x66,0x20,0x70,0x72,0x65,0x61,0x6e,0x69,0x6d, - 0x20,0x69,0x73,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x64,0x69,0x73, - 0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x74, - 0x65,0x78,0x74,0x20,0x69,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x6c,0x79,0x20, - 0x61,0x73,0x20,0x74,0x68,0x65,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x70,0x6c,0x61,0x79,0x73,0x20,0x63,0x6f,0x6e,0x63,0x75,0x72,0x72,0x65,0x6e, - 0x74,0x6c,0x79,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1c,0x0,0x42,0x0,0x69,0x0,0x6c,0x0,0x64, - 0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x28,0x0,0x2a,0x0,0x2e,0x0,0x70,0x0,0x6e, - 0x0,0x67,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x49,0x6d, - 0x61,0x67,0x65,0x73,0x20,0x28,0x2a,0x2e,0x70,0x6e,0x67,0x29,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x26, - 0x0,0x4b,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x55,0x0,0x6e, - 0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x68, - 0x0,0x75,0x0,0x6e,0x0,0x67,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9, - 0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x45,0x0, - 0x72,0x0,0x68,0x0,0xf6,0x0,0x68,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x69,0x0, - 0x65,0x0,0x20,0x0,0x47,0x0,0x65,0x0,0x73,0x0,0x75,0x0,0x6e,0x0,0x64,0x0, - 0x68,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x18,0x49,0x6e,0x63,0x72,0x65,0x61,0x73,0x65,0x20,0x74,0x68,0x65,0x20, - 0x68,0x65,0x61,0x6c,0x74,0x68,0x20,0x62,0x61,0x72,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x26,0x0, - 0x49,0x0,0x6e,0x0,0x69,0x0,0x20,0x0,0x44,0x0,0x61,0x0,0x74,0x0,0x65,0x0, - 0x69,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x28,0x0,0x2a,0x0,0x2e,0x0,0x69,0x0, - 0x6e,0x0,0x69,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x49, - 0x6e,0x69,0x20,0x46,0x69,0x6c,0x65,0x73,0x20,0x28,0x2a,0x2e,0x69,0x6e,0x69,0x29, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x9e,0x0,0x4c,0x0,0xe4,0x0,0x73,0x0,0x73,0x0,0x74,0x0,0x20, - 0x0,0x64,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x46,0x0,0x61,0x0,0x6c, - 0x0,0x6c,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x72,0x0,0x6d,0x0,0x65,0x0,0x20, - 0x0,0x65,0x0,0x72,0x0,0x68,0x0,0x61,0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x6e, - 0x0,0x2e,0x0,0xa,0x0,0x28,0x0,0x44,0x0,0x75,0x0,0x20,0x0,0x6b,0x0,0x61, - 0x0,0x6e,0x0,0x6e,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65, - 0x0,0x73,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x45,0x0,0x69,0x0,0x6e,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6c, - 0x0,0x6c,0x0,0x75,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x61, - 0x0,0x6e,0x0,0x70,0x0,0x61,0x0,0x73,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x21, - 0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5a,0x4c,0x65,0x74,0x73, - 0x20,0x79,0x6f,0x75,0x20,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x20,0x63,0x61,0x73, - 0x65,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x77,0x68,0x65,0x6e,0x20,0x65,0x6e, - 0x61,0x62,0x6c,0x65,0x64,0x2e,0xa,0x28,0x59,0x6f,0x75,0x20,0x63,0x61,0x6e,0x20, - 0x73,0x65,0x74,0x20,0x79,0x6f,0x75,0x72,0x20,0x70,0x72,0x65,0x66,0x65,0x72,0x65, - 0x6e,0x63,0x65,0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x53,0x65,0x74,0x74, - 0x69,0x6e,0x67,0x73,0x21,0x29,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x44,0x0,0x4c,0x0,0x61,0x0,0x64, - 0x0,0x65,0x0,0x20,0x0,0x42,0x0,0x65,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x73, - 0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x69, - 0x0,0x6e,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69, - 0x0,0x20,0x0,0x44,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x69,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x20,0x4c,0x6f,0x61,0x64,0x20,0x65,0x76,0x69, - 0x64,0x65,0x6e,0x63,0x65,0x20,0x66,0x72,0x6f,0x6d,0x20,0x61,0x6e,0x20,0x2e,0x69, - 0x6e,0x69,0x20,0x66,0x69,0x6c,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x4d,0x0,0x61, - 0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x6,0x4d,0x61,0x73,0x74,0x65,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x4e,0x0,0x61, - 0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4d,0x65,0x73,0x73,0x61,0x67,0x65,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x4c,0x0,0x53,0x0,0x70,0x0,0x69,0x0,0x65,0x0,0x67,0x0,0x65,0x0, - 0x6c,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x45,0x0, - 0x6d,0x0,0x6f,0x0,0x74,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x69,0x0,0x6e,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0, - 0x72,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2c,0x4d,0x69,0x72,0x72,0x6f,0x72,0x20, - 0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73, - 0x20,0x65,0x6d,0x6f,0x74,0x65,0x73,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65, - 0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa,0x0,0x4d,0x0,0x75,0x0,0x73,0x0, - 0x69,0x0,0x6b,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x4d,0x75,0x73, - 0x69,0x63,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x8,0x0,0x4e,0x0,0x61,0x0,0x6d,0x0,0x65,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x4e,0x61,0x6d,0x65,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x44, - 0x0,0x4e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31, - 0x0,0xa,0x0,0x42,0x0,0x69,0x0,0x6c,0x0,0x64,0x0,0x3a,0x0,0x20,0x0,0x25, - 0x0,0x32,0x0,0xa,0x0,0x42,0x0,0x65,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x72, - 0x0,0x65,0x0,0x69,0x0,0x62,0x0,0x75,0x0,0x6e,0x0,0x67,0x0,0x3a,0x0,0xa, - 0x0,0x25,0x0,0x33,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x22,0x4e,0x61, - 0x6d,0x65,0x3a,0x20,0x25,0x31,0xa,0x49,0x6d,0x61,0x67,0x65,0x3a,0x20,0x25,0x32, - 0xa,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x3a,0xa,0x25,0x33, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x3e,0x0,0x47,0x0,0x65,0x0,0x68,0x0,0x65,0x0,0x20,0x0,0x7a, - 0x0,0x75,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x20,0x0,0x66,0x0,0xfc,0x0,0x72, - 0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x43,0x0,0x4d,0x0,0x20, - 0x0,0x44,0x0,0x6f,0x0,0x6b,0x0,0x75,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1e,0x4e,0x61,0x76,0x69, - 0x67,0x61,0x74,0x65,0x20,0x74,0x6f,0x20,0x25,0x31,0x20,0x66,0x6f,0x72,0x20,0x74, - 0x68,0x65,0x20,0x43,0x4d,0x20,0x64,0x6f,0x63,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa,0x0,0x4b, - 0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x4,0x4e,0x6f,0x6e,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x14,0x0,0x45,0x0,0x49,0x0,0x4e, - 0x0,0x53,0x0,0x50,0x0,0x52,0x0,0x55,0x0,0x43,0x0,0x48,0x0,0x21,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x4f,0x42,0x4a,0x45,0x43,0x54,0x49,0x4f, - 0x4e,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x14,0x0,0x45,0x0,0x69,0x0,0x6e,0x0,0x73,0x0,0x70, - 0x0,0x72,0x0,0x75,0x0,0x63,0x0,0x68,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xa,0x4f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x21,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x28,0x0,0x4f,0x0,0x68,0x0,0x6a,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x64, - 0x0,0x75,0x0,0x20,0x0,0x62,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x73, - 0x0,0x74,0x0,0x75,0x0,0x6d,0x0,0x6d,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x13,0x4f,0x6f,0x70,0x73,0x2c,0x20,0x79,0x6f,0x75,0x27,0x72,0x65, - 0x20,0x6d,0x75,0x74,0x65,0x64,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1e,0x0,0x49,0x0,0x6e,0x0, - 0x76,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0xf6,0x0, - 0x66,0x0,0x66,0x0,0x6e,0x0,0x65,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0xe,0x4f,0x70,0x65,0x6e,0x20,0x49,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72, - 0x79,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x10,0x0,0x50,0x0,0x61,0x0,0x73,0x0,0x73,0x0,0x77,0x0, - 0x6f,0x0,0x72,0x0,0x74,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x50, - 0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x10,0x0,0x47,0x0,0x65,0x0, - 0x73,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x72,0x0,0x74,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xa,0x50,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x65,0x64,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x1e,0x0,0x5a,0x0,0x75,0x0,0x66,0x0,0xe4,0x0,0x6c,0x0,0x6c,0x0, - 0x69,0x0,0x67,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x4c,0x0,0x69,0x0,0x65,0x0, - 0x64,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x50,0x6c,0x61,0x79,0x20, - 0x52,0x61,0x6e,0x64,0x6f,0x6d,0x20,0x53,0x6f,0x6e,0x67,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x4c,0x0, - 0x5a,0x0,0x65,0x0,0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x65,0x0,0x69,0x0, - 0x6e,0x0,0x65,0x0,0x20,0x0,0x41,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0, - 0x74,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x72,0x0, - 0x20,0x0,0x64,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x53,0x0,0x70,0x0,0x72,0x0, - 0x65,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x42,0x50,0x6c,0x61,0x79,0x20,0x61,0x20,0x73,0x69,0x6e,0x67, - 0x6c,0x65,0x2d,0x73,0x68,0x6f,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x61,0x73,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x62,0x79,0x20, - 0x74,0x68,0x65,0x20,0x65,0x6d,0x6f,0x74,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x63, - 0x68,0x65,0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x8e,0x0,0x53,0x0,0x70,0x0, - 0x69,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6e,0x0, - 0x20,0x0,0x52,0x0,0x65,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x69,0x0, - 0x65,0x0,0x72,0x0,0x75,0x0,0x6e,0x0,0x67,0x0,0x20,0x0,0x53,0x0,0x6f,0x0, - 0x75,0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x20,0x0, - 0x41,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x74,0x0,0x69,0x0,0x6f,0x0, - 0x6e,0x0,0x20,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x72,0x0,0x20,0x0,0x6e,0x0,0xe4,0x0,0x63,0x0,0x68,0x0,0x73,0x0,0x74,0x0, - 0x65,0x0,0x6e,0x0,0x20,0x0,0x4e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0, - 0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x5d,0x50,0x6c,0x61,0x79,0x20,0x72,0x65,0x61,0x6c,0x69,0x7a,0x61,0x74, - 0x69,0x6f,0x6e,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x61,0x6e,0x64,0x20,0x61,0x6e, - 0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x76, - 0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x6e, - 0x65,0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61, - 0x67,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x6,0x0,0x56,0x0,0x6f,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x3,0x50,0x72,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x18,0x0,0x56,0x0,0x6f,0x0, - 0x72,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x74,0x0,0x69,0x0, - 0x6f,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x50,0x72,0x65, - 0x61,0x6e,0x69,0x6d,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x7c,0x0,0x50,0x0,0x72,0x0,0xe4,0x0,0x73, - 0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x20, - 0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x42, - 0x0,0x65,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x73,0x0,0x73,0x0,0x74,0x0,0xfc, - 0x0,0x63,0x0,0x6b,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20, - 0x0,0x6e,0x0,0xe4,0x0,0x63,0x0,0x68,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x4e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69,0x0,0x63, - 0x0,0x68,0x0,0x74,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x46,0x50,0x72, - 0x65,0x73,0x65,0x6e,0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x70,0x69,0x65,0x63,0x65, - 0x20,0x6f,0x66,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20, - 0x65,0x76,0x65,0x72,0x79,0x6f,0x6e,0x65,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72, - 0x20,0x6e,0x65,0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73, - 0x73,0x61,0x67,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x47,0x0,0x72,0x0,0x75,0x0,0x6e, - 0x0,0x64,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x52,0x65, - 0x61,0x73,0x6f,0x6e,0x3a,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x5a,0x0,0x41,0x0,0x6b,0x0,0x74,0x0, - 0x75,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x69,0x0,0x65,0x0,0x72,0x0, - 0x74,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x44,0x0,0x65,0x0, - 0x73,0x0,0x69,0x0,0x67,0x0,0x6e,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x64,0x0, - 0x20,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x55,0x0,0x49,0x0, - 0x20,0x0,0x45,0x0,0x6c,0x0,0x65,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0, - 0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3d,0x52,0x65,0x66, - 0x72,0x65,0x73,0x68,0x20,0x74,0x68,0x65,0x20,0x74,0x68,0x65,0x6d,0x65,0x20,0x61, - 0x6e,0x64,0x20,0x75,0x70,0x64,0x61,0x74,0x65,0x20,0x61,0x6c,0x6c,0x20,0x6f,0x66, - 0x20,0x74,0x68,0x65,0x20,0x75,0x69,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73, - 0x20,0x74,0x6f,0x20,0x6d,0x61,0x74,0x63,0x68,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x24,0x0,0x41, - 0x0,0x75,0x0,0x73,0x0,0x73,0x0,0x65,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x20, - 0x0,0x6e,0x0,0x65,0x0,0x75,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x64,0x0,0x65, - 0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x52,0x65,0x6c,0x6f, - 0x61,0x64,0x20,0x74,0x68,0x65,0x6d,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xb2,0x0,0x45,0x0,0x6e, - 0x0,0x74,0x0,0x66,0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x74,0x0,0x20,0x0,0x64, - 0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x75,0x0,0x65, - 0x0,0x6c,0x0,0x6c,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x69, - 0x0,0x73,0x0,0x77,0x0,0x61,0x0,0x70,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x6e, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x4c,0x0,0x69,0x0,0x73, - 0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x73, - 0x0,0x74,0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x6e,0x0,0x20,0x0,0x6f,0x0,0x72,0x0,0x69,0x0,0x67,0x0,0x69,0x0,0x6e, - 0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x4f,0x0,0x72,0x0,0x64, - 0x0,0x6e,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x64, - 0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x68,0x0,0x65,0x0,0x72,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x60,0x52,0x65,0x6d,0x6f,0x76,0x65,0x20,0x74, - 0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x79,0x20,0x73,0x65,0x6c, - 0x65,0x63,0x74,0x65,0x64,0x20,0x69,0x6e,0x69,0x73,0x77,0x61,0x70,0x20,0x66,0x72, - 0x6f,0x6d,0x20,0x74,0x68,0x65,0x20,0x6c,0x69,0x73,0x74,0x20,0x61,0x6e,0x64,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x6f,0x72, - 0x69,0x67,0x69,0x6e,0x61,0x6c,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72, - 0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x5c,0x0,0x45,0x0,0x6e, - 0x0,0x74,0x0,0x66,0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x74,0x0,0x20,0x0,0x64, - 0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x75,0x0,0x65, - 0x0,0x6c,0x0,0x6c,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x73,0x0,0x67,0x0,0x65, - 0x0,0x77,0x0,0xe4,0x0,0x68,0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x20, - 0x0,0x53,0x0,0x6f,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x66, - 0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x2b,0x52,0x65,0x6d,0x6f,0x76,0x65,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72, - 0x72,0x65,0x6e,0x74,0x6c,0x79,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x20, - 0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x36,0x0,0x46,0x0,0x6f,0x0,0x72,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x65,0x0, - 0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x4d,0x0, - 0x6f,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x74,0x0,0x6f,0x0,0x72,0x0, - 0x20,0x0,0x61,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x38,0x52,0x65,0x71,0x75,0x65,0x73,0x74,0x20,0x74,0x68,0x65,0x20,0x61,0x74,0x74, - 0x65,0x6e,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x63,0x75, - 0x72,0x72,0x65,0x6e,0x74,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x27,0x73,0x20,0x6d, - 0x6f,0x64,0x65,0x72,0x61,0x74,0x6f,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x6a,0x0,0x53,0x0, - 0x65,0x0,0x74,0x0,0x7a,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6e,0x0, - 0x20,0x0,0x5a,0x0,0x75,0x0,0x73,0x0,0x61,0x0,0x74,0x0,0x7a,0x0,0x68,0x0, - 0x69,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x67,0x0,0x72,0x0,0x75,0x0, - 0x6e,0x0,0x64,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0, - 0x73,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x6b,0x0, - 0x74,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x72,0x0, - 0xfc,0x0,0x63,0x0,0x6b,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x3f,0x52,0x65,0x73,0x65,0x74,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72, - 0x61,0x63,0x74,0x65,0x72,0x27,0x73,0x20,0x73,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65, - 0x6e,0x74,0x61,0x72,0x79,0x20,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64, - 0x20,0x74,0x6f,0x20,0x69,0x74,0x73,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x2e,0x0,0x5a,0x0,0x75,0x0,0x72,0x0,0xfc,0x0,0x63,0x0,0x6b, - 0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x72,0x0,0x20,0x0,0x53,0x0,0x65,0x0,0x72, - 0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x65, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1f,0x52,0x65,0x74,0x75, - 0x72,0x6e,0x20,0x62,0x61,0x63,0x6b,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x73, - 0x65,0x72,0x76,0x65,0x72,0x20,0x6c,0x69,0x73,0x74,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x22,0x0, - 0x49,0x0,0x6e,0x0,0x76,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72,0x0, - 0x20,0x0,0x73,0x0,0x70,0x0,0x65,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x65,0x0, - 0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x53,0x61,0x76,0x65,0x20, - 0x49,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x96,0x0,0x53,0x0, - 0x70,0x0,0x65,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x72,0x0,0x74,0x0, - 0x20,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0xc4,0x0,0x6e,0x0, - 0x64,0x0,0x65,0x0,0x72,0x0,0x75,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x6e,0x0, - 0x20,0x0,0x61,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x73,0x0, - 0x65,0x0,0x6d,0x0,0x20,0x0,0x42,0x0,0x65,0x0,0x77,0x0,0x65,0x0,0x69,0x0, - 0x73,0x0,0x73,0x0,0x74,0x0,0xfc,0x0,0x63,0x0,0x6b,0x0,0x20,0x0,0x75,0x0, - 0x6e,0x0,0x64,0x0,0x20,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x69,0x0,0x63,0x0, - 0x6b,0x0,0x74,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x7a,0x0, - 0x75,0x0,0x6d,0x0,0x20,0x0,0x53,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0, - 0x72,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x48,0x53,0x61,0x76, - 0x65,0x20,0x61,0x6e,0x79,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x20,0x6d,0x61, - 0x64,0x65,0x20,0x74,0x6f,0x20,0x74,0x68,0x69,0x73,0x20,0x70,0x69,0x65,0x63,0x65, - 0x20,0x6f,0x66,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x61,0x6e,0x64, - 0x20,0x73,0x65,0x6e,0x64,0x20,0x74,0x68,0x65,0x6d,0x20,0x74,0x6f,0x20,0x73,0x65, - 0x72,0x76,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x4c,0x0,0x53,0x0,0x70,0x0,0x65,0x0, - 0x69,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x42,0x0, - 0x65,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x69,0x0, - 0x6e,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x72,0x0,0x20,0x0, - 0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x20,0x0,0x44,0x0,0x61,0x0,0x74,0x0, - 0x65,0x0,0x69,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1e,0x53, - 0x61,0x76,0x65,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20, - 0x61,0x6e,0x20,0x2e,0x69,0x6e,0x69,0x20,0x66,0x69,0x6c,0x65,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0xa,0x0,0x53,0x0,0x75,0x0,0x63,0x0,0x68,0x0,0x65,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x6,0x53,0x65,0x61,0x72,0x63,0x68,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x6e,0x0, - 0x57,0x0,0xe4,0x0,0x68,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x69,0x0, - 0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0, - 0x61,0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x6d,0x0,0x69,0x0, - 0x74,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x64,0x0,0x75,0x0, - 0x20,0x0,0x67,0x0,0x65,0x0,0x70,0x0,0x61,0x0,0x61,0x0,0x72,0x0,0x74,0x0, - 0x20,0x0,0x73,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x6d,0x0,0xf6,0x0, - 0x63,0x0,0x68,0x0,0x74,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x29,0x53,0x65,0x6c,0x65,0x63,0x74,0x20,0x61,0x20, - 0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x79,0x6f,0x75,0x20,0x77,0x69, - 0x73,0x68,0x20,0x74,0x6f,0x20,0x70,0x61,0x69,0x72,0x20,0x77,0x69,0x74,0x68,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0xc,0x0,0x53,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0,0x72, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x53,0x65,0x72,0x76,0x65,0x72, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x1,0xfe,0x0,0x57,0x0,0xe4,0x0,0x68,0x0,0x6c,0x0,0x65,0x0,0x20, - 0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x53,0x0,0x6f, - 0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x6b, - 0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x62,0x0,0x65, - 0x0,0x69,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0xe4, - 0x0,0x63,0x0,0x68,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x27, - 0x0,0x50,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x27, - 0x0,0x20,0x0,0x67,0x0,0x65,0x0,0x73,0x0,0x70,0x0,0x69,0x0,0x65,0x0,0x6c, - 0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0,0x64,0x0,0x2e,0x0,0x20, - 0x0,0x4c,0x0,0x61,0x0,0x73,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x69, - 0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x66,0x0,0x20,0x0,0x53, - 0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x64,0x0,0x20, - 0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65, - 0x0,0x6d,0x0,0x6f,0x0,0x74,0x0,0x65,0x0,0x2d,0x0,0x53,0x0,0x6f,0x0,0x75, - 0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0x76,0x0,0x65, - 0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x2e, - 0x0,0xa,0x0,0x42,0x0,0x65,0x0,0x61,0x0,0x72,0x0,0x62,0x0,0x65,0x0,0x69, - 0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x72,0x0,0x63, - 0x0,0x68,0x0,0x20,0x0,0x74,0x0,0x69,0x0,0x70,0x0,0x70,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x45,0x0,0x6e,0x0,0x74, - 0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x72,0x0,0xfc,0x0,0x63,0x0,0x6b, - 0x0,0x65,0x0,0x6e,0x0,0x2c,0x0,0x20,0x0,0x5b,0x0,0x58,0x0,0x5d,0x0,0x20, - 0x0,0x7a,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x66, - 0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x2e,0x0,0x20,0x0,0x44, - 0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0,0x64,0x0,0x20, - 0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x73,0x0,0x65, - 0x0,0x2f,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x63,0x0,0x74, - 0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x2f,0x0,0x3c,0x0,0x63,0x0,0x68,0x0,0x61, - 0x0,0x72,0x0,0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x3e,0x0,0x2f,0x0,0x73, - 0x0,0x6f,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74, - 0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x20,0x0,0x67,0x0,0x65,0x0,0x73, - 0x0,0x70,0x0,0x65,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x72,0x0,0x74, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe1,0x53,0x65,0x74,0x20, - 0x61,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x20,0x74, - 0x6f,0x20,0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x6e, - 0x65,0x78,0x74,0x20,0x27,0x50,0x72,0x65,0x61,0x6e,0x69,0x6d,0x27,0x2e,0x20,0x4c, - 0x65,0x61,0x76,0x69,0x6e,0x67,0x20,0x69,0x74,0x20,0x6f,0x6e,0x20,0x44,0x65,0x66, - 0x61,0x75,0x6c,0x74,0x20,0x77,0x69,0x6c,0x6c,0x20,0x75,0x73,0x65,0x20,0x74,0x68, - 0x65,0x20,0x65,0x6d,0x6f,0x74,0x65,0x2d,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20, - 0x73,0x6f,0x75,0x6e,0x64,0x20,0x28,0x69,0x66,0x20,0x61,0x6e,0x79,0x29,0x2e,0xa, - 0x45,0x64,0x69,0x74,0x20,0x62,0x79,0x20,0x74,0x79,0x70,0x69,0x6e,0x67,0x20,0x61, - 0x6e,0x64,0x20,0x70,0x72,0x65,0x73,0x73,0x69,0x6e,0x67,0x20,0x45,0x6e,0x74,0x65, - 0x72,0x2c,0x20,0x5b,0x58,0x5d,0x20,0x74,0x6f,0x20,0x72,0x65,0x6d,0x6f,0x76,0x65, - 0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x73,0x61,0x76,0x65,0x73,0x20,0x74,0x6f,0x20, - 0x79,0x6f,0x75,0x72,0x20,0x62,0x61,0x73,0x65,0x2f,0x63,0x68,0x61,0x72,0x61,0x63, - 0x74,0x65,0x72,0x73,0x2f,0x3c,0x63,0x68,0x61,0x72,0x6e,0x61,0x6d,0x65,0x3e,0x2f, - 0x73,0x6f,0x75,0x6e,0x64,0x6c,0x69,0x73,0x74,0x2e,0x69,0x6e,0x69,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1, - 0x84,0x0,0x53,0x0,0x65,0x0,0x74,0x0,0x7a,0x0,0x20,0x0,0x65,0x0,0x69,0x0, - 0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x27,0x0,0x69,0x0,0x6e,0x0,0x69,0x0, - 0x73,0x0,0x77,0x0,0x61,0x0,0x70,0x0,0x27,0x0,0x2c,0x0,0x20,0x0,0x6f,0x0, - 0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x6b,0x0, - 0x74,0x0,0x65,0x0,0x72,0x0,0x6f,0x0,0x72,0x0,0x64,0x0,0x6e,0x0,0x65,0x0, - 0x72,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x69,0x0,0x6e,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x61,0x0,0x6b,0x0,0x74,0x0, - 0x75,0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x43,0x0, - 0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0, - 0x2e,0x0,0xa,0x0,0x42,0x0,0x65,0x0,0x61,0x0,0x72,0x0,0x62,0x0,0x65,0x0, - 0x69,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x72,0x0, - 0x63,0x0,0x68,0x0,0x20,0x0,0x74,0x0,0x69,0x0,0x70,0x0,0x70,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x45,0x0,0x6e,0x0, - 0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x72,0x0,0xfc,0x0,0x63,0x0, - 0x6b,0x0,0x65,0x0,0x6e,0x0,0x2c,0x0,0x20,0x0,0x5b,0x0,0x58,0x0,0x5d,0x0, - 0x20,0x0,0x7a,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x74,0x0, - 0x66,0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x2e,0x0,0x20,0x0, - 0x44,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0,0x64,0x0, - 0x20,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x73,0x0, - 0x65,0x0,0x2f,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x73,0x0,0x77,0x0,0x61,0x0, - 0x70,0x0,0x73,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x20,0x0,0x67,0x0, - 0x65,0x0,0x73,0x0,0x70,0x0,0x65,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x65,0x0, - 0x72,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb4,0x53, - 0x65,0x74,0x20,0x61,0x6e,0x20,0x27,0x69,0x6e,0x69,0x73,0x77,0x61,0x70,0x27,0x2c, - 0x20,0x6f,0x72,0x20,0x61,0x6e,0x20,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x69, - 0x76,0x65,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x66,0x6f,0x6c, - 0x64,0x65,0x72,0x20,0x74,0x6f,0x20,0x72,0x65,0x66,0x65,0x72,0x20,0x74,0x6f,0x20, - 0x66,0x72,0x6f,0x6d,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x75,0x72,0x72,0x65,0x6e, - 0x74,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x2e,0xa,0x45,0x64,0x69, - 0x74,0x20,0x62,0x79,0x20,0x74,0x79,0x70,0x69,0x6e,0x67,0x20,0x61,0x6e,0x64,0x20, - 0x70,0x72,0x65,0x73,0x73,0x69,0x6e,0x67,0x20,0x45,0x6e,0x74,0x65,0x72,0x2c,0x20, - 0x5b,0x58,0x5d,0x20,0x74,0x6f,0x20,0x72,0x65,0x6d,0x6f,0x76,0x65,0x2e,0x20,0x54, - 0x68,0x69,0x73,0x20,0x73,0x61,0x76,0x65,0x73,0x20,0x74,0x6f,0x20,0x79,0x6f,0x75, - 0x72,0x20,0x62,0x61,0x73,0x65,0x2f,0x69,0x6e,0x69,0x73,0x77,0x61,0x70,0x73,0x2e, - 0x69,0x6e,0x69,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x5a,0x0,0x53,0x0,0x65,0x0,0x74,0x0,0x7a,0x0, - 0x74,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x41,0x0,0x75,0x0, - 0x73,0x0,0x64,0x0,0x72,0x0,0x75,0x0,0x63,0x0,0x6b,0x0,0x20,0x0,0x66,0x0, - 0xfc,0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6e,0x0, - 0xe4,0x0,0x63,0x0,0x68,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x4e,0x0, - 0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x38,0x53,0x65,0x74,0x20,0x79, - 0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73,0x20, - 0x65,0x6d,0x6f,0x74,0x65,0x20,0x74,0x6f,0x20,0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e, - 0x20,0x79,0x6f,0x75,0x72,0x20,0x6e,0x65,0x78,0x74,0x20,0x6d,0x65,0x73,0x73,0x61, - 0x67,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x44,0x0,0x53,0x0,0x65,0x0,0x74,0x0,0x7a,0x0, - 0x74,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x50,0x0,0x6f,0x0, - 0x73,0x0,0x69,0x0,0x74,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x73,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0, - 0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x2e,0x53,0x65,0x74,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68, - 0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73,0x20,0x73,0x75,0x70,0x70,0x6c,0x65, - 0x6d,0x65,0x6e,0x74,0x61,0x72,0x79,0x20,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75, - 0x6e,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x1a,0x0,0x45,0x0,0x69,0x0,0x6e,0x0,0x73,0x0, - 0x74,0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x75,0x0,0x6e,0x0,0x67,0x0,0x65,0x0, - 0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x65,0x74,0x74,0x69, - 0x6e,0x67,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x6,0x0,0x53,0x0,0x66,0x0,0x78,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x53,0x66,0x78,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x68,0x0,0x53, - 0x0,0x63,0x0,0x68,0x0,0xfc,0x0,0x74,0x0,0x74,0x0,0x65,0x0,0x6c,0x0,0x74, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x42,0x0,0x69,0x0,0x6c, - 0x0,0x64,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x69,0x0,0x72,0x0,0x6d,0x0,0x20, - 0x0,0x62,0x0,0x65,0x0,0x69,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20, - 0x0,0x6e,0x0,0xe4,0x0,0x63,0x0,0x68,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x4e,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69,0x0,0x63, - 0x0,0x68,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x35, - 0x53,0x68,0x61,0x6b,0x65,0x20,0x74,0x68,0x65,0x20,0x73,0x63,0x72,0x65,0x65,0x6e, - 0x20,0x6f,0x6e,0x20,0x6e,0x65,0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20, - 0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65, - 0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x41,0x0,0x6e,0x0,0x7a,0x0, - 0x65,0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x68,0x6f,0x77,0x6e,0x61,0x6d, - 0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x18,0x0,0x41,0x0,0x6e,0x0,0x7a,0x0,0x65,0x0,0x69,0x0, - 0x67,0x0,0x65,0x0,0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x6e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x53,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x12,0x0,0x5a,0x0,0x75,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x61, - 0x0,0x75,0x0,0x65,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9, - 0x53,0x70,0x65,0x63,0x74,0x61,0x74,0x6f,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x18,0x0,0x4c,0x0, - 0x69,0x0,0x65,0x0,0x64,0x0,0x20,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x70,0x0, - 0x70,0x0,0x65,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x53, - 0x74,0x6f,0x70,0x20,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x53,0x6f,0x6e,0x67, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x30,0x0,0x45,0x0,0x72,0x0,0x66,0x0,0x6f,0x0,0x6c,0x0,0x67, - 0x0,0x72,0x0,0x65,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x67,0x0,0x65, - 0x0,0x73,0x0,0x70,0x0,0x65,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x72, - 0x0,0x74,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x36,0x53,0x75, - 0x63,0x63,0x65,0x73,0x66,0x75,0x6c,0x6c,0x79,0x20,0x73,0x61,0x76,0x65,0x64,0x2c, - 0x20,0x65,0x64,0x69,0x74,0x20,0x64,0x6f,0x63,0x20,0x61,0x6e,0x64,0x20,0x63,0x6d, - 0x64,0x6f,0x63,0x20,0x6c,0x69,0x6e,0x6b,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20, - 0x69,0x6e,0x69,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x4c,0x0,0x57,0x0,0x65,0x0,0x63,0x0,0x68, - 0x0,0x73,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x7a,0x0,0x77,0x0,0x69,0x0,0x73, - 0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x41,0x0,0x72,0x0,0x65, - 0x0,0x61,0x0,0x6c,0x0,0x2d,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x20, - 0x0,0x4d,0x0,0x75,0x0,0x73,0x0,0x69,0x0,0x6b,0x0,0x6c,0x0,0x69,0x0,0x73, - 0x0,0x74,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x24,0x53,0x77, - 0x69,0x74,0x63,0x68,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e,0x20,0x41,0x72,0x65, - 0x61,0x73,0x20,0x61,0x6e,0x64,0x20,0x4d,0x75,0x73,0x69,0x63,0x20,0x6c,0x69,0x73, - 0x74,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x3e,0x0,0x57,0x0,0x65,0x0,0x63,0x0,0x68,0x0,0x73, - 0x0,0x65,0x0,0x6c,0x0,0x74,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x6d,0x0,0x20, - 0x0,0x67,0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x49,0x0,0x6e,0x0,0x76,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61, - 0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x24,0x53,0x77, - 0x69,0x74,0x63,0x68,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f, - 0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72, - 0x79,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x3c,0x0,0x57,0x0,0x65,0x0,0x63,0x0,0x68,0x0,0x73, - 0x0,0x65,0x0,0x6c,0x0,0x74,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x6d,0x0,0x20, - 0x0,0x65,0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20, - 0x0,0x49,0x0,0x6e,0x0,0x76,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x25,0x53,0x77,0x69,0x74, - 0x63,0x68,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x70, - 0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79, - 0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x1e,0x0,0x53,0x0,0x79,0x0,0x6e,0x0,0x63,0x0,0x68,0x0, - 0x72,0x0,0x6f,0x0,0x6e,0x0,0x69,0x0,0x73,0x0,0x69,0x0,0x65,0x0,0x72,0x0, - 0x65,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x53,0x79,0x6e, - 0x63,0x68,0x72,0x6f,0x6e,0x69,0x7a,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x4e,0x0,0x49, - 0x0,0x4d,0x0,0x4d,0x0,0x20,0x0,0x44,0x0,0x41,0x0,0x53,0x0,0x21,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x54,0x41,0x4b,0x45,0x20,0x54,0x48,0x41, - 0x54,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x4e,0x0,0x69,0x0,0x6d,0x0,0x6d,0x0,0x20, - 0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xa,0x54,0x61,0x6b,0x65,0x20,0x54,0x68,0x61,0x74,0x21,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xe, - 0x0,0x42,0x0,0x65,0x0,0x6e,0x0,0x75,0x0,0x74,0x0,0x7a,0x0,0x74,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x54,0x61,0x6b,0x65,0x6e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x34,0x0,0x44,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x4e,0x0,0x61,0x0,0x63,0x0, - 0x68,0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x20,0x0,0x69,0x0, - 0x73,0x0,0x74,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0x6c,0x0,0x61,0x0, - 0x6e,0x0,0x67,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x18,0x54, - 0x68,0x65,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x69,0x73,0x20,0x74,0x6f, - 0x6f,0x20,0x6c,0x6f,0x6e,0x67,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x74,0x0,0x44,0x0,0x61,0x0, - 0x73,0x0,0x20,0x0,0x42,0x0,0x65,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x73,0x0, - 0x73,0x0,0x74,0x0,0xfc,0x0,0x63,0x0,0x6b,0x0,0x20,0x0,0x64,0x0,0x61,0x0, - 0x73,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x61,0x0, - 0x72,0x0,0x62,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x74,0x0,0x20,0x0, - 0x68,0x0,0x61,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x74,0x0, - 0x20,0x0,0x73,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x76,0x0,0x65,0x0, - 0x72,0x0,0xe4,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x36,0x54,0x68,0x65,0x20,0x70,0x69,0x65, - 0x63,0x65,0x20,0x6f,0x66,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x79, - 0x6f,0x75,0x27,0x76,0x65,0x20,0x62,0x65,0x65,0x6e,0x20,0x65,0x64,0x69,0x74,0x69, - 0x6e,0x67,0x20,0x68,0x61,0x73,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x2e,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x80,0x0,0x44,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x7a,0x0, - 0x65,0x0,0x69,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0, - 0x20,0x0,0x41,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x74,0x0,0x69,0x0, - 0x6f,0x0,0x6e,0x0,0x20,0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x53,0x0,0x70,0x0, - 0x69,0x0,0x65,0x0,0x6c,0x0,0x66,0x0,0x65,0x0,0x6c,0x0,0x64,0x0,0x20,0x0, - 0x73,0x0,0x6f,0x0,0x62,0x0,0x61,0x0,0x6c,0x0,0x64,0x0,0x20,0x0,0x65,0x0, - 0x73,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x6b,0x0,0x6c,0x0, - 0x69,0x0,0x63,0x0,0x6b,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0, - 0x64,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x49,0x54,0x68,0x69, - 0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x74, - 0x68,0x65,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20, - 0x74,0x68,0x65,0x20,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x20,0x61,0x73,0x20, - 0x73,0x6f,0x6f,0x6e,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x70,0x72, - 0x65,0x73,0x73,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0x50,0x0,0x44,0x0,0x69,0x0,0x65, - 0x0,0x73,0x0,0x20,0x0,0x7a,0x0,0x65,0x0,0x69,0x0,0x67,0x0,0x74,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x43,0x0,0x68,0x0,0x61,0x0,0x72, - 0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x20,0x0,0x65, - 0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x5a, - 0x0,0x77,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x72, - 0x0,0x75,0x0,0x66,0x0,0x2e,0x0,0xa,0x0,0x55,0x0,0x6d,0x0,0x20,0x0,0x65, - 0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x20, - 0x0,0x68,0x0,0x61,0x0,0x62,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x6d,0x0,0x75, - 0x0,0x73,0x0,0x73,0x0,0x20,0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x43,0x0,0x68, - 0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6f, - 0x0,0x72,0x0,0x64,0x0,0x6e,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x69, - 0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x20,0x0,0x63,0x0,0x75,0x0,0x73,0x0,0x74, - 0x0,0x6f,0x0,0x6d,0x0,0x2e,0x0,0x5b,0x0,0x77,0x0,0x65,0x0,0x62,0x0,0x70, - 0x0,0x2f,0x0,0x61,0x0,0x70,0x0,0x6e,0x0,0x67,0x0,0x2f,0x0,0x67,0x0,0x69, - 0x0,0x66,0x0,0x2f,0x0,0x70,0x0,0x6e,0x0,0x67,0x0,0x5d,0x0,0x20,0x0,0x75, - 0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x63, - 0x0,0x75,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x6d,0x0,0x2e,0x0,0x5b,0x0,0x77, - 0x0,0x61,0x0,0x76,0x0,0x2f,0x0,0x6f,0x0,0x67,0x0,0x67,0x0,0x2f,0x0,0x6f, - 0x0,0x70,0x0,0x75,0x0,0x73,0x0,0x5d,0x0,0x20,0x0,0x53,0x0,0x6f,0x0,0x75, - 0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74, - 0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x69,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xd6,0x54,0x68,0x69,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x64,0x69, - 0x73,0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d, - 0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x2d,0x64,0x65,0x66,0x69,0x6e, - 0x65,0x64,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20, - 0x74,0x68,0x65,0x20,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x20,0x61,0x73,0x20, - 0x73,0x6f,0x6f,0x6e,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x70,0x72, - 0x65,0x73,0x73,0x65,0x64,0x2e,0xa,0x54,0x6f,0x20,0x6d,0x61,0x6b,0x65,0x20,0x6f, - 0x6e,0x65,0x2c,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74, - 0x65,0x72,0x27,0x73,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x20,0x6d,0x75,0x73,0x74, - 0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e, - 0x5b,0x77,0x65,0x62,0x70,0x2f,0x61,0x70,0x6e,0x67,0x2f,0x67,0x69,0x66,0x2f,0x70, - 0x6e,0x67,0x5d,0x20,0x61,0x6e,0x64,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x5b, - 0x77,0x61,0x76,0x2f,0x6f,0x67,0x67,0x2f,0x6f,0x70,0x75,0x73,0x5d,0x20,0x73,0x6f, - 0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x48, - 0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x9,0x54,0x6f,0x20,0x62,0x65,0x68,0x69,0x6e,0x64,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0xa,0x0,0x56,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x8,0x54,0x6f,0x20,0x66,0x72,0x6f,0x6e,0x74,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x54,0x0,0x57,0x0,0x65,0x0,0x63,0x0,0x68,0x0,0x73,0x0,0x65,0x0,0x6c,0x0, - 0x74,0x0,0x20,0x0,0x7a,0x0,0x77,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x68,0x0, - 0x65,0x0,0x6e,0x0,0x20,0x0,0x53,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0, - 0x72,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x74,0x0,0x20,0x0,0x75,0x0,0x6e,0x0, - 0x64,0x0,0x20,0x0,0x41,0x0,0x4f,0x0,0x32,0x0,0x20,0x0,0x43,0x0,0x68,0x0, - 0x61,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2f,0x54, - 0x6f,0x67,0x67,0x6c,0x65,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e,0x20,0x73,0x65, - 0x72,0x76,0x65,0x72,0x20,0x63,0x68,0x61,0x74,0x20,0x61,0x6e,0x64,0x20,0x67,0x6c, - 0x6f,0x62,0x61,0x6c,0x20,0x41,0x4f,0x32,0x20,0x63,0x68,0x61,0x74,0x2e,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x8a,0x0,0x5a,0x0,0x75,0x0,0x20,0x0,0x76,0x0,0x69,0x0,0x65,0x0,0x6c, - 0x0,0x65,0x0,0x20,0x0,0x41,0x0,0x72,0x0,0x67,0x0,0x75,0x0,0x6d,0x0,0x65, - 0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x21,0x0,0x20,0x0,0x44,0x0,0x75,0x0,0x20, - 0x0,0x62,0x0,0x72,0x0,0x61,0x0,0x75,0x0,0x63,0x0,0x68,0x0,0x73,0x0,0x74, - 0x0,0x20,0x0,0x6e,0x0,0x75,0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x44,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x61, - 0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x2c,0x0,0x20,0x0,0x6f,0x0,0x68,0x0,0x6e, - 0x0,0x65,0x0,0x20,0x0,0x45,0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x74, - 0x0,0x65,0x0,0x72,0x0,0x75,0x0,0x6e,0x0,0x67,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x51,0x54,0x6f,0x6f,0x20,0x6d,0x61,0x6e,0x79,0x20,0x61, - 0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x20,0x74,0x6f,0x20,0x6c,0x6f,0x61,0x64, - 0x20,0x61,0x20,0x63,0x61,0x73,0x65,0x21,0x20,0x59,0x6f,0x75,0x20,0x6f,0x6e,0x6c, - 0x79,0x20,0x6e,0x65,0x65,0x64,0x20,0x6f,0x6e,0x65,0x20,0x66,0x69,0x6c,0x65,0x6e, - 0x61,0x6d,0x65,0x2c,0x20,0x77,0x69,0x74,0x68,0x6f,0x75,0x74,0x20,0x65,0x78,0x74, - 0x65,0x6e,0x73,0x69,0x6f,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xba,0x0,0x5a,0x0,0x75,0x0, - 0x20,0x0,0x76,0x0,0x69,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x41,0x0, - 0x72,0x0,0x67,0x0,0x75,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0, - 0x21,0x0,0x20,0x0,0x44,0x0,0x75,0x0,0x20,0x0,0x62,0x0,0x72,0x0,0x61,0x0, - 0x75,0x0,0x63,0x0,0x68,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x6e,0x0,0x75,0x0, - 0x72,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x44,0x0,0x61,0x0, - 0x74,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0, - 0x2c,0x0,0x20,0x0,0x6f,0x0,0x68,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x45,0x0, - 0x72,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x75,0x0, - 0x6e,0x0,0x67,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x77,0x0,0x69,0x0,0x65,0x0, - 0x20,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x47,0x0,0x65,0x0,0x62,0x0, - 0x69,0x0,0x65,0x0,0x74,0x0,0x73,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x74,0x0, - 0x75,0x0,0x73,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x67,0x54, - 0x6f,0x6f,0x20,0x6d,0x61,0x6e,0x79,0x20,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74, - 0x73,0x20,0x74,0x6f,0x20,0x73,0x61,0x76,0x65,0x20,0x61,0x20,0x63,0x61,0x73,0x65, - 0x21,0x20,0x59,0x6f,0x75,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x6e,0x65,0x65,0x64,0x20, - 0x61,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x20,0x77,0x69,0x74,0x68,0x6f, - 0x75,0x74,0x20,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x20,0x61,0x6e,0x64, - 0x20,0x74,0x68,0x65,0x20,0x63,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x20,0x73, - 0x74,0x61,0x74,0x75,0x73,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x58,0x0,0xdc,0x0,0x62,0x0,0x65, - 0x0,0x72,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x20,0x0,0x42, - 0x0,0x65,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x73,0x0,0x73,0x0,0x74,0x0,0xfc, - 0x0,0x63,0x0,0x6b,0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x67, - 0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x6e,0x0,0x20, - 0x0,0x49,0x0,0x6e,0x0,0x76,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x26,0x54,0x72,0x61,0x6e, - 0x73,0x66,0x65,0x72,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f, - 0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72, - 0x79,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x56,0x0,0xdc,0x0,0x62,0x0,0x65,0x0,0x72,0x0,0x74, - 0x0,0x72,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x20,0x0,0x42,0x0,0x65,0x0,0x77, - 0x0,0x65,0x0,0x69,0x0,0x73,0x0,0x73,0x0,0x74,0x0,0xfc,0x0,0x63,0x0,0x6b, - 0x0,0x20,0x0,0x7a,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x67, - 0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x49,0x0,0x6e,0x0,0x76, - 0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x27,0x54,0x72,0x61,0x6e,0x73,0x66,0x65,0x72,0x20,0x65, - 0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x70,0x72,0x69,0x76,0x61, - 0x74,0x65,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x12,0x0,0x55,0x0,0x4e,0x0,0x42,0x0,0x45,0x0,0x4b,0x0,0x41,0x0,0x4e,0x0, - 0x4e,0x0,0x54,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x55,0x4e,0x4b, - 0x4e,0x4f,0x57,0x4e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x6e,0x0,0x57,0x0,0x65,0x0,0x6e,0x0,0x6e, - 0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x6e, - 0x0,0x20,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x2c,0x0,0x20,0x0,0x77,0x0,0x69, - 0x0,0x72,0x0,0x64,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x4e, - 0x0,0xe4,0x0,0x63,0x0,0x68,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x4e, - 0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74, - 0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x5a,0x0,0x75,0x0,0x72, - 0x0,0x75,0x0,0x66,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x47, - 0x57,0x68,0x65,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x74,0x75,0x72, - 0x6e,0x65,0x64,0x20,0x6f,0x6e,0x2c,0x20,0x79,0x6f,0x75,0x72,0x20,0x6e,0x65,0x78, - 0x74,0x20,0x69,0x6e,0x2d,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x6d, - 0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61, - 0x20,0x73,0x68,0x6f,0x75,0x74,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc6,0x0,0x44,0x0,0x75,0x0, - 0x20,0x0,0x68,0x0,0x61,0x0,0x74,0x0,0x74,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x20,0x0,0x6b,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0, - 0x27,0x0,0x62,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x2f,0x0,0x63,0x0,0x61,0x0, - 0x73,0x0,0x65,0x0,0x73,0x0,0x27,0x0,0x20,0x0,0x4f,0x0,0x72,0x0,0x64,0x0, - 0x6e,0x0,0x65,0x0,0x72,0x0,0x21,0x0,0x20,0x0,0x49,0x0,0x63,0x0,0x68,0x0, - 0x20,0x0,0x68,0x0,0x61,0x0,0x62,0x0,0x20,0x0,0x69,0x0,0x68,0x0,0x6e,0x0, - 0x20,0x0,0x6e,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x67,0x0, - 0x65,0x0,0x6c,0x0,0x65,0x0,0x67,0x0,0x74,0x0,0x20,0x0,0x61,0x0,0x62,0x0, - 0x65,0x0,0x72,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x6e,0x0, - 0x6b,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x65,0x0, - 0x72,0x0,0x20,0x0,0x6c,0x0,0x65,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x73,0x0, - 0x65,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x72,0x0,0x64,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x91,0x59,0x6f,0x75,0x20,0x64, - 0x6f,0x6e,0x27,0x74,0x20,0x68,0x61,0x76,0x65,0x20,0x61,0x20,0x60,0x62,0x61,0x73, - 0x65,0x2f,0x63,0x61,0x73,0x65,0x73,0x2f,0x60,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72, - 0x21,0x20,0x49,0x74,0x20,0x77,0x61,0x73,0x20,0x6a,0x75,0x73,0x74,0x20,0x6d,0x61, - 0x64,0x65,0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x2c,0x20,0x62,0x75,0x74,0x20, - 0x73,0x65,0x65,0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x57,0x41,0x53, - 0x20,0x6a,0x75,0x73,0x74,0x20,0x6d,0x61,0x64,0x65,0x20,0x66,0x6f,0x72,0x20,0x79, - 0x6f,0x75,0x2c,0x20,0x69,0x74,0x27,0x73,0x20,0x6c,0x69,0x6b,0x65,0x6c,0x79,0x20, - 0x74,0x68,0x61,0x74,0x20,0x79,0x6f,0x75,0x20,0x73,0x6f,0x6d,0x65,0x68,0x6f,0x77, - 0x20,0x64,0x65,0x6c,0x65,0x74,0x65,0x64,0x20,0x69,0x74,0x2e,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc6, - 0x0,0x44,0x0,0x75,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x74,0x0,0x74,0x0,0x65, - 0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x6b,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65, - 0x0,0x6e,0x0,0x20,0x0,0x27,0x0,0x62,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x2f, - 0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x73,0x0,0x27,0x0,0x20,0x0,0x4f, - 0x0,0x72,0x0,0x64,0x0,0x6e,0x0,0x65,0x0,0x72,0x0,0x21,0x0,0x20,0x0,0x49, - 0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x62,0x0,0x20,0x0,0x69, - 0x0,0x68,0x0,0x6e,0x0,0x20,0x0,0x6e,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x61, - 0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x67,0x0,0x74,0x0,0x20, - 0x0,0x61,0x0,0x62,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x64, - 0x0,0x65,0x0,0x6e,0x0,0x6b,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73, - 0x0,0x20,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x6c,0x0,0x65,0x0,0x65,0x0,0x72, - 0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x77,0x0,0x69, - 0x0,0x72,0x0,0x64,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xae, - 0x59,0x6f,0x75,0x20,0x64,0x6f,0x6e,0x27,0x74,0x20,0x68,0x61,0x76,0x65,0x20,0x61, - 0x20,0x60,0x62,0x61,0x73,0x65,0x2f,0x63,0x61,0x73,0x65,0x73,0x2f,0x60,0x20,0x66, - 0x6f,0x6c,0x64,0x65,0x72,0x21,0x20,0x49,0x74,0x20,0x77,0x61,0x73,0x20,0x6a,0x75, - 0x73,0x74,0x20,0x6d,0x61,0x64,0x65,0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x2c, - 0x20,0x62,0x75,0x74,0x20,0x73,0x65,0x65,0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x69, - 0x74,0x20,0x57,0x41,0x53,0x20,0x6a,0x75,0x73,0x74,0x20,0x6d,0x61,0x64,0x65,0x20, - 0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x2c,0x20,0x69,0x74,0x27,0x73,0x20,0x6c,0x69, - 0x6b,0x65,0x6c,0x79,0x20,0x74,0x68,0x65,0x20,0x63,0x61,0x73,0x65,0x20,0x66,0x69, - 0x6c,0x65,0x20,0x79,0x6f,0x75,0x27,0x72,0x65,0x20,0x6c,0x6f,0x6f,0x6b,0x69,0x6e, - 0x67,0x20,0x66,0x6f,0x72,0x20,0x63,0x61,0x6e,0x27,0x74,0x20,0x62,0x65,0x20,0x66, - 0x6f,0x75,0x6e,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x72,0x65,0x2e,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x28,0x0,0x44,0x0,0x75,0x0,0x20,0x0,0x77,0x0,0x75,0x0,0x72,0x0,0x64, - 0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x62, - 0x0,0x61,0x0,0x6e,0x0,0x6e,0x0,0x74,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x15,0x59,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x62,0x65,0x65, - 0x6e,0x20,0x62,0x61,0x6e,0x6e,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x3a,0x0,0x44,0x0, - 0x75,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x73,0x0,0x73,0x0,0x74,0x0,0x20,0x0, - 0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x47,0x0,0x72,0x0, - 0x75,0x0,0x6e,0x0,0x64,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0, - 0x62,0x0,0x65,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x1a,0x59,0x6f,0x75,0x20,0x6d,0x75,0x73,0x74,0x20,0x70,0x72,0x6f,0x76,0x69,0x64, - 0x65,0x20,0x61,0x20,0x72,0x65,0x61,0x73,0x6f,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0x2c,0x0, - 0x44,0x0,0x75,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x73,0x0,0x73,0x0,0x74,0x0, - 0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x44,0x0, - 0x61,0x0,0x74,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x62,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x28,0x0,0x6f,0x0,0x68,0x0,0x6e,0x0,0x65,0x0,0x20,0x0, - 0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x29,0x0,0x2e,0x0,0x20,0x0,0x53,0x0, - 0x74,0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x69,0x0, - 0x63,0x0,0x68,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0, - 0x20,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x27,0x0, - 0x62,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x2f,0x0,0x63,0x0,0x61,0x0,0x73,0x0, - 0x65,0x0,0x73,0x0,0x27,0x0,0x20,0x0,0x4f,0x0,0x72,0x0,0x64,0x0,0x6e,0x0, - 0x65,0x0,0x72,0x0,0x20,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x75,0x0, - 0x6e,0x0,0x64,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x65,0x0, - 0x72,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x72,0x0,0x72,0x0,0x65,0x0,0x6b,0x0, - 0x74,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x72,0x0,0x6d,0x0,0x61,0x0,0x74,0x0, - 0x69,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x69,0x0,0x73,0x0,0x74,0x0, - 0x2e,0x0,0xa,0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x66,0x0,0xfc,0x0,0x67,0x0, - 0x62,0x0,0x61,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x46,0x0,0xe4,0x0,0x6c,0x0, - 0x6c,0x0,0x65,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xae,0x59,0x6f,0x75,0x20,0x6e,0x65,0x65,0x64,0x20,0x74,0x6f, - 0x20,0x67,0x69,0x76,0x65,0x20,0x61,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65, - 0x20,0x74,0x6f,0x20,0x6c,0x6f,0x61,0x64,0x20,0x28,0x65,0x78,0x74,0x65,0x6e,0x73, - 0x69,0x6f,0x6e,0x20,0x6e,0x6f,0x74,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x29,0x21, - 0x20,0x4d,0x61,0x6b,0x65,0x20,0x73,0x75,0x72,0x65,0x20,0x74,0x68,0x61,0x74,0x20, - 0x69,0x74,0x20,0x69,0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x60,0x62,0x61, - 0x73,0x65,0x2f,0x63,0x61,0x73,0x65,0x73,0x2f,0x60,0x20,0x66,0x6f,0x6c,0x64,0x65, - 0x72,0x2c,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x61,0x74,0x20,0x69,0x74,0x20,0x69, - 0x73,0x20,0x61,0x20,0x63,0x6f,0x72,0x72,0x65,0x63,0x74,0x6c,0x79,0x20,0x66,0x6f, - 0x72,0x6d,0x61,0x74,0x74,0x65,0x64,0x20,0x69,0x6e,0x69,0x2e,0xa,0x43,0x61,0x73, - 0x65,0x73,0x20,0x79,0x6f,0x75,0x20,0x63,0x61,0x6e,0x20,0x6c,0x6f,0x61,0x64,0x3a, - 0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x9e,0x0,0x44,0x0,0x75,0x0,0x20,0x0,0x6d,0x0, - 0x75,0x0,0x73,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x65,0x0,0x69,0x0,0x6e,0x0, - 0x65,0x0,0x6e,0x0,0x20,0x0,0x44,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x69,0x0, - 0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x28,0x0,0x6f,0x0, - 0x68,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x45,0x0,0x72,0x0,0x77,0x0,0x65,0x0, - 0x69,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x75,0x0,0x6e,0x0,0x67,0x0,0x29,0x0, - 0x20,0x0,0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x62,0x0,0x65,0x0,0x6e,0x0, - 0x6e,0x0,0x2c,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x77,0x0,0x69,0x0,0x65,0x0, - 0x20,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x47,0x0,0x65,0x0,0x62,0x0, - 0x69,0x0,0x65,0x0,0x74,0x0,0x73,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x74,0x0, - 0x75,0x0,0x73,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x54,0x59, - 0x6f,0x75,0x20,0x6e,0x65,0x65,0x64,0x20,0x74,0x6f,0x20,0x67,0x69,0x76,0x65,0x20, - 0x61,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x20,0x74,0x6f,0x20,0x73,0x61, - 0x76,0x65,0x20,0x28,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x20,0x6e,0x6f, - 0x74,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x29,0x20,0x61,0x6e,0x64,0x20,0x74,0x68, - 0x65,0x20,0x63,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x20,0x73,0x74,0x61,0x74, - 0x75,0x73,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x5a,0x0,0x44,0x0,0x75,0x0,0x20,0x0,0x68,0x0, - 0x61,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x6e,0x0,0x75,0x0,0x6e,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x22,0x0,0x4d,0x0,0x6f,0x0,0x64,0x0, - 0x63,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x61,0x0, - 0x6b,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x65,0x0, - 0x6e,0x0,0x22,0x0,0x20,0x0,0x4b,0x0,0x6e,0x0,0x6f,0x0,0x70,0x0,0x66,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2d,0x59,0x6f,0x75,0x20,0x77, - 0x65,0x72,0x65,0x20,0x67,0x72,0x61,0x6e,0x74,0x65,0x64,0x20,0x74,0x68,0x65,0x20, - 0x44,0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x4d,0x6f,0x64,0x63,0x61,0x6c,0x6c,0x73, - 0x20,0x62,0x75,0x74,0x74,0x6f,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x3a,0x0,0x44,0x0,0x65, - 0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x46,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x20, - 0x0,0x22,0x0,0x25,0x0,0x31,0x0,0x22,0x0,0x20,0x0,0x77,0x0,0x75,0x0,0x72, - 0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x67,0x0,0x65,0x0,0x6c,0x0,0x61,0x0,0x64, - 0x0,0x65,0x0,0x6e,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1a, - 0x59,0x6f,0x75,0x72,0x20,0x63,0x61,0x73,0x65,0x20,0x22,0x25,0x31,0x22,0x20,0x77, - 0x61,0x73,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x21,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x14,0x0,0x5b, - 0x0,0x46,0x0,0x45,0x0,0x48,0x0,0x4c,0x0,0x54,0x0,0x5d,0x0,0x20,0x0,0x25, - 0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x5b,0x4d,0x49,0x53, - 0x53,0x49,0x4e,0x47,0x5d,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x5b,0x0,0x53, - 0x0,0x54,0x0,0x52,0x0,0x45,0x0,0x41,0x0,0x4d,0x0,0x5d,0x0,0x20,0x0,0x25, - 0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x5b,0x53,0x54,0x52, - 0x45,0x41,0x4d,0x5d,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x73,0x0,0x70,0x0, - 0x69,0x0,0x65,0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x69,0x0, - 0x6e,0x0,0x20,0x0,0x4c,0x0,0x69,0x0,0x65,0x0,0x64,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x11,0x68,0x61,0x73,0x20,0x70,0x6c,0x61,0x79,0x65,0x64,0x20, - 0x61,0x20,0x73,0x6f,0x6e,0x67,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x68,0x0,0x61,0x0,0x74, - 0x0,0x20,0x0,0x42,0x0,0x65,0x0,0x77,0x0,0x65,0x0,0x69,0x0,0x73,0x0,0x20, - 0x0,0x70,0x0,0x72,0x0,0xe4,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x69, - 0x0,0x65,0x0,0x72,0x0,0x74,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x16, - 0x68,0x61,0x73,0x20,0x70,0x72,0x65,0x73,0x65,0x6e,0x74,0x65,0x64,0x20,0x65,0x76, - 0x69,0x64,0x65,0x6e,0x63,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x30,0x0,0x68,0x0,0x61,0x0,0x74, - 0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x4d,0x0,0x75,0x0,0x73, - 0x0,0x69,0x0,0x6b,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x68, - 0x0,0x61,0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x15,0x68,0x61,0x73,0x20,0x73,0x74,0x6f,0x70,0x70,0x65,0x64,0x20, - 0x74,0x68,0x65,0x20,0x6d,0x75,0x73,0x69,0x63,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x5a,0x0, - 0x77,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x6e,0x0,0x72,0x0, - 0x75,0x0,0x66,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x73,0x68,0x6f, - 0x75,0x74,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x1c,0x0,0x44,0x0,0x65,0x0,0x6d,0x0,0x6f,0x0, - 0x73,0x0,0x20,0x0,0x28,0x0,0x2a,0x0,0x2e,0x0,0x64,0x0,0x65,0x0,0x6d,0x0, - 0x6f,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x44,0x65,0x6d, - 0x6f,0x20,0x46,0x69,0x6c,0x65,0x73,0x20,0x28,0x2a,0x2e,0x64,0x65,0x6d,0x6f,0x29, - 0x7,0x0,0x0,0x0,0xa,0x44,0x65,0x6d,0x6f,0x53,0x65,0x72,0x76,0x65,0x72,0x1, - 0x3,0x0,0x0,0x0,0x14,0x0,0x44,0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0, - 0x6c,0x0,0x61,0x0,0x64,0x0,0x65,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x9,0x4c,0x6f,0x61,0x64,0x20,0x44,0x65,0x6d,0x6f,0x7,0x0,0x0,0x0, - 0xa,0x44,0x65,0x6d,0x6f,0x53,0x65,0x72,0x76,0x65,0x72,0x1,0x3,0x0,0x0,0x0, - 0x8,0x0,0xdc,0x0,0x62,0x0,0x65,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x5,0x41,0x62,0x6f,0x75,0x74,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62, - 0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x6c,0x0,0x45,0x0,0x72,0x0,0x6c,0x0,0x61, - 0x0,0x75,0x0,0x62,0x0,0x74,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x76, - 0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x63,0x0,0x68,0x0,0x69,0x0,0x65,0x0,0x64, - 0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x41,0x0,0x73,0x0,0x70,0x0,0x65, - 0x0,0x6b,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x20, - 0x0,0x43,0x0,0x6c,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x73,0x0,0x20, - 0x0,0x7a,0x0,0x75,0x0,0x20,0x0,0xe4,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72, - 0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x33,0x41,0x6c, - 0x6c,0x6f,0x77,0x73,0x20,0x79,0x6f,0x75,0x20,0x74,0x6f,0x20,0x63,0x68,0x61,0x6e, - 0x67,0x65,0x20,0x76,0x61,0x72,0x69,0x6f,0x75,0x73,0x20,0x61,0x73,0x70,0x65,0x63, - 0x74,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74, - 0x2e,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0, - 0x12,0x0,0x41,0x0,0x62,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x68,0x0, - 0x65,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x61,0x6e, - 0x63,0x65,0x6c,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0, - 0x0,0x1,0x10,0x0,0x44,0x0,0x65,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x43,0x0, - 0x6c,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x20,0x0,0x69,0x0,0x73,0x0, - 0x74,0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x74,0x0,0x20,0x0, - 0x6b,0x0,0x6f,0x0,0x72,0x0,0x72,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x20,0x0, - 0x65,0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x72,0x0,0x69,0x0,0x63,0x0, - 0x68,0x0,0x74,0x0,0x65,0x0,0x74,0x0,0x2e,0x0,0xa,0x0,0x48,0x0,0x61,0x0, - 0x73,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x75,0x0,0x20,0x0,0x41,0x0,0x4c,0x0, - 0x4c,0x0,0x45,0x0,0x53,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x6e,0x0,0x20,0x0, - 0x74,0x0,0x69,0x0,0x6e,0x0,0x79,0x0,0x2e,0x0,0x63,0x0,0x63,0x0,0x2f,0x0, - 0x67,0x0,0x65,0x0,0x74,0x0,0x61,0x0,0x6f,0x0,0x20,0x0,0x68,0x0,0x65,0x0, - 0x72,0x0,0x75,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x67,0x0,0x65,0x0, - 0x6c,0x0,0x61,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x75,0x0,0x6e,0x0, - 0x64,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x70,0x0,0x61,0x0,0x63,0x0, - 0x6b,0x0,0x74,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x63,0x0,0x68,0x0, - 0x20,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x67,0x0,0x72,0x0,0x6f,0x0, - 0xdf,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x27,0x0,0x62,0x0,0x61,0x0,0x73,0x0, - 0x65,0x0,0x27,0x0,0x20,0x0,0x4f,0x0,0x72,0x0,0x64,0x0,0x6e,0x0,0x65,0x0, - 0x72,0x0,0x3f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x95,0x49,0x74,0x20, - 0x64,0x6f,0x65,0x73,0x6e,0x27,0x74,0x20,0x6c,0x6f,0x6f,0x6b,0x20,0x6c,0x69,0x6b, - 0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x69,0x73, - 0x20,0x73,0x65,0x74,0x20,0x75,0x70,0x20,0x63,0x6f,0x72,0x72,0x65,0x63,0x74,0x6c, - 0x79,0x2e,0xa,0x44,0x69,0x64,0x20,0x79,0x6f,0x75,0x20,0x64,0x6f,0x77,0x6e,0x6c, - 0x6f,0x61,0x64,0x20,0x61,0x6c,0x6c,0x20,0x72,0x65,0x73,0x6f,0x75,0x72,0x63,0x65, - 0x73,0x20,0x63,0x6f,0x72,0x72,0x65,0x63,0x74,0x6c,0x79,0x20,0x66,0x72,0x6f,0x6d, - 0x20,0x74,0x69,0x6e,0x79,0x2e,0x63,0x63,0x2f,0x67,0x65,0x74,0x61,0x6f,0x2c,0x20, - 0x69,0x6e,0x63,0x6c,0x75,0x64,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x6c,0x61, - 0x72,0x67,0x65,0x20,0x27,0x62,0x61,0x73,0x65,0x27,0x20,0x66,0x6f,0x6c,0x64,0x65, - 0x72,0x3f,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0, - 0x0,0xa,0x0,0x4c,0x0,0x61,0x0,0x64,0x0,0x65,0x0,0x6e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x7,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x7,0x0,0x0, - 0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x8,0x0,0x4e,0x0, - 0x61,0x0,0x6d,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x4e, - 0x61,0x6d,0x65,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0, - 0x0,0x0,0x8,0x0,0x4e,0x0,0x65,0x0,0x69,0x0,0x6e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x2,0x4e,0x6f,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62, - 0x79,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x4f,0x0,0x66,0x0,0x66,0x0,0x6c,0x0, - 0x69,0x0,0x6e,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4f, - 0x66,0x66,0x6c,0x69,0x6e,0x65,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79, - 0x1,0x3,0x0,0x0,0x0,0x1a,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e, - 0x0,0x65,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x4f,0x6e,0x6c,0x69,0x6e,0x65, - 0x3a,0x20,0x25,0x31,0x2f,0x25,0x32,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62, - 0x79,0x1,0x3,0x0,0x0,0x0,0xa,0x0,0x53,0x0,0x75,0x0,0x63,0x0,0x68,0x0, - 0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x53,0x65,0x61,0x72,0x63, - 0x68,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0, - 0x1a,0x0,0x45,0x0,0x69,0x0,0x6e,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6c,0x0, - 0x6c,0x0,0x75,0x0,0x6e,0x0,0x67,0x0,0x65,0x0,0x6e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x8,0x53,0x65,0x74,0x74,0x69,0x6e,0x67,0x73,0x7,0x0,0x0, - 0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x56,0x0, - 0x65,0x0,0x72,0x0,0x73,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x3a,0x0,0x20,0x0, - 0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x56,0x65,0x72, - 0x73,0x69,0x6f,0x6e,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62, - 0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x4,0x0,0x4a,0x0,0x61,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x3,0x59,0x65,0x73,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f, - 0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x55,0x0,0x4e,0x0,0x42,0x0, - 0x45,0x0,0x4b,0x0,0x41,0x0,0x4e,0x0,0x4e,0x0,0x54,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x7,0x55,0x4e,0x4b,0x4e,0x4f,0x57,0x4e,0x7,0x0,0x0,0x0, - 0xc,0x63,0x68,0x61,0x74,0x6c,0x6f,0x67,0x70,0x69,0x65,0x63,0x65,0x1,0x3,0x0, - 0x0,0x0,0xc,0x0,0x46,0x0,0x65,0x0,0x68,0x0,0x6c,0x0,0x65,0x0,0x72,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x45,0x72,0x72,0x6f,0x72,0x7,0x0, - 0x0,0x0,0xf,0x64,0x65,0x62,0x75,0x67,0x5f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, - 0x6e,0x73,0x1,0x3,0x0,0x0,0x0,0x14,0x0,0x46,0x0,0x65,0x0,0x68,0x0,0x6c, - 0x0,0x65,0x0,0x72,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x9,0x45,0x72,0x72,0x6f,0x72,0x3a,0x20,0x25,0x31,0x7, - 0x0,0x0,0x0,0xf,0x64,0x65,0x62,0x75,0x67,0x5f,0x66,0x75,0x6e,0x63,0x74,0x69, - 0x6f,0x6e,0x73,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x48,0x0,0x69,0x0,0x6e,0x0, - 0x77,0x0,0x65,0x0,0x69,0x0,0x73,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x6,0x4e,0x6f,0x74,0x69,0x63,0x65,0x7,0x0,0x0,0x0,0xf,0x64,0x65,0x62,0x75, - 0x67,0x5f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x1,0x88,0x0,0x0,0x0, - 0x2,0x1,0x1, - // /media/stoned/SHARED/Git/AO2-Client/resource/translations/ao_pl.qm - 0x0,0x0,0xf0,0x24, - 0x3c, - 0xb8,0x64,0x18,0xca,0xef,0x9c,0x95,0xcd,0x21,0x1c,0xbf,0x60,0xa1,0xbd,0xdd,0xa7, - 0x0,0x0,0x0,0x5,0x70,0x6c,0x5f,0x50,0x4c,0x42,0x0,0x0,0xa,0x10,0x0,0x0, - 0x5,0x4f,0x0,0x0,0xe3,0xd5,0x0,0x0,0x44,0x3d,0x0,0x0,0x6e,0xd4,0x0,0x0, - 0x48,0xa,0x0,0x0,0x1b,0xf6,0x0,0x0,0x57,0x85,0x0,0x0,0x99,0xfb,0x0,0x0, - 0x59,0xd8,0x0,0x0,0xaa,0x52,0x0,0x0,0x5f,0xc3,0x0,0x0,0xe4,0xda,0x0,0x0, - 0xea,0xf1,0x0,0x0,0x6d,0x94,0x0,0x0,0xea,0xf3,0x0,0x0,0x6d,0xbb,0x0,0x4, - 0xd3,0x0,0x0,0x0,0x8c,0x4d,0x0,0x5,0x48,0x35,0x0,0x0,0x94,0x7b,0x0,0x5, - 0x48,0x35,0x0,0x0,0xe3,0xad,0x0,0x5,0x56,0x45,0x0,0x0,0x95,0xad,0x0,0x5, - 0x7b,0xba,0x0,0x0,0x4b,0xbf,0x0,0x1d,0xb,0x21,0x0,0x0,0xe4,0xa1,0x0,0x30, - 0x7f,0x4a,0x0,0x0,0x21,0xe9,0x0,0x33,0x9c,0xa,0x0,0x0,0x25,0x3,0x0,0x47, - 0x96,0xc4,0x0,0x0,0xe0,0x63,0x0,0x48,0xba,0xff,0x0,0x0,0x19,0xd8,0x0,0x49, - 0x30,0x73,0x0,0x0,0x73,0xa8,0x0,0x4c,0x99,0x62,0x0,0x0,0x8a,0xa2,0x0,0x4c, - 0x99,0x62,0x0,0x0,0xe5,0x35,0x0,0x4e,0xb8,0x84,0x0,0x0,0x8c,0xe4,0x0,0x54, - 0xc9,0xf3,0x0,0x0,0x94,0x4c,0x0,0x57,0xe,0xbc,0x0,0x0,0x48,0x88,0x0,0x5a, - 0x81,0xbe,0x0,0x0,0xaf,0xbb,0x0,0x5b,0xee,0x2e,0x0,0x0,0x8f,0xbb,0x0,0x5c, - 0xcf,0x9e,0x0,0x0,0x8d,0xc8,0x0,0x73,0x9c,0x8e,0x0,0x0,0x62,0xac,0x0,0x74, - 0x22,0x2e,0x0,0x0,0x38,0x76,0x0,0x81,0x97,0x4e,0x0,0x0,0x56,0x4d,0x0,0x8b, - 0xa2,0x99,0x0,0x0,0xa2,0xf3,0x0,0x9a,0x6c,0xca,0x0,0x0,0x22,0x5f,0x0,0xa0, - 0x39,0x3e,0x0,0x0,0x7b,0xb9,0x0,0xa5,0x9e,0x4e,0x0,0x0,0x0,0xa5,0x0,0xa9, - 0xb7,0xce,0x0,0x0,0x7f,0x58,0x0,0xa9,0xc1,0x3e,0x0,0x0,0x69,0xef,0x0,0xb7, - 0xb7,0x3e,0x0,0x0,0xa8,0x9c,0x0,0xc6,0xda,0xde,0x0,0x0,0x3d,0xfc,0x0,0xd1, - 0x29,0xfe,0x0,0x0,0x29,0x6b,0x0,0xf4,0x21,0x9e,0x0,0x0,0xbb,0x56,0x1,0x8, - 0x6f,0x91,0x0,0x0,0xac,0x5b,0x1,0x8,0xc3,0x9a,0x0,0x0,0x21,0x44,0x1,0xb, - 0xd3,0x5e,0x0,0x0,0x93,0x84,0x1,0xe,0x4a,0x51,0x0,0x0,0x78,0xd3,0x1,0x11, - 0x0,0x3,0x0,0x0,0x82,0x37,0x1,0x36,0x85,0x9e,0x0,0x0,0x82,0x9c,0x1,0x6a, - 0x19,0x1a,0x0,0x0,0x5a,0xc7,0x1,0x6d,0x91,0xe4,0x0,0x0,0xb5,0x2a,0x1,0x71, - 0x35,0x8e,0x0,0x0,0xaf,0xea,0x1,0x71,0xfc,0x57,0x0,0x0,0xc6,0x12,0x1,0x90, - 0x8a,0xff,0x0,0x0,0xe1,0xa7,0x1,0x93,0xcc,0xe7,0x0,0x0,0xab,0xfa,0x1,0xc6, - 0x62,0xee,0x0,0x0,0x23,0x46,0x1,0xd4,0x4c,0xee,0x0,0x0,0x30,0xe9,0x1,0xda, - 0x65,0x73,0x0,0x0,0xc9,0x52,0x1,0xec,0xca,0xde,0x0,0x0,0x76,0x1a,0x1,0xf4, - 0xee,0x2e,0x0,0x0,0x84,0xa7,0x1,0xf6,0xca,0x3e,0x0,0x0,0x4e,0xa5,0x2,0x21, - 0x83,0xba,0x0,0x0,0x1b,0x2a,0x2,0x2a,0xb9,0xea,0x0,0x0,0x59,0xf4,0x2,0x48, - 0x6f,0xbe,0x0,0x0,0x9c,0xa9,0x2,0x5b,0x7c,0x2e,0x0,0x0,0xa2,0x24,0x2,0x61, - 0xf3,0x4e,0x0,0x0,0x4,0xeb,0x2,0x77,0xf8,0xaa,0x0,0x0,0x1a,0xd,0x2,0x7c, - 0x19,0x8a,0x0,0x0,0x1b,0x72,0x2,0x89,0x29,0x7e,0x0,0x0,0x65,0x8d,0x2,0x89, - 0xc1,0x81,0x0,0x0,0xc2,0xb4,0x2,0x92,0x1b,0xfe,0x0,0x0,0xb5,0x62,0x2,0xb5, - 0x2d,0xae,0x0,0x0,0x73,0xd5,0x2,0xc5,0x76,0x61,0x0,0x0,0x0,0x0,0x2,0xc5, - 0x76,0x61,0x0,0x0,0xe1,0x2b,0x2,0xc6,0xd5,0xca,0x0,0x0,0x1a,0xc0,0x2,0xe6, - 0xd3,0xa2,0x0,0x0,0x75,0x90,0x2,0xf7,0xb3,0xca,0x0,0x0,0x42,0x61,0x3,0x2a, - 0x59,0x7e,0x0,0x0,0x9f,0xc,0x3,0x32,0x44,0x60,0x0,0x0,0x3b,0x93,0x3,0x37, - 0x52,0xde,0x0,0x0,0x7a,0x96,0x3,0x38,0x43,0x5e,0x0,0x0,0xca,0x2,0x3,0x39, - 0x82,0x11,0x0,0x0,0xce,0x88,0x3,0x3d,0xa2,0xce,0x0,0x0,0xcd,0x89,0x3,0x3e, - 0x21,0x33,0x0,0x0,0x1c,0x49,0x3,0x4c,0x3,0x4e,0x0,0x0,0x83,0x77,0x3,0x4f, - 0x76,0x7e,0x0,0x0,0xa1,0x7c,0x3,0x57,0xb0,0x17,0x0,0x0,0x2,0x6,0x3,0x57, - 0xb0,0x17,0x0,0x0,0xe3,0x7a,0x3,0x69,0x45,0x7a,0x0,0x0,0x5a,0x78,0x3,0x74, - 0x34,0x8a,0x0,0x0,0x1c,0xff,0x3,0xba,0xa8,0xe5,0x0,0x0,0x8f,0x78,0x3,0xca, - 0x97,0x85,0x0,0x0,0x93,0x4d,0x3,0xd6,0xdf,0x45,0x0,0x0,0x4b,0x43,0x3,0xdb, - 0x87,0x6a,0x0,0x0,0x42,0xb4,0x3,0xe3,0x60,0x4a,0x0,0x0,0x41,0xab,0x3,0xf4, - 0x58,0xee,0x0,0x0,0x3c,0xb4,0x3,0xf6,0xdf,0x45,0x0,0x0,0x9c,0x65,0x4,0x3, - 0x52,0x65,0x0,0x0,0x1d,0x6d,0x4,0x6,0x4a,0xb1,0x0,0x0,0x8d,0x58,0x4,0x8, - 0xf0,0xbe,0x0,0x0,0xa0,0xae,0x4,0x3f,0x13,0xca,0x0,0x0,0x5d,0xd5,0x4,0x49, - 0x96,0x8a,0x0,0x0,0x1f,0x5a,0x4,0x50,0x17,0xc4,0x0,0x0,0xb,0x83,0x4,0x58, - 0x20,0x5e,0x0,0x0,0x1d,0xc4,0x4,0x7b,0x2a,0xa6,0x0,0x0,0x12,0x7c,0x4,0x80, - 0xda,0x34,0x0,0x0,0x75,0x1,0x4,0x82,0xfd,0x59,0x0,0x0,0xa0,0x62,0x4,0x86, - 0xaf,0x2e,0x0,0x0,0xd,0xb2,0x4,0x87,0xdc,0xba,0x0,0x0,0x13,0x8,0x4,0x8a, - 0x9c,0xb3,0x0,0x0,0x19,0xa2,0x4,0x92,0x8,0xb2,0x0,0x0,0x8c,0x7b,0x4,0x92, - 0x65,0x9a,0x0,0x0,0x5b,0x27,0x4,0x93,0x7,0x6a,0x0,0x0,0x1b,0xc0,0x4,0x98, - 0x49,0xbc,0x0,0x0,0xe1,0x7b,0x4,0x98,0xa0,0x47,0x0,0x0,0x1c,0x88,0x4,0x98, - 0xa0,0x47,0x0,0x0,0x76,0x80,0x4,0x9c,0x6,0xae,0x0,0x0,0x69,0x38,0x4,0xb8, - 0x6b,0xe3,0x0,0x0,0xc6,0xc7,0x4,0xd2,0xef,0xfe,0x0,0x0,0x27,0x28,0x4,0xdd, - 0x4a,0xde,0x0,0x0,0x34,0xd0,0x4,0xe0,0xf6,0x35,0x0,0x0,0x9a,0x5d,0x4,0xeb, - 0x2f,0xa,0x0,0x0,0x41,0x72,0x4,0xf6,0x74,0xde,0x0,0x0,0x28,0x47,0x5,0x1b, - 0xad,0x8a,0x0,0x0,0x40,0x82,0x5,0x1c,0x96,0x5a,0x0,0x0,0x40,0xba,0x5,0x38, - 0xaa,0xc2,0x0,0x0,0x93,0x29,0x5,0x4c,0x9f,0x6a,0x0,0x0,0x47,0xec,0x5,0x56, - 0xaf,0x95,0x0,0x0,0xe5,0xa3,0x5,0x61,0x3,0x44,0x0,0x0,0xc,0x94,0x5,0x8c, - 0x46,0xc5,0x0,0x0,0x4b,0x8d,0x5,0x96,0x60,0xba,0x0,0x0,0x19,0x4f,0x5,0x9b, - 0x88,0x98,0x0,0x0,0xa1,0xf0,0x5,0x9b,0x88,0x98,0x0,0x0,0xe4,0x3f,0x5,0x9c, - 0x9c,0xc2,0x0,0x0,0xa2,0xc3,0x5,0xa4,0x66,0xa8,0x0,0x0,0x59,0xbc,0x5,0xad, - 0x62,0x5e,0x0,0x0,0x92,0xd2,0x5,0xae,0xc3,0x8a,0x0,0x0,0x61,0x42,0x5,0xcd, - 0x30,0x15,0x0,0x0,0xe3,0xf7,0x5,0xf4,0x15,0xa4,0x0,0x0,0xcf,0xa2,0x6,0x26, - 0x54,0x91,0x0,0x0,0x8d,0x90,0x6,0x2d,0x36,0x3e,0x0,0x0,0x6d,0xe2,0x6,0x60, - 0x3a,0x14,0x0,0x0,0xb1,0xfb,0x6,0x73,0x98,0x7e,0x0,0x0,0xb9,0xb,0x6,0x83, - 0xdc,0x2e,0x0,0x0,0x6e,0xfb,0x6,0x86,0x8a,0xd9,0x0,0x0,0x90,0x19,0x6,0x8b, - 0xb5,0x54,0x0,0x0,0xb4,0xf5,0x6,0xa0,0xd8,0xfe,0x0,0x0,0x53,0x1a,0x6,0xb6, - 0x6c,0xfe,0x0,0x0,0x9f,0xe1,0x6,0xc6,0x1c,0x9e,0x0,0x0,0x18,0x16,0x6,0xd8, - 0xf0,0x5e,0x0,0x0,0x44,0x1f,0x6,0xe4,0x3a,0x33,0x0,0x0,0xab,0x8e,0x6,0xf2, - 0x42,0x9a,0x0,0x0,0x5e,0x36,0x6,0xf8,0x3f,0x1e,0x0,0x0,0x87,0x57,0x7,0x1f, - 0x3b,0x1e,0x0,0x0,0xbf,0xe2,0x7,0x55,0xb3,0xce,0x0,0x0,0x16,0x7a,0x7,0x5d, - 0x43,0x91,0x0,0x0,0xaf,0x3f,0x7,0x5e,0xae,0x64,0x0,0x0,0x6e,0x50,0x7,0x5e, - 0xae,0x74,0x0,0x0,0x6e,0x92,0x7,0x5f,0x40,0x71,0x0,0x0,0xaf,0x7d,0x7,0x64, - 0xf9,0x6f,0x0,0x0,0xca,0xfa,0x7,0x6a,0xd3,0xde,0x0,0x0,0x91,0xb6,0x7,0x7e, - 0x12,0xce,0x0,0x0,0xb0,0x5a,0x7,0x8b,0x84,0xad,0x0,0x0,0x9a,0x28,0x7,0x92, - 0x89,0x9,0x0,0x0,0xa6,0x2c,0x7,0x93,0x1e,0x9e,0x0,0x0,0xa9,0x7e,0x7,0x9f, - 0x6c,0xb3,0x0,0x0,0xc7,0x20,0x7,0xad,0x58,0x6e,0x0,0x0,0x74,0x98,0x7,0xd3, - 0x14,0x2e,0x0,0x0,0x58,0xb4,0x7,0xdc,0x3d,0xbe,0x0,0x0,0x2a,0xb6,0x7,0xe0, - 0x1a,0x4f,0x0,0x0,0x89,0x5c,0x7,0xe2,0x88,0x31,0x0,0x0,0xcb,0x3a,0x7,0xe3, - 0xf7,0x9e,0x0,0x0,0x8a,0x46,0x7,0xf9,0x3b,0xfa,0x0,0x0,0xa,0xd6,0x8,0x2b, - 0x9,0x3a,0x0,0x0,0x5b,0x77,0x8,0x2e,0x78,0xc4,0x0,0x0,0x75,0xde,0x8,0x3c, - 0x76,0x59,0x0,0x0,0x23,0x14,0x8,0x40,0xf,0xbe,0x0,0x0,0xb6,0x29,0x8,0x48, - 0x10,0x3e,0x0,0x0,0x5b,0xe8,0x8,0x49,0x6f,0x6e,0x0,0x0,0x9d,0xc5,0x8,0x4b, - 0x90,0xab,0x0,0x0,0x0,0x58,0x8,0x66,0x21,0xea,0x0,0x0,0x1f,0xbb,0x8,0x72, - 0x3c,0xfe,0x0,0x0,0x85,0x94,0x8,0x82,0xd3,0xb4,0x0,0x0,0xb,0xd9,0x8,0x99, - 0x50,0xfe,0x0,0x0,0x13,0x6c,0x8,0xaa,0xe3,0xe4,0x0,0x0,0x96,0xf2,0x8,0xb3, - 0x26,0x9e,0x0,0x0,0x32,0x94,0x8,0xb8,0xa6,0x4a,0x0,0x0,0x9b,0x49,0x8,0xbc, - 0x1f,0x1e,0x0,0x0,0x6c,0x79,0x8,0xcb,0x30,0x7e,0x0,0x0,0x80,0xdf,0x8,0xdc, - 0xf5,0x2e,0x0,0x0,0x6f,0x52,0x8,0xe0,0x7,0x3e,0x0,0x0,0x4a,0x52,0x8,0xe0, - 0x7,0x3e,0x0,0x0,0x9b,0x7a,0x8,0xe7,0x82,0x5e,0x0,0x0,0xcb,0xbd,0x8,0xe8, - 0x30,0xe,0x0,0x0,0xc8,0x2e,0x9,0x4,0x4f,0x11,0x0,0x0,0x8,0x6f,0x9,0x13, - 0x10,0xee,0x0,0x0,0x5e,0x8f,0x9,0x13,0x55,0xde,0x0,0x0,0x11,0x24,0x9,0x25, - 0x56,0x7e,0x0,0x0,0x25,0x5b,0x9,0x2d,0xc9,0x42,0x0,0x0,0x2,0x45,0x9,0x3c, - 0x6,0xae,0x0,0x0,0x78,0x23,0x9,0x3d,0xef,0x3a,0x0,0x0,0x43,0xcb,0x9,0x42, - 0x7b,0xe1,0x0,0x0,0xc5,0xd3,0x9,0x45,0x92,0xfe,0x0,0x0,0x49,0xae,0x9,0x4b, - 0xad,0xc9,0x0,0x0,0xd,0x68,0x9,0x4c,0x8f,0x69,0x0,0x0,0x72,0x5a,0x9,0x5c, - 0xb,0x5e,0x0,0x0,0xad,0xbb,0x9,0x65,0x8e,0x11,0x0,0x0,0xe5,0x66,0x9,0x83, - 0x1,0x3a,0x0,0x0,0x4c,0x15,0x9,0x8a,0x4,0xea,0x0,0x0,0x1c,0xc2,0x9,0x8d, - 0xf6,0xe1,0x0,0x0,0x95,0xd5,0x9,0x97,0x0,0x42,0x0,0x0,0x4c,0x57,0x9,0xa2, - 0x27,0x1e,0x0,0x0,0xbf,0x83,0x9,0xae,0xf9,0x3a,0x0,0x0,0x5d,0x96,0x9,0xbb, - 0x17,0xd1,0x0,0x0,0x9,0xc8,0x9,0xc8,0xb4,0xb9,0x0,0x0,0x8f,0x30,0x9,0xf3, - 0xb,0x80,0x0,0x0,0xc7,0x5c,0x9,0xf7,0x73,0xca,0x0,0x0,0x43,0x9,0x9,0xf8, - 0xba,0xe,0x0,0x0,0x8a,0xcd,0x9,0xfb,0x69,0xba,0x0,0x0,0x20,0x8e,0x9,0xfe, - 0x27,0x8a,0x0,0x0,0x1a,0x68,0xa,0x21,0x3c,0x1e,0x0,0x0,0x6b,0x58,0xa,0x25, - 0xf3,0x8e,0x0,0x0,0x14,0xeb,0xa,0x30,0x34,0xee,0x0,0x0,0xba,0x34,0xa,0x30, - 0x34,0xee,0x0,0x0,0xe4,0xfd,0xa,0x35,0x5e,0x71,0x0,0x0,0x75,0x31,0xa,0x41, - 0xeb,0x3e,0x0,0x0,0xc4,0xa7,0xa,0x50,0xfd,0xce,0x0,0x0,0x3,0x17,0xa,0x7b, - 0x45,0x52,0x0,0x0,0xe4,0x18,0xa,0x85,0xfd,0xa9,0x0,0x0,0x96,0xa6,0xa,0x95, - 0x12,0xfe,0x0,0x0,0x46,0x5d,0xa,0x9c,0x9,0x81,0x0,0x0,0xc5,0xb,0xa,0xab, - 0x77,0x14,0x0,0x0,0x4,0x43,0xa,0xb0,0xb4,0xb5,0x0,0x0,0x70,0x28,0xa,0xb8, - 0xc6,0xfa,0x0,0x0,0x20,0xef,0xa,0xbc,0x8c,0x74,0x0,0x0,0x85,0x1,0xa,0xd7, - 0x53,0x8a,0x0,0x0,0x42,0x0,0xa,0xe3,0xe2,0x14,0x0,0x0,0x97,0x22,0xa,0xe5, - 0x47,0xba,0x0,0x0,0x48,0x24,0xa,0xf8,0x17,0x4,0x0,0x0,0xc,0x30,0xb,0x14, - 0x21,0x9,0x0,0x0,0x71,0x9,0xb,0x2a,0x64,0x7e,0x0,0x0,0xbd,0x3f,0xb,0x33, - 0xc3,0x8e,0x0,0x0,0x87,0xf7,0xb,0x7c,0xb7,0xaa,0x0,0x0,0x43,0x61,0xb,0xa3, - 0x6,0x39,0x0,0x0,0xc9,0xaa,0xb,0xa7,0x67,0xe7,0x0,0x0,0xc,0xf7,0xb,0xaa, - 0xd1,0x2,0x0,0x0,0xab,0xc1,0xb,0xaf,0xbd,0x1,0x0,0x0,0x96,0xf,0xb,0xb7, - 0xd2,0xfe,0x0,0x0,0x33,0x93,0xb,0xc1,0x4f,0x8e,0x0,0x0,0x63,0xbb,0xb,0xc8, - 0x17,0x9a,0x0,0x0,0x40,0x1c,0xb,0xcc,0x5d,0x2a,0x0,0x0,0x21,0xaf,0xb,0xd2, - 0xf0,0x2e,0x0,0x0,0x1,0xa,0xb,0xf8,0x7e,0x2e,0x0,0x0,0x86,0x90,0xc,0x1b, - 0xfe,0x7e,0x0,0x0,0x66,0xc1,0xc,0x2d,0x1a,0xf1,0x0,0x0,0xc5,0x8d,0xc,0x38, - 0x78,0xde,0x0,0x0,0x52,0x67,0xc,0x3a,0x32,0x3e,0x0,0x0,0x61,0x78,0xc,0x46, - 0x2c,0xc3,0x0,0x0,0xad,0x1f,0xc,0x54,0x5d,0xa2,0x0,0x0,0x76,0xb4,0xc,0x55, - 0xec,0x1e,0x0,0x0,0x48,0xc3,0xc,0x65,0x27,0x6e,0x0,0x0,0x60,0x4a,0xc,0x78, - 0x8e,0x4e,0x0,0x0,0x97,0xb8,0xc,0x7a,0x74,0xbe,0x0,0x0,0x8b,0xa7,0xc,0x7f, - 0xf2,0x1e,0x0,0x0,0x72,0xad,0xc,0x86,0x7,0x3e,0x0,0x0,0x76,0xfe,0xc,0x89, - 0x97,0xde,0x0,0x0,0xcc,0x1b,0xc,0xbb,0x1,0x73,0x0,0x0,0x59,0x7c,0xc,0xbb, - 0x1,0x73,0x0,0x0,0xaa,0x18,0xc,0xbb,0x1,0x73,0x0,0x0,0xe4,0x6b,0xc,0xbc, - 0x36,0x3e,0x0,0x0,0x80,0x60,0xc,0xbd,0x72,0x9e,0x0,0x0,0xc3,0xe8,0xc,0xe0, - 0xa9,0xbe,0x0,0x0,0x95,0x1f,0xc,0xe2,0xdf,0x55,0x0,0x0,0x85,0x36,0xc,0xf9, - 0x5e,0xae,0x0,0x0,0xb1,0x6,0xc,0xfe,0x9c,0x9e,0x0,0x0,0x3a,0xa3,0xd,0x4, - 0x5f,0x59,0x0,0x0,0x90,0x6a,0xd,0xf,0x4e,0x6e,0x0,0x0,0x54,0xef,0xd,0x4c, - 0x1d,0x31,0x0,0x0,0x96,0x49,0xd,0x58,0x98,0x6e,0x0,0x0,0xb9,0x9f,0xd,0x9a, - 0x50,0xf3,0x0,0x0,0x94,0xa7,0xd,0xd4,0x95,0x41,0x0,0x0,0xc0,0x48,0xd,0xd7, - 0xfc,0x1e,0x0,0x0,0x2e,0xb5,0xd,0xd8,0x59,0xdf,0x0,0x0,0xcd,0xe8,0xd,0xe6, - 0x8f,0x6a,0x0,0x0,0x22,0x8b,0xd,0xec,0xf9,0xc3,0x0,0x0,0x8b,0xf8,0xd,0xfd, - 0xd,0x22,0x0,0x0,0xa,0x7c,0xe,0xf,0xe,0xa0,0x0,0x0,0x92,0x7f,0xe,0x13, - 0x1f,0xfe,0x0,0x0,0x51,0x6,0xe,0x30,0x3,0xa5,0x0,0x0,0xc6,0x67,0xe,0x30, - 0x6d,0x3e,0x0,0x0,0x67,0xfc,0xe,0x44,0x82,0x3a,0x0,0x0,0x40,0xf2,0xe,0x7e, - 0xd9,0xce,0x0,0x0,0x54,0x46,0xe,0x87,0xe7,0x64,0x0,0x0,0xb,0x29,0xe,0x89, - 0xf0,0x4e,0x0,0x0,0xaa,0x79,0xe,0x9f,0x90,0x9e,0x0,0x0,0x70,0x64,0xe,0x9f, - 0x90,0x9e,0x0,0x0,0xe0,0x8a,0xe,0xa8,0x94,0x77,0x0,0x0,0x97,0x60,0xe,0xb1, - 0x2b,0xce,0x0,0x0,0x62,0x1b,0xe,0xb2,0x85,0xee,0x0,0x0,0x36,0x77,0xe,0xb4, - 0x8c,0x1,0x0,0x0,0x9,0x14,0xe,0xc0,0x3b,0xf1,0x0,0x0,0x8d,0x27,0xe,0xd0, - 0x9d,0x8e,0x0,0x0,0x98,0xbe,0xe,0xdc,0xdd,0xce,0x0,0x0,0x2d,0x5b,0xe,0xf1, - 0x38,0xce,0x0,0x0,0x9e,0x62,0xe,0xff,0xbf,0x42,0x0,0x0,0x2,0xaf,0xf,0x2, - 0x2,0x21,0x0,0x0,0xb7,0x7a,0xf,0xf,0xd8,0xde,0x0,0x0,0x92,0x2c,0xf,0x47, - 0x35,0x8e,0x0,0x0,0x2c,0x3,0xf,0x48,0xb8,0x5a,0x0,0x0,0x20,0x25,0xf,0x55, - 0xd9,0xd1,0x0,0x0,0x84,0x52,0xf,0x60,0xe2,0x5e,0x0,0x0,0x4c,0xb5,0xf,0x66, - 0x94,0x9e,0x0,0x0,0x7f,0x20,0xf,0x6e,0x43,0xa5,0x0,0x0,0xab,0x5c,0xf,0xa1, - 0x93,0xca,0x0,0x0,0x5a,0x39,0xf,0xa7,0x7b,0xbe,0x0,0x0,0xce,0x46,0xf,0xaf, - 0x1f,0x4f,0x0,0x0,0x89,0xcf,0xf,0xb3,0xad,0xaa,0x0,0x0,0x4a,0xa,0xf,0xc6, - 0x3f,0xf3,0x0,0x0,0x8b,0x40,0xf,0xcb,0x37,0xde,0x0,0x0,0x2f,0xfe,0xf,0xd2, - 0xf,0x4e,0x0,0x0,0x3f,0x19,0xf,0xd3,0x69,0x3e,0x0,0x0,0x55,0xc7,0xf,0xe9, - 0x8a,0xbe,0x0,0x0,0xae,0x5b,0xf,0xef,0x55,0x95,0x0,0x0,0xae,0xfc,0xf,0xf4, - 0x81,0xe1,0x0,0x0,0xba,0x69,0xf,0xfd,0x3b,0x5a,0x0,0x0,0x12,0xb6,0x69,0x0, - 0x0,0xe5,0xe1,0x3,0x0,0x0,0x0,0x24,0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f, - 0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79,0x0,0x20,0x0,0x4f,0x0,0x6e,0x0,0x6c, - 0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x12,0x41,0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f, - 0x6e,0x6c,0x69,0x6e,0x65,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41, - 0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x1e, - 0x0,0x4f,0x0,0x64,0x0,0x74,0x0,0x77,0x0,0x61,0x0,0x72,0x0,0x7a,0x0,0x61, - 0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6d,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x44,0x65,0x6d,0x6f,0x20,0x70,0x6c,0x61, - 0x79,0x62,0x61,0x63,0x6b,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c, - 0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x2a,0x0,0x4f,0x0, - 0x64,0x1,0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x6f,0x0, - 0x20,0x0,0x6f,0x0,0x64,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x77,0x0, - 0x65,0x0,0x72,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x19,0x44,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x65,0x64,0x20,0x66,0x72, - 0x6f,0x6d,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0xd,0x41, - 0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0, - 0x0,0x9a,0x0,0x42,0x1,0x42,0x1,0x5,0x0,0x64,0x0,0x20,0x0,0x70,0x0,0x6f, - 0x0,0x64,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x73,0x0,0x20,0x1,0x42,0x1,0x5, - 0x0,0x63,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x73, - 0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x7a,0x0,0x20,0x0,0x67,0x1,0x42,0x0,0xf3, - 0x0,0x77,0x0,0x6e,0x0,0x79,0x0,0x6d,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72, - 0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x6d,0x0,0x2e,0x0,0x20,0x0,0x53, - 0x0,0x70,0x0,0x72,0x0,0xf3,0x0,0x62,0x0,0x75,0x0,0x6a,0x0,0x20,0x0,0x70, - 0x0,0x6f,0x0,0x6e,0x0,0x6f,0x0,0x77,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20, - 0x0,0x7a,0x0,0x61,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x20,0x0,0x73,0x0,0x65, - 0x0,0x6b,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x79,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x40,0x45,0x72,0x72,0x6f,0x72,0x20,0x63,0x6f,0x6e,0x6e, - 0x65,0x63,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x6d,0x61,0x73,0x74,0x65,0x72, - 0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x20,0x57,0x69,0x6c,0x6c,0x20,0x74,0x72, - 0x79,0x20,0x61,0x67,0x61,0x69,0x6e,0x20,0x69,0x6e,0x20,0x25,0x31,0x20,0x73,0x65, - 0x63,0x6f,0x6e,0x64,0x73,0x2e,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70, - 0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x57, - 0x0,0x63,0x0,0x7a,0x0,0x79,0x0,0x74,0x0,0x79,0x0,0x77,0x0,0x61,0x0,0x6e, - 0x0,0x69,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4c,0x6f, - 0x61,0x64,0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c, - 0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x34,0x0,0x57,0x0, - 0x63,0x0,0x7a,0x0,0x79,0x0,0x74,0x0,0x79,0x0,0x77,0x0,0x61,0x0,0x6e,0x0, - 0x69,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0, - 0x63,0x0,0x69,0x0,0x3a,0x0,0xa,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0, - 0x32,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x14,0x4c,0x6f,0x61,0x64,0x69, - 0x6e,0x67,0x20,0x63,0x68,0x61,0x72,0x73,0x3a,0xa,0x25,0x31,0x2f,0x25,0x32,0x7, - 0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x1,0x3,0x0,0x0,0x0,0x32,0x0,0x57,0x0,0x63,0x0,0x7a,0x0,0x79,0x0, - 0x74,0x0,0x79,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0, - 0x6d,0x0,0x75,0x0,0x7a,0x0,0x79,0x0,0x6b,0x0,0x69,0x0,0x3a,0x0,0xa,0x0, - 0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x14,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x20,0x6d,0x75,0x73,0x69,0x63, - 0x3a,0xa,0x25,0x31,0x2f,0x25,0x32,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70, - 0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0xba,0x0, - 0x4e,0x0,0x69,0x0,0x65,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x75,0x0,0x61,0x0, - 0x6c,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x73,0x0, - 0x6a,0x0,0x61,0x0,0x21,0x0,0x20,0x0,0x54,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0, - 0x61,0x0,0x20,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6a,0x0,0x61,0x0, - 0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0xa,0x0,0x55,0x0,0x64,0x0,0x61,0x0, - 0x6a,0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x64,0x0,0x6f,0x0, - 0x20,0x0,0x61,0x0,0x63,0x0,0x65,0x0,0x61,0x0,0x74,0x0,0x74,0x0,0x6f,0x0, - 0x72,0x0,0x6e,0x0,0x65,0x0,0x79,0x0,0x6f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0, - 0x6e,0x0,0x65,0x0,0x2e,0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x2c,0x0,0x20,0x0, - 0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x6a,0x1,0x5,0x0,0x20,0x0,0x7a,0x0, - 0x61,0x0,0x6b,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0, - 0x6f,0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x50,0x4f,0x75,0x74,0x64,0x61,0x74,0x65,0x64,0x20,0x76,0x65,0x72,0x73, - 0x69,0x6f,0x6e,0x21,0x20,0x59,0x6f,0x75,0x72,0x20,0x76,0x65,0x72,0x73,0x69,0x6f, - 0x6e,0x3a,0x20,0x25,0x31,0xa,0x50,0x6c,0x65,0x61,0x73,0x65,0x20,0x67,0x6f,0x20, - 0x74,0x6f,0x20,0x61,0x63,0x65,0x61,0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x6f,0x6e, - 0x6c,0x69,0x6e,0x65,0x2e,0x63,0x6f,0x6d,0x20,0x74,0x6f,0x20,0x75,0x70,0x64,0x61, - 0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x5a,0x0,0x4f,0x0,0x64,0x0, - 0x74,0x0,0x77,0x0,0x61,0x0,0x72,0x0,0x7a,0x0,0x61,0x0,0x6e,0x0,0x69,0x0, - 0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6d,0x0,0x2c,0x0,0x20,0x0,0x6b,0x0, - 0x74,0x0,0xf3,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x70,0x0, - 0x72,0x0,0x7a,0x0,0x65,0x0,0x64,0x0,0x6e,0x0,0x69,0x0,0x6f,0x0,0x20,0x0, - 0x6e,0x0,0x61,0x0,0x67,0x0,0x72,0x0,0x61,0x1,0x42,0x0,0x65,0x1,0x5b,0x0, - 0x2f,0x0,0x61,0x1,0x5b,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2c,0x50, - 0x6c,0x61,0x79,0x20,0x62,0x61,0x63,0x6b,0x20,0x64,0x65,0x6d,0x6f,0x73,0x20,0x79, - 0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73, - 0x6c,0x79,0x20,0x72,0x65,0x63,0x6f,0x72,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0xd, - 0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0, - 0x0,0x2,0x40,0x0,0x4f,0x0,0x64,0x0,0x6b,0x0,0x72,0x0,0x79,0x0,0x74,0x0, - 0x6f,0x0,0x20,0x0,0x62,0x1,0x42,0x1,0x5,0x0,0x64,0x0,0x20,0x0,0x70,0x0, - 0x6f,0x0,0x64,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x73,0x0,0x20,0x1,0x42,0x1, - 0x5,0x0,0x63,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20,0x0, - 0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x7a,0x0,0x20,0x0,0x67,0x1,0x42,0x0, - 0xf3,0x0,0x77,0x0,0x6e,0x0,0x79,0x0,0x6d,0x0,0x20,0x0,0x73,0x0,0x65,0x0, - 0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x6d,0x0,0x2e,0x0,0xa,0x0, - 0x55,0x1,0x7c,0x0,0x79,0x0,0x77,0x0,0x61,0x0,0x6d,0x0,0x79,0x0,0x20,0x0, - 0x77,0x0,0x69,0x0,0x65,0x0,0x6c,0x0,0x75,0x0,0x20,0x0,0x6d,0x0,0x61,0x0, - 0x73,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0, - 0x77,0x0,0x65,0x0,0x72,0x0,0xf3,0x0,0x77,0x0,0x2c,0x0,0x20,0x0,0x61,0x0, - 0x62,0x0,0x79,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0,0x69,0x0,0x6e,0x0,0x69,0x0, - 0x6d,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x6f,0x0,0x77,0x0,0x61,0x1, - 0x7,0x0,0x20,0x0,0x6b,0x0,0x61,0x1,0x7c,0x0,0x64,0x1,0x5,0x0,0x20,0x0, - 0x6d,0x0,0x6f,0x1,0x7c,0x0,0x6c,0x0,0x69,0x0,0x77,0x1,0x5,0x0,0x20,0x0, - 0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x72,0x0,0x77,0x1,0x19,0x0,0x2c,0x0, - 0x20,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x6b,0x0,0x6c,0x0,0x69,0x0, - 0x65,0x0,0x6e,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x79,0x0,0x63,0x0,0x7a,0x0, - 0x65,0x0,0x72,0x0,0x70,0x0,0x61,0x1,0x42,0x0,0x20,0x0,0x77,0x0,0x73,0x0, - 0x7a,0x0,0x79,0x0,0x73,0x0,0x74,0x0,0x6b,0x0,0x69,0x0,0x65,0x0,0x20,0x0, - 0x6d,0x0,0x6f,0x1,0x7c,0x0,0x6c,0x0,0x69,0x0,0x77,0x0,0x65,0x0,0x20,0x0, - 0x6d,0x0,0x65,0x0,0x74,0x0,0x6f,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x7a,0x0, - 0x6e,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x6e,0x0, - 0x69,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x70,0x0,0x6f,0x1,0x42,0x1, - 0x5,0x0,0x63,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20,0x0, - 0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x7a,0x0,0x20,0x0,0x6a,0x0,0x65,0x0, - 0x64,0x0,0x6e,0x0,0x79,0x0,0x6d,0x0,0x2e,0x0,0xa,0x0,0x53,0x0,0x70,0x0, - 0x72,0x0,0x61,0x0,0x77,0x0,0x64,0x1,0x7a,0x0,0x20,0x0,0x73,0x0,0x77,0x0, - 0x6f,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x6f,0x1,0x42,0x1,0x5,0x0, - 0x63,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x69,0x0, - 0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x74,0x0,0x6f,0x0, - 0x77,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x72,0x0,0x61,0x0,0x7a,0x0,0x20,0x0, - 0x7a,0x0,0x61,0x0,0x70,0x0,0x6f,0x0,0x72,0x1,0x19,0x0,0x20,0x0,0x6f,0x0, - 0x67,0x0,0x6e,0x0,0x69,0x0,0x6f,0x0,0x77,0x1,0x5,0x0,0x20,0x0,0x69,0x0, - 0x20,0x0,0x73,0x0,0x70,0x0,0x72,0x0,0xf3,0x0,0x62,0x0,0x75,0x0,0x6a,0x0, - 0x20,0x0,0x70,0x0,0x6f,0x0,0x6e,0x0,0x6f,0x0,0x77,0x0,0x6e,0x0,0x69,0x0, - 0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x1,0x22,0x54,0x68,0x65, - 0x72,0x65,0x20,0x77,0x61,0x73,0x20,0x61,0x6e,0x20,0x65,0x72,0x72,0x6f,0x72,0x20, - 0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x74,0x68, - 0x65,0x20,0x6d,0x61,0x73,0x74,0x65,0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e, - 0xa,0x57,0x65,0x20,0x64,0x65,0x70,0x6c,0x6f,0x79,0x20,0x6d,0x75,0x6c,0x74,0x69, - 0x70,0x6c,0x65,0x20,0x6d,0x61,0x73,0x74,0x65,0x72,0x20,0x73,0x65,0x72,0x76,0x65, - 0x72,0x73,0x20,0x74,0x6f,0x20,0x6d,0x69,0x74,0x69,0x67,0x61,0x74,0x65,0x20,0x61, - 0x6e,0x79,0x20,0x70,0x6f,0x73,0x73,0x69,0x62,0x6c,0x65,0x20,0x64,0x6f,0x77,0x6e, - 0x74,0x69,0x6d,0x65,0x2c,0x20,0x62,0x75,0x74,0x20,0x74,0x68,0x65,0x20,0x63,0x6c, - 0x69,0x65,0x6e,0x74,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x73,0x20,0x74,0x6f,0x20, - 0x68,0x61,0x76,0x65,0x20,0x65,0x78,0x68,0x61,0x75,0x73,0x74,0x65,0x64,0x20,0x61, - 0x6c,0x6c,0x20,0x70,0x6f,0x73,0x73,0x69,0x62,0x6c,0x65,0x20,0x6d,0x65,0x74,0x68, - 0x6f,0x64,0x73,0x20,0x6f,0x66,0x20,0x66,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x61, - 0x6e,0x64,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f, - 0x20,0x6f,0x6e,0x65,0x2e,0xa,0x50,0x6c,0x65,0x61,0x73,0x65,0x20,0x63,0x68,0x65, - 0x63,0x6b,0x20,0x79,0x6f,0x75,0x72,0x20,0x49,0x6e,0x74,0x65,0x72,0x6e,0x65,0x74, - 0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x6e,0x64,0x20, - 0x66,0x69,0x72,0x65,0x77,0x61,0x6c,0x6c,0x2c,0x20,0x61,0x6e,0x64,0x20,0x70,0x6c, - 0x65,0x61,0x73,0x65,0x20,0x74,0x72,0x79,0x20,0x61,0x67,0x61,0x69,0x6e,0x2e,0x7, - 0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x1,0x3,0x0,0x0,0x0,0x5a,0x0,0x4a,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x65,0x1,0x5b,0x0,0x20,0x0,0x7a,0x0,0x62,0x0,0x61,0x0,0x6e,0x0,0x6f,0x0, - 0x77,0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x2f,0x0,0x61,0x0,0x20,0x0,0x6e,0x0, - 0x61,0x0,0x20,0x0,0x74,0x0,0x79,0x0,0x6d,0x0,0x20,0x0,0x73,0x0,0x65,0x0, - 0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x2e,0x0,0xa,0x0, - 0x50,0x0,0x6f,0x0,0x77,0x0,0xf3,0x0,0x64,0x0,0x3a,0x0,0x20,0x0,0x25,0x0, - 0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x29,0x59,0x6f,0x75,0x20,0x61, - 0x72,0x65,0x20,0x62,0x61,0x6e,0x6e,0x65,0x64,0x20,0x6f,0x6e,0x20,0x74,0x68,0x69, - 0x73,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0xa,0x52,0x65,0x61,0x73,0x6f,0x6e, - 0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x62,0x0,0x5a,0x0,0x6f, - 0x0,0x73,0x0,0x74,0x0,0x61,0x1,0x42,0x0,0x65,0x1,0x5b,0x0,0x2f,0x0,0x61, - 0x1,0x5b,0x0,0x20,0x0,0x7a,0x0,0x62,0x0,0x61,0x0,0x6e,0x0,0x6f,0x0,0x77, - 0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x2f,0x0,0x61,0x0,0x20,0x0,0x7a,0x0,0x20, - 0x0,0x74,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72, - 0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x2e,0x0,0xa,0x0,0x50,0x0,0x6f, - 0x0,0x77,0x0,0xf3,0x0,0x64,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x30,0x59,0x6f,0x75,0x20,0x68,0x61,0x76,0x65, - 0x20,0x62,0x65,0x65,0x6e,0x20,0x62,0x61,0x6e,0x6e,0x65,0x64,0x20,0x66,0x72,0x6f, - 0x6d,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0xa,0x52,0x65, - 0x61,0x73,0x6f,0x6e,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41, - 0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x62, - 0x0,0x5a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x1,0x42,0x0,0x65,0x1,0x5b, - 0x0,0x2f,0x0,0x61,0x1,0x5b,0x0,0x20,0x0,0x77,0x0,0x79,0x0,0x72,0x0,0x7a, - 0x0,0x75,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x79,0x0,0x2f,0x0,0x61,0x0,0x20, - 0x0,0x7a,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x73, - 0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x2e,0x0,0xa, - 0x0,0x50,0x0,0x6f,0x0,0x77,0x0,0xf3,0x0,0x64,0x0,0x3a,0x0,0x20,0x0,0x25, - 0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x30,0x59,0x6f,0x75,0x20, - 0x68,0x61,0x76,0x65,0x20,0x62,0x65,0x65,0x6e,0x20,0x6b,0x69,0x63,0x6b,0x65,0x64, - 0x20,0x66,0x72,0x6f,0x6d,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72, - 0x2e,0xa,0x52,0x65,0x61,0x73,0x6f,0x6e,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0, - 0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3, - 0x0,0x0,0x0,0x22,0x0,0x4f,0x0,0x67,0x1,0x42,0x0,0x61,0x0,0x73,0x0,0x7a, - 0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x70, - 0x0,0x72,0x0,0x61,0x0,0x77,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe, - 0x43,0x61,0x73,0x65,0x20,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x7,0x0, - 0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63, - 0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1e,0x0,0x54, - 0x0,0x79,0x0,0x74,0x0,0x75,0x1,0x42,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a, - 0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x79,0x0,0x3a,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0xb,0x43,0x61,0x73,0x65,0x20,0x74,0x69,0x74,0x6c,0x65, - 0x3a,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f, - 0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x22,0x0,0x50,0x0,0x6f,0x0,0x74,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x62,0x0, - 0x6e,0x0,0x79,0x0,0x20,0x0,0x6f,0x0,0x62,0x0,0x72,0x0,0x6f,0x1,0x44,0x0, - 0x63,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x44,0x65,0x66, - 0x65,0x6e,0x73,0x65,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x15, - 0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x50,0x0,0x6f,0x0, - 0x74,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x62,0x0,0x6e,0x0,0x79,0x0,0x20,0x0, - 0x73,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x61,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xc,0x4a,0x75,0x64,0x67,0x65,0x20,0x6e,0x65,0x65,0x64,0x65, - 0x64,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f, - 0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x20,0x0,0x50,0x0,0x6f,0x0,0x74,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x62,0x0, - 0x6e,0x0,0x79,0x0,0x20,0x1,0x42,0x0,0x61,0x0,0x77,0x0,0x6e,0x0,0x69,0x0, - 0x6b,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x4a,0x75,0x72,0x6f,0x72, - 0x73,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43, - 0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x28,0x0,0x50,0x0,0x6f,0x0,0x74,0x0,0x72, - 0x0,0x7a,0x0,0x65,0x0,0x62,0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x70,0x0,0x72, - 0x0,0x6f,0x0,0x6b,0x0,0x75,0x0,0x72,0x0,0x61,0x0,0x74,0x0,0x6f,0x0,0x72, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x50,0x72,0x6f,0x73,0x65,0x63, - 0x75,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0, - 0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x26,0x0,0x50,0x0,0x6f, - 0x0,0x74,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x62,0x0,0x6e,0x0,0x79,0x0,0x20, - 0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x6f,0x0,0x67,0x0,0x72,0x0,0x61, - 0x0,0x66,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x53,0x74,0x65,0x6e, - 0x6f,0x67,0x72,0x61,0x70,0x68,0x65,0x72,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7, - 0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e, - 0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x36,0x0, - 0x20,0x0,0x2d,0x0,0x20,0x0,0x5a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0, - 0x77,0x0,0x20,0x0,0x6f,0x0,0x62,0x0,0x65,0x0,0x63,0x0,0x6e,0x0,0x65,0x0, - 0x20,0x0,0x75,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x65,0x0, - 0x6e,0x0,0x69,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17,0x20, - 0x2d,0x20,0x4b,0x65,0x65,0x70,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x73, - 0x65,0x74,0x74,0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1a, - 0x0,0x25,0x0,0x31,0x0,0x20,0x0,0x28,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x79, - 0x1,0x5b,0x0,0x6c,0x0,0x6e,0x0,0x65,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xc,0x25,0x31,0x20,0x28,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x29, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x2,0x3c,0x0,0x3c,0x0,0x68,0x0,0x74, - 0x0,0x6d,0x0,0x6c,0x0,0x3e,0x0,0x3c,0x0,0x68,0x0,0x65,0x0,0x61,0x0,0x64, - 0x0,0x2f,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x6f,0x0,0x64,0x0,0x79,0x0,0x3e, - 0x0,0x57,0x0,0x70,0x0,0x69,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x74,0x0,0x79, - 0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x77,0x0,0x6f,0x1,0x42, - 0x0,0x61,0x1,0x44,0x0,0x2c,0x0,0x20,0x0,0x69,0x0,0x6c,0x0,0x65,0x0,0x20, - 0x0,0x64,0x0,0x75,0x0,0x73,0x0,0x7a,0x0,0x61,0x0,0x20,0x0,0x7a,0x0,0x61, - 0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x67,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x2e, - 0x0,0x20,0x0,0x57,0x0,0x69,0x0,0x65,0x0,0x6c,0x0,0x6b,0x0,0x6f,0x1,0x5b, - 0x1,0x7,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20, - 0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x7a, - 0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x61, - 0x0,0x2e,0x0,0x20,0x0,0x4d,0x0,0x69,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x6e, - 0x0,0x61,0x0,0x20,0x0,0x75,0x0,0x77,0x0,0x61,0x0,0x64,0x0,0x7a,0x0,0x65, - 0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x6b,0x0,0x61, - 0x1,0x7c,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x77,0x0,0x6f, - 0x1,0x42,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x62,0x0,0x79, - 0x1,0x42,0x0,0x6f,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x73,0x0,0x77,0x0,0x6f, - 0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x73, - 0x0,0x7a,0x0,0x75,0x0,0x21,0x0,0x3c,0x0,0x62,0x0,0x72,0x0,0x3e,0x0,0x4e, - 0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x7a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61, - 0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x6a,0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x61, - 0x0,0x63,0x0,0x6a,0x0,0x69,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x6b, - 0x0,0x6f,0x1,0x44,0x0,0x63,0x0,0x75,0x0,0x20,0x0,0x2d,0x0,0x2d,0x0,0x20, - 0x0,0x7a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65, - 0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x61,0x0,0x6c,0x0,0x61, - 0x0,0x72,0x0,0x6d,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x20, - 0x0,0x7a,0x0,0x61,0x0,0x20,0x0,0x6b,0x0,0x61,0x1,0x7c,0x0,0x64,0x0,0x79, - 0x0,0x6d,0x0,0x20,0x0,0x72,0x0,0x61,0x0,0x7a,0x0,0x65,0x0,0x6d,0x0,0x2c, - 0x0,0x20,0x0,0x6b,0x0,0x69,0x0,0x65,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x6b, - 0x0,0x74,0x0,0x6f,0x1,0x5b,0x0,0x20,0x0,0x75,0x1,0x7c,0x0,0x79,0x0,0x6a, - 0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x61,0x0,0x63,0x0,0x6a,0x0,0x69, - 0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x73,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x65, - 0x0,0x6a,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x6d, - 0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x2e,0x0,0x3c,0x0,0x2f,0x0,0x62, - 0x0,0x6f,0x0,0x64,0x0,0x79,0x0,0x3e,0x0,0x3c,0x0,0x2f,0x0,0x68,0x0,0x74, - 0x0,0x6d,0x0,0x6c,0x0,0x3e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x1,0x12, - 0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x3c,0x68,0x65,0x61,0x64,0x2f,0x3e,0x3c,0x62,0x6f, - 0x64,0x79,0x3e,0x45,0x6e,0x74,0x65,0x72,0x20,0x61,0x73,0x20,0x6d,0x61,0x6e,0x79, - 0x20,0x63,0x61,0x6c,0x6c,0x77,0x6f,0x72,0x64,0x73,0x20,0x61,0x73,0x20,0x79,0x6f, - 0x75,0x20,0x77,0x6f,0x75,0x6c,0x64,0x20,0x6c,0x69,0x6b,0x65,0x2e,0x20,0x54,0x68, - 0x65,0x73,0x65,0x20,0x61,0x72,0x65,0x20,0x63,0x61,0x73,0x65,0x20,0x69,0x6e,0x73, - 0x65,0x6e,0x73,0x69,0x74,0x69,0x76,0x65,0x2e,0x20,0x4d,0x61,0x6b,0x65,0x20,0x73, - 0x75,0x72,0x65,0x20,0x74,0x6f,0x20,0x6c,0x65,0x61,0x76,0x65,0x20,0x65,0x76,0x65, - 0x72,0x79,0x20,0x63,0x61,0x6c,0x6c,0x77,0x6f,0x72,0x64,0x20,0x69,0x6e,0x20,0x69, - 0x74,0x73,0x20,0x6f,0x77,0x6e,0x20,0x6c,0x69,0x6e,0x65,0x21,0x3c,0x62,0x72,0x3e, - 0x44,0x6f,0x20,0x6e,0x6f,0x74,0x20,0x6c,0x65,0x61,0x76,0x65,0x20,0x61,0x20,0x6c, - 0x69,0x6e,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x61,0x20,0x73,0x70,0x61,0x63,0x65, - 0x20,0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x65,0x6e,0x64,0x20,0x2d,0x2d,0x20,0x79, - 0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x6c,0x65,0x72,0x74, - 0x65,0x64,0x20,0x65,0x76,0x65,0x72,0x79,0x74,0x69,0x6d,0x65,0x20,0x73,0x6f,0x6d, - 0x65,0x6f,0x6e,0x65,0x20,0x75,0x73,0x65,0x73,0x20,0x61,0x20,0x73,0x70,0x61,0x63, - 0x65,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x6d,0x65,0x73,0x73,0x61, - 0x67,0x65,0x73,0x2e,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x3c,0x2f,0x68,0x74,0x6d, - 0x6c,0x3e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xd2,0x0,0x44,0x0,0x6f, - 0x0,0x64,0x0,0x61,0x0,0x77,0x0,0x61,0x0,0x6a,0x0,0x20,0x0,0x6c,0x0,0x75, - 0x0,0x62,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x75,0x0,0x77,0x0,0x61,0x0,0x6a, - 0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x6c,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x79, - 0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x75,0x1,0x7c,0x0,0x79,0x0,0x63,0x0,0x69,0x0,0x61, - 0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x7a,0x0,0x20,0x0,0x7a, - 0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x62,0x0,0x79,0x0,0x2e,0x0,0x46,0x0,0x6f, - 0x0,0x6c,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x79,0x0,0x20,0x0,0x62,0x0,0x61, - 0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x62,0x1,0x19,0x0,0x64,0x1,0x5,0x0,0x20, - 0x0,0x6f,0x0,0x74,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x6e, - 0x0,0x65,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x61, - 0x0,0x6e,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x65, - 0x0,0x6a,0x0,0x6e,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x62,0x41,0x64,0x64,0x20,0x6f,0x72,0x20,0x72, - 0x65,0x6d,0x6f,0x76,0x65,0x20,0x62,0x61,0x73,0x65,0x20,0x66,0x6f,0x6c,0x64,0x65, - 0x72,0x73,0x20,0x66,0x6f,0x72,0x20,0x75,0x73,0x65,0x20,0x62,0x79,0x20,0x61,0x73, - 0x73,0x65,0x74,0x73,0x2e,0x20,0x42,0x61,0x73,0x65,0x20,0x66,0x6f,0x6c,0x64,0x65, - 0x72,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x73,0x65,0x61,0x72,0x63, - 0x68,0x65,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x6f,0x72,0x64,0x65,0x72, - 0x20,0x70,0x72,0x6f,0x76,0x69,0x64,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x10,0x0,0x44,0x0,0x6f,0x0,0x64,0x0,0x61,0x0,0x6a,0x0,0x2e, - 0x0,0x2e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x41,0x64, - 0x64,0xe2,0x80,0xa6,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x5a, - 0x0,0x65,0x0,0x7a,0x0,0x77,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x6a,0x0,0x20, - 0x0,0x45,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x79,0x0,0x3a,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x41,0x6c,0x6c,0x6f,0x77,0x20,0x45,0x66, - 0x66,0x65,0x63,0x74,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x2e, - 0x0,0x5a,0x0,0x65,0x0,0x7a,0x0,0x77,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x6a, - 0x0,0x20,0x0,0x57,0x0,0x73,0x0,0x74,0x0,0x72,0x0,0x7a,0x1,0x5,0x1,0x5b, - 0x0,0x6e,0x0,0x69,0x1,0x19,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x3a,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x41,0x6c,0x6c,0x6f,0x77,0x20,0x53,0x63, - 0x72,0x65,0x65,0x6e,0x73,0x68,0x61,0x6b,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0xdc,0x0,0x50,0x0,0x6f,0x0,0x7a,0x0,0x77,0x0,0x61,0x0,0x6c, - 0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x6e,0x0,0x79,0x0,0x6d,0x0,0x20, - 0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x44,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x6f, - 0x0,0x72,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x7a,0x0,0x6f, - 0x0,0x62,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x79,0x1,0x7,0x0,0x20,0x0,0x6e, - 0x0,0x61,0x0,0x20,0x0,0x6a,0x0,0x61,0x0,0x6b,0x0,0x69,0x0,0x6d,0x0,0x20, - 0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x7a,0x0,0x65, - 0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x7a,0x0,0x6e,0x0,0x61, - 0x0,0x6a,0x0,0x64,0x0,0x75,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x7a,0x0,0x2c, - 0x0,0x20,0x0,0x6a,0x0,0x61,0x0,0x6b,0x1,0x5,0x0,0x20,0x0,0x70,0x0,0x6f, - 0x0,0x73,0x0,0x74,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x75,0x1,0x7c,0x0,0x79, - 0x0,0x77,0x0,0x61,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x6a, - 0x0,0x61,0x0,0x6b,0x0,0x20,0x0,0x64,0x1,0x42,0x0,0x75,0x0,0x67,0x0,0x6f, - 0x0,0x20,0x0,0x67,0x0,0x72,0x0,0x61,0x1,0x42,0x0,0x65,0x1,0x5b,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7f,0x41,0x6c,0x6c,0x6f,0x77,0x73, - 0x20,0x6f,0x74,0x68,0x65,0x72,0x73,0x20,0x6f,0x6e,0x20,0x44,0x69,0x73,0x63,0x6f, - 0x72,0x64,0x20,0x74,0x6f,0x20,0x73,0x65,0x65,0x20,0x77,0x68,0x61,0x74,0x20,0x73, - 0x65,0x72,0x76,0x65,0x72,0x20,0x79,0x6f,0x75,0x20,0x61,0x72,0x65,0x20,0x69,0x6e, - 0x2c,0x20,0x77,0x68,0x61,0x74,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72, - 0x20,0x61,0x72,0x65,0x20,0x79,0x6f,0x75,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67, - 0x2c,0x20,0x61,0x6e,0x64,0x20,0x68,0x6f,0x77,0x20,0x6c,0x6f,0x6e,0x67,0x20,0x79, - 0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x62,0x65,0x65,0x6e,0x20,0x70,0x6c,0x61, - 0x79,0x69,0x6e,0x67,0x20,0x66,0x6f,0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x1,0x2,0x0,0x5a,0x0,0x65,0x0,0x7a,0x0,0x77,0x0,0x61,0x0,0x6c,0x0, - 0x61,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0, - 0x6b,0x0,0x74,0x0,0x79,0x0,0x20,0x0,0x65,0x0,0x6b,0x0,0x72,0x0,0x61,0x0, - 0x6e,0x0,0x75,0x0,0x2e,0x0,0x20,0x0,0x57,0x0,0x79,0x1,0x42,0x1,0x5,0x0, - 0x63,0x0,0x7a,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0, - 0x65,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0, - 0x65,0x0,0x6a,0x0,0x6d,0x0,0x75,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x7a,0x0, - 0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x6c,0x0,0x75,0x0,0x62,0x0, - 0x20,0x0,0x6d,0x0,0x61,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x70,0x0,0x72,0x0, - 0x6f,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x6d,0x0,0x79,0x0,0x20,0x0,0x7a,0x0, - 0x20,0x1,0x5b,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x74,0x1,0x42,0x0,0x6f,0x0, - 0x63,0x0,0x7a,0x0,0x75,0x1,0x42,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x1, - 0x5,0x0,0x20,0x0,0x6f,0x0,0x72,0x0,0x61,0x0,0x7a,0x0,0x2f,0x0,0x6c,0x0, - 0x75,0x0,0x62,0x0,0x20,0x0,0x7a,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x70,0x0, - 0x61,0x0,0x64,0x0,0x61,0x0,0x6d,0x0,0x69,0x0,0x20,0x0,0x70,0x0,0x61,0x0, - 0x64,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6b,0x0,0x6f,0x0,0x77,0x0,0x79,0x0, - 0x6d,0x0,0x69,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x69,0x41, - 0x6c,0x6c,0x6f,0x77,0x73,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x20,0x65,0x66,0x66, - 0x65,0x63,0x74,0x73,0x2e,0x20,0x44,0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x74,0x68, - 0x69,0x73,0x20,0x69,0x66,0x20,0x79,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x63, - 0x6f,0x6e,0x63,0x65,0x72,0x6e,0x73,0x20,0x6f,0x72,0x20,0x69,0x73,0x73,0x75,0x65, - 0x73,0x20,0x77,0x69,0x74,0x68,0x20,0x70,0x68,0x6f,0x74,0x6f,0x73,0x65,0x6e,0x73, - 0x69,0x74,0x69,0x76,0x69,0x74,0x79,0x20,0x61,0x6e,0x64,0x2f,0x6f,0x72,0x20,0x73, - 0x65,0x69,0x7a,0x75,0x72,0x65,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x1,0x10,0x0,0x5a,0x0,0x65,0x0,0x7a,0x0,0x77,0x0,0x61,0x0,0x6c,0x0,0x61, - 0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x77,0x0,0x73,0x0,0x74,0x0,0x72, - 0x0,0x7a,0x1,0x5,0x1,0x5b,0x0,0x6e,0x0,0x69,0x1,0x19,0x0,0x63,0x0,0x69, - 0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6b,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x75, - 0x0,0x2e,0x0,0x20,0x0,0x57,0x0,0x79,0x1,0x42,0x1,0x5,0x0,0x63,0x0,0x7a, - 0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0,0x65,0x1,0x5b, - 0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x6a, - 0x0,0x6d,0x0,0x75,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x73, - 0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x6c,0x0,0x75,0x0,0x62,0x0,0x20,0x0,0x6d, - 0x0,0x61,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x62, - 0x0,0x6c,0x0,0x65,0x0,0x6d,0x0,0x79,0x0,0x20,0x0,0x7a,0x0,0x20,0x1,0x5b, - 0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x74,0x1,0x42,0x0,0x6f,0x0,0x63,0x0,0x7a, - 0x0,0x75,0x1,0x42,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x1,0x5,0x0,0x20, - 0x0,0x6f,0x0,0x72,0x0,0x61,0x0,0x7a,0x0,0x2f,0x0,0x6c,0x0,0x75,0x0,0x62, - 0x0,0x20,0x0,0x7a,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x70,0x0,0x61,0x0,0x64, - 0x0,0x61,0x0,0x6d,0x0,0x69,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x64,0x0,0x61, - 0x0,0x63,0x0,0x7a,0x0,0x6b,0x0,0x6f,0x0,0x77,0x0,0x79,0x0,0x6d,0x0,0x69, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x68,0x41,0x6c,0x6c,0x6f, - 0x77,0x73,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x73,0x68,0x61,0x6b,0x69,0x6e,0x67, - 0x2e,0x20,0x44,0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x74,0x68,0x69,0x73,0x20,0x69, - 0x66,0x20,0x79,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x63,0x6f,0x6e,0x63,0x65, - 0x72,0x6e,0x73,0x20,0x6f,0x72,0x20,0x69,0x73,0x73,0x75,0x65,0x73,0x20,0x77,0x69, - 0x74,0x68,0x20,0x70,0x68,0x6f,0x74,0x6f,0x73,0x65,0x6e,0x73,0x69,0x74,0x69,0x76, - 0x69,0x74,0x79,0x20,0x61,0x6e,0x64,0x2f,0x6f,0x72,0x20,0x73,0x65,0x69,0x7a,0x75, - 0x72,0x65,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xb2,0x0,0x49, - 0x0,0x6c,0x0,0x6f,0x1,0x5b,0x1,0x7,0x0,0x20,0x0,0x63,0x0,0x7a,0x0,0x61, - 0x0,0x73,0x0,0x75,0x0,0x20,0x0,0x28,0x0,0x77,0x0,0x20,0x0,0x6d,0x0,0x69, - 0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x65,0x0,0x6b,0x0,0x75,0x0,0x6e,0x0,0x64, - 0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x29,0x0,0x2c,0x0,0x20,0x0,0x73,0x0,0x70, - 0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x64, - 0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x6b,0x0,0x61,0x1,0x7c,0x0,0x64,0x0,0x65, - 0x0,0x6a,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x79, - 0x0,0x2c,0x0,0x20,0x0,0x67,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x74,0x0,0x65, - 0x0,0x6b,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x20,0x0,0x6a, - 0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x79,0x1,0x5b,0x0,0x77, - 0x0,0x69,0x0,0x65,0x0,0x74,0x0,0x6c,0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x63,0x41,0x6d,0x6f,0x75,0x6e,0x74, - 0x20,0x6f,0x66,0x20,0x74,0x69,0x6d,0x65,0x20,0x28,0x69,0x6e,0x20,0x6d,0x69,0x6c, - 0x69,0x73,0x65,0x63,0x6f,0x6e,0x64,0x73,0x29,0x20,0x73,0x70,0x65,0x6e,0x74,0x20, - 0x6f,0x6e,0x20,0x65,0x61,0x63,0x68,0x20,0x6c,0x65,0x74,0x74,0x65,0x72,0x20,0x77, - 0x68,0x65,0x6e,0x20,0x74,0x68,0x65,0x20,0x69,0x6e,0x2d,0x63,0x68,0x61,0x72,0x61, - 0x63,0x74,0x65,0x72,0x20,0x74,0x65,0x78,0x74,0x20,0x69,0x73,0x20,0x62,0x65,0x69, - 0x6e,0x67,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x65,0x64,0x2e,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x41,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0, - 0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x4d,0x0,0x6f,0x0, - 0x74,0x0,0x79,0x0,0x77,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xf,0x41,0x6e,0x69,0x6d,0x61,0x74,0x65,0x64,0x20,0x54,0x68,0x65,0x6d,0x65,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x5a,0x0,0x61,0x0,0x73, - 0x0,0x6f,0x0,0x62,0x0,0x79,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6, - 0x41,0x73,0x73,0x65,0x74,0x73,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc, - 0x0,0x44,0x1,0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0,0x6b,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x5,0x41,0x75,0x64,0x69,0x6f,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x2a,0x0,0x55,0x0,0x72,0x0,0x7a,0x1,0x5,0x0,0x64,0x0, - 0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x64,0x1,0x7a,0x0, - 0x77,0x0,0x69,0x1,0x19,0x0,0x6b,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x3a,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x41,0x75,0x64,0x69,0x6f,0x20,0x64, - 0x65,0x76,0x69,0x63,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x22, - 0x0,0x41,0x0,0x75,0x0,0x74,0x0,0x6f,0x0,0x2d,0x0,0x5a,0x0,0x61,0x0,0x70, - 0x0,0x69,0x0,0x73,0x0,0x79,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x41,0x75,0x74,0x6f, - 0x6d,0x61,0x74,0x69,0x63,0x20,0x4c,0x6f,0x67,0x67,0x69,0x6e,0x67,0x3a,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x3c,0x0,0x4b,0x0,0x6f,0x0,0x70,0x0,0x69, - 0x0,0x61,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x70,0x0,0x61,0x0,0x73,0x0,0x6f, - 0x0,0x77,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x73,0x0,0x74,0x0,0x65, - 0x0,0x72,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x72, - 0x0,0x61,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x42,0x61, - 0x63,0x6b,0x75,0x70,0x20,0x4d,0x53,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x18,0x0,0x50,0x0,0x75,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x62, - 0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x79,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xc,0x42,0x6c,0x61,0x6e,0x6b,0x20,0x62,0x6c,0x69,0x70,0x73,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x53,0x0,0x7a,0x0,0x79, - 0x0,0x62,0x0,0x6b,0x0,0x6f,0x1,0x5b,0x1,0x7,0x0,0x20,0x0,0x62,0x0,0x6c, - 0x0,0x69,0x0,0x70,0x0,0xf3,0x0,0x77,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xa,0x42,0x6c,0x69,0x70,0x20,0x72,0x61,0x74,0x65,0x3a,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x42,0x0,0x6c,0x0,0x69,0x0,0x70, - 0x0,0x79,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x42,0x6c, - 0x69,0x70,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x5a, - 0x0,0x61,0x0,0x72,0x0,0x7a,0x1,0x5,0x0,0x64,0x0,0x63,0x0,0x61,0x0,0x20, - 0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x20, - 0x0,0x28,0x0,0x43,0x0,0x4d,0x0,0x29,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x3,0x43,0x4d,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x12,0x0,0x5a,0x0,0x61,0x0,0x77,0x0,0x6f,0x1,0x42,0x0,0x61,0x0,0x6e,0x0, - 0x69,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x43,0x61,0x6c, - 0x6c,0x77,0x6f,0x72,0x64,0x73,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x10, - 0x0,0x52,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x79, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x61,0x73,0x69,0x6e,0x67, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x52,0x0,0x6f,0x0,0x7a, - 0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x79,0x0,0x3a,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x7,0x43,0x61,0x73,0x69,0x6e,0x67,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x3a,0x0,0x4f,0x0,0x67,0x0,0x72,0x0,0x61,0x0, - 0x6e,0x0,0x69,0x0,0x63,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x65,0x0, - 0x20,0x0,0x53,0x0,0x7a,0x0,0x79,0x0,0x62,0x0,0x6b,0x0,0x6f,0x1,0x5b,0x0, - 0x63,0x0,0x69,0x0,0x20,0x0,0x43,0x0,0x7a,0x0,0x61,0x0,0x74,0x0,0x75,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x43,0x68,0x61,0x74,0x20, - 0x52,0x61,0x74,0x65,0x20,0x4c,0x69,0x6d,0x69,0x74,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x28,0x0,0x57,0x0,0x79,0x0,0x63,0x0,0x7a,0x0,0x79,0x1, - 0x5b,0x1,0x7,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x6d,0x0,0x69,0x1,0x19,0x1, - 0x7,0x0,0x20,0x0,0x43,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x65,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x43,0x6c,0x65,0x61,0x72,0x20,0x43,0x61,0x63, - 0x68,0x65,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xf6,0x0,0x43,0x0,0x7a, - 0x0,0x79,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x6d, - 0x0,0x69,0x1,0x19,0x1,0x7,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x72, - 0x1,0x19,0x0,0x63,0x0,0x7a,0x0,0x6e,0x1,0x5,0x0,0x20,0x0,0x7a,0x0,0x61, - 0x0,0x73,0x0,0x6f,0x0,0x62,0x0,0xf3,0x0,0x77,0x0,0x2e,0x0,0x20,0x0,0x55, - 0x1,0x7c,0x0,0x79,0x0,0x6a,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x67,0x0,0x6f, - 0x0,0x2c,0x0,0x20,0x0,0x6b,0x0,0x69,0x0,0x65,0x0,0x64,0x0,0x79,0x0,0x20, - 0x0,0x64,0x0,0x6f,0x0,0x64,0x0,0x61,0x1,0x42,0x0,0x65,0x1,0x5b,0x0,0x2f, - 0x0,0x61,0x1,0x5b,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x73,0x0,0xf3,0x0,0x62, - 0x0,0x2c,0x0,0x20,0x0,0x6b,0x0,0x74,0x0,0xf3,0x0,0x72,0x0,0x79,0x0,0x20, - 0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x77, - 0x0,0x73,0x0,0x7a,0x0,0x65,0x1,0x44,0x0,0x73,0x0,0x74,0x0,0x77,0x0,0x6f, - 0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x64,0x0,0x20,0x0,0x69, - 0x0,0x6e,0x0,0x6e,0x0,0x79,0x0,0x6d,0x0,0x20,0x0,0x69,0x0,0x73,0x0,0x74, - 0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x6a,0x1,0x5,0x0,0x63,0x0,0x79,0x0,0x6d, - 0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x62,0x0,0x65,0x0,0x6d, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7c,0x43,0x6c,0x65,0x61, - 0x72,0x73,0x20,0x74,0x68,0x65,0x20,0x6c,0x6f,0x6f,0x6b,0x75,0x70,0x20,0x63,0x61, - 0x63,0x68,0x65,0x20,0x66,0x6f,0x72,0x20,0x61,0x73,0x73,0x65,0x74,0x73,0x2e,0x20, - 0x55,0x73,0x65,0x20,0x74,0x68,0x69,0x73,0x20,0x77,0x68,0x65,0x6e,0x20,0x79,0x6f, - 0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x61,0x64,0x64,0x65,0x64,0x20,0x61,0x6e,0x20, - 0x61,0x73,0x73,0x65,0x74,0x20,0x74,0x68,0x61,0x74,0x20,0x74,0x61,0x6b,0x65,0x73, - 0x20,0x70,0x72,0x65,0x63,0x65,0x64,0x65,0x6e,0x63,0x65,0x20,0x6f,0x76,0x65,0x72, - 0x20,0x61,0x6e,0x6f,0x74,0x68,0x65,0x72,0x20,0x65,0x78,0x69,0x73,0x74,0x69,0x6e, - 0x67,0x20,0x61,0x73,0x73,0x65,0x74,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x2c,0x0,0x4b,0x0,0x6f,0x0,0x6c,0x0,0x6f,0x0,0x72,0x0,0x79,0x0,0x20, - 0x0,0x77,0x0,0x20,0x0,0x44,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x6e, - 0x0,0x69,0x0,0x6b,0x0,0x75,0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x3a,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x43,0x6f,0x6c,0x6f,0x72,0x73,0x20,0x69, - 0x6e,0x20,0x49,0x43,0x20,0x4c,0x6f,0x67,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x32,0x0,0x4e,0x0,0x69,0x0,0x65,0x0,0x70,0x0,0x72,0x0,0x7a,0x0, - 0x65,0x0,0x72,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x4f,0x0, - 0x64,0x0,0x74,0x0,0x77,0x0,0x61,0x0,0x72,0x0,0x7a,0x0,0x61,0x0,0x6e,0x0, - 0x69,0x0,0x65,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x14,0x43, - 0x6f,0x6e,0x74,0x69,0x6e,0x75,0x6f,0x75,0x73,0x20,0x50,0x6c,0x61,0x79,0x62,0x61, - 0x63,0x6b,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x34,0x0,0x4e,0x0, - 0x69,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61,0x0, - 0x72,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x20,0x0,0x4f,0x0,0x6b,0x0, - 0x6e,0x0,0x61,0x0,0x20,0x0,0x43,0x0,0x7a,0x0,0x61,0x0,0x74,0x0,0x75,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x43,0x75,0x73,0x74,0x6f, - 0x6d,0x20,0x43,0x68,0x61,0x74,0x62,0x6f,0x78,0x65,0x73,0x3a,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x4e,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x74, - 0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x64,0x0,0x6f,0x0,0x77, - 0x0,0x65,0x0,0x20,0x0,0x6b,0x0,0x73,0x0,0x79,0x0,0x77,0x0,0x6b,0x0,0x69, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x43,0x75,0x73,0x74, - 0x6f,0x6d,0x20,0x73,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x44,0x0,0x6f,0x0,0x6d,0x0,0x79,0x1, - 0x5b,0x0,0x6c,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x6b,0x0,0x73,0x0,0x79,0x0, - 0x77,0x0,0x6b,0x0,0x61,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x11,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x73,0x68,0x6f,0x77,0x6e,0x61,0x6d, - 0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x36,0x0,0x44,0x0,0x6f, - 0x0,0x6d,0x0,0x79,0x1,0x5b,0x0,0x6c,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x6e, - 0x0,0x61,0x0,0x7a,0x0,0x77,0x0,0x61,0x0,0x20,0x0,0x75,0x1,0x7c,0x0,0x79, - 0x0,0x74,0x0,0x6b,0x0,0x6f,0x0,0x77,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x61, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x44,0x65,0x66,0x61, - 0x75,0x6c,0x74,0x20,0x75,0x73,0x65,0x72,0x6e,0x61,0x6d,0x65,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x4f,0x0,0x62,0x0,0x72,0x0,0x6f,0x0, - 0x6e,0x0,0x61,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x44, - 0x65,0x66,0x65,0x6e,0x73,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x3c,0x0,0x44,0x0,0x65,0x0,0x73,0x0,0x79,0x0,0x6e,0x0,0x63,0x0,0x68,0x0, - 0x72,0x0,0x6f,0x0,0x6e,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x63,0x0,0x6a,0x0, - 0x61,0x0,0x20,0x0,0x44,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0, - 0x69,0x0,0x6b,0x0,0x61,0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x16,0x44,0x65,0x73,0x79,0x6e,0x63,0x68,0x72,0x6f, - 0x6e,0x69,0x7a,0x65,0x20,0x49,0x43,0x20,0x4c,0x6f,0x67,0x73,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x8,0x44,0x69,0x73,0x63,0x6f,0x72,0x64,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x52,0x0,0x57,0x1,0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0,0x20,0x0, - 0x70,0x1,0x19,0x0,0x74,0x0,0x6c,0x1,0x5,0x0,0x63,0x0,0x65,0x0,0x20,0x0, - 0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x6b,0x0, - 0x74,0x0,0x79,0x0,0x20,0x0,0x64,0x1,0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0, - 0x6b,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x20,0x0,0x28,0x0,0x53,0x0,0x46,0x0, - 0x58,0x0,0x29,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x45, - 0x6e,0x61,0x62,0x6c,0x65,0x20,0x4c,0x6f,0x6f,0x70,0x69,0x6e,0x67,0x20,0x53,0x46, - 0x58,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x6,0x0,0x47,0x0,0x72, - 0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x47,0x61,0x6d,0x65, - 0x70,0x6c,0x61,0x79,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x0,0x0,0x44, - 0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x79, - 0x1,0x5b,0x0,0x6c,0x0,0x6e,0x1,0x5,0x0,0x20,0x0,0x77,0x0,0x61,0x0,0x72, - 0x0,0x74,0x0,0x6f,0x1,0x5b,0x1,0x7,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a, - 0x0,0x79,0x0,0x63,0x0,0x69,0x0,0x73,0x0,0x6b,0x0,0x6f,0x0,0x77,0x0,0x69, - 0x0,0x20,0x0,0x27,0x0,0x4e,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61, - 0x0,0x6e,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x65, - 0x0,0x20,0x0,0x6b,0x0,0x73,0x0,0x79,0x0,0x77,0x0,0x6b,0x0,0x69,0x0,0x27, - 0x0,0x2c,0x0,0x20,0x0,0x6b,0x0,0x74,0x0,0xf3,0x0,0x72,0x0,0x79,0x0,0x20, - 0x0,0x6f,0x0,0x6b,0x0,0x72,0x0,0x65,0x1,0x5b,0x0,0x6c,0x0,0x61,0x0,0x2c, - 0x0,0x20,0x0,0x63,0x0,0x7a,0x0,0x79,0x0,0x20,0x0,0x6b,0x0,0x6c,0x0,0x69, - 0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x77,0x0,0x69, - 0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x6b, - 0x0,0x61,0x0,0x7a,0x0,0x79,0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x6e, - 0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61, - 0x0,0x72,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x20,0x0,0x6e,0x0,0x61, - 0x0,0x7a,0x0,0x77,0x0,0x79,0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x99,0x47,0x69,0x76,0x65,0x73,0x20,0x74,0x68, - 0x65,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x76,0x61,0x6c,0x75,0x65,0x20, - 0x66,0x6f,0x72,0x20,0x74,0x68,0x65,0x20,0x69,0x6e,0x2d,0x67,0x61,0x6d,0x65,0x20, - 0x27,0x43,0x75,0x73,0x74,0x6f,0x6d,0x20,0x73,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65, - 0x73,0x27,0x20,0x74,0x69,0x63,0x6b,0x62,0x6f,0x78,0x2c,0x20,0x77,0x68,0x69,0x63, - 0x68,0x20,0x69,0x6e,0x20,0x74,0x75,0x72,0x6e,0x20,0x64,0x65,0x74,0x65,0x72,0x6d, - 0x69,0x6e,0x65,0x73,0x20,0x77,0x68,0x65,0x74,0x68,0x65,0x72,0x20,0x74,0x68,0x65, - 0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x64, - 0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x69,0x6e, - 0x2d,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x6e,0x61,0x6d,0x65,0x73, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x26,0x0,0x48,0x0,0x6f,0x0, - 0x73,0x0,0x74,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x65,0x0,0x20,0x0, - 0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x79,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x48,0x6f,0x73,0x74,0x69, - 0x6e,0x67,0x20,0x63,0x61,0x73,0x65,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x1,0x3c,0x0,0x4a,0x0,0x65,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0, - 0x77,0x0,0x61,0x0,0x72,0x0,0x74,0x0,0x6f,0x1,0x5b,0x1,0x7,0x0,0x20,0x0, - 0x43,0x0,0x7a,0x0,0x61,0x0,0x73,0x0,0x75,0x0,0x20,0x0,0x50,0x0,0x6f,0x0, - 0x7a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0, - 0x20,0x0,0x54,0x0,0x65,0x0,0x6b,0x0,0x73,0x0,0x74,0x0,0x75,0x0,0x20,0x0, - 0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x69,0x1,0x19,0x0, - 0x6b,0x0,0x73,0x0,0x7a,0x0,0x61,0x0,0x2c,0x0,0x20,0x0,0x6e,0x0,0x69,0x1, - 0x7c,0x0,0x20,0x0,0x30,0x0,0x2c,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x74,0x0, - 0x79,0x0,0x63,0x0,0x68,0x0,0x6d,0x0,0x69,0x0,0x61,0x0,0x73,0x0,0x74,0x0, - 0x6f,0x0,0x77,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x72,0x0,0x7a,0x0, - 0x65,0x0,0x63,0x0,0x69,0x0,0x77,0x0,0x79,0x0,0x20,0x0,0x70,0x0,0x6f,0x0, - 0x6d,0x0,0x69,0x0,0x6e,0x1,0x5,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0, - 0x65,0x0,0x6a,0x0,0x6b,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x65,0x0, - 0x20,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1, - 0x5b,0x0,0x63,0x0,0x69,0x0,0x2c,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x6d,0x0, - 0x69,0x0,0x61,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x63,0x0,0x7a,0x0,0x65,0x0, - 0x6b,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x6e,0x0,0x61,0x0, - 0x20,0x0,0x6e,0x0,0x61,0x0,0x64,0x0,0x72,0x0,0x6f,0x0,0x62,0x0,0x69,0x0, - 0x65,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x6c,0x0, - 0x65,0x0,0x67,0x1,0x42,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6d,0x49,0x66,0x20,0x54,0x65,0x78,0x74, - 0x20,0x53,0x74,0x61,0x79,0x20,0x54,0x69,0x6d,0x65,0x20,0x69,0x73,0x20,0x6d,0x6f, - 0x72,0x65,0x20,0x74,0x68,0x61,0x6e,0x20,0x30,0x2c,0x20,0x69,0x6e,0x73,0x74,0x61, - 0x6e,0x74,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x69,0x6c, - 0x6c,0x20,0x73,0x6b,0x69,0x70,0x20,0x71,0x75,0x65,0x75,0x65,0x64,0x20,0x6d,0x65, - 0x73,0x73,0x61,0x67,0x65,0x73,0x20,0x69,0x6e,0x73,0x74,0x65,0x61,0x64,0x20,0x6f, - 0x66,0x20,0x77,0x61,0x69,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x63,0x61,0x74, - 0x63,0x68,0x20,0x75,0x70,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xb4, - 0x0,0x4a,0x0,0x65,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x65, - 0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61, - 0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65, - 0x0,0x2c,0x0,0x20,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x6e, - 0x0,0x69,0x0,0x6b,0x0,0x20,0x0,0x62,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x69, - 0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x6f,0x0,0x6d,0x0,0x61, - 0x0,0x74,0x0,0x79,0x0,0x63,0x0,0x7a,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20, - 0x0,0x7a,0x0,0x61,0x0,0x70,0x0,0x69,0x0,0x73,0x0,0x79,0x0,0x77,0x0,0x61, - 0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x74,0x0,0x77,0x0,0x6f, - 0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x6c,0x0,0x64,0x0,0x65, - 0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x20,0x0,0x2f,0x0,0x6c,0x0,0x6f,0x0,0x67, - 0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x47,0x49,0x66, - 0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x61,0x6c,0x6c,0x20,0x6c,0x6f, - 0x67,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x75,0x74,0x6f,0x6d, - 0x61,0x74,0x69,0x63,0x61,0x6c,0x6c,0x79,0x20,0x77,0x72,0x69,0x74,0x74,0x65,0x6e, - 0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x2f,0x6c,0x6f,0x67,0x73,0x20,0x66,0x6f, - 0x6c,0x64,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xbc,0x0, - 0x4a,0x0,0x65,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x65,0x0, - 0x73,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0, - 0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0, - 0x2c,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x6a,0x0,0x61,0x0,0x77,0x0,0x69,0x0, - 0x73,0x0,0x7a,0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x77,0x1, - 0x5b,0x0,0x72,0x0,0xf3,0x0,0x64,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x74,0x0, - 0x65,0x0,0x6e,0x0,0x63,0x0,0x6a,0x0,0x61,0x0,0x6c,0x0,0x6e,0x0,0x79,0x0, - 0x63,0x0,0x68,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x72,0x0,0x7a,0x1,0x5,0x0, - 0x64,0x0,0x63,0x0,0xf3,0x0,0x77,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0, - 0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x20,0x0,0x28,0x0,0x43,0x0,0x4d,0x0, - 0x29,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0, - 0x77,0x0,0x65,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x44,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c, - 0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x61,0x70,0x70,0x65,0x61,0x72, - 0x20,0x61,0x6d,0x6f,0x6e,0x67,0x73,0x74,0x20,0x74,0x68,0x65,0x20,0x70,0x6f,0x74, - 0x65,0x6e,0x74,0x69,0x61,0x6c,0x20,0x43,0x4d,0x73,0x20,0x6f,0x6e,0x20,0x74,0x68, - 0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0xd4,0x0,0x4a,0x0,0x65,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0, - 0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0, - 0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0, - 0x6e,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x74,0x0, - 0x61,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x6b,0x0, - 0x6f,0x0,0x6d,0x0,0x75,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x61,0x0,0x74,0x0, - 0x79,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x6f,0x0,0x67,0x1,0x42,0x0,0x6f,0x0, - 0x73,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x63,0x0,0x68,0x0, - 0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0, - 0x2c,0x0,0x20,0x0,0x6a,0x0,0x65,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0, - 0x6d,0x0,0x69,0x0,0x65,0x0,0x6a,0x0,0x73,0x0,0x63,0x0,0x65,0x0,0x20,0x0, - 0x6f,0x0,0x62,0x0,0x72,0x0,0x6f,0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x6a,0x0, - 0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x6f,0x0,0x74,0x0,0x77,0x0,0x61,0x0, - 0x72,0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x53,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75, - 0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73, - 0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f, - 0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x61,0x20,0x64, - 0x65,0x66,0x65,0x6e,0x73,0x65,0x20,0x73,0x70,0x6f,0x74,0x20,0x69,0x73,0x20,0x6f, - 0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xd8,0x0,0x4a, - 0x0,0x65,0x1,0x7c,0x0,0x65,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x65, - 0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61, - 0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65, - 0x0,0x2c,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e, - 0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6d, - 0x0,0x75,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x61,0x0,0x74,0x0,0x79,0x0,0x20, - 0x0,0x6f,0x0,0x20,0x0,0x6f,0x0,0x67,0x1,0x42,0x0,0x6f,0x0,0x73,0x0,0x7a, - 0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x72, - 0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x2c,0x0,0x20, - 0x0,0x6a,0x0,0x65,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6d,0x0,0x69, - 0x0,0x65,0x0,0x6a,0x0,0x73,0x0,0x63,0x0,0x65,0x0,0x20,0x1,0x42,0x0,0x61, - 0x0,0x77,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x61,0x0,0x20,0x0,0x6a,0x0,0x65, - 0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x6f,0x0,0x74,0x0,0x77,0x0,0x61,0x0,0x72, - 0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x51, - 0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20, - 0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20, - 0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75, - 0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x61,0x20,0x6a,0x75, - 0x72,0x6f,0x72,0x20,0x73,0x70,0x6f,0x74,0x20,0x69,0x73,0x20,0x6f,0x70,0x65,0x6e, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xde,0x0,0x4a,0x0,0x65,0x1, - 0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0, - 0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0,0x20,0x0, - 0x64,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65,0x0, - 0x73,0x0,0x7a,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6d,0x0,0x75,0x0,0x6e,0x0, - 0x69,0x0,0x6b,0x0,0x61,0x0,0x74,0x0,0x79,0x0,0x20,0x0,0x6f,0x0,0x20,0x0, - 0x6f,0x0,0x67,0x1,0x42,0x0,0x6f,0x0,0x73,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0, - 0x69,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0, - 0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0,0x65,0x1, - 0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6d,0x0,0x69,0x0,0x65,0x0,0x6a,0x0, - 0x73,0x0,0x63,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x6b,0x0, - 0x75,0x0,0x72,0x0,0x61,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x61,0x0,0x20,0x0, - 0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x6f,0x0,0x74,0x0,0x77,0x0, - 0x61,0x0,0x72,0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x56,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79, - 0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72, - 0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e, - 0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x61, - 0x20,0x70,0x72,0x6f,0x73,0x65,0x63,0x75,0x74,0x6f,0x72,0x20,0x73,0x70,0x6f,0x74, - 0x20,0x69,0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0xde,0x0,0x4a,0x0,0x65,0x1,0x7c,0x0,0x65,0x0,0x6c,0x0,0x69,0x0, - 0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0, - 0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0, - 0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x73,0x0, - 0x74,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x7a,0x0,0x20,0x0, - 0x6b,0x0,0x6f,0x0,0x6d,0x0,0x75,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x61,0x0, - 0x74,0x0,0x79,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x6f,0x0,0x67,0x1,0x42,0x0, - 0x6f,0x0,0x73,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x63,0x0, - 0x68,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61,0x0, - 0x77,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0,0x65,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0, - 0x20,0x0,0x6d,0x0,0x69,0x0,0x65,0x0,0x6a,0x0,0x73,0x0,0x63,0x0,0x65,0x0, - 0x20,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x6f,0x0,0x67,0x0,0x72,0x0, - 0x61,0x0,0x66,0x0,0x61,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x20,0x0,0x6f,0x0,0x74,0x0,0x77,0x0,0x61,0x0,0x72,0x0,0x74,0x0,0x65,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x58,0x49,0x66,0x20,0x63,0x68, - 0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20, - 0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74, - 0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65, - 0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x61,0x20,0x73,0x74,0x65,0x6e,0x6f,0x67,0x72, - 0x61,0x70,0x68,0x65,0x72,0x20,0x73,0x70,0x6f,0x74,0x20,0x69,0x73,0x20,0x6f,0x70, - 0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xd2,0x0,0x4a,0x0, - 0x65,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0, - 0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0, - 0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0, - 0x20,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x69,0x0, - 0x65,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6d,0x0,0x75,0x0, - 0x6e,0x0,0x69,0x0,0x6b,0x0,0x61,0x0,0x74,0x0,0x79,0x0,0x20,0x0,0x6f,0x0, - 0x20,0x0,0x6f,0x0,0x67,0x1,0x42,0x0,0x6f,0x0,0x73,0x0,0x7a,0x0,0x65,0x0, - 0x6e,0x0,0x69,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x72,0x0,0x6f,0x0, - 0x7a,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0, - 0x65,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6d,0x0,0x69,0x0,0x65,0x0, - 0x6a,0x0,0x73,0x0,0x63,0x0,0x65,0x0,0x20,0x0,0x73,0x1,0x19,0x0,0x64,0x0, - 0x7a,0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0, - 0x6f,0x0,0x74,0x0,0x77,0x0,0x61,0x0,0x72,0x0,0x74,0x0,0x65,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x53,0x49,0x66,0x20,0x63,0x68,0x65,0x63, - 0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65, - 0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63, - 0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74, - 0x73,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x20,0x6a,0x75,0x64,0x67,0x65,0x20,0x73, - 0x70,0x6f,0x74,0x20,0x69,0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x8e,0x0,0x4a,0x0,0x65,0x1,0x7c,0x0,0x65,0x0,0x6c, - 0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f, - 0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a, - 0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x73, - 0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x7a,0x0,0x20, - 0x0,0x6b,0x0,0x6f,0x0,0x6d,0x0,0x75,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x61, - 0x0,0x74,0x0,0x79,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x6f,0x0,0x67,0x1,0x42, - 0x0,0x6f,0x0,0x73,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x63, - 0x0,0x68,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61, - 0x0,0x77,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x39,0x49,0x66, - 0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69, - 0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62, - 0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63, - 0x65,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1, - 0xc,0x0,0x4a,0x0,0x65,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x77,0x0, - 0x62,0x0,0x75,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x65,0x0, - 0x20,0x0,0x73,0x0,0x7a,0x0,0x75,0x0,0x6b,0x0,0x61,0x0,0x6e,0x0,0x69,0x0, - 0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0, - 0xf3,0x0,0x77,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x65,0x0, - 0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x67,0x0,0x72,0x0, - 0x61,0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x72,0x0,0xf3,0x0,0x62,0x0,0x75,0x0, - 0x6a,0x0,0x65,0x0,0x20,0x0,0x75,0x1,0x7c,0x0,0x79,0x1,0x7,0x0,0x20,0x0, - 0x61,0x0,0x64,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x75,0x0,0x20,0x0,0x70,0x0, - 0x6f,0x0,0x64,0x0,0x61,0x0,0x6e,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0, - 0x74,0x0,0x75,0x0,0x74,0x0,0x61,0x0,0x6a,0x0,0x20,0x0,0x69,0x0,0x20,0x0, - 0x75,0x1,0x7c,0x0,0x79,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x67,0x0,0x6f,0x0, - 0x20,0x0,0x6a,0x0,0x61,0x0,0x6b,0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x64,0x0, - 0x72,0x0,0x65,0x0,0x73,0x0,0x75,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x70,0x0, - 0x61,0x0,0x73,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0, - 0x6d,0x0,0x61,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x73,0x0, - 0x65,0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x7b,0x49,0x66,0x20,0x74,0x68,0x65,0x20,0x62,0x75, - 0x69,0x6c,0x74,0x2d,0x69,0x6e,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x6c,0x6f, - 0x6f,0x6b,0x75,0x70,0x73,0x20,0x66,0x61,0x69,0x6c,0x2c,0x20,0x74,0x68,0x65,0x20, - 0x67,0x61,0x6d,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x74,0x72,0x79,0x20,0x74,0x68, - 0x65,0x20,0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x20,0x67,0x69,0x76,0x65,0x6e,0x20, - 0x68,0x65,0x72,0x65,0x20,0x61,0x6e,0x64,0x20,0x75,0x73,0x65,0x20,0x69,0x74,0x20, - 0x61,0x73,0x20,0x61,0x20,0x62,0x61,0x63,0x6b,0x75,0x70,0x20,0x6d,0x61,0x73,0x74, - 0x65,0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x61,0x64,0x64,0x72,0x65,0x73, - 0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x9c,0x0,0x4a,0x0,0x65, - 0x1,0x7c,0x0,0x65,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73, - 0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a, - 0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c, - 0x0,0x20,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x69, - 0x0,0x6b,0x0,0x20,0x0,0x62,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x6b,0x0,0x61,0x0,0x7a,0x0,0x79,0x0,0x77, - 0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x74,0x1,0x19,0x0,0x20, - 0x0,0x77,0x0,0x20,0x0,0x55,0x0,0x54,0x0,0x43,0x0,0x20,0x0,0x70,0x0,0x72, - 0x0,0x7a,0x0,0x65,0x0,0x64,0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x63,0x0,0x6b, - 0x0,0x69,0x0,0x65,0x0,0x6d,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x3f,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x6c,0x6f,0x67, - 0x20,0x77,0x69,0x6c,0x6c,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x20,0x61,0x20, - 0x74,0x69,0x6d,0x65,0x73,0x74,0x61,0x6d,0x70,0x20,0x69,0x6e,0x20,0x55,0x54,0x43, - 0x20,0x62,0x65,0x66,0x6f,0x72,0x65,0x20,0x74,0x68,0x65,0x20,0x6e,0x61,0x6d,0x65, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xcc,0x0,0x4a,0x0,0x65,0x1, - 0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0, - 0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0,0x20,0x0, - 0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0, - 0x20,0x0,0x62,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x20,0x0, - 0x70,0x0,0x6f,0x0,0x6b,0x0,0x61,0x0,0x7a,0x0,0x79,0x0,0x77,0x0,0x61,0x1, - 0x7,0x0,0x20,0x0,0x61,0x0,0x6b,0x0,0x63,0x0,0x6a,0x0,0x65,0x0,0x20,0x0, - 0x49,0x0,0x43,0x0,0x20,0x0,0x74,0x0,0x61,0x0,0x6b,0x0,0x69,0x0,0x65,0x0, - 0x20,0x0,0x6a,0x0,0x61,0x0,0x6b,0x0,0x20,0x0,0x6b,0x0,0x72,0x0,0x7a,0x0, - 0x79,0x0,0x6b,0x0,0x69,0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x70,0x0,0x72,0x0, - 0x65,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0,0x77,0x0,0x61,0x0, - 0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x6f,0x0, - 0x64,0x0,0xf3,0x0,0x77,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x4d,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x6c,0x6f,0x67,0x20, - 0x77,0x69,0x6c,0x6c,0x20,0x73,0x68,0x6f,0x77,0x20,0x49,0x43,0x20,0x61,0x63,0x74, - 0x69,0x6f,0x6e,0x73,0x20,0x73,0x75,0x63,0x68,0x20,0x61,0x73,0x20,0x73,0x68,0x6f, - 0x75,0x74,0x69,0x6e,0x67,0x20,0x61,0x6e,0x64,0x20,0x70,0x72,0x65,0x73,0x65,0x6e, - 0x74,0x69,0x6e,0x67,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x2e,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x12,0x0,0x4a,0x0,0x65,0x1,0x7c,0x0,0x65, - 0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20, - 0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0,0x61, - 0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x64, - 0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x20, - 0x0,0x70,0x0,0x6f,0x0,0x6b,0x0,0x61,0x1,0x7c,0x0,0x65,0x0,0x20,0x0,0x77, - 0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1,0x5b,0x0,0x63, - 0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x61,0x0,0x6b,0x0,0x6f,0x0,0x20,0x0,0x6f, - 0x0,0x64,0x0,0x65,0x0,0x62,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x65,0x0,0x2c, - 0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x73, - 0x0,0x20,0x0,0x67,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x6f,0x0,0x6b,0x0,0x6e, - 0x0,0x6f,0x0,0x20,0x0,0x62,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x6f, - 0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x65, - 0x0,0x6a,0x0,0x6b,0x1,0x19,0x0,0x20,0x0,0x28,0x0,0x43,0x0,0x7a,0x0,0x61, - 0x0,0x73,0x0,0x20,0x0,0x50,0x0,0x6f,0x0,0x7a,0x0,0x6f,0x0,0x73,0x0,0x74, - 0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x54,0x0,0x65,0x0,0x6b, - 0x0,0x73,0x0,0x74,0x0,0x75,0x0,0x29,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x71,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x6c, - 0x6f,0x67,0x20,0x77,0x69,0x6c,0x6c,0x20,0x73,0x68,0x6f,0x77,0x20,0x6d,0x65,0x73, - 0x73,0x61,0x67,0x65,0x73,0x20,0x61,0x73,0x2d,0x72,0x65,0x63,0x65,0x69,0x76,0x65, - 0x64,0x2c,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x76,0x69,0x65,0x77,0x70,0x6f,0x72, - 0x74,0x20,0x77,0x69,0x6c,0x6c,0x20,0x70,0x61,0x72,0x73,0x65,0x20,0x61,0x63,0x63, - 0x6f,0x72,0x64,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x71,0x75, - 0x65,0x75,0x65,0x20,0x28,0x54,0x65,0x78,0x74,0x20,0x53,0x74,0x61,0x79,0x20,0x54, - 0x69,0x6d,0x65,0x29,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x4c,0x0, - 0x4a,0x0,0x65,0x1,0x7c,0x0,0x65,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6a,0x0, - 0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0, - 0x61,0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0, - 0x65,0x0,0x2c,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x20,0x0, - 0x77,0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1,0x5b,0x0, - 0x63,0x0,0x69,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6e,0x1, - 0x5,0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x70,0x0,0x6f,0x0, - 0x6a,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x6e,0x0, - 0x61,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x28,0x0, - 0x74,0x0,0x61,0x0,0x6b,0x0,0x20,0x0,0x6a,0x0,0x61,0x0,0x6b,0x0,0x20,0x0, - 0x6e,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x63,0x0,0x69,0x0, - 0x65,0x0,0x20,0x0,0x4f,0x0,0x4f,0x0,0x43,0x0,0x29,0x0,0x2e,0x0,0x20,0x0, - 0x54,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x79,0x0,0x63,0x0,0x79,0x0,0x6a,0x0, - 0x6e,0x0,0x65,0x0,0x20,0x0,0x28,0x0,0x41,0x0,0x4f,0x0,0x31,0x0,0x29,0x0, - 0x20,0x0,0x7a,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x6f,0x0,0x77,0x0,0x61,0x0, - 0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x20,0x0,0x72,0x0,0xf3,0x0,0x77,0x0,0x6e,0x0,0x6f,0x0,0x77,0x0,0x61,0x1, - 0x7c,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x74,0x0, - 0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x62,0x0,0x79,0x0,0x63,0x0,0x69,0x0, - 0x61,0x0,0x20,0x0,0x6f,0x0,0x64,0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0, - 0x7a,0x0,0x6f,0x0,0x6e,0x0,0x79,0x0,0x6d,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x8f,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20, - 0x6e,0x65,0x77,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x73,0x20,0x77,0x69,0x6c, - 0x6c,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x20,0x61,0x74,0x20,0x74,0x68,0x65,0x20, - 0x62,0x6f,0x74,0x74,0x6f,0x6d,0x20,0x28,0x6c,0x69,0x6b,0x65,0x20,0x74,0x68,0x65, - 0x20,0x4f,0x4f,0x43,0x20,0x63,0x68,0x61,0x74,0x6c,0x6f,0x67,0x29,0x2e,0x20,0x54, - 0x68,0x65,0x20,0x74,0x72,0x61,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x20,0x28, - 0x41,0x4f,0x31,0x29,0x20,0x62,0x65,0x68,0x61,0x76,0x69,0x6f,0x75,0x72,0x20,0x69, - 0x73,0x20,0x65,0x71,0x75,0x69,0x76,0x61,0x6c,0x65,0x6e,0x74,0x20,0x74,0x6f,0x20, - 0x74,0x68,0x69,0x73,0x20,0x62,0x65,0x69,0x6e,0x67,0x20,0x75,0x6e,0x74,0x69,0x63, - 0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x70,0x0,0x4a, - 0x0,0x65,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73, - 0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a, - 0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c, - 0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x20,0x0,0x77,0x0,0x69, - 0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69, - 0x0,0x20,0x0,0x62,0x1,0x19,0x0,0x64,0x1,0x5,0x0,0x20,0x0,0x70,0x0,0x6f, - 0x0,0x6a,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x73, - 0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x6f,0x0,0x64,0x0,0x64,0x0,0x7a,0x0,0x69, - 0x0,0x65,0x0,0x6c,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x7a, - 0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x6f, - 0x1,0x5b,0x0,0x63,0x0,0x69,0x1,0x5,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x6b, - 0x0,0x6f,0x0,0x6c,0x0,0x65,0x0,0x6a,0x0,0x6e,0x0,0x79,0x0,0x6d,0x0,0x20, - 0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x7a,0x0,0x75,0x0,0x20, - 0x0,0x70,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x63,0x0,0x6b,0x0,0x75, - 0x0,0x2e,0x0,0x20,0x0,0x4a,0x0,0x65,0x1,0x7c,0x0,0x65,0x0,0x6c,0x0,0x69, - 0x0,0x20,0x0,0x6f,0x0,0x64,0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a, - 0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x62,0x1,0x19,0x0,0x64, - 0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20, - 0x0,0x70,0x0,0x6f,0x0,0x6b,0x0,0x61,0x0,0x7a,0x0,0x79,0x0,0x77,0x0,0x61, - 0x1,0x7,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x72,0x0,0x6d, - 0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x27,0x0,0x6e,0x0,0x69, - 0x0,0x63,0x0,0x6b,0x0,0x3a,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x64, - 0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1,0x5b,0x1,0x7,0x0,0x22,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x99,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65, - 0x64,0x2c,0x20,0x6e,0x65,0x77,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x73,0x20, - 0x77,0x69,0x6c,0x6c,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x20,0x73,0x65,0x70,0x61, - 0x72,0x61,0x74,0x65,0x64,0x2c,0x20,0x77,0x69,0x74,0x68,0x20,0x74,0x68,0x65,0x20, - 0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x63,0x6f,0x6d,0x69,0x6e,0x67,0x20,0x6f, - 0x6e,0x20,0x74,0x68,0x65,0x20,0x6e,0x65,0x78,0x74,0x20,0x6c,0x69,0x6e,0x65,0x20, - 0x61,0x66,0x74,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x6e,0x61,0x6d,0x65,0x2e,0x20, - 0x57,0x68,0x65,0x6e,0x20,0x75,0x6e,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x69, - 0x74,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x73,0x20,0x69,0x74,0x20,0x61,0x73, - 0x20,0x27,0x6e,0x61,0x6d,0x65,0x3a,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x27, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x90,0x0,0x4a,0x0,0x65,0x1, - 0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0, - 0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0,0x20,0x0, - 0x6d,0x0,0x6f,0x0,0x74,0x0,0x79,0x0,0x77,0x0,0x79,0x0,0x20,0x0,0x62,0x1, - 0x19,0x0,0x64,0x1,0x5,0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x67,0x1,0x42,0x0, - 0x79,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x72,0x0, - 0x61,0x1,0x7,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x6f,0x0, - 0x77,0x0,0x61,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x65,0x0, - 0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x79,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x3c,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20, - 0x74,0x68,0x65,0x6d,0x65,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61, - 0x6c,0x6c,0x6f,0x77,0x65,0x64,0x20,0x74,0x6f,0x20,0x68,0x61,0x76,0x65,0x20,0x61, - 0x6e,0x69,0x6d,0x61,0x74,0x65,0x64,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xb4,0x0,0x4a,0x0,0x65,0x1, - 0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0, - 0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0,0x20,0x0, - 0x67,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x70,0x0,0x79,0x0, - 0x74,0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x65,0x0, - 0x72,0x0,0x20,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0, - 0x65,0x0,0x72,0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x6d,0x0,0x75,0x0, - 0x7a,0x0,0x79,0x0,0x6b,0x1,0x19,0x0,0x2c,0x0,0x20,0x0,0x6b,0x0,0x69,0x0, - 0x65,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x6b,0x0,0x74,0x0,0x6f,0x1,0x5b,0x0, - 0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x72,0x0, - 0x7a,0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x77,0x0,0x69,0x0,0x2e,0x0,0x20,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x49,0x49,0x66,0x20,0x74,0x72,0x75,0x65, - 0x2c,0x20,0x41,0x4f,0x32,0x20,0x77,0x69,0x6c,0x6c,0x20,0x61,0x73,0x6b,0x20,0x74, - 0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x74,0x6f,0x20,0x73,0x74,0x6f, - 0x70,0x20,0x6d,0x75,0x73,0x69,0x63,0x20,0x77,0x68,0x65,0x6e,0x20,0x79,0x6f,0x75, - 0x20,0x75,0x73,0x65,0x20,0x27,0x4f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x21, - 0x27,0x20,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xd8,0x0,0x4a,0x0,0x65, - 0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74, - 0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e, - 0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0,0x20, - 0x0,0x67,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x7a,0x0,0x65,0x0,0x7a,0x0,0x77, - 0x0,0x6f,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x70, - 0x1,0x19,0x0,0x74,0x0,0x6c,0x1,0x5,0x0,0x63,0x0,0x65,0x0,0x20,0x0,0x73, - 0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74, - 0x0,0x79,0x0,0x20,0x0,0x64,0x1,0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0,0x6b, - 0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x20,0x0,0x28,0x0,0x53,0x0,0x46,0x0,0x58, - 0x0,0x29,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x6f,0x0,0x64,0x0,0x74, - 0x0,0x77,0x0,0x61,0x0,0x72,0x0,0x7a,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x73, - 0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x63,0x0,0x6a, - 0x0,0x69,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4c,0x49,0x66, - 0x20,0x74,0x72,0x75,0x65,0x2c,0x20,0x74,0x68,0x65,0x20,0x67,0x61,0x6d,0x65,0x20, - 0x77,0x69,0x6c,0x6c,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x20,0x6c,0x6f,0x6f,0x70,0x69, - 0x6e,0x67,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73, - 0x20,0x74,0x6f,0x20,0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e,0x20,0x70,0x72,0x65,0x61, - 0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0xae,0x0,0x4a,0x0,0x65,0x1,0x7c,0x0,0x65,0x0,0x6c,0x0,0x69, - 0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f, - 0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a, - 0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x67,0x0,0x72,0x0,0x61, - 0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x67,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x64, - 0x1,0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0,0x6b,0x0,0x20,0x0,0x62,0x0,0x6c, - 0x0,0x69,0x0,0x70,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x20,0x0,0x6b,0x0,0x61, - 0x1,0x7c,0x0,0x64,0x0,0x79,0x0,0x6d,0x0,0x20,0x0,0x72,0x0,0x61,0x0,0x7a, - 0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x61,0x0,0x63,0x0,0x6a, - 0x0,0x61,0x0,0x20,0x0,0x27,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20, - 0x0,0x6d,0x0,0xf3,0x0,0x77,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x27, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4b,0x49,0x66,0x20,0x74, - 0x72,0x75,0x65,0x2c,0x20,0x74,0x68,0x65,0x20,0x67,0x61,0x6d,0x65,0x20,0x77,0x69, - 0x6c,0x6c,0x20,0x70,0x6c,0x61,0x79,0x20,0x61,0x20,0x62,0x6c,0x69,0x70,0x20,0x73, - 0x6f,0x75,0x6e,0x64,0x20,0x65,0x76,0x65,0x6e,0x20,0x77,0x68,0x65,0x6e,0x20,0x61, - 0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x69,0x73,0x20,0x27,0x62,0x65,0x69,0x6e,0x67, - 0x20,0x73,0x61,0x69,0x64,0x27,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0xa6,0x0,0x4a,0x0,0x65,0x1,0x7c,0x0,0x65,0x0,0x6c,0x0,0x69,0x0,0x20,0x0, - 0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x65,0x1,0x5b,0x0,0x20,0x0,0x7a,0x0, - 0x61,0x0,0x72,0x0,0x7a,0x1,0x5,0x0,0x64,0x0,0x63,0x1,0x5,0x0,0x20,0x0, - 0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x20,0x0, - 0x28,0x0,0x43,0x0,0x4d,0x0,0x29,0x0,0x2c,0x0,0x20,0x0,0x77,0x0,0x70,0x0, - 0x69,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x6a,0x0,0x61,0x0,0x6b,0x0,0x69,0x0, - 0x65,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61,0x0, - 0x77,0x0,0x79,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x65,0x1, - 0x5b,0x0,0x20,0x0,0x63,0x0,0x68,0x1,0x19,0x0,0x74,0x0,0x6e,0x0,0x79,0x0, - 0x20,0x0,0x68,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x77,0x0,0x61,0x0, - 0x6e,0x0,0x69,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x39,0x49,0x66,0x20,0x79,0x6f,0x75,0x27,0x72,0x65,0x20,0x61,0x20,0x43,0x4d,0x2c, - 0x20,0x65,0x6e,0x74,0x65,0x72,0x20,0x77,0x68,0x61,0x74,0x20,0x63,0x61,0x73,0x65, - 0x73,0x20,0x79,0x6f,0x75,0x20,0x61,0x72,0x65,0x20,0x77,0x69,0x6c,0x6c,0x69,0x6e, - 0x67,0x20,0x74,0x6f,0x20,0x68,0x6f,0x73,0x74,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x30,0x0,0x4e,0x0,0x61,0x0,0x74,0x0,0x79,0x0,0x63,0x0,0x68, - 0x0,0x6d,0x0,0x69,0x0,0x61,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x77,0x0,0x79, - 0x0,0x20,0x0,0x53,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x63,0x0,0x69, - 0x0,0x77,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x49,0x6e, - 0x73,0x74,0x61,0x6e,0x74,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x53,0x1,0x19,0x0,0x64, - 0x0,0x7a,0x0,0x69,0x0,0x61,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x6,0x4a,0x75,0x64,0x67,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0xe,0x1,0x41,0x0,0x61,0x0,0x77,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x3a, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4a,0x75,0x72,0x6f,0x72,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x44,0x0,0x50,0x0,0x72,0x0,0x7a, - 0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x69,0x0,0x6a,0x0,0x20,0x0,0x6d,0x0,0x75, - 0x0,0x7a,0x0,0x79,0x0,0x6b,0x1,0x19,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20, - 0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x72, - 0x0,0x7a,0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x77,0x0,0x75,0x0,0x3a,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x18,0x4b,0x69,0x6c,0x6c,0x20,0x4d,0x75,0x73, - 0x69,0x63,0x20,0x4f,0x6e,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x4a,0x1,0x19,0x0,0x7a, - 0x0,0x79,0x0,0x6b,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9, - 0x4c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x22,0x0,0x5a,0x0,0x61,0x0,0x70,0x0,0x69,0x0,0x73,0x0,0x75,0x0, - 0x6a,0x0,0x20,0x0,0x61,0x0,0x6b,0x0,0x63,0x0,0x6a,0x0,0x65,0x0,0x20,0x0, - 0x49,0x0,0x43,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xf,0x4c, - 0x6f,0x67,0x20,0x49,0x43,0x20,0x61,0x63,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x2a,0x0,0x44,0x0,0x7a,0x0,0x69,0x0,0x65, - 0x0,0x6e,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x20,0x0,0x69,0x0,0x64,0x0,0x7a, - 0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x64,0x0,0xf3,0x1,0x42, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x4c,0x6f,0x67,0x20, - 0x67,0x6f,0x65,0x73,0x20,0x64,0x6f,0x77,0x6e,0x77,0x61,0x72,0x64,0x73,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x24,0x0,0x44,0x1,0x42,0x0,0x75,0x0, - 0x67,0x0,0x6f,0x1,0x5b,0x1,0x7,0x0,0x20,0x0,0x64,0x0,0x7a,0x0,0x69,0x0, - 0x65,0x0,0x6e,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x61,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x4c,0x6f,0x67,0x20,0x6c,0x65,0x6e,0x67,0x74, - 0x68,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x26,0x0,0x4d,0x0,0x61, - 0x0,0x72,0x0,0x67,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x64, - 0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x61, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x4c,0x6f,0x67,0x20, - 0x6d,0x61,0x72,0x67,0x69,0x6e,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x28,0x0,0x4f,0x0,0x64,0x0,0x73,0x0,0x74,0x1,0x19,0x0,0x70,0x0,0x79,0x0, - 0x20,0x0,0x77,0x0,0x20,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x6e,0x0, - 0x6e,0x0,0x69,0x0,0x6b,0x0,0x75,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0xc,0x4c,0x6f,0x67,0x20,0x6e,0x65,0x77,0x6c,0x69,0x6e,0x65,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x30,0x0,0x46,0x0,0x6f,0x0,0x72,0x0, - 0x6d,0x0,0x61,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x74,0x0,0x20,0x0, - 0x77,0x0,0x20,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0, - 0x69,0x0,0x6b,0x0,0x75,0x0,0x3a,0x0,0xa,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x16,0x4c,0x6f,0x67,0x20,0x74,0x69,0x6d,0x65,0x73,0x74,0x61,0x6d,0x70, - 0x20,0x66,0x6f,0x72,0x6d,0x61,0x74,0x3a,0xa,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x22,0x0,0x44,0x0,0x61,0x0,0x74,0x0,0x79,0x0,0x20,0x0,0x77,0x0, - 0x20,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x69,0x0, - 0x6b,0x0,0x75,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x4c, - 0x6f,0x67,0x20,0x74,0x69,0x6d,0x65,0x73,0x74,0x61,0x6d,0x70,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x1,0x74,0x0,0x4d,0x0,0x69,0x0,0x6e,0x0,0x69,0x0, - 0x6d,0x0,0x61,0x0,0x6c,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6c,0x0, - 0x6f,0x1,0x5b,0x1,0x7,0x0,0x20,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x73,0x0, - 0x75,0x0,0x20,0x0,0x28,0x0,0x77,0x0,0x20,0x0,0x6d,0x0,0x69,0x0,0x6c,0x0, - 0x69,0x0,0x73,0x0,0x65,0x0,0x6b,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x61,0x0, - 0x63,0x0,0x68,0x0,0x29,0x0,0x2c,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x6b,0x0, - 0x74,0x0,0xf3,0x0,0x72,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x77,0x0,0x69,0x0, - 0x61,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1,0x5b,0x1,0x7,0x0,0x20,0x0, - 0x49,0x0,0x43,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x73,0x0,0x69,0x0,0x20,0x0, - 0x70,0x0,0x6f,0x0,0x7a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x1,0x7,0x0, - 0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6b,0x0,0x72,0x0,0x61,0x0, - 0x6e,0x0,0x69,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x6e,0x0, - 0x69,0x0,0x6d,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x65,0x0,0x6a,0x0, - 0x6e,0x0,0x61,0x0,0x20,0x0,0x7a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0, - 0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x77,0x0,0x79,0x1,0x5b,0x0,0x77,0x0, - 0x69,0x0,0x65,0x0,0x74,0x0,0x6c,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x2c,0x0, - 0x20,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x61,0x1,0x42,0x0,0x61,0x0,0x20,0x0, - 0x6e,0x0,0x69,0x0,0x63,0x0,0x7a,0x0,0x79,0x0,0x6d,0x0,0x20,0x0,0x27,0x0, - 0x6b,0x0,0x6f,0x0,0x6c,0x0,0x65,0x0,0x6a,0x0,0x6b,0x0,0x61,0x0,0x27,0x0, - 0x2e,0x0,0x20,0x0,0x55,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x20,0x0, - 0x6e,0x0,0x61,0x0,0x20,0x0,0x30,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0, - 0x79,0x0,0x20,0x0,0x77,0x0,0x79,0x1,0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0, - 0x79,0x1,0x7,0x0,0x20,0x0,0x74,0x1,0x5,0x0,0x20,0x0,0x66,0x0,0x75,0x0, - 0x6e,0x0,0x6b,0x0,0x63,0x0,0x6a,0x1,0x19,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xa6,0x4d,0x69,0x6e,0x69,0x6d,0x75,0x6d,0x20,0x61,0x6d,0x6f, - 0x75,0x6e,0x74,0x20,0x6f,0x66,0x20,0x74,0x69,0x6d,0x65,0x20,0x28,0x69,0x6e,0x20, - 0x6d,0x69,0x6c,0x69,0x73,0x65,0x63,0x6f,0x6e,0x64,0x73,0x29,0x20,0x61,0x6e,0x20, - 0x49,0x43,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x6d,0x75,0x73,0x74,0x20, - 0x73,0x74,0x61,0x79,0x20,0x6f,0x6e,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x20,0x62, - 0x65,0x66,0x6f,0x72,0x65,0x20,0x74,0x68,0x65,0x20,0x6e,0x65,0x78,0x74,0x20,0x49, - 0x43,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x69,0x73,0x20,0x73,0x68,0x6f, - 0x77,0x6e,0x2c,0x20,0x61,0x63,0x74,0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x61,0x20, - 0x27,0x71,0x75,0x65,0x75,0x65,0x27,0x2e,0x20,0x53,0x65,0x74,0x20,0x74,0x6f,0x20, - 0x30,0x20,0x74,0x6f,0x20,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x74,0x68,0x69, - 0x73,0x20,0x62,0x65,0x68,0x61,0x76,0x69,0x6f,0x72,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0xfa,0x0,0x4d,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0, - 0x61,0x0,0x6c,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6c,0x0,0x6f,0x1, - 0x5b,0x1,0x7,0x0,0x20,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x73,0x0,0x75,0x0, - 0x20,0x0,0x28,0x0,0x77,0x0,0x20,0x0,0x6d,0x0,0x69,0x0,0x6c,0x0,0x69,0x0, - 0x73,0x0,0x65,0x0,0x6b,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x61,0x0,0x63,0x0, - 0x68,0x0,0x29,0x0,0x2c,0x0,0x20,0x0,0x6b,0x0,0x74,0x0,0xf3,0x0,0x72,0x0, - 0x61,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x73,0x0,0x69,0x0,0x20,0x0,0x6d,0x0, - 0x69,0x0,0x6e,0x1,0x5,0x1,0x7,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x6e,0x0, - 0x69,0x0,0x6d,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x73,0x0,0x74,0x1,0x19,0x0, - 0x70,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x69,0x1, - 0x5b,0x0,0x6e,0x0,0x69,0x1,0x19,0x0,0x63,0x0,0x69,0x0,0x65,0x0,0x20,0x0, - 0x6b,0x0,0x6c,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x73,0x0,0x7a,0x0,0x75,0x0, - 0x20,0x0,0x45,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x77,0x0, - 0x79,0x1,0x5b,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x74,0x0,0x77,0x0,0x6f,0x0, - 0x6a,0x1,0x5,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0, - 0x6d,0x0,0x6f,0x1,0x5b,0x1,0x7,0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x71,0x4d,0x69,0x6e,0x69,0x6d,0x75,0x6d, - 0x20,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x20,0x6f,0x66,0x20,0x74,0x69,0x6d,0x65,0x20, - 0x28,0x69,0x6e,0x20,0x6d,0x69,0x6c,0x69,0x73,0x65,0x63,0x6f,0x6e,0x64,0x73,0x29, - 0x20,0x74,0x68,0x61,0x74,0x20,0x6d,0x75,0x73,0x74,0x20,0x70,0x61,0x73,0x73,0x20, - 0x62,0x65,0x66,0x6f,0x72,0x65,0x20,0x74,0x68,0x65,0x20,0x6e,0x65,0x78,0x74,0x20, - 0x45,0x6e,0x74,0x65,0x72,0x20,0x6b,0x65,0x79,0x20,0x70,0x72,0x65,0x73,0x73,0x20, - 0x77,0x69,0x6c,0x6c,0x20,0x73,0x65,0x6e,0x64,0x20,0x79,0x6f,0x75,0x72,0x20,0x49, - 0x43,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0xe,0x0,0x4d,0x0,0x75,0x0,0x7a,0x0,0x79,0x0,0x6b,0x0,0x61, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4d,0x75,0x73,0x69, - 0x63,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x2a,0x0,0x45,0x0,0x66, - 0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x79,0x0,0x20,0x0,0x4e,0x0,0x65,0x0,0x74, - 0x0,0x77,0x0,0x6f,0x0,0x72,0x0,0x6b,0x0,0x20,0x0,0x46,0x0,0x72,0x0,0x61, - 0x0,0x6d,0x0,0x65,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x16, - 0x4e,0x65,0x74,0x77,0x6f,0x72,0x6b,0x20,0x46,0x72,0x61,0x6d,0x65,0x20,0x45,0x66, - 0x66,0x65,0x63,0x74,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x12, - 0x0,0x50,0x0,0x69,0x0,0x6b,0x0,0x73,0x0,0x65,0x0,0x6c,0x0,0x6f,0x0,0x77, - 0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x50,0x69,0x78,0x65, - 0x6c,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x80,0x0,0x5a,0x0,0x61,0x0, - 0x67,0x0,0x72,0x0,0x61,0x0,0x6a,0x0,0x20,0x0,0x64,0x1,0x7a,0x0,0x77,0x0, - 0x69,0x1,0x19,0x0,0x6b,0x0,0x20,0x0,0x62,0x0,0x6c,0x0,0x69,0x0,0x70,0x0, - 0x61,0x0,0x20,0x0,0x22,0x0,0x72,0x0,0x61,0x0,0x7a,0x0,0x20,0x0,0x6e,0x0, - 0x61,0x0,0x20,0x0,0x58,0x0,0x20,0x0,0x73,0x0,0x79,0x0,0x6d,0x0,0x62,0x0, - 0x6f,0x0,0x6c,0x0,0x69,0x0,0x22,0x0,0x2c,0x0,0x20,0x0,0x67,0x0,0x64,0x0, - 0x7a,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x58,0x0,0x20,0x0,0x74,0x0,0x6f,0x0, - 0x20,0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x70,0x0,0x6f,0x0,0x20,0x0,0x62,0x0, - 0x6c,0x0,0x69,0x0,0x70,0x0,0xf3,0x0,0x77,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x47,0x50,0x6c,0x61,0x79,0x20,0x61,0x20,0x62,0x6c,0x69,0x70, - 0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x22,0x6f,0x6e,0x63,0x65,0x20,0x70,0x65,0x72, - 0x20,0x65,0x76,0x65,0x72,0x79,0x20,0x58,0x20,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73, - 0x22,0x2c,0x20,0x77,0x68,0x65,0x72,0x65,0x20,0x58,0x20,0x69,0x73,0x20,0x74,0x68, - 0x65,0x20,0x62,0x6c,0x69,0x70,0x20,0x72,0x61,0x74,0x65,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x44,0x0,0x6f,0x0,0x73,0x0,0x79,0x1,0x7, - 0x0,0x20,0x0,0x6f,0x0,0x63,0x0,0x7a,0x0,0x79,0x0,0x77,0x0,0x69,0x0,0x73, - 0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x18, - 0x50,0x72,0x65,0x74,0x74,0x79,0x20,0x73,0x65,0x6c,0x66,0x2d,0x65,0x78,0x70,0x6c, - 0x61,0x6e,0x61,0x74,0x6f,0x72,0x79,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x18,0x0,0x50,0x0,0x72,0x0,0x6f,0x0,0x6b,0x0,0x75,0x0,0x72,0x0,0x61, - 0x0,0x74,0x0,0x75,0x0,0x72,0x0,0x61,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xc,0x50,0x72,0x6f,0x73,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x90,0x0,0x4f,0x0,0x64,0x1,0x5b, - 0x0,0x77,0x0,0x69,0x0,0x65,0x1,0x7c,0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x74, - 0x0,0x79,0x0,0x77,0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x75,0x0,0x61,0x0,0x6b, - 0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x6e,0x0,0x69,0x0,0x6a,0x0,0x20, - 0x0,0x77,0x0,0x73,0x0,0x7a,0x0,0x79,0x0,0x73,0x0,0x74,0x0,0x6b,0x0,0x69, - 0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x6d,0x0,0x65,0x0,0x6e, - 0x0,0x74,0x0,0x79,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72, - 0x0,0x66,0x0,0x65,0x0,0x6a,0x0,0x73,0x0,0x75,0x0,0x2c,0x0,0x20,0x0,0x61, - 0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x70,0x0,0x61,0x0,0x73, - 0x0,0x6f,0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x3d,0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x20,0x74,0x68,0x65,0x20, - 0x74,0x68,0x65,0x6d,0x65,0x20,0x61,0x6e,0x64,0x20,0x75,0x70,0x64,0x61,0x74,0x65, - 0x20,0x61,0x6c,0x6c,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x75,0x69,0x20,0x65, - 0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x74,0x6f,0x20,0x6d,0x61,0x74,0x63,0x68, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1a,0x0,0x4f,0x0,0x64,0x1, - 0x5b,0x0,0x77,0x0,0x69,0x0,0x65,0x1,0x7c,0x0,0x20,0x0,0x4d,0x0,0x6f,0x0, - 0x74,0x0,0x79,0x0,0x77,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x52, - 0x65,0x6c,0x6f,0x61,0x64,0x20,0x54,0x68,0x65,0x6d,0x65,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x8,0x0,0x55,0x0,0x73,0x0,0x75,0x1,0x44,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x52,0x65,0x6d,0x6f,0x76,0x65,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x2e,0x0,0x45,0x0,0x66,0x0,0x65,0x0,0x6b,0x0, - 0x74,0x0,0x79,0x0,0x20,0x0,0x64,0x1,0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0, - 0x6b,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x20,0x0,0x28,0x0,0x53,0x0,0x46,0x0, - 0x58,0x0,0x29,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x53, - 0x46,0x58,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x53,0x0, - 0x6b,0x0,0x61,0x0,0x6c,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x69,0x0, - 0x65,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x63,0x61, - 0x6c,0x69,0x6e,0x67,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x26,0x0, - 0x57,0x0,0x79,0x0,0x62,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x7a,0x0,0x20,0x0, - 0x66,0x0,0x6f,0x0,0x6c,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x62,0x0, - 0x61,0x0,0x73,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x14,0x53, - 0x65,0x6c,0x65,0x63,0x74,0x20,0x61,0x20,0x62,0x61,0x73,0x65,0x20,0x66,0x6f,0x6c, - 0x64,0x65,0x72,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x40,0x0,0x57,0x0, - 0x79,0x0,0x73,0x0,0x79,0x1,0x42,0x0,0x61,0x0,0x20,0x0,0x77,0x0,0x73,0x0, - 0x74,0x0,0x72,0x0,0x7a,0x1,0x5,0x1,0x5b,0x0,0x6e,0x0,0x69,0x1,0x19,0x0, - 0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6b,0x0,0x72,0x0,0x61,0x0, - 0x6e,0x0,0x75,0x0,0x2c,0x0,0x20,0x0,0x62,0x1,0x42,0x0,0x79,0x1,0x5b,0x0, - 0x6e,0x0,0x69,0x1,0x19,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x69,0x0, - 0x20,0x0,0x64,0x1,0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0,0x6b,0x0,0x69,0x0, - 0x2c,0x0,0x20,0x0,0x6a,0x0,0x61,0x0,0x6b,0x0,0x20,0x0,0x7a,0x0,0x64,0x0, - 0x65,0x0,0x66,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x6f,0x0,0x77,0x0,0x61,0x0, - 0x6e,0x0,0x6f,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x70,0x0,0x6c,0x0,0x69,0x0, - 0x6b,0x0,0x75,0x0,0x20,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x2e,0x0, - 0x69,0x0,0x6e,0x0,0x69,0x0,0x2c,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0, - 0x65,0x0,0x7a,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x65,0x1,0x7,0x0,0x2e,0x0, - 0x20,0x0,0x44,0x0,0x7a,0x0,0x69,0x0,0x61,0x1,0x42,0x0,0x61,0x0,0x20,0x0, - 0x74,0x0,0x79,0x0,0x6c,0x0,0x6b,0x0,0x6f,0x0,0x20,0x0,0x77,0x0,0x20,0x0, - 0x70,0x0,0x72,0x0,0x7a,0x0,0x79,0x0,0x70,0x0,0x61,0x0,0x64,0x0,0x6b,0x0, - 0x75,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0, - 0xf3,0x0,0x77,0x0,0x2c,0x0,0x20,0x0,0x6b,0x0,0x74,0x0,0xf3,0x0,0x72,0x0, - 0x65,0x0,0x20,0x0,0x6f,0x0,0x62,0x0,0x73,0x1,0x42,0x0,0x75,0x0,0x67,0x0, - 0x75,0x0,0x6a,0x1,0x5,0x0,0x20,0x0,0x74,0x1,0x19,0x0,0x20,0x0,0x66,0x0, - 0x75,0x0,0x6e,0x0,0x6b,0x0,0x63,0x0,0x6a,0x1,0x19,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x8c,0x53,0x65,0x6e,0x64,0x20,0x73,0x63,0x72,0x65, - 0x65,0x6e,0x2d,0x73,0x68,0x61,0x6b,0x69,0x6e,0x67,0x2c,0x20,0x66,0x6c,0x61,0x73, - 0x68,0x65,0x73,0x20,0x61,0x6e,0x64,0x20,0x73,0x6f,0x75,0x6e,0x64,0x73,0x20,0x61, - 0x73,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x65, - 0x20,0x63,0x68,0x61,0x72,0x2e,0x69,0x6e,0x69,0x20,0x6f,0x76,0x65,0x72,0x20,0x74, - 0x68,0x65,0x20,0x6e,0x65,0x74,0x77,0x6f,0x72,0x6b,0x2e,0x20,0x4f,0x6e,0x6c,0x79, - 0x20,0x77,0x6f,0x72,0x6b,0x73,0x20,0x66,0x6f,0x72,0x20,0x73,0x65,0x72,0x76,0x65, - 0x72,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20, - 0x74,0x68,0x69,0x73,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x69, - 0x74,0x79,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x88,0x0,0x55,0x0, - 0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x27,0x0, - 0x70,0x0,0x6f,0x0,0x64,0x0,0x6d,0x0,0x6f,0x0,0x74,0x0,0x79,0x0,0x77,0x0, - 0x27,0x0,0x2c,0x0,0x20,0x0,0x6b,0x0,0x74,0x0,0xf3,0x0,0x72,0x0,0x79,0x0, - 0x20,0x0,0x62,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x20,0x0, - 0x64,0x0,0x6f,0x0,0x64,0x0,0x61,0x0,0x74,0x0,0x6b,0x0,0x69,0x0,0x65,0x0, - 0x6d,0x0,0x20,0x0,0x64,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x6f,0x0,0x62,0x0, - 0x65,0x0,0x63,0x0,0x6e,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0, - 0x6f,0x0,0x74,0x0,0x79,0x0,0x77,0x0,0x75,0x0,0x20,0x0,0x69,0x0,0x20,0x0, - 0x62,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x7a,0x0, - 0x61,0x0,0x73,0x0,0x74,0x1,0x19,0x0,0x70,0x0,0x79,0x0,0x77,0x0,0x61,0x1, - 0x7,0x0,0x20,0x0,0x77,0x0,0x73,0x0,0x7a,0x0,0x79,0x0,0x73,0x0,0x74,0x0, - 0x6b,0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x6f,0x0, - 0x20,0x0,0x6d,0x0,0x6f,0x1,0x7c,0x0,0x65,0x0,0x2e,0x0,0x20,0x0,0x55,0x0, - 0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0, - 0x27,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x27,0x0, - 0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x73,0x0,0x65,0x0, - 0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x63,0x0, - 0x79,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x61,0x1,0x42,0x0,0x20,0x0,0x7a,0x0, - 0x61,0x0,0x20,0x0,0x63,0x0,0x69,0x0,0x65,0x0,0x62,0x0,0x69,0x0,0x65,0x0, - 0x2e,0x0,0x20,0x0,0x55,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x20,0x0, - 0x6e,0x0,0x61,0x0,0x20,0x0,0x27,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x61,0x0, - 0x75,0x0,0x6c,0x0,0x74,0x0,0x27,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0, - 0x79,0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0, - 0x69,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x61,0x1,0x42,0x0,0x20,0x0,0x73,0x0, - 0x69,0x1,0x19,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb5,0x53, - 0x65,0x74,0x73,0x20,0x61,0x20,0x27,0x73,0x75,0x62,0x74,0x68,0x65,0x6d,0x65,0x27, - 0x2c,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x77,0x69,0x6c,0x6c,0x20,0x73,0x74,0x61, - 0x63,0x6b,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x70,0x20,0x6f,0x66,0x20,0x74,0x68,0x65, - 0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x74,0x68,0x65,0x6d,0x65,0x20,0x61, - 0x6e,0x64,0x20,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x20,0x61,0x6e,0x79,0x74,0x68, - 0x69,0x6e,0x67,0x20,0x69,0x74,0x20,0x63,0x61,0x6e,0x2e,0x4b,0x65,0x65,0x70,0x20, - 0x69,0x74,0x20,0x61,0x74,0x20,0x27,0x73,0x65,0x72,0x76,0x65,0x72,0x27,0x20,0x74, - 0x6f,0x20,0x6c,0x65,0x74,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72, - 0x20,0x64,0x65,0x63,0x69,0x64,0x65,0x2e,0x20,0x4b,0x65,0x65,0x70,0x20,0x69,0x74, - 0x20,0x61,0x74,0x20,0x27,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x27,0x20,0x74,0x6f, - 0x20,0x6b,0x65,0x65,0x70,0x20,0x69,0x74,0x20,0x75,0x6e,0x63,0x68,0x61,0x6e,0x67, - 0x69,0x6e,0x67,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xe8,0x0,0x55, - 0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x64, - 0x0,0x6f,0x0,0x6d,0x0,0x79,0x1,0x5b,0x0,0x6c,0x0,0x6e,0x1,0x5,0x0,0x20, - 0x0,0x67,0x1,0x42,0x0,0x6f,0x1,0x5b,0x0,0x6e,0x0,0x6f,0x1,0x5b,0x1,0x7, - 0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0xf3,0x0,0x77, - 0x0,0x20,0x0,0x64,0x1,0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0,0x6b,0x0,0x6f, - 0x0,0x77,0x0,0x79,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x28,0x0,0x53,0x0,0x46, - 0x0,0x58,0x0,0x29,0x0,0x2e,0x0,0x20,0x0,0x53,0x0,0x70,0x0,0x72,0x0,0x7a, - 0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x77,0x0,0x79,0x0,0x2c,0x0,0x20,0x0,0x6a, - 0x0,0x61,0x0,0x6b,0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x73,0x0,0x61,0x0,0x6d, - 0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x79, - 0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x65,0x0,0x63,0x0,0x6a,0x0,0x61,0x0,0x6c, - 0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x73,0x1,0x5,0x0,0x20,0x0,0x7a,0x0,0x61, - 0x0,0x6c,0x0,0x69,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x6e,0x0,0x65,0x0,0x20, - 0x0,0x6a,0x0,0x61,0x0,0x6b,0x0,0x6f,0x0,0x20,0x0,0x27,0x0,0x53,0x0,0x46, - 0x0,0x58,0x0,0x27,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x55, - 0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x53,0x46,0x58,0x27,0x73,0x20,0x64, - 0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x2e,0x20,0x49, - 0x6e,0x74,0x65,0x72,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0x61,0x6e,0x64, - 0x20,0x61,0x63,0x74,0x75,0x61,0x6c,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66, - 0x66,0x65,0x63,0x74,0x73,0x20,0x63,0x6f,0x75,0x6e,0x74,0x20,0x61,0x73,0x20,0x27, - 0x53,0x46,0x58,0x27,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x6a,0x0, - 0x55,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x20,0x0, - 0x75,0x0,0x72,0x0,0x7a,0x1,0x5,0x0,0x64,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0, - 0x69,0x0,0x65,0x0,0x20,0x0,0x64,0x1,0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0, - 0x6b,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x6c,0x0,0x61,0x0, - 0x20,0x0,0x77,0x0,0x73,0x0,0x7a,0x0,0x79,0x0,0x73,0x0,0x74,0x0,0x6b,0x0, - 0x69,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x64,0x1,0x7a,0x0,0x77,0x0,0x69,0x1, - 0x19,0x0,0x6b,0x0,0xf3,0x0,0x77,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x25,0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x61,0x75,0x64,0x69, - 0x6f,0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x20,0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c, - 0x20,0x73,0x6f,0x75,0x6e,0x64,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0xa4,0x0,0x55,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x61, - 0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x79,0x1,0x5b,0x0,0x6c,0x0,0x6e, - 0x0,0x79,0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0xf3,0x0,0x62, - 0x0,0x20,0x0,0x73,0x0,0x6b,0x0,0x61,0x0,0x6c,0x0,0x6f,0x0,0x77,0x0,0x61, - 0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0,0x65,0x1,0x7c, - 0x0,0x65,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20, - 0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x6a,0x0,0x75,0x1,0x7c, - 0x0,0x20,0x0,0x6f,0x0,0x6e,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x74,0x0,0x61, - 0x0,0x77,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x70,0x0,0x72, - 0x0,0x7a,0x0,0x65,0x0,0x7a,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x74, - 0x0,0x61,0x1,0x7,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x64, - 0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74, - 0x20,0x73,0x63,0x61,0x6c,0x69,0x6e,0x67,0x20,0x6d,0x65,0x74,0x68,0x6f,0x64,0x2c, - 0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x72,0x65,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74, - 0x20,0x6f,0x6e,0x65,0x20,0x61,0x6c,0x72,0x65,0x61,0x64,0x79,0x20,0x64,0x65,0x66, - 0x69,0x6e,0x65,0x64,0x20,0x73,0x70,0x65,0x63,0x69,0x66,0x69,0x63,0x61,0x6c,0x6c, - 0x79,0x20,0x66,0x6f,0x72,0x20,0x74,0x68,0x65,0x20,0x63,0x68,0x61,0x72,0x61,0x63, - 0x74,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x56,0x0,0x55, - 0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x6f, - 0x0,0x70,0x0,0xf3,0x1,0x7a,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x69, - 0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x6d,0x0,0x69,0x1,0x19,0x0,0x64, - 0x0,0x7a,0x0,0x79,0x0,0x20,0x0,0x67,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x69, - 0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x62,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0xf3, - 0x0,0x77,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2f,0x53,0x65, - 0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x6c,0x61,0x79,0x20,0x62,0x65,0x74, - 0x77,0x65,0x65,0x6e,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x74,0x68,0x65, - 0x20,0x62,0x6c,0x69,0x70,0x20,0x73,0x6f,0x75,0x6e,0x64,0x73,0x2e,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x74,0x0,0x55,0x0,0x73,0x0,0x74,0x0,0x61,0x0, - 0x77,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x6a,0x1,0x19,0x0,0x7a,0x0,0x79,0x0, - 0x6b,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0,0x65,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0, - 0x20,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x68,0x0,0x63,0x0, - 0x65,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x75,0x1,0x7c,0x0,0x79,0x0,0x77,0x0, - 0x61,0x1,0x7,0x0,0x20,0x0,0x6a,0x1,0x19,0x0,0x7a,0x0,0x79,0x0,0x6b,0x0, - 0x61,0x0,0x20,0x0,0x73,0x0,0x79,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6d,0x0, - 0x6f,0x0,0x77,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x40,0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x6c,0x61, - 0x6e,0x67,0x75,0x61,0x67,0x65,0x20,0x69,0x66,0x20,0x79,0x6f,0x75,0x20,0x64,0x6f, - 0x6e,0x27,0x74,0x20,0x77,0x61,0x6e,0x74,0x20,0x74,0x6f,0x20,0x75,0x73,0x65,0x20, - 0x79,0x6f,0x75,0x72,0x20,0x73,0x79,0x73,0x74,0x65,0x6d,0x20,0x6c,0x61,0x6e,0x67, - 0x75,0x61,0x67,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x42,0x0, - 0x55,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x20,0x0, - 0x64,0x0,0x6f,0x0,0x6d,0x0,0x79,0x1,0x5b,0x0,0x6c,0x0,0x6e,0x1,0x5,0x0, - 0x20,0x0,0x67,0x1,0x42,0x0,0x6f,0x1,0x5b,0x0,0x6e,0x0,0x6f,0x1,0x5b,0x1, - 0x7,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x7a,0x0,0x79,0x0,0x6b,0x0,0x69,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x20,0x53,0x65,0x74,0x73,0x20, - 0x74,0x68,0x65,0x20,0x6d,0x75,0x73,0x69,0x63,0x27,0x73,0x20,0x64,0x65,0x66,0x61, - 0x75,0x6c,0x74,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x1,0x88,0x0,0x55,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0, - 0x69,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x74,0x0,0x79,0x0,0x77,0x0, - 0x20,0x0,0x75,0x1,0x7c,0x0,0x79,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x79,0x0, - 0x20,0x0,0x77,0x0,0x20,0x0,0x67,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x2e,0x0, - 0x20,0x0,0x4a,0x0,0x65,0x1,0x7c,0x0,0x65,0x0,0x6c,0x0,0x69,0x0,0x20,0x0, - 0x6e,0x0,0x6f,0x0,0x77,0x0,0x79,0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x74,0x0, - 0x79,0x0,0x77,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0,0x69,0x0,0x65,0x0,0x6e,0x0, - 0x69,0x0,0x61,0x0,0x20,0x0,0x77,0x0,0x79,0x0,0x67,0x0,0x6c,0x1,0x5,0x0, - 0x64,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x63,0x0,0x7a,0x0,0x65,0x0,0x6b,0x0, - 0x61,0x0,0x6c,0x0,0x6e,0x0,0x69,0x0,0x2c,0x0,0x20,0x0,0x62,0x1,0x19,0x0, - 0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x6d,0x0, - 0x75,0x0,0x73,0x0,0x69,0x0,0x61,0x1,0x42,0x0,0x28,0x0,0x61,0x0,0x29,0x0, - 0x20,0x0,0x6a,0x1,0x5,0x0,0x20,0x0,0x72,0x0,0xf3,0x0,0x77,0x0,0x6e,0x0, - 0x69,0x0,0x65,0x1,0x7c,0x0,0x20,0x0,0x6f,0x0,0x64,0x1,0x5b,0x0,0x77,0x0, - 0x69,0x0,0x65,0x1,0x7c,0x0,0x79,0x1,0x7,0x0,0x2c,0x0,0x20,0x0,0x61,0x0, - 0x62,0x0,0x79,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0,0x69,0x0,0x61,0x0,0x6e,0x0, - 0x79,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x63,0x0,0x7a,0x1,0x19,0x1,0x42,0x0, - 0x79,0x0,0x20,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x61,0x1,0x42,0x0,0x61,0x1, - 0x7,0x0,0x2c,0x0,0x20,0x0,0x6e,0x0,0x70,0x0,0x2e,0x0,0x20,0x0,0x70,0x0, - 0x6f,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x7a,0x0,0x20,0x0,0x64,0x0, - 0x6f,0x1,0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0, - 0x65,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0, - 0x77,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x77,0x0, - 0x79,0x0,0x6a,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x7a,0x0, - 0x20,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0xbb,0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20, - 0x74,0x68,0x65,0x6d,0x65,0x20,0x75,0x73,0x65,0x64,0x20,0x69,0x6e,0x2d,0x67,0x61, - 0x6d,0x65,0x2e,0x20,0x49,0x66,0x20,0x74,0x68,0x65,0x20,0x6e,0x65,0x77,0x20,0x74, - 0x68,0x65,0x6d,0x65,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x20,0x74,0x68,0x65, - 0x20,0x6c,0x6f,0x62,0x62,0x79,0x27,0x73,0x20,0x6c,0x6f,0x6f,0x6b,0x20,0x61,0x73, - 0x20,0x77,0x65,0x6c,0x6c,0x2c,0x20,0x79,0x6f,0x75,0x27,0x6c,0x6c,0x20,0x6e,0x65, - 0x65,0x64,0x20,0x74,0x6f,0x20,0x72,0x65,0x6c,0x6f,0x61,0x64,0x20,0x74,0x68,0x65, - 0x20,0x6c,0x6f,0x62,0x62,0x79,0x20,0x66,0x6f,0x72,0x20,0x74,0x68,0x65,0x20,0x63, - 0x68,0x61,0x6e,0x67,0x65,0x73,0x20,0x74,0x6f,0x20,0x74,0x61,0x6b,0x65,0x20,0x65, - 0x66,0x66,0x65,0x63,0x74,0x2c,0x20,0x73,0x75,0x63,0x68,0x20,0x61,0x73,0x20,0x62, - 0x79,0x20,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x20,0x61,0x20,0x73,0x65,0x72,0x76, - 0x65,0x72,0x20,0x61,0x6e,0x64,0x20,0x6c,0x65,0x61,0x76,0x69,0x6e,0x67,0x20,0x69, - 0x74,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x6c,0x0,0x55,0x0,0x73, - 0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x67,0x1,0x42, - 0x0,0x6f,0x1,0x5b,0x0,0x6e,0x0,0x6f,0x1,0x5b,0x1,0x7,0x0,0x20,0x0,0x62, - 0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0xf3,0x0,0x77,0x0,0x2c,0x0,0x20,0x0,0x65, - 0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0xf3,0x0,0x77,0x0,0x20,0x0,0x64, - 0x1,0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0,0x6b,0x0,0x6f,0x0,0x77,0x0,0x79, - 0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x6d,0x0,0xf3,0x0,0x77,0x0,0x69,0x0,0x65, - 0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x38,0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x76,0x6f,0x6c,0x75,0x6d, - 0x65,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x62,0x6c,0x69,0x70,0x73,0x2c,0x20, - 0x74,0x68,0x65,0x20,0x74,0x61,0x6c,0x6b,0x69,0x6e,0x67,0x20,0x73,0x6f,0x75,0x6e, - 0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x14,0x0,0x55,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69, - 0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x8,0x53,0x65,0x74,0x74,0x69,0x6e,0x67,0x73,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0xe,0x0,0x47,0x1,0x42,0x0,0x61,0x0,0x64,0x0,0x6b,0x0,0x69, - 0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x53,0x6d,0x6f,0x6f, - 0x74,0x68,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x14,0x0,0x53,0x0,0x74, - 0x0,0x65,0x0,0x6e,0x0,0x6f,0x0,0x67,0x0,0x72,0x0,0x61,0x0,0x66,0x0,0x3a, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x53,0x74,0x65,0x6e,0x6f,0x67, - 0x72,0x61,0x70,0x68,0x65,0x72,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x12,0x0,0x4e,0x0,0x61,0x0,0x6b,0x0,0x6c,0x0,0x65,0x0,0x6a,0x0,0x6b,0x0, - 0x69,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x53,0x74,0x69, - 0x63,0x6b,0x65,0x72,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1c, - 0x0,0x4c,0x0,0x65,0x0,0x70,0x0,0x6b,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x45, - 0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x79,0x0,0x3a,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0xf,0x53,0x74,0x69,0x63,0x6b,0x79,0x20,0x45,0x66,0x66, - 0x65,0x63,0x74,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x2c,0x0, - 0x4c,0x0,0x65,0x0,0x70,0x0,0x6b,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x50,0x0, - 0x72,0x0,0x7a,0x0,0x65,0x0,0x64,0x0,0x2d,0x0,0x61,0x0,0x6e,0x0,0x69,0x0, - 0x6d,0x0,0x61,0x0,0x63,0x0,0x6a,0x0,0x65,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x10,0x53,0x74,0x69,0x63,0x6b,0x79,0x20,0x50,0x72,0x65,0x61, - 0x6e,0x69,0x6d,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1e,0x0, - 0x4c,0x0,0x65,0x0,0x70,0x0,0x6b,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x44,0x1, - 0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0,0x6b,0x0,0x69,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x53,0x74,0x69,0x63,0x6b,0x79,0x20,0x53,0x6f, - 0x75,0x6e,0x64,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x36,0x0, - 0x5a,0x0,0x61,0x0,0x74,0x0,0x72,0x0,0x7a,0x0,0x79,0x0,0x6d,0x0,0x61,0x0, - 0x6a,0x0,0x20,0x0,0x4d,0x0,0x75,0x0,0x7a,0x0,0x79,0x0,0x6b,0x1,0x19,0x0, - 0x20,0x0,0x4b,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x72,0x0, - 0x69,0x1,0x5,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17,0x53, - 0x74,0x6f,0x70,0x20,0x4d,0x75,0x73,0x69,0x63,0x20,0x77,0x2f,0x20,0x43,0x61,0x74, - 0x65,0x67,0x6f,0x72,0x79,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x1a, - 0x0,0x5a,0x0,0x61,0x0,0x74,0x0,0x72,0x0,0x7a,0x0,0x79,0x0,0x6d,0x0,0x61, - 0x0,0x6a,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x7a,0x0,0x79,0x0,0x6b,0x1,0x19, - 0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x73, - 0x0,0x20,0x0,0x64,0x0,0x77,0x0,0x75,0x0,0x6b,0x0,0x72,0x0,0x6f,0x0,0x74, - 0x0,0x6e,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x6b,0x0,0x6c,0x0,0x69, - 0x0,0x6b,0x0,0x6e,0x0,0x69,0x1,0x19,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20, - 0x0,0x77,0x0,0x20,0x0,0x6b,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x67,0x0,0x6f, - 0x0,0x72,0x0,0x69,0x1,0x19,0x0,0x2e,0x0,0x20,0x0,0x4a,0x0,0x65,0x1,0x5b, - 0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20, - 0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x77,0x0,0x79,0x1,0x42,0x1,0x5,0x0,0x63, - 0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x75,0x1,0x7c, - 0x0,0x79,0x0,0x6a,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x75,0x0,0x20, - 0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77, - 0x0,0x79,0x0,0x6d,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x79,0x0,0x63, - 0x0,0x69,0x0,0x73,0x0,0x6b,0x0,0x69,0x0,0x65,0x0,0x6d,0x0,0x2c,0x0,0x20, - 0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x74,0x0,0x72, - 0x0,0x7a,0x0,0x79,0x0,0x6d,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x6d,0x0,0x75, - 0x0,0x7a,0x0,0x79,0x0,0x6b,0x1,0x19,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x70,0x53,0x74,0x6f,0x70,0x20,0x6d,0x75,0x73,0x69,0x63,0x20,0x77, - 0x68,0x65,0x6e,0x20,0x64,0x6f,0x75,0x62,0x6c,0x65,0x2d,0x63,0x6c,0x69,0x63,0x6b, - 0x69,0x6e,0x67,0x20,0x61,0x20,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0x2e,0x20, - 0x49,0x66,0x20,0x74,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x64,0x69,0x73,0x61,0x62, - 0x6c,0x65,0x64,0x2c,0x20,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x72,0x69,0x67, - 0x68,0x74,0x2d,0x63,0x6c,0x69,0x63,0x6b,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74, - 0x20,0x6d,0x65,0x6e,0x75,0x20,0x74,0x6f,0x20,0x73,0x74,0x6f,0x70,0x20,0x6d,0x75, - 0x73,0x69,0x63,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x50, - 0x0,0x6f,0x0,0x64,0x0,0x6d,0x0,0x6f,0x0,0x74,0x0,0x79,0x0,0x77,0x0,0x3a, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x53,0x75,0x62,0x74,0x68,0x65, - 0x6d,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x2e,0x0,0x43,0x0, - 0x7a,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x50,0x0,0x6f,0x0,0x7a,0x0,0x6f,0x0, - 0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x54,0x0, - 0x65,0x0,0x6b,0x0,0x73,0x0,0x74,0x0,0x75,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xf,0x54,0x65,0x78,0x74,0x20,0x53,0x74,0x61,0x79,0x20,0x54, - 0x69,0x6d,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x2a,0x0,0x43, - 0x0,0x7a,0x0,0x6f,0x1,0x42,0x0,0x67,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6b, - 0x0,0x73,0x0,0x74,0x0,0x75,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xb,0x54,0x65,0x78,0x74,0x20,0x63,0x72,0x61,0x77,0x6c,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x1,0x12,0x0,0x49,0x0,0x6c,0x0,0x6f,0x1,0x5b,0x1, - 0x7,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0, - 0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0,0x61,0x0, - 0x6b,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0, - 0x6e,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x20,0x0, - 0x62,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x70,0x0, - 0x6f,0x0,0x6b,0x0,0x61,0x0,0x7a,0x0,0x79,0x0,0x77,0x0,0x61,0x1,0x42,0x0, - 0x20,0x0,0x7a,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x75,0x0, - 0x73,0x0,0x75,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x74,0x0, - 0x61,0x0,0x72,0x0,0x73,0x0,0x7a,0x0,0x65,0x0,0x20,0x0,0x77,0x0,0x69,0x0, - 0x61,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0, - 0x2e,0x0,0x20,0x0,0x57,0x0,0x61,0x0,0x72,0x0,0x74,0x0,0x6f,0x1,0x5b,0x1, - 0x7,0x0,0x20,0x0,0x30,0x0,0x20,0x0,0x6c,0x0,0x75,0x0,0x62,0x0,0x20,0x0, - 0x6e,0x0,0x69,0x1,0x7c,0x0,0x65,0x0,0x6a,0x0,0x2c,0x0,0x20,0x0,0x6c,0x0, - 0x69,0x0,0x63,0x0,0x7a,0x0,0x79,0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0, - 0x20,0x0,0x6a,0x0,0x61,0x0,0x6b,0x0,0x6f,0x0,0x20,0x0,0x27,0x0,0x6e,0x0, - 0x69,0x0,0x65,0x0,0x73,0x0,0x6b,0x0,0x6f,0x1,0x44,0x0,0x63,0x0,0x7a,0x0, - 0x6f,0x0,0x6e,0x0,0x65,0x0,0x27,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x85,0x54,0x68,0x65,0x20,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x20,0x6f,0x66, - 0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x6c,0x69,0x6e,0x65,0x73,0x20,0x74, - 0x68,0x65,0x20,0x49,0x43,0x20,0x63,0x68,0x61,0x74,0x6c,0x6f,0x67,0x20,0x77,0x69, - 0x6c,0x6c,0x20,0x6b,0x65,0x65,0x70,0x20,0x62,0x65,0x66,0x6f,0x72,0x65,0x20,0x64, - 0x65,0x6c,0x65,0x74,0x69,0x6e,0x67,0x20,0x6f,0x6c,0x64,0x65,0x72,0x20,0x6d,0x65, - 0x73,0x73,0x61,0x67,0x65,0x20,0x6c,0x69,0x6e,0x65,0x73,0x2e,0x20,0x41,0x20,0x76, - 0x61,0x6c,0x75,0x65,0x20,0x6f,0x66,0x20,0x30,0x20,0x6f,0x72,0x20,0x62,0x65,0x6c, - 0x6f,0x77,0x20,0x63,0x6f,0x75,0x6e,0x74,0x73,0x20,0x61,0x73,0x20,0x27,0x69,0x6e, - 0x66,0x69,0x6e,0x69,0x74,0x65,0x27,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x90,0x0,0x44,0x0,0x79,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x73, - 0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x70,0x0,0x69,0x0,0x6b,0x0,0x73,0x0,0x65, - 0x0,0x6c,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x6d, - 0x0,0x69,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x79,0x0,0x20,0x0,0x6b,0x0,0x61, - 0x1,0x7c,0x0,0x64,0x0,0x79,0x0,0x6d,0x0,0x20,0x0,0x77,0x0,0x70,0x0,0x69, - 0x0,0x73,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x64,0x0,0x7a, - 0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x75,0x0,0x20, - 0x0,0x49,0x0,0x43,0x0,0x2e,0x0,0x20,0x0,0x44,0x0,0x6f,0x0,0x6d,0x0,0x79, - 0x1,0x5b,0x0,0x6c,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x3a,0x0,0x20,0x0,0x30, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x44,0x54,0x68,0x65,0x20, - 0x64,0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x20,0x69,0x6e,0x20,0x70,0x69,0x78,0x65, - 0x6c,0x73,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e,0x20,0x65,0x61,0x63,0x68,0x20, - 0x65,0x6e,0x74,0x72,0x79,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x49,0x43,0x20, - 0x6c,0x6f,0x67,0x2e,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x20,0x30,0x2e, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x4d,0x0,0x6f,0x0,0x74, - 0x0,0x79,0x0,0x77,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6, - 0x54,0x68,0x65,0x6d,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x56, - 0x0,0x54,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x77, - 0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x77, - 0x0,0x73,0x0,0x70,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x6b, - 0x0,0x6f,0x0,0x6d,0x0,0x75,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x61,0x0,0x74, - 0x0,0xf3,0x0,0x77,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72, - 0x0,0x61,0x0,0x77,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x29, - 0x54,0x68,0x69,0x73,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x64,0x6f,0x65,0x73, - 0x20,0x6e,0x6f,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x63,0x61,0x73, - 0x65,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x4c,0x0,0x54,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x73,0x0,0x65,0x0, - 0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x77,0x0,0x73,0x0,0x70,0x0, - 0x69,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6d,0x0, - 0x75,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x61,0x0,0x74,0x0,0x79,0x0,0x20,0x0, - 0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x21,0x54,0x68,0x69,0x73,0x20,0x73,0x65, - 0x72,0x76,0x65,0x72,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x73,0x20,0x63,0x61, - 0x73,0x65,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x9e,0x0,0x57,0x1,0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0,0x20, - 0x0,0x74,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20, - 0x0,0x70,0x0,0x6f,0x0,0x7a,0x0,0x77,0x0,0x6f,0x0,0x6c,0x0,0x69,0x1,0x7, - 0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x69, - 0x0,0x6f,0x0,0x6d,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e, - 0x0,0x69,0x0,0x6f,0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x73,0x0,0x77, - 0x0,0x6f,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x77,0x1,0x42,0x0,0x61,0x0,0x73, - 0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x69,0x0,0x67, - 0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x6f,0x0,0x6b,0x0,0x69,0x0,0x65,0x0,0x6e, - 0x0,0x65,0x0,0x6b,0x0,0x20,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x74,0x0,0x75, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4d,0x54,0x75,0x72,0x6e, - 0x20,0x74,0x68,0x69,0x73,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x61,0x6c,0x6c,0x6f, - 0x77,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x20,0x74,0x6f,0x20, - 0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x6f,0x77,0x6e, - 0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x63,0x68,0x61,0x74,0x20,0x62,0x6f,0x78, - 0x20,0x64,0x65,0x73,0x69,0x67,0x6e,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x1,0x26,0x0,0x57,0x1,0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0,0x20,0x0, - 0x74,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0, - 0x70,0x0,0x6f,0x0,0x7a,0x0,0x77,0x0,0x6f,0x0,0x6c,0x0,0x69,0x1,0x7,0x0, - 0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x69,0x0, - 0x6f,0x0,0x6d,0x0,0x20,0x0,0x7a,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0, - 0x6e,0x0,0x69,0x0,0x6f,0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x69,0x0, - 0x63,0x0,0x68,0x0,0x20,0x0,0x77,0x1,0x42,0x0,0x61,0x0,0x73,0x0,0x6e,0x0, - 0x65,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x6b,0x0,0x6c,0x0,0x65,0x0,0x6a,0x0, - 0x6b,0x0,0x69,0x0,0x20,0x0,0x28,0x0,0x75,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0, - 0x61,0x0,0x74,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x62,0x0, - 0x72,0x0,0x61,0x0,0x7a,0x0,0x6b,0x0,0x69,0x0,0x2c,0x0,0x20,0x0,0x6b,0x0, - 0x74,0x0,0xf3,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x6a,0x0, - 0x61,0x0,0x77,0x0,0x69,0x1,0x5,0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0, - 0x20,0x0,0x6e,0x0,0x61,0x0,0x64,0x0,0x20,0x0,0x6f,0x0,0x6b,0x0,0x6e,0x0, - 0x65,0x0,0x6d,0x0,0x20,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x74,0x0,0x75,0x0, - 0x2c,0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x63,0x0,0x7a,0x0,0x79,0x0,0x6d,0x0, - 0x20,0x0,0x61,0x0,0x77,0x0,0x61,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x79,0x0, - 0x20,0x0,0x6c,0x0,0x75,0x0,0x62,0x0,0x20,0x0,0x6b,0x0,0x73,0x0,0x79,0x0, - 0x77,0x0,0x6b,0x0,0x69,0x0,0x29,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x88,0x54,0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x6f,0x6e,0x20, - 0x74,0x6f,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74, - 0x65,0x72,0x73,0x20,0x74,0x6f,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x74,0x68, - 0x65,0x69,0x72,0x20,0x6f,0x77,0x6e,0x20,0x73,0x74,0x69,0x63,0x6b,0x65,0x72,0x73, - 0x20,0x28,0x75,0x6e,0x69,0x71,0x75,0x65,0x20,0x69,0x6d,0x61,0x67,0x65,0x73,0x20, - 0x74,0x68,0x61,0x74,0x20,0x73,0x68,0x6f,0x77,0x20,0x75,0x70,0x20,0x6f,0x76,0x65, - 0x72,0x20,0x74,0x68,0x65,0x20,0x63,0x68,0x61,0x74,0x62,0x6f,0x78,0x20,0x2d,0x20, - 0x6c,0x69,0x6b,0x65,0x20,0x61,0x76,0x61,0x74,0x61,0x72,0x73,0x20,0x6f,0x72,0x20, - 0x73,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73,0x29,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0xbc,0x0,0x57,0x1,0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0, - 0x20,0x0,0x74,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0, - 0x20,0x0,0x7a,0x0,0x61,0x0,0x70,0x0,0x6f,0x0,0x62,0x0,0x69,0x0,0x65,0x0, - 0x63,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x79,0x0,0x63,0x0,0x69,0x0, - 0x73,0x0,0x6b,0x0,0x75,0x0,0x20,0x0,0x77,0x0,0x79,0x0,0x62,0x0,0x6f,0x0, - 0x72,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x64,0x0, - 0x2d,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x63,0x0,0x6a,0x0, - 0x69,0x0,0x20,0x0,0x6f,0x0,0x64,0x0,0x20,0x0,0x6f,0x0,0x64,0x0,0x7a,0x0, - 0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x61,0x0, - 0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x20,0x0, - 0x6f,0x0,0x64,0x0,0x65,0x0,0x67,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x69,0x0, - 0x75,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x74,0x0,0x6b,0x0,0x69,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x54,0x54,0x75,0x72,0x6e,0x20, - 0x74,0x68,0x69,0x73,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x70,0x72,0x65,0x76,0x65, - 0x6e,0x74,0x20,0x70,0x72,0x65,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20, - 0x63,0x68,0x65,0x63,0x6b,0x62,0x6f,0x78,0x20,0x66,0x72,0x6f,0x6d,0x20,0x63,0x6c, - 0x65,0x61,0x72,0x69,0x6e,0x67,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x70,0x6c,0x61, - 0x79,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x65,0x6d,0x6f,0x74,0x65,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc0,0x0,0x57,0x1,0x42,0x1,0x5,0x0, - 0x63,0x0,0x7a,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x61,0x0, - 0x62,0x0,0x79,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x70,0x0,0x6f,0x0,0x62,0x0, - 0x69,0x0,0x65,0x0,0x63,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x1, - 0x19,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0xf3,0x0, - 0x77,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x64,0x0,0x20,0x0, - 0x6f,0x0,0x64,0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x65,0x0, - 0x6e,0x0,0x69,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0, - 0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x67,0x0, - 0x6f,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x75,0x0, - 0x20,0x0,0x70,0x0,0x6f,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x67,0x0,0x6f,0x0, - 0x20,0x0,0x6f,0x0,0x64,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x72,0x0,0x7a,0x0, - 0x65,0x0,0x6e,0x0,0x69,0x0,0x75,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x57,0x54,0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x6f,0x6e,0x20, - 0x74,0x6f,0x20,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x20,0x74,0x68,0x65,0x20,0x65, - 0x66,0x66,0x65,0x63,0x74,0x73,0x20,0x64,0x72,0x6f,0x70,0x64,0x6f,0x77,0x6e,0x20, - 0x66,0x72,0x6f,0x6d,0x20,0x63,0x6c,0x65,0x61,0x72,0x69,0x6e,0x67,0x20,0x74,0x68, - 0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x70, - 0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x69,0x74,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0xc4,0x0,0x57,0x1,0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0,0x20, - 0x0,0x74,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20, - 0x0,0x7a,0x0,0x61,0x0,0x70,0x0,0x6f,0x0,0x62,0x0,0x69,0x0,0x65,0x0,0x63, - 0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x1,0x19,0x0,0x20,0x0,0x64, - 0x1,0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0,0x6b,0x0,0xf3,0x0,0x77,0x0,0x20, - 0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x64,0x0,0x20,0x0,0x6f,0x0,0x64, - 0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69, - 0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0,0x61, - 0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20, - 0x0,0x64,0x1,0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0,0x6b,0x0,0x75,0x0,0x20, - 0x0,0x70,0x0,0x6f,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20, - 0x0,0x6f,0x0,0x64,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x72,0x0,0x7a,0x0,0x65, - 0x0,0x6e,0x0,0x69,0x0,0x75,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x54,0x54,0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x6f,0x6e,0x20,0x74, - 0x6f,0x20,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x20,0x74,0x68,0x65,0x20,0x73,0x6f, - 0x75,0x6e,0x64,0x20,0x64,0x72,0x6f,0x70,0x64,0x6f,0x77,0x6e,0x20,0x66,0x72,0x6f, - 0x6d,0x20,0x63,0x6c,0x65,0x61,0x72,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x73, - 0x6f,0x75,0x6e,0x64,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x70,0x6c,0x61,0x79,0x69, - 0x6e,0x67,0x20,0x69,0x74,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x64, - 0x0,0x55,0x1,0x7c,0x0,0x79,0x0,0x6a,0x0,0x20,0x0,0x7a,0x0,0x6e,0x0,0x61, - 0x0,0x63,0x0,0x7a,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0xf3,0x0,0x77,0x0,0x20, - 0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x6f,0x0,0x72,0x0,0xf3,0x0,0x77,0x0,0x20, - 0x0,0x77,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x72, - 0x0,0x6f,0x0,0x77,0x0,0x79,0x0,0x6d,0x0,0x20,0x0,0x64,0x0,0x7a,0x0,0x69, - 0x0,0x65,0x0,0x6e,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x75,0x0,0x20,0x0,0x49, - 0x0,0x43,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2f,0x55,0x73, - 0x65,0x20,0x74,0x68,0x65,0x20,0x6d,0x61,0x72,0x6b,0x75,0x70,0x20,0x63,0x6f,0x6c, - 0x6f,0x72,0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65, - 0x72,0x20,0x49,0x43,0x20,0x63,0x68,0x61,0x74,0x6c,0x6f,0x67,0x2e,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0xe2,0x0,0x4f,0x0,0x64,0x0,0x20,0x0,0x74,0x0, - 0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x6c,0x0,0x65,0x1, - 0x7c,0x0,0x79,0x0,0x2c,0x0,0x20,0x0,0x63,0x0,0x7a,0x0,0x79,0x0,0x20,0x0, - 0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x63,0x0,0x6a,0x0,0x65,0x0, - 0x20,0x0,0x62,0x1,0x19,0x0,0x64,0x1,0x5,0x0,0x20,0x0,0x6f,0x0,0x64,0x0, - 0x74,0x0,0x77,0x0,0x61,0x0,0x72,0x0,0x7a,0x0,0x61,0x1,0x7,0x0,0x20,0x0, - 0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x6f,0x0,0x64,0x0,0x20,0x0,0x70,0x0, - 0x75,0x0,0x6e,0x0,0x6b,0x0,0x74,0x0,0x75,0x0,0x20,0x0,0x77,0x0,0x79,0x0, - 0x6a,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x2e,0x0,0x20,0x0,0x57,0x0, - 0x79,0x1,0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0, - 0x65,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0, - 0x6d,0x0,0x6f,0x1,0x7c,0x0,0x65,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0,0x6e,0x0, - 0x69,0x0,0x65,0x0,0x6a,0x0,0x73,0x0,0x7a,0x0,0x79,0x1,0x7,0x0,0x20,0x0, - 0x73,0x0,0x70,0x0,0x6f,0x0,0x77,0x0,0x6f,0x0,0x6c,0x0,0x6e,0x0,0x69,0x0, - 0x65,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x63,0x57,0x68,0x65,0x74,0x68,0x65,0x72,0x20,0x6f,0x72,0x20,0x6e,0x6f, - 0x74,0x20,0x74,0x6f,0x20,0x72,0x65,0x73,0x75,0x6d,0x65,0x20,0x70,0x6c,0x61,0x79, - 0x69,0x6e,0x67,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x20,0x66, - 0x72,0x6f,0x6d,0x20,0x77,0x68,0x65,0x72,0x65,0x20,0x74,0x68,0x65,0x79,0x20,0x6c, - 0x65,0x66,0x74,0x20,0x6f,0x66,0x66,0x2e,0x20,0x54,0x75,0x72,0x6e,0x69,0x6e,0x67, - 0x20,0x6f,0x66,0x66,0x20,0x6d,0x69,0x67,0x68,0x74,0x20,0x72,0x65,0x64,0x75,0x63, - 0x65,0x20,0x6c,0x61,0x67,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xb0, - 0x0,0x54,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x61,0x0,0x20,0x0,0x6e,0x0,0x61, - 0x0,0x7a,0x0,0x77,0x0,0x61,0x0,0x20,0x0,0x4f,0x0,0x4f,0x0,0x43,0x0,0x20, - 0x0,0x62,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x61, - 0x0,0x75,0x0,0x74,0x0,0x6f,0x0,0x6d,0x0,0x61,0x0,0x74,0x0,0x79,0x0,0x63, - 0x0,0x7a,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x74, - 0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x77,0x0,0x61, - 0x0,0x72,0x0,0x74,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x2c,0x0,0x20, - 0x0,0x67,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x64,0x0,0x6f,0x1,0x42,0x1,0x5, - 0x0,0x63,0x0,0x7a,0x0,0x79,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x6e,0x0,0x61, - 0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4d,0x59,0x6f,0x75,0x72,0x20,0x4f, - 0x4f,0x43,0x20,0x6e,0x61,0x6d,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20, - 0x61,0x75,0x74,0x6f,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x6c,0x79,0x20,0x73,0x65, - 0x74,0x20,0x74,0x6f,0x20,0x74,0x68,0x69,0x73,0x20,0x76,0x61,0x6c,0x75,0x65,0x20, - 0x77,0x68,0x65,0x6e,0x20,0x79,0x6f,0x75,0x20,0x6a,0x6f,0x69,0x6e,0x20,0x61,0x20, - 0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0xaa,0x0,0x54,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x61,0x0,0x20,0x0,0x6b,0x0, - 0x73,0x0,0x79,0x0,0x77,0x0,0x6b,0x0,0x61,0x0,0x20,0x0,0x62,0x1,0x19,0x0, - 0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x74,0x0, - 0x6f,0x0,0x6d,0x0,0x61,0x0,0x74,0x0,0x79,0x0,0x63,0x0,0x7a,0x0,0x6e,0x0, - 0x69,0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0, - 0x69,0x0,0x61,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0, - 0x74,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x77,0x0,0x61,0x0,0x72,0x0,0x74,0x0, - 0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x2c,0x0,0x20,0x0,0x67,0x0,0x64,0x0, - 0x79,0x0,0x20,0x0,0x64,0x0,0x6f,0x1,0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0, - 0x79,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x73,0x0, - 0x65,0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x4d,0x59,0x6f,0x75,0x72,0x20,0x73,0x68,0x6f,0x77,0x6e,0x61, - 0x6d,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x75,0x74,0x6f,0x6d, - 0x61,0x74,0x69,0x63,0x61,0x6c,0x6c,0x79,0x20,0x73,0x65,0x74,0x20,0x74,0x6f,0x20, - 0x74,0x68,0x69,0x73,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x77,0x68,0x65,0x6e,0x20, - 0x79,0x6f,0x75,0x20,0x6a,0x6f,0x69,0x6e,0x20,0x61,0x20,0x73,0x65,0x72,0x76,0x65, - 0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x3,0xe2,0x86,0x91,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0xff, - 0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0xe2,0x86,0x93, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x36,0x0,0x22,0x0,0x25,0x0,0x31, - 0x0,0x22,0x0,0x20,0x0,0x7a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x1,0x42, - 0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x65, - 0x0,0x73,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x79,0x0,0x2f,0x0,0x61,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1a,0x22,0x25,0x31,0x22,0x20,0x68, - 0x61,0x73,0x20,0x62,0x65,0x65,0x6e,0x20,0x74,0x72,0x61,0x6e,0x73,0x66,0x65,0x72, - 0x72,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1a,0x0,0x25,0x0,0x20,0x0,0x77,0x0,0x79, - 0x0,0x72,0x0,0xf3,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20, - 0x0,0x78,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x25,0x20,0x78,0x20, - 0x6f,0x66,0x66,0x73,0x65,0x74,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1a,0x0,0x25,0x0,0x20,0x0,0x77, - 0x0,0x79,0x0,0x72,0x0,0xf3,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x79,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x25,0x20, - 0x79,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x6,0x0,0x4f,0x0,0x2f, - 0x0,0x4d,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x41,0x2f,0x4d,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x26,0x0,0x44,0x0,0x6f,0x0,0x64,0x0,0x61,0x0,0x6a,0x0,0x20,0x0, - 0x6e,0x0,0x6f,0x0,0x77,0x0,0x79,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x77,0x0, - 0xf3,0x0,0x64,0x0,0x2e,0x0,0x2e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x13,0x41,0x64,0x64,0x20,0x6e,0x65,0x77,0x20,0x65,0x76,0x69,0x64,0x65, - 0x6e,0x63,0x65,0x2e,0x2e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x86,0x0,0x44,0x0,0x6f,0x0,0x64, - 0x0,0x61,0x0,0x6a,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6b,0x0,0x73,0x0,0x74, - 0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x6a, - 0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x74, - 0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x61, - 0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x2c, - 0x0,0x20,0x0,0x67,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73, - 0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a, - 0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x32,0x41,0x64,0x64,0x20,0x74,0x65, - 0x78,0x74,0x20,0x74,0x6f,0x20,0x79,0x6f,0x75,0x72,0x20,0x6c,0x61,0x73,0x74,0x20, - 0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x77, - 0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x16, - 0x0,0x4b,0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x79,0x0,0x6e,0x0,0x75,0x0,0x61, - 0x0,0x63,0x0,0x6a,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8, - 0x41,0x64,0x64,0x69,0x74,0x69,0x76,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x54,0x0,0x55,0x0,0x6d, - 0x0,0x6f,0x1,0x7c,0x0,0x6c,0x0,0x69,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x20, - 0x0,0x7a,0x0,0x6d,0x0,0x69,0x0,0x61,0x0,0x6e,0x1,0x19,0x0,0x20,0x0,0x72, - 0x0,0xf3,0x1,0x7c,0x0,0x6e,0x0,0x79,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x61, - 0x0,0x73,0x0,0x70,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0xf3,0x0,0x77,0x0,0x20, - 0x0,0x6b,0x0,0x6c,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x33,0x41,0x6c,0x6c,0x6f,0x77,0x73, - 0x20,0x79,0x6f,0x75,0x20,0x74,0x6f,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x76, - 0x61,0x72,0x69,0x6f,0x75,0x73,0x20,0x61,0x73,0x70,0x65,0x63,0x74,0x73,0x20,0x6f, - 0x66,0x20,0x74,0x68,0x65,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0xd2,0x0,0x49,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x66,0x0,0x65,0x0, - 0x6a,0x0,0x73,0x0,0x2c,0x0,0x20,0x0,0x6b,0x0,0x74,0x0,0xf3,0x0,0x72,0x0, - 0x79,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1,0x7c,0x0,0x65,0x0, - 0x20,0x0,0x63,0x0,0x69,0x0,0x20,0x0,0x6f,0x0,0x67,0x1,0x42,0x0,0x6f,0x0, - 0x73,0x0,0x69,0x1,0x7,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0, - 0x72,0x0,0x61,0x0,0x77,0x1,0x19,0x0,0x20,0x0,0x28,0x0,0x6d,0x0,0x75,0x0, - 0x73,0x0,0x69,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x62,0x0,0x79,0x1,0x7,0x0, - 0x20,0x0,0x7a,0x0,0x61,0x0,0x72,0x0,0x7a,0x1,0x5,0x0,0x64,0x0,0x63,0x1, - 0x5,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61,0x0, - 0x77,0x0,0x20,0x0,0x28,0x0,0x43,0x0,0x4d,0x0,0x29,0x0,0x2c,0x0,0x20,0x0, - 0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x6d,0x0,0xf3,0x0,0x63,0x0,0x20,0x0, - 0x6f,0x0,0x67,0x1,0x42,0x0,0x61,0x0,0x73,0x0,0x7a,0x0,0x61,0x1,0x7,0x0, - 0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0, - 0x79,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x61,0x41,0x6e,0x20, - 0x69,0x6e,0x74,0x65,0x72,0x66,0x61,0x63,0x65,0x20,0x74,0x6f,0x20,0x68,0x65,0x6c, - 0x70,0x20,0x79,0x6f,0x75,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x20,0x61, - 0x20,0x63,0x61,0x73,0x65,0x20,0x28,0x79,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20, - 0x74,0x6f,0x20,0x62,0x65,0x20,0x61,0x20,0x43,0x4d,0x20,0x66,0x69,0x72,0x73,0x74, - 0x20,0x74,0x6f,0x20,0x62,0x65,0x20,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x61, - 0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x20,0x63,0x61,0x73,0x65,0x73,0x29,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x28,0x0,0x50,0x0,0x6f,0x0,0x77,0x0,0x72,0x0,0xf3,0x0,0x74,0x0,0x20, - 0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x63,0x0,0x7a,0x0,0x65, - 0x0,0x6b,0x0,0x61,0x0,0x6c,0x0,0x6e,0x0,0x69,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xd,0x42,0x61,0x63,0x6b,0x20,0x74,0x6f,0x20,0x4c,0x6f,0x62,0x62, - 0x79,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x8e,0x0,0x46,0x0,0x75,0x0,0x6e,0x0,0x6b,0x0,0x63,0x0, - 0x6a,0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x65,0x0,0x6b,0x0,0x74,0x0, - 0x61,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x61,0x0,0x2e,0x0,0x20,0x0,0x4e,0x0, - 0x69,0x0,0x65,0x0,0x20,0x0,0x62,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x69,0x0, - 0x65,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x6d,0x0,0xf3,0x0,0x67,0x1,0x42,0x0, - 0x20,0x0,0x77,0x0,0x63,0x0,0x68,0x0,0x6f,0x0,0x64,0x0,0x7a,0x0,0x69,0x1, - 0x7,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x65,0x0, - 0x72,0x0,0x61,0x0,0x6b,0x0,0x63,0x0,0x6a,0x1,0x19,0x0,0x20,0x0,0x7a,0x0, - 0x20,0x0,0x6f,0x0,0x6b,0x0,0x6e,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x49,0x0, - 0x43,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4f,0x42,0x65,0x63, - 0x6f,0x6d,0x65,0x20,0x61,0x20,0x73,0x70,0x65,0x63,0x74,0x61,0x74,0x6f,0x72,0x2e, - 0x20,0x59,0x6f,0x75,0x20,0x77,0x6f,0x6e,0x27,0x74,0x20,0x62,0x65,0x20,0x61,0x62, - 0x6c,0x65,0x20,0x74,0x6f,0x20,0x69,0x6e,0x74,0x65,0x72,0x61,0x63,0x74,0x20,0x77, - 0x69,0x74,0x68,0x20,0x74,0x68,0x65,0x20,0x69,0x6e,0x2d,0x63,0x68,0x61,0x72,0x61, - 0x63,0x74,0x65,0x72,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa, - 0x0,0x42,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x79,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x5,0x42,0x6c,0x69,0x70,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x66,0x0,0x57,0x0, - 0x79,0x1,0x5b,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x74,0x0,0x6c,0x0,0x20,0x0, - 0x65,0x0,0x6b,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0, - 0x69,0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0, - 0x74,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x7a,0x0, - 0x6d,0x0,0x69,0x0,0x65,0x1,0x44,0x0,0x20,0x0,0x73,0x0,0x77,0x0,0x6f,0x0, - 0x6a,0x1,0x5,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x1, - 0x7,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3f,0x42,0x72,0x69, - 0x6e,0x67,0x20,0x75,0x70,0x20,0x74,0x68,0x65,0x20,0x43,0x68,0x61,0x72,0x61,0x63, - 0x74,0x65,0x72,0x20,0x53,0x65,0x6c,0x65,0x63,0x74,0x20,0x53,0x63,0x72,0x65,0x65, - 0x6e,0x20,0x61,0x6e,0x64,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x79,0x6f,0x75, - 0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x2e,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2e, - 0x0,0x57,0x0,0x79,0x1,0x5b,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x74,0x0,0x6c, - 0x0,0x20,0x0,0x65,0x0,0x6b,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x20,0x0,0x64, - 0x0,0x6f,0x0,0x77,0x0,0x6f,0x0,0x64,0x0,0xf3,0x0,0x77,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1d,0x42,0x72,0x69,0x6e,0x67,0x20,0x75,0x70, - 0x20,0x74,0x68,0x65,0x20,0x45,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x73,0x63, - 0x72,0x65,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x4b,0x0,0x4c,0x0,0x49,0x0, - 0x45,0x0,0x4e,0x0,0x54,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43, - 0x4c,0x49,0x45,0x4e,0x54,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x30,0x0,0x4e,0x0,0x49,0x0,0x45,0x0, - 0x53,0x0,0x54,0x0,0x41,0x0,0x4e,0x0,0x44,0x0,0x41,0x0,0x52,0x0,0x44,0x0, - 0x4f,0x0,0x57,0x0,0x59,0x0,0x20,0x0,0x53,0x0,0x50,0x0,0x52,0x0,0x5a,0x0, - 0x45,0x0,0x43,0x0,0x49,0x0,0x57,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x11,0x43,0x55,0x53,0x54,0x4f,0x4d,0x20,0x4f,0x42,0x4a,0x45,0x43,0x54, - 0x49,0x4f,0x4e,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x22,0x0,0x57,0x0,0x65,0x0,0x7a,0x0,0x77, - 0x0,0x69,0x0,0x6a,0x0,0x20,0x0,0x4d,0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x72, - 0x0,0x61,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xe,0x43,0x61,0x6c,0x6c,0x20,0x4d,0x6f,0x64,0x65,0x72,0x61,0x74, - 0x6f,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x57,0x0,0x65,0x0,0x7a,0x0,0x77,0x0,0x69, - 0x0,0x6a,0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x64,0x0,0x61,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x8,0x43,0x61,0x6c,0x6c,0x20,0x6d,0x6f,0x64,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x38,0x0,0x52,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77, - 0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x72,0x0,0x7a, - 0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65, - 0x0,0x7a,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x10,0x43,0x61,0x73,0x65,0x20,0x6d,0x61,0x64,0x65,0x20,0x62,0x79, - 0x20,0x25,0x31,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x10,0x0,0x52,0x0,0x6f,0x0,0x7a,0x0,0x70, - 0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x79,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x6,0x43,0x61,0x73,0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1c,0x0,0x5a,0x0,0x6d, - 0x0,0x69,0x0,0x61,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73, - 0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x69,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x10,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74, - 0x65,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0xa4,0x0,0x5a,0x0,0x6d,0x0,0x69,0x0,0x65,0x1,0x44, - 0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x63,0x0,0x65,0x0,0x6e,0x0,0x74, - 0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x7a,0x0,0x69,0x0,0x6f,0x0,0x6d,0x0,0x65, - 0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x77,0x0,0x79,0x0,0x72,0x0,0xf3,0x0,0x77, - 0x0,0x6e,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x6f, - 0x0,0x7a,0x0,0x79,0x0,0x63,0x0,0x6a,0x0,0x69,0x0,0x20,0x0,0x74,0x0,0x77, - 0x0,0x6f,0x0,0x6a,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73, - 0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x63, - 0x0,0x7a,0x1,0x5,0x0,0x63,0x0,0x20,0x0,0x6f,0x0,0x64,0x0,0x20,0x1,0x5b, - 0x0,0x72,0x0,0x6f,0x0,0x64,0x0,0x6b,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6b, - 0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x75,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x63,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x74,0x68,0x65,0x20,0x68, - 0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x74,0x61,0x6c,0x20,0x70,0x65,0x72,0x63,0x65,0x6e, - 0x74,0x61,0x67,0x65,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x6f,0x66,0x20,0x79, - 0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73,0x20, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x66,0x72,0x6f,0x6d,0x20,0x74,0x68, - 0x65,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20, - 0x73,0x63,0x72,0x65,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x60,0x0,0x5a,0x0,0x6d,0x0, - 0x69,0x0,0x65,0x1,0x44,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x65,0x0, - 0x6a,0x0,0x6e,0x0,0x6f,0x1,0x5b,0x1,0x7,0x0,0x20,0x0,0x77,0x0,0x79,0x0, - 0x73,0x0,0x74,0x1,0x19,0x0,0x70,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0, - 0x69,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x74,0x0, - 0x77,0x0,0x6f,0x0,0x6a,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x70,0x0,0x6f,0x0, - 0x73,0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x32,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x74,0x68,0x65,0x20, - 0x6f,0x72,0x64,0x65,0x72,0x20,0x6f,0x66,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x61, - 0x6e,0x63,0x65,0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61, - 0x72,0x61,0x63,0x74,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0x14,0x0,0x5a,0x0,0x6d,0x0, - 0x69,0x0,0x65,0x1,0x44,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x6f,0x0, - 0x72,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6b,0x0,0x73,0x0,0x74,0x0,0x75,0x0, - 0x20,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x65,0x0,0x6a,0x0,0x20,0x0, - 0x77,0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1,0x5b,0x0, - 0x63,0x0,0x69,0x0,0x2e,0x0,0xa,0x0,0x4d,0x0,0x6f,0x1,0x7c,0x0,0x65,0x0, - 0x73,0x0,0x7a,0x0,0x20,0x0,0x72,0x0,0xf3,0x0,0x77,0x0,0x6e,0x0,0x69,0x0, - 0x65,0x1,0x7c,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0,0x61,0x0, - 0x63,0x0,0x7a,0x0,0x79,0x1,0x7,0x0,0x20,0x0,0x63,0x0,0x7a,0x1,0x19,0x1, - 0x5b,0x1,0x7,0x0,0x20,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x65,0x0, - 0x6a,0x0,0x20,0x0,0x6f,0x0,0x62,0x0,0x65,0x0,0x63,0x0,0x6e,0x0,0x69,0x0, - 0x65,0x0,0x20,0x0,0x70,0x0,0x69,0x0,0x73,0x0,0x61,0x0,0x6e,0x0,0x65,0x0, - 0x6a,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0, - 0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x75,0x1, - 0x7c,0x0,0x79,0x1,0x7,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x0, - 0x79,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0, - 0x69,0x0,0x65,0x0,0x6e,0x0,0x69,0x1,0x7,0x0,0x20,0x0,0x6a,0x0,0x65,0x0, - 0x6a,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6c,0x0,0x6f,0x0,0x72,0x0,0x21,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x91,0x43,0x68,0x61,0x6e,0x67,0x65,0x20, - 0x74,0x68,0x65,0x20,0x74,0x65,0x78,0x74,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x6f, - 0x66,0x20,0x74,0x68,0x65,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73, - 0x73,0x61,0x67,0x65,0x2e,0xa,0x59,0x6f,0x75,0x20,0x63,0x61,0x6e,0x20,0x61,0x6c, - 0x73,0x6f,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x20,0x61,0x20,0x70,0x61,0x72,0x74, - 0x20,0x6f,0x66,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74, - 0x6c,0x79,0x20,0x74,0x79,0x70,0x65,0x64,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65, - 0x20,0x61,0x6e,0x64,0x20,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x64,0x72,0x6f, - 0x70,0x64,0x6f,0x77,0x6e,0x20,0x74,0x6f,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20, - 0x69,0x74,0x73,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x21,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa4,0x0,0x5a, - 0x0,0x6d,0x0,0x69,0x0,0x65,0x1,0x44,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x6f, - 0x0,0x63,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x20,0x0,0x70,0x0,0x69,0x0,0x6f, - 0x0,0x6e,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x77, - 0x0,0x79,0x0,0x72,0x0,0xf3,0x0,0x77,0x0,0x6e,0x0,0x61,0x0,0x6e,0x0,0x69, - 0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x7a,0x0,0x79,0x0,0x63,0x0,0x6a, - 0x0,0x69,0x0,0x20,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x65,0x0,0x6a, - 0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x69, - 0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x63,0x0,0x7a,0x1,0x5,0x0,0x63,0x0,0x20, - 0x0,0x6f,0x0,0x64,0x0,0x20,0x1,0x5b,0x0,0x72,0x0,0x6f,0x0,0x64,0x0,0x6b, - 0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6b,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x75, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x61,0x43,0x68,0x61,0x6e, - 0x67,0x65,0x20,0x74,0x68,0x65,0x20,0x76,0x65,0x72,0x74,0x69,0x63,0x61,0x6c,0x20, - 0x70,0x65,0x72,0x63,0x65,0x6e,0x74,0x61,0x67,0x65,0x20,0x6f,0x66,0x66,0x73,0x65, - 0x74,0x20,0x6f,0x66,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63, - 0x74,0x65,0x72,0x27,0x73,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x66, - 0x72,0x6f,0x6d,0x20,0x74,0x68,0x65,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x6f, - 0x66,0x20,0x74,0x68,0x65,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x2, - 0x36,0x0,0x57,0x0,0x79,0x0,0x62,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x7a,0x0, - 0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x20,0x0,0x64,0x0, - 0x6c,0x0,0x61,0x0,0x20,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x65,0x0, - 0x6a,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x73,0x0,0x74,0x1,0x19,0x0,0x70,0x0, - 0x6e,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x64,0x0, - 0x6f,0x0,0x6d,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x2e,0x0,0xa,0x0, - 0x45,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x79,0x0,0x20,0x0,0x73,0x1, - 0x5,0x0,0x20,0x0,0x7a,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e,0x0, - 0x69,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x77,0x0, - 0x20,0x0,0x70,0x0,0x6c,0x0,0x69,0x0,0x6b,0x0,0x75,0x0,0x20,0x0,0x74,0x0, - 0x68,0x0,0x65,0x0,0x6d,0x0,0x65,0x0,0x2f,0x0,0x65,0x0,0x66,0x0,0x66,0x0, - 0x65,0x0,0x63,0x0,0x74,0x0,0x2f,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0, - 0x63,0x0,0x74,0x0,0x73,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x2e,0x0, - 0x20,0x0,0x54,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x61,0x0,0x20,0x0,0x70,0x0, - 0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x6d,0x0,0x6f,0x1, - 0x7c,0x0,0x65,0x0,0x20,0x0,0x7a,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0, - 0x6e,0x0,0x69,0x0,0x6f,0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x6e,0x0, - 0x69,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61,0x0, - 0x72,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x66,0x0, - 0x65,0x0,0x6b,0x0,0x74,0x0,0x79,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0, - 0x65,0x0,0x7a,0x0,0xa,0x0,0x6b,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x67,0x0, - 0x6f,0x0,0x72,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x63,0x0,0x68,0x0,0x61,0x0, - 0x72,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x20,0x0,0x5b,0x0,0x4f,0x0, - 0x70,0x0,0x74,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x73,0x0,0x5d,0x0,0x2c,0x0, - 0x20,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x73,0x0, - 0x20,0x0,0x3d,0x0,0x20,0x0,0x27,0x0,0x6d,0x0,0x69,0x0,0x73,0x0,0x63,0x0, - 0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x27,0x0,0x20,0x0,0x67,0x0,0x64,0x0, - 0x7a,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0, - 0x6f,0x0,0x64,0x0,0x6e,0x0,0x6f,0x0,0x73,0x0,0x69,0x0,0x20,0x0,0x64,0x0, - 0x6f,0x0,0x20,0x0,0x6d,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x2f,0x0,0x3c,0x0, - 0x6d,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0, - 0x3e,0x0,0x2f,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0, - 0x73,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x2c,0x0,0x20,0x0,0x61,0x0, - 0x62,0x0,0x79,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x6a,0x0, - 0x72,0x0,0x7a,0x0,0x65,0x1,0x7,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0, - 0x6b,0x0,0x74,0x0,0x79,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x1, - 0x13,0x43,0x68,0x6f,0x6f,0x73,0x65,0x20,0x61,0x6e,0x20,0x65,0x66,0x66,0x65,0x63, - 0x74,0x20,0x74,0x6f,0x20,0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75, - 0x72,0x20,0x6e,0x65,0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65, - 0x73,0x73,0x61,0x67,0x65,0x2e,0xa,0x54,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63, - 0x74,0x73,0x20,0x61,0x72,0x65,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x69, - 0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x74,0x68,0x65,0x6d,0x65,0x2f,0x65,0x66,0x66, - 0x65,0x63,0x74,0x73,0x2f,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2e,0x69,0x6e,0x69, - 0x2e,0x20,0x59,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72, - 0x20,0x63,0x61,0x6e,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x63,0x75,0x73,0x74, - 0x6f,0x6d,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20,0x62,0x79,0xa,0x63,0x68, - 0x61,0x72,0x2e,0x69,0x6e,0x69,0x20,0x5b,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x5d, - 0x20,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0x2c,0x20,0x65,0x66,0x66,0x65,0x63, - 0x74,0x73,0x20,0x3d,0x20,0x27,0x6d,0x69,0x73,0x63,0x6e,0x61,0x6d,0x65,0x27,0x20, - 0x77,0x68,0x65,0x72,0x65,0x20,0x69,0x74,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x73, - 0x20,0x74,0x6f,0x20,0x6d,0x69,0x73,0x63,0x2f,0x3c,0x6d,0x69,0x73,0x63,0x6e,0x61, - 0x6d,0x65,0x3e,0x2f,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2e,0x69,0x6e,0x69,0x20, - 0x74,0x6f,0x20,0x72,0x65,0x61,0x64,0x20,0x74,0x68,0x65,0x20,0x65,0x66,0x66,0x65, - 0x63,0x74,0x73,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x57,0x0,0x79,0x0,0x62,0x0,0x69, - 0x0,0x65,0x0,0x72,0x0,0x7a,0x0,0x2e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x8,0x43,0x68,0x6f,0x6f,0x73,0x65,0x2e,0x2e,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xaa, - 0x0,0x4e,0x0,0x61,0x0,0x63,0x0,0x69,0x1,0x5b,0x0,0x6e,0x0,0x69,0x0,0x6a, - 0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6b,0x0,0x6f,0x0,0x6e, - 0x1,0x19,0x0,0x20,0x0,0x6f,0x1,0x42,0x0,0xf3,0x0,0x77,0x0,0x6b,0x0,0x61, - 0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x65,0x0,0x64, - 0x0,0x79,0x0,0x74,0x0,0x6f,0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x2e,0x0,0x20, - 0x0,0x4e,0x0,0x61,0x0,0x63,0x0,0x69,0x1,0x5b,0x0,0x6e,0x0,0x69,0x0,0x6a, - 0x0,0x20,0x0,0x5b,0x0,0x58,0x0,0x5d,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62, - 0x0,0x79,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x75,0x0,0x61, - 0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x6f,0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x20, - 0x0,0x73,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x7a,0x0,0x6d, - 0x0,0x69,0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x40,0x43,0x6c,0x69,0x63,0x6b,0x20,0x74,0x68,0x65,0x20,0x70,0x65, - 0x6e,0x63,0x69,0x6c,0x20,0x69,0x63,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x65,0x64,0x69, - 0x74,0x2e,0x20,0x50,0x72,0x65,0x73,0x73,0x20,0x5b,0x58,0x5d,0x20,0x74,0x6f,0x20, - 0x75,0x70,0x64,0x61,0x74,0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x6e, - 0x67,0x65,0x73,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x46,0x0,0x4e,0x0,0x61,0x0,0x63,0x0,0x69, - 0x1,0x5b,0x0,0x6e,0x0,0x69,0x0,0x6a,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20, - 0x0,0x6f,0x1,0x42,0x0,0xf3,0x0,0x77,0x0,0x65,0x0,0x6b,0x0,0x2c,0x0,0x20, - 0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x65,0x0,0x64,0x0,0x79,0x0,0x74, - 0x0,0x6f,0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x2e,0x0,0x2e,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1b,0x43,0x6c,0x69,0x63,0x6b,0x20,0x74,0x68, - 0x65,0x20,0x70,0x65,0x6e,0x63,0x69,0x6c,0x20,0x74,0x6f,0x20,0x65,0x64,0x69,0x74, - 0x2e,0x2e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0xda,0x0,0x5a,0x0,0x61,0x0,0x6d,0x0,0x6b,0x0, - 0x6e,0x0,0x69,0x0,0x6a,0x0,0x20,0x0,0x77,0x0,0x79,0x1,0x5b,0x0,0x77,0x0, - 0x69,0x0,0x65,0x0,0x74,0x0,0x6c,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65,0x0, - 0x2f,0x0,0x65,0x0,0x64,0x0,0x79,0x0,0x74,0x0,0x6f,0x0,0x77,0x0,0x61,0x0, - 0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x6b,0x0,0x69,0x0,0x65,0x0, - 0x6e,0x0,0x6b,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x6f,0x0, - 0x64,0x0,0xf3,0x0,0x77,0x0,0x2e,0x0,0xa,0x0,0x5a,0x0,0x6f,0x0,0x73,0x0, - 0x74,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x7a,0x0,0x20,0x0, - 0x7a,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0, - 0x69,0x0,0x6f,0x0,0x6e,0x0,0x79,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0,0x65,0x1, - 0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x73,0x1,0x5,0x0,0x20,0x0,0x6a,0x0, - 0x61,0x0,0x6b,0x0,0x69,0x0,0x65,0x1,0x5b,0x0,0x20,0x0,0x6e,0x0,0x69,0x0, - 0x65,0x0,0x7a,0x0,0x61,0x0,0x70,0x0,0x69,0x0,0x73,0x0,0x61,0x0,0x6e,0x0, - 0x65,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0,0x69,0x0,0x61,0x0,0x6e,0x0,0x79,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x60,0x43,0x6c,0x6f,0x73,0x65, - 0x20,0x74,0x68,0x65,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x64,0x69, - 0x73,0x70,0x6c,0x61,0x79,0x2f,0x65,0x64,0x69,0x74,0x69,0x6e,0x67,0x20,0x6f,0x76, - 0x65,0x72,0x6c,0x61,0x79,0x2e,0xa,0x59,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20, - 0x62,0x65,0x20,0x70,0x72,0x6f,0x6d,0x70,0x74,0x65,0x64,0x20,0x69,0x66,0x20,0x74, - 0x68,0x65,0x72,0x65,0x27,0x73,0x20,0x61,0x6e,0x79,0x20,0x75,0x6e,0x73,0x61,0x76, - 0x65,0x64,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x30,0x0, - 0x5a,0x0,0x77,0x0,0x69,0x1,0x44,0x0,0x20,0x0,0x57,0x0,0x73,0x0,0x7a,0x0, - 0x79,0x0,0x73,0x0,0x74,0x0,0x6b,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x4b,0x0, - 0x61,0x0,0x74,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x72,0x0,0x69,0x0,0x65,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17,0x43,0x6f,0x6c,0x6c,0x61,0x70,0x73, - 0x65,0x20,0x41,0x6c,0x6c,0x20,0x43,0x61,0x74,0x65,0x67,0x6f,0x72,0x69,0x65,0x73, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x86,0x0,0x4f,0x0,0x62,0x0,0x65,0x0,0x63,0x0,0x6e,0x0,0x65, - 0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x6f,0x0,0x64,0x0,0x79,0x0,0x20, - 0x0,0x73,0x1,0x5,0x0,0x20,0x0,0x67,0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x61, - 0x0,0x6c,0x0,0x6e,0x0,0x65,0x0,0x2e,0x0,0x20,0x0,0x4b,0x0,0x6c,0x0,0x69, - 0x0,0x6b,0x0,0x6e,0x0,0x69,0x0,0x6a,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62, - 0x0,0x79,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x1,0x42,0x1,0x5, - 0x0,0x63,0x0,0x7a,0x0,0x79,0x1,0x7,0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19, - 0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x79,0x0,0x77, - 0x0,0x61,0x0,0x74,0x0,0x6e,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x37,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x65,0x76,0x69,0x64, - 0x65,0x6e,0x63,0x65,0x20,0x69,0x73,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x2e,0x20, - 0x43,0x6c,0x69,0x63,0x6b,0x20,0x74,0x6f,0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x20, - 0x74,0x6f,0x20,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x86,0x0, - 0x4f,0x0,0x62,0x0,0x65,0x0,0x63,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x64,0x0, - 0x6f,0x0,0x77,0x0,0x6f,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x73,0x1,0x5,0x0, - 0x20,0x0,0x70,0x0,0x72,0x0,0x79,0x0,0x77,0x0,0x61,0x0,0x74,0x0,0x6e,0x0, - 0x65,0x0,0x2e,0x0,0x20,0x0,0x4b,0x0,0x6c,0x0,0x69,0x0,0x6b,0x0,0x6e,0x0, - 0x69,0x0,0x6a,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0, - 0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x1,0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0, - 0x79,0x1,0x7,0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x6e,0x0, - 0x61,0x0,0x20,0x0,0x67,0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x61,0x0,0x6c,0x0, - 0x6e,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x37,0x43, - 0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20, - 0x69,0x73,0x20,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x2e,0x20,0x43,0x6c,0x69,0x63, - 0x6b,0x20,0x74,0x6f,0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x20,0x74,0x6f,0x20,0x67, - 0x6c,0x6f,0x62,0x61,0x6c,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2a,0x0,0x4e,0x0,0x69,0x0,0x65, - 0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x64, - 0x0,0x6f,0x0,0x77,0x0,0x79,0x0,0x20,0x0,0x4b,0x0,0x72,0x0,0x7a,0x0,0x79, - 0x0,0x6b,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x43,0x75, - 0x73,0x74,0x6f,0x6d,0x20,0x53,0x68,0x6f,0x75,0x74,0x21,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x24,0x0, - 0x4f,0x0,0x62,0x0,0x6e,0x0,0x69,0x1,0x7c,0x0,0x20,0x0,0x70,0x0,0x61,0x0, - 0x73,0x0,0x65,0x0,0x6b,0x0,0x20,0x1,0x7c,0x0,0x79,0x0,0x63,0x0,0x69,0x0, - 0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x18,0x44,0x65,0x63, - 0x72,0x65,0x61,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x68,0x65,0x61,0x6c,0x74,0x68, - 0x20,0x62,0x61,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x10,0x0,0x44,0x0,0x6f,0x0,0x6d,0x0, - 0x79,0x1,0x5b,0x0,0x6c,0x0,0x6e,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x7,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x22,0x0,0x5a, - 0x0,0x6e,0x0,0x69,0x0,0x73,0x0,0x7a,0x0,0x63,0x0,0x7a,0x0,0x20,0x0,0x74, - 0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0xf3,0x0,0x64, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1e,0x44,0x65,0x73,0x74,0x72,0x6f, - 0x79,0x20,0x74,0x68,0x69,0x73,0x20,0x70,0x69,0x65,0x63,0x65,0x20,0x6f,0x66,0x20, - 0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa6,0x0,0x57,0x0,0x79, - 0x1,0x5b,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x74,0x0,0x6c,0x0,0x20,0x0,0x6e, - 0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61, - 0x0,0x72,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x20,0x0,0x6b,0x0,0x73, - 0x0,0x79,0x0,0x77,0x0,0x6b,0x0,0x69,0x0,0x20,0x0,0x64,0x0,0x6c,0x0,0x61, - 0x0,0x20,0x0,0x77,0x0,0x73,0x0,0x7a,0x0,0x79,0x0,0x73,0x0,0x74,0x0,0x6b, - 0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x75,0x1,0x7c,0x0,0x79,0x0,0x74, - 0x0,0x6b,0x0,0x6f,0x0,0x77,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0xf3,0x0,0x77, - 0x0,0x2c,0x0,0x20,0x0,0x67,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x6a,0x0,0x65, - 0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61, - 0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x38,0x44,0x69,0x73,0x70, - 0x6c,0x61,0x79,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x69,0x7a,0x65,0x64,0x20,0x73, - 0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73,0x20,0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c, - 0x20,0x75,0x73,0x65,0x72,0x73,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63, - 0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x72,0x0,0x57,0x0,0x79,0x1,0x5b,0x0,0x77, - 0x0,0x69,0x0,0x65,0x0,0x74,0x0,0x6c,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x73, - 0x0,0x74,0x1,0x19,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x6c,0x0,0x64,0x0,0x65, - 0x0,0x72,0x0,0xf3,0x0,0x77,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x74, - 0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x2c,0x0,0x20,0x0,0x6b,0x0,0x74,0x0,0xf3, - 0x0,0x72,0x0,0x79,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x63,0x0,0x68,0x0,0x63, - 0x0,0x65,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0,0x75,0x0,0x74, - 0x0,0x6f,0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x37,0x44,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20, - 0x6c,0x69,0x73,0x74,0x20,0x6f,0x66,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65, - 0x72,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x73,0x20,0x79,0x6f,0x75,0x20,0x77,0x69, - 0x73,0x68,0x20,0x74,0x6f,0x20,0x6d,0x75,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x56,0x0, - 0x57,0x0,0x79,0x1,0x5b,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x74,0x0,0x6c,0x0, - 0x20,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x1,0x19,0x0,0x20,0x0,0x70,0x0, - 0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x20,0x0,0x64,0x0, - 0x6f,0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x6f,0x0,0x77,0x0, - 0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0, - 0x20,0x0,0x7a,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2c,0x44, - 0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20,0x6c,0x69,0x73,0x74,0x20, - 0x6f,0x66,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x20,0x74,0x6f, - 0x20,0x70,0x61,0x69,0x72,0x20,0x77,0x69,0x74,0x68,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xd6,0x0, - 0x47,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0, - 0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0,0x20,0x0, - 0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x64,0x0,0x67,0x0,0x72,0x0, - 0x79,0x0,0x77,0x0,0x61,0x0,0x20,0x0,0x64,0x1,0x7a,0x0,0x77,0x0,0x69,0x1, - 0x19,0x0,0x6b,0x0,0x75,0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x77,0x0,0x79,0x1, - 0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x66,0x0, - 0x65,0x0,0x6b,0x0,0x74,0x0,0x20,0x0,0x6d,0x0,0x69,0x0,0x67,0x0,0x61,0x0, - 0x6a,0x1,0x5,0x0,0x63,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x6f,0x0, - 0x6b,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x6b,0x0,0x61,0x0,0x2c,0x0,0x20,0x0, - 0x67,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x6b,0x0,0x74,0x0,0x6f,0x1,0x5b,0x0, - 0x20,0x0,0x77,0x0,0x65,0x0,0x7a,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x20,0x0, - 0x6d,0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x74,0x0,0x6f,0x0, - 0x72,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x71,0x44, - 0x6f,0x20,0x6e,0x6f,0x74,0x20,0x6c,0x69,0x73,0x74,0x65,0x6e,0x20,0x74,0x6f,0x20, - 0x6d,0x6f,0x64,0x20,0x63,0x61,0x6c,0x6c,0x73,0x20,0x77,0x68,0x65,0x6e,0x20,0x63, - 0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x69, - 0x6e,0x67,0x20,0x74,0x68,0x65,0x6d,0x20,0x66,0x72,0x6f,0x6d,0x20,0x70,0x6c,0x61, - 0x79,0x69,0x6e,0x67,0x20,0x73,0x6f,0x75,0x6e,0x64,0x73,0x20,0x6f,0x72,0x20,0x66, - 0x6f,0x63,0x75,0x73,0x69,0x6e,0x67,0x20,0x61,0x74,0x74,0x65,0x6e,0x74,0x69,0x6f, - 0x6e,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x34,0x0,0x43,0x0,0x7a,0x0,0x79,0x0,0x20,0x0,0x63,0x0,0x68, - 0x0,0x63,0x0,0x65,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x70, - 0x0,0x69,0x0,0x73,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0,0x69, - 0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x3f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x21,0x44,0x6f,0x20,0x79,0x6f,0x75,0x20,0x77,0x61,0x6e,0x74,0x20,0x74,0x6f, - 0x20,0x73,0x61,0x76,0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x6e,0x67, - 0x65,0x73,0x3f,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x38,0x0,0x43,0x0,0x7a,0x0,0x79,0x0,0x20,0x0, - 0x63,0x0,0x68,0x0,0x63,0x0,0x65,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x7a,0x0, - 0x61,0x0,0x74,0x0,0x72,0x0,0x7a,0x0,0x79,0x0,0x6d,0x0,0x61,0x1,0x7,0x0, - 0x20,0x0,0x7a,0x0,0x6d,0x0,0x69,0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x3f,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x21,0x44,0x6f,0x20,0x79,0x6f,0x75,0x20, - 0x77,0x69,0x73,0x68,0x20,0x74,0x6f,0x20,0x6b,0x65,0x65,0x70,0x20,0x79,0x6f,0x75, - 0x72,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x3f,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x22,0x0,0x45, - 0x0,0x64,0x0,0x79,0x0,0x74,0x0,0x75,0x0,0x6a,0x0,0x20,0x0,0x74,0x0,0x65, - 0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0xf3,0x0,0x64,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1c,0x45,0x64,0x69,0x74,0x20,0x74, - 0x68,0x69,0x73,0x20,0x70,0x69,0x65,0x63,0x65,0x20,0x6f,0x66,0x20,0x65,0x76,0x69, - 0x64,0x65,0x6e,0x63,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x8,0x0,0x42,0x1,0x42,0x1,0x5, - 0x0,0x64,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x45,0x72,0x72,0x6f, - 0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x3a,0x0,0x44,0x0,0x6f,0x0,0x77,0x0,0x6f,0x0,0x64,0x0, - 0x79,0x0,0x20,0x0,0x7a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x1,0x42,0x0, - 0x79,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0,0x6f,0x0,0x64,0x0,0x79,0x0,0x66,0x0, - 0x69,0x0,0x6b,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x65,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1b,0x45,0x76,0x69,0x64,0x65,0x6e,0x63, - 0x65,0x20,0x68,0x61,0x73,0x20,0x62,0x65,0x65,0x6e,0x20,0x6d,0x6f,0x64,0x69,0x66, - 0x69,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x34,0x0,0x52,0x0,0x6f,0x0,0x7a,0x0,0x77, - 0x0,0x69,0x1,0x44,0x0,0x20,0x0,0x57,0x0,0x73,0x0,0x7a,0x0,0x79,0x0,0x73, - 0x0,0x74,0x0,0x6b,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x4b,0x0,0x61,0x0,0x74, - 0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x72,0x0,0x69,0x0,0x65,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x15,0x45,0x78,0x70,0x61,0x6e,0x64,0x20,0x41,0x6c,0x6c, - 0x20,0x43,0x61,0x74,0x65,0x67,0x6f,0x72,0x69,0x65,0x73,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2c,0x0, - 0x53,0x0,0x74,0x0,0x6f,0x0,0x70,0x0,0x6e,0x0,0x69,0x0,0x6f,0x0,0x77,0x0, - 0x65,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x67,0x1,0x42,0x0,0x6f,0x0, - 0x73,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x65,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x7,0x46,0x61,0x64,0x65,0x20,0x49,0x6e,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x26, - 0x0,0x57,0x0,0x79,0x0,0x63,0x0,0x69,0x0,0x73,0x0,0x7a,0x0,0x61,0x0,0x6a, - 0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x64, - 0x0,0x6e,0x0,0x69,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11, - 0x46,0x61,0x64,0x65,0x20,0x4f,0x75,0x74,0x20,0x50,0x72,0x65,0x76,0x69,0x6f,0x75, - 0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0xc,0x0,0x4f,0x0,0x64,0x0,0x77,0x0,0x72,0x0,0xf3,0x1, - 0x7,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x46,0x6c,0x69,0x70,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x34,0x0,0x47,0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x72,0x0,0x6f,0x0, - 0x77,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x6f,0x0, - 0x73,0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x3a,0x0,0xa,0x0,0x25,0x0, - 0x31,0x0,0x2f,0x0,0x25,0x0,0x32,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x17,0x47,0x65,0x6e,0x65,0x72,0x61,0x74,0x69,0x6e,0x67,0x20,0x63,0x68,0x61,0x72, - 0x73,0x3a,0xa,0x25,0x31,0x2f,0x25,0x32,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x4e,0x0,0x61, - 0x0,0x20,0x0,0x53,0x1,0x42,0x0,0x75,0x1,0x7c,0x0,0x62,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x28,0x0,0x6d,0x0,0x6f,0x0,0x64,0x0,0x29,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x5,0x47,0x75,0x61,0x72,0x64,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x0, - 0x57,0x0,0x69,0x0,0x6e,0x0,0x6e,0x0,0x79,0x0,0x21,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x7,0x47,0x75,0x69,0x6c,0x74,0x79,0x21,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x12, - 0x0,0x5a,0x0,0x41,0x0,0x43,0x0,0x5a,0x0,0x45,0x0,0x4b,0x0,0x41,0x0,0x4a, - 0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x48,0x4f,0x4c,0x44, - 0x20,0x49,0x54,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x5a,0x0,0x61,0x0,0x63,0x0,0x7a, - 0x0,0x65,0x0,0x6b,0x0,0x61,0x0,0x6a,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x8,0x48,0x6f,0x6c,0x64,0x20,0x49,0x74,0x21,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xec, - 0x0,0x4a,0x0,0x65,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x70,0x0,0x72, - 0x0,0x7a,0x0,0x65,0x0,0x64,0x0,0x2d,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d, - 0x0,0x61,0x0,0x63,0x0,0x6a,0x0,0x61,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73, - 0x0,0x74,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63, - 0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x2c,0x0,0x20,0x0,0x77,0x0,0x79, - 0x1,0x5b,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x74,0x0,0x6c,0x0,0x20,0x0,0x77, - 0x0,0x70,0x0,0x69,0x0,0x73,0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x74, - 0x0,0x65,0x0,0x6b,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x74, - 0x0,0x79,0x0,0x63,0x0,0x68,0x0,0x6d,0x0,0x69,0x0,0x61,0x0,0x73,0x0,0x74, - 0x0,0x6f,0x0,0x77,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x64, - 0x0,0x6e,0x0,0x6f,0x0,0x63,0x0,0x7a,0x0,0x65,0x1,0x5b,0x0,0x6e,0x0,0x69, - 0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x63,0x0,0x7a,0x0,0x61, - 0x0,0x73,0x0,0x20,0x0,0x6f,0x0,0x64,0x0,0x67,0x0,0x72,0x0,0x79,0x0,0x77, - 0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x69, - 0x0,0x6d,0x0,0x61,0x0,0x63,0x0,0x6a,0x0,0x69,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x5e,0x49,0x66,0x20,0x70,0x72,0x65,0x61,0x6e,0x69,0x6d, - 0x20,0x69,0x73,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x64,0x69,0x73, - 0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x74, - 0x65,0x78,0x74,0x20,0x69,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x6c,0x79,0x20, - 0x61,0x73,0x20,0x74,0x68,0x65,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x70,0x6c,0x61,0x79,0x73,0x20,0x63,0x6f,0x6e,0x63,0x75,0x72,0x72,0x65,0x6e, - 0x74,0x6c,0x79,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1c,0x0,0x4f,0x0,0x62,0x0,0x72,0x0,0x61, - 0x0,0x7a,0x0,0x79,0x0,0x20,0x0,0x28,0x0,0x2a,0x0,0x2e,0x0,0x70,0x0,0x6e, - 0x0,0x67,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x49,0x6d, - 0x61,0x67,0x65,0x73,0x20,0x28,0x2a,0x2e,0x70,0x6e,0x67,0x29,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1c, - 0x0,0x4e,0x0,0x61,0x0,0x74,0x0,0x79,0x0,0x63,0x0,0x68,0x0,0x6d,0x0,0x69, - 0x0,0x61,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x77,0x0,0x65,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x9,0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x28,0x0,0x5a,0x0,0x77,0x0,0x69,0x1,0x19,0x0,0x6b,0x0,0x73,0x0, - 0x7a,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x6b,0x0,0x20,0x1, - 0x7c,0x0,0x79,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x18,0x49,0x6e,0x63,0x72,0x65,0x61,0x73,0x65,0x20,0x74,0x68, - 0x65,0x20,0x68,0x65,0x61,0x6c,0x74,0x68,0x20,0x62,0x61,0x72,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x22,0x0,0x50,0x0,0x6c,0x0,0x69,0x0,0x6b,0x0,0x69,0x0,0x20,0x0,0x69,0x0, - 0x6e,0x0,0x69,0x0,0x20,0x0,0x28,0x0,0x2a,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0, - 0x69,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x49,0x6e,0x69, - 0x20,0x46,0x69,0x6c,0x65,0x73,0x20,0x28,0x2a,0x2e,0x69,0x6e,0x69,0x29,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0xd4,0x0,0x50,0x0,0x6f,0x0,0x7a,0x0,0x77,0x0,0x61,0x0,0x6c,0x0,0x61, - 0x0,0x20,0x0,0x63,0x0,0x69,0x0,0x20,0x0,0x6f,0x0,0x74,0x0,0x72,0x0,0x7a, - 0x0,0x79,0x0,0x6d,0x0,0x79,0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x6b, - 0x0,0x6f,0x0,0x6d,0x0,0x75,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x61,0x0,0x74, - 0x0,0x79,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61, - 0x0,0x77,0x0,0x2c,0x0,0x20,0x0,0x67,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x77, - 0x1,0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2e, - 0x0,0xa,0x0,0x28,0x0,0x4d,0x0,0x6f,0x1,0x7c,0x0,0x65,0x0,0x73,0x0,0x7a, - 0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69,0x1,0x7, - 0x0,0x20,0x0,0x73,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x70, - 0x0,0x72,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x6e,0x0,0x63, - 0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x55,0x0,0x73,0x0,0x74, - 0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x63, - 0x0,0x68,0x0,0x21,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5a, - 0x4c,0x65,0x74,0x73,0x20,0x79,0x6f,0x75,0x20,0x72,0x65,0x63,0x65,0x69,0x76,0x65, - 0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x77,0x68,0x65, - 0x6e,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x2e,0xa,0x28,0x59,0x6f,0x75,0x20, - 0x63,0x61,0x6e,0x20,0x73,0x65,0x74,0x20,0x79,0x6f,0x75,0x72,0x20,0x70,0x72,0x65, - 0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20, - 0x53,0x65,0x74,0x74,0x69,0x6e,0x67,0x73,0x21,0x29,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x38,0x0,0x5a, - 0x0,0x61,0x1,0x42,0x0,0x61,0x0,0x64,0x0,0x75,0x0,0x6a,0x0,0x20,0x0,0x64, - 0x0,0x6f,0x0,0x77,0x0,0x6f,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x7a,0x0,0x20, - 0x0,0x70,0x0,0x6c,0x0,0x69,0x0,0x6b,0x0,0x75,0x0,0x20,0x0,0x2e,0x0,0x69, - 0x0,0x6e,0x0,0x69,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x20, - 0x4c,0x6f,0x61,0x64,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x66,0x72, - 0x6f,0x6d,0x20,0x61,0x6e,0x20,0x2e,0x69,0x6e,0x69,0x20,0x66,0x69,0x6c,0x65,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x28,0x0,0x44,0x0,0x7a,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x6e, - 0x0,0x69,0x0,0x6b,0x0,0x20,0x0,0x69,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x64,0x0,0xf3,0x1,0x42,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0xd,0x4c,0x6f,0x67,0x20,0x67,0x6f,0x65,0x73,0x20,0x64, - 0x6f,0x77,0x6e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x2a,0x0,0x44,0x0,0x7a,0x0,0x69,0x0,0x65,0x0, - 0x6e,0x0,0x6e,0x0,0x69,0x0,0x6b,0x0,0x20,0x0,0x69,0x0,0x64,0x0,0x7a,0x0, - 0x69,0x0,0x65,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x67,0x0,0xf3,0x0,0x72,0x1, - 0x19,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x4c,0x6f,0x67,0x20,0x67, - 0x6f,0x65,0x73,0x20,0x75,0x70,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x26,0x0,0x4c,0x0,0x6f,0x0,0x67, - 0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6e, - 0x0,0x69,0x0,0x65,0x0,0x75,0x0,0x64,0x0,0x61,0x0,0x6e,0x0,0x65,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x4c,0x6f,0x67,0x69,0x6e,0x20, - 0x75,0x6e,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x66,0x75,0x6c,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff, - 0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4d,0x61,0x73,0x74,0x65, - 0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x12,0x0,0x57,0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0, - 0x6d,0x0,0x6f,0x1,0x5b,0x1,0x7,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x7,0x4d,0x65,0x73,0x73,0x61,0x67,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x7e,0x0,0x4f,0x0,0x64, - 0x0,0x62,0x0,0x69,0x0,0x6a,0x0,0x20,0x0,0x6c,0x0,0x75,0x0,0x73,0x0,0x74, - 0x0,0x72,0x0,0x7a,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x65, - 0x0,0x6d,0x0,0x6f,0x0,0x74,0x0,0x6b,0x0,0x69,0x0,0x20,0x0,0x74,0x0,0x77, - 0x0,0x6f,0x0,0x6a,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73, - 0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x2c,0x0,0x20,0x0,0x67,0x0,0x64, - 0x0,0x79,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x74, - 0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63, - 0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x2c,0x4d,0x69,0x72,0x72,0x6f,0x72,0x20,0x79,0x6f,0x75,0x72,0x20, - 0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73,0x20,0x65,0x6d,0x6f,0x74, - 0x65,0x73,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0xc,0x0,0x4d,0x0,0x75,0x0,0x7a,0x0,0x79,0x0,0x6b,0x0,0x61, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x4d,0x75,0x73,0x69,0x63,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0xa,0x0,0x4e,0x0,0x61,0x0,0x7a,0x0,0x77,0x0,0x61,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x4e,0x61,0x6d,0x65,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x38,0x0, - 0x4e,0x0,0x61,0x0,0x7a,0x0,0x77,0x0,0x61,0x0,0x3a,0x0,0x20,0x0,0x25,0x0, - 0x31,0x0,0xa,0x0,0x4f,0x0,0x62,0x0,0x72,0x0,0x61,0x0,0x7a,0x0,0x3a,0x0, - 0x20,0x0,0x25,0x0,0x32,0x0,0xa,0x0,0x4f,0x0,0x70,0x0,0x69,0x0,0x73,0x0, - 0x3a,0x0,0xa,0x0,0x25,0x0,0x33,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x22,0x4e,0x61,0x6d,0x65,0x3a,0x20,0x25,0x31,0xa,0x49,0x6d,0x61,0x67,0x65,0x3a, - 0x20,0x25,0x32,0xa,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x3a, - 0xa,0x25,0x33,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x52,0x0,0x50,0x0,0x72,0x0,0x7a,0x0,0x65,0x0, - 0x6a,0x0,0x64,0x1,0x7a,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x25,0x0, - 0x31,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x64,0x0, - 0x6f,0x0,0x6a,0x1,0x5b,0x1,0x7,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0, - 0x64,0x0,0x6f,0x0,0x6b,0x0,0x75,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0, - 0x75,0x0,0x20,0x0,0x43,0x0,0x4d,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x1e,0x4e,0x61,0x76,0x69,0x67,0x61,0x74,0x65,0x20,0x74,0x6f,0x20,0x25, - 0x31,0x20,0x66,0x6f,0x72,0x20,0x74,0x68,0x65,0x20,0x43,0x4d,0x20,0x64,0x6f,0x63, - 0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x6,0x0,0x4e,0x0,0x69,0x0,0x63,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x4,0x4e,0x6f,0x6e,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x53,0x0, - 0x50,0x0,0x52,0x0,0x5a,0x0,0x45,0x0,0x43,0x0,0x49,0x0,0x57,0x0,0x21,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x4f,0x42,0x4a,0x45,0x43,0x54,0x49, - 0x4f,0x4e,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x53,0x0,0x70,0x0,0x72,0x0,0x7a,0x0, - 0x65,0x0,0x63,0x0,0x69,0x0,0x77,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0xa,0x4f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x21,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x2c,0x0,0x55,0x0,0x70,0x0,0x73,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0,0x65,0x0, - 0x73,0x0,0x74,0x0,0x65,0x1,0x5b,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0,0x75,0x0, - 0x74,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x21,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x4f,0x6f,0x70,0x73,0x2c,0x20,0x79,0x6f,0x75, - 0x27,0x72,0x65,0x20,0x6d,0x75,0x74,0x65,0x64,0x21,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x4f, - 0x0,0x74,0x0,0x77,0x0,0xf3,0x0,0x72,0x0,0x7a,0x0,0x20,0x0,0x65,0x0,0x6b, - 0x0,0x77,0x0,0x69,0x0,0x70,0x0,0x75,0x0,0x6e,0x0,0x65,0x0,0x6b,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x4f,0x70,0x65,0x6e,0x20,0x49,0x6e,0x76, - 0x65,0x6e,0x74,0x6f,0x72,0x79,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa,0x0,0x48,0x0,0x61,0x0,0x73, - 0x1,0x42,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x50,0x61, - 0x73,0x73,0x77,0x6f,0x72,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x5a,0x0,0x61,0x0,0x68, - 0x0,0x61,0x0,0x73,0x1,0x42,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x79, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x50,0x61,0x73,0x73,0x77,0x6f, - 0x72,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2a,0x0,0x57,0x1,0x42,0x1,0x5,0x0,0x63, - 0x0,0x7a,0x0,0x20,0x0,0x4c,0x0,0x6f,0x0,0x73,0x0,0x6f,0x0,0x77,0x1,0x5, - 0x0,0x20,0x0,0x50,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x6b, - 0x1,0x19,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x50,0x6c,0x61,0x79, - 0x20,0x52,0x61,0x6e,0x64,0x6f,0x6d,0x20,0x53,0x6f,0x6e,0x67,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa6, - 0x0,0x4f,0x0,0x64,0x0,0x65,0x0,0x67,0x0,0x72,0x0,0x61,0x0,0x6a,0x0,0x20, - 0x0,0x70,0x0,0x6f,0x0,0x6a,0x0,0x65,0x0,0x64,0x0,0x79,0x1,0x44,0x0,0x63, - 0x0,0x7a,0x1,0x5,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61, - 0x0,0x63,0x0,0x6a,0x1,0x19,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0,0x61,0x0,0x6b, - 0x0,0x20,0x0,0x7a,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e,0x0,0x69, - 0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x72, - 0x0,0x7a,0x0,0x65,0x0,0x7a,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x74, - 0x0,0x6b,0x1,0x19,0x0,0x2c,0x0,0x20,0x0,0x67,0x0,0x64,0x0,0x79,0x0,0x20, - 0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20, - 0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f, - 0x0,0x6e,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x42, - 0x50,0x6c,0x61,0x79,0x20,0x61,0x20,0x73,0x69,0x6e,0x67,0x6c,0x65,0x2d,0x73,0x68, - 0x6f,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x61,0x73,0x20, - 0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x62,0x79,0x20,0x74,0x68,0x65,0x20,0x65, - 0x6d,0x6f,0x74,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65, - 0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0xc2,0x0,0x5a,0x0,0x61,0x0,0x67,0x0,0x72,0x0,0x61, - 0x0,0x6a,0x0,0x20,0x0,0x64,0x1,0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0,0x6b, - 0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61, - 0x0,0x63,0x0,0x6a,0x0,0x69,0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x61,0x0,0x6e, - 0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x63,0x0,0x6a,0x1,0x19,0x0,0x20,0x0,0x77, - 0x0,0x20,0x0,0x6f,0x0,0x6b,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x70, - 0x0,0x6f,0x0,0x64,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x6e, - 0x0,0x61,0x0,0x73,0x0,0x74,0x1,0x19,0x0,0x70,0x0,0x6e,0x0,0x65,0x0,0x6a, - 0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x6f, - 0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x2c,0x0,0x20,0x0,0x67,0x0,0x64,0x0,0x79, - 0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f, - 0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a, - 0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x5d,0x50,0x6c,0x61,0x79,0x20,0x72,0x65,0x61,0x6c,0x69,0x7a,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x61,0x6e,0x64,0x20,0x61,0x6e,0x69, - 0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x76,0x69, - 0x65,0x77,0x70,0x6f,0x72,0x74,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x6e,0x65, - 0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61,0x67, - 0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0xc,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x64,0x0,0x2d,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x50,0x72,0x65,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x10, - 0x0,0x41,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x63,0x0,0x6a,0x0,0x61, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x50,0x72,0x65,0x61,0x6e,0x69, - 0x6d,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x88,0x0,0x5a,0x0,0x61,0x0,0x70,0x0,0x72,0x0,0x65,0x0, - 0x7a,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x75,0x0,0x6a,0x0,0x65,0x0,0x73,0x0, - 0x7a,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x6f,0x0, - 0x77,0x0,0xf3,0x0,0x64,0x0,0x20,0x0,0x6b,0x0,0x61,0x1,0x7c,0x0,0x64,0x0, - 0x65,0x0,0x6d,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x63,0x0, - 0x7a,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0, - 0x65,0x0,0x6a,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x73,0x0,0x74,0x1,0x19,0x0, - 0x70,0x0,0x6e,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x61,0x0, - 0x64,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x46,0x50,0x72,0x65,0x73,0x65,0x6e,0x74,0x20,0x74, - 0x68,0x69,0x73,0x20,0x70,0x69,0x65,0x63,0x65,0x20,0x6f,0x66,0x20,0x65,0x76,0x69, - 0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x65,0x76,0x65,0x72,0x79,0x6f,0x6e, - 0x65,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x6e,0x65,0x78,0x74,0x20,0x73, - 0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0xc,0x0,0x50,0x0,0x6f,0x0,0x77,0x0,0xf3,0x0,0x64,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x52,0x65,0x61,0x73,0x6f,0x6e,0x3a,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x90,0x0,0x4f,0x0,0x64,0x1,0x5b,0x0,0x77,0x0,0x69,0x0,0x65,0x1,0x7c, - 0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x74,0x0,0x79,0x0,0x77,0x0,0x20,0x0,0x69, - 0x0,0x20,0x0,0x75,0x0,0x61,0x0,0x6b,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c, - 0x0,0x6e,0x0,0x69,0x0,0x6a,0x0,0x20,0x0,0x77,0x0,0x73,0x0,0x7a,0x0,0x79, - 0x0,0x73,0x0,0x74,0x0,0x6b,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6c, - 0x0,0x65,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x79,0x0,0x20,0x0,0x69, - 0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x66,0x0,0x65,0x0,0x6a,0x0,0x73, - 0x0,0x75,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x64, - 0x0,0x6f,0x0,0x70,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x77,0x0,0x61,0x1,0x7, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3d,0x52,0x65,0x66,0x72, - 0x65,0x73,0x68,0x20,0x74,0x68,0x65,0x20,0x74,0x68,0x65,0x6d,0x65,0x20,0x61,0x6e, - 0x64,0x20,0x75,0x70,0x64,0x61,0x74,0x65,0x20,0x61,0x6c,0x6c,0x20,0x6f,0x66,0x20, - 0x74,0x68,0x65,0x20,0x75,0x69,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20, - 0x74,0x6f,0x20,0x6d,0x61,0x74,0x63,0x68,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1a,0x0,0x4f,0x0, - 0x64,0x1,0x5b,0x0,0x77,0x0,0x69,0x0,0x65,0x1,0x7c,0x0,0x20,0x0,0x6d,0x0, - 0x6f,0x0,0x74,0x0,0x79,0x0,0x77,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xc,0x52,0x65,0x6c,0x6f,0x61,0x64,0x20,0x74,0x68,0x65,0x6d,0x65,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x9e,0x0,0x55,0x0,0x73,0x0,0x75,0x1,0x44,0x0,0x20,0x0,0x6f,0x0,0x62,0x0, - 0x65,0x0,0x63,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x7a,0x0, - 0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x79,0x0,0x20,0x0, - 0x69,0x0,0x6e,0x0,0x69,0x0,0x73,0x0,0x77,0x0,0x61,0x0,0x70,0x0,0x20,0x0, - 0x7a,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x79,0x0,0x20,0x0, - 0x69,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x77,0x0,0x72,0x0,0xf3,0x1,0x7,0x0, - 0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x69,0x0,0x65,0x0,0x72,0x0, - 0x77,0x0,0x6f,0x0,0x74,0x0,0x6e,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0, - 0x66,0x0,0x6f,0x0,0x6c,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x20,0x0, - 0x70,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x60,0x52,0x65,0x6d,0x6f,0x76,0x65,0x20, - 0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x79,0x20,0x73,0x65, - 0x6c,0x65,0x63,0x74,0x65,0x64,0x20,0x69,0x6e,0x69,0x73,0x77,0x61,0x70,0x20,0x66, - 0x72,0x6f,0x6d,0x20,0x74,0x68,0x65,0x20,0x6c,0x69,0x73,0x74,0x20,0x61,0x6e,0x64, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x6f, - 0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65, - 0x72,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x54,0x0,0x57,0x0, - 0x79,0x0,0x63,0x0,0x6f,0x0,0x66,0x0,0x61,0x0,0x6a,0x0,0x20,0x0,0x6f,0x0, - 0x62,0x0,0x65,0x0,0x63,0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x7a,0x0,0x61,0x0, - 0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x79,0x0, - 0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x20,0x0,0x64,0x1, - 0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0,0x6b,0x0,0x6f,0x0,0x77,0x0,0x79,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2b,0x52,0x65,0x6d,0x6f,0x76, - 0x65,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x79,0x20, - 0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65, - 0x66,0x66,0x65,0x63,0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x54,0x0,0x5a,0x0,0x61,0x1,0x7c, - 0x1,0x5,0x0,0x64,0x0,0x61,0x0,0x6a,0x0,0x20,0x0,0x75,0x0,0x77,0x0,0x61, - 0x0,0x67,0x1,0x19,0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x72, - 0x0,0x61,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x6f,0x0,0x62, - 0x0,0x65,0x0,0x63,0x0,0x6e,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x73, - 0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x38,0x52,0x65,0x71,0x75,0x65,0x73,0x74,0x20, - 0x74,0x68,0x65,0x20,0x61,0x74,0x74,0x65,0x6e,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x66, - 0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x73,0x65,0x72, - 0x76,0x65,0x72,0x27,0x73,0x20,0x6d,0x6f,0x64,0x65,0x72,0x61,0x74,0x6f,0x72,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x78,0x0,0x5a,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x74, - 0x0,0x75,0x0,0x6a,0x0,0x20,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x65, - 0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x0,0x63,0x0,0x6e,0x0,0x69, - 0x0,0x63,0x0,0x7a,0x0,0x65,0x0,0x20,0x0,0x74,0x1,0x42,0x0,0x6f,0x0,0x20, - 0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x20, - 0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x79,0x1,0x5b, - 0x0,0x6c,0x0,0x6e,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x77,0x0,0x61,0x0,0x72, - 0x0,0x74,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x3f,0x52,0x65,0x73,0x65,0x74,0x20,0x79,0x6f,0x75,0x72, - 0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73,0x20,0x73,0x75,0x70, - 0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x72,0x79,0x20,0x62,0x61,0x63,0x6b,0x67, - 0x72,0x6f,0x75,0x6e,0x64,0x20,0x74,0x6f,0x20,0x69,0x74,0x73,0x20,0x64,0x65,0x66, - 0x61,0x75,0x6c,0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x44,0x0,0x57,0x0,0x72,0x0,0xf3,0x1, - 0x7,0x0,0x20,0x0,0x7a,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x77,0x0,0x72,0x0, - 0x6f,0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0, - 0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x79,0x0,0x20,0x0,0x73,0x0,0x65,0x0, - 0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0xf3,0x0,0x77,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x1f,0x52,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61, - 0x63,0x6b,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72, - 0x20,0x6c,0x69,0x73,0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x5a,0x0,0x61,0x0,0x70, - 0x0,0x69,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x65,0x0,0x6b,0x0,0x77,0x0,0x69, - 0x0,0x70,0x0,0x75,0x0,0x6e,0x0,0x65,0x0,0x6b,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xe,0x53,0x61,0x76,0x65,0x20,0x49,0x6e,0x76,0x65,0x6e,0x74,0x6f, - 0x72,0x79,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x68,0x0,0x5a,0x0,0x61,0x0,0x70,0x0,0x69,0x0,0x73, - 0x0,0x7a,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0,0x69,0x0,0x61,0x0,0x6e,0x0,0x79, - 0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x67,0x0,0x6f, - 0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x6f,0x0,0x64,0x0,0x75,0x0,0x20, - 0x0,0x69,0x0,0x20,0x0,0x77,0x0,0x79,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x6a, - 0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x73, - 0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x48,0x53,0x61,0x76,0x65,0x20,0x61,0x6e,0x79, - 0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x20,0x6d,0x61,0x64,0x65,0x20,0x74,0x6f, - 0x20,0x74,0x68,0x69,0x73,0x20,0x70,0x69,0x65,0x63,0x65,0x20,0x6f,0x66,0x20,0x65, - 0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x61,0x6e,0x64,0x20,0x73,0x65,0x6e,0x64, - 0x20,0x74,0x68,0x65,0x6d,0x20,0x74,0x6f,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x38,0x0,0x5a,0x0,0x61,0x0,0x70,0x0,0x69,0x0,0x73,0x0,0x7a, - 0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x6f,0x0,0x64,0x0,0x79,0x0,0x20, - 0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x6c,0x0,0x69,0x0,0x6b,0x0,0x75, - 0x0,0x20,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x1e,0x53,0x61,0x76,0x65,0x20,0x65,0x76,0x69,0x64,0x65, - 0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x61,0x6e,0x20,0x2e,0x69,0x6e,0x69,0x20,0x66, - 0x69,0x6c,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x10,0x0,0x57,0x0,0x79,0x0,0x73,0x0,0x7a, - 0x0,0x75,0x0,0x6b,0x0,0x61,0x0,0x6a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x6,0x53,0x65,0x61,0x72,0x63,0x68,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x58,0x0,0x5a,0x0,0x61, - 0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x20,0x0,0x70,0x0,0x6f, - 0x0,0x73,0x0,0x74,0x0,0x61,0x1,0x7,0x0,0x2c,0x0,0x20,0x0,0x7a,0x0,0x20, - 0x0,0x6b,0x0,0x74,0x0,0xf3,0x0,0x72,0x1,0x5,0x0,0x20,0x0,0x63,0x0,0x68, - 0x0,0x63,0x0,0x65,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19, - 0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x6f,0x0,0x77,0x0,0x61, - 0x1,0x7,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x29,0x53,0x65, - 0x6c,0x65,0x63,0x74,0x20,0x61,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72, - 0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x73,0x68,0x20,0x74,0x6f,0x20,0x70,0x61,0x69, - 0x72,0x20,0x77,0x69,0x74,0x68,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x53,0x0,0x65,0x0, - 0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x6,0x53,0x65,0x72,0x76,0x65,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x2,0x3a,0x0,0x55,0x0,0x73,0x0, - 0x74,0x0,0x61,0x0,0x77,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x6b,0x0, - 0x74,0x0,0x20,0x0,0x64,0x1,0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0,0x6b,0x0, - 0x6f,0x0,0x77,0x0,0x79,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0, - 0x61,0x0,0x67,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20,0x0, - 0x64,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0, - 0x65,0x0,0x6a,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x73,0x0,0x74,0x1,0x19,0x0, - 0x70,0x0,0x6e,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x27,0x0,0x41,0x0,0x6e,0x0, - 0x69,0x0,0x6d,0x0,0x61,0x0,0x63,0x0,0x6a,0x0,0x69,0x0,0x27,0x0,0x2e,0x0, - 0x20,0x0,0x5a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69,0x0, - 0x65,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x67,0x0, - 0x6f,0x0,0x20,0x0,0x6a,0x0,0x61,0x0,0x6b,0x0,0x6f,0x0,0x20,0x0,0x64,0x0, - 0x6f,0x0,0x6d,0x0,0x79,0x1,0x5b,0x0,0x6c,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0, - 0x20,0x0,0x75,0x1,0x7c,0x0,0x79,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x64,0x1, - 0x7a,0x0,0x77,0x0,0x69,0x1,0x19,0x0,0x6b,0x0,0x75,0x0,0x20,0x0,0x7a,0x0, - 0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x6f,0x0,0x77,0x0, - 0x61,0x0,0x6e,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x72,0x0, - 0x7a,0x0,0x65,0x0,0x7a,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x74,0x0, - 0x6b,0x1,0x19,0x0,0x20,0x0,0x28,0x0,0x6a,0x0,0x65,0x1,0x5b,0x0,0x6c,0x0, - 0x69,0x0,0x20,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x6e,0x0,0x69,0x0,0x65,0x0, - 0x6a,0x0,0x65,0x0,0x29,0x0,0x2e,0x0,0xa,0x0,0x45,0x0,0x64,0x0,0x79,0x0, - 0x74,0x0,0x75,0x0,0x6a,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x70,0x0,0x72,0x0, - 0x7a,0x0,0x65,0x0,0x7a,0x0,0x20,0x0,0x77,0x0,0x63,0x0,0x69,0x1,0x5b,0x0, - 0x6e,0x0,0x69,0x1,0x19,0x0,0x63,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x45,0x0, - 0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x20,0x0, - 0x77,0x0,0x70,0x0,0x69,0x0,0x73,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x75,0x0, - 0x20,0x0,0x74,0x0,0x65,0x0,0x6b,0x0,0x73,0x0,0x74,0x0,0x75,0x0,0x2c,0x0, - 0x20,0x0,0x5b,0x0,0x58,0x0,0x5d,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0, - 0x20,0x0,0x75,0x0,0x73,0x0,0x75,0x0,0x6e,0x1,0x5,0x1,0x7,0x0,0x2e,0x0, - 0x20,0x0,0x5a,0x0,0x61,0x0,0x70,0x0,0x69,0x0,0x73,0x0,0x75,0x0,0x6a,0x0, - 0x65,0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x74,0x0,0x6f,0x0, - 0x20,0x0,0x77,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x2f,0x0, - 0x63,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x65,0x0, - 0x72,0x0,0x73,0x0,0x2f,0x0,0x3c,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x72,0x0, - 0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x3e,0x0,0x2f,0x0,0x73,0x0,0x6f,0x0, - 0x75,0x0,0x6e,0x0,0x64,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x2e,0x0, - 0x69,0x0,0x6e,0x0,0x69,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe1,0x53, - 0x65,0x74,0x20,0x61,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63, - 0x74,0x20,0x74,0x6f,0x20,0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75, - 0x72,0x20,0x6e,0x65,0x78,0x74,0x20,0x27,0x50,0x72,0x65,0x61,0x6e,0x69,0x6d,0x27, - 0x2e,0x20,0x4c,0x65,0x61,0x76,0x69,0x6e,0x67,0x20,0x69,0x74,0x20,0x6f,0x6e,0x20, - 0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x77,0x69,0x6c,0x6c,0x20,0x75,0x73,0x65, - 0x20,0x74,0x68,0x65,0x20,0x65,0x6d,0x6f,0x74,0x65,0x2d,0x64,0x65,0x66,0x69,0x6e, - 0x65,0x64,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x28,0x69,0x66,0x20,0x61,0x6e,0x79, - 0x29,0x2e,0xa,0x45,0x64,0x69,0x74,0x20,0x62,0x79,0x20,0x74,0x79,0x70,0x69,0x6e, - 0x67,0x20,0x61,0x6e,0x64,0x20,0x70,0x72,0x65,0x73,0x73,0x69,0x6e,0x67,0x20,0x45, - 0x6e,0x74,0x65,0x72,0x2c,0x20,0x5b,0x58,0x5d,0x20,0x74,0x6f,0x20,0x72,0x65,0x6d, - 0x6f,0x76,0x65,0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x73,0x61,0x76,0x65,0x73,0x20, - 0x74,0x6f,0x20,0x79,0x6f,0x75,0x72,0x20,0x62,0x61,0x73,0x65,0x2f,0x63,0x68,0x61, - 0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x2f,0x3c,0x63,0x68,0x61,0x72,0x6e,0x61,0x6d, - 0x65,0x3e,0x2f,0x73,0x6f,0x75,0x6e,0x64,0x6c,0x69,0x73,0x74,0x2e,0x69,0x6e,0x69, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x1,0x9e,0x0,0x55,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x20, - 0x0,0x27,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x73,0x0,0x77,0x0,0x61,0x0,0x70, - 0x0,0x27,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x62,0x0,0x6f,0x0,0x20,0x0,0x61, - 0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x61,0x0,0x74,0x0,0x79, - 0x0,0x77,0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x6c,0x0,0x64, - 0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61, - 0x0,0x63,0x0,0x69,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20, - 0x0,0x6f,0x0,0x64,0x0,0x6e,0x0,0x6f,0x0,0x73,0x0,0x69,0x1,0x42,0x0,0x20, - 0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x74, - 0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x6f,0x0,0x62, - 0x0,0x65,0x0,0x63,0x0,0x6e,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x70,0x0,0x6f, - 0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x2e,0x0,0xa,0x0,0x45, - 0x0,0x64,0x0,0x79,0x0,0x74,0x0,0x75,0x0,0x6a,0x0,0x20,0x0,0x70,0x0,0x6f, - 0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x7a,0x0,0x20,0x0,0x77,0x0,0x63, - 0x0,0x69,0x1,0x5b,0x0,0x6e,0x0,0x69,0x1,0x19,0x0,0x63,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x45,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x70, - 0x0,0x6f,0x0,0x20,0x0,0x77,0x0,0x70,0x0,0x69,0x0,0x73,0x0,0x61,0x0,0x6e, - 0x0,0x69,0x0,0x75,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6b,0x0,0x73,0x0,0x74, - 0x0,0x75,0x0,0x2c,0x0,0x20,0x0,0x5b,0x0,0x58,0x0,0x5d,0x0,0x20,0x0,0x61, - 0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x75,0x0,0x6e,0x1,0x5, - 0x1,0x7,0x0,0x2e,0x0,0x20,0x0,0x5a,0x0,0x61,0x0,0x70,0x0,0x69,0x0,0x73, - 0x0,0x75,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20, - 0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x73, - 0x0,0x65,0x0,0x2f,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x63, - 0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x2f,0x0,0x69,0x0,0x6e,0x0,0x69, - 0x0,0x73,0x0,0x77,0x0,0x61,0x0,0x70,0x0,0x73,0x0,0x2e,0x0,0x69,0x0,0x6e, - 0x0,0x69,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb4,0x53,0x65,0x74,0x20, - 0x61,0x6e,0x20,0x27,0x69,0x6e,0x69,0x73,0x77,0x61,0x70,0x27,0x2c,0x20,0x6f,0x72, - 0x20,0x61,0x6e,0x20,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61,0x74,0x69,0x76,0x65,0x20, - 0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72, - 0x20,0x74,0x6f,0x20,0x72,0x65,0x66,0x65,0x72,0x20,0x74,0x6f,0x20,0x66,0x72,0x6f, - 0x6d,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x63, - 0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x2e,0xa,0x45,0x64,0x69,0x74,0x20,0x62, - 0x79,0x20,0x74,0x79,0x70,0x69,0x6e,0x67,0x20,0x61,0x6e,0x64,0x20,0x70,0x72,0x65, - 0x73,0x73,0x69,0x6e,0x67,0x20,0x45,0x6e,0x74,0x65,0x72,0x2c,0x20,0x5b,0x58,0x5d, - 0x20,0x74,0x6f,0x20,0x72,0x65,0x6d,0x6f,0x76,0x65,0x2e,0x20,0x54,0x68,0x69,0x73, - 0x20,0x73,0x61,0x76,0x65,0x73,0x20,0x74,0x6f,0x20,0x79,0x6f,0x75,0x72,0x20,0x62, - 0x61,0x73,0x65,0x2f,0x69,0x6e,0x69,0x73,0x77,0x61,0x70,0x73,0x2e,0x69,0x6e,0x69, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x8c,0x0,0x55,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x20, - 0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x74,0x0,0x6b,0x1,0x19,0x0,0x20,0x0,0x74, - 0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x70,0x0,0x6f, - 0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x20,0x0,0x64,0x0,0x6f, - 0x0,0x20,0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x67,0x0,0x72,0x0,0x61,0x0,0x6e, - 0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x63,0x0,0x7a, - 0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x73,0x0,0x74,0x1,0x19, - 0x0,0x70,0x0,0x6e,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x61, - 0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x38,0x53,0x65,0x74,0x20,0x79,0x6f, - 0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73,0x20,0x65, - 0x6d,0x6f,0x74,0x65,0x20,0x74,0x6f,0x20,0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e,0x20, - 0x79,0x6f,0x75,0x72,0x20,0x6e,0x65,0x78,0x74,0x20,0x6d,0x65,0x73,0x73,0x61,0x67, - 0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x4e,0x0,0x55,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77, - 0x0,0x20,0x0,0x75,0x0,0x7a,0x0,0x75,0x0,0x70,0x0,0x65,0x1,0x42,0x0,0x6e, - 0x0,0x69,0x0,0x61,0x0,0x6a,0x1,0x5,0x0,0x63,0x0,0x65,0x0,0x20,0x0,0x74, - 0x1,0x42,0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x65, - 0x0,0x6a,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x63, - 0x0,0x69,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2e,0x53,0x65, - 0x74,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72, - 0x27,0x73,0x20,0x73,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x72,0x79, - 0x20,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x2e,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x14, - 0x0,0x55,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x6e, - 0x0,0x69,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x65, - 0x74,0x74,0x69,0x6e,0x67,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x6,0x0,0x53,0x0,0x66,0x0,0x78, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x53,0x66,0x78,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x90,0x0,0x57,0x0,0x73,0x0,0x74,0x0,0x72,0x0,0x7a,0x1,0x5,0x1,0x5b,0x0, - 0x6e,0x0,0x69,0x0,0x6a,0x0,0x20,0x0,0x65,0x0,0x6b,0x0,0x72,0x0,0x61,0x0, - 0x6e,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x63,0x0, - 0x7a,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x73,0x0,0x74,0x1, - 0x19,0x0,0x70,0x0,0x6e,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x77,0x0,0x69,0x0, - 0x61,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0, - 0x2c,0x0,0x20,0x0,0x67,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x6a,0x0,0x65,0x0, - 0x73,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x61,0x0, - 0x7a,0x0,0x6e,0x0,0x61,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x35,0x53,0x68,0x61,0x6b,0x65, - 0x20,0x74,0x68,0x65,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x20,0x6f,0x6e,0x20,0x6e, - 0x65,0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61, - 0x67,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0xc,0x0,0x4b,0x0,0x73,0x0,0x79,0x0,0x77,0x0,0x6b,0x0,0x61, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x68,0x6f,0x77,0x6e,0x61, - 0x6d,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x4b,0x0,0x73,0x0,0x79,0x0,0x77,0x0,0x6b, - 0x0,0x69,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x53,0x68,0x6f,0x77, - 0x6e,0x61,0x6d,0x65,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x53,0x0,0x70,0x0,0x65,0x0, - 0x6b,0x0,0x74,0x0,0x61,0x0,0x74,0x0,0x6f,0x0,0x72,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x9,0x53,0x70,0x65,0x63,0x74,0x61,0x74,0x6f,0x72,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x32,0x0,0x5a,0x0,0x61,0x0,0x74,0x0,0x72,0x0,0x7a,0x0,0x79,0x0,0x6d, - 0x0,0x61,0x0,0x6a,0x0,0x20,0x0,0x4f,0x0,0x62,0x0,0x65,0x0,0x63,0x0,0x6e, - 0x1,0x5,0x0,0x20,0x0,0x50,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x65,0x0,0x6e, - 0x0,0x6b,0x1,0x19,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x53,0x74, - 0x6f,0x70,0x20,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x53,0x6f,0x6e,0x67,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x70,0x0,0x5a,0x0,0x61,0x0,0x70,0x0,0x69,0x0,0x73,0x0,0x61,0x0, - 0x6e,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x6d,0x0,0x79,0x1,0x5b,0x0, - 0x6c,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x65,0x0,0x64,0x0, - 0x79,0x0,0x74,0x0,0x75,0x0,0x6a,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x6b,0x0, - 0x75,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x20,0x0,0x69,0x0,0x20,0x0, - 0x6c,0x0,0x69,0x0,0x6e,0x0,0x6b,0x0,0x20,0x0,0x63,0x0,0x6d,0x0,0x64,0x0, - 0x6f,0x0,0x63,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0, - 0x69,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x36,0x53,0x75,0x63, - 0x63,0x65,0x73,0x66,0x75,0x6c,0x6c,0x79,0x20,0x73,0x61,0x76,0x65,0x64,0x2c,0x20, - 0x65,0x64,0x69,0x74,0x20,0x64,0x6f,0x63,0x20,0x61,0x6e,0x64,0x20,0x63,0x6d,0x64, - 0x6f,0x63,0x20,0x6c,0x69,0x6e,0x6b,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x69, - 0x6e,0x69,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x5a,0x0,0x50,0x0,0x72,0x0,0x7a,0x0,0x65,0x1, - 0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x6a,0x0,0x20,0x0,0x70,0x0, - 0x6f,0x0,0x6d,0x0,0x69,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x79,0x0,0x20,0x0, - 0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6d,0x0,0x69,0x0,0x20,0x0, - 0x4f,0x0,0x62,0x0,0x73,0x0,0x7a,0x0,0x61,0x0,0x72,0x0,0xf3,0x0,0x77,0x0, - 0x20,0x0,0x69,0x0,0x20,0x0,0x4d,0x0,0x75,0x0,0x7a,0x0,0x79,0x0,0x6b,0x0, - 0x69,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x24,0x53,0x77,0x69,0x74,0x63, - 0x68,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e,0x20,0x41,0x72,0x65,0x61,0x73,0x20, - 0x61,0x6e,0x64,0x20,0x4d,0x75,0x73,0x69,0x63,0x20,0x6c,0x69,0x73,0x74,0x73,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x5e,0x0,0x50,0x0,0x72,0x0,0x7a,0x0,0x65,0x1,0x42,0x1,0x5,0x0, - 0x63,0x0,0x7a,0x0,0x20,0x0,0x65,0x0,0x6b,0x0,0x72,0x0,0x61,0x0,0x6e,0x0, - 0x20,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x6f,0x0,0x64,0x0,0xf3,0x0,0x77,0x0, - 0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x67,0x0,0x6c,0x0,0x6f,0x0,0x62,0x0, - 0x61,0x0,0x6c,0x0,0x6e,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x65,0x0, - 0x6b,0x0,0x77,0x0,0x69,0x0,0x70,0x0,0x75,0x0,0x6e,0x0,0x6b,0x0,0x75,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x24,0x53,0x77,0x69,0x74,0x63, - 0x68,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x67,0x6c, - 0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79,0x2e,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x5e,0x0,0x50,0x0,0x72,0x0,0x7a,0x0,0x65,0x1,0x42,0x1,0x5,0x0, - 0x63,0x0,0x7a,0x0,0x20,0x0,0x65,0x0,0x6b,0x0,0x72,0x0,0x61,0x0,0x6e,0x0, - 0x20,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x6f,0x0,0x64,0x0,0xf3,0x0,0x77,0x0, - 0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x79,0x0,0x77,0x0, - 0x61,0x0,0x74,0x0,0x6e,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x65,0x0, - 0x6b,0x0,0x77,0x0,0x69,0x0,0x70,0x0,0x75,0x0,0x6e,0x0,0x6b,0x0,0x75,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x25,0x53,0x77,0x69,0x74,0x63, - 0x68,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x70,0x72, - 0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x1a,0x0,0x5a,0x0,0x73,0x0,0x79,0x0,0x6e,0x0,0x63,0x0,0x68, - 0x0,0x72,0x0,0x6f,0x0,0x6e,0x0,0x69,0x0,0x7a,0x0,0x75,0x0,0x6a,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x53,0x79,0x6e,0x63,0x68,0x72,0x6f,0x6e, - 0x69,0x7a,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x54,0x0,0x52,0x0,0x5a,0x0,0x59,0x0, - 0x4d,0x0,0x41,0x0,0x4a,0x0,0x20,0x0,0x54,0x0,0x4f,0x0,0x21,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x54,0x41,0x4b,0x45,0x20,0x54,0x48,0x41,0x54, - 0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x16,0x0,0x54,0x0,0x72,0x0,0x7a,0x0,0x79,0x0,0x6d,0x0, - 0x61,0x0,0x6a,0x0,0x20,0x0,0x54,0x0,0x6f,0x0,0x21,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xa,0x54,0x61,0x6b,0x65,0x20,0x54,0x68,0x61,0x74,0x21,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0xc,0x0,0x5a,0x0,0x61,0x0,0x6a,0x1,0x19,0x0,0x74,0x0,0x79,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x54,0x61,0x6b,0x65,0x6e,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x3a,0x0,0x54,0x0,0x61,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x64, - 0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1,0x5b,0x1,0x7,0x0,0x20,0x0,0x6a,0x0,0x65, - 0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x7a,0x0,0x62,0x0,0x79,0x0,0x74,0x0,0x20, - 0x0,0x64,0x1,0x42,0x0,0x75,0x0,0x67,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x18,0x54,0x68,0x65,0x20,0x6d,0x65,0x73,0x73,0x61,0x67, - 0x65,0x20,0x69,0x73,0x20,0x74,0x6f,0x6f,0x20,0x6c,0x6f,0x6e,0x67,0x2e,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x58,0x0,0x44,0x0,0x6f,0x0,0x77,0x0,0xf3,0x0,0x64,0x0,0x2c,0x0,0x20, - 0x0,0x6b,0x0,0x74,0x0,0xf3,0x0,0x72,0x0,0x79,0x0,0x20,0x0,0x65,0x0,0x64, - 0x0,0x79,0x0,0x74,0x0,0x75,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x7a,0x0,0x2c, - 0x0,0x20,0x0,0x77,0x1,0x42,0x0,0x61,0x1,0x5b,0x0,0x6e,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x73,0x0,0x69,0x1,0x19,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0,0x69, - 0x0,0x65,0x0,0x6e,0x0,0x69,0x1,0x42,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x36,0x54,0x68,0x65,0x20,0x70,0x69,0x65,0x63,0x65,0x20,0x6f,0x66, - 0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x79,0x6f,0x75,0x27,0x76,0x65, - 0x20,0x62,0x65,0x65,0x6e,0x20,0x65,0x64,0x69,0x74,0x69,0x6e,0x67,0x20,0x68,0x61, - 0x73,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x8e,0x0,0x54, - 0x0,0x6f,0x0,0x20,0x0,0x62,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x77,0x0,0x79,0x1,0x5b,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x74, - 0x0,0x6c,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d, - 0x0,0x61,0x0,0x63,0x0,0x6a,0x1,0x19,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x6f, - 0x0,0x6b,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0,0x61, - 0x0,0x6b,0x0,0x20,0x0,0x74,0x0,0x79,0x0,0x6c,0x0,0x6b,0x0,0x6f,0x0,0x20, - 0x0,0x7a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x77,0x0,0x63,0x0,0x69,0x1,0x5b, - 0x0,0x6e,0x0,0x69,0x1,0x19,0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x49,0x54,0x68,0x69,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20, - 0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20,0x61,0x6e,0x69,0x6d, - 0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x76,0x69,0x65, - 0x77,0x70,0x6f,0x72,0x74,0x20,0x61,0x73,0x20,0x73,0x6f,0x6f,0x6e,0x20,0x61,0x73, - 0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x70,0x72,0x65,0x73,0x73,0x65,0x64,0x2e,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x2,0x6,0x0,0x42,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x69,0x0,0x65,0x0, - 0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x77,0x0,0x79,0x1,0x5b,0x0,0x77,0x0, - 0x69,0x0,0x61,0x0,0x74,0x0,0x6c,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x61,0x0, - 0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x63,0x0,0x6a,0x1,0x19,0x0,0x20,0x0, - 0x7a,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x6f,0x0, - 0x77,0x0,0x61,0x0,0x6e,0x1,0x5,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0, - 0x65,0x0,0x7a,0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x61,0x0,0x6e,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x64,0x0,0x6f,0x0,0x77,0x1, - 0x5,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x1,0x7,0x0, - 0x69,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x6f,0x0,0x6b,0x0,0x6e,0x0,0x69,0x0, - 0x65,0x0,0x2c,0x0,0x20,0x0,0x6a,0x0,0x61,0x0,0x6b,0x0,0x20,0x0,0x74,0x0, - 0x79,0x0,0x6c,0x0,0x6b,0x0,0x6f,0x0,0x20,0x0,0x7a,0x0,0x6f,0x0,0x73,0x0, - 0x74,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x74,0x0,0x6f,0x0, - 0x20,0x0,0x77,0x0,0x63,0x0,0x69,0x1,0x5b,0x0,0x6e,0x0,0x69,0x1,0x19,0x0, - 0x74,0x0,0x65,0x0,0x2e,0x0,0xa,0x0,0x41,0x0,0x62,0x0,0x79,0x0,0x20,0x0, - 0x73,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x72,0x0,0x7a,0x0,0x79,0x1,0x7,0x0, - 0x20,0x0,0x63,0x0,0x6f,0x1,0x5b,0x0,0x20,0x0,0x74,0x0,0x61,0x0,0x6b,0x0, - 0x69,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x66,0x0,0x6f,0x0, - 0x6c,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x74,0x0,0x77,0x0,0x6f,0x0, - 0x6a,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x74,0x0, - 0x61,0x0,0x63,0x0,0x69,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x73,0x0,0x69,0x0, - 0x20,0x0,0x7a,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x61,0x1, - 0x7,0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0, - 0x6e,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x65,0x0, - 0x20,0x0,0x5b,0x0,0x77,0x0,0x65,0x0,0x62,0x0,0x70,0x0,0x2f,0x0,0x61,0x0, - 0x70,0x0,0x6e,0x0,0x67,0x0,0x2f,0x0,0x67,0x0,0x69,0x0,0x66,0x0,0x2f,0x0, - 0x70,0x0,0x6e,0x0,0x67,0x0,0x5d,0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x6e,0x0, - 0x69,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61,0x0, - 0x72,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x20,0x0,0x5b,0x0,0x77,0x0, - 0x61,0x0,0x76,0x0,0x2f,0x0,0x6f,0x0,0x67,0x0,0x67,0x0,0x2f,0x0,0x6f,0x0, - 0x70,0x0,0x75,0x0,0x73,0x0,0x5d,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0, - 0x6b,0x0,0x74,0x0,0x79,0x0,0x20,0x0,0x64,0x1,0x7a,0x0,0x77,0x0,0x69,0x1, - 0x19,0x0,0x6b,0x0,0x6f,0x0,0x77,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0xd6,0x54,0x68,0x69,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x64,0x69,0x73, - 0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20, - 0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x2d,0x64,0x65,0x66,0x69,0x6e,0x65, - 0x64,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x74, - 0x68,0x65,0x20,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x20,0x61,0x73,0x20,0x73, - 0x6f,0x6f,0x6e,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x70,0x72,0x65, - 0x73,0x73,0x65,0x64,0x2e,0xa,0x54,0x6f,0x20,0x6d,0x61,0x6b,0x65,0x20,0x6f,0x6e, - 0x65,0x2c,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65, - 0x72,0x27,0x73,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x20,0x6d,0x75,0x73,0x74,0x20, - 0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x5b, - 0x77,0x65,0x62,0x70,0x2f,0x61,0x70,0x6e,0x67,0x2f,0x67,0x69,0x66,0x2f,0x70,0x6e, - 0x67,0x5d,0x20,0x61,0x6e,0x64,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x5b,0x77, - 0x61,0x76,0x2f,0x6f,0x67,0x67,0x2f,0x6f,0x70,0x75,0x73,0x5d,0x20,0x73,0x6f,0x75, - 0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x44,0x0, - 0x6f,0x0,0x20,0x0,0x74,0x0,0x79,0x1,0x42,0x0,0x75,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x9,0x54,0x6f,0x20,0x62,0x65,0x68,0x69,0x6e,0x64,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x12,0x0,0x44,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x6f, - 0x0,0x64,0x0,0x75,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x54,0x6f, - 0x20,0x66,0x72,0x6f,0x6e,0x74,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x7a,0x0,0x50,0x0,0x72,0x0,0x7a, - 0x0,0x65,0x1,0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x6a,0x0,0x20, - 0x0,0x70,0x0,0x6f,0x0,0x6d,0x0,0x69,0x1,0x19,0x0,0x64,0x0,0x7a,0x0,0x79, - 0x0,0x20,0x0,0x63,0x0,0x7a,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x20, - 0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x6f,0x0,0x77, - 0x0,0x79,0x0,0x6d,0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x67,0x0,0x6c,0x0,0x6f, - 0x0,0x62,0x0,0x61,0x0,0x6c,0x0,0x6e,0x0,0x79,0x0,0x6d,0x0,0x20,0x0,0x63, - 0x0,0x7a,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x41,0x0,0x4f, - 0x0,0x32,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2f,0x54,0x6f, - 0x67,0x67,0x6c,0x65,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e,0x20,0x73,0x65,0x72, - 0x76,0x65,0x72,0x20,0x63,0x68,0x61,0x74,0x20,0x61,0x6e,0x64,0x20,0x67,0x6c,0x6f, - 0x62,0x61,0x6c,0x20,0x41,0x4f,0x32,0x20,0x63,0x68,0x61,0x74,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0xe2,0x0,0x5a,0x0,0x62,0x0,0x79,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x75,0x1, - 0x7c,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x6d,0x0, - 0x65,0x0,0x74,0x0,0x72,0x0,0xf3,0x0,0x77,0x0,0x2c,0x0,0x20,0x0,0x61,0x0, - 0x62,0x0,0x79,0x0,0x20,0x0,0x7a,0x0,0x61,0x1,0x42,0x0,0x61,0x0,0x64,0x0, - 0x6f,0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0, - 0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x1,0x19,0x0,0x21,0x0,0x20,0x0,0x50,0x0, - 0x6f,0x0,0x74,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x62,0x0,0x75,0x0,0x6a,0x0, - 0x65,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x74,0x0,0x79,0x0,0x6c,0x0,0x6b,0x0, - 0x6f,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x64,0x0,0x6e,0x1,0x5,0x0,0x20,0x0, - 0x6e,0x0,0x61,0x0,0x7a,0x0,0x77,0x1,0x19,0x0,0x20,0x0,0x70,0x0,0x6c,0x0, - 0x69,0x0,0x6b,0x0,0x75,0x0,0x2c,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x7a,0x0, - 0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x73,0x0,0x7a,0x0,0x65,0x0,0x72,0x0, - 0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x6e,0x0,0x61,0x0, - 0x7a,0x0,0x77,0x0,0x79,0x0,0x20,0x0,0x70,0x0,0x6c,0x0,0x69,0x0,0x6b,0x0, - 0x75,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x51,0x54,0x6f,0x6f, - 0x20,0x6d,0x61,0x6e,0x79,0x20,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x20, - 0x74,0x6f,0x20,0x6c,0x6f,0x61,0x64,0x20,0x61,0x20,0x63,0x61,0x73,0x65,0x21,0x20, - 0x59,0x6f,0x75,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x6e,0x65,0x65,0x64,0x20,0x6f,0x6e, - 0x65,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x77,0x69,0x74,0x68, - 0x6f,0x75,0x74,0x20,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x2e,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x1,0xc,0x0,0x5a,0x0,0x62,0x0,0x79,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x75, - 0x1,0x7c,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x6d, - 0x0,0x65,0x0,0x74,0x0,0x72,0x0,0xf3,0x0,0x77,0x0,0x2c,0x0,0x20,0x0,0x61, - 0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x70,0x0,0x69,0x0,0x73, - 0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72, - 0x0,0x61,0x0,0x77,0x1,0x19,0x0,0x21,0x0,0x20,0x0,0x50,0x0,0x6f,0x0,0x74, - 0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x62,0x0,0x75,0x0,0x6a,0x0,0x65,0x0,0x73, - 0x0,0x7a,0x0,0x20,0x0,0x74,0x0,0x79,0x0,0x6c,0x0,0x6b,0x0,0x6f,0x0,0x20, - 0x0,0x6a,0x0,0x65,0x0,0x64,0x0,0x6e,0x1,0x5,0x0,0x20,0x0,0x6e,0x0,0x61, - 0x0,0x7a,0x0,0x77,0x1,0x19,0x0,0x20,0x0,0x70,0x0,0x6c,0x0,0x69,0x0,0x6b, - 0x0,0x75,0x0,0x2c,0x0,0x20,0x0,0x62,0x0,0x65,0x0,0x7a,0x0,0x20,0x0,0x72, - 0x0,0x6f,0x0,0x7a,0x0,0x73,0x0,0x7a,0x0,0x65,0x0,0x72,0x0,0x7a,0x0,0x65, - 0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x7a,0x0,0x77, - 0x0,0x79,0x0,0x20,0x0,0x70,0x0,0x6c,0x0,0x69,0x0,0x6b,0x0,0x75,0x0,0x20, - 0x0,0x69,0x0,0x20,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x74,0x0,0x75,0x0,0x73, - 0x0,0x75,0x0,0x20,0x0,0x73,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x73, - 0x1,0x5,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x6a,0x0,0x21,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x67,0x54,0x6f,0x6f,0x20,0x6d,0x61,0x6e,0x79, - 0x20,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x20,0x74,0x6f,0x20,0x73,0x61, - 0x76,0x65,0x20,0x61,0x20,0x63,0x61,0x73,0x65,0x21,0x20,0x59,0x6f,0x75,0x20,0x6f, - 0x6e,0x6c,0x79,0x20,0x6e,0x65,0x65,0x64,0x20,0x61,0x20,0x66,0x69,0x6c,0x65,0x6e, - 0x61,0x6d,0x65,0x20,0x77,0x69,0x74,0x68,0x6f,0x75,0x74,0x20,0x65,0x78,0x74,0x65, - 0x6e,0x73,0x69,0x6f,0x6e,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x20,0x63,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x20,0x73,0x74,0x61,0x74,0x75,0x73,0x21,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x50,0x0,0x50,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0, - 0x65,0x1,0x5b,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x6f,0x0,0x64,0x0, - 0x79,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x67,0x0,0x6c,0x0,0x6f,0x0, - 0x62,0x0,0x61,0x0,0x6c,0x0,0x6e,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0, - 0x65,0x0,0x6b,0x0,0x77,0x0,0x69,0x0,0x70,0x0,0x75,0x0,0x6e,0x0,0x6b,0x0, - 0x75,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x26,0x54,0x72,0x61, - 0x6e,0x73,0x66,0x65,0x72,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74, - 0x6f,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f, - 0x72,0x79,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x50,0x0,0x50,0x0,0x72,0x0,0x7a,0x0,0x65,0x0, - 0x6e,0x0,0x69,0x0,0x65,0x1,0x5b,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x77,0x0, - 0x6f,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x70,0x0, - 0x72,0x0,0x79,0x0,0x77,0x0,0x61,0x0,0x74,0x0,0x6e,0x0,0x65,0x0,0x67,0x0, - 0x6f,0x0,0x20,0x0,0x65,0x0,0x6b,0x0,0x77,0x0,0x69,0x0,0x70,0x0,0x75,0x0, - 0x6e,0x0,0x6b,0x0,0x75,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x27,0x54,0x72,0x61,0x6e,0x73,0x66,0x65,0x72,0x20,0x65,0x76,0x69,0x64,0x65,0x6e, - 0x63,0x65,0x20,0x74,0x6f,0x20,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e, - 0x76,0x65,0x6e,0x74,0x6f,0x72,0x79,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x10,0x0,0x4e,0x0,0x49, - 0x0,0x45,0x0,0x5a,0x0,0x4e,0x0,0x41,0x0,0x4e,0x0,0x45,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x7,0x55,0x4e,0x4b,0x4e,0x4f,0x57,0x4e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x88,0x0,0x4b,0x0,0x69,0x0,0x65,0x0,0x64,0x0,0x79,0x0,0x20,0x0,0x6a,0x0, - 0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x77,0x1, - 0x42,0x1,0x5,0x0,0x63,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x2c,0x0, - 0x20,0x0,0x74,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x61,0x0,0x20,0x0,0x6e,0x0, - 0x61,0x0,0x73,0x0,0x74,0x1,0x19,0x0,0x70,0x0,0x6e,0x0,0x61,0x0,0x20,0x0, - 0x77,0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x1,0x5b,0x1, - 0x7,0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x20,0x0,0x62,0x1,0x19,0x0,0x64,0x0, - 0x7a,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6b,0x0,0x72,0x0,0x7a,0x0,0x79,0x0, - 0x6b,0x0,0x69,0x0,0x65,0x0,0x6d,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x47,0x57,0x68,0x65,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x69,0x73,0x20, - 0x74,0x75,0x72,0x6e,0x65,0x64,0x20,0x6f,0x6e,0x2c,0x20,0x79,0x6f,0x75,0x72,0x20, - 0x6e,0x65,0x78,0x74,0x20,0x69,0x6e,0x2d,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65, - 0x72,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62, - 0x65,0x20,0x61,0x20,0x73,0x68,0x6f,0x75,0x74,0x21,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0x3a,0x0,0x4e, - 0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x73,0x0,0x7a,0x0,0x20, - 0x0,0x66,0x0,0x6f,0x0,0x6c,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x75,0x0,0x20, - 0x0,0x60,0x0,0x62,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x2f,0x0,0x63,0x0,0x61, - 0x0,0x73,0x0,0x65,0x0,0x73,0x0,0x2f,0x0,0x60,0x0,0x21,0x0,0x20,0x0,0x5a, - 0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x1,0x42,0x0,0x20,0x0,0x7a,0x0,0x72, - 0x0,0x6f,0x0,0x62,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x74, - 0x0,0x79,0x0,0x6c,0x0,0x6b,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x6c,0x0,0x61, - 0x0,0x20,0x0,0x63,0x0,0x69,0x0,0x65,0x0,0x62,0x0,0x69,0x0,0x65,0x0,0x2c, - 0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x64, - 0x0,0x7a,0x1,0x5,0x0,0x63,0x0,0x2c,0x0,0x20,0x1,0x7c,0x0,0x65,0x0,0x20, - 0x0,0x5a,0x0,0x4f,0x0,0x53,0x0,0x54,0x0,0x41,0x1,0x41,0x0,0x20,0x0,0x7a, - 0x0,0x72,0x0,0x6f,0x0,0x62,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x79,0x0,0x20, - 0x0,0x74,0x0,0x79,0x0,0x6c,0x0,0x6b,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x6c, - 0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x69,0x0,0x65,0x0,0x62,0x0,0x69,0x0,0x65, - 0x0,0x2c,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x64,0x0,0x6f, - 0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x6f,0x0,0x62,0x0,0x6e,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x6a,0x0,0x61,0x0,0x6b,0x0,0x6f,0x1,0x5b,0x0,0x20,0x0,0x75, - 0x0,0x73,0x0,0x75,0x0,0x6e,0x1,0x5,0x1,0x42,0x0,0x65,0x1,0x5b,0x0,0x2f, - 0x0,0x75,0x0,0x73,0x0,0x75,0x0,0x6e,0x1,0x19,0x1,0x42,0x0,0x61,0x1,0x5b, - 0x0,0x20,0x0,0x67,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x91,0x59,0x6f,0x75,0x20,0x64,0x6f,0x6e,0x27,0x74,0x20,0x68,0x61,0x76,0x65, - 0x20,0x61,0x20,0x60,0x62,0x61,0x73,0x65,0x2f,0x63,0x61,0x73,0x65,0x73,0x2f,0x60, - 0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x21,0x20,0x49,0x74,0x20,0x77,0x61,0x73,0x20, - 0x6a,0x75,0x73,0x74,0x20,0x6d,0x61,0x64,0x65,0x20,0x66,0x6f,0x72,0x20,0x79,0x6f, - 0x75,0x2c,0x20,0x62,0x75,0x74,0x20,0x73,0x65,0x65,0x69,0x6e,0x67,0x20,0x61,0x73, - 0x20,0x69,0x74,0x20,0x57,0x41,0x53,0x20,0x6a,0x75,0x73,0x74,0x20,0x6d,0x61,0x64, - 0x65,0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x2c,0x20,0x69,0x74,0x27,0x73,0x20, - 0x6c,0x69,0x6b,0x65,0x6c,0x79,0x20,0x74,0x68,0x61,0x74,0x20,0x79,0x6f,0x75,0x20, - 0x73,0x6f,0x6d,0x65,0x68,0x6f,0x77,0x20,0x64,0x65,0x6c,0x65,0x74,0x65,0x64,0x20, - 0x69,0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x1,0x78,0x0,0x4e,0x0,0x69,0x0,0x65,0x0,0x20,0x0, - 0x6d,0x0,0x61,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x6c,0x0, - 0x64,0x0,0x65,0x0,0x72,0x0,0x75,0x0,0x20,0x0,0x60,0x0,0x62,0x0,0x61,0x0, - 0x73,0x0,0x65,0x0,0x2f,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x73,0x0, - 0x2f,0x0,0x60,0x0,0x21,0x0,0x20,0x0,0x5a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0, - 0x61,0x1,0x42,0x0,0x20,0x0,0x7a,0x0,0x72,0x0,0x6f,0x0,0x62,0x0,0x69,0x0, - 0x6f,0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x74,0x0,0x79,0x0,0x6c,0x0,0x6b,0x0, - 0x6f,0x0,0x20,0x0,0x64,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x69,0x0, - 0x65,0x0,0x62,0x0,0x69,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x6c,0x0, - 0x65,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x64,0x0,0x7a,0x1,0x5,0x0,0x63,0x0, - 0x2c,0x0,0x20,0x1,0x7c,0x0,0x65,0x0,0x20,0x0,0x5a,0x0,0x4f,0x0,0x53,0x0, - 0x54,0x0,0x41,0x1,0x41,0x0,0x20,0x0,0x7a,0x0,0x72,0x0,0x6f,0x0,0x62,0x0, - 0x69,0x0,0x6f,0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x74,0x0,0x79,0x0,0x6c,0x0, - 0x6b,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x63,0x0, - 0x69,0x0,0x65,0x0,0x62,0x0,0x69,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x70,0x0, - 0x72,0x0,0x61,0x0,0x77,0x0,0x64,0x0,0x6f,0x0,0x70,0x0,0x6f,0x0,0x64,0x0, - 0x6f,0x0,0x62,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x6c,0x0, - 0x69,0x0,0x6b,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0, - 0x61,0x0,0x77,0x0,0x2c,0x0,0x20,0x0,0x6b,0x0,0x74,0x0,0xf3,0x0,0x72,0x0, - 0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x7a,0x0,0x75,0x0,0x6b,0x0, - 0x61,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0, - 0x7a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x1,0x42,0x0,0x20,0x0,0x7a,0x0, - 0x6e,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x7a,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0, - 0x79,0x0,0x20,0x0,0x74,0x0,0x75,0x0,0x74,0x0,0x61,0x0,0x6a,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xae,0x59,0x6f,0x75,0x20,0x64,0x6f,0x6e, - 0x27,0x74,0x20,0x68,0x61,0x76,0x65,0x20,0x61,0x20,0x60,0x62,0x61,0x73,0x65,0x2f, - 0x63,0x61,0x73,0x65,0x73,0x2f,0x60,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x21,0x20, - 0x49,0x74,0x20,0x77,0x61,0x73,0x20,0x6a,0x75,0x73,0x74,0x20,0x6d,0x61,0x64,0x65, - 0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x2c,0x20,0x62,0x75,0x74,0x20,0x73,0x65, - 0x65,0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x57,0x41,0x53,0x20,0x6a, - 0x75,0x73,0x74,0x20,0x6d,0x61,0x64,0x65,0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75, - 0x2c,0x20,0x69,0x74,0x27,0x73,0x20,0x6c,0x69,0x6b,0x65,0x6c,0x79,0x20,0x74,0x68, - 0x65,0x20,0x63,0x61,0x73,0x65,0x20,0x66,0x69,0x6c,0x65,0x20,0x79,0x6f,0x75,0x27, - 0x72,0x65,0x20,0x6c,0x6f,0x6f,0x6b,0x69,0x6e,0x67,0x20,0x66,0x6f,0x72,0x20,0x63, - 0x61,0x6e,0x27,0x74,0x20,0x62,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64,0x20,0x69,0x6e, - 0x20,0x74,0x68,0x65,0x72,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x5a,0x0,0x6f,0x0, - 0x73,0x0,0x74,0x0,0x61,0x1,0x42,0x0,0x65,0x1,0x5b,0x0,0x2f,0x0,0x61,0x1, - 0x5b,0x0,0x20,0x0,0x7a,0x0,0x62,0x0,0x61,0x0,0x6e,0x0,0x6f,0x0,0x77,0x0, - 0x61,0x0,0x6e,0x0,0x79,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x15,0x59,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x62,0x65,0x65,0x6e,0x20,0x62, - 0x61,0x6e,0x6e,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2e,0x0,0x4d,0x0,0x75,0x0,0x73, - 0x0,0x69,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x61, - 0x1,0x7,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x79,0x0,0x63,0x0,0x7a, - 0x0,0x79,0x0,0x6e,0x1,0x19,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x1a,0x59,0x6f,0x75,0x20,0x6d,0x75,0x73,0x74,0x20,0x70,0x72,0x6f,0x76,0x69, - 0x64,0x65,0x20,0x61,0x20,0x72,0x65,0x61,0x73,0x6f,0x6e,0x2e,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0xa0, - 0x0,0x4d,0x0,0x75,0x0,0x73,0x0,0x69,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x70, - 0x0,0x6f,0x0,0x64,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x7a, - 0x0,0x77,0x1,0x19,0x0,0x20,0x0,0x70,0x0,0x6c,0x0,0x69,0x0,0x6b,0x0,0x75, - 0x0,0x2c,0x0,0x20,0x0,0x6b,0x0,0x74,0x0,0xf3,0x0,0x72,0x0,0x65,0x0,0x67, - 0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x68,0x0,0x63,0x0,0x65,0x0,0x73,0x0,0x7a, - 0x0,0x20,0x0,0x7a,0x0,0x61,0x1,0x42,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x77, - 0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x28,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x73, - 0x0,0x7a,0x0,0x65,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73, - 0x0,0x74,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x74,0x0,0x72,0x0,0x7a,0x0,0x65, - 0x0,0x62,0x0,0x6e,0x0,0x65,0x0,0x21,0x0,0x29,0x0,0x20,0x0,0x55,0x0,0x70, - 0x0,0x65,0x0,0x77,0x0,0x6e,0x0,0x69,0x0,0x6a,0x0,0x20,0x0,0x73,0x0,0x69, - 0x1,0x19,0x0,0x2c,0x0,0x20,0x1,0x7c,0x0,0x65,0x0,0x20,0x0,0x6a,0x0,0x65, - 0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x6c, - 0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x20,0x0,0x60,0x0,0x62, - 0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x2f,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x65, - 0x0,0x73,0x0,0x2f,0x0,0x60,0x0,0x20,0x0,0x69,0x0,0x20,0x1,0x7c,0x0,0x65, - 0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f, - 0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x6e, - 0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x66,0x0,0x6f,0x0,0x72,0x0,0x6d, - 0x0,0x61,0x0,0x74,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x65,0x0,0x20, - 0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x2e,0x0,0xa,0x0,0x52,0x0,0x6f,0x0,0x7a, - 0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x79,0x0,0x20,0x0,0x6b,0x0,0x74, - 0x0,0xf3,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x6f,0x1,0x7c,0x0,0x65, - 0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x7a,0x0,0x61,0x1,0x42,0x0,0x61,0x0,0x64, - 0x0,0x6f,0x0,0x77,0x0,0x61,0x1,0x7,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xae,0x59,0x6f,0x75,0x20,0x6e,0x65, - 0x65,0x64,0x20,0x74,0x6f,0x20,0x67,0x69,0x76,0x65,0x20,0x61,0x20,0x66,0x69,0x6c, - 0x65,0x6e,0x61,0x6d,0x65,0x20,0x74,0x6f,0x20,0x6c,0x6f,0x61,0x64,0x20,0x28,0x65, - 0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x20,0x6e,0x6f,0x74,0x20,0x6e,0x65,0x65, - 0x64,0x65,0x64,0x29,0x21,0x20,0x4d,0x61,0x6b,0x65,0x20,0x73,0x75,0x72,0x65,0x20, - 0x74,0x68,0x61,0x74,0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x69,0x6e,0x20,0x74,0x68, - 0x65,0x20,0x60,0x62,0x61,0x73,0x65,0x2f,0x63,0x61,0x73,0x65,0x73,0x2f,0x60,0x20, - 0x66,0x6f,0x6c,0x64,0x65,0x72,0x2c,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x61,0x74, - 0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x61,0x20,0x63,0x6f,0x72,0x72,0x65,0x63,0x74, - 0x6c,0x79,0x20,0x66,0x6f,0x72,0x6d,0x61,0x74,0x74,0x65,0x64,0x20,0x69,0x6e,0x69, - 0x2e,0xa,0x43,0x61,0x73,0x65,0x73,0x20,0x79,0x6f,0x75,0x20,0x63,0x61,0x6e,0x20, - 0x6c,0x6f,0x61,0x64,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc2,0x0,0x4d,0x0,0x75, - 0x0,0x73,0x0,0x69,0x0,0x73,0x0,0x7a,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64, - 0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x7a,0x0,0x77,0x1,0x19, - 0x0,0x20,0x0,0x70,0x0,0x6c,0x0,0x69,0x0,0x6b,0x0,0x75,0x0,0x2c,0x0,0x20, - 0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x7a, - 0x0,0x61,0x0,0x70,0x0,0x69,0x0,0x73,0x0,0x61,0x1,0x7,0x0,0x20,0x0,0x28, - 0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x73,0x0,0x7a,0x0,0x65,0x0,0x72,0x0,0x7a, - 0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x70,0x0,0x6f, - 0x0,0x74,0x0,0x72,0x0,0x7a,0x0,0x65,0x0,0x62,0x0,0x6e,0x0,0x65,0x0,0x29, - 0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x74,0x0,0x75, - 0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x20,0x0,0x73, - 0x1,0x5,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x6a,0x0,0x21,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x54,0x59,0x6f,0x75,0x20,0x6e,0x65,0x65,0x64, - 0x20,0x74,0x6f,0x20,0x67,0x69,0x76,0x65,0x20,0x61,0x20,0x66,0x69,0x6c,0x65,0x6e, - 0x61,0x6d,0x65,0x20,0x74,0x6f,0x20,0x73,0x61,0x76,0x65,0x20,0x28,0x65,0x78,0x74, - 0x65,0x6e,0x73,0x69,0x6f,0x6e,0x20,0x6e,0x6f,0x74,0x20,0x6e,0x65,0x65,0x64,0x65, - 0x64,0x29,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x20,0x63,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x20,0x73,0x74,0x61,0x74,0x75,0x73,0x21,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x74, - 0x0,0x5a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x1,0x42,0x0,0x65,0x1,0x5b, - 0x0,0x2f,0x0,0x61,0x1,0x5b,0x0,0x20,0x0,0x6f,0x0,0x62,0x0,0x64,0x0,0x61, - 0x0,0x72,0x0,0x7a,0x0,0x6f,0x0,0x6e,0x0,0x79,0x0,0x6d,0x0,0x2f,0x0,0x61, - 0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x7a,0x0,0x79,0x0,0x63,0x0,0x69,0x0,0x73, - 0x0,0x6b,0x0,0x69,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x57,0x0,0x79,0x1,0x42, - 0x1,0x5,0x0,0x63,0x0,0x7a,0x0,0x20,0x0,0x57,0x0,0x65,0x0,0x7a,0x0,0x77, - 0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x4d,0x0,0x6f,0x0,0x64, - 0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2d,0x59,0x6f, - 0x75,0x20,0x77,0x65,0x72,0x65,0x20,0x67,0x72,0x61,0x6e,0x74,0x65,0x64,0x20,0x74, - 0x68,0x65,0x20,0x44,0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x4d,0x6f,0x64,0x63,0x61, - 0x6c,0x6c,0x73,0x20,0x62,0x75,0x74,0x74,0x6f,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x32,0x0, - 0x5a,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x61,0x1,0x42,0x0,0x65,0x1,0x5b,0x0, - 0x2f,0x0,0x61,0x1,0x5b,0x0,0x20,0x0,0x77,0x0,0x79,0x0,0x6c,0x0,0x6f,0x0, - 0x67,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x2f,0x0,0x61,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x14,0x59,0x6f,0x75,0x20,0x77, - 0x65,0x72,0x65,0x20,0x6c,0x6f,0x67,0x67,0x65,0x64,0x20,0x6f,0x75,0x74,0x2e,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x4a,0x0,0x54,0x0,0x77,0x0,0x6f,0x0,0x6a,0x0,0x61,0x0,0x20,0x0, - 0x72,0x0,0x6f,0x0,0x7a,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x61,0x0, - 0x20,0x0,0x22,0x0,0x25,0x0,0x31,0x0,0x22,0x0,0x20,0x0,0x7a,0x0,0x6f,0x0, - 0x73,0x0,0x74,0x0,0x61,0x1,0x42,0x0,0x61,0x0,0x20,0x0,0x77,0x0,0x63,0x0, - 0x7a,0x0,0x79,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x61,0x0,0x21,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x1a,0x59,0x6f,0x75,0x72,0x20,0x63,0x61,0x73,0x65, - 0x20,0x22,0x25,0x31,0x22,0x20,0x77,0x61,0x73,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64, - 0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x1c,0x0,0x5b,0x0,0x42,0x0,0x52,0x0,0x41,0x0,0x4b,0x0, - 0x55,0x0,0x4a,0x1,0x4,0x0,0x43,0x0,0x59,0x0,0x5d,0x0,0x20,0x0,0x25,0x0, - 0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x5b,0x4d,0x49,0x53,0x53, - 0x49,0x4e,0x47,0x5d,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x5b,0x0,0x53,0x0, - 0x54,0x0,0x52,0x0,0x45,0x0,0x41,0x0,0x4d,0x0,0x5d,0x0,0x20,0x0,0x25,0x0, - 0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x5b,0x53,0x54,0x52,0x45, - 0x41,0x4d,0x5d,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x26,0x0,0x77,0x1,0x42,0x1,0x5, - 0x0,0x63,0x0,0x7a,0x0,0x79,0x1,0x42,0x0,0x28,0x0,0x61,0x0,0x29,0x0,0x20, - 0x0,0x70,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x6b,0x1,0x19, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x68,0x61,0x73,0x20,0x70,0x6c, - 0x61,0x79,0x65,0x64,0x20,0x61,0x20,0x73,0x6f,0x6e,0x67,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2c,0x0, - 0x7a,0x0,0x61,0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0, - 0x74,0x0,0x6f,0x0,0x77,0x0,0x61,0x1,0x42,0x0,0x28,0x0,0x61,0x0,0x29,0x0, - 0x20,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0xf3,0x0,0x64,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x16,0x68,0x61,0x73,0x20,0x70,0x72,0x65,0x73,0x65,0x6e,0x74, - 0x65,0x64,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x26,0x0, - 0x7a,0x0,0x61,0x0,0x74,0x0,0x72,0x0,0x7a,0x0,0x79,0x0,0x6d,0x0,0x61,0x1, - 0x42,0x0,0x28,0x0,0x61,0x0,0x29,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x7a,0x0, - 0x79,0x0,0x6b,0x1,0x19,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x15,0x68, - 0x61,0x73,0x20,0x73,0x74,0x6f,0x70,0x70,0x65,0x64,0x20,0x74,0x68,0x65,0x20,0x6d, - 0x75,0x73,0x69,0x63,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x18,0x0,0x6b,0x0,0x72,0x0,0x7a,0x0,0x79, - 0x0,0x6b,0x0,0x6e,0x1,0x5,0x1,0x42,0x0,0x2f,0x1,0x19,0x1,0x42,0x0,0x61, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x73,0x68,0x6f,0x75,0x74,0x73, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x76,0x0,0x44,0x0,0x6f,0x0,0x73,0x0,0x74,0x1,0x19,0x0,0x70, - 0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0,0x6e, - 0x0,0x64,0x0,0x79,0x0,0x3a,0x0,0xa,0x0,0x6c,0x0,0x6f,0x0,0x61,0x0,0x64, - 0x0,0x2c,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x6c,0x0,0x6f,0x0,0x61,0x0,0x64, - 0x0,0x2c,0x0,0x20,0x0,0x70,0x0,0x6c,0x0,0x61,0x0,0x79,0x0,0x2c,0x0,0x20, - 0x0,0x70,0x0,0x61,0x0,0x75,0x0,0x73,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x6d, - 0x0,0x61,0x0,0x78,0x0,0x5f,0x0,0x77,0x0,0x61,0x0,0x69,0x0,0x74,0x0,0x2c, - 0x0,0x20,0x0,0x68,0x0,0x65,0x0,0x6c,0x0,0x70,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x3d,0x41,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x63,0x6f, - 0x6d,0x6d,0x61,0x6e,0x64,0x73,0x3a,0xa,0x6c,0x6f,0x61,0x64,0x2c,0x20,0x72,0x65, - 0x6c,0x6f,0x61,0x64,0x2c,0x20,0x70,0x6c,0x61,0x79,0x2c,0x20,0x70,0x61,0x75,0x73, - 0x65,0x2c,0x20,0x6d,0x61,0x78,0x5f,0x77,0x61,0x69,0x74,0x2c,0x20,0x68,0x65,0x6c, - 0x70,0x7,0x0,0x0,0x0,0xa,0x44,0x65,0x6d,0x6f,0x53,0x65,0x72,0x76,0x65,0x72, - 0x1,0x3,0x0,0x0,0x0,0xc0,0x0,0x42,0x0,0x69,0x0,0x65,0x1,0x7c,0x1,0x5, - 0x0,0x63,0x0,0x79,0x0,0x20,0x0,0x70,0x0,0x6c,0x0,0x69,0x0,0x6b,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x77,0x0,0x63,0x0,0x7a, - 0x0,0x79,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x70,0x0,0x6f, - 0x0,0x6e,0x0,0x6f,0x0,0x77,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x2e,0x0,0x20, - 0x0,0x57,0x0,0x79,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x6a,0x0,0x20,0x0,0x2f, - 0x0,0x70,0x0,0x6c,0x0,0x61,0x0,0x79,0x0,0x20,0x0,0x6c,0x0,0x75,0x0,0x62, - 0x0,0x20,0x0,0x3e,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x63,0x0,0x7a,0x0,0x61, - 0x0,0x63,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x4f,0x0,0x4f,0x0,0x43,0x0,0x2c, - 0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a, - 0x0,0x70,0x0,0x6f,0x0,0x63,0x0,0x7a,0x1,0x5,0x1,0x7,0x0,0x20,0x0,0x6f, - 0x0,0x64,0x0,0x74,0x0,0x77,0x0,0x61,0x0,0x72,0x0,0x7a,0x0,0x61,0x0,0x6e, - 0x0,0x69,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x45, - 0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x64,0x65,0x6d,0x6f,0x20,0x66,0x69,0x6c, - 0x65,0x20,0x72,0x65,0x6c,0x6f,0x61,0x64,0x65,0x64,0x2e,0x20,0x53,0x65,0x6e,0x64, - 0x20,0x2f,0x70,0x6c,0x61,0x79,0x20,0x6f,0x72,0x20,0x3e,0x20,0x69,0x6e,0x20,0x4f, - 0x4f,0x43,0x20,0x74,0x6f,0x20,0x62,0x65,0x67,0x69,0x6e,0x20,0x70,0x6c,0x61,0x79, - 0x62,0x61,0x63,0x6b,0x2e,0x7,0x0,0x0,0x0,0xa,0x44,0x65,0x6d,0x6f,0x53,0x65, - 0x72,0x76,0x65,0x72,0x1,0x3,0x0,0x0,0x0,0x26,0x0,0x42,0x0,0x69,0x0,0x65, - 0x1,0x7c,0x1,0x5,0x0,0x63,0x0,0x79,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x78, - 0x0,0x5f,0x0,0x77,0x0,0x61,0x0,0x69,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x43,0x75,0x72,0x72,0x65,0x6e, - 0x74,0x20,0x6d,0x61,0x78,0x5f,0x77,0x61,0x69,0x74,0x20,0x69,0x73,0x7,0x0,0x0, - 0x0,0xa,0x44,0x65,0x6d,0x6f,0x53,0x65,0x72,0x76,0x65,0x72,0x1,0x3,0x0,0x0, - 0x0,0x26,0x0,0x50,0x0,0x6c,0x0,0x69,0x0,0x6b,0x0,0x69,0x0,0x20,0x0,0x44, - 0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x28,0x0,0x2a,0x0,0x2e,0x0,0x64, - 0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x13,0x44,0x65,0x6d,0x6f,0x20,0x46,0x69,0x6c,0x65,0x73,0x20,0x28,0x2a,0x2e, - 0x64,0x65,0x6d,0x6f,0x29,0x7,0x0,0x0,0x0,0xa,0x44,0x65,0x6d,0x6f,0x53,0x65, - 0x72,0x76,0x65,0x72,0x1,0x3,0x0,0x0,0x0,0x9e,0x0,0x50,0x0,0x6c,0x0,0x69, - 0x0,0x6b,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x77, - 0x0,0x63,0x0,0x7a,0x0,0x79,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x2e, - 0x0,0x20,0x0,0x57,0x0,0x79,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x6a,0x0,0x20, - 0x0,0x2f,0x0,0x70,0x0,0x6c,0x0,0x61,0x0,0x79,0x0,0x20,0x0,0x6c,0x0,0x75, - 0x0,0x62,0x0,0x20,0x0,0x3e,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x63,0x0,0x7a, - 0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x4f,0x0,0x4f,0x0,0x43, - 0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x72,0x0,0x6f, - 0x0,0x7a,0x0,0x70,0x0,0x6f,0x0,0x63,0x0,0x7a,0x1,0x5,0x1,0x7,0x0,0x20, - 0x0,0x6f,0x0,0x64,0x0,0x74,0x0,0x77,0x0,0x61,0x0,0x72,0x0,0x7a,0x0,0x61, - 0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x3b,0x44,0x65,0x6d,0x6f,0x20,0x66,0x69,0x6c,0x65,0x20,0x6c,0x6f,0x61,0x64, - 0x65,0x64,0x2e,0x20,0x53,0x65,0x6e,0x64,0x20,0x2f,0x70,0x6c,0x61,0x79,0x20,0x6f, - 0x72,0x20,0x3e,0x20,0x69,0x6e,0x20,0x4f,0x4f,0x43,0x20,0x74,0x6f,0x20,0x62,0x65, - 0x67,0x69,0x6e,0x20,0x70,0x6c,0x61,0x79,0x62,0x61,0x63,0x6b,0x2e,0x7,0x0,0x0, - 0x0,0xa,0x44,0x65,0x6d,0x6f,0x53,0x65,0x72,0x76,0x65,0x72,0x1,0x3,0x0,0x0, - 0x0,0x18,0x0,0x57,0x0,0x63,0x0,0x7a,0x0,0x79,0x0,0x74,0x0,0x61,0x0,0x6a, - 0x0,0x20,0x0,0x44,0x0,0x65,0x0,0x6d,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x9,0x4c,0x6f,0x61,0x64,0x20,0x44,0x65,0x6d,0x6f,0x7,0x0,0x0, - 0x0,0xa,0x44,0x65,0x6d,0x6f,0x53,0x65,0x72,0x76,0x65,0x72,0x1,0x3,0x0,0x0, - 0x0,0x50,0x0,0x4e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73, - 0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x61, - 0x0,0x77,0x0,0x69,0x0,0x64,0x1,0x42,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x20, - 0x0,0x6c,0x0,0x69,0x0,0x63,0x0,0x7a,0x0,0x62,0x0,0x61,0x0,0x20,0x0,0x63, - 0x0,0x61,0x1,0x42,0x0,0x6b,0x0,0x6f,0x0,0x77,0x0,0x69,0x0,0x74,0x0,0x61, - 0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x14,0x4e,0x6f,0x74,0x20, - 0x61,0x20,0x76,0x61,0x6c,0x69,0x64,0x20,0x69,0x6e,0x74,0x65,0x67,0x65,0x72,0x21, - 0x7,0x0,0x0,0x0,0xa,0x44,0x65,0x6d,0x6f,0x53,0x65,0x72,0x76,0x65,0x72,0x1, - 0x3,0x0,0x0,0x0,0x2e,0x0,0x50,0x0,0x61,0x0,0x75,0x0,0x7a,0x0,0x6f,0x0, - 0x77,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x64,0x0, - 0x74,0x0,0x77,0x0,0x61,0x0,0x72,0x0,0x7a,0x0,0x61,0x0,0x6e,0x0,0x69,0x0, - 0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x50,0x61,0x75, - 0x73,0x69,0x6e,0x67,0x20,0x70,0x6c,0x61,0x79,0x62,0x61,0x63,0x6b,0x2e,0x7,0x0, - 0x0,0x0,0xa,0x44,0x65,0x6d,0x6f,0x53,0x65,0x72,0x76,0x65,0x72,0x1,0x3,0x0, - 0x0,0x0,0xee,0x0,0x4f,0x0,0x73,0x0,0x69,0x1,0x5,0x0,0x67,0x0,0x6e,0x0, - 0x69,0x1,0x19,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6e,0x0, - 0x69,0x0,0x65,0x0,0x63,0x0,0x20,0x0,0x70,0x0,0x6c,0x0,0x69,0x0,0x6b,0x0, - 0x75,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x2e,0x0,0x20,0x0, - 0x57,0x0,0x79,0x1,0x5b,0x0,0x6c,0x0,0x69,0x0,0x6a,0x0,0x20,0x0,0x2f,0x0, - 0x70,0x0,0x6c,0x0,0x61,0x0,0x79,0x0,0x20,0x0,0x6c,0x0,0x75,0x0,0x62,0x0, - 0x20,0x0,0x3e,0x0,0x20,0x0,0x77,0x0,0x20,0x0,0x63,0x0,0x7a,0x0,0x61,0x0, - 0x63,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x4f,0x0,0x4f,0x0,0x43,0x0,0x2c,0x0, - 0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x7a,0x0,0x72,0x0,0x65,0x0, - 0x73,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x74,0x0,0x6f,0x0,0x77,0x0,0x61,0x1, - 0x7,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x6c,0x0, - 0x75,0x0,0x62,0x0,0x20,0x0,0x2f,0x0,0x6c,0x0,0x6f,0x0,0x61,0x0,0x64,0x0, - 0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x6f,0x0,0x74,0x0, - 0x77,0x0,0x6f,0x0,0x72,0x0,0x7a,0x0,0x79,0x1,0x7,0x0,0x20,0x0,0x6e,0x0, - 0x6f,0x0,0x77,0x0,0x79,0x0,0x20,0x0,0x70,0x0,0x6c,0x0,0x69,0x0,0x6b,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x61,0x52,0x65,0x61,0x63,0x68, - 0x65,0x64,0x20,0x74,0x68,0x65,0x20,0x65,0x6e,0x64,0x20,0x6f,0x66,0x20,0x74,0x68, - 0x65,0x20,0x64,0x65,0x6d,0x6f,0x20,0x66,0x69,0x6c,0x65,0x2e,0x20,0x53,0x65,0x6e, - 0x64,0x20,0x2f,0x70,0x6c,0x61,0x79,0x20,0x6f,0x72,0x20,0x3e,0x20,0x69,0x6e,0x20, - 0x4f,0x4f,0x43,0x20,0x74,0x6f,0x20,0x72,0x65,0x73,0x74,0x61,0x72,0x74,0x2c,0x20, - 0x6f,0x72,0x20,0x2f,0x6c,0x6f,0x61,0x64,0x20,0x74,0x6f,0x20,0x6f,0x70,0x65,0x6e, - 0x20,0x61,0x20,0x6e,0x65,0x77,0x20,0x66,0x69,0x6c,0x65,0x2e,0x7,0x0,0x0,0x0, - 0xa,0x44,0x65,0x6d,0x6f,0x53,0x65,0x72,0x76,0x65,0x72,0x1,0x3,0x0,0x0,0x0, - 0x2e,0x0,0x57,0x0,0x7a,0x0,0x6e,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x61,0x0, - 0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x64,0x0,0x74,0x0,0x77,0x0, - 0x61,0x0,0x72,0x0,0x7a,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x52,0x65,0x73,0x75,0x6d,0x69,0x6e, - 0x67,0x20,0x70,0x6c,0x61,0x79,0x62,0x61,0x63,0x6b,0x2e,0x7,0x0,0x0,0x0,0xa, - 0x44,0x65,0x6d,0x6f,0x53,0x65,0x72,0x76,0x65,0x72,0x1,0x3,0x0,0x0,0x0,0x2c, - 0x0,0x55,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x61,0x0,0x6e, - 0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x78,0x0,0x5f,0x0,0x77, - 0x0,0x61,0x0,0x69,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x6f,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x13,0x53,0x65,0x74,0x74,0x69,0x6e,0x67,0x20,0x6d,0x61, - 0x78,0x5f,0x77,0x61,0x69,0x74,0x20,0x74,0x6f,0x7,0x0,0x0,0x0,0xa,0x44,0x65, - 0x6d,0x6f,0x53,0x65,0x72,0x76,0x65,0x72,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x6d, - 0x0,0x69,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x65,0x0,0x6b,0x0,0x75,0x0,0x6e, - 0x0,0x64,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x6d,0x69, - 0x6c,0x6c,0x69,0x73,0x65,0x63,0x6f,0x6e,0x64,0x73,0x2e,0x7,0x0,0x0,0x0,0xa, - 0x44,0x65,0x6d,0x6f,0x53,0x65,0x72,0x76,0x65,0x72,0x1,0x3,0x0,0x0,0x0,0xb2, - 0x0,0x6d,0x0,0x69,0x0,0x6e,0x0,0x5f,0x0,0x77,0x0,0x61,0x0,0x69,0x0,0x74, - 0x0,0x20,0x0,0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73, - 0x0,0x74,0x0,0x20,0x0,0x6a,0x0,0x75,0x1,0x7c,0x0,0x20,0x0,0x75,0x1,0x7c, - 0x0,0x79,0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x79,0x0,0x2e,0x0,0x20,0x0,0x55, - 0x1,0x7c,0x0,0x79,0x0,0x6a,0x0,0x20,0x0,0x55,0x0,0x73,0x0,0x74,0x0,0x61, - 0x0,0x77,0x0,0x69,0x0,0x65,0x1,0x44,0x0,0x20,0x0,0x41,0x0,0x4f,0x0,0x32, - 0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x79,0x0,0x20,0x0,0x7a,0x0,0x6d, - 0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x69,0x1,0x7,0x0,0x20,0x0,0x6d,0x0,0x69, - 0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x6c,0x0,0x6e,0x1,0x5,0x0,0x20, - 0x0,0x77,0x0,0x61,0x0,0x72,0x0,0x74,0x0,0x6f,0x1,0x5b,0x1,0x7,0x0,0x20, - 0x0,0x63,0x0,0x7a,0x0,0x65,0x0,0x6b,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61, - 0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x49,0x6d,0x69,0x6e,0x5f, - 0x77,0x61,0x69,0x74,0x20,0x69,0x73,0x20,0x64,0x65,0x70,0x72,0x65,0x63,0x61,0x74, - 0x65,0x64,0x2e,0x20,0x55,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x63,0x6c,0x69,0x65, - 0x6e,0x74,0x20,0x53,0x65,0x74,0x74,0x69,0x6e,0x67,0x73,0x20,0x66,0x6f,0x72,0x20, - 0x6d,0x69,0x6e,0x69,0x6d,0x75,0x6d,0x20,0x77,0x61,0x69,0x74,0x20,0x69,0x6e,0x73, - 0x74,0x65,0x61,0x64,0x21,0x7,0x0,0x0,0x0,0xa,0x44,0x65,0x6d,0x6f,0x53,0x65, - 0x72,0x76,0x65,0x72,0x1,0x3,0x0,0x0,0xb,0x26,0x0,0x3c,0x0,0x68,0x0,0x32, - 0x0,0x3e,0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65, - 0x0,0x79,0x0,0x20,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65, - 0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x3c,0x0,0x2f,0x0,0x68,0x0,0x32,0x0,0x3e, - 0x0,0x53,0x0,0x79,0x0,0x6d,0x0,0x75,0x0,0x6c,0x0,0x61,0x0,0x74,0x0,0x6f, - 0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x72,0x0,0x61,0x0,0x6d,0x0,0x79,0x0,0x20, - 0x0,0x73,0x1,0x5,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x6a,0x0,0x3c, - 0x0,0x70,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x3e,0x0,0x4b,0x0,0x6f,0x0,0x64, - 0x0,0x20,0x1,0x7a,0x0,0x72,0x0,0xf3,0x0,0x64,0x1,0x42,0x0,0x6f,0x0,0x77, - 0x0,0x79,0x0,0x3a,0x0,0x3c,0x0,0x2f,0x0,0x62,0x0,0x3e,0x0,0x20,0x0,0x3c, - 0x0,0x61,0x0,0x20,0x0,0x68,0x0,0x72,0x0,0x65,0x0,0x66,0x0,0x3d,0x0,0x27, - 0x0,0x68,0x0,0x74,0x0,0x74,0x0,0x70,0x0,0x73,0x0,0x3a,0x0,0x2f,0x0,0x2f, - 0x0,0x67,0x0,0x69,0x0,0x74,0x0,0x68,0x0,0x75,0x0,0x62,0x0,0x2e,0x0,0x63, - 0x0,0x6f,0x0,0x6d,0x0,0x2f,0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72, - 0x0,0x6e,0x0,0x65,0x0,0x79,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e, - 0x0,0x65,0x0,0x2f,0x0,0x41,0x0,0x4f,0x0,0x32,0x0,0x2d,0x0,0x43,0x0,0x6c, - 0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x27,0x0,0x3e,0x0,0x68,0x0,0x74, - 0x0,0x74,0x0,0x70,0x0,0x73,0x0,0x3a,0x0,0x2f,0x0,0x2f,0x0,0x67,0x0,0x69, - 0x0,0x74,0x0,0x68,0x0,0x75,0x0,0x62,0x0,0x2e,0x0,0x63,0x0,0x6f,0x0,0x6d, - 0x0,0x2f,0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65, - 0x0,0x79,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x2f, - 0x0,0x41,0x0,0x4f,0x0,0x32,0x0,0x2d,0x0,0x43,0x0,0x6c,0x0,0x69,0x0,0x65, - 0x0,0x6e,0x0,0x74,0x0,0x3c,0x0,0x2f,0x0,0x61,0x0,0x3e,0x0,0x3c,0x0,0x70, - 0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x3e,0x0,0x47,0x1,0x42,0x0,0xf3,0x0,0x77, - 0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x77,0x0,0xf3, - 0x0,0x6a,0x0,0x3a,0x0,0x3c,0x0,0x2f,0x0,0x62,0x0,0x3e,0x0,0x3c,0x0,0x62, - 0x0,0x72,0x0,0x3e,0x0,0x4f,0x0,0x6d,0x0,0x6e,0x0,0x69,0x0,0x54,0x0,0x72, - 0x0,0x6f,0x0,0x69,0x0,0x64,0x0,0x2c,0x0,0x20,0x0,0x73,0x0,0x74,0x0,0x6f, - 0x0,0x6e,0x0,0x65,0x0,0x64,0x0,0x44,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x6f, - 0x0,0x72,0x0,0x64,0x0,0x2c,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x6e,0x0,0x67, - 0x0,0x62,0x0,0x79,0x0,0x74,0x0,0x65,0x0,0x31,0x0,0x2c,0x0,0x20,0x0,0x67, - 0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x62,0x0,0x6f,0x0,0x79,0x0,0x70,0x0,0x72, - 0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x2c,0x0,0x20,0x0,0x43, - 0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x70,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x2c, - 0x0,0x20,0x0,0x43,0x0,0x72,0x0,0x79,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6c, - 0x0,0x77,0x0,0x61,0x0,0x72,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x72,0x0,0x2c, - 0x0,0x20,0x0,0x49,0x0,0x61,0x0,0x6d,0x0,0x67,0x0,0x6f,0x0,0x6f,0x0,0x66, - 0x0,0x62,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x2c,0x0,0x20,0x0,0x69,0x0,0x6e, - 0x0,0x31,0x0,0x74,0x0,0x69,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x3c,0x0,0x70, - 0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x3e,0x0,0x52,0x0,0x6f,0x0,0x7a,0x0,0x77, - 0x0,0xf3,0x0,0x6a,0x0,0x20,0x0,0x4b,0x0,0x6c,0x0,0x69,0x0,0x65,0x0,0x6e, - 0x0,0x74,0x0,0x61,0x0,0x3a,0x0,0x3c,0x0,0x2f,0x0,0x62,0x0,0x3e,0x0,0x3c, - 0x0,0x62,0x0,0x72,0x0,0x3e,0x0,0x43,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x73, - 0x0,0x30,0x0,0x32,0x0,0x2c,0x0,0x20,0x0,0x77,0x0,0x69,0x0,0x6e,0x0,0x64, - 0x0,0x72,0x0,0x61,0x0,0x6d,0x0,0x6d,0x0,0x65,0x0,0x72,0x0,0x2c,0x0,0x20, - 0x0,0x73,0x0,0x6b,0x0,0x79,0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x76,0x0,0x69, - 0x0,0x6e,0x0,0x67,0x0,0x3c,0x0,0x70,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x3e, - 0x0,0x54,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e, - 0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x51,0x0,0x41,0x0,0x3a,0x0,0x3c,0x0,0x2f, - 0x0,0x62,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x72,0x0,0x3e,0x0,0x43,0x0,0x61, - 0x0,0x73,0x0,0x65,0x0,0x79,0x0,0x43,0x0,0x61,0x0,0x7a,0x0,0x79,0x0,0x2c, - 0x0,0x20,0x0,0x43,0x0,0x65,0x0,0x64,0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x44, - 0x0,0x65,0x0,0x77,0x0,0x69,0x0,0x74,0x0,0x74,0x0,0x2c,0x0,0x20,0x0,0x43, - 0x0,0x68,0x0,0x65,0x0,0x77,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x20, - 0x0,0x54,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x74,0x0,0x73,0x0,0x2c, - 0x0,0x20,0x0,0x43,0x0,0x72,0x0,0x61,0x0,0x7a,0x0,0x79,0x0,0x4a,0x0,0x43, - 0x0,0x2c,0x0,0x20,0x0,0x46,0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0,0x73, - 0x0,0x2c,0x0,0x20,0x0,0x46,0x0,0x75,0x0,0x72,0x0,0x79,0x0,0x20,0x0,0x4d, - 0x0,0x63,0x0,0x46,0x0,0x6c,0x0,0x75,0x0,0x72,0x0,0x72,0x0,0x79,0x0,0x2c, - 0x0,0x20,0x0,0x47,0x0,0x65,0x0,0x63,0x0,0x6b,0x0,0x2c,0x0,0x20,0x0,0x47, - 0x0,0x69,0x0,0x6e,0x0,0x2d,0x0,0x47,0x0,0x69,0x0,0x2c,0x0,0x20,0x0,0x4a, - 0x0,0x61,0x0,0x6d,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x2c,0x0,0x20, - 0x0,0x4d,0x0,0x69,0x0,0x6e,0x0,0x78,0x0,0x2c,0x0,0x20,0x0,0x50,0x0,0x61, - 0x0,0x6e,0x0,0x64,0x0,0x61,0x0,0x65,0x0,0x2c,0x0,0x20,0x0,0x52,0x0,0x6f, - 0x0,0x62,0x0,0x6f,0x0,0x74,0x0,0x69,0x0,0x63,0x0,0x20,0x0,0x4f,0x0,0x76, - 0x0,0x65,0x0,0x72,0x0,0x6c,0x0,0x6f,0x0,0x72,0x0,0x64,0x0,0x2c,0x0,0x20, - 0x0,0x53,0x0,0x68,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x6c,0x0,0x69, - 0x0,0x6f,0x0,0x6e,0x0,0x73,0x0,0x20,0x0,0x28,0x0,0x69,0x0,0x6e,0x0,0x61, - 0x0,0x63,0x0,0x7a,0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x53,0x0,0x68,0x0,0x61, - 0x0,0x6c,0x0,0x69,0x0,0x29,0x0,0x2c,0x0,0x20,0x0,0x53,0x0,0x69,0x0,0x65, - 0x0,0x72,0x0,0x72,0x0,0x61,0x0,0x2c,0x0,0x20,0x0,0x53,0x0,0x6f,0x0,0x6d, - 0x0,0x65,0x0,0x47,0x0,0x75,0x0,0x79,0x0,0x2c,0x0,0x20,0x0,0x56,0x0,0x65, - 0x0,0x72,0x0,0x69,0x0,0x74,0x0,0x61,0x0,0x73,0x0,0x2c,0x0,0x20,0x0,0x57, - 0x0,0x69,0x0,0x73,0x0,0x6f,0x0,0x3c,0x0,0x70,0x0,0x3e,0x0,0x3c,0x0,0x62, - 0x0,0x3e,0x0,0x54,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x73,0x0,0x6c,0x0,0x61, - 0x0,0x63,0x0,0x6a,0x0,0x65,0x0,0x3a,0x0,0x3c,0x0,0x2f,0x0,0x62,0x0,0x3e, - 0x0,0x3c,0x0,0x62,0x0,0x72,0x0,0x3e,0x0,0x6b,0x0,0x2d,0x0,0x65,0x0,0x6d, - 0x0,0x69,0x0,0x6b,0x0,0x6f,0x0,0x20,0x0,0x28,0x4,0x20,0x4,0x43,0x4,0x41, - 0x4,0x41,0x4,0x3a,0x4,0x38,0x4,0x39,0x0,0x29,0x0,0x2c,0x0,0x20,0x0,0x50, - 0x0,0x79,0x0,0x72,0x0,0x61,0x0,0x71,0x0,0x20,0x0,0x28,0x0,0x50,0x0,0x6f, - 0x0,0x6c,0x0,0x73,0x0,0x6b,0x0,0x69,0x0,0x29,0x0,0x2c,0x0,0x20,0x0,0x73, - 0x0,0x63,0x0,0x61,0x0,0x74,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x66,0x0,0x6c, - 0x0,0x6f,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x28,0x65,0xe5,0x67,0x2c, - 0x8a,0x9e,0x0,0x29,0x0,0x2c,0x0,0x20,0x0,0x76,0x0,0x69,0x0,0x6e,0x0,0x74, - 0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x78,0x0,0x20,0x0,0x28,0x4,0x20,0x4,0x43, - 0x4,0x41,0x4,0x41,0x4,0x3a,0x4,0x38,0x4,0x39,0x0,0x29,0x0,0x2c,0x0,0x20, - 0x0,0x77,0x0,0x69,0x0,0x6e,0x0,0x64,0x0,0x72,0x0,0x61,0x0,0x6d,0x0,0x6d, - 0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x28,0x0,0x45,0x0,0x73,0x0,0x70,0x0,0x61, - 0x0,0xf1,0x0,0x6f,0x0,0x6c,0x0,0x2c,0x0,0x20,0x0,0x50,0x0,0x6f,0x0,0x72, - 0x0,0x74,0x0,0x75,0x0,0x67,0x0,0x75,0x0,0xea,0x0,0x73,0x0,0x29,0x0,0x3c, - 0x0,0x70,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x3e,0x0,0x53,0x0,0x7a,0x0,0x63, - 0x0,0x7a,0x0,0x65,0x0,0x67,0x0,0xf3,0x0,0x6c,0x0,0x6e,0x0,0x65,0x0,0x20, - 0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x7a,0x0,0x69,0x1,0x19,0x0,0x6b,0x0,0x6f, - 0x0,0x77,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x3a,0x0,0x3c,0x0,0x2f, - 0x0,0x62,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x72,0x0,0x3e,0x0,0x43,0x0,0x72, - 0x0,0x61,0x0,0x7a,0x0,0x79,0x0,0x4a,0x0,0x43,0x0,0x20,0x0,0x28,0x0,0x64, - 0x0,0x79,0x0,0x72,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x20, - 0x0,0x77,0x0,0x79,0x0,0x64,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20, - 0x0,0x32,0x0,0x2e,0x0,0x38,0x0,0x29,0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x4d, - 0x0,0x61,0x0,0x78,0x0,0x69,0x0,0x6d,0x0,0x75,0x0,0x6d,0x0,0x56,0x0,0x6f, - 0x0,0x6c,0x0,0x74,0x0,0x79,0x0,0x20,0x0,0x28,0x0,0x70,0x0,0x72,0x0,0x6f, - 0x0,0x6d,0x0,0x6f,0x0,0x63,0x0,0x6a,0x0,0x61,0x0,0x20,0x0,0x77,0x0,0x79, - 0x0,0x64,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x32,0x0,0x2e, - 0x0,0x38,0x0,0x29,0x0,0x3b,0x0,0x20,0x0,0x52,0x0,0x65,0x0,0x6d,0x0,0x79, - 0x0,0x2c,0x0,0x20,0x0,0x48,0x0,0x69,0x0,0x62,0x0,0x69,0x0,0x6b,0x0,0x69, - 0x0,0x2c,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x75,0x0,0x72,0x0,0x74,0x0,0x2d, - 0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x6f,0x0,0x72,0x0,0x64,0x0,0x73,0x0,0x2e, - 0x0,0x6e,0x0,0x65,0x0,0x74,0x0,0x20,0x0,0x28,0x0,0x73,0x0,0x70,0x0,0x72, - 0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x27,0x0,0x79,0x0,0x29,0x0,0x3b,0x0,0x20, - 0x0,0x51,0x0,0x75,0x0,0x62,0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x6b,0x0,0x20, - 0x0,0x28,0x0,0x77,0x0,0x65,0x0,0x62,0x0,0x41,0x0,0x4f,0x0,0x29,0x0,0x3b, - 0x0,0x20,0x0,0x52,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x28,0x0,0x73,0x0,0x74, - 0x0,0x72,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x74, - 0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x74,0x0,0x6f,0x0,0x77,0x0,0x61, - 0x0,0x29,0x0,0x3b,0x0,0x20,0x0,0x44,0x0,0x72,0x0,0x61,0x0,0x78,0x0,0x69, - 0x0,0x72,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x28,0x0,0x64,0x0,0x65,0x0,0x73, - 0x0,0x69,0x0,0x67,0x0,0x6e,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x65, - 0x0,0x72,0x0,0x66,0x0,0x65,0x0,0x6a,0x0,0x73,0x0,0x75,0x0,0x29,0x0,0x3b, - 0x0,0x20,0x0,0x4c,0x0,0x65,0x0,0x77,0x0,0x64,0x0,0x74,0x0,0x6f,0x0,0x6e, - 0x0,0x20,0x0,0x69,0x0,0x20,0x0,0x41,0x0,0x72,0x0,0x67,0x0,0x6f,0x0,0x6e, - 0x0,0x65,0x0,0x75,0x0,0x73,0x0,0x20,0x0,0x28,0x0,0x74,0x0,0x73,0x0,0x75, - 0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x29,0x0,0x3b, - 0x0,0x20,0x0,0x46,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x63,0x0,0x79,0x0,0x2c, - 0x0,0x20,0x0,0x4e,0x0,0x6f,0x0,0x65,0x0,0x76,0x0,0x61,0x0,0x69,0x0,0x6e, - 0x0,0x2c,0x0,0x20,0x0,0x43,0x0,0x72,0x0,0x6f,0x0,0x6e,0x0,0x6e,0x0,0x69, - 0x0,0x63,0x0,0x6f,0x0,0x73,0x0,0x73,0x0,0x79,0x0,0x20,0x0,0x6f,0x0,0x72, - 0x0,0x61,0x0,0x7a,0x0,0x20,0x0,0x46,0x0,0x61,0x0,0x6e,0x0,0x61,0x0,0x74, - 0x0,0x53,0x0,0x6f,0x0,0x72,0x0,0x73,0x0,0x20,0x0,0x28,0x0,0x41,0x0,0x4f, - 0x0,0x31,0x0,0x29,0x0,0x3b,0x0,0x20,0x0,0x68,0x0,0x6f,0x0,0x73,0x0,0x74, - 0x0,0x6f,0x0,0x6d,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x77,0x0,0x65, - 0x0,0x72,0x0,0xf3,0x0,0x77,0x0,0x2c,0x0,0x20,0x0,0x6d,0x0,0x69,0x0,0x73, - 0x0,0x74,0x0,0x72,0x0,0x7a,0x0,0x6f,0x0,0x6d,0x0,0x20,0x0,0x67,0x0,0x69, - 0x0,0x65,0x0,0x72,0x0,0x2c,0x0,0x20,0x0,0x74,0x0,0x77,0x0,0xf3,0x0,0x72, - 0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x20,0x0,0x72,0x0,0x6f,0x0,0x7a,0x0,0x70, - 0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x2c,0x0,0x20,0x0,0x74,0x0,0x77,0x0,0xf3, - 0x0,0x72,0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x20,0x0,0x6b,0x0,0x6f,0x0,0x6e, - 0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x75,0x0,0x2c,0x0,0x20,0x0,0x69, - 0x0,0x20,0x0,0x64,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x1,0x42, - 0x0,0x65,0x0,0x6a,0x0,0x20,0x0,0x73,0x0,0x70,0x0,0x6f,0x1,0x42,0x0,0x65, - 0x0,0x63,0x0,0x7a,0x0,0x6e,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x20, - 0x0,0x41,0x0,0x4f,0x0,0x32,0x0,0x21,0x0,0x3c,0x0,0x70,0x0,0x3e,0x0,0x41, - 0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79,0x0,0x20, - 0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x73, - 0x0,0x69,0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x77,0x0,0x79,0x0,0x20, - 0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x6a,0x0,0x65,0x0,0x6b,0x0,0x74,0x0,0x20, - 0x0,0x77,0x0,0x69,0x0,0x7a,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x6e,0x0,0x65, - 0x0,0x6a,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x77,0x0,0x69,0x0,0x65,0x1,0x5b, - 0x0,0x63,0x0,0x69,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x72, - 0x0,0x61,0x0,0x77,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x6f, - 0x0,0x72,0x0,0x73,0x0,0x6b,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x28,0x0,0x63, - 0x0,0x29,0x0,0x20,0x0,0x32,0x0,0x30,0x0,0x31,0x0,0x36,0x0,0x2d,0x0,0x32, - 0x0,0x30,0x0,0x32,0x0,0x31,0x0,0x20,0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f, - 0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79,0x0,0x20,0x0,0x4f,0x0,0x6e,0x0,0x6c, - 0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x76,0x0,0x65, - 0x0,0x6c,0x0,0x6f,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x7a,0x0,0x79,0x0,0x2e, - 0x0,0x20,0x0,0x44,0x0,0x6f,0x0,0x74,0x0,0x79,0x0,0x63,0x0,0x7a,0x0,0x79, - 0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x63,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x6a, - 0x0,0x69,0x0,0x20,0x0,0x6f,0x0,0x70,0x0,0x65,0x0,0x6e,0x0,0x2d,0x0,0x73, - 0x0,0x6f,0x0,0x75,0x0,0x72,0x0,0x63,0x0,0x65,0x0,0x2e,0x0,0x20,0x0,0x57, - 0x0,0x73,0x0,0x7a,0x0,0x79,0x0,0x73,0x0,0x74,0x0,0x6b,0x0,0x69,0x0,0x65, - 0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x77,0x1,0x42, - 0x0,0x61,0x0,0x73,0x0,0x6e,0x0,0x6f,0x1,0x5b,0x0,0x63,0x0,0x69,0x0,0x20, - 0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x65,0x1,0x7c,0x1,0x5,0x0,0x20,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x69,0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x6f,0x0,0x64, - 0x0,0x70,0x0,0x6f,0x0,0x77,0x0,0x69,0x0,0x65,0x0,0x64,0x0,0x6e,0x0,0x69, - 0x0,0x63,0x0,0x68,0x0,0x20,0x0,0x77,0x1,0x42,0x0,0x61,0x1,0x5b,0x0,0x63, - 0x0,0x69,0x0,0x63,0x0,0x69,0x0,0x65,0x0,0x6c,0x0,0x69,0x0,0x2e,0x0,0x3c, - 0x0,0x70,0x0,0x3e,0x0,0x44,0x0,0x7a,0x0,0x69,0x0,0x61,0x1,0x42,0x0,0x61, - 0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x73, - 0x0,0x6a,0x0,0x69,0x0,0x20,0x0,0x51,0x0,0x74,0x0,0x20,0x0,0x25,0x0,0x32, - 0x0,0x20,0x0,0x7a,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x6c,0x0,0x6e,0x0,0x69, - 0x0,0x6b,0x0,0x69,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x64, - 0x0,0x69,0x0,0x6f,0x0,0x20,0x0,0x42,0x0,0x41,0x0,0x53,0x0,0x53,0x0,0x2e, - 0x0,0x3c,0x0,0x62,0x0,0x72,0x0,0x3e,0x0,0x50,0x0,0x6c,0x0,0x75,0x0,0x67, - 0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x41,0x0,0x50,0x0,0x4e,0x0,0x47,0x0,0x20, - 0x0,0x7a,0x0,0x61,0x1,0x42,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x61, - 0x0,0x6e,0x0,0x79,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x33,0x0,0x3c,0x0,0x70, - 0x0,0x3e,0x0,0x5a,0x0,0x62,0x0,0x75,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x61, - 0x0,0x6e,0x0,0x79,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x25,0x0,0x34, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x5,0x81,0x3c,0x68,0x32,0x3e,0x41,0x74, - 0x74,0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x25,0x31, - 0x3c,0x2f,0x68,0x32,0x3e,0x54,0x68,0x65,0x20,0x63,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x20,0x64,0x72,0x61,0x6d,0x61,0x20,0x73,0x69,0x6d,0x75,0x6c,0x61,0x74, - 0x6f,0x72,0x2e,0x3c,0x70,0x3e,0x3c,0x62,0x3e,0x53,0x6f,0x75,0x72,0x63,0x65,0x20, - 0x63,0x6f,0x64,0x65,0x3a,0x3c,0x2f,0x62,0x3e,0x20,0x3c,0x61,0x20,0x68,0x72,0x65, - 0x66,0x3d,0x27,0x68,0x74,0x74,0x70,0x73,0x3a,0x2f,0x2f,0x67,0x69,0x74,0x68,0x75, - 0x62,0x2e,0x63,0x6f,0x6d,0x2f,0x41,0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x4f,0x6e, - 0x6c,0x69,0x6e,0x65,0x2f,0x41,0x4f,0x32,0x2d,0x43,0x6c,0x69,0x65,0x6e,0x74,0x27, - 0x3e,0x68,0x74,0x74,0x70,0x73,0x3a,0x2f,0x2f,0x67,0x69,0x74,0x68,0x75,0x62,0x2e, - 0x63,0x6f,0x6d,0x2f,0x41,0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x4f,0x6e,0x6c,0x69, - 0x6e,0x65,0x2f,0x41,0x4f,0x32,0x2d,0x43,0x6c,0x69,0x65,0x6e,0x74,0x3c,0x2f,0x61, - 0x3e,0x3c,0x70,0x3e,0x3c,0x62,0x3e,0x4d,0x61,0x6a,0x6f,0x72,0x20,0x64,0x65,0x76, - 0x65,0x6c,0x6f,0x70,0x6d,0x65,0x6e,0x74,0x3a,0x3c,0x2f,0x62,0x3e,0x3c,0x62,0x72, - 0x3e,0x4f,0x6d,0x6e,0x69,0x54,0x72,0x6f,0x69,0x64,0x2c,0x20,0x73,0x74,0x6f,0x6e, - 0x65,0x64,0x44,0x69,0x73,0x63,0x6f,0x72,0x64,0x2c,0x20,0x6c,0x6f,0x6e,0x67,0x62, - 0x79,0x74,0x65,0x31,0x2c,0x20,0x67,0x61,0x6d,0x65,0x62,0x6f,0x79,0x70,0x72,0x69, - 0x6e,0x74,0x65,0x72,0x2c,0x20,0x43,0x65,0x72,0x61,0x70,0x74,0x65,0x72,0x2c,0x20, - 0x43,0x72,0x79,0x73,0x74,0x61,0x6c,0x77,0x61,0x72,0x72,0x69,0x6f,0x72,0x2c,0x20, - 0x49,0x61,0x6d,0x67,0x6f,0x6f,0x66,0x62,0x61,0x6c,0x6c,0x2c,0x20,0x69,0x6e,0x31, - 0x74,0x69,0x61,0x74,0x65,0x3c,0x70,0x3e,0x3c,0x62,0x3e,0x43,0x6c,0x69,0x65,0x6e, - 0x74,0x20,0x64,0x65,0x76,0x65,0x6c,0x6f,0x70,0x6d,0x65,0x6e,0x74,0x3a,0x3c,0x2f, - 0x62,0x3e,0x3c,0x62,0x72,0x3e,0x43,0x65,0x6e,0x74,0x73,0x30,0x32,0x2c,0x20,0x77, - 0x69,0x6e,0x64,0x72,0x61,0x6d,0x6d,0x65,0x72,0x2c,0x20,0x73,0x6b,0x79,0x65,0x64, - 0x65,0x76,0x69,0x6e,0x67,0x3c,0x70,0x3e,0x3c,0x62,0x3e,0x51,0x41,0x20,0x74,0x65, - 0x73,0x74,0x69,0x6e,0x67,0x3a,0x3c,0x2f,0x62,0x3e,0x3c,0x62,0x72,0x3e,0x43,0x61, - 0x73,0x65,0x79,0x43,0x61,0x7a,0x79,0x2c,0x20,0x43,0x65,0x64,0x72,0x69,0x63,0x44, - 0x65,0x77,0x69,0x74,0x74,0x2c,0x20,0x43,0x68,0x65,0x77,0x61,0x62,0x6c,0x65,0x20, - 0x54,0x61,0x62,0x6c,0x65,0x74,0x73,0x2c,0x20,0x43,0x72,0x61,0x7a,0x79,0x4a,0x43, - 0x2c,0x20,0x46,0x61,0x6e,0x74,0x6f,0x73,0x2c,0x20,0x46,0x75,0x72,0x79,0x20,0x4d, - 0x63,0x46,0x6c,0x75,0x72,0x72,0x79,0x2c,0x20,0x47,0x65,0x63,0x6b,0x2c,0x20,0x47, - 0x69,0x6e,0x2d,0x47,0x69,0x2c,0x20,0x4a,0x61,0x6d,0x61,0x6e,0x69,0x61,0x2c,0x20, - 0x4d,0x69,0x6e,0x78,0x2c,0x20,0x50,0x61,0x6e,0x64,0x61,0x65,0x2c,0x20,0x52,0x6f, - 0x62,0x6f,0x74,0x69,0x63,0x20,0x4f,0x76,0x65,0x72,0x6c,0x6f,0x72,0x64,0x2c,0x20, - 0x53,0x68,0x61,0x64,0x6f,0x77,0x6c,0x69,0x6f,0x6e,0x73,0x20,0x28,0x61,0x6b,0x61, - 0x20,0x53,0x68,0x61,0x6c,0x69,0x29,0x2c,0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x2c, - 0x20,0x53,0x6f,0x6d,0x65,0x47,0x75,0x79,0x2c,0x20,0x56,0x65,0x72,0x69,0x74,0x61, - 0x73,0x2c,0x20,0x57,0x69,0x73,0x6f,0x3c,0x70,0x3e,0x3c,0x62,0x3e,0x54,0x72,0x61, - 0x6e,0x73,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x3c,0x2f,0x62,0x3e,0x3c,0x62, - 0x72,0x3e,0x6b,0x2d,0x65,0x6d,0x69,0x6b,0x6f,0x20,0x28,0xd0,0xa0,0xd1,0x83,0xd1, - 0x81,0xd1,0x81,0xd0,0xba,0xd0,0xb8,0xd0,0xb9,0x29,0x2c,0x20,0x50,0x79,0x72,0x61, - 0x71,0x20,0x28,0x50,0x6f,0x6c,0x73,0x6b,0x69,0x29,0x2c,0x20,0x73,0x63,0x61,0x74, - 0x74,0x65,0x72,0x66,0x6c,0x6f,0x77,0x65,0x72,0x20,0x28,0xe6,0x97,0xa5,0xe6,0x9c, - 0xac,0xe8,0xaa,0x9e,0x29,0x2c,0x20,0x76,0x69,0x6e,0x74,0x70,0x72,0x6f,0x78,0x20, - 0x28,0xd0,0xa0,0xd1,0x83,0xd1,0x81,0xd1,0x81,0xd0,0xba,0xd0,0xb8,0xd0,0xb9,0x29, - 0x2c,0x20,0x77,0x69,0x6e,0x64,0x72,0x61,0x6d,0x6d,0x65,0x72,0x20,0x28,0x45,0x73, - 0x70,0x61,0xc3,0xb1,0x6f,0x6c,0x2c,0x20,0x50,0x6f,0x72,0x74,0x75,0x67,0x75,0xc3, - 0xaa,0x73,0x29,0x3c,0x70,0x3e,0x3c,0x62,0x3e,0x53,0x70,0x65,0x63,0x69,0x61,0x6c, - 0x20,0x74,0x68,0x61,0x6e,0x6b,0x73,0x3a,0x3c,0x2f,0x62,0x3e,0x3c,0x62,0x72,0x3e, - 0x43,0x72,0x61,0x7a,0x79,0x4a,0x43,0x20,0x28,0x32,0x2e,0x38,0x20,0x72,0x65,0x6c, - 0x65,0x61,0x73,0x65,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x29,0x20,0x61, - 0x6e,0x64,0x20,0x4d,0x61,0x78,0x69,0x6d,0x75,0x6d,0x56,0x6f,0x6c,0x74,0x79,0x20, - 0x28,0x32,0x2e,0x38,0x20,0x72,0x65,0x6c,0x65,0x61,0x73,0x65,0x20,0x70,0x72,0x6f, - 0x6d,0x6f,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x20,0x52,0x65,0x6d,0x79,0x2c,0x20,0x48, - 0x69,0x62,0x69,0x6b,0x69,0x2c,0x20,0x63,0x6f,0x75,0x72,0x74,0x2d,0x72,0x65,0x63, - 0x6f,0x72,0x64,0x73,0x2e,0x6e,0x65,0x74,0x20,0x28,0x73,0x70,0x72,0x69,0x74,0x65, - 0x73,0x29,0x3b,0x20,0x51,0x75,0x62,0x72,0x69,0x63,0x6b,0x20,0x28,0x77,0x65,0x62, - 0x41,0x4f,0x29,0x3b,0x20,0x52,0x75,0x65,0x20,0x28,0x77,0x65,0x62,0x73,0x69,0x74, - 0x65,0x29,0x3b,0x20,0x44,0x72,0x61,0x78,0x69,0x72,0x63,0x68,0x20,0x28,0x55,0x49, - 0x20,0x64,0x65,0x73,0x69,0x67,0x6e,0x29,0x3b,0x20,0x4c,0x65,0x77,0x64,0x74,0x6f, - 0x6e,0x20,0x61,0x6e,0x64,0x20,0x41,0x72,0x67,0x6f,0x6e,0x65,0x75,0x73,0x20,0x28, - 0x74,0x73,0x75,0x73,0x65,0x72,0x76,0x65,0x72,0x29,0x3b,0x20,0x46,0x69,0x65,0x72, - 0x63,0x79,0x2c,0x20,0x4e,0x6f,0x65,0x76,0x61,0x69,0x6e,0x2c,0x20,0x43,0x72,0x6f, - 0x6e,0x6e,0x69,0x63,0x6f,0x73,0x73,0x79,0x2c,0x20,0x61,0x6e,0x64,0x20,0x46,0x61, - 0x6e,0x61,0x74,0x53,0x6f,0x72,0x73,0x20,0x28,0x41,0x4f,0x31,0x29,0x3b,0x20,0x73, - 0x65,0x72,0x76,0x65,0x72,0x20,0x68,0x6f,0x73,0x74,0x73,0x2c,0x20,0x67,0x61,0x6d, - 0x65,0x20,0x6d,0x61,0x73,0x74,0x65,0x72,0x73,0x2c,0x20,0x63,0x61,0x73,0x65,0x20, - 0x6d,0x61,0x6b,0x65,0x72,0x73,0x2c,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x20, - 0x63,0x72,0x65,0x61,0x74,0x6f,0x72,0x73,0x2c,0x20,0x61,0x6e,0x64,0x20,0x74,0x68, - 0x65,0x20,0x77,0x68,0x6f,0x6c,0x65,0x20,0x41,0x4f,0x32,0x20,0x63,0x6f,0x6d,0x6d, - 0x75,0x6e,0x69,0x74,0x79,0x21,0x3c,0x70,0x3e,0x54,0x68,0x65,0x20,0x41,0x74,0x74, - 0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x6e,0x65,0x74, - 0x77,0x6f,0x72,0x6b,0x65,0x64,0x20,0x76,0x69,0x73,0x75,0x61,0x6c,0x20,0x6e,0x6f, - 0x76,0x65,0x6c,0x20,0x70,0x72,0x6f,0x6a,0x65,0x63,0x74,0x20,0x69,0x73,0x20,0x63, - 0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x32,0x30,0x31, - 0x36,0x2d,0x32,0x30,0x32,0x31,0x20,0x41,0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x20, - 0x4f,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x64,0x65,0x76,0x65,0x6c,0x6f,0x70,0x65,0x72, - 0x73,0x2e,0x20,0x4f,0x70,0x65,0x6e,0x2d,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x6c, - 0x69,0x63,0x65,0x6e,0x73,0x65,0x73,0x20,0x61,0x70,0x70,0x6c,0x79,0x2e,0x20,0x41, - 0x6c,0x6c,0x20,0x6f,0x74,0x68,0x65,0x72,0x20,0x61,0x73,0x73,0x65,0x74,0x73,0x20, - 0x61,0x72,0x65,0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79, - 0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x72,0x65,0x73,0x70,0x65,0x63, - 0x74,0x69,0x76,0x65,0x20,0x6f,0x77,0x6e,0x65,0x72,0x73,0x2e,0x3c,0x70,0x3e,0x52, - 0x75,0x6e,0x6e,0x69,0x6e,0x67,0x20,0x6f,0x6e,0x20,0x51,0x74,0x20,0x76,0x65,0x72, - 0x73,0x69,0x6f,0x6e,0x20,0x25,0x32,0x20,0x77,0x69,0x74,0x68,0x20,0x74,0x68,0x65, - 0x20,0x42,0x41,0x53,0x53,0x20,0x61,0x75,0x64,0x69,0x6f,0x20,0x65,0x6e,0x67,0x69, - 0x6e,0x65,0x2e,0x3c,0x62,0x72,0x3e,0x41,0x50,0x4e,0x47,0x20,0x70,0x6c,0x75,0x67, - 0x69,0x6e,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x3a,0x20,0x25,0x33,0x3c,0x70,0x3e, - 0x42,0x75,0x69,0x6c,0x74,0x20,0x6f,0x6e,0x20,0x25,0x34,0x7,0x0,0x0,0x0,0x5, - 0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x8,0x0,0x4f,0x0,0x70,0x0, - 0x69,0x0,0x73,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x41,0x62,0x6f, - 0x75,0x74,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0, - 0x0,0x54,0x0,0x55,0x0,0x6d,0x0,0x6f,0x1,0x7c,0x0,0x6c,0x0,0x69,0x0,0x77, - 0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x7a,0x0,0x6d,0x0,0x69,0x0,0x61,0x0,0x6e, - 0x1,0x19,0x0,0x20,0x0,0x72,0x0,0xf3,0x1,0x7c,0x0,0x6e,0x0,0x79,0x0,0x63, - 0x0,0x68,0x0,0x20,0x0,0x61,0x0,0x73,0x0,0x70,0x0,0x65,0x0,0x6b,0x0,0x74, - 0x0,0xf3,0x0,0x77,0x0,0x20,0x0,0x6b,0x0,0x6c,0x0,0x69,0x0,0x65,0x0,0x6e, - 0x0,0x74,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x33, - 0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x79,0x6f,0x75,0x20,0x74,0x6f,0x20,0x63,0x68, - 0x61,0x6e,0x67,0x65,0x20,0x76,0x61,0x72,0x69,0x6f,0x75,0x73,0x20,0x61,0x73,0x70, - 0x65,0x63,0x74,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x63,0x6c,0x69,0x65, - 0x6e,0x74,0x2e,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0, - 0x0,0x0,0x24,0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0, - 0x65,0x0,0x79,0x0,0x20,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0, - 0x65,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x12,0x41,0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f,0x6e,0x6c,0x69,0x6e,0x65, - 0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0, - 0x0,0x0,0xc,0x0,0x41,0x0,0x6e,0x0,0x75,0x0,0x6c,0x0,0x75,0x0,0x6a,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x61,0x6e,0x63,0x65,0x6c,0x7, - 0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x1,0x24,0x0, - 0x57,0x0,0x79,0x0,0x67,0x1,0x42,0x1,0x5,0x0,0x64,0x0,0x61,0x0,0x20,0x0, - 0x6e,0x0,0x61,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x2c,0x0,0x20,0x1,0x7c,0x0, - 0x65,0x0,0x20,0x0,0x74,0x0,0x77,0x0,0xf3,0x0,0x6a,0x0,0x20,0x0,0x6b,0x0, - 0x6c,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x20,0x0,0x6e,0x0,0x69,0x0, - 0x65,0x0,0x20,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x20,0x0,0x75,0x0, - 0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x79,0x0, - 0x20,0x0,0x70,0x0,0x6f,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0,0x6e,0x0, - 0x69,0x0,0x65,0x0,0x2e,0x0,0xa,0x0,0x43,0x0,0x7a,0x0,0x79,0x0,0x20,0x0, - 0x70,0x0,0x6f,0x0,0x62,0x0,0x72,0x0,0x61,0x1,0x42,0x0,0x65,0x1,0x5b,0x0, - 0x20,0x0,0x77,0x0,0x73,0x0,0x7a,0x0,0x79,0x0,0x73,0x0,0x74,0x0,0x6b,0x0, - 0x69,0x0,0x65,0x0,0x20,0x0,0x7a,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x62,0x0, - 0x79,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x70,0x0,0x72,0x0,0x61,0x0,0x77,0x0, - 0x6e,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x7a,0x0,0x20,0x0,0x74,0x0,0x69,0x0, - 0x6e,0x0,0x79,0x0,0x2e,0x0,0x63,0x0,0x63,0x0,0x2f,0x0,0x67,0x0,0x65,0x0, - 0x74,0x0,0x61,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x77,0x1,0x42,0x1,0x5,0x0, - 0x63,0x0,0x7a,0x0,0x61,0x0,0x6a,0x1,0x5,0x0,0x63,0x0,0x20,0x0,0x64,0x0, - 0x75,0x1,0x7c,0x0,0x79,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x6c,0x0,0x64,0x0, - 0x65,0x0,0x72,0x0,0x20,0x0,0x27,0x0,0x62,0x0,0x61,0x0,0x73,0x0,0x65,0x0, - 0x27,0x0,0x3f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x95,0x49,0x74,0x20, - 0x64,0x6f,0x65,0x73,0x6e,0x27,0x74,0x20,0x6c,0x6f,0x6f,0x6b,0x20,0x6c,0x69,0x6b, - 0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x69,0x73, - 0x20,0x73,0x65,0x74,0x20,0x75,0x70,0x20,0x63,0x6f,0x72,0x72,0x65,0x63,0x74,0x6c, - 0x79,0x2e,0xa,0x44,0x69,0x64,0x20,0x79,0x6f,0x75,0x20,0x64,0x6f,0x77,0x6e,0x6c, - 0x6f,0x61,0x64,0x20,0x61,0x6c,0x6c,0x20,0x72,0x65,0x73,0x6f,0x75,0x72,0x63,0x65, - 0x73,0x20,0x63,0x6f,0x72,0x72,0x65,0x63,0x74,0x6c,0x79,0x20,0x66,0x72,0x6f,0x6d, - 0x20,0x74,0x69,0x6e,0x79,0x2e,0x63,0x63,0x2f,0x67,0x65,0x74,0x61,0x6f,0x2c,0x20, - 0x69,0x6e,0x63,0x6c,0x75,0x64,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x6c,0x61, - 0x72,0x67,0x65,0x20,0x27,0x62,0x61,0x73,0x65,0x27,0x20,0x66,0x6f,0x6c,0x64,0x65, - 0x72,0x3f,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0, - 0x0,0x12,0x1,0x41,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x61,0x0,0x6e, - 0x0,0x69,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4c,0x6f, - 0x61,0x64,0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1, - 0x3,0x0,0x0,0x0,0xa,0x0,0x4e,0x0,0x61,0x0,0x7a,0x0,0x77,0x0,0x61,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x4e,0x61,0x6d,0x65,0x7,0x0,0x0, - 0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x6,0x0,0x4e,0x0, - 0x69,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2,0x4e,0x6f,0x7, - 0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0xff,0xff,0xff,0xff,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4f,0x66,0x66,0x6c,0x69,0x6e,0x65, - 0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0xff,0xff,0xff,0xff, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x4f,0x6e,0x6c,0x69,0x6e,0x65, - 0x3a,0x20,0x25,0x31,0x2f,0x25,0x32,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62, - 0x79,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x53,0x0,0x7a,0x0,0x75,0x0,0x6b,0x0, - 0x61,0x0,0x6a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x53,0x65,0x61, - 0x72,0x63,0x68,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0, - 0x0,0x0,0x14,0x0,0x55,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x77,0x0,0x69,0x0, - 0x65,0x0,0x6e,0x0,0x69,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x8,0x53,0x65,0x74,0x74,0x69,0x6e,0x67,0x73,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f, - 0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x14,0x0,0x57,0x0,0x65,0x0,0x72,0x0, - 0x73,0x0,0x6a,0x0,0x61,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x56,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3a,0x20, - 0x25,0x31,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0, - 0x0,0x6,0x0,0x54,0x0,0x61,0x0,0x6b,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x3,0x59,0x65,0x73,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1, - 0x3,0x0,0x0,0x0,0x10,0x0,0x4e,0x0,0x49,0x0,0x45,0x0,0x5a,0x0,0x4e,0x0, - 0x41,0x0,0x4e,0x0,0x45,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x55, - 0x4e,0x4b,0x4e,0x4f,0x57,0x4e,0x7,0x0,0x0,0x0,0xc,0x63,0x68,0x61,0x74,0x6c, - 0x6f,0x67,0x70,0x69,0x65,0x63,0x65,0x1,0x3,0x0,0x0,0x0,0x8,0x0,0x42,0x1, - 0x42,0x1,0x5,0x0,0x64,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x45, - 0x72,0x72,0x6f,0x72,0x7,0x0,0x0,0x0,0xf,0x64,0x65,0x62,0x75,0x67,0x5f,0x66, - 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x1,0x3,0x0,0x0,0x0,0x10,0x0,0x42, - 0x1,0x42,0x1,0x5,0x0,0x64,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x45,0x72,0x72,0x6f,0x72,0x3a,0x20,0x25, - 0x31,0x7,0x0,0x0,0x0,0xf,0x64,0x65,0x62,0x75,0x67,0x5f,0x66,0x75,0x6e,0x63, - 0x74,0x69,0x6f,0x6e,0x73,0x1,0x3,0x0,0x0,0x0,0x14,0x0,0x4f,0x0,0x67,0x1, - 0x42,0x0,0x6f,0x0,0x73,0x0,0x7a,0x0,0x65,0x0,0x6e,0x0,0x69,0x0,0x65,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4e,0x6f,0x74,0x69,0x63,0x65,0x7, - 0x0,0x0,0x0,0xf,0x64,0x65,0x62,0x75,0x67,0x5f,0x66,0x75,0x6e,0x63,0x74,0x69, - 0x6f,0x6e,0x73,0x1,0x88,0x0,0x0,0x0,0xa,0x1,0x1,0xff,0x14,0x2,0x4,0xfd, - 0x2c,0xa,0x13, - // /media/stoned/SHARED/Git/AO2-Client/resource/translations/ao_jp.qm - 0x0,0x0,0xf,0x6b, - 0x3c, - 0xb8,0x64,0x18,0xca,0xef,0x9c,0x95,0xcd,0x21,0x1c,0xbf,0x60,0xa1,0xbd,0xdd,0xa7, - 0x0,0x0,0x0,0x5,0x6a,0x61,0x5f,0x4a,0x50,0x42,0x0,0x0,0x1,0xd8,0x0,0x0, - 0x57,0x85,0x0,0x0,0x7,0xb9,0x0,0x0,0x59,0xd8,0x0,0x0,0x8,0xab,0x0,0x4, - 0xd3,0x0,0x0,0x0,0x5,0xc8,0x0,0x5,0x48,0x35,0x0,0x0,0x7,0xb,0x0,0x5, - 0x48,0x35,0x0,0x0,0xb,0x9e,0x0,0x5,0x56,0x45,0x0,0x0,0x7,0x31,0x0,0x5, - 0x7b,0xba,0x0,0x0,0x3,0x40,0x0,0x1d,0xb,0x21,0x0,0x0,0xc,0x74,0x0,0x47, - 0x96,0xc4,0x0,0x0,0x9,0x56,0x0,0x49,0x30,0x73,0x0,0x0,0x4,0xc6,0x0,0x4c, - 0x99,0x62,0x0,0x0,0x5,0x9f,0x0,0x4c,0x99,0x62,0x0,0x0,0xc,0xd7,0x0,0x4e, - 0xb8,0x84,0x0,0x0,0x5,0xf2,0x0,0x54,0xc9,0xf3,0x0,0x0,0x6,0xe4,0x0,0xa5, - 0x9e,0x4e,0x0,0x0,0x0,0x4c,0x1,0x90,0x8a,0xff,0x0,0x0,0xa,0x52,0x2,0x2a, - 0xb9,0xea,0x0,0x0,0x3,0xa0,0x2,0xc5,0x76,0x61,0x0,0x0,0x0,0x0,0x2,0xc5, - 0x76,0x61,0x0,0x0,0x9,0xe4,0x2,0xe6,0xd3,0xa2,0x0,0x0,0x5,0x21,0x3,0x57, - 0xb0,0x17,0x0,0x0,0x1,0x3f,0x3,0x57,0xb0,0x17,0x0,0x0,0xb,0x75,0x4,0x80, - 0xda,0x34,0x0,0x0,0x4,0xf1,0x4,0x93,0x7,0x6a,0x0,0x0,0x2,0x16,0x4,0x98, - 0x49,0xbc,0x0,0x0,0xa,0x28,0x5,0x1b,0xad,0x8a,0x0,0x0,0x2,0x7c,0x5,0x1c, - 0x96,0x5a,0x0,0x0,0x2,0xac,0x5,0x38,0xaa,0xc2,0x0,0x0,0x6,0xb8,0x5,0x4c, - 0x9f,0x6a,0x0,0x0,0x2,0xdc,0x5,0x56,0xaf,0x95,0x0,0x0,0xd,0x41,0x5,0x9b, - 0x88,0x98,0x0,0x0,0x8,0x2d,0x5,0x9b,0x88,0x98,0x0,0x0,0xc,0x2a,0x5,0x9c, - 0x9c,0xc2,0x0,0x0,0x8,0x55,0x5,0xcd,0x30,0x15,0x0,0x0,0xb,0xc0,0x6,0x26, - 0x54,0x91,0x0,0x0,0x6,0x46,0x6,0x83,0xdc,0x2e,0x0,0x0,0x3,0xd7,0x6,0xb6, - 0x6c,0xfe,0x0,0x0,0x7,0xdc,0x7,0x5f,0x40,0x71,0x0,0x0,0x8,0xfd,0x8,0xaa, - 0xe3,0xe4,0x0,0x0,0x7,0x87,0x9,0x2d,0xc9,0x42,0x0,0x0,0x1,0x70,0x9,0x4c, - 0x8f,0x69,0x0,0x0,0x4,0x8f,0x9,0x65,0x8e,0x11,0x0,0x0,0xd,0x6,0x9,0xc8, - 0xb4,0xb9,0x0,0x0,0x6,0x74,0xa,0x30,0x34,0xee,0x0,0x0,0x9,0x2d,0xa,0x30, - 0x34,0xee,0x0,0x0,0xc,0xab,0xa,0x7b,0x45,0x52,0x0,0x0,0xb,0xeb,0xb,0xaa, - 0xd1,0x2,0x0,0x0,0x8,0xd2,0xb,0xaf,0xbd,0x1,0x0,0x0,0x7,0x55,0xb,0xcc, - 0x5d,0x2a,0x0,0x0,0x2,0x4a,0xb,0xd2,0xf0,0x2e,0x0,0x0,0x0,0xa7,0xc,0x54, - 0x5d,0xa2,0x0,0x0,0x5,0x5f,0xc,0xbb,0x1,0x73,0x0,0x0,0x3,0x70,0xc,0xbb, - 0x1,0x73,0x0,0x0,0x8,0x81,0xc,0xbb,0x1,0x73,0x0,0x0,0xc,0x4e,0xe,0x9f, - 0x90,0x9e,0x0,0x0,0x4,0x24,0xe,0x9f,0x90,0x9e,0x0,0x0,0x9,0x7d,0xe,0xc0, - 0x3b,0xf1,0x0,0x0,0x6,0x1b,0xe,0xff,0xbf,0x42,0x0,0x0,0x1,0xc4,0xf,0xb3, - 0xad,0xaa,0x0,0x0,0x3,0xc,0x69,0x0,0x0,0xd,0x6f,0x3,0x0,0x0,0x0,0x18, - 0x90,0x6,0x8e,0xe2,0x88,0xc1,0x52,0x24,0x30,0xaa,0x30,0xf3,0x30,0xe9,0x30,0xa4, - 0x30,0xf3,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x12,0x41,0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f,0x6e,0x6c,0x69,0x6e, - 0x65,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x20,0x30,0xb5,0x30,0xfc, - 0x30,0xd0,0x30,0xfc,0x30,0x4c,0x30,0x64,0x30,0x6a,0x30,0x4c,0x30,0x89,0x30,0x6a, - 0x30,0x4f,0x30,0x6a,0x30,0x8a,0x30,0x7e,0x30,0x57,0x30,0x5f,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x19,0x44,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74, - 0x65,0x64,0x20,0x66,0x72,0x6f,0x6d,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x7, - 0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x1,0x3,0x0,0x0,0x0,0x36,0x30,0xde,0x30,0xb9,0x30,0xbf,0x30,0xfc,0x30, - 0xb5,0x30,0xfc,0x30,0xd0,0x30,0xfc,0x30,0x6b,0x30,0x64,0x30,0x6a,0x30,0x4c,0x30, - 0x8a,0x30,0x7e,0x30,0x5b,0x30,0x93,0x30,0x2,0x0,0x25,0x0,0x31,0x79,0xd2,0x30, - 0x6e,0x5f,0x8c,0x30,0x67,0x30,0x82,0x30,0x46,0x4e,0x0,0x56,0xde,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x40,0x45,0x72,0x72,0x6f,0x72,0x20,0x63,0x6f,0x6e, - 0x6e,0x65,0x63,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x6d,0x61,0x73,0x74,0x65, - 0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x20,0x57,0x69,0x6c,0x6c,0x20,0x74, - 0x72,0x79,0x20,0x61,0x67,0x61,0x69,0x6e,0x20,0x69,0x6e,0x20,0x25,0x31,0x20,0x73, - 0x65,0x63,0x6f,0x6e,0x64,0x73,0x2e,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70, - 0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x8,0x30, - 0xed,0x30,0xfc,0x30,0xc9,0x4e,0x2d,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x7,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41, - 0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x1e, - 0x30,0xad,0x30,0xe3,0x30,0xe9,0x30,0x4c,0x30,0xed,0x30,0xfc,0x30,0xc9,0x4e,0x2d, - 0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x14,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x20, - 0x63,0x68,0x61,0x72,0x73,0x3a,0xa,0x25,0x31,0x2f,0x25,0x32,0x7,0x0,0x0,0x0, - 0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3, - 0x0,0x0,0x0,0x1c,0x97,0xf3,0x69,0x7d,0x30,0x4c,0x30,0xed,0x30,0xfc,0x30,0xc9, - 0x4e,0x2d,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x14,0x4c,0x6f,0x61,0x64,0x69,0x6e, - 0x67,0x20,0x6d,0x75,0x73,0x69,0x63,0x3a,0xa,0x25,0x31,0x2f,0x25,0x32,0x7,0x0, - 0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x1,0x3,0x0,0x0,0x0,0xa,0x30,0xd6,0x30,0xea,0x30,0xc3,0x30,0xd7,0x0,0x3a, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x42,0x6c,0x69,0x70,0x73,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x6,0x5f,0x1,0x8b,0x77,0x58,0xeb, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x44,0x65,0x66,0x65,0x6e,0x73, - 0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x6,0x88,0xc1,0x52,0x24, - 0x5b,0x98,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4a,0x75,0x64,0x67, - 0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x6,0x96,0x6a,0x5b,0xe9, - 0x54,0xe1,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4a,0x75,0x72,0x6f, - 0x72,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x6,0x97,0xf3,0x69,0x7d, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4d,0x75,0x73,0x69, - 0x63,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x4,0x69,0x1c,0x4e,0x8b, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x50,0x72,0x6f,0x73,0x65,0x63, - 0x75,0x74,0x69,0x6f,0x6e,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x8, - 0x52,0xb9,0x67,0x9c,0x97,0xf3,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x4,0x53,0x46,0x58,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x4, - 0x8a,0x2d,0x5b,0x9a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x65, - 0x74,0x74,0x69,0x6e,0x67,0x73,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x6, - 0x8a,0x18,0x93,0x32,0x5b,0x98,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd, - 0x53,0x74,0x65,0x6e,0x6f,0x67,0x72,0x61,0x70,0x68,0x65,0x72,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x1c,0x65,0xb0,0x30,0x57,0x30,0x44,0x8a,0x3c,0x62, - 0xe0,0x30,0x92,0x4e,0xd8,0x30,0x51,0x52,0xa0,0x30,0x48,0x30,0x8b,0x0,0x2e,0x0, - 0x2e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x41,0x64,0x64, - 0x20,0x6e,0x65,0x77,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x2e,0x2e,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x1a,0x30,0xaf,0x30,0xe9,0x30,0xa4,0x30,0xa2,0x30,0xf3,0x30,0xc8, - 0x30,0x67,0x59,0x9,0x66,0xf4,0x30,0x67,0x30,0x4d,0x30,0x7e,0x30,0x59,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x33,0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x79, - 0x6f,0x75,0x20,0x74,0x6f,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x76,0x61,0x72, - 0x69,0x6f,0x75,0x73,0x20,0x61,0x73,0x70,0x65,0x63,0x74,0x73,0x20,0x6f,0x66,0x20, - 0x74,0x68,0x65,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x30, - 0xed,0x30,0xd3,0x30,0xfc,0x30,0x6b,0x62,0x3b,0x30,0x8b,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xd,0x42,0x61,0x63,0x6b,0x20,0x74,0x6f,0x20,0x4c,0x6f,0x62, - 0x62,0x79,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x8,0x30,0xd6,0x30,0xea,0x30,0xc3,0x30,0xd7,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x42,0x6c,0x69,0x70,0x73,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0xc,0x30,0xaf,0x30,0xe9,0x30,0xa4,0x30,0xa2,0x30,0xf3,0x30,0xc8,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x4c,0x49,0x45,0x4e,0x54,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x12,0x30,0xe2,0x30,0xc7,0x30,0xec,0x30,0xfc,0x30,0xbf,0x30,0xfc,0x30,0x92,0x54, - 0x7c,0x30,0x76,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x43,0x61,0x6c, - 0x6c,0x20,0x4d,0x6f,0x64,0x65,0x72,0x61,0x74,0x6f,0x72,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x12,0x30, - 0xad,0x30,0xe3,0x30,0xe9,0x30,0x92,0x59,0x9,0x66,0xf4,0x30,0x57,0x30,0x7e,0x30, - 0x59,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x43,0x68,0x61,0x6e,0x67, - 0x65,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x6,0x30, - 0xa8,0x30,0xe9,0x30,0xfc,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x45, - 0x72,0x72,0x6f,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x8,0x30,0xd5,0x30,0xea,0x30,0xc3,0x30,0xd7, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x46,0x6c,0x69,0x70,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x6,0x30,0xac,0x30,0xfc,0x30,0xc9,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x5,0x47,0x75,0x61,0x72,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x6,0x67,0x9,0x7f,0x6a,0xff, - 0x1,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x47,0x75,0x69,0x6c,0x74, - 0x79,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x8,0x5f,0x85,0x30,0x63,0x30,0x5f,0xff,0x1,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x48,0x6f,0x6c,0x64,0x20,0x49,0x74,0x21, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x18,0x30,0xa4,0x30,0xe1,0x30,0xfc,0x30,0xb8,0x0,0x20,0x0,0x28, - 0x0,0x2a,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,0x0,0x29,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0xe,0x49,0x6d,0x61,0x67,0x65,0x73,0x20,0x28,0x2a,0x2e, - 0x70,0x6e,0x67,0x29,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x8,0x30,0xde,0x30,0xb9,0x30,0xbf,0x30,0xfc, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4d,0x61,0x73,0x74,0x65,0x72, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x4,0x97,0xf3,0x69,0x7d,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x5,0x4d,0x75,0x73,0x69,0x63,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x4,0x54,0xd,0x52,0x4d,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x4e,0x61,0x6d,0x65,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x2,0x71,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x4e,0x6f,0x6e, - 0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0xa,0x61,0xf,0x7f,0xa9,0x30,0x42,0x30,0x8a,0x0,0x21,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x4f,0x62,0x6a,0x65,0x63,0x74,0x69, - 0x6f,0x6e,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x30,0xd1,0x30,0xfc,0x30,0xb9,0x30,0xef,0x30, - 0xfc,0x30,0xc9,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x50,0x61,0x73, - 0x73,0x77,0x6f,0x72,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2,0x52,0x4d,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x3,0x50,0x72,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x14,0x30,0xb5,0x30,0xfc, - 0x30,0xd0,0x30,0xfc,0x30,0xea,0x30,0xb9,0x30,0xc8,0x30,0x6b,0x62,0x3b,0x30,0x8b, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1f,0x52,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x62,0x61,0x63,0x6b,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72, - 0x76,0x65,0x72,0x20,0x6c,0x69,0x73,0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x4,0x69,0x1c,0x7d, - 0x22,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x53,0x65,0x61,0x72,0x63, - 0x68,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x8,0x30,0xb5,0x30,0xfc,0x30,0xd0,0x30,0xfc,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x53,0x65,0x72,0x76,0x65,0x72,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x4,0x8a,0x2d,0x5b,0x9a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53, - 0x65,0x74,0x74,0x69,0x6e,0x67,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x6,0x52,0xb9,0x67,0x9c,0x97, - 0xf3,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x53,0x66,0x78,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x4,0x89,0xb3,0x5b,0xa2,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9, - 0x53,0x70,0x65,0x63,0x74,0x61,0x74,0x6f,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x8,0x30,0x4f,0x30, - 0x89,0x30,0x48,0xff,0x1,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x54, - 0x61,0x6b,0x65,0x20,0x54,0x68,0x61,0x74,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x4,0x67,0x2a,0x77, - 0xe5,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x55,0x4e,0x4b,0x4e,0x4f, - 0x57,0x4e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x8,0x30,0x6b,0x30,0x64,0x30,0x44,0x30,0x66,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x41,0x62,0x6f,0x75,0x74,0x7,0x0,0x0, - 0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x1a,0x30,0xaf,0x30, - 0xe9,0x30,0xa4,0x30,0xa2,0x30,0xf3,0x30,0xc8,0x30,0x67,0x59,0x9,0x66,0xf4,0x30, - 0x67,0x30,0x4d,0x30,0x7e,0x30,0x59,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x33,0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x79,0x6f,0x75,0x20,0x74,0x6f,0x20,0x63, - 0x68,0x61,0x6e,0x67,0x65,0x20,0x76,0x61,0x72,0x69,0x6f,0x75,0x73,0x20,0x61,0x73, - 0x70,0x65,0x63,0x74,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x63,0x6c,0x69, - 0x65,0x6e,0x74,0x2e,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3, - 0x0,0x0,0x0,0x18,0x90,0x6,0x8e,0xe2,0x88,0xc1,0x52,0x24,0x30,0xaa,0x30,0xf3, - 0x30,0xe9,0x30,0xa4,0x30,0xf3,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x12,0x41,0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f, - 0x6e,0x6c,0x69,0x6e,0x65,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62, - 0x62,0x79,0x1,0x3,0x0,0x0,0x0,0xa,0x30,0xad,0x30,0xe3,0x30,0xf3,0x30,0xbb, - 0x30,0xeb,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x61,0x6e,0x63, - 0x65,0x6c,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0, - 0x0,0x74,0x30,0xaf,0x30,0xe9,0x30,0xa4,0x30,0xa2,0x30,0xf3,0x30,0xc8,0x30,0x6e, - 0x8a,0x2d,0x5b,0x9a,0x30,0x4c,0x6b,0x63,0x30,0x57,0x30,0x4f,0x30,0x6a,0x30,0x44, - 0x30,0x4b,0x30,0x82,0x30,0x57,0x30,0x8c,0x30,0x7e,0x30,0x5b,0x30,0x93,0x30,0x2, - 0x30,0xc,0x0,0x74,0x0,0x69,0x0,0x6e,0x0,0x79,0x0,0x2e,0x0,0x63,0x0,0x63, - 0x0,0x2f,0x0,0x67,0x0,0x65,0x0,0x74,0x0,0x61,0x0,0x6f,0x30,0xd,0x30,0x4b, - 0x30,0x89,0x30,0x6e,0x30,0xd5,0x30,0xa1,0x30,0xa4,0x30,0xeb,0x30,0x92,0x30,0xc0, - 0x30,0xa6,0x30,0xf3,0x30,0xed,0x30,0xfc,0x30,0xc9,0x30,0x57,0x30,0x7e,0x30,0x57, - 0x30,0x5f,0x30,0x4b,0xff,0x1f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x95, - 0x49,0x74,0x20,0x64,0x6f,0x65,0x73,0x6e,0x27,0x74,0x20,0x6c,0x6f,0x6f,0x6b,0x20, - 0x6c,0x69,0x6b,0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74, - 0x20,0x69,0x73,0x20,0x73,0x65,0x74,0x20,0x75,0x70,0x20,0x63,0x6f,0x72,0x72,0x65, - 0x63,0x74,0x6c,0x79,0x2e,0xa,0x44,0x69,0x64,0x20,0x79,0x6f,0x75,0x20,0x64,0x6f, - 0x77,0x6e,0x6c,0x6f,0x61,0x64,0x20,0x61,0x6c,0x6c,0x20,0x72,0x65,0x73,0x6f,0x75, - 0x72,0x63,0x65,0x73,0x20,0x63,0x6f,0x72,0x72,0x65,0x63,0x74,0x6c,0x79,0x20,0x66, - 0x72,0x6f,0x6d,0x20,0x74,0x69,0x6e,0x79,0x2e,0x63,0x63,0x2f,0x67,0x65,0x74,0x61, - 0x6f,0x2c,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x69,0x6e,0x67,0x20,0x74,0x68,0x65, - 0x20,0x6c,0x61,0x72,0x67,0x65,0x20,0x27,0x62,0x61,0x73,0x65,0x27,0x20,0x66,0x6f, - 0x6c,0x64,0x65,0x72,0x3f,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1, - 0x3,0x0,0x0,0x0,0x8,0x30,0xed,0x30,0xfc,0x30,0xc9,0x4e,0x2d,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x7,0x0, - 0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x4,0x54,0xd, - 0x52,0x4d,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x4e,0x61,0x6d,0x65, - 0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0xa, - 0x30,0xaa,0x30,0xd5,0x30,0xe9,0x30,0xa4,0x30,0xf3,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x7,0x4f,0x66,0x66,0x6c,0x69,0x6e,0x65,0x7,0x0,0x0,0x0,0x5, - 0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x18,0x30,0xaa,0x30,0xf3,0x30, - 0xe9,0x30,0xa4,0x30,0xf3,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x2f,0x0, - 0x25,0x0,0x32,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x4f,0x6e,0x6c, - 0x69,0x6e,0x65,0x3a,0x20,0x25,0x31,0x2f,0x25,0x32,0x7,0x0,0x0,0x0,0x5,0x4c, - 0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x4,0x69,0x1c,0x7d,0x22,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x53,0x65,0x61,0x72,0x63,0x68,0x7,0x0, - 0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x4,0x8a,0x2d, - 0x5b,0x9a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x65,0x74,0x74, - 0x69,0x6e,0x67,0x73,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3, - 0x0,0x0,0x0,0x12,0x30,0xd0,0x30,0xfc,0x30,0xb8,0x30,0xe7,0x30,0xf3,0x0,0x3a, - 0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb, - 0x56,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x5, - 0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x4,0x67,0x2a,0x77,0xe5,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x55,0x4e,0x4b,0x4e,0x4f,0x57,0x4e, - 0x7,0x0,0x0,0x0,0xc,0x63,0x68,0x61,0x74,0x6c,0x6f,0x67,0x70,0x69,0x65,0x63, - 0x65,0x1,0x3,0x0,0x0,0x0,0x6,0x30,0xa8,0x30,0xe9,0x30,0xfc,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x45,0x72,0x72,0x6f,0x72,0x7,0x0,0x0,0x0, - 0xf,0x64,0x65,0x62,0x75,0x67,0x5f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73, - 0x1,0x3,0x0,0x0,0x0,0xe,0x30,0xa8,0x30,0xe9,0x30,0xfc,0x0,0x3a,0x0,0x20, - 0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x45,0x72, - 0x72,0x6f,0x72,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xf,0x64,0x65,0x62,0x75, - 0x67,0x5f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x1,0x3,0x0,0x0,0x0, - 0x4,0x90,0x1a,0x77,0xe5,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4e, - 0x6f,0x74,0x69,0x63,0x65,0x7,0x0,0x0,0x0,0xf,0x64,0x65,0x62,0x75,0x67,0x5f, - 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x1, - // /media/stoned/SHARED/Git/AO2-Client/resource/translations/ao_ru.qm - 0x0,0x0,0xce,0xc, - 0x3c, - 0xb8,0x64,0x18,0xca,0xef,0x9c,0x95,0xcd,0x21,0x1c,0xbf,0x60,0xa1,0xbd,0xdd,0xa7, - 0x0,0x0,0x0,0x5,0x72,0x75,0x5f,0x52,0x55,0x42,0x0,0x0,0x8,0xe8,0x0,0x0, - 0x5,0x4f,0x0,0x0,0xc2,0xbc,0x0,0x0,0x44,0x3d,0x0,0x0,0x5d,0xcb,0x0,0x0, - 0x48,0xa,0x0,0x0,0x18,0x7b,0x0,0x0,0x57,0x85,0x0,0x0,0x85,0x24,0x0,0x0, - 0x59,0xd8,0x0,0x0,0x96,0x9,0x0,0x0,0x5f,0xc3,0x0,0x0,0xc3,0xe9,0x0,0x4, - 0xd3,0x0,0x0,0x0,0x78,0xe3,0x0,0x5,0x48,0x35,0x0,0x0,0x7f,0x70,0x0,0x5, - 0x48,0x35,0x0,0x0,0xc2,0x90,0x0,0x5,0x56,0x45,0x0,0x0,0x80,0xc2,0x0,0x5, - 0x7b,0xba,0x0,0x0,0x3f,0x8d,0x0,0x1d,0xb,0x21,0x0,0x0,0xc3,0xb0,0x0,0x30, - 0x7f,0x4a,0x0,0x0,0x1b,0xea,0x0,0x33,0x9c,0xa,0x0,0x0,0x1e,0x9e,0x0,0x47, - 0x96,0xc4,0x0,0x0,0xbf,0x7c,0x0,0x48,0xba,0xff,0x0,0x0,0x16,0x6f,0x0,0x49, - 0x30,0x73,0x0,0x0,0x62,0x57,0x0,0x4c,0x99,0x62,0x0,0x0,0x77,0x1a,0x0,0x4c, - 0x99,0x62,0x0,0x0,0xc4,0x38,0x0,0x4e,0xb8,0x84,0x0,0x0,0x79,0x80,0x0,0x54, - 0xc9,0xf3,0x0,0x0,0x7f,0x41,0x0,0x5a,0x81,0xbe,0x0,0x0,0x9b,0x10,0x0,0x5b, - 0xee,0x2e,0x0,0x0,0x7c,0x33,0x0,0x5c,0xcf,0x9e,0x0,0x0,0x7a,0x52,0x0,0x73, - 0x9c,0x8e,0x0,0x0,0x54,0x24,0x0,0x74,0x22,0x2e,0x0,0x0,0x2e,0xb9,0x0,0x81, - 0x97,0x4e,0x0,0x0,0x48,0x25,0x0,0x8b,0xa2,0x99,0x0,0x0,0x8e,0x24,0x0,0x9a, - 0x6c,0xca,0x0,0x0,0x1c,0x56,0x0,0xa0,0x39,0x3e,0x0,0x0,0x6a,0xc,0x0,0xa5, - 0x9e,0x4e,0x0,0x0,0x0,0x58,0x0,0xa9,0xc1,0x3e,0x0,0x0,0x5a,0x69,0x0,0xb7, - 0xb7,0x3e,0x0,0x0,0x94,0x59,0x0,0xc6,0xda,0xde,0x0,0x0,0x33,0x87,0x0,0xd1, - 0x29,0xfe,0x0,0x0,0x22,0x3a,0x0,0xf4,0x21,0x9e,0x0,0x0,0xa5,0x11,0x1,0x8, - 0x6f,0x91,0x0,0x0,0x97,0xfe,0x1,0x8,0xc3,0x9a,0x0,0x0,0x1b,0x51,0x1,0xb, - 0xd3,0x5e,0x0,0x0,0x7e,0xa1,0x1,0xe,0x4a,0x51,0x0,0x0,0x67,0x78,0x1,0x11, - 0x0,0x3,0x0,0x0,0x6e,0xeb,0x1,0x36,0x85,0x9e,0x0,0x0,0x6f,0x4c,0x1,0x6a, - 0x19,0x1a,0x0,0x0,0x4b,0x9f,0x1,0x6d,0x91,0xe4,0x0,0x0,0x9f,0xed,0x1,0x71, - 0x35,0x8e,0x0,0x0,0x9b,0x3d,0x1,0x71,0xfc,0x57,0x0,0x0,0xad,0x3f,0x1,0x90, - 0x8a,0xff,0x0,0x0,0xc0,0xc4,0x1,0x93,0xcc,0xe7,0x0,0x0,0x97,0x99,0x1,0xc6, - 0x62,0xee,0x0,0x0,0x1d,0x29,0x1,0xd4,0x4c,0xee,0x0,0x0,0x28,0x18,0x1,0xec, - 0xca,0xde,0x0,0x0,0x64,0xc7,0x1,0xf4,0xee,0x2e,0x0,0x0,0x71,0x61,0x1,0xf6, - 0xca,0x3e,0x0,0x0,0x41,0xbb,0x2,0x21,0x83,0xba,0x0,0x0,0x17,0xa3,0x2,0x2a, - 0xb9,0xea,0x0,0x0,0x4a,0xc0,0x2,0x48,0x6f,0xbe,0x0,0x0,0x87,0xe6,0x2,0x5b, - 0x7c,0x2e,0x0,0x0,0x8d,0x49,0x2,0x61,0xf3,0x4e,0x0,0x0,0x4,0x12,0x2,0x77, - 0xf8,0xaa,0x0,0x0,0x16,0xa2,0x2,0x7c,0x19,0x8a,0x0,0x0,0x17,0xf1,0x2,0x89, - 0x29,0x7e,0x0,0x0,0x56,0xcd,0x2,0x89,0xc1,0x81,0x0,0x0,0xaa,0xb1,0x2,0x92, - 0x1b,0xfe,0x0,0x0,0xa0,0x21,0x2,0xb5,0x2d,0xae,0x0,0x0,0x62,0x88,0x2,0xc5, - 0x76,0x61,0x0,0x0,0x0,0x0,0x2,0xc5,0x76,0x61,0x0,0x0,0xc0,0x48,0x2,0xc6, - 0xd5,0xca,0x0,0x0,0x17,0x5d,0x2,0xe6,0xd3,0xa2,0x0,0x0,0x64,0x31,0x2,0xf7, - 0xb3,0xca,0x0,0x0,0x37,0x50,0x3,0x2a,0x59,0x7e,0x0,0x0,0x8a,0x53,0x3,0x32, - 0x44,0x60,0x0,0x0,0x31,0x68,0x3,0x37,0x52,0xde,0x0,0x0,0x69,0xb,0x3,0x3e, - 0x21,0x33,0x0,0x0,0x18,0xa8,0x3,0x4c,0x3,0x4e,0x0,0x0,0x70,0x29,0x3,0x4f, - 0x76,0x7e,0x0,0x0,0x8c,0xa7,0x3,0x57,0xb0,0x17,0x0,0x0,0x1,0xd1,0x3,0x57, - 0xb0,0x17,0x0,0x0,0xc2,0x5f,0x3,0x69,0x45,0x7a,0x0,0x0,0x4b,0x48,0x3,0x74, - 0x34,0x8a,0x0,0x0,0x19,0x60,0x3,0xba,0xa8,0xe5,0x0,0x0,0x7b,0xf0,0x3,0xca, - 0x97,0x85,0x0,0x0,0x7e,0x6a,0x3,0xd6,0xdf,0x45,0x0,0x0,0x3f,0x39,0x3,0xdb, - 0x87,0x6a,0x0,0x0,0x37,0xb9,0x3,0xe3,0x60,0x4a,0x0,0x0,0x36,0xa6,0x3,0xf4, - 0x58,0xee,0x0,0x0,0x32,0x63,0x3,0xf6,0xdf,0x45,0x0,0x0,0x87,0x98,0x4,0x6, - 0x4a,0xb1,0x0,0x0,0x79,0xf2,0x4,0x8,0xf0,0xbe,0x0,0x0,0x8b,0xb7,0x4,0x3f, - 0x13,0xca,0x0,0x0,0x4e,0xc7,0x4,0x49,0x96,0x8a,0x0,0x0,0x19,0xb6,0x4,0x50, - 0x17,0xc4,0x0,0x0,0xa,0xbc,0x4,0x80,0xda,0x34,0x0,0x0,0x63,0xb8,0x4,0x82, - 0xfd,0x59,0x0,0x0,0x8b,0x61,0x4,0x86,0xaf,0x2e,0x0,0x0,0xc,0x8f,0x4,0x87, - 0xdc,0xba,0x0,0x0,0x10,0x89,0x4,0x92,0x8,0xb2,0x0,0x0,0x79,0x15,0x4,0x92, - 0x65,0x9a,0x0,0x0,0x4c,0x5,0x4,0x93,0x7,0x6a,0x0,0x0,0x18,0x41,0x4,0x98, - 0x49,0xbc,0x0,0x0,0xc0,0x98,0x4,0x98,0xa0,0x47,0x0,0x0,0x18,0xe5,0x4,0x98, - 0xa0,0x47,0x0,0x0,0x65,0x13,0x4,0x9c,0x6,0xae,0x0,0x0,0x59,0xc4,0x4,0xb8, - 0x6b,0xe3,0x0,0x0,0xad,0xf0,0x4,0xd2,0xef,0xfe,0x0,0x0,0x20,0x65,0x4,0xdd, - 0x4a,0xde,0x0,0x0,0x2b,0x95,0x4,0xe0,0xf6,0x35,0x0,0x0,0x85,0xa2,0x4,0xeb, - 0x2f,0xa,0x0,0x0,0x36,0x6f,0x4,0xf6,0x74,0xde,0x0,0x0,0x21,0x40,0x5,0x1b, - 0xad,0x8a,0x0,0x0,0x35,0x97,0x5,0x1c,0x96,0x5a,0x0,0x0,0x35,0xcd,0x5,0x38, - 0xaa,0xc2,0x0,0x0,0x7e,0x3a,0x5,0x4c,0x9f,0x6a,0x0,0x0,0x3c,0x59,0x5,0x56, - 0xaf,0x95,0x0,0x0,0xc4,0xae,0x5,0x61,0x3,0x44,0x0,0x0,0xb,0xb7,0x5,0x96, - 0x60,0xba,0x0,0x0,0x16,0x16,0x5,0x9b,0x88,0x98,0x0,0x0,0x8d,0x1b,0x5,0x9b, - 0x88,0x98,0x0,0x0,0xc3,0x52,0x5,0x9c,0x9c,0xc2,0x0,0x0,0x8d,0xf4,0x5,0xae, - 0xc3,0x8a,0x0,0x0,0x52,0xb4,0x5,0xcd,0x30,0x15,0x0,0x0,0xc2,0xde,0x5,0xf4, - 0x15,0xa4,0x0,0x0,0xaf,0x21,0x6,0x26,0x54,0x91,0x0,0x0,0x7a,0x22,0x6,0x2d, - 0x36,0x3e,0x0,0x0,0x5c,0xb5,0x6,0x60,0x3a,0x14,0x0,0x0,0x9d,0x4c,0x6,0x73, - 0x98,0x7e,0x0,0x0,0xa2,0xd6,0x6,0x83,0xdc,0x2e,0x0,0x0,0x5d,0xf2,0x6,0x86, - 0x8a,0xd9,0x0,0x0,0x7c,0x79,0x6,0x8b,0xb5,0x54,0x0,0x0,0x9f,0xbc,0x6,0xb6, - 0x6c,0xfe,0x0,0x0,0x8a,0xec,0x6,0xc6,0x1c,0x9e,0x0,0x0,0x14,0xfb,0x6,0xd8, - 0xf0,0x5e,0x0,0x0,0x38,0xaa,0x6,0xe4,0x3a,0x33,0x0,0x0,0x97,0x25,0x6,0xf2, - 0x42,0x9a,0x0,0x0,0x4f,0x1a,0x6,0xf8,0x3f,0x1e,0x0,0x0,0x73,0xbf,0x7,0x1f, - 0x3b,0x1e,0x0,0x0,0xa8,0x7,0x7,0x55,0xb3,0xce,0x0,0x0,0x13,0xa1,0x7,0x5d, - 0x43,0x91,0x0,0x0,0x9a,0xb0,0x7,0x5e,0xae,0x64,0x0,0x0,0x5d,0x23,0x7,0x5e, - 0xae,0x74,0x0,0x0,0x5d,0x79,0x7,0x5f,0x40,0x71,0x0,0x0,0x9a,0xe0,0x7,0x64, - 0xf9,0x6f,0x0,0x0,0xae,0xdd,0x7,0x6a,0xd3,0xde,0x0,0x0,0x7d,0xc0,0x7,0x7e, - 0x12,0xce,0x0,0x0,0x9b,0xa7,0x7,0x8b,0x84,0xad,0x0,0x0,0x85,0x61,0x7,0x92, - 0x89,0x9,0x0,0x0,0x91,0xb9,0x7,0x93,0x1e,0x9e,0x0,0x0,0x95,0x3d,0x7,0x9f, - 0x6c,0xb3,0x0,0x0,0xae,0x49,0x7,0xad,0x58,0x6e,0x0,0x0,0x63,0x3d,0x7,0xd3, - 0x14,0x2e,0x0,0x0,0x49,0xc0,0x7,0xdc,0x3d,0xbe,0x0,0x0,0x23,0x41,0x7,0xe0, - 0x1a,0x4f,0x0,0x0,0x76,0x8,0x7,0xf9,0x3b,0xfa,0x0,0x0,0xa,0x1b,0x8,0x2b, - 0x9,0x3a,0x0,0x0,0x4c,0x57,0x8,0x2e,0x78,0xc4,0x0,0x0,0x64,0x7d,0x8,0x3c, - 0x76,0x59,0x0,0x0,0x1c,0xf5,0x8,0x40,0xf,0xbe,0x0,0x0,0xa0,0xd6,0x8,0x48, - 0x10,0x3e,0x0,0x0,0x4c,0xd4,0x8,0x49,0x6f,0x6e,0x0,0x0,0x89,0x26,0x8,0x66, - 0x21,0xea,0x0,0x0,0x1a,0x15,0x8,0x72,0x3c,0xfe,0x0,0x0,0x72,0x50,0x8,0x82, - 0xd3,0xb4,0x0,0x0,0xb,0x8,0x8,0x99,0x50,0xfe,0x0,0x0,0x10,0xdf,0x8,0xaa, - 0xe3,0xe4,0x0,0x0,0x82,0x2f,0x8,0xb3,0x26,0x9e,0x0,0x0,0x29,0x8b,0x8,0xb8, - 0xa6,0x4a,0x0,0x0,0x86,0x9c,0x8,0xcb,0x30,0x7e,0x0,0x0,0x6d,0xb1,0x8,0xdc, - 0xf5,0x2e,0x0,0x0,0x5e,0x51,0x8,0xe0,0x7,0x3e,0x0,0x0,0x3e,0x6c,0x8,0xe0, - 0x7,0x3e,0x0,0x0,0x86,0xd1,0x9,0x4,0x4f,0x11,0x0,0x0,0x7,0xce,0x9,0x13, - 0x10,0xee,0x0,0x0,0x4f,0x69,0x9,0x25,0x56,0x7e,0x0,0x0,0x1e,0xee,0x9,0x2d, - 0xc9,0x42,0x0,0x0,0x2,0xa,0x9,0x3c,0x6,0xae,0x0,0x0,0x66,0xa0,0x9,0x3d, - 0xef,0x3a,0x0,0x0,0x38,0x5c,0x9,0x42,0x7b,0xe1,0x0,0x0,0xac,0xf8,0x9,0x45, - 0x92,0xfe,0x0,0x0,0x3d,0xa0,0x9,0x4c,0x8f,0x69,0x0,0x0,0x61,0x11,0x9,0x5c, - 0xb,0x5e,0x0,0x0,0x99,0x82,0x9,0x65,0x8e,0x11,0x0,0x0,0xc4,0x6d,0x9,0x8a, - 0x4,0xea,0x0,0x0,0x19,0x21,0x9,0x8d,0xf6,0xe1,0x0,0x0,0x80,0xea,0x9,0xa2, - 0x27,0x1e,0x0,0x0,0xa7,0xba,0x9,0xae,0xf9,0x3a,0x0,0x0,0x4e,0x8a,0x9,0xbb, - 0x17,0xd1,0x0,0x0,0x9,0xb,0x9,0xc8,0xb4,0xb9,0x0,0x0,0x7b,0x9e,0x9,0xf7, - 0x73,0xca,0x0,0x0,0x37,0xfa,0x9,0xf8,0xba,0xe,0x0,0x0,0x77,0x49,0x9,0xfb, - 0x69,0xba,0x0,0x0,0x1a,0xee,0x9,0xfe,0x27,0x8a,0x0,0x0,0x16,0xf7,0xa,0x21, - 0x3c,0x1e,0x0,0x0,0x5b,0xfc,0xa,0x25,0xf3,0x8e,0x0,0x0,0x12,0x3e,0xa,0x30, - 0x34,0xee,0x0,0x0,0xa3,0xd9,0xa,0x30,0x34,0xee,0x0,0x0,0xc4,0xa,0xa,0x35, - 0x5e,0x71,0x0,0x0,0x63,0xe8,0xa,0x50,0xfd,0xce,0x0,0x0,0x2,0xd6,0xa,0x7b, - 0x45,0x52,0x0,0x0,0xc3,0x11,0xa,0x85,0xfd,0xa9,0x0,0x0,0x81,0xd9,0xa,0x95, - 0x12,0xfe,0x0,0x0,0x3a,0xc2,0xa,0x9c,0x9,0x81,0x0,0x0,0xac,0x3c,0xa,0xb0, - 0xb4,0xb5,0x0,0x0,0x5e,0xfd,0xa,0xbc,0x8c,0x74,0x0,0x0,0x71,0xad,0xa,0xd7, - 0x53,0x8a,0x0,0x0,0x36,0xeb,0xa,0xe3,0xe2,0x14,0x0,0x0,0x82,0x61,0xa,0xe5, - 0x47,0xba,0x0,0x0,0x3c,0x91,0xa,0xf8,0x17,0x4,0x0,0x0,0xb,0x5d,0xb,0x14, - 0x21,0x9,0x0,0x0,0x5f,0xd0,0xb,0x2a,0x64,0x7e,0x0,0x0,0xa6,0x24,0xb,0x33, - 0xc3,0x8e,0x0,0x0,0x74,0x7d,0xb,0xa3,0x6,0x39,0x0,0x0,0xae,0x85,0xb,0xa7, - 0x67,0xe7,0x0,0x0,0xc,0x18,0xb,0xaa,0xd1,0x2,0x0,0x0,0x97,0x64,0xb,0xaf, - 0xbd,0x1,0x0,0x0,0x81,0x26,0xb,0xb7,0xd2,0xfe,0x0,0x0,0x2a,0x80,0xb,0xc1, - 0x4f,0x8e,0x0,0x0,0x54,0xf9,0xb,0xc8,0x17,0x9a,0x0,0x0,0x35,0x37,0xb,0xcc, - 0x5d,0x2a,0x0,0x0,0x1b,0xb0,0xb,0xd2,0xf0,0x2e,0x0,0x0,0x0,0xd3,0xb,0xf8, - 0x7e,0x2e,0x0,0x0,0x73,0xc,0xc,0x1b,0xfe,0x7e,0x0,0x0,0x57,0xc5,0xc,0x2d, - 0x1a,0xf1,0x0,0x0,0xac,0xb0,0xc,0x38,0x78,0xde,0x0,0x0,0x45,0x1d,0xc,0x3a, - 0x32,0x3e,0x0,0x0,0x52,0xe8,0xc,0x46,0x2c,0xc3,0x0,0x0,0x98,0xe4,0xc,0x54, - 0x5d,0xa2,0x0,0x0,0x65,0x49,0xc,0x55,0xec,0x1e,0x0,0x0,0x3c,0xeb,0xc,0x65, - 0x27,0x6e,0x0,0x0,0x51,0x88,0xc,0x78,0x8e,0x4e,0x0,0x0,0x83,0xf,0xc,0x7a, - 0x74,0xbe,0x0,0x0,0x78,0xd,0xc,0x7f,0xf2,0x1e,0x0,0x0,0x61,0x56,0xc,0x86, - 0x7,0x3e,0x0,0x0,0x65,0x99,0xc,0xbb,0x1,0x73,0x0,0x0,0x4a,0x82,0xc,0xbb, - 0x1,0x73,0x0,0x0,0x95,0xd1,0xc,0xbb,0x1,0x73,0x0,0x0,0xc3,0x7c,0xc,0xbd, - 0x72,0x9e,0x0,0x0,0xab,0x9f,0xc,0xe0,0xa9,0xbe,0x0,0x0,0x80,0x32,0xc,0xe2, - 0xdf,0x55,0x0,0x0,0x71,0xea,0xc,0xf9,0x5e,0xae,0x0,0x0,0x9c,0x6f,0xc,0xfe, - 0x9c,0x9e,0x0,0x0,0x30,0xa0,0xd,0x4,0x5f,0x59,0x0,0x0,0x7c,0xca,0xd,0xf, - 0x4e,0x6e,0x0,0x0,0x46,0x9f,0xd,0x4c,0x1d,0x31,0x0,0x0,0x81,0x62,0xd,0x58, - 0x98,0x6e,0x0,0x0,0xa3,0x58,0xd,0x9a,0x50,0xf3,0x0,0x0,0x7f,0xa0,0xd,0xd4, - 0x95,0x41,0x0,0x0,0xa8,0x5f,0xd,0xd7,0xfc,0x1e,0x0,0x0,0x26,0x6a,0xd,0xe6, - 0x8f,0x6a,0x0,0x0,0x1c,0x92,0xd,0xec,0xf9,0xc3,0x0,0x0,0x78,0x5e,0xd,0xfd, - 0xd,0x22,0x0,0x0,0x9,0xa1,0xe,0x13,0x1f,0xfe,0x0,0x0,0x44,0x4,0xe,0x30, - 0x3,0xa5,0x0,0x0,0xad,0x98,0xe,0x30,0x6d,0x3e,0x0,0x0,0x58,0xc8,0xe,0x44, - 0x82,0x3a,0x0,0x0,0x36,0xb,0xe,0x7e,0xd9,0xce,0x0,0x0,0x45,0xda,0xe,0x87, - 0xe7,0x64,0x0,0x0,0xa,0x6c,0xe,0x89,0xf0,0x4e,0x0,0x0,0x96,0x44,0xe,0x9f, - 0x90,0x9e,0x0,0x0,0x5f,0x35,0xe,0x9f,0x90,0x9e,0x0,0x0,0xbf,0xb1,0xe,0xa8, - 0x94,0x77,0x0,0x0,0x82,0xa7,0xe,0xb1,0x2b,0xce,0x0,0x0,0x53,0x8d,0xe,0xb2, - 0x85,0xee,0x0,0x0,0x2d,0x52,0xe,0xb4,0x8c,0x1,0x0,0x0,0x8,0x69,0xe,0xc0, - 0x3b,0xf1,0x0,0x0,0x79,0xbd,0xe,0xd0,0x9d,0x8e,0x0,0x0,0x84,0x7,0xe,0xdc, - 0xdd,0xce,0x0,0x0,0x25,0x62,0xe,0xf1,0x38,0xce,0x0,0x0,0x89,0xb3,0xe,0xff, - 0xbf,0x42,0x0,0x0,0x2,0x74,0xf,0x2,0x2,0x21,0x0,0x0,0xa1,0xbd,0xf,0x47, - 0x35,0x8e,0x0,0x0,0x24,0x52,0xf,0x48,0xb8,0x5a,0x0,0x0,0x1a,0x85,0xf,0x55, - 0xd9,0xd1,0x0,0x0,0x71,0x4,0xf,0x60,0xe2,0x5e,0x0,0x0,0x3f,0xd1,0xf,0x66, - 0x94,0x9e,0x0,0x0,0x6d,0x77,0xf,0x6e,0x43,0xa5,0x0,0x0,0x96,0xf9,0xf,0xa1, - 0x93,0xca,0x0,0x0,0x4b,0xb,0xf,0xaf,0x1f,0x4f,0x0,0x0,0x76,0x91,0xf,0xb3, - 0xad,0xaa,0x0,0x0,0x3e,0x28,0xf,0xc6,0x3f,0xf3,0x0,0x0,0x77,0xaa,0xf,0xcb, - 0x37,0xde,0x0,0x0,0x27,0x5f,0xf,0xd2,0xf,0x4e,0x0,0x0,0x34,0x42,0xf,0xd3, - 0x69,0x3e,0x0,0x0,0x47,0xa5,0xf,0xe9,0x8a,0xbe,0x0,0x0,0x99,0xf4,0xf,0xef, - 0x55,0x95,0x0,0x0,0x9a,0x67,0xf,0xf4,0x81,0xe1,0x0,0x0,0xa4,0x4,0xf,0xfd, - 0x3b,0x5a,0x0,0x0,0x10,0x31,0x69,0x0,0x0,0xc4,0xee,0x3,0x0,0x0,0x0,0x24, - 0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79, - 0x0,0x20,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20, - 0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x41,0x74, - 0x74,0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x25,0x31, - 0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x40,0x4,0x21,0x4,0x3e,0x4,0x35,0x4,0x34, - 0x4,0x38,0x4,0x3d,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x41, - 0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x3e, - 0x4,0x3c,0x0,0x20,0x4,0x40,0x4,0x30,0x4,0x37,0x4,0x3e,0x4,0x40,0x4,0x32, - 0x4,0x30,0x4,0x3d,0x4,0x3e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x19,0x44,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x65,0x64,0x20,0x66, - 0x72,0x6f,0x6d,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0xd, - 0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0, - 0x0,0x0,0x9c,0x4,0x1e,0x4,0x48,0x4,0x38,0x4,0x31,0x4,0x3a,0x4,0x30,0x0, - 0x20,0x4,0x41,0x4,0x3e,0x4,0x35,0x4,0x34,0x4,0x38,0x4,0x3d,0x4,0x35,0x4, - 0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x41,0x0,0x20,0x4,0x33,0x4,0x3b,0x4, - 0x30,0x4,0x32,0x4,0x3d,0x4,0x4b,0x4,0x3c,0x0,0x20,0x4,0x41,0x4,0x35,0x4, - 0x40,0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x3e,0x4,0x3c,0x0,0x2e,0x0,0x20,0x4, - 0x1f,0x4,0x3e,0x4,0x32,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x3d,0x4,0x30,0x4, - 0x4f,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x3f,0x4,0x4b,0x4,0x42,0x4,0x3a,0x4, - 0x30,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x35,0x4,0x34,0x4,0x38,0x4,0x3d,0x4, - 0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x47,0x4,0x35,0x4,0x40,0x4, - 0x35,0x4,0x37,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x20,0x4,0x41,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x40,0x45,0x72,0x72,0x6f,0x72,0x20,0x63, - 0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x6d,0x61,0x73, - 0x74,0x65,0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x20,0x57,0x69,0x6c,0x6c, - 0x20,0x74,0x72,0x79,0x20,0x61,0x67,0x61,0x69,0x6e,0x20,0x69,0x6e,0x20,0x25,0x31, - 0x20,0x73,0x65,0x63,0x6f,0x6e,0x64,0x73,0x2e,0x7,0x0,0x0,0x0,0xd,0x41,0x4f, - 0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0, - 0x10,0x4,0x17,0x4,0x30,0x4,0x33,0x4,0x40,0x4,0x43,0x4,0x37,0x4,0x3a,0x4, - 0x30,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4c,0x6f,0x61,0x64,0x69, - 0x6e,0x67,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x34,0x4,0x17,0x4,0x30,0x4,0x33, - 0x4,0x40,0x4,0x43,0x4,0x37,0x4,0x3a,0x4,0x30,0x0,0x20,0x4,0x3f,0x4,0x35, - 0x4,0x40,0x4,0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x35,0x4,0x39, - 0x0,0x3a,0x0,0xa,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x14,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x20, - 0x63,0x68,0x61,0x72,0x73,0x3a,0xa,0x25,0x31,0x2f,0x25,0x32,0x7,0x0,0x0,0x0, - 0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3, - 0x0,0x0,0x0,0x2c,0x4,0x17,0x4,0x30,0x4,0x33,0x4,0x40,0x4,0x43,0x4,0x37, - 0x4,0x3a,0x4,0x30,0x0,0x20,0x4,0x3c,0x4,0x43,0x4,0x37,0x4,0x4b,0x4,0x3a, - 0x4,0x38,0x0,0x3a,0x0,0xa,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x14,0x4c,0x6f,0x61,0x64,0x69,0x6e, - 0x67,0x20,0x6d,0x75,0x73,0x69,0x63,0x3a,0xa,0x25,0x31,0x2f,0x25,0x32,0x7,0x0, - 0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x1,0x3,0x0,0x0,0x0,0xca,0x4,0x23,0x4,0x41,0x4,0x42,0x4,0x30,0x4,0x40, - 0x4,0x35,0x4,0x32,0x4,0x48,0x4,0x30,0x4,0x4f,0x0,0x20,0x4,0x32,0x4,0x35, - 0x4,0x40,0x4,0x41,0x4,0x38,0x4,0x4f,0x0,0x21,0x0,0x20,0x4,0x23,0x0,0x20, - 0x4,0x32,0x4,0x30,0x4,0x41,0x0,0x20,0x4,0x43,0x4,0x41,0x4,0x42,0x4,0x30, - 0x4,0x3d,0x4,0x3e,0x4,0x32,0x4,0x3b,0x4,0x35,0x4,0x3d,0x4,0x30,0x0,0x20, - 0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x41,0x4,0x38,0x4,0x4f,0x0,0x20,0x0,0x25, - 0x0,0x31,0x0,0xa,0x4,0x1f,0x4,0x40,0x4,0x3e,0x4,0x39,0x4,0x34,0x4,0x38, - 0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x41,0x4,0x30, - 0x4,0x39,0x4,0x42,0x0,0x20,0x0,0x61,0x0,0x63,0x0,0x65,0x0,0x61,0x0,0x74, - 0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79,0x0,0x6f,0x0,0x6e, - 0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x2e,0x0,0x63,0x0,0x6f,0x0,0x6d, - 0x0,0x20,0x4,0x34,0x4,0x3b,0x4,0x4f,0x0,0x20,0x4,0x3e,0x4,0x31,0x4,0x3d, - 0x4,0x3e,0x4,0x32,0x4,0x3b,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x50,0x4f,0x75,0x74,0x64,0x61,0x74, - 0x65,0x64,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x21,0x20,0x59,0x6f,0x75,0x72, - 0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3a,0x20,0x25,0x31,0xa,0x50,0x6c,0x65, - 0x61,0x73,0x65,0x20,0x67,0x6f,0x20,0x74,0x6f,0x20,0x61,0x63,0x65,0x61,0x74,0x74, - 0x6f,0x72,0x6e,0x65,0x79,0x6f,0x6e,0x6c,0x69,0x6e,0x65,0x2e,0x63,0x6f,0x6d,0x20, - 0x74,0x6f,0x20,0x75,0x70,0x64,0x61,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0xd,0x41, - 0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0, - 0x2,0x78,0x4,0x1d,0x4,0x35,0x0,0x20,0x4,0x43,0x4,0x34,0x4,0x30,0x4,0x3b, - 0x4,0x3e,0x4,0x41,0x4,0x4c,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x35,0x4,0x34, - 0x4,0x38,0x4,0x3d,0x4,0x38,0x4,0x42,0x4,0x4c,0x4,0x41,0x4,0x4f,0x0,0x20, - 0x4,0x41,0x0,0x20,0x4,0x33,0x4,0x3b,0x4,0x30,0x4,0x32,0x4,0x3d,0x4,0x4b, - 0x4,0x3c,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4,0x32,0x4,0x35,0x4,0x40, - 0x4,0x3e,0x4,0x3c,0x0,0x2e,0x0,0xa,0x4,0x1c,0x4,0x4b,0x0,0x20,0x4,0x38, - 0x4,0x41,0x4,0x3f,0x4,0x3e,0x4,0x3b,0x4,0x4c,0x4,0x37,0x4,0x43,0x4,0x35, - 0x4,0x3c,0x0,0x20,0x4,0x3d,0x4,0x35,0x4,0x41,0x4,0x3a,0x4,0x3e,0x4,0x3b, - 0x4,0x4c,0x4,0x3a,0x4,0x3e,0x0,0x20,0x4,0x33,0x4,0x3b,0x4,0x30,0x4,0x32, - 0x4,0x3d,0x4,0x4b,0x4,0x45,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4,0x32, - 0x4,0x35,0x4,0x40,0x4,0x3e,0x4,0x32,0x0,0x20,0x4,0x34,0x4,0x3b,0x4,0x4f, - 0x0,0x20,0x4,0x42,0x4,0x3e,0x4,0x33,0x4,0x3e,0x0,0x2c,0x0,0x20,0x4,0x47, - 0x4,0x42,0x4,0x3e,0x4,0x31,0x4,0x4b,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x3a, - 0x4,0x40,0x4,0x30,0x4,0x42,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32, - 0x4,0x40,0x4,0x35,0x4,0x3c,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x3e, - 0x4,0x41,0x4,0x42,0x4,0x3e,0x4,0x4f,0x0,0x2c,0x0,0x20,0x4,0x3d,0x4,0x3e, - 0x0,0x20,0x4,0x3a,0x4,0x3b,0x4,0x38,0x4,0x35,0x4,0x3d,0x4,0x42,0x0,0x20, - 0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x31, - 0x4,0x3e,0x4,0x32,0x4,0x30,0x4,0x3b,0x0,0x20,0x4,0x32,0x4,0x41,0x4,0x35, - 0x0,0x20,0x4,0x32,0x4,0x3e,0x4,0x37,0x4,0x3c,0x4,0x3e,0x4,0x36,0x4,0x3d, - 0x4,0x4b,0x4,0x35,0x0,0x20,0x4,0x32,0x4,0x30,0x4,0x40,0x4,0x38,0x4,0x30, - 0x4,0x3d,0x4,0x42,0x4,0x4b,0x0,0x20,0x4,0x38,0x0,0x20,0x4,0x3d,0x4,0x35, - 0x0,0x20,0x4,0x41,0x4,0x3c,0x4,0x3e,0x4,0x33,0x0,0x20,0x4,0x3f,0x4,0x3e, - 0x4,0x34,0x4,0x3a,0x4,0x3b,0x4,0x4e,0x4,0x47,0x4,0x38,0x4,0x42,0x4,0x4c, - 0x4,0x41,0x4,0x4f,0x0,0x20,0x4,0x3d,0x4,0x38,0x0,0x20,0x4,0x3a,0x0,0x20, - 0x4,0x3e,0x4,0x34,0x4,0x3d,0x4,0x3e,0x4,0x3c,0x4,0x43,0x0,0x20,0x4,0x38, - 0x4,0x37,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4,0x32,0x4,0x35,0x4,0x40, - 0x4,0x3e,0x4,0x32,0x0,0x2e,0x0,0xa,0x4,0x1f,0x4,0x3e,0x4,0x36,0x4,0x30, - 0x4,0x3b,0x4,0x43,0x4,0x39,0x4,0x41,0x4,0x42,0x4,0x30,0x0,0x2c,0x0,0x20, - 0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x4c,0x4,0x42, - 0x4,0x35,0x0,0x20,0x4,0x32,0x4,0x30,0x4,0x48,0x4,0x38,0x0,0x20,0x4,0x3d, - 0x4,0x30,0x4,0x41,0x4,0x42,0x4,0x40,0x4,0x3e,0x4,0x39,0x4,0x3a,0x4,0x38, - 0x0,0x20,0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x43,0x4,0x3d,0x4,0x34,0x4,0x3c, - 0x4,0x30,0x4,0x43,0x4,0x4d,0x4,0x40,0x4,0x30,0x0,0x20,0x4,0x38,0x0,0x20, - 0x4,0x41,0x4,0x3e,0x4,0x35,0x4,0x34,0x4,0x38,0x4,0x3d,0x4,0x35,0x4,0x3d, - 0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x41,0x0,0x20,0x4,0x18,0x4,0x3d,0x4,0x42, - 0x4,0x35,0x4,0x40,0x4,0x3d,0x4,0x35,0x4,0x42,0x4,0x3e,0x4,0x3c,0x0,0x20, - 0x4,0x3f,0x4,0x3e,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x31,0x4,0x43,0x4,0x39, - 0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x37, - 0x4,0x30,0x4,0x39,0x4,0x42,0x4,0x38,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x1,0x22,0x54,0x68,0x65,0x72,0x65,0x20,0x77,0x61,0x73,0x20,0x61,0x6e, - 0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6e, - 0x67,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x6d,0x61,0x73,0x74,0x65,0x72,0x20, - 0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0xa,0x57,0x65,0x20,0x64,0x65,0x70,0x6c,0x6f, - 0x79,0x20,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x20,0x6d,0x61,0x73,0x74,0x65, - 0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x73,0x20,0x74,0x6f,0x20,0x6d,0x69,0x74, - 0x69,0x67,0x61,0x74,0x65,0x20,0x61,0x6e,0x79,0x20,0x70,0x6f,0x73,0x73,0x69,0x62, - 0x6c,0x65,0x20,0x64,0x6f,0x77,0x6e,0x74,0x69,0x6d,0x65,0x2c,0x20,0x62,0x75,0x74, - 0x20,0x74,0x68,0x65,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x61,0x70,0x70,0x65, - 0x61,0x72,0x73,0x20,0x74,0x6f,0x20,0x68,0x61,0x76,0x65,0x20,0x65,0x78,0x68,0x61, - 0x75,0x73,0x74,0x65,0x64,0x20,0x61,0x6c,0x6c,0x20,0x70,0x6f,0x73,0x73,0x69,0x62, - 0x6c,0x65,0x20,0x6d,0x65,0x74,0x68,0x6f,0x64,0x73,0x20,0x6f,0x66,0x20,0x66,0x69, - 0x6e,0x64,0x69,0x6e,0x67,0x20,0x61,0x6e,0x64,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63, - 0x74,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x6f,0x6e,0x65,0x2e,0xa,0x50,0x6c,0x65, - 0x61,0x73,0x65,0x20,0x63,0x68,0x65,0x63,0x6b,0x20,0x79,0x6f,0x75,0x72,0x20,0x49, - 0x6e,0x74,0x65,0x72,0x6e,0x65,0x74,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69, - 0x6f,0x6e,0x20,0x61,0x6e,0x64,0x20,0x66,0x69,0x72,0x65,0x77,0x61,0x6c,0x6c,0x2c, - 0x20,0x61,0x6e,0x64,0x20,0x70,0x6c,0x65,0x61,0x73,0x65,0x20,0x74,0x72,0x79,0x20, - 0x61,0x67,0x61,0x69,0x6e,0x2e,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70, - 0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x50,0x4,0x12, - 0x4,0x4b,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x31,0x4,0x30,0x4,0x3d,0x4,0x35, - 0x4,0x3d,0x4,0x4b,0x0,0x20,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x4d,0x4,0x42, - 0x4,0x3e,0x4,0x3c,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4,0x32,0x4,0x35, - 0x4,0x40,0x4,0x35,0x0,0x2e,0x0,0xa,0x4,0x1f,0x4,0x40,0x4,0x38,0x4,0x47, - 0x4,0x38,0x4,0x3d,0x4,0x30,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x29,0x59,0x6f,0x75,0x20,0x61,0x72,0x65,0x20, - 0x62,0x61,0x6e,0x6e,0x65,0x64,0x20,0x6f,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x73, - 0x65,0x72,0x76,0x65,0x72,0x2e,0xa,0x52,0x65,0x61,0x73,0x6f,0x6e,0x3a,0x20,0x25, - 0x31,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74, - 0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x50,0x4,0x12,0x4,0x4b,0x0,0x20,0x4, - 0x31,0x4,0x4b,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x31,0x4, - 0x30,0x4,0x3d,0x4,0x35,0x4,0x3d,0x4,0x4b,0x0,0x20,0x4,0x3d,0x4,0x30,0x0, - 0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x35,0x0, - 0x2e,0x0,0xa,0x4,0x1f,0x4,0x40,0x4,0x38,0x4,0x47,0x4,0x38,0x4,0x3d,0x4, - 0x30,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x30,0x59,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x62,0x65,0x65,0x6e, - 0x20,0x62,0x61,0x6e,0x6e,0x65,0x64,0x20,0x66,0x72,0x6f,0x6d,0x20,0x74,0x68,0x65, - 0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0xa,0x52,0x65,0x61,0x73,0x6f,0x6e,0x3a, - 0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x44,0x4,0x12,0x4,0x30,0x4, - 0x41,0x0,0x20,0x4,0x32,0x4,0x4b,0x4,0x3f,0x4,0x3d,0x4,0x43,0x4,0x3b,0x4, - 0x38,0x0,0x20,0x4,0x41,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4,0x32,0x4, - 0x35,0x4,0x40,0x4,0x30,0x0,0x2e,0x0,0xa,0x4,0x1f,0x4,0x40,0x4,0x38,0x4, - 0x47,0x4,0x38,0x4,0x3d,0x4,0x30,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x30,0x59,0x6f,0x75,0x20,0x68,0x61,0x76, - 0x65,0x20,0x62,0x65,0x65,0x6e,0x20,0x6b,0x69,0x63,0x6b,0x65,0x64,0x20,0x66,0x72, - 0x6f,0x6d,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0xa,0x52, - 0x65,0x61,0x73,0x6f,0x6e,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xd,0x41,0x4f, - 0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0, - 0x42,0x4,0x1e,0x4,0x31,0x4,0x4a,0x4,0x4f,0x4,0x32,0x4,0x3b,0x4,0x35,0x4, - 0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x3e,0x0,0x20,0x4,0x3f,0x4,0x40,0x4, - 0x3e,0x4,0x32,0x4,0x35,0x4,0x34,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x38,0x0, - 0x20,0x4,0x37,0x4,0x30,0x4,0x41,0x4,0x35,0x4,0x34,0x4,0x30,0x4,0x3d,0x4, - 0x38,0x4,0x4f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x43,0x61,0x73, - 0x65,0x20,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x7,0x0,0x0,0x0,0x15, - 0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1c,0x4,0x1d,0x4,0x30,0x4, - 0x37,0x4,0x32,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x34,0x4, - 0x35,0x4,0x3b,0x4,0x30,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xb,0x43,0x61,0x73,0x65,0x20,0x74,0x69,0x74,0x6c,0x65,0x3a,0x7,0x0,0x0,0x0, - 0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x18,0x4,0x1d,0x4,0x43, - 0x4,0x36,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x49,0x4,0x38, - 0x4,0x42,0x4,0x30,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x44,0x65, - 0x66,0x65,0x6e,0x73,0x65,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0, - 0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x16,0x4,0x1d,0x4,0x43, - 0x4,0x36,0x4,0x35,0x4,0x3d,0x0,0x20,0x4,0x41,0x4,0x43,0x4,0x34,0x4,0x4c, - 0x4,0x4f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x4a,0x75,0x64,0x67, - 0x65,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43, - 0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1e,0x4,0x1d,0x4,0x43,0x4,0x36,0x4,0x3d, - 0x4,0x4b,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x38,0x4,0x41,0x4,0x4f,0x4,0x36, - 0x4,0x3d,0x4,0x4b,0x4,0x35,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd, - 0x4a,0x75,0x72,0x6f,0x72,0x73,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0, - 0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65, - 0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1e,0x4,0x1d,0x4, - 0x43,0x4,0x36,0x4,0x3d,0x4,0x3e,0x0,0x20,0x4,0x3e,0x4,0x31,0x4,0x32,0x4, - 0x38,0x4,0x3d,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x12,0x50,0x72,0x6f,0x73,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e, - 0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61, - 0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x24,0x4,0x1d,0x4,0x43,0x4,0x36,0x4,0x35,0x4, - 0x3d,0x0,0x20,0x4,0x41,0x4,0x42,0x4,0x35,0x4,0x3d,0x4,0x3e,0x4,0x33,0x4, - 0x40,0x4,0x30,0x4,0x44,0x4,0x38,0x4,0x41,0x4,0x42,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x13,0x53,0x74,0x65,0x6e,0x6f,0x67,0x72,0x61,0x70,0x68,0x65, - 0x72,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43, - 0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x3c,0x0,0x20,0x0,0x2d,0x0,0x20,0x4,0x41, - 0x4,0x3e,0x4,0x45,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x42,0x4,0x4c, - 0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3a,0x4,0x43,0x4,0x49,0x4,0x38,0x4,0x35, - 0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x41,0x4,0x42,0x4,0x40,0x4,0x3e,0x4,0x39, - 0x4,0x3a,0x4,0x38,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17,0x20,0x2d, - 0x20,0x4b,0x65,0x65,0x70,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x73,0x65, - 0x74,0x74,0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x2,0x6c,0x0, - 0x3c,0x0,0x68,0x0,0x74,0x0,0x6d,0x0,0x6c,0x0,0x3e,0x0,0x3c,0x0,0x68,0x0, - 0x65,0x0,0x61,0x0,0x64,0x0,0x2f,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x6f,0x0, - 0x64,0x0,0x79,0x0,0x3e,0x4,0x12,0x4,0x32,0x4,0x35,0x4,0x34,0x4,0x38,0x4, - 0x42,0x4,0x35,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x3b,0x4, - 0x35,0x0,0x20,0x4,0x32,0x4,0x4b,0x4,0x48,0x4,0x35,0x0,0x20,0x4,0x41,0x4, - 0x32,0x4,0x3e,0x4,0x38,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x37,0x4,0x4b,0x4, - 0x32,0x4,0x3d,0x4,0x4b,0x4,0x35,0x0,0x2e,0x0,0x20,0x4,0x15,0x4,0x41,0x4, - 0x3b,0x4,0x38,0x0,0x20,0x4,0x3a,0x4,0x42,0x4,0x3e,0x0,0x2d,0x4,0x42,0x4, - 0x3e,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x35,0x0, - 0x20,0x4,0x3d,0x4,0x30,0x4,0x3f,0x4,0x38,0x4,0x48,0x4,0x35,0x4,0x42,0x0, - 0x20,0x4,0x38,0x4,0x45,0x0,0x2c,0x0,0x20,0x4,0x32,0x4,0x4b,0x0,0x20,0x4, - 0x43,0x4,0x41,0x4,0x3b,0x4,0x4b,0x4,0x48,0x4,0x38,0x4,0x42,0x4,0x35,0x0, - 0x20,0x4,0x37,0x4,0x32,0x4,0x43,0x4,0x3a,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4, - 0x39,0x0,0x20,0x4,0x41,0x4,0x38,0x4,0x33,0x4,0x3d,0x4,0x30,0x4,0x3b,0x0, - 0x2e,0x0,0x20,0x4,0x20,0x4,0x35,0x4,0x33,0x4,0x38,0x4,0x41,0x4,0x42,0x4, - 0x40,0x0,0x20,0x4,0x41,0x4,0x38,0x4,0x3c,0x4,0x32,0x4,0x3e,0x4,0x3b,0x4, - 0x3e,0x4,0x32,0x0,0x20,0x4,0x3d,0x4,0x35,0x0,0x20,0x4,0x43,0x4,0x47,0x4, - 0x38,0x4,0x42,0x4,0x4b,0x4,0x32,0x4,0x30,0x4,0x35,0x4,0x42,0x4,0x41,0x4, - 0x4f,0x0,0x2e,0x0,0x3c,0x0,0x62,0x0,0x72,0x0,0x3e,0x4,0x1a,0x4,0x30,0x4, - 0x36,0x4,0x34,0x4,0x4b,0x4,0x39,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x37,0x4, - 0x4b,0x4,0x32,0x4,0x3d,0x4,0x3e,0x4,0x39,0x0,0x20,0x4,0x34,0x4,0x3e,0x4, - 0x3b,0x4,0x36,0x4,0x35,0x4,0x3d,0x0,0x20,0x4,0x31,0x4,0x4b,0x4,0x42,0x4, - 0x4c,0x0,0x20,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x3e,0x4,0x42,0x4,0x34,0x4, - 0x35,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4,0x3e,0x4,0x39,0x0,0x20,0x4,0x41,0x4, - 0x42,0x4,0x40,0x4,0x3e,0x4,0x3a,0x4,0x35,0x0,0x2e,0x0,0x20,0x4,0x1d,0x4, - 0x35,0x0,0x20,0x4,0x3e,0x4,0x41,0x4,0x42,0x4,0x30,0x4,0x32,0x4,0x3b,0x4, - 0x4f,0x4,0x39,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x3a,0x4, - 0x3e,0x4,0x3d,0x4,0x46,0x4,0x35,0x0,0x20,0x4,0x41,0x4,0x42,0x4,0x40,0x4, - 0x3e,0x4,0x3a,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x31,0x4,0x35,0x4, - 0x3b,0x4,0x4b,0x0,0x2c,0x0,0x20,0x4,0x38,0x4,0x3d,0x4,0x30,0x4,0x47,0x4, - 0x35,0x0,0x20,0x4,0x32,0x4,0x4b,0x0,0x20,0x4,0x31,0x4,0x43,0x4,0x34,0x4, - 0x35,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x3b,0x4,0x43,0x4, - 0x47,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3e,0x4,0x3f,0x4,0x3e,0x4, - 0x32,0x4,0x35,0x4,0x49,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4, - 0x3e,0x0,0x20,0x4,0x3a,0x4,0x30,0x4,0x36,0x4,0x34,0x4,0x3e,0x4,0x3c,0x0, - 0x20,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x31,0x4,0x35,0x4,0x3b,0x4,0x35,0x0, - 0x20,0x4,0x32,0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x35,0x0,0x2e,0x0, - 0x3c,0x0,0x2f,0x0,0x62,0x0,0x6f,0x0,0x64,0x0,0x79,0x0,0x3e,0x0,0x3c,0x0, - 0x2f,0x0,0x68,0x0,0x74,0x0,0x6d,0x0,0x6c,0x0,0x3e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x1,0x12,0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x3c,0x68,0x65,0x61,0x64, - 0x2f,0x3e,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x45,0x6e,0x74,0x65,0x72,0x20,0x61,0x73, - 0x20,0x6d,0x61,0x6e,0x79,0x20,0x63,0x61,0x6c,0x6c,0x77,0x6f,0x72,0x64,0x73,0x20, - 0x61,0x73,0x20,0x79,0x6f,0x75,0x20,0x77,0x6f,0x75,0x6c,0x64,0x20,0x6c,0x69,0x6b, - 0x65,0x2e,0x20,0x54,0x68,0x65,0x73,0x65,0x20,0x61,0x72,0x65,0x20,0x63,0x61,0x73, - 0x65,0x20,0x69,0x6e,0x73,0x65,0x6e,0x73,0x69,0x74,0x69,0x76,0x65,0x2e,0x20,0x4d, - 0x61,0x6b,0x65,0x20,0x73,0x75,0x72,0x65,0x20,0x74,0x6f,0x20,0x6c,0x65,0x61,0x76, - 0x65,0x20,0x65,0x76,0x65,0x72,0x79,0x20,0x63,0x61,0x6c,0x6c,0x77,0x6f,0x72,0x64, - 0x20,0x69,0x6e,0x20,0x69,0x74,0x73,0x20,0x6f,0x77,0x6e,0x20,0x6c,0x69,0x6e,0x65, - 0x21,0x3c,0x62,0x72,0x3e,0x44,0x6f,0x20,0x6e,0x6f,0x74,0x20,0x6c,0x65,0x61,0x76, - 0x65,0x20,0x61,0x20,0x6c,0x69,0x6e,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x61,0x20, - 0x73,0x70,0x61,0x63,0x65,0x20,0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x65,0x6e,0x64, - 0x20,0x2d,0x2d,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20, - 0x61,0x6c,0x65,0x72,0x74,0x65,0x64,0x20,0x65,0x76,0x65,0x72,0x79,0x74,0x69,0x6d, - 0x65,0x20,0x73,0x6f,0x6d,0x65,0x6f,0x6e,0x65,0x20,0x75,0x73,0x65,0x73,0x20,0x61, - 0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x69,0x72,0x20, - 0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x73,0x2e,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e, - 0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x26,0x4,0x12,0x4,0x38,0x4,0x37,0x4,0x43,0x4,0x30,0x4,0x3b,0x4,0x4c,0x4, - 0x3d,0x4,0x4b,0x4,0x35,0x0,0x20,0x4,0x4d,0x4,0x44,0x4,0x44,0x4,0x35,0x4, - 0x3a,0x4,0x42,0x4,0x4b,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xe,0x41,0x6c,0x6c,0x6f,0x77,0x20,0x45,0x66,0x66,0x65,0x63,0x74,0x73,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x20,0x4,0x12,0x4,0x41,0x4,0x42,0x4, - 0x40,0x4,0x4f,0x4,0x41,0x4,0x3a,0x4,0x30,0x0,0x20,0x4,0x4d,0x4,0x3a,0x4, - 0x40,0x4,0x30,0x4,0x3d,0x4,0x30,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x12,0x41,0x6c,0x6c,0x6f,0x77,0x20,0x53,0x63,0x72,0x65,0x65,0x6e,0x73, - 0x68,0x61,0x6b,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xbc,0x4, - 0x1f,0x4,0x3e,0x4,0x3a,0x4,0x30,0x4,0x37,0x4,0x4b,0x4,0x32,0x4,0x30,0x4, - 0x42,0x4,0x4c,0x0,0x20,0x4,0x32,0x0,0x20,0x0,0x44,0x0,0x69,0x0,0x73,0x0, - 0x63,0x0,0x6f,0x0,0x72,0x0,0x64,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4, - 0x32,0x4,0x35,0x4,0x40,0x0,0x2c,0x0,0x20,0x4,0x3d,0x4,0x30,0x0,0x20,0x4, - 0x3a,0x4,0x3e,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x3e,0x4,0x3c,0x0,0x20,0x4, - 0x32,0x4,0x4b,0x0,0x20,0x4,0x38,0x4,0x33,0x4,0x40,0x4,0x30,0x4,0x35,0x4, - 0x42,0x4,0x35,0x0,0x2c,0x0,0x20,0x4,0x32,0x4,0x30,0x4,0x48,0x4,0x35,0x4, - 0x33,0x4,0x3e,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x41,0x4,0x3e,0x4, - 0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x0,0x20,0x4,0x38,0x0,0x20,0x4,0x3f,0x4, - 0x40,0x4,0x3e,0x4,0x34,0x4,0x3e,0x4,0x3b,0x4,0x36,0x4,0x38,0x4,0x42,0x4, - 0x35,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4,0x3e,0x4,0x41,0x4,0x42,0x4,0x4c,0x0, - 0x20,0x4,0x38,0x4,0x33,0x4,0x40,0x4,0x4b,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x7f,0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x6f,0x74,0x68,0x65, - 0x72,0x73,0x20,0x6f,0x6e,0x20,0x44,0x69,0x73,0x63,0x6f,0x72,0x64,0x20,0x74,0x6f, - 0x20,0x73,0x65,0x65,0x20,0x77,0x68,0x61,0x74,0x20,0x73,0x65,0x72,0x76,0x65,0x72, - 0x20,0x79,0x6f,0x75,0x20,0x61,0x72,0x65,0x20,0x69,0x6e,0x2c,0x20,0x77,0x68,0x61, - 0x74,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x61,0x72,0x65,0x20, - 0x79,0x6f,0x75,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x2c,0x20,0x61,0x6e,0x64, - 0x20,0x68,0x6f,0x77,0x20,0x6c,0x6f,0x6e,0x67,0x20,0x79,0x6f,0x75,0x20,0x68,0x61, - 0x76,0x65,0x20,0x62,0x65,0x65,0x6e,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20, - 0x66,0x6f,0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xd6,0x4,0x20, - 0x4,0x30,0x4,0x37,0x4,0x40,0x4,0x35,0x4,0x48,0x4,0x38,0x4,0x42,0x4,0x4c, - 0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x3a,0x4,0x30,0x4,0x37,0x0,0x20,0x4,0x32, - 0x4,0x38,0x4,0x37,0x4,0x43,0x4,0x30,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4,0x4b, - 0x4,0x45,0x0,0x20,0x4,0x4d,0x4,0x44,0x4,0x44,0x4,0x35,0x4,0x3a,0x4,0x42, - 0x4,0x3e,0x4,0x32,0x0,0x2e,0x0,0xa,0x4,0x1e,0x4,0x42,0x4,0x3a,0x4,0x3b, - 0x4,0x4e,0x4,0x47,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x2c,0x0,0x20,0x4,0x35, - 0x4,0x41,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x32,0x4,0x4b,0x0,0x20,0x4,0x41, - 0x4,0x42,0x4,0x40,0x4,0x30,0x4,0x34,0x4,0x30,0x4,0x35,0x4,0x42,0x4,0x35, - 0x0,0x20,0x4,0x3e,0x4,0x42,0x0,0x20,0x4,0x41,0x4,0x32,0x4,0x35,0x4,0x42, - 0x4,0x3e,0x4,0x47,0x4,0x43,0x4,0x32,0x4,0x41,0x4,0x42,0x4,0x32,0x4,0x38, - 0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4,0x3e,0x4,0x41,0x4,0x42, - 0x4,0x38,0x0,0x20,0x4,0x38,0x0,0x2f,0x4,0x38,0x4,0x3b,0x4,0x38,0x0,0x20, - 0x4,0x3f,0x4,0x40,0x4,0x38,0x4,0x3f,0x4,0x30,0x4,0x34,0x4,0x3a,0x4,0x3e, - 0x4,0x32,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x69,0x41,0x6c, - 0x6c,0x6f,0x77,0x73,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x20,0x65,0x66,0x66,0x65, - 0x63,0x74,0x73,0x2e,0x20,0x44,0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x74,0x68,0x69, - 0x73,0x20,0x69,0x66,0x20,0x79,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x63,0x6f, - 0x6e,0x63,0x65,0x72,0x6e,0x73,0x20,0x6f,0x72,0x20,0x69,0x73,0x73,0x75,0x65,0x73, - 0x20,0x77,0x69,0x74,0x68,0x20,0x70,0x68,0x6f,0x74,0x6f,0x73,0x65,0x6e,0x73,0x69, - 0x74,0x69,0x76,0x69,0x74,0x79,0x20,0x61,0x6e,0x64,0x2f,0x6f,0x72,0x20,0x73,0x65, - 0x69,0x7a,0x75,0x72,0x65,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0xce,0x4,0x20,0x4,0x30,0x4,0x37,0x4,0x40,0x4,0x35,0x4,0x48,0x4,0x38,0x4, - 0x42,0x4,0x4c,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x3a,0x4,0x30,0x4,0x37,0x0, - 0x20,0x4,0x32,0x4,0x41,0x4,0x42,0x4,0x40,0x4,0x4f,0x4,0x41,0x4,0x3e,0x4, - 0x3a,0x0,0x20,0x4,0x4d,0x4,0x3a,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x30,0x0, - 0x2e,0x0,0xa,0x4,0x1e,0x4,0x42,0x4,0x3a,0x4,0x3b,0x4,0x4e,0x4,0x47,0x4, - 0x38,0x4,0x42,0x4,0x35,0x0,0x2c,0x0,0x20,0x4,0x35,0x4,0x41,0x4,0x3b,0x4, - 0x38,0x0,0x20,0x4,0x32,0x4,0x4b,0x0,0x20,0x4,0x41,0x4,0x42,0x4,0x40,0x4, - 0x30,0x4,0x34,0x4,0x30,0x4,0x35,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x3e,0x4, - 0x42,0x0,0x20,0x4,0x41,0x4,0x32,0x4,0x35,0x4,0x42,0x4,0x3e,0x4,0x47,0x4, - 0x43,0x4,0x32,0x4,0x41,0x4,0x42,0x4,0x32,0x4,0x38,0x4,0x42,0x4,0x35,0x4, - 0x3b,0x4,0x4c,0x4,0x3d,0x4,0x3e,0x4,0x41,0x4,0x42,0x4,0x38,0x0,0x20,0x4, - 0x38,0x0,0x2f,0x4,0x38,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x3f,0x4,0x40,0x4, - 0x38,0x4,0x3f,0x4,0x30,0x4,0x34,0x4,0x3a,0x4,0x3e,0x4,0x32,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x68,0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20, - 0x73,0x63,0x72,0x65,0x65,0x6e,0x73,0x68,0x61,0x6b,0x69,0x6e,0x67,0x2e,0x20,0x44, - 0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x74,0x68,0x69,0x73,0x20,0x69,0x66,0x20,0x79, - 0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x63,0x6f,0x6e,0x63,0x65,0x72,0x6e,0x73, - 0x20,0x6f,0x72,0x20,0x69,0x73,0x73,0x75,0x65,0x73,0x20,0x77,0x69,0x74,0x68,0x20, - 0x70,0x68,0x6f,0x74,0x6f,0x73,0x65,0x6e,0x73,0x69,0x74,0x69,0x76,0x69,0x74,0x79, - 0x20,0x61,0x6e,0x64,0x2f,0x6f,0x72,0x20,0x73,0x65,0x69,0x7a,0x75,0x72,0x65,0x73, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x94,0x4,0x12,0x4,0x40,0x4, - 0x35,0x4,0x3c,0x4,0x4f,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x34,0x4,0x35,0x4, - 0x40,0x4,0x36,0x4,0x3a,0x4,0x38,0x0,0x20,0x0,0x28,0x4,0x32,0x0,0x20,0x4, - 0x3c,0x4,0x38,0x4,0x3b,0x4,0x3b,0x4,0x38,0x4,0x41,0x4,0x35,0x4,0x3a,0x4, - 0x43,0x4,0x3d,0x4,0x34,0x4,0x30,0x4,0x45,0x0,0x29,0x0,0x20,0x4,0x3f,0x4, - 0x3e,0x4,0x41,0x4,0x3b,0x4,0x35,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x3a,0x4, - 0x30,0x4,0x37,0x4,0x30,0x0,0x20,0x4,0x3a,0x4,0x30,0x4,0x36,0x4,0x34,0x4, - 0x3e,0x4,0x39,0x0,0x20,0x4,0x31,0x4,0x43,0x4,0x3a,0x4,0x32,0x4,0x4b,0x0, - 0x20,0x4,0x32,0x0,0x20,0x4,0x38,0x4,0x33,0x4,0x40,0x4,0x3e,0x4,0x32,0x4, - 0x3e,0x4,0x3c,0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x35,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x63,0x41,0x6d,0x6f,0x75,0x6e,0x74,0x20, - 0x6f,0x66,0x20,0x74,0x69,0x6d,0x65,0x20,0x28,0x69,0x6e,0x20,0x6d,0x69,0x6c,0x69, - 0x73,0x65,0x63,0x6f,0x6e,0x64,0x73,0x29,0x20,0x73,0x70,0x65,0x6e,0x74,0x20,0x6f, - 0x6e,0x20,0x65,0x61,0x63,0x68,0x20,0x6c,0x65,0x74,0x74,0x65,0x72,0x20,0x77,0x68, - 0x65,0x6e,0x20,0x74,0x68,0x65,0x20,0x69,0x6e,0x2d,0x63,0x68,0x61,0x72,0x61,0x63, - 0x74,0x65,0x72,0x20,0x74,0x65,0x78,0x74,0x20,0x69,0x73,0x20,0x62,0x65,0x69,0x6e, - 0x67,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x65,0x64,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x26,0x4,0x10,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x38, - 0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x30,0x4,0x3d,0x4,0x3d,0x4,0x4b,0x4,0x35, - 0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3c,0x4,0x4b,0x0,0x3a,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0xf,0x41,0x6e,0x69,0x6d,0x61,0x74,0x65,0x64,0x20,0x54, - 0x68,0x65,0x6d,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa,0x4, - 0x10,0x4,0x43,0x4,0x34,0x4,0x38,0x4,0x3e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x5,0x41,0x75,0x64,0x69,0x6f,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x24,0x4,0x23,0x4,0x41,0x4,0x42,0x4,0x40,0x4,0x3e,0x4,0x39,0x4,0x41, - 0x4,0x42,0x4,0x32,0x4,0x3e,0x0,0x20,0x4,0x32,0x4,0x4b,0x4,0x32,0x4,0x3e, - 0x4,0x34,0x4,0x30,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd, - 0x41,0x75,0x64,0x69,0x6f,0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x30,0x4,0x10,0x4,0x32,0x4,0x42,0x0,0x2e,0x0, - 0x20,0x4,0x41,0x4,0x3e,0x4,0x45,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x35,0x4, - 0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x38,0x4,0x41,0x4,0x42,0x4,0x3e,0x4, - 0x40,0x4,0x38,0x4,0x38,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x12,0x41,0x75,0x74,0x6f,0x6d,0x61,0x74,0x69,0x63,0x20,0x4c,0x6f,0x67,0x67,0x69, - 0x6e,0x67,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x18,0x4,0x17,0x4, - 0x30,0x4,0x3f,0x4,0x30,0x4,0x41,0x4,0x3d,0x4,0x3e,0x4,0x39,0x0,0x20,0x4, - 0x13,0x4,0x21,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x42, - 0x61,0x63,0x6b,0x75,0x70,0x20,0x4d,0x53,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x1e,0x4,0x1f,0x4,0x43,0x4,0x41,0x4,0x42,0x4,0x4b,0x4,0x35,0x0, - 0x20,0x4,0x41,0x4,0x38,0x4,0x33,0x4,0x3d,0x4,0x30,0x4,0x3b,0x4,0x4b,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x42,0x6c,0x61,0x6e,0x6b, - 0x20,0x62,0x6c,0x69,0x70,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x22,0x4,0x27,0x4,0x30,0x4,0x41,0x4,0x42,0x4,0x3e,0x4,0x42,0x4,0x30,0x0, - 0x20,0x4,0x41,0x4,0x38,0x4,0x33,0x4,0x3d,0x4,0x30,0x4,0x3b,0x4,0x3e,0x4, - 0x32,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x42,0x6c,0x69, - 0x70,0x20,0x72,0x61,0x74,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x10,0x4,0x21,0x4,0x38,0x4,0x33,0x4,0x3d,0x4,0x30,0x4,0x3b,0x4,0x4b,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x42,0x6c,0x69,0x70,0x73, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x6,0x4,0x1f,0x4,0x14,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x43,0x4d,0x3a,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x10,0x4,0x1f,0x4,0x3e,0x4,0x37,0x4,0x4b, - 0x4,0x32,0x4,0x3d,0x4,0x4b,0x4,0x35,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x9,0x43,0x61,0x6c,0x6c,0x77,0x6f,0x72,0x64,0x73,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x12,0x4,0x17,0x4,0x30,0x4,0x41,0x4,0x35,0x4,0x34,0x4, - 0x30,0x4,0x3d,0x4,0x38,0x4,0x4f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x6,0x43,0x61,0x73,0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x14,0x4,0x17,0x4,0x30,0x4,0x41,0x4,0x35,0x4,0x34,0x4,0x30,0x4,0x3d,0x4, - 0x38,0x4,0x4f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x43, - 0x61,0x73,0x69,0x6e,0x67,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x22, - 0x4,0x27,0x4,0x30,0x4,0x41,0x4,0x42,0x4,0x3e,0x4,0x42,0x4,0x30,0x0,0x20, - 0x4,0x3e,0x4,0x42,0x4,0x3f,0x4,0x40,0x4,0x30,0x4,0x32,0x4,0x3a,0x4,0x38, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x43,0x68,0x61,0x74, - 0x20,0x52,0x61,0x74,0x65,0x20,0x4c,0x69,0x6d,0x69,0x74,0x3a,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x2a,0x4,0x26,0x4,0x32,0x4,0x35,0x4,0x42,0x4,0x30, - 0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x38,0x4,0x41,0x4,0x42,0x4,0x3e,0x4,0x40, - 0x4,0x38,0x4,0x38,0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x30,0x0,0x3a, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x43,0x6f,0x6c,0x6f,0x72,0x73, - 0x20,0x69,0x6e,0x20,0x49,0x43,0x20,0x4c,0x6f,0x67,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x38,0x4,0x1d,0x4,0x35,0x4,0x3f,0x4,0x40,0x4,0x35,0x4, - 0x40,0x4,0x4b,0x4,0x32,0x4,0x3d,0x4,0x3e,0x4,0x35,0x0,0x20,0x4,0x32,0x4, - 0x3e,0x4,0x41,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x38,0x4,0x37,0x4,0x32,0x4, - 0x35,0x4,0x34,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x14,0x43,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x6f,0x75, - 0x73,0x20,0x50,0x6c,0x61,0x79,0x62,0x61,0x63,0x6b,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x34,0x4,0x1f,0x4,0x3e,0x4,0x3b,0x4,0x4c,0x4,0x37,0x4, - 0x3e,0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x4c,0x4,0x41,0x4, - 0x3a,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x34,0x4,0x3b,0x4, - 0x3e,0x4,0x36,0x4,0x3a,0x4,0x38,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x11,0x43,0x75,0x73,0x74,0x6f,0x6d,0x20,0x43,0x68,0x61,0x74,0x62,0x6f, - 0x78,0x65,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x2e,0x4,0x1f, - 0x4,0x3e,0x4,0x3b,0x4,0x4c,0x4,0x37,0x4,0x3e,0x4,0x32,0x4,0x30,0x4,0x42, - 0x4,0x35,0x4,0x3b,0x4,0x4c,0x4,0x41,0x4,0x3a,0x4,0x38,0x4,0x35,0x0,0x20, - 0x4,0x38,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x30,0x0,0x3a,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x11,0x43,0x75,0x73,0x74,0x6f,0x6d,0x20,0x73,0x68,0x6f, - 0x77,0x6e,0x61,0x6d,0x65,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x2a,0x4,0x1d,0x4,0x38,0x4,0x3a,0x4,0x3d,0x4,0x35,0x4,0x39,0x4,0x3c,0x0, - 0x20,0x4,0x3f,0x4,0x3e,0x0,0x20,0x4,0x43,0x4,0x3c,0x4,0x3e,0x4,0x3b,0x4, - 0x47,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x4e,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x11,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x75,0x73,0x65, - 0x72,0x6e,0x61,0x6d,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xe, - 0x4,0x17,0x4,0x30,0x4,0x49,0x4,0x38,0x4,0x42,0x4,0x30,0x0,0x3a,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x44,0x65,0x66,0x65,0x6e,0x73,0x65,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x32,0x4,0x1d,0x4,0x35,0x4,0x37, - 0x4,0x30,0x4,0x32,0x4,0x38,0x4,0x41,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x4f, - 0x0,0x20,0x4,0x38,0x4,0x41,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x38,0x4,0x4f, - 0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x30,0x0,0x3a,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x16,0x44,0x65,0x73,0x79,0x6e,0x63,0x68,0x72,0x6f,0x6e, - 0x69,0x7a,0x65,0x20,0x49,0x43,0x20,0x4c,0x6f,0x67,0x73,0x3a,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x10,0x0,0x44,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x6f, - 0x0,0x72,0x0,0x64,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8, - 0x44,0x69,0x73,0x63,0x6f,0x72,0x64,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x2c,0x4,0x1f,0x4,0x3e,0x4,0x32,0x4,0x42,0x4,0x3e,0x4,0x40,0x0,0x20, - 0x4,0x37,0x4,0x32,0x4,0x43,0x4,0x3a,0x0,0x2e,0x0,0x20,0x4,0x4d,0x4,0x44, - 0x4,0x44,0x4,0x35,0x4,0x3a,0x4,0x42,0x4,0x3e,0x4,0x32,0x0,0x3a,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x45,0x6e,0x61,0x62,0x6c,0x65,0x20,0x4c, - 0x6f,0x6f,0x70,0x69,0x6e,0x67,0x20,0x53,0x46,0x58,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x8,0x4,0x18,0x4,0x33,0x4,0x40,0x4,0x30,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x47,0x61,0x6d,0x65,0x70,0x6c,0x61,0x79,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xb8,0x4,0x17,0x4,0x3d,0x4,0x30,0x4, - 0x47,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x3f,0x4,0x3e,0x0, - 0x20,0x4,0x43,0x4,0x3c,0x4,0x3e,0x4,0x3b,0x4,0x47,0x4,0x30,0x4,0x3d,0x4, - 0x38,0x4,0x4e,0x0,0x20,0x4,0x34,0x4,0x3b,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4, - 0x35,0x4,0x40,0x4,0x35,0x4,0x3a,0x4,0x3b,0x4,0x4e,0x4,0x47,0x4,0x30,0x4, - 0x42,0x4,0x35,0x4,0x3b,0x4,0x4f,0x0,0x20,0x0,0x22,0x4,0x1f,0x4,0x3e,0x4, - 0x3b,0x4,0x4c,0x4,0x37,0x4,0x3e,0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x35,0x4, - 0x3b,0x4,0x4c,0x4,0x41,0x4,0x3a,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x38,0x4, - 0x3c,0x4,0x35,0x4,0x3d,0x4,0x30,0x0,0x22,0x0,0x20,0x4,0x32,0x0,0x20,0x4, - 0x3e,0x4,0x41,0x4,0x3d,0x4,0x3e,0x4,0x32,0x4,0x3d,0x4,0x3e,0x4,0x3c,0x0, - 0x20,0x4,0x3e,0x4,0x3a,0x4,0x3d,0x4,0x35,0x0,0x20,0x4,0x3f,0x4,0x40,0x4, - 0x38,0x4,0x3b,0x4,0x3e,0x4,0x36,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x99,0x47,0x69,0x76,0x65,0x73, - 0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x76,0x61,0x6c, - 0x75,0x65,0x20,0x66,0x6f,0x72,0x20,0x74,0x68,0x65,0x20,0x69,0x6e,0x2d,0x67,0x61, - 0x6d,0x65,0x20,0x27,0x43,0x75,0x73,0x74,0x6f,0x6d,0x20,0x73,0x68,0x6f,0x77,0x6e, - 0x61,0x6d,0x65,0x73,0x27,0x20,0x74,0x69,0x63,0x6b,0x62,0x6f,0x78,0x2c,0x20,0x77, - 0x68,0x69,0x63,0x68,0x20,0x69,0x6e,0x20,0x74,0x75,0x72,0x6e,0x20,0x64,0x65,0x74, - 0x65,0x72,0x6d,0x69,0x6e,0x65,0x73,0x20,0x77,0x68,0x65,0x74,0x68,0x65,0x72,0x20, - 0x74,0x68,0x65,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x73,0x68,0x6f,0x75,0x6c, - 0x64,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d, - 0x20,0x69,0x6e,0x2d,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x6e,0x61, - 0x6d,0x65,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1e,0x4,0x1f, - 0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x35,0x4,0x34,0x4,0x35,0x4,0x3d,0x4,0x38, - 0x4,0x35,0x0,0x20,0x4,0x34,0x4,0x35,0x4,0x3b,0x0,0x3a,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0xe,0x48,0x6f,0x73,0x74,0x69,0x6e,0x67,0x20,0x63,0x61, - 0x73,0x65,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xe6,0x4,0x15, - 0x4,0x41,0x4,0x3b,0x4,0x38,0x0,0x20,0x0,0x22,0x4,0x17,0x4,0x30,0x4,0x34, - 0x4,0x35,0x4,0x40,0x4,0x36,0x4,0x3a,0x4,0x30,0x0,0x20,0x4,0x42,0x4,0x35, - 0x4,0x3a,0x4,0x41,0x4,0x42,0x4,0x30,0x0,0x22,0x0,0x20,0x4,0x31,0x4,0x3e, - 0x4,0x3b,0x4,0x4c,0x4,0x48,0x4,0x35,0x0,0x20,0x4,0x3d,0x4,0x43,0x4,0x3b, - 0x4,0x4f,0x0,0x2c,0x0,0x20,0x4,0x32,0x4,0x3a,0x4,0x3b,0x4,0x4e,0x4,0x47, - 0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x34,0x4,0x30,0x4,0x3d, - 0x4,0x3d,0x4,0x3e,0x4,0x39,0x0,0x20,0x4,0x3e,0x4,0x3f,0x4,0x46,0x4,0x38, - 0x4,0x38,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x37,0x4,0x32,0x4,0x3e,0x4,0x3b, - 0x4,0x4f,0x4,0x35,0x4,0x42,0x0,0x20,0x4,0x3e,0x4,0x42,0x4,0x3e,0x4,0x31, - 0x4,0x40,0x4,0x30,0x4,0x37,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32, - 0x4,0x3e,0x4,0x37,0x4,0x33,0x4,0x3b,0x4,0x30,0x4,0x41,0x0,0x2c,0x0,0x20, - 0x4,0x3c,0x4,0x38,0x4,0x3d,0x4,0x43,0x4,0x4f,0x0,0x20,0x4,0x41,0x4,0x3e, - 0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20, - 0x4,0x32,0x0,0x20,0x4,0x3e,0x4,0x47,0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x34, - 0x4,0x38,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6d,0x49,0x66, - 0x20,0x54,0x65,0x78,0x74,0x20,0x53,0x74,0x61,0x79,0x20,0x54,0x69,0x6d,0x65,0x20, - 0x69,0x73,0x20,0x6d,0x6f,0x72,0x65,0x20,0x74,0x68,0x61,0x6e,0x20,0x30,0x2c,0x20, - 0x69,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f, - 0x6e,0x20,0x77,0x69,0x6c,0x6c,0x20,0x73,0x6b,0x69,0x70,0x20,0x71,0x75,0x65,0x75, - 0x65,0x64,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x73,0x20,0x69,0x6e,0x73,0x74, - 0x65,0x61,0x64,0x20,0x6f,0x66,0x20,0x77,0x61,0x69,0x74,0x69,0x6e,0x67,0x20,0x74, - 0x6f,0x20,0x63,0x61,0x74,0x63,0x68,0x20,0x75,0x70,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x70,0x4,0x10,0x4,0x32,0x4,0x42,0x4,0x3e,0x4,0x3c,0x4, - 0x30,0x4,0x42,0x4,0x38,0x4,0x47,0x4,0x35,0x4,0x41,0x4,0x3a,0x4,0x38,0x0, - 0x20,0x4,0x41,0x4,0x3e,0x4,0x45,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x4f,0x4, - 0x42,0x4,0x4c,0x0,0x20,0x4,0x32,0x4,0x41,0x4,0x4e,0x0,0x20,0x4,0x38,0x4, - 0x41,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x38,0x4,0x4e,0x0,0x20,0x4,0x47,0x4, - 0x30,0x4,0x42,0x4,0x3e,0x4,0x32,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x3f,0x4, - 0x30,0x4,0x3f,0x4,0x3a,0x4,0x35,0x0,0x20,0x0,0x2f,0x0,0x6c,0x0,0x6f,0x0, - 0x67,0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x47,0x49, - 0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x61,0x6c,0x6c,0x20,0x6c, - 0x6f,0x67,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x75,0x74,0x6f, - 0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x6c,0x79,0x20,0x77,0x72,0x69,0x74,0x74,0x65, - 0x6e,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x2f,0x6c,0x6f,0x67,0x73,0x20,0x66, - 0x6f,0x6c,0x64,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x92, - 0x4,0x1e,0x4,0x42,0x4,0x3c,0x4,0x35,0x4,0x42,0x4,0x4c,0x4,0x42,0x4,0x35, - 0x0,0x2c,0x0,0x20,0x4,0x35,0x4,0x41,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x45, - 0x4,0x3e,0x4,0x42,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x41,0x4,0x3e, - 0x4,0x41,0x4,0x42,0x4,0x3e,0x4,0x4f,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32, - 0x0,0x20,0x4,0x47,0x4,0x38,0x4,0x41,0x4,0x3b,0x4,0x35,0x0,0x20,0x4,0x32, - 0x4,0x3e,0x4,0x37,0x4,0x3c,0x4,0x3e,0x4,0x36,0x4,0x3d,0x4,0x4b,0x4,0x45, - 0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x38,0x4,0x37,0x4,0x32,0x4,0x3e, - 0x4,0x34,0x4,0x38,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x35,0x4,0x39,0x0,0x20, - 0x4,0x34,0x4,0x35,0x4,0x3b,0x0,0x20,0x0,0x28,0x4,0x1f,0x4,0x14,0x0,0x29, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x44,0x49,0x66,0x20,0x63, - 0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c, - 0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x20,0x61,0x6d,0x6f,0x6e,0x67,0x73,0x74,0x20, - 0x74,0x68,0x65,0x20,0x70,0x6f,0x74,0x65,0x6e,0x74,0x69,0x61,0x6c,0x20,0x43,0x4d, - 0x73,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x90,0x4,0x1f,0x4,0x3e,0x4,0x3b, - 0x4,0x43,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x43,0x4,0x32, - 0x4,0x35,0x4,0x34,0x4,0x3e,0x4,0x3c,0x4,0x3b,0x4,0x35,0x4,0x3d,0x4,0x38, - 0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x38,0x0,0x20,0x4,0x3e,0x4,0x31, - 0x4,0x4a,0x4,0x4f,0x4,0x32,0x4,0x3b,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x38, - 0x0,0x20,0x4,0x34,0x4,0x35,0x4,0x3b,0x0,0x2c,0x0,0x20,0x4,0x32,0x0,0x20, - 0x4,0x3a,0x4,0x3e,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x4b,0x4,0x45,0x0,0x20, - 0x4,0x3d,0x4,0x43,0x4,0x36,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x41,0x4,0x42, - 0x4,0x3e,0x4,0x40,0x4,0x3e,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x37,0x4,0x30, - 0x4,0x49,0x4,0x38,0x4,0x42,0x4,0x4b,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x53,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20, - 0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65, - 0x72,0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61, - 0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x69,0x66,0x20, - 0x61,0x20,0x64,0x65,0x66,0x65,0x6e,0x73,0x65,0x20,0x73,0x70,0x6f,0x74,0x20,0x69, - 0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x9c,0x4,0x1f,0x4,0x3e,0x4,0x3b,0x4,0x43,0x4,0x47,0x4,0x30,0x4,0x42,0x4, - 0x4c,0x0,0x20,0x4,0x43,0x4,0x32,0x4,0x35,0x4,0x34,0x4,0x3e,0x4,0x3c,0x4, - 0x3b,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x40,0x4, - 0x38,0x0,0x20,0x4,0x3e,0x4,0x31,0x4,0x4a,0x4,0x4f,0x4,0x32,0x4,0x3b,0x4, - 0x35,0x4,0x3d,0x4,0x38,0x4,0x38,0x0,0x20,0x4,0x34,0x4,0x35,0x4,0x3b,0x0, - 0x2c,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x3a,0x4,0x3e,0x4,0x42,0x4,0x3e,0x4, - 0x40,0x4,0x4b,0x4,0x45,0x0,0x20,0x4,0x3d,0x4,0x43,0x4,0x36,0x4,0x3d,0x4, - 0x4b,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x38,0x4,0x41,0x4,0x4f,0x4,0x36,0x4, - 0x3d,0x4,0x4b,0x4,0x35,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x41,0x4,0x35,0x4, - 0x34,0x4,0x30,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x38,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x51,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65, - 0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20, - 0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73, - 0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20, - 0x69,0x66,0x20,0x61,0x20,0x6a,0x75,0x72,0x6f,0x72,0x20,0x73,0x70,0x6f,0x74,0x20, - 0x69,0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x96,0x4,0x1f,0x4,0x3e,0x4,0x3b,0x4,0x43,0x4,0x47,0x4,0x30,0x4,0x42, - 0x4,0x4c,0x0,0x20,0x4,0x43,0x4,0x32,0x4,0x35,0x4,0x34,0x4,0x3e,0x4,0x3c, - 0x4,0x3b,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x40, - 0x4,0x38,0x0,0x20,0x4,0x3e,0x4,0x31,0x4,0x4a,0x4,0x4f,0x4,0x32,0x4,0x3b, - 0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x38,0x0,0x20,0x4,0x34,0x4,0x35,0x4,0x3b, - 0x0,0x2c,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x3a,0x4,0x3e,0x4,0x42,0x4,0x3e, - 0x4,0x40,0x4,0x4b,0x4,0x45,0x0,0x20,0x4,0x3d,0x4,0x43,0x4,0x36,0x4,0x3d, - 0x4,0x30,0x0,0x20,0x4,0x41,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x3e,0x4,0x3d, - 0x4,0x30,0x0,0x20,0x4,0x3e,0x4,0x31,0x4,0x32,0x4,0x38,0x4,0x3d,0x4,0x35, - 0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x56,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f, - 0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74, - 0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e, - 0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x61,0x20, - 0x70,0x72,0x6f,0x73,0x65,0x63,0x75,0x74,0x6f,0x72,0x20,0x73,0x70,0x6f,0x74,0x20, - 0x69,0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x8c,0x4,0x1f,0x4,0x3e,0x4,0x3b,0x4,0x43,0x4,0x47,0x4,0x30,0x4,0x42, - 0x4,0x4c,0x0,0x20,0x4,0x43,0x4,0x32,0x4,0x35,0x4,0x34,0x4,0x3e,0x4,0x3c, - 0x4,0x3b,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x40, - 0x4,0x38,0x0,0x20,0x4,0x3e,0x4,0x31,0x4,0x4a,0x4,0x4f,0x4,0x32,0x4,0x3b, - 0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x38,0x0,0x20,0x4,0x34,0x4,0x35,0x4,0x3b, - 0x0,0x2c,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x3a,0x4,0x3e,0x4,0x42,0x4,0x3e, - 0x4,0x40,0x4,0x4b,0x4,0x45,0x0,0x20,0x4,0x3d,0x4,0x43,0x4,0x36,0x4,0x35, - 0x4,0x3d,0x0,0x20,0x4,0x41,0x4,0x42,0x4,0x35,0x4,0x3d,0x4,0x3e,0x4,0x33, - 0x4,0x40,0x4,0x30,0x4,0x44,0x4,0x38,0x4,0x41,0x4,0x42,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x58,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b, - 0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74, - 0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61, - 0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73, - 0x20,0x69,0x66,0x20,0x61,0x20,0x73,0x74,0x65,0x6e,0x6f,0x67,0x72,0x61,0x70,0x68, - 0x65,0x72,0x20,0x73,0x70,0x6f,0x74,0x20,0x69,0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x7e,0x4,0x1f,0x4,0x3e,0x4,0x3b, - 0x4,0x43,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x43,0x4,0x32, - 0x4,0x35,0x4,0x34,0x4,0x3e,0x4,0x3c,0x4,0x3b,0x4,0x35,0x4,0x3d,0x4,0x38, - 0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x38,0x0,0x20,0x4,0x3e,0x4,0x31, - 0x4,0x4a,0x4,0x4f,0x4,0x32,0x4,0x3b,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x38, - 0x0,0x20,0x4,0x34,0x4,0x35,0x4,0x3b,0x0,0x2c,0x0,0x20,0x4,0x32,0x0,0x20, - 0x4,0x3a,0x4,0x3e,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x4b,0x4,0x45,0x0,0x20, - 0x4,0x3d,0x4,0x43,0x4,0x36,0x4,0x35,0x4,0x3d,0x0,0x20,0x4,0x41,0x4,0x43, - 0x4,0x34,0x4,0x4c,0x4,0x4f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x53,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f, - 0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74, - 0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e, - 0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x74,0x68, - 0x65,0x20,0x6a,0x75,0x64,0x67,0x65,0x20,0x73,0x70,0x6f,0x74,0x20,0x69,0x73,0x20, - 0x6f,0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x5c,0x4, - 0x1f,0x4,0x3e,0x4,0x3b,0x4,0x43,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x4c,0x0, - 0x20,0x4,0x43,0x4,0x32,0x4,0x35,0x4,0x34,0x4,0x3e,0x4,0x3c,0x4,0x3b,0x4, - 0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x38,0x0, - 0x20,0x4,0x3e,0x4,0x31,0x4,0x4a,0x4,0x4f,0x4,0x32,0x4,0x3b,0x4,0x35,0x4, - 0x3d,0x4,0x38,0x4,0x38,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x41,0x4,0x35,0x4, - 0x34,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x39,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x39,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c, - 0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c, - 0x65,0x72,0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20, - 0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xd4,0x4,0x15,0x4,0x41,0x4,0x3b,0x4,0x38, - 0x0,0x20,0x4,0x3a,0x4,0x3b,0x4,0x38,0x4,0x35,0x4,0x3d,0x4,0x42,0x0,0x20, - 0x4,0x3d,0x4,0x35,0x0,0x20,0x4,0x41,0x4,0x3c,0x4,0x3e,0x4,0x36,0x4,0x35, - 0x4,0x42,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x35,0x4,0x34,0x4,0x38,0x4,0x3d, - 0x4,0x38,0x4,0x42,0x4,0x4c,0x4,0x41,0x4,0x4f,0x0,0x20,0x4,0x41,0x4,0x3e, - 0x0,0x20,0x4,0x32,0x4,0x41,0x4,0x42,0x4,0x40,0x4,0x3e,0x4,0x35,0x4,0x3d, - 0x4,0x3d,0x4,0x4b,0x4,0x3c,0x0,0x20,0x4,0x33,0x4,0x3b,0x4,0x30,0x4,0x32, - 0x4,0x3d,0x4,0x4b,0x4,0x3c,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4,0x32, - 0x4,0x35,0x4,0x40,0x4,0x3e,0x4,0x3c,0x0,0x20,0x0,0x28,0x4,0x13,0x4,0x21, - 0x0,0x29,0x0,0x2c,0x0,0x20,0x4,0x3e,0x4,0x3d,0x0,0x20,0x4,0x3f,0x4,0x40, - 0x4,0x3e,0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x38,0x4,0x42,0x0,0x20,0x4,0x30, - 0x4,0x34,0x4,0x40,0x4,0x35,0x4,0x41,0x4,0x30,0x0,0x20,0x4,0x38,0x4,0x37, - 0x0,0x20,0x4,0x4d,0x4,0x42,0x4,0x3e,0x4,0x33,0x4,0x3e,0x0,0x20,0x4,0x41, - 0x4,0x3f,0x4,0x38,0x4,0x41,0x4,0x3a,0x4,0x30,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x7b,0x49,0x66,0x20,0x74,0x68,0x65,0x20,0x62,0x75,0x69, - 0x6c,0x74,0x2d,0x69,0x6e,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x6c,0x6f,0x6f, - 0x6b,0x75,0x70,0x73,0x20,0x66,0x61,0x69,0x6c,0x2c,0x20,0x74,0x68,0x65,0x20,0x67, - 0x61,0x6d,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x74,0x72,0x79,0x20,0x74,0x68,0x65, - 0x20,0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x20,0x67,0x69,0x76,0x65,0x6e,0x20,0x68, - 0x65,0x72,0x65,0x20,0x61,0x6e,0x64,0x20,0x75,0x73,0x65,0x20,0x69,0x74,0x20,0x61, - 0x73,0x20,0x61,0x20,0x62,0x61,0x63,0x6b,0x75,0x70,0x20,0x6d,0x61,0x73,0x74,0x65, - 0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x61,0x64,0x64,0x72,0x65,0x73,0x73, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x92,0x4,0x1f,0x4,0x3e,0x4, - 0x3a,0x4,0x30,0x4,0x37,0x4,0x4b,0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x0, - 0x20,0x4,0x3c,0x4,0x35,0x4,0x42,0x4,0x3a,0x4,0x38,0x0,0x20,0x4,0x32,0x4, - 0x40,0x4,0x35,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x38,0x0,0x20,0x4,0x32,0x0, - 0x20,0x4,0x47,0x4,0x30,0x4,0x41,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4,0x3c,0x0, - 0x20,0x4,0x3f,0x4,0x3e,0x4,0x4f,0x4,0x41,0x4,0x35,0x0,0x20,0x0,0x55,0x0, - 0x54,0x0,0x43,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x38,0x4,0x33,0x4,0x40,0x4, - 0x3e,0x4,0x32,0x4,0x3e,0x4,0x3c,0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x42,0x4, - 0x35,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x34,0x0,0x20,0x4, - 0x38,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x35,0x4,0x3c,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x3f,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64, - 0x2c,0x20,0x6c,0x6f,0x67,0x20,0x77,0x69,0x6c,0x6c,0x20,0x63,0x6f,0x6e,0x74,0x61, - 0x69,0x6e,0x20,0x61,0x20,0x74,0x69,0x6d,0x65,0x73,0x74,0x61,0x6d,0x70,0x20,0x69, - 0x6e,0x20,0x55,0x54,0x43,0x20,0x62,0x65,0x66,0x6f,0x72,0x65,0x20,0x74,0x68,0x65, - 0x20,0x6e,0x61,0x6d,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa4, - 0x4,0x1f,0x4,0x3e,0x4,0x3a,0x4,0x30,0x4,0x37,0x4,0x4b,0x4,0x32,0x4,0x30, - 0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x34,0x4,0x35,0x4,0x39,0x4,0x41,0x4,0x42, - 0x4,0x32,0x4,0x38,0x4,0x4f,0x0,0x20,0x0,0x28,0x4,0x32,0x4,0x3e,0x4,0x37, - 0x4,0x33,0x4,0x3b,0x4,0x30,0x4,0x41,0x4,0x4b,0x0,0x2c,0x0,0x20,0x4,0x3f, - 0x4,0x40,0x4,0x35,0x4,0x34,0x4,0x4a,0x4,0x4f,0x4,0x32,0x4,0x3b,0x4,0x35, - 0x4,0x3d,0x4,0x3d,0x4,0x4b,0x4,0x35,0x0,0x20,0x4,0x43,0x4,0x3b,0x4,0x38, - 0x4,0x3a,0x4,0x38,0x0,0x20,0x4,0x38,0x0,0x20,0x4,0x3f,0x4,0x40,0x0,0x2e, - 0x0,0x29,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x38,0x4,0x41,0x4,0x42,0x4,0x3e, - 0x4,0x40,0x4,0x38,0x4,0x38,0x0,0x20,0x4,0x38,0x4,0x33,0x4,0x40,0x4,0x3e, - 0x4,0x32,0x4,0x3e,0x4,0x33,0x4,0x3e,0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x42, - 0x4,0x30,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4d,0x49,0x66, - 0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x6c,0x6f,0x67,0x20,0x77,0x69,0x6c, - 0x6c,0x20,0x73,0x68,0x6f,0x77,0x20,0x49,0x43,0x20,0x61,0x63,0x74,0x69,0x6f,0x6e, - 0x73,0x20,0x73,0x75,0x63,0x68,0x20,0x61,0x73,0x20,0x73,0x68,0x6f,0x75,0x74,0x69, - 0x6e,0x67,0x20,0x61,0x6e,0x64,0x20,0x70,0x72,0x65,0x73,0x65,0x6e,0x74,0x69,0x6e, - 0x67,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x1,0x28,0x4,0x1f,0x4,0x3e,0x4,0x3a,0x4,0x30,0x4,0x37,0x4, - 0x4b,0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x41,0x4,0x3e,0x4, - 0x3e,0x4,0x31,0x4,0x49,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4, - 0x32,0x0,0x20,0x4,0x38,0x4,0x41,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x38,0x4, - 0x38,0x0,0x20,0x4,0x38,0x4,0x33,0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4, - 0x33,0x4,0x3e,0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x30,0x0,0x20,0x4, - 0x32,0x0,0x20,0x4,0x40,0x4,0x35,0x4,0x30,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4, - 0x3e,0x4,0x3c,0x0,0x20,0x4,0x32,0x4,0x40,0x4,0x35,0x4,0x3c,0x4,0x35,0x4, - 0x3d,0x4,0x38,0x0,0x2c,0x0,0x20,0x0,0xa,0x4,0x30,0x0,0x20,0x4,0x32,0x0, - 0x20,0x4,0x41,0x4,0x30,0x4,0x3c,0x4,0x3e,0x4,0x3c,0x0,0x20,0x4,0x38,0x4, - 0x33,0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4,0x3c,0x0,0x20,0x4,0x47,0x4, - 0x30,0x4,0x42,0x4,0x35,0x0,0x20,0x0,0x2d,0x0,0x20,0x4,0x32,0x0,0x20,0x4, - 0x41,0x4,0x3e,0x4,0x3e,0x4,0x42,0x4,0x32,0x4,0x35,0x4,0x42,0x4,0x41,0x4, - 0x42,0x4,0x32,0x4,0x38,0x4,0x38,0x0,0x20,0x4,0x41,0x0,0x20,0x4,0x3d,0x4, - 0x30,0x4,0x41,0x4,0x42,0x4,0x40,0x4,0x3e,0x4,0x39,0x4,0x3a,0x4,0x30,0x4, - 0x3c,0x4,0x38,0x0,0x20,0x4,0x3e,0x4,0x47,0x4,0x35,0x4,0x40,0x4,0x35,0x4, - 0x34,0x4,0x38,0x0,0x20,0x0,0x28,0x0,0x22,0x4,0x17,0x4,0x30,0x4,0x34,0x4, - 0x35,0x4,0x40,0x4,0x36,0x4,0x3a,0x4,0x30,0x0,0x20,0x4,0x42,0x4,0x35,0x4, - 0x3a,0x4,0x41,0x4,0x42,0x4,0x30,0x0,0x22,0x0,0x29,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x71,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64, - 0x2c,0x20,0x6c,0x6f,0x67,0x20,0x77,0x69,0x6c,0x6c,0x20,0x73,0x68,0x6f,0x77,0x20, - 0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x73,0x20,0x61,0x73,0x2d,0x72,0x65,0x63,0x65, - 0x69,0x76,0x65,0x64,0x2c,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x76,0x69,0x65,0x77, - 0x70,0x6f,0x72,0x74,0x20,0x77,0x69,0x6c,0x6c,0x20,0x70,0x61,0x72,0x73,0x65,0x20, - 0x61,0x63,0x63,0x6f,0x72,0x64,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x74,0x68,0x65, - 0x20,0x71,0x75,0x65,0x75,0x65,0x20,0x28,0x54,0x65,0x78,0x74,0x20,0x53,0x74,0x61, - 0x79,0x20,0x54,0x69,0x6d,0x65,0x29,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0xb4,0x4,0x1f,0x4,0x3e,0x4,0x3a,0x4,0x30,0x4,0x37,0x4,0x4b,0x4,0x32, - 0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3d,0x4,0x3e,0x4,0x32,0x4,0x4b, - 0x4,0x35,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x35, - 0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x38,0x4,0x33, - 0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4,0x3c,0x0,0x20,0x4,0x47,0x4,0x30, - 0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x41,0x4,0x3d,0x4,0x38,0x4,0x37,0x4,0x43, - 0x0,0x20,0x0,0x28,0x4,0x3a,0x4,0x30,0x4,0x3a,0x0,0x20,0x4,0x32,0x0,0x20, - 0x4,0x1e,0x4,0x1e,0x4,0x21,0x0,0x2d,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x35, - 0x0,0x29,0x0,0x2c,0x0,0x20,0x4,0x30,0x0,0x20,0x4,0x3d,0x4,0x35,0x0,0x20, - 0x4,0x41,0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x45,0x4,0x43,0x0,0x20,0x0,0x28, - 0x4,0x3a,0x4,0x30,0x4,0x3a,0x0,0x20,0x4,0x32,0x0,0x20,0x0,0x41,0x0,0x4f, - 0x0,0x31,0x0,0x29,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8f, - 0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x6e,0x65,0x77,0x20,0x6d, - 0x65,0x73,0x73,0x61,0x67,0x65,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x61,0x70,0x70, - 0x65,0x61,0x72,0x20,0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x62,0x6f,0x74,0x74,0x6f, - 0x6d,0x20,0x28,0x6c,0x69,0x6b,0x65,0x20,0x74,0x68,0x65,0x20,0x4f,0x4f,0x43,0x20, - 0x63,0x68,0x61,0x74,0x6c,0x6f,0x67,0x29,0x2e,0x20,0x54,0x68,0x65,0x20,0x74,0x72, - 0x61,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x20,0x28,0x41,0x4f,0x31,0x29,0x20, - 0x62,0x65,0x68,0x61,0x76,0x69,0x6f,0x75,0x72,0x20,0x69,0x73,0x20,0x65,0x71,0x75, - 0x69,0x76,0x61,0x6c,0x65,0x6e,0x74,0x20,0x74,0x6f,0x20,0x74,0x68,0x69,0x73,0x20, - 0x62,0x65,0x69,0x6e,0x67,0x20,0x75,0x6e,0x74,0x69,0x63,0x6b,0x65,0x64,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x2a,0x4,0x1f,0x4,0x3e,0x4,0x3a,0x4, - 0x30,0x4,0x37,0x4,0x4b,0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4, - 0x3d,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4,0x35,0x0,0x20,0x4,0x41,0x4,0x3e,0x4, - 0x3e,0x4,0x31,0x4,0x49,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4, - 0x3d,0x4,0x30,0x0,0x20,0x4,0x41,0x4,0x3b,0x4,0x35,0x4,0x34,0x4,0x43,0x4, - 0x4e,0x4,0x49,0x4,0x35,0x4,0x39,0x0,0x20,0x4,0x41,0x4,0x42,0x4,0x40,0x4, - 0x3e,0x4,0x3a,0x4,0x35,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x41,0x4,0x3b,0x4, - 0x35,0x0,0x20,0x4,0x38,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x38,0x0,0x2e,0x0, - 0xa,0x4,0x15,0x4,0x41,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x3e,0x4,0x3f,0x4, - 0x46,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x32,0x4,0x4b,0x4,0x3a,0x4,0x3b,0x4, - 0x4e,0x4,0x47,0x4,0x35,0x4,0x3d,0x4,0x30,0x0,0x2c,0x0,0x20,0x4,0x41,0x4, - 0x3e,0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0, - 0x20,0x4,0x31,0x4,0x43,0x4,0x34,0x4,0x43,0x4,0x42,0x0,0x20,0x4,0x3e,0x4, - 0x42,0x4,0x3e,0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x36,0x4,0x30,0x4,0x42,0x4, - 0x4c,0x4,0x41,0x4,0x4f,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x41,0x4,0x3b,0x4, - 0x35,0x4,0x34,0x4,0x43,0x4,0x4e,0x4,0x49,0x4,0x35,0x4,0x3c,0x0,0x20,0x4, - 0x44,0x4,0x3e,0x4,0x40,0x4,0x3c,0x4,0x30,0x4,0x42,0x4,0x35,0x0,0x3a,0x0, - 0x20,0x0,0x22,0x4,0x38,0x4,0x3c,0x4,0x4f,0x0,0x3a,0x0,0x20,0x4,0x41,0x4, - 0x3e,0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0, - 0x22,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x99,0x49,0x66,0x20, - 0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x6e,0x65,0x77,0x20,0x6d,0x65,0x73,0x73, - 0x61,0x67,0x65,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x61,0x70,0x70,0x65,0x61,0x72, - 0x20,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x64,0x2c,0x20,0x77,0x69,0x74,0x68, - 0x20,0x74,0x68,0x65,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x63,0x6f,0x6d, - 0x69,0x6e,0x67,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x6e,0x65,0x78,0x74,0x20, - 0x6c,0x69,0x6e,0x65,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x6e, - 0x61,0x6d,0x65,0x2e,0x20,0x57,0x68,0x65,0x6e,0x20,0x75,0x6e,0x74,0x69,0x63,0x6b, - 0x65,0x64,0x2c,0x20,0x69,0x74,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x73,0x20, - 0x69,0x74,0x20,0x61,0x73,0x20,0x27,0x6e,0x61,0x6d,0x65,0x3a,0x20,0x6d,0x65,0x73, - 0x73,0x61,0x67,0x65,0x27,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x68, - 0x4,0x20,0x4,0x30,0x4,0x37,0x4,0x40,0x4,0x35,0x4,0x48,0x4,0x38,0x4,0x42, - 0x4,0x4c,0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3c,0x4,0x30,0x4,0x3c,0x0,0x20, - 0x4,0x38,0x4,0x41,0x4,0x3f,0x4,0x3e,0x4,0x3b,0x4,0x4c,0x4,0x37,0x4,0x3e, - 0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x30,0x4,0x3d,0x4,0x38, - 0x4,0x3c,0x4,0x38,0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x30,0x4,0x3d,0x4,0x3d, - 0x4,0x4b,0x4,0x35,0x0,0x20,0x4,0x4d,0x4,0x3b,0x4,0x35,0x4,0x3c,0x4,0x35, - 0x4,0x3d,0x4,0x42,0x4,0x4b,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x3c,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x74,0x68,0x65, - 0x6d,0x65,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x6c,0x6c,0x6f, - 0x77,0x65,0x64,0x20,0x74,0x6f,0x20,0x68,0x61,0x76,0x65,0x20,0x61,0x6e,0x69,0x6d, - 0x61,0x74,0x65,0x64,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x8e,0x4,0x1a,0x4,0x3b,0x4,0x38,0x4,0x35, - 0x4,0x3d,0x4,0x42,0x0,0x20,0x4,0x31,0x4,0x43,0x4,0x34,0x4,0x35,0x4,0x42, - 0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x41,0x4,0x38,0x4,0x42,0x4,0x4c, - 0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4,0x32,0x4,0x35,0x4,0x40,0x0,0x20, - 0x4,0x3e,0x4,0x41,0x4,0x42,0x4,0x30,0x4,0x3d,0x4,0x30,0x4,0x32,0x4,0x3b, - 0x4,0x38,0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3c,0x4,0x43, - 0x4,0x37,0x4,0x4b,0x4,0x3a,0x4,0x43,0x0,0x2c,0x0,0x20,0x4,0x3a,0x4,0x3e, - 0x4,0x33,0x4,0x34,0x4,0x30,0x0,0x20,0x4,0x32,0x4,0x4b,0x0,0x20,0x4,0x3f, - 0x4,0x40,0x4,0x3e,0x4,0x42,0x4,0x35,0x4,0x41,0x4,0x42,0x4,0x43,0x4,0x35, - 0x4,0x42,0x4,0x35,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x49, - 0x49,0x66,0x20,0x74,0x72,0x75,0x65,0x2c,0x20,0x41,0x4f,0x32,0x20,0x77,0x69,0x6c, - 0x6c,0x20,0x61,0x73,0x6b,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72, - 0x20,0x74,0x6f,0x20,0x73,0x74,0x6f,0x70,0x20,0x6d,0x75,0x73,0x69,0x63,0x20,0x77, - 0x68,0x65,0x6e,0x20,0x79,0x6f,0x75,0x20,0x75,0x73,0x65,0x20,0x27,0x4f,0x62,0x6a, - 0x65,0x63,0x74,0x69,0x6f,0x6e,0x21,0x27,0x20,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0xb4,0x4,0x20,0x4,0x30,0x4,0x37,0x4,0x40,0x4,0x35,0x4,0x48,0x4, - 0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32,0x4,0x3e,0x4,0x41,0x4,0x3f,0x4, - 0x40,0x4,0x3e,0x4,0x38,0x4,0x37,0x4,0x32,0x4,0x35,0x4,0x34,0x4,0x35,0x4, - 0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x46,0x4,0x38,0x4, - 0x3a,0x4,0x3b,0x4,0x35,0x4,0x3d,0x4,0x3d,0x4,0x4b,0x4,0x45,0x0,0x20,0x4, - 0x37,0x4,0x32,0x4,0x43,0x4,0x3a,0x4,0x3e,0x4,0x32,0x4,0x4b,0x4,0x45,0x0, - 0x20,0x4,0x4d,0x4,0x44,0x4,0x44,0x4,0x35,0x4,0x3a,0x4,0x42,0x4,0x3e,0x4, - 0x32,0x0,0x20,0x4,0x32,0x4,0x3e,0x0,0x20,0x4,0x32,0x4,0x40,0x4,0x35,0x4, - 0x3c,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x35,0x4,0x34,0x4,0x32,0x4, - 0x30,0x4,0x40,0x4,0x38,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4, - 0x3e,0x4,0x39,0x0,0x20,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4, - 0x46,0x4,0x38,0x4,0x38,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x4c,0x49,0x66,0x20,0x74,0x72,0x75,0x65,0x2c,0x20,0x74,0x68,0x65,0x20,0x67,0x61, - 0x6d,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x20,0x6c,0x6f, - 0x6f,0x70,0x69,0x6e,0x67,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65, - 0x63,0x74,0x73,0x20,0x74,0x6f,0x20,0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e,0x20,0x70, - 0x72,0x65,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x2e,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x4c,0x4,0x1f,0x4,0x40,0x4,0x3e,0x4,0x38,0x4, - 0x33,0x4,0x40,0x4,0x4b,0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4, - 0x41,0x4,0x38,0x4,0x33,0x4,0x3d,0x4,0x30,0x4,0x3b,0x4,0x4b,0x0,0x20,0x4, - 0x34,0x4,0x30,0x4,0x36,0x4,0x35,0x0,0x20,0x4,0x34,0x4,0x3b,0x4,0x4f,0x0, - 0x20,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x31,0x4,0x35,0x4,0x3b,0x4,0x3e,0x4, - 0x32,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4b,0x49,0x66,0x20, - 0x74,0x72,0x75,0x65,0x2c,0x20,0x74,0x68,0x65,0x20,0x67,0x61,0x6d,0x65,0x20,0x77, - 0x69,0x6c,0x6c,0x20,0x70,0x6c,0x61,0x79,0x20,0x61,0x20,0x62,0x6c,0x69,0x70,0x20, - 0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x76,0x65,0x6e,0x20,0x77,0x68,0x65,0x6e,0x20, - 0x61,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x69,0x73,0x20,0x27,0x62,0x65,0x69,0x6e, - 0x67,0x20,0x73,0x61,0x69,0x64,0x27,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x98,0x4,0x15,0x4,0x41,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x32,0x4,0x4b, - 0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x38,0x4,0x37,0x4,0x32,0x4,0x3e, - 0x4,0x34,0x4,0x38,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x4c,0x0,0x20,0x4,0x34, - 0x4,0x35,0x4,0x3b,0x0,0x20,0x0,0x28,0x4,0x1f,0x4,0x14,0x0,0x29,0x0,0x2c, - 0x0,0x20,0x4,0x43,0x4,0x3a,0x4,0x30,0x4,0x36,0x4,0x38,0x4,0x42,0x4,0x35, - 0x0,0x2c,0x0,0x20,0x4,0x3a,0x4,0x30,0x4,0x3a,0x4,0x38,0x4,0x3c,0x4,0x38, - 0x0,0x20,0x4,0x34,0x4,0x35,0x4,0x3b,0x4,0x30,0x4,0x3c,0x4,0x38,0x0,0x20, - 0x4,0x32,0x4,0x4b,0x0,0x20,0x4,0x45,0x4,0x3e,0x4,0x42,0x4,0x38,0x4,0x42, - 0x4,0x35,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30, - 0x4,0x42,0x4,0x4c,0x4,0x41,0x4,0x4f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x39,0x49,0x66,0x20,0x79,0x6f,0x75,0x27,0x72,0x65,0x20,0x61,0x20, - 0x43,0x4d,0x2c,0x20,0x65,0x6e,0x74,0x65,0x72,0x20,0x77,0x68,0x61,0x74,0x20,0x63, - 0x61,0x73,0x65,0x73,0x20,0x79,0x6f,0x75,0x20,0x61,0x72,0x65,0x20,0x77,0x69,0x6c, - 0x6c,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x68,0x6f,0x73,0x74,0x2e,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x2a,0x4,0x12,0x4,0x3e,0x4,0x37,0x4,0x33,0x4, - 0x3b,0x4,0x30,0x4,0x41,0x0,0x20,0x4,0x31,0x4,0x35,0x4,0x37,0x0,0x20,0x4, - 0x37,0x4,0x30,0x4,0x34,0x4,0x35,0x4,0x40,0x4,0x36,0x4,0x3a,0x4,0x38,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x49,0x6e,0x73,0x74,0x61, - 0x6e,0x74,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0xc,0x4,0x21,0x4,0x43,0x4,0x34,0x4,0x4c,0x4, - 0x4f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4a,0x75,0x64, - 0x67,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x14,0x4,0x1f,0x4, - 0x40,0x4,0x38,0x4,0x41,0x4,0x4f,0x4,0x36,0x4,0x3d,0x4,0x4b,0x4,0x35,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4a,0x75,0x72,0x6f,0x72, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x28,0x4,0x22,0x4,0x38,0x4, - 0x48,0x4,0x38,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x38,0x0, - 0x20,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x42,0x4,0x35,0x4,0x41,0x4,0x42,0x4, - 0x35,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x18,0x4b,0x69,0x6c, - 0x6c,0x20,0x4d,0x75,0x73,0x69,0x63,0x20,0x4f,0x6e,0x20,0x4f,0x62,0x6a,0x65,0x63, - 0x74,0x69,0x6f,0x6e,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa,0x4, - 0x2f,0x4,0x37,0x4,0x4b,0x4,0x3a,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x9,0x4c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x3a,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x12,0x4,0x14,0x4,0x35,0x4,0x39,0x4,0x41,0x4,0x42, - 0x4,0x32,0x4,0x38,0x4,0x4f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xf,0x4c,0x6f,0x67,0x20,0x49,0x43,0x20,0x61,0x63,0x74,0x69,0x6f,0x6e,0x73, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x2e,0x4,0x18,0x4,0x41,0x4, - 0x42,0x4,0x3e,0x4,0x40,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x47,0x4,0x30,0x4, - 0x42,0x4,0x30,0x0,0x20,0x4,0x38,0x4,0x34,0x4,0x51,0x4,0x42,0x0,0x20,0x4, - 0x32,0x4,0x3d,0x4,0x38,0x4,0x37,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x13,0x4c,0x6f,0x67,0x20,0x67,0x6f,0x65,0x73,0x20,0x64,0x6f,0x77,0x6e, - 0x77,0x61,0x72,0x64,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x3a, - 0x4,0x20,0x4,0x30,0x4,0x37,0x4,0x3c,0x4,0x35,0x4,0x40,0x0,0x20,0x4,0x38, - 0x4,0x41,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x38,0x4,0x38,0x0,0x20,0x4,0x38, - 0x4,0x33,0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4,0x33,0x4,0x3e,0x0,0x20, - 0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x30,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xb,0x4c,0x6f,0x67,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x12,0x4,0x18,0x4,0x3d,0x4,0x42,0x4, - 0x35,0x4,0x40,0x4,0x32,0x4,0x30,0x4,0x3b,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xb,0x4c,0x6f,0x67,0x20,0x6d,0x61,0x72,0x67,0x69,0x6e,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x32,0x4,0x21,0x4,0x3e,0x4,0x45, - 0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x4f,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3f, - 0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x3d,0x4,0x3e,0x4,0x41,0x0,0x20,0x4,0x41, - 0x4,0x42,0x4,0x40,0x4,0x3e,0x4,0x3a,0x4,0x38,0x0,0x3a,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0xc,0x4c,0x6f,0x67,0x20,0x6e,0x65,0x77,0x6c,0x69,0x6e, - 0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1c,0x4,0x1c,0x4,0x35, - 0x4,0x42,0x4,0x3a,0x4,0x38,0x0,0x20,0x4,0x32,0x4,0x40,0x4,0x35,0x4,0x3c, - 0x4,0x35,0x4,0x3d,0x4,0x38,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xe,0x4c,0x6f,0x67,0x20,0x74,0x69,0x6d,0x65,0x73,0x74,0x61,0x6d,0x70,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x4e,0x4,0x1c,0x4,0x38,0x4,0x3d, - 0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4,0x3e,0x4,0x35, - 0x0,0x20,0x4,0x32,0x4,0x40,0x4,0x35,0x4,0x3c,0x4,0x4f,0x0,0x20,0x0,0x28, - 0x4,0x32,0x0,0x20,0x4,0x3c,0x4,0x38,0x4,0x3b,0x4,0x3b,0x4,0x38,0x4,0x41, - 0x4,0x35,0x4,0x3a,0x4,0x43,0x4,0x3d,0x4,0x34,0x4,0x30,0x4,0x45,0x0,0x29, - 0x0,0x2c,0x0,0x20,0x4,0x3a,0x4,0x3e,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x3e, - 0x4,0x35,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x35, - 0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x38,0x4,0x33,0x4,0x40,0x4,0x3e, - 0x4,0x32,0x4,0x3e,0x4,0x33,0x4,0x3e,0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x42, - 0x4,0x30,0x0,0x20,0x4,0x34,0x4,0x3e,0x4,0x3b,0x4,0x36,0x4,0x3d,0x4,0x3e, - 0x0,0x20,0x4,0x3e,0x4,0x42,0x4,0x3e,0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x36, - 0x4,0x30,0x4,0x42,0x4,0x4c,0x4,0x41,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x35, - 0x4,0x40,0x4,0x35,0x4,0x34,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x3a,0x4,0x30, - 0x4,0x37,0x4,0x3e,0x4,0x3c,0x0,0x20,0x4,0x41,0x4,0x3b,0x4,0x35,0x4,0x34, - 0x4,0x43,0x4,0x4e,0x4,0x49,0x4,0x35,0x4,0x33,0x4,0x3e,0x0,0x2c,0x0,0x20, - 0x4,0x3e,0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x37,0x4,0x43,0x4,0x4f,0x0,0x20, - 0x4,0x3e,0x4,0x47,0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x34,0x4,0x4c,0x0,0x2e, - 0x0,0xa,0x4,0x1f,0x4,0x3e,0x4,0x41,0x4,0x42,0x4,0x30,0x4,0x32,0x4,0x4c, - 0x4,0x42,0x4,0x35,0x0,0x20,0x0,0x30,0x0,0x20,0x4,0x34,0x4,0x3b,0x4,0x4f, - 0x0,0x20,0x4,0x3e,0x4,0x42,0x4,0x3a,0x4,0x3b,0x4,0x4e,0x4,0x47,0x4,0x35, - 0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x3e,0x4,0x47,0x4,0x35,0x4,0x40, - 0x4,0x35,0x4,0x34,0x4,0x38,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xa6,0x4d,0x69,0x6e,0x69,0x6d,0x75,0x6d,0x20,0x61,0x6d,0x6f,0x75,0x6e,0x74, - 0x20,0x6f,0x66,0x20,0x74,0x69,0x6d,0x65,0x20,0x28,0x69,0x6e,0x20,0x6d,0x69,0x6c, - 0x69,0x73,0x65,0x63,0x6f,0x6e,0x64,0x73,0x29,0x20,0x61,0x6e,0x20,0x49,0x43,0x20, - 0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x6d,0x75,0x73,0x74,0x20,0x73,0x74,0x61, - 0x79,0x20,0x6f,0x6e,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x20,0x62,0x65,0x66,0x6f, - 0x72,0x65,0x20,0x74,0x68,0x65,0x20,0x6e,0x65,0x78,0x74,0x20,0x49,0x43,0x20,0x6d, - 0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x69,0x73,0x20,0x73,0x68,0x6f,0x77,0x6e,0x2c, - 0x20,0x61,0x63,0x74,0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x61,0x20,0x27,0x71,0x75, - 0x65,0x75,0x65,0x27,0x2e,0x20,0x53,0x65,0x74,0x20,0x74,0x6f,0x20,0x30,0x20,0x74, - 0x6f,0x20,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x74,0x68,0x69,0x73,0x20,0x62, - 0x65,0x68,0x61,0x76,0x69,0x6f,0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x1,0x2,0x4,0x1c,0x4,0x38,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x3b, - 0x4,0x4c,0x4,0x3d,0x4,0x3e,0x4,0x35,0x0,0x20,0x4,0x32,0x4,0x40,0x4,0x35, - 0x4,0x3c,0x4,0x4f,0x0,0x20,0x0,0x28,0x4,0x32,0x0,0x20,0x4,0x3c,0x4,0x38, - 0x4,0x3b,0x4,0x3b,0x4,0x38,0x4,0x41,0x4,0x35,0x4,0x3a,0x4,0x43,0x4,0x3d, - 0x4,0x34,0x4,0x30,0x4,0x45,0x0,0x29,0x0,0x2c,0x0,0x20,0x4,0x3a,0x4,0x3e, - 0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x3e,0x4,0x35,0x0,0x20,0x4,0x34,0x4,0x3e, - 0x4,0x3b,0x4,0x36,0x4,0x3d,0x4,0x3e,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x3e, - 0x4,0x39,0x4,0x42,0x4,0x38,0x0,0x2c,0x0,0xa,0x4,0x3f,0x4,0x40,0x4,0x35, - 0x4,0x36,0x4,0x34,0x4,0x35,0x0,0x20,0x4,0x47,0x4,0x35,0x4,0x3c,0x0,0x20, - 0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x4,0x42,0x4,0x38,0x4,0x35,0x0,0x20, - 0x0,0x45,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x4,0x41,0x4,0x3d, - 0x4,0x3e,0x4,0x32,0x4,0x30,0x0,0x20,0x4,0x3e,0x4,0x42,0x4,0x3f,0x4,0x40, - 0x4,0x30,0x4,0x32,0x4,0x38,0x4,0x42,0x0,0x20,0x4,0x32,0x4,0x30,0x4,0x48, - 0x4,0x35,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x35, - 0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x38,0x4,0x33, - 0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4,0x39,0x0,0x20,0x4,0x47,0x4,0x30, - 0x4,0x42,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x71,0x4d,0x69, - 0x6e,0x69,0x6d,0x75,0x6d,0x20,0x61,0x6d,0x6f,0x75,0x6e,0x74,0x20,0x6f,0x66,0x20, - 0x74,0x69,0x6d,0x65,0x20,0x28,0x69,0x6e,0x20,0x6d,0x69,0x6c,0x69,0x73,0x65,0x63, - 0x6f,0x6e,0x64,0x73,0x29,0x20,0x74,0x68,0x61,0x74,0x20,0x6d,0x75,0x73,0x74,0x20, - 0x70,0x61,0x73,0x73,0x20,0x62,0x65,0x66,0x6f,0x72,0x65,0x20,0x74,0x68,0x65,0x20, - 0x6e,0x65,0x78,0x74,0x20,0x45,0x6e,0x74,0x65,0x72,0x20,0x6b,0x65,0x79,0x20,0x70, - 0x72,0x65,0x73,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x73,0x65,0x6e,0x64,0x20,0x79, - 0x6f,0x75,0x72,0x20,0x49,0x43,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xe,0x4,0x1c,0x4,0x43,0x4,0x37,0x4, - 0x4b,0x4,0x3a,0x4,0x30,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x6,0x4d,0x75,0x73,0x69,0x63,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x20,0x4,0x2d,0x4,0x44,0x4,0x44,0x4,0x35,0x4,0x3a,0x4,0x42,0x4,0x4b,0x0, - 0x20,0x4,0x3f,0x4,0x3e,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x42,0x4,0x38,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x16,0x4e,0x65,0x74,0x77,0x6f, - 0x72,0x6b,0x20,0x46,0x72,0x61,0x6d,0x65,0x20,0x45,0x66,0x66,0x65,0x63,0x74,0x73, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x4a,0x4,0x1f,0x4,0x40,0x4, - 0x3e,0x4,0x38,0x4,0x33,0x4,0x40,0x4,0x4b,0x4,0x32,0x4,0x30,0x4,0x42,0x4, - 0x4c,0x0,0x20,0x4,0x41,0x4,0x38,0x4,0x33,0x4,0x3d,0x4,0x30,0x4,0x3b,0x0, - 0x20,0x4,0x3a,0x4,0x30,0x4,0x36,0x4,0x34,0x4,0x4b,0x4,0x35,0x0,0x20,0x4, - 0x25,0x0,0x20,0x4,0x41,0x4,0x38,0x4,0x3c,0x4,0x32,0x4,0x3e,0x4,0x3b,0x4, - 0x3e,0x4,0x32,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x47,0x50, - 0x6c,0x61,0x79,0x20,0x61,0x20,0x62,0x6c,0x69,0x70,0x20,0x73,0x6f,0x75,0x6e,0x64, - 0x20,0x22,0x6f,0x6e,0x63,0x65,0x20,0x70,0x65,0x72,0x20,0x65,0x76,0x65,0x72,0x79, - 0x20,0x58,0x20,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x22,0x2c,0x20,0x77,0x68,0x65, - 0x72,0x65,0x20,0x58,0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20,0x62,0x6c,0x69,0x70, - 0x20,0x72,0x61,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x4c, - 0x4,0x14,0x4,0x3e,0x4,0x3f,0x4,0x3e,0x4,0x3b,0x4,0x3d,0x4,0x38,0x4,0x42, - 0x4,0x35,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4,0x4b,0x4,0x35,0x0,0x20,0x4,0x3f, - 0x4,0x3e,0x4,0x4f,0x4,0x41,0x4,0x3d,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f, - 0x0,0x20,0x4,0x3d,0x4,0x35,0x0,0x20,0x4,0x42,0x4,0x40,0x4,0x35,0x4,0x31, - 0x4,0x43,0x4,0x4e,0x4,0x42,0x4,0x41,0x4,0x4f,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x18,0x50,0x72,0x65,0x74,0x74,0x79,0x20,0x73,0x65,0x6c, - 0x66,0x2d,0x65,0x78,0x70,0x6c,0x61,0x6e,0x61,0x74,0x6f,0x72,0x79,0x2e,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x14,0x4,0x1e,0x4,0x31,0x4,0x32,0x4,0x38, - 0x4,0x3d,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x3a,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0xc,0x50,0x72,0x6f,0x73,0x65,0x63,0x75,0x74,0x69,0x6f, - 0x6e,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x6c,0x4,0x1f,0x4,0x35, - 0x4,0x40,0x4,0x35,0x4,0x37,0x4,0x30,0x4,0x33,0x4,0x40,0x4,0x43,0x4,0x37, - 0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3c,0x4,0x43, - 0x0,0x20,0x4,0x38,0x0,0x20,0x4,0x3e,0x4,0x31,0x4,0x3d,0x4,0x3e,0x4,0x32, - 0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32,0x4,0x41,0x4,0x35,0x0,0x20, - 0x4,0x4d,0x4,0x3b,0x4,0x35,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x42,0x4,0x4b, - 0x0,0x20,0x4,0x38,0x4,0x3d,0x4,0x42,0x4,0x35,0x4,0x40,0x4,0x44,0x4,0x35, - 0x4,0x39,0x4,0x41,0x4,0x30,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x3d,0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x20,0x74,0x68,0x65,0x20,0x74,0x68, - 0x65,0x6d,0x65,0x20,0x61,0x6e,0x64,0x20,0x75,0x70,0x64,0x61,0x74,0x65,0x20,0x61, - 0x6c,0x6c,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x75,0x69,0x20,0x65,0x6c,0x65, - 0x6d,0x65,0x6e,0x74,0x73,0x20,0x74,0x6f,0x20,0x6d,0x61,0x74,0x63,0x68,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x24,0x4,0x1f,0x4,0x35,0x4,0x40,0x4, - 0x35,0x4,0x37,0x4,0x30,0x4,0x33,0x4,0x40,0x4,0x43,0x4,0x37,0x4,0x38,0x4, - 0x42,0x4,0x4c,0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3c,0x4,0x43,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x52,0x65,0x6c,0x6f,0x61,0x64,0x20,0x54,0x68, - 0x65,0x6d,0x65,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1c,0x4,0x17,0x4, - 0x32,0x4,0x43,0x4,0x3a,0x0,0x2e,0x0,0x20,0x4,0x4d,0x4,0x44,0x4,0x44,0x4, - 0x35,0x4,0x3a,0x4,0x42,0x4,0x4b,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x4,0x53,0x46,0x58,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1, - 0x3a,0x4,0x20,0x4,0x30,0x4,0x37,0x4,0x40,0x4,0x35,0x4,0x48,0x4,0x38,0x4, - 0x42,0x4,0x4c,0x0,0x20,0x4,0x3e,0x4,0x42,0x4,0x3f,0x4,0x40,0x4,0x30,0x4, - 0x32,0x4,0x3a,0x4,0x43,0x0,0x20,0x4,0x37,0x4,0x32,0x4,0x43,0x4,0x3a,0x4, - 0x3e,0x4,0x32,0x0,0x2c,0x0,0x20,0x4,0x4d,0x4,0x44,0x4,0x44,0x4,0x35,0x4, - 0x3a,0x4,0x42,0x4,0x3e,0x4,0x32,0x0,0x20,0x4,0x32,0x4,0x41,0x4,0x3f,0x4, - 0x4b,0x4,0x48,0x4,0x35,0x4,0x3a,0x0,0x20,0x4,0x38,0x0,0x20,0x4,0x32,0x4, - 0x41,0x4,0x42,0x4,0x40,0x4,0x4f,0x4,0x41,0x4,0x3a,0x4,0x38,0x0,0x20,0x4, - 0x4d,0x4,0x3a,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x3f,0x4, - 0x3e,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x42,0x4,0x38,0x0,0x20,0x4,0x32,0x0, - 0x20,0x4,0x41,0x4,0x3e,0x4,0x3e,0x4,0x42,0x4,0x32,0x4,0x35,0x4,0x42,0x4, - 0x41,0x4,0x42,0x4,0x32,0x4,0x38,0x4,0x38,0x0,0x20,0x4,0x41,0x0,0x20,0x0, - 0x63,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0, - 0x2e,0x0,0x20,0x0,0xa,0x4,0x20,0x4,0x30,0x4,0x31,0x4,0x3e,0x4,0x42,0x4, - 0x30,0x4,0x35,0x4,0x42,0x0,0x20,0x4,0x42,0x4,0x3e,0x4,0x3b,0x4,0x4c,0x4, - 0x3a,0x4,0x3e,0x0,0x20,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x41,0x4,0x35,0x4, - 0x40,0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x30,0x4,0x45,0x0,0x2c,0x0,0x20,0x4, - 0x3f,0x4,0x3e,0x4,0x34,0x4,0x34,0x4,0x35,0x4,0x40,0x4,0x36,0x4,0x38,0x4, - 0x32,0x4,0x30,0x4,0x4e,0x4,0x49,0x4,0x38,0x4,0x45,0x0,0x20,0x4,0x34,0x4, - 0x30,0x4,0x3d,0x4,0x3d,0x4,0x43,0x4,0x4e,0x0,0x20,0x4,0x44,0x4,0x43,0x4, - 0x3d,0x4,0x3a,0x4,0x46,0x4,0x38,0x4,0x4e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x8c,0x53,0x65,0x6e,0x64,0x20,0x73,0x63,0x72,0x65,0x65,0x6e, - 0x2d,0x73,0x68,0x61,0x6b,0x69,0x6e,0x67,0x2c,0x20,0x66,0x6c,0x61,0x73,0x68,0x65, - 0x73,0x20,0x61,0x6e,0x64,0x20,0x73,0x6f,0x75,0x6e,0x64,0x73,0x20,0x61,0x73,0x20, - 0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x63, - 0x68,0x61,0x72,0x2e,0x69,0x6e,0x69,0x20,0x6f,0x76,0x65,0x72,0x20,0x74,0x68,0x65, - 0x20,0x6e,0x65,0x74,0x77,0x6f,0x72,0x6b,0x2e,0x20,0x4f,0x6e,0x6c,0x79,0x20,0x77, - 0x6f,0x72,0x6b,0x73,0x20,0x66,0x6f,0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x73, - 0x20,0x74,0x68,0x61,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x74,0x68, - 0x69,0x73,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x69,0x74,0x79, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x70,0x4,0x1e,0x4,0x3f,0x4, - 0x40,0x4,0x35,0x4,0x34,0x4,0x35,0x4,0x3b,0x4,0x4f,0x4,0x35,0x4,0x42,0x0, - 0x20,0x4,0x3f,0x4,0x3e,0x4,0x34,0x4,0x42,0x4,0x35,0x4,0x3c,0x4,0x43,0x0, - 0x2c,0x0,0x20,0x4,0x3a,0x4,0x3e,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x30,0x4, - 0x4f,0x0,0x20,0x4,0x41,0x4,0x42,0x4,0x30,0x4,0x32,0x4,0x38,0x4,0x42,0x4, - 0x41,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x32,0x4,0x35,0x4,0x40,0x4, - 0x45,0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3a,0x4,0x43,0x4,0x49,0x4,0x35,0x4, - 0x39,0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3c,0x4,0x4b,0x0,0x20,0x4,0x38,0x0, - 0x20,0x4,0x37,0x4,0x30,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x4f,0x4,0x35,0x4, - 0x42,0x0,0x20,0x4,0x32,0x4,0x41,0x4,0x35,0x0,0x2c,0x0,0x20,0x4,0x47,0x4, - 0x42,0x4,0x3e,0x0,0x20,0x4,0x3c,0x4,0x3e,0x4,0x36,0x4,0x35,0x4,0x42,0x0, - 0x2e,0x0,0xa,0x4,0x12,0x4,0x4b,0x4,0x31,0x4,0x35,0x4,0x40,0x4,0x38,0x4, - 0x42,0x4,0x35,0x0,0x20,0x0,0x22,0x4,0x41,0x4,0x35,0x4,0x40,0x4,0x32,0x4, - 0x35,0x4,0x40,0x0,0x22,0x0,0x2c,0x0,0x20,0x4,0x47,0x4,0x42,0x4,0x3e,0x4, - 0x31,0x4,0x4b,0x0,0x20,0x4,0x3e,0x4,0x41,0x4,0x42,0x4,0x30,0x4,0x32,0x4, - 0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32,0x4,0x4b,0x4,0x31,0x4,0x3e,0x4, - 0x40,0x0,0x20,0x4,0x37,0x4,0x30,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4, - 0x32,0x4,0x35,0x4,0x40,0x4,0x3e,0x4,0x3c,0x0,0x2e,0x0,0xa,0x4,0x12,0x4, - 0x4b,0x4,0x31,0x4,0x35,0x4,0x40,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x0, - 0x22,0x4,0x3f,0x4,0x3e,0x0,0x20,0x4,0x43,0x4,0x3c,0x4,0x3e,0x4,0x3b,0x4, - 0x47,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x4e,0x0,0x22,0x0,0x2c,0x0,0x20,0x4, - 0x47,0x4,0x42,0x4,0x3e,0x4,0x31,0x4,0x4b,0x0,0x20,0x4,0x3e,0x4,0x3d,0x4, - 0x30,0x0,0x20,0x4,0x3d,0x4,0x35,0x0,0x20,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4, - 0x4f,0x4,0x3b,0x4,0x30,0x4,0x41,0x4,0x4c,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xb5,0x53,0x65,0x74,0x73,0x20,0x61,0x20,0x27,0x73,0x75,0x62, - 0x74,0x68,0x65,0x6d,0x65,0x27,0x2c,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x77,0x69, - 0x6c,0x6c,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x70,0x20, - 0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x74, - 0x68,0x65,0x6d,0x65,0x20,0x61,0x6e,0x64,0x20,0x72,0x65,0x70,0x6c,0x61,0x63,0x65, - 0x20,0x61,0x6e,0x79,0x74,0x68,0x69,0x6e,0x67,0x20,0x69,0x74,0x20,0x63,0x61,0x6e, - 0x2e,0x4b,0x65,0x65,0x70,0x20,0x69,0x74,0x20,0x61,0x74,0x20,0x27,0x73,0x65,0x72, - 0x76,0x65,0x72,0x27,0x20,0x74,0x6f,0x20,0x6c,0x65,0x74,0x20,0x74,0x68,0x65,0x20, - 0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x64,0x65,0x63,0x69,0x64,0x65,0x2e,0x20,0x4b, - 0x65,0x65,0x70,0x20,0x69,0x74,0x20,0x61,0x74,0x20,0x27,0x64,0x65,0x66,0x61,0x75, - 0x6c,0x74,0x27,0x20,0x74,0x6f,0x20,0x6b,0x65,0x65,0x70,0x20,0x69,0x74,0x20,0x75, - 0x6e,0x63,0x68,0x61,0x6e,0x67,0x69,0x6e,0x67,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0xa0,0x4,0x13,0x4,0x40,0x4,0x3e,0x4,0x3c,0x4,0x3a,0x4,0x3e, - 0x4,0x41,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x37,0x4,0x32,0x4,0x43,0x4,0x3a, - 0x4,0x3e,0x4,0x32,0x4,0x4b,0x4,0x45,0x0,0x20,0x4,0x4d,0x4,0x44,0x4,0x44, - 0x4,0x35,0x4,0x3a,0x4,0x42,0x4,0x3e,0x4,0x32,0x0,0x20,0x4,0x3f,0x4,0x3e, - 0x0,0x20,0x4,0x43,0x4,0x3c,0x4,0x3e,0x4,0x3b,0x4,0x47,0x4,0x30,0x4,0x3d, - 0x4,0x38,0x4,0x4e,0x0,0x2e,0x0,0x20,0x4,0x12,0x0,0x20,0x4,0x4d,0x4,0x42, - 0x4,0x43,0x0,0x20,0x4,0x3a,0x4,0x30,0x4,0x42,0x4,0x35,0x4,0x33,0x4,0x3e, - 0x4,0x40,0x4,0x38,0x4,0x4e,0x0,0x20,0x4,0x42,0x4,0x30,0x4,0x3a,0x4,0x36, - 0x4,0x35,0x0,0x20,0x4,0x32,0x4,0x45,0x4,0x3e,0x4,0x34,0x4,0x4f,0x4,0x42, - 0x0,0x20,0x4,0x32,0x4,0x3e,0x4,0x37,0x4,0x33,0x4,0x3b,0x4,0x30,0x4,0x41, - 0x4,0x4b,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x55,0x53,0x65, - 0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x53,0x46,0x58,0x27,0x73,0x20,0x64,0x65,0x66, - 0x61,0x75,0x6c,0x74,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x2e,0x20,0x49,0x6e,0x74, - 0x65,0x72,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0x61,0x6e,0x64,0x20,0x61, - 0x63,0x74,0x75,0x61,0x6c,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65, - 0x63,0x74,0x73,0x20,0x63,0x6f,0x75,0x6e,0x74,0x20,0x61,0x73,0x20,0x27,0x53,0x46, - 0x58,0x27,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x74,0x4,0x23,0x4, - 0x3a,0x4,0x30,0x4,0x36,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x43,0x4, - 0x41,0x4,0x42,0x4,0x40,0x4,0x3e,0x4,0x39,0x4,0x41,0x4,0x42,0x4,0x32,0x4, - 0x3e,0x0,0x20,0x4,0x32,0x4,0x3e,0x4,0x41,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4, - 0x38,0x4,0x37,0x4,0x32,0x4,0x35,0x4,0x34,0x4,0x35,0x4,0x3d,0x4,0x38,0x4, - 0x4f,0x0,0x20,0x4,0x32,0x4,0x41,0x4,0x35,0x4,0x33,0x4,0x3e,0x0,0x20,0x4, - 0x30,0x4,0x43,0x4,0x34,0x4,0x38,0x4,0x3e,0x0,0x20,0x4,0x3f,0x4,0x40,0x4, - 0x38,0x4,0x3b,0x4,0x3e,0x4,0x36,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x25,0x53,0x65,0x74,0x73,0x20, - 0x74,0x68,0x65,0x20,0x61,0x75,0x64,0x69,0x6f,0x20,0x64,0x65,0x76,0x69,0x63,0x65, - 0x20,0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20,0x73,0x6f,0x75,0x6e,0x64,0x73,0x2e, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x72,0x4,0x17,0x4,0x30,0x4,0x34, - 0x4,0x35,0x4,0x40,0x4,0x36,0x4,0x3a,0x4,0x30,0x0,0x20,0x4,0x3f,0x4,0x3e, - 0x0,0x20,0x4,0x43,0x4,0x3c,0x4,0x3e,0x4,0x3b,0x4,0x47,0x4,0x30,0x4,0x3d, - 0x4,0x38,0x4,0x4e,0x0,0x20,0x4,0x3c,0x4,0x35,0x4,0x36,0x4,0x34,0x4,0x43, - 0x0,0x20,0x4,0x41,0x4,0x38,0x4,0x33,0x4,0x3d,0x4,0x30,0x4,0x3b,0x4,0x30, - 0x4,0x3c,0x4,0x38,0x0,0x2c,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x3c,0x4,0x35, - 0x4,0x3d,0x4,0x4f,0x4,0x4e,0x4,0x49,0x4,0x38,0x4,0x3c,0x4,0x38,0x0,0x20, - 0x4,0x33,0x4,0x3e,0x4,0x3b,0x4,0x3e,0x4,0x41,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x2f,0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x64, - 0x65,0x6c,0x61,0x79,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e,0x20,0x70,0x6c,0x61, - 0x79,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x62,0x6c,0x69,0x70,0x20,0x73,0x6f, - 0x75,0x6e,0x64,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa2,0x4, - 0x18,0x4,0x37,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x4f,0x4,0x35,0x4,0x42,0x0, - 0x20,0x4,0x4f,0x4,0x37,0x4,0x4b,0x4,0x3a,0x0,0x20,0x4,0x38,0x4,0x3d,0x4, - 0x42,0x4,0x35,0x4,0x40,0x4,0x44,0x4,0x35,0x4,0x39,0x4,0x41,0x4,0x30,0x0, - 0x20,0x4,0x3f,0x4,0x40,0x4,0x38,0x4,0x3b,0x4,0x3e,0x4,0x36,0x4,0x35,0x4, - 0x3d,0x4,0x38,0x4,0x4f,0x0,0x2c,0x0,0x20,0x4,0x35,0x4,0x41,0x4,0x3b,0x4, - 0x38,0x0,0x20,0x4,0x32,0x4,0x4b,0x0,0x20,0x4,0x3d,0x4,0x35,0x0,0x20,0x4, - 0x45,0x4,0x3e,0x4,0x42,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x38,0x4, - 0x41,0x4,0x3f,0x4,0x3e,0x4,0x3b,0x4,0x4c,0x4,0x37,0x4,0x3e,0x4,0x32,0x4, - 0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x4f,0x4,0x37,0x4,0x4b,0x4,0x3a,0x0, - 0x20,0x4,0x41,0x4,0x38,0x4,0x41,0x4,0x42,0x4,0x35,0x4,0x3c,0x4,0x4b,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x40,0x53,0x65,0x74,0x73,0x20, - 0x74,0x68,0x65,0x20,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x20,0x69,0x66,0x20, - 0x79,0x6f,0x75,0x20,0x64,0x6f,0x6e,0x27,0x74,0x20,0x77,0x61,0x6e,0x74,0x20,0x74, - 0x6f,0x20,0x75,0x73,0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x73,0x79,0x73,0x74,0x65, - 0x6d,0x20,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x3c,0x4,0x13,0x4,0x40,0x4,0x3e,0x4,0x3c,0x4,0x3a,0x4, - 0x3e,0x4,0x41,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3c,0x4,0x43,0x4,0x37,0x4, - 0x4b,0x4,0x3a,0x4,0x38,0x0,0x20,0x4,0x3f,0x4,0x3e,0x0,0x20,0x4,0x43,0x4, - 0x3c,0x4,0x3e,0x4,0x3b,0x4,0x47,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x4e,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x20,0x53,0x65,0x74,0x73,0x20, - 0x74,0x68,0x65,0x20,0x6d,0x75,0x73,0x69,0x63,0x27,0x73,0x20,0x64,0x65,0x66,0x61, - 0x75,0x6c,0x74,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0xbc,0x4,0x1e,0x4,0x3f,0x4,0x40,0x4,0x35,0x4,0x34,0x4, - 0x35,0x4,0x3b,0x4,0x4f,0x4,0x35,0x4,0x42,0x0,0x20,0x4,0x32,0x4,0x3d,0x4, - 0x35,0x4,0x48,0x4,0x3d,0x4,0x38,0x4,0x39,0x0,0x20,0x4,0x32,0x4,0x38,0x4, - 0x34,0x0,0x20,0x4,0x38,0x4,0x33,0x4,0x40,0x4,0x4b,0x0,0x2e,0x0,0x20,0x4, - 0x14,0x4,0x3b,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x38,0x4,0x3c,0x4, - 0x35,0x4,0x3d,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x3d,0x4, - 0x3e,0x4,0x32,0x4,0x3e,0x4,0x39,0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3c,0x4, - 0x4b,0x0,0x20,0x4,0x3c,0x4,0x3e,0x4,0x36,0x4,0x35,0x4,0x42,0x0,0x20,0x4, - 0x3f,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x34,0x4,0x3e,0x4,0x31,0x4,0x38,0x4, - 0x42,0x4,0x4c,0x4,0x41,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4, - 0x35,0x4,0x37,0x4,0x30,0x4,0x39,0x4,0x42,0x4,0x38,0x0,0x20,0x4,0x3d,0x4, - 0x30,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4,0x32,0x4,0x35,0x4,0x40,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xbb,0x53,0x65,0x74,0x73,0x20, - 0x74,0x68,0x65,0x20,0x74,0x68,0x65,0x6d,0x65,0x20,0x75,0x73,0x65,0x64,0x20,0x69, - 0x6e,0x2d,0x67,0x61,0x6d,0x65,0x2e,0x20,0x49,0x66,0x20,0x74,0x68,0x65,0x20,0x6e, - 0x65,0x77,0x20,0x74,0x68,0x65,0x6d,0x65,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73, - 0x20,0x74,0x68,0x65,0x20,0x6c,0x6f,0x62,0x62,0x79,0x27,0x73,0x20,0x6c,0x6f,0x6f, - 0x6b,0x20,0x61,0x73,0x20,0x77,0x65,0x6c,0x6c,0x2c,0x20,0x79,0x6f,0x75,0x27,0x6c, - 0x6c,0x20,0x6e,0x65,0x65,0x64,0x20,0x74,0x6f,0x20,0x72,0x65,0x6c,0x6f,0x61,0x64, - 0x20,0x74,0x68,0x65,0x20,0x6c,0x6f,0x62,0x62,0x79,0x20,0x66,0x6f,0x72,0x20,0x74, - 0x68,0x65,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x20,0x74,0x6f,0x20,0x74,0x61, - 0x6b,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x2c,0x20,0x73,0x75,0x63,0x68,0x20, - 0x61,0x73,0x20,0x62,0x79,0x20,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x20,0x61,0x20, - 0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x61,0x6e,0x64,0x20,0x6c,0x65,0x61,0x76,0x69, - 0x6e,0x67,0x20,0x69,0x74,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x66, - 0x4,0x13,0x4,0x40,0x4,0x3e,0x4,0x3c,0x4,0x3a,0x4,0x3e,0x4,0x41,0x4,0x42, - 0x4,0x4c,0x0,0x20,0x4,0x41,0x4,0x38,0x4,0x33,0x4,0x3d,0x4,0x30,0x4,0x3b, - 0x4,0x3e,0x4,0x32,0x0,0x2c,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x3c,0x4,0x35, - 0x4,0x3d,0x4,0x4f,0x4,0x4e,0x4,0x49,0x4,0x38,0x4,0x45,0x0,0x20,0x4,0x33, - 0x4,0x3e,0x4,0x3b,0x4,0x3e,0x4,0x41,0x0,0x2c,0x0,0x20,0x4,0x3f,0x4,0x3e, - 0x0,0x20,0x4,0x43,0x4,0x3c,0x4,0x3e,0x4,0x3b,0x4,0x47,0x4,0x30,0x4,0x3d, - 0x4,0x38,0x4,0x4e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x38, - 0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x20, - 0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x62,0x6c,0x69,0x70,0x73,0x2c,0x20,0x74,0x68, - 0x65,0x20,0x74,0x61,0x6c,0x6b,0x69,0x6e,0x67,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20, - 0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x12,0x4,0x1d,0x4,0x30,0x4,0x41,0x4,0x42,0x4,0x40,0x4,0x3e,0x4,0x39, - 0x4,0x3a,0x4,0x38,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x65, - 0x74,0x74,0x69,0x6e,0x67,0x73,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1a, - 0x4,0x21,0x4,0x42,0x4,0x35,0x4,0x3d,0x4,0x3e,0x4,0x33,0x4,0x40,0x4,0x30, - 0x4,0x44,0x4,0x38,0x4,0x41,0x4,0x42,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xd,0x53,0x74,0x65,0x6e,0x6f,0x67,0x72,0x61,0x70,0x68,0x65,0x72, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x10,0x4,0x21,0x4,0x42,0x4, - 0x38,0x4,0x3a,0x4,0x35,0x4,0x40,0x4,0x4b,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x9,0x53,0x74,0x69,0x63,0x6b,0x65,0x72,0x73,0x3a,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x24,0x4,0x17,0x4,0x30,0x4,0x3a,0x4,0x40, - 0x4,0x35,0x4,0x3f,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x4d,0x4,0x44, - 0x4,0x44,0x4,0x35,0x4,0x3a,0x4,0x42,0x4,0x4b,0x0,0x3a,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0xf,0x53,0x74,0x69,0x63,0x6b,0x79,0x20,0x45,0x66,0x66, - 0x65,0x63,0x74,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x32,0x4, - 0x17,0x4,0x30,0x4,0x3a,0x4,0x40,0x4,0x35,0x4,0x3f,0x4,0x38,0x4,0x42,0x4, - 0x4c,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x35,0x4,0x34,0x0,0x2e,0x0,0x20,0x4, - 0x30,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x46,0x4,0x38,0x4,0x38,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x53,0x74,0x69,0x63,0x6b, - 0x79,0x20,0x50,0x72,0x65,0x61,0x6e,0x69,0x6d,0x73,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x20,0x4,0x17,0x4,0x30,0x4,0x3a,0x4,0x40,0x4,0x35,0x4, - 0x3f,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x37,0x4,0x32,0x4,0x43,0x4, - 0x3a,0x4,0x38,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x53, - 0x74,0x69,0x63,0x6b,0x79,0x20,0x53,0x6f,0x75,0x6e,0x64,0x73,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x42,0x4,0x1e,0x4,0x41,0x4,0x42,0x4,0x30,0x4, - 0x3d,0x4,0x30,0x4,0x32,0x4,0x3b,0x4,0x38,0x4,0x32,0x4,0x30,0x4,0x42,0x4, - 0x4c,0x0,0x20,0x4,0x3c,0x4,0x43,0x4,0x37,0x4,0x4b,0x4,0x3a,0x4,0x43,0x0, - 0x20,0x4,0x3a,0x4,0x30,0x4,0x42,0x4,0x35,0x4,0x33,0x4,0x3e,0x4,0x40,0x4, - 0x38,0x4,0x4f,0x4,0x3c,0x4,0x38,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x17,0x53,0x74,0x6f,0x70,0x20,0x4d,0x75,0x73,0x69,0x63,0x20,0x77,0x2f, - 0x20,0x43,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0x3a,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x1,0x22,0x4,0x1e,0x4,0x41,0x4,0x42,0x4,0x30,0x4,0x3d,0x4,0x30, - 0x4,0x32,0x4,0x3b,0x4,0x38,0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20, - 0x4,0x3c,0x4,0x43,0x4,0x37,0x4,0x4b,0x4,0x3a,0x4,0x43,0x0,0x20,0x4,0x3f, - 0x4,0x3e,0x0,0x20,0x4,0x34,0x4,0x32,0x4,0x3e,0x4,0x39,0x4,0x3d,0x4,0x3e, - 0x4,0x3c,0x4,0x43,0x0,0x20,0x4,0x3a,0x4,0x3b,0x4,0x38,0x4,0x3a,0x4,0x43, - 0x0,0x20,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x37,0x4,0x32, - 0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x38,0x0,0x20,0x4,0x3a,0x4,0x30,0x4,0x42, - 0x4,0x35,0x4,0x33,0x4,0x3e,0x4,0x40,0x4,0x38,0x4,0x38,0x0,0x2e,0x0,0xa, - 0x4,0x15,0x4,0x41,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x4d,0x4,0x42,0x4,0x30, - 0x0,0x20,0x4,0x3e,0x4,0x3f,0x4,0x46,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x3e, - 0x4,0x42,0x4,0x3a,0x4,0x3b,0x4,0x4e,0x4,0x47,0x4,0x35,0x4,0x3d,0x4,0x30, - 0x0,0x2c,0x0,0x20,0x4,0x32,0x4,0x3e,0x4,0x41,0x4,0x3f,0x4,0x3e,0x4,0x3b, - 0x4,0x4c,0x4,0x37,0x4,0x43,0x4,0x39,0x4,0x42,0x4,0x35,0x4,0x41,0x4,0x4c, - 0x0,0x20,0x4,0x3a,0x4,0x3e,0x4,0x3d,0x4,0x42,0x4,0x35,0x4,0x3a,0x4,0x41, - 0x4,0x42,0x4,0x3d,0x4,0x4b,0x4,0x3c,0x0,0x20,0x4,0x3c,0x4,0x35,0x4,0x3d, - 0x4,0x4e,0x0,0x2c,0x0,0x20,0x4,0x47,0x4,0x42,0x4,0x3e,0x4,0x31,0x4,0x4b, - 0x0,0x20,0x4,0x3e,0x4,0x41,0x4,0x42,0x4,0x30,0x4,0x3d,0x4,0x3e,0x4,0x32, - 0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3c,0x4,0x43,0x4,0x37,0x4,0x4b, - 0x4,0x3a,0x4,0x43,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x70, - 0x53,0x74,0x6f,0x70,0x20,0x6d,0x75,0x73,0x69,0x63,0x20,0x77,0x68,0x65,0x6e,0x20, - 0x64,0x6f,0x75,0x62,0x6c,0x65,0x2d,0x63,0x6c,0x69,0x63,0x6b,0x69,0x6e,0x67,0x20, - 0x61,0x20,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0x2e,0x20,0x49,0x66,0x20,0x74, - 0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x64,0x2c, - 0x20,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x72,0x69,0x67,0x68,0x74,0x2d,0x63, - 0x6c,0x69,0x63,0x6b,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x6d,0x65,0x6e, - 0x75,0x20,0x74,0x6f,0x20,0x73,0x74,0x6f,0x70,0x20,0x6d,0x75,0x73,0x69,0x63,0x2e, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x10,0x4,0x1f,0x4,0x3e,0x4,0x34, - 0x4,0x42,0x4,0x35,0x4,0x3c,0x4,0x30,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x9,0x53,0x75,0x62,0x74,0x68,0x65,0x6d,0x65,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x20,0x4,0x17,0x4,0x30,0x4,0x34,0x4,0x35,0x4, - 0x40,0x4,0x36,0x4,0x3a,0x4,0x30,0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3a,0x4, - 0x41,0x4,0x42,0x4,0x30,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xf,0x54,0x65,0x78,0x74,0x20,0x53,0x74,0x61,0x79,0x20,0x54,0x69,0x6d,0x65,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x20,0x4,0x21,0x4,0x3a,0x4,0x3e, - 0x4,0x40,0x4,0x3e,0x4,0x41,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32,0x4,0x4b, - 0x4,0x32,0x4,0x3e,0x4,0x34,0x4,0x30,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xb,0x54,0x65,0x78,0x74,0x20,0x63,0x72,0x61,0x77,0x6c,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x76,0x4,0x1c,0x4,0x30,0x4,0x3a,0x4, - 0x41,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4,0x3e,0x4, - 0x35,0x0,0x20,0x4,0x3a,0x4,0x3e,0x4,0x3b,0x4,0x38,0x4,0x47,0x4,0x35,0x4, - 0x41,0x4,0x42,0x4,0x32,0x4,0x3e,0x0,0x20,0x4,0x41,0x4,0x42,0x4,0x40,0x4, - 0x3e,0x4,0x3a,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x3e,0x4,0x31,0x4,0x49,0x4, - 0x35,0x4,0x3d,0x4,0x38,0x4,0x39,0x0,0x2c,0x0,0x20,0x4,0x41,0x4,0x3e,0x4, - 0x45,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x4f,0x4,0x35,0x4,0x3c,0x4,0x4b,0x4, - 0x45,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x38,0x4,0x33,0x4,0x40,0x4,0x3e,0x4, - 0x32,0x4,0x3e,0x4,0x3c,0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x35,0x0, - 0x2e,0x0,0x20,0x0,0xa,0x4,0x1f,0x4,0x40,0x4,0x38,0x0,0x20,0x4,0x3f,0x4, - 0x40,0x4,0x35,0x4,0x32,0x4,0x4b,0x4,0x48,0x4,0x35,0x4,0x3d,0x4,0x38,0x4, - 0x38,0x0,0x20,0x4,0x3b,0x4,0x38,0x4,0x3c,0x4,0x38,0x4,0x42,0x4,0x30,0x0, - 0x20,0x4,0x41,0x4,0x42,0x4,0x30,0x4,0x40,0x4,0x4b,0x4,0x35,0x0,0x20,0x4, - 0x41,0x4,0x42,0x4,0x40,0x4,0x3e,0x4,0x3a,0x4,0x38,0x0,0x20,0x4,0x31,0x4, - 0x43,0x4,0x34,0x4,0x43,0x4,0x42,0x0,0x20,0x4,0x43,0x4,0x34,0x4,0x30,0x4, - 0x3b,0x4,0x4f,0x4,0x42,0x4,0x4c,0x4,0x41,0x4,0x4f,0x0,0x2e,0x0,0xa,0x4, - 0x1f,0x4,0x3e,0x4,0x41,0x4,0x42,0x4,0x30,0x4,0x32,0x4,0x4c,0x4,0x42,0x4, - 0x35,0x0,0x20,0x0,0x30,0x0,0x20,0x4,0x38,0x4,0x3b,0x4,0x38,0x0,0x20,0x4, - 0x3e,0x4,0x42,0x4,0x40,0x4,0x38,0x4,0x46,0x4,0x30,0x4,0x42,0x4,0x35,0x4, - 0x3b,0x4,0x4c,0x4,0x3d,0x4,0x3e,0x4,0x35,0x0,0x20,0x4,0x37,0x4,0x3d,0x4, - 0x30,0x4,0x47,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x2c,0x0,0x20,0x4, - 0x47,0x4,0x42,0x4,0x3e,0x4,0x31,0x4,0x4b,0x0,0x20,0x4,0x41,0x4,0x3d,0x4, - 0x4f,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3e,0x4,0x33,0x4,0x40,0x4,0x30,0x4, - 0x3d,0x4,0x38,0x4,0x47,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x85,0x54,0x68,0x65,0x20,0x61,0x6d,0x6f, - 0x75,0x6e,0x74,0x20,0x6f,0x66,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x6c, - 0x69,0x6e,0x65,0x73,0x20,0x74,0x68,0x65,0x20,0x49,0x43,0x20,0x63,0x68,0x61,0x74, - 0x6c,0x6f,0x67,0x20,0x77,0x69,0x6c,0x6c,0x20,0x6b,0x65,0x65,0x70,0x20,0x62,0x65, - 0x66,0x6f,0x72,0x65,0x20,0x64,0x65,0x6c,0x65,0x74,0x69,0x6e,0x67,0x20,0x6f,0x6c, - 0x64,0x65,0x72,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x6c,0x69,0x6e,0x65, - 0x73,0x2e,0x20,0x41,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x6f,0x66,0x20,0x30,0x20, - 0x6f,0x72,0x20,0x62,0x65,0x6c,0x6f,0x77,0x20,0x63,0x6f,0x75,0x6e,0x74,0x73,0x20, - 0x61,0x73,0x20,0x27,0x69,0x6e,0x66,0x69,0x6e,0x69,0x74,0x65,0x27,0x2e,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc4,0x4,0x28,0x4,0x38,0x4,0x40,0x4,0x38, - 0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x38,0x4,0x3d,0x4,0x42,0x4,0x35,0x4,0x40, - 0x4,0x32,0x4,0x30,0x4,0x3b,0x4,0x30,0x0,0x20,0x0,0x28,0x4,0x32,0x0,0x20, - 0x4,0x3f,0x4,0x38,0x4,0x3a,0x4,0x41,0x4,0x35,0x4,0x3b,0x4,0x4f,0x4,0x45, - 0x0,0x29,0x0,0x20,0x4,0x3c,0x4,0x35,0x4,0x36,0x4,0x34,0x4,0x43,0x0,0x20, - 0x4,0x41,0x4,0x3e,0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x35,0x4,0x3d,0x4,0x38, - 0x4,0x4f,0x4,0x3c,0x4,0x38,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x38,0x4,0x41, - 0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x38,0x4,0x38,0x0,0x20,0x4,0x38,0x4,0x33, - 0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4,0x33,0x4,0x3e,0x0,0x20,0x4,0x47, - 0x4,0x30,0x4,0x42,0x4,0x30,0x0,0x2e,0x0,0xa,0x4,0x17,0x4,0x3d,0x4,0x30, - 0x4,0x47,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x3f,0x4,0x3e, - 0x0,0x20,0x4,0x43,0x4,0x3c,0x4,0x3e,0x4,0x3b,0x4,0x47,0x4,0x30,0x4,0x3d, - 0x4,0x38,0x4,0x4e,0x0,0x3a,0x0,0x20,0x0,0x30,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x44,0x54,0x68,0x65,0x20,0x64,0x69,0x73,0x74,0x61,0x6e, - 0x63,0x65,0x20,0x69,0x6e,0x20,0x70,0x69,0x78,0x65,0x6c,0x73,0x20,0x62,0x65,0x74, - 0x77,0x65,0x65,0x6e,0x20,0x65,0x61,0x63,0x68,0x20,0x65,0x6e,0x74,0x72,0x79,0x20, - 0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x49,0x43,0x20,0x6c,0x6f,0x67,0x2e,0x20,0x44, - 0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x20,0x30,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0xa,0x4,0x22,0x4,0x35,0x4,0x3c,0x4,0x30,0x0,0x3a,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x54,0x68,0x65,0x6d,0x65,0x3a,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x58,0x4,0x21,0x4,0x35,0x4,0x40,0x4,0x32, - 0x4,0x35,0x4,0x40,0x0,0x20,0x4,0x3d,0x4,0x35,0x0,0x20,0x4,0x3f,0x4,0x3e, - 0x4,0x34,0x4,0x34,0x4,0x35,0x4,0x40,0x4,0x36,0x4,0x38,0x4,0x32,0x4,0x30, - 0x4,0x35,0x4,0x42,0x0,0x20,0x4,0x3e,0x4,0x31,0x4,0x4a,0x4,0x4f,0x4,0x32, - 0x4,0x3b,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x37,0x4,0x30, - 0x4,0x41,0x4,0x35,0x4,0x34,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x39,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x29,0x54,0x68,0x69,0x73,0x20,0x73, - 0x65,0x72,0x76,0x65,0x72,0x20,0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x73, - 0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6c,0x65,0x72, - 0x74,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x52,0x4,0x21,0x4, - 0x35,0x4,0x40,0x4,0x32,0x4,0x35,0x4,0x40,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4, - 0x34,0x4,0x34,0x4,0x35,0x4,0x40,0x4,0x36,0x4,0x38,0x4,0x32,0x4,0x30,0x4, - 0x35,0x4,0x42,0x0,0x20,0x4,0x3e,0x4,0x31,0x4,0x4a,0x4,0x4f,0x4,0x32,0x4, - 0x3b,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x37,0x4,0x30,0x4, - 0x41,0x4,0x35,0x4,0x34,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x39,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x21,0x54,0x68,0x69,0x73,0x20,0x73,0x65, - 0x72,0x76,0x65,0x72,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x73,0x20,0x63,0x61, - 0x73,0x65,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x64,0x4,0x1e,0x4,0x42,0x4,0x3e,0x4,0x31,0x4,0x40,0x4,0x30, - 0x4,0x36,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x34,0x4,0x38,0x4,0x37, - 0x4,0x30,0x4,0x39,0x4,0x3d,0x4,0x4b,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x34, - 0x4,0x3b,0x4,0x3e,0x4,0x36,0x4,0x35,0x4,0x3a,0x0,0x2c,0x0,0x20,0x4,0x37, - 0x4,0x30,0x4,0x34,0x4,0x30,0x4,0x3d,0x4,0x3d,0x4,0x4b,0x4,0x35,0x0,0x20, - 0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36, - 0x4,0x30,0x4,0x3c,0x4,0x38,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x4d,0x54,0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x6f,0x6e,0x20,0x74, - 0x6f,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65, - 0x72,0x73,0x20,0x74,0x6f,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x74,0x68,0x65, - 0x69,0x72,0x20,0x6f,0x77,0x6e,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x63,0x68, - 0x61,0x74,0x20,0x62,0x6f,0x78,0x20,0x64,0x65,0x73,0x69,0x67,0x6e,0x73,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x28,0x4,0x20,0x4,0x30,0x4,0x37,0x4, - 0x40,0x4,0x35,0x4,0x48,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3f,0x4, - 0x35,0x4,0x40,0x4,0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x4, - 0x3c,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x34,0x4,0x30,0x4,0x32,0x4,0x30,0x4, - 0x42,0x4,0x4c,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x31,0x4,0x41,0x4,0x42,0x4, - 0x32,0x4,0x35,0x4,0x3d,0x4,0x3d,0x4,0x4b,0x4,0x35,0x0,0x20,0x4,0x41,0x4, - 0x42,0x4,0x38,0x4,0x3a,0x4,0x35,0x4,0x40,0x4,0x4b,0x0,0xa,0x0,0x28,0x4, - 0x43,0x4,0x3d,0x4,0x38,0x4,0x3a,0x4,0x30,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4, - 0x4b,0x4,0x35,0x0,0x20,0x4,0x38,0x4,0x37,0x4,0x3e,0x4,0x31,0x4,0x40,0x4, - 0x30,0x4,0x36,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x2c,0x0,0x20,0x4, - 0x3e,0x4,0x42,0x4,0x3e,0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x36,0x4,0x30,0x4, - 0x4e,0x4,0x49,0x4,0x38,0x4,0x35,0x4,0x41,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4, - 0x3e,0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x45,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4, - 0x34,0x4,0x3b,0x4,0x3e,0x4,0x36,0x4,0x3a,0x4,0x38,0x0,0x3b,0x0,0xa,0x4, - 0x3a,0x4,0x30,0x4,0x3a,0x0,0x20,0x4,0x30,0x4,0x32,0x4,0x30,0x4,0x42,0x4, - 0x30,0x4,0x40,0x4,0x3a,0x4,0x38,0x0,0x20,0x4,0x38,0x4,0x3b,0x4,0x38,0x0, - 0x20,0x4,0x3f,0x4,0x3e,0x4,0x3b,0x4,0x4c,0x4,0x37,0x4,0x3e,0x4,0x32,0x4, - 0x30,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x4c,0x4,0x41,0x4,0x3a,0x4,0x38,0x4, - 0x35,0x0,0x20,0x4,0x38,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x30,0x0,0x29,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x88,0x54,0x75,0x72,0x6e,0x20, - 0x74,0x68,0x69,0x73,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x61,0x6c,0x6c,0x6f,0x77, - 0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x20,0x74,0x6f,0x20,0x64, - 0x65,0x66,0x69,0x6e,0x65,0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x6f,0x77,0x6e,0x20, - 0x73,0x74,0x69,0x63,0x6b,0x65,0x72,0x73,0x20,0x28,0x75,0x6e,0x69,0x71,0x75,0x65, - 0x20,0x69,0x6d,0x61,0x67,0x65,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x73,0x68,0x6f, - 0x77,0x20,0x75,0x70,0x20,0x6f,0x76,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x63,0x68, - 0x61,0x74,0x62,0x6f,0x78,0x20,0x2d,0x20,0x6c,0x69,0x6b,0x65,0x20,0x61,0x76,0x61, - 0x74,0x61,0x72,0x73,0x20,0x6f,0x72,0x20,0x73,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65, - 0x73,0x29,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x80,0x4,0x1d,0x4, - 0x35,0x0,0x20,0x4,0x41,0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x41,0x4,0x4b,0x4, - 0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x41,0x4, - 0x42,0x4,0x40,0x4,0x3e,0x4,0x39,0x4,0x3a,0x4,0x38,0x0,0x20,0x4,0x3f,0x4, - 0x40,0x4,0x35,0x4,0x34,0x0,0x2e,0x0,0x20,0x4,0x30,0x4,0x3d,0x4,0x38,0x4, - 0x3c,0x4,0x30,0x4,0x46,0x4,0x38,0x4,0x38,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4, - 0x41,0x4,0x3b,0x4,0x35,0x0,0x20,0x4,0x35,0x4,0x51,0x0,0x20,0x4,0x32,0x4, - 0x3e,0x4,0x41,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x38,0x4,0x37,0x4,0x32,0x4, - 0x35,0x4,0x34,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x54,0x54,0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73, - 0x20,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x20,0x70, - 0x72,0x65,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x63,0x68,0x65,0x63, - 0x6b,0x62,0x6f,0x78,0x20,0x66,0x72,0x6f,0x6d,0x20,0x63,0x6c,0x65,0x61,0x72,0x69, - 0x6e,0x67,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67, - 0x20,0x74,0x68,0x65,0x20,0x65,0x6d,0x6f,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x88,0x4,0x1d,0x4,0x35,0x0,0x20,0x4,0x41,0x4,0x31,0x4, - 0x40,0x4,0x30,0x4,0x41,0x4,0x4b,0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x0, - 0x20,0x4,0x32,0x4,0x4b,0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x3d,0x4, - 0x4b,0x4,0x35,0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x41,0x4,0x42,0x4,0x40,0x4, - 0x3e,0x4,0x39,0x4,0x3a,0x4,0x38,0x0,0x20,0x4,0x4d,0x4,0x44,0x4,0x44,0x4, - 0x35,0x4,0x3a,0x4,0x42,0x4,0x30,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x41,0x4, - 0x3b,0x4,0x35,0x0,0x20,0x4,0x35,0x4,0x33,0x4,0x3e,0x0,0x20,0x4,0x32,0x4, - 0x3e,0x4,0x41,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x38,0x4,0x37,0x4,0x32,0x4, - 0x35,0x4,0x34,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x57,0x54,0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73, - 0x20,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x20,0x74, - 0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20,0x64,0x72,0x6f,0x70,0x64, - 0x6f,0x77,0x6e,0x20,0x66,0x72,0x6f,0x6d,0x20,0x63,0x6c,0x65,0x61,0x72,0x69,0x6e, - 0x67,0x20,0x74,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x20,0x61,0x66,0x74, - 0x65,0x72,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x69,0x74,0x2e,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x84,0x4,0x1d,0x4,0x35,0x0,0x20,0x4,0x41, - 0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x41,0x4,0x4b,0x4,0x32,0x4,0x30,0x4,0x42, - 0x4,0x4c,0x0,0x20,0x4,0x32,0x4,0x4b,0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x3d, - 0x4,0x3d,0x4,0x4b,0x4,0x35,0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x41,0x4,0x42, - 0x4,0x40,0x4,0x3e,0x4,0x39,0x4,0x3a,0x4,0x38,0x0,0x20,0x4,0x37,0x4,0x32, - 0x4,0x43,0x4,0x3a,0x4,0x30,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x41,0x4,0x3b, - 0x4,0x35,0x0,0x20,0x4,0x35,0x4,0x33,0x4,0x3e,0x0,0x20,0x4,0x32,0x4,0x3e, - 0x4,0x41,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x38,0x4,0x37,0x4,0x32,0x4,0x35, - 0x4,0x34,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x54,0x54,0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73,0x20, - 0x6f,0x6e,0x20,0x74,0x6f,0x20,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x20,0x74,0x68, - 0x65,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x64,0x72,0x6f,0x70,0x64,0x6f,0x77,0x6e, - 0x20,0x66,0x72,0x6f,0x6d,0x20,0x63,0x6c,0x65,0x61,0x72,0x69,0x6e,0x67,0x20,0x74, - 0x68,0x65,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x70, - 0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x69,0x74,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x52,0x4,0x1e,0x4,0x42,0x4,0x3e,0x4,0x31,0x4,0x40,0x4,0x30, - 0x4,0x36,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x46,0x4,0x32,0x4,0x35, - 0x4,0x42,0x4,0x30,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x38,0x4,0x41,0x4,0x42, - 0x4,0x3e,0x4,0x40,0x4,0x38,0x4,0x38,0x0,0x20,0x4,0x38,0x4,0x33,0x4,0x40, - 0x4,0x3e,0x4,0x32,0x4,0x3e,0x4,0x33,0x4,0x3e,0x0,0x20,0x4,0x47,0x4,0x30, - 0x4,0x42,0x4,0x30,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2f, - 0x55,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x6d,0x61,0x72,0x6b,0x75,0x70,0x20,0x63, - 0x6f,0x6c,0x6f,0x72,0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72, - 0x76,0x65,0x72,0x20,0x49,0x43,0x20,0x63,0x68,0x61,0x74,0x6c,0x6f,0x67,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0xc,0x4,0x1f,0x4,0x40,0x4,0x3e,0x4, - 0x34,0x4,0x3e,0x4,0x3b,0x4,0x36,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4, - 0x32,0x4,0x3e,0x4,0x41,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x38,0x4,0x37,0x4, - 0x32,0x4,0x35,0x4,0x34,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4, - 0x30,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x46,0x4,0x38,0x4,0x38,0x0, - 0x20,0x4,0x41,0x0,0x20,0x4,0x42,0x4,0x3e,0x4,0x33,0x4,0x3e,0x0,0x20,0x4, - 0x3c,0x4,0x35,0x4,0x41,0x4,0x42,0x4,0x30,0x0,0x2c,0x0,0x20,0x4,0x33,0x4, - 0x34,0x4,0x35,0x0,0x20,0x4,0x3e,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x3e,0x4, - 0x41,0x4,0x42,0x4,0x30,0x4,0x3d,0x4,0x3e,0x4,0x32,0x4,0x38,0x4,0x3b,0x4, - 0x30,0x4,0x41,0x4,0x4c,0x0,0x2e,0x0,0xa,0x4,0x1e,0x4,0x42,0x4,0x3a,0x4, - 0x3b,0x4,0x4e,0x4,0x47,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4, - 0x4d,0x4,0x42,0x4,0x3e,0x4,0x39,0x0,0x20,0x4,0x3e,0x4,0x3f,0x4,0x46,0x4, - 0x38,0x4,0x38,0x0,0x20,0x4,0x3c,0x4,0x3e,0x4,0x36,0x4,0x35,0x4,0x42,0x0, - 0x20,0x4,0x3f,0x4,0x3e,0x4,0x3c,0x4,0x3e,0x4,0x47,0x4,0x4c,0x0,0x20,0x4, - 0x43,0x4,0x41,0x4,0x3a,0x4,0x3e,0x4,0x40,0x4,0x38,0x4,0x42,0x4,0x4c,0x0, - 0x20,0x4,0x40,0x4,0x30,0x4,0x31,0x4,0x3e,0x4,0x42,0x4,0x43,0x0,0x20,0x4, - 0x3f,0x4,0x40,0x4,0x38,0x4,0x3b,0x4,0x3e,0x4,0x36,0x4,0x35,0x4,0x3d,0x4, - 0x38,0x4,0x4f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x63,0x57, - 0x68,0x65,0x74,0x68,0x65,0x72,0x20,0x6f,0x72,0x20,0x6e,0x6f,0x74,0x20,0x74,0x6f, - 0x20,0x72,0x65,0x73,0x75,0x6d,0x65,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20, - 0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x20,0x66,0x72,0x6f,0x6d,0x20, - 0x77,0x68,0x65,0x72,0x65,0x20,0x74,0x68,0x65,0x79,0x20,0x6c,0x65,0x66,0x74,0x20, - 0x6f,0x66,0x66,0x2e,0x20,0x54,0x75,0x72,0x6e,0x69,0x6e,0x67,0x20,0x6f,0x66,0x66, - 0x20,0x6d,0x69,0x67,0x68,0x74,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x20,0x6c,0x61, - 0x67,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x48,0x4,0x1f,0x4,0x41, - 0x4,0x35,0x4,0x32,0x4,0x34,0x4,0x3e,0x4,0x3d,0x4,0x38,0x4,0x3c,0x0,0x20, - 0x4,0x3f,0x4,0x3e,0x0,0x20,0x4,0x43,0x4,0x3c,0x4,0x3e,0x4,0x3b,0x4,0x47, - 0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x4e,0x0,0x20,0x4,0x34,0x4,0x3b,0x4,0x4f, - 0x0,0x20,0x4,0x1e,0x4,0x1e,0x4,0x21,0x0,0x2d,0x4,0x47,0x4,0x30,0x4,0x42, - 0x4,0x30,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4d,0x59,0x6f, - 0x75,0x72,0x20,0x4f,0x4f,0x43,0x20,0x6e,0x61,0x6d,0x65,0x20,0x77,0x69,0x6c,0x6c, - 0x20,0x62,0x65,0x20,0x61,0x75,0x74,0x6f,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x6c, - 0x79,0x20,0x73,0x65,0x74,0x20,0x74,0x6f,0x20,0x74,0x68,0x69,0x73,0x20,0x76,0x61, - 0x6c,0x75,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x79,0x6f,0x75,0x20,0x6a,0x6f,0x69, - 0x6e,0x20,0x61,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x36,0x4,0x23,0x4,0x3b,0x4,0x38,0x4,0x3a,0x4,0x30,0x0, - 0x20,0x0,0x22,0x0,0x25,0x0,0x31,0x0,0x22,0x0,0x20,0x4,0x31,0x4,0x4b,0x4, - 0x3b,0x4,0x30,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x3d,0x4, - 0x35,0x4,0x41,0x4,0x35,0x4,0x3d,0x4,0x30,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x1a,0x22,0x25,0x31,0x22,0x20,0x68,0x61,0x73,0x20,0x62,0x65, - 0x65,0x6e,0x20,0x74,0x72,0x61,0x6e,0x73,0x66,0x65,0x72,0x72,0x65,0x64,0x2e,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x2e,0x0,0x25,0x0,0x20,0x4,0x41,0x4,0x34,0x4,0x32,0x4,0x38,0x4, - 0x33,0x4,0x30,0x0,0x20,0x4,0x3f,0x4,0x3e,0x0,0x20,0x4,0x33,0x4,0x3e,0x4, - 0x40,0x4,0x38,0x4,0x37,0x4,0x3e,0x4,0x3d,0x4,0x42,0x4,0x30,0x4,0x3b,0x4, - 0x38,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x25,0x20,0x78,0x20,0x6f, - 0x66,0x66,0x73,0x65,0x74,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2a,0x0,0x25,0x0,0x20,0x4,0x41,0x4, - 0x34,0x4,0x32,0x4,0x38,0x4,0x33,0x4,0x30,0x0,0x20,0x4,0x3f,0x4,0x3e,0x0, - 0x20,0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x42,0x4,0x38,0x4,0x3a,0x4,0x30,0x4, - 0x3b,0x4,0x38,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x25,0x20,0x79, - 0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x6,0x4,0x1b,0x0,0x2f,0x4, - 0x1c,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x41,0x2f,0x4d,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x2e,0x4,0x14,0x4,0x3e,0x4,0x31,0x4,0x30,0x4,0x32,0x4,0x38,0x4,0x42, - 0x4,0x4c,0x0,0x20,0x4,0x3d,0x4,0x3e,0x4,0x32,0x4,0x43,0x4,0x4e,0x0,0x20, - 0x4,0x43,0x4,0x3b,0x4,0x38,0x4,0x3a,0x4,0x43,0x0,0x2e,0x0,0x2e,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x41,0x64,0x64,0x20,0x6e,0x65, - 0x77,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x2e,0x2e,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x5c,0x4,0x14,0x4,0x3e,0x4,0x31,0x4,0x30,0x4,0x32,0x4,0x3b,0x4,0x4f,0x4, - 0x42,0x4,0x4c,0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3a,0x4,0x41,0x4,0x42,0x0, - 0x20,0x4,0x3a,0x0,0x20,0x4,0x41,0x4,0x32,0x4,0x3e,0x4,0x35,0x4,0x3c,0x4, - 0x43,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x41,0x4,0x3b,0x4,0x35,0x4,0x34,0x4, - 0x3d,0x4,0x35,0x4,0x3c,0x4,0x43,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x3e,0x4, - 0x31,0x4,0x49,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4e,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x32,0x41,0x64,0x64,0x20,0x74,0x65,0x78,0x74,0x20, - 0x74,0x6f,0x20,0x79,0x6f,0x75,0x72,0x20,0x6c,0x61,0x73,0x74,0x20,0x73,0x70,0x6f, - 0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x77,0x68,0x65,0x6e, - 0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x12,0x4,0x14,0x4, - 0x3e,0x4,0x3f,0x4,0x3e,0x4,0x3b,0x4,0x3d,0x4,0x4f,0x4,0x42,0x4,0x4c,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x41,0x64,0x64,0x69,0x74,0x69,0x76, - 0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x4a,0x4,0x18,0x4,0x37,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4, - 0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3f,0x4,0x30,0x4,0x40,0x4,0x30,0x4, - 0x3c,0x4,0x35,0x4,0x42,0x4,0x40,0x4,0x4b,0x0,0x20,0x4,0x40,0x4,0x30,0x4, - 0x31,0x4,0x3e,0x4,0x42,0x4,0x4b,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x38,0x4, - 0x3b,0x4,0x3e,0x4,0x36,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x33,0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20, - 0x79,0x6f,0x75,0x20,0x74,0x6f,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x76,0x61, - 0x72,0x69,0x6f,0x75,0x73,0x20,0x61,0x73,0x70,0x65,0x63,0x74,0x73,0x20,0x6f,0x66, - 0x20,0x74,0x68,0x65,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x2e,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc2, - 0x4,0x1e,0x4,0x42,0x4,0x3a,0x4,0x40,0x4,0x4b,0x4,0x42,0x4,0x4c,0x0,0x20, - 0x4,0x3e,0x4,0x3a,0x4,0x3d,0x4,0x3e,0x0,0x2c,0x0,0x20,0x4,0x3a,0x4,0x3e, - 0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x3e,0x4,0x35,0x0,0x20,0x4,0x3f,0x4,0x3e, - 0x4,0x37,0x4,0x32,0x4,0x3e,0x4,0x3b,0x4,0x38,0x4,0x42,0x0,0x20,0x4,0x32, - 0x4,0x30,0x4,0x3c,0x0,0x20,0x4,0x3e,0x4,0x31,0x4,0x4a,0x4,0x4f,0x4,0x32, - 0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3e,0x0,0x20,0x4,0x34,0x4,0x35, - 0x4,0x3b,0x4,0x35,0x0,0xa,0x0,0x28,0x4,0x34,0x4,0x3b,0x4,0x4f,0x0,0x20, - 0x4,0x4d,0x4,0x42,0x4,0x3e,0x4,0x33,0x4,0x3e,0x0,0x20,0x4,0x3d,0x4,0x43, - 0x4,0x36,0x4,0x3d,0x4,0x3e,0x0,0x20,0x4,0x31,0x4,0x4b,0x4,0x42,0x4,0x4c, - 0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x38,0x4,0x37,0x4,0x32,0x4,0x3e, - 0x4,0x34,0x4,0x38,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x35,0x4,0x3c,0x0,0x20, - 0x4,0x34,0x4,0x35,0x4,0x3b,0x0,0x20,0x0,0x28,0x4,0x1f,0x4,0x14,0x0,0x29, - 0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x61,0x41,0x6e,0x20,0x69, - 0x6e,0x74,0x65,0x72,0x66,0x61,0x63,0x65,0x20,0x74,0x6f,0x20,0x68,0x65,0x6c,0x70, - 0x20,0x79,0x6f,0x75,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x20,0x61,0x20, - 0x63,0x61,0x73,0x65,0x20,0x28,0x79,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x74, - 0x6f,0x20,0x62,0x65,0x20,0x61,0x20,0x43,0x4d,0x20,0x66,0x69,0x72,0x73,0x74,0x20, - 0x74,0x6f,0x20,0x62,0x65,0x20,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x61,0x6e, - 0x6e,0x6f,0x75,0x6e,0x63,0x65,0x20,0x63,0x61,0x73,0x65,0x73,0x29,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x1a,0x4,0x1d,0x4,0x30,0x4,0x37,0x4,0x30,0x4,0x34,0x0,0x20,0x4,0x32,0x0, - 0x20,0x4,0x3b,0x4,0x3e,0x4,0x31,0x4,0x31,0x4,0x38,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xd,0x42,0x61,0x63,0x6b,0x20,0x74,0x6f,0x20,0x4c,0x6f,0x62, - 0x62,0x79,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x94,0x4,0x17,0x4,0x30,0x4,0x39,0x4,0x42,0x4,0x38, - 0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x3a,0x4,0x30,0x4,0x47,0x4,0x35,0x4,0x41, - 0x4,0x42,0x4,0x32,0x4,0x35,0x0,0x20,0x4,0x37,0x4,0x40,0x4,0x38,0x4,0x42, - 0x4,0x35,0x4,0x3b,0x4,0x4f,0x0,0x2e,0x0,0x20,0x4,0x12,0x4,0x4b,0x0,0x20, - 0x4,0x3d,0x4,0x35,0x0,0x20,0x4,0x41,0x4,0x3c,0x4,0x3e,0x4,0x36,0x4,0x35, - 0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x32,0x4,0x37,0x4,0x30,0x4,0x38,0x4,0x3c, - 0x4,0x3e,0x4,0x34,0x4,0x35,0x4,0x39,0x4,0x41,0x4,0x42,0x4,0x32,0x4,0x3e, - 0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x41,0x0,0x20,0x4,0x38, - 0x4,0x33,0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x4b,0x4,0x3c,0x0,0x20,0x4,0x47, - 0x4,0x30,0x4,0x42,0x4,0x3e,0x4,0x3c,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x4f,0x42,0x65,0x63,0x6f,0x6d,0x65,0x20,0x61,0x20,0x73,0x70,0x65, - 0x63,0x74,0x61,0x74,0x6f,0x72,0x2e,0x20,0x59,0x6f,0x75,0x20,0x77,0x6f,0x6e,0x27, - 0x74,0x20,0x62,0x65,0x20,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x69,0x6e,0x74, - 0x65,0x72,0x61,0x63,0x74,0x20,0x77,0x69,0x74,0x68,0x20,0x74,0x68,0x65,0x20,0x69, - 0x6e,0x2d,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x73,0x63,0x72,0x65, - 0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0xe,0x4,0x21,0x4,0x38,0x4,0x33,0x4,0x3d,0x4, - 0x30,0x4,0x3b,0x4,0x4b,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x42, - 0x6c,0x69,0x70,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x58,0x4,0x1f,0x4,0x35,0x4,0x40,0x4,0x35, - 0x4,0x39,0x4,0x42,0x4,0x38,0x0,0x20,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x4d, - 0x4,0x3a,0x4,0x40,0x4,0x30,0x4,0x3d,0x0,0x20,0x4,0x32,0x4,0x4b,0x4,0x31, - 0x4,0x3e,0x4,0x40,0x4,0x30,0x0,0x20,0x4,0x38,0x0,0x20,0x4,0x41,0x4,0x3c, - 0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3f,0x4,0x35, - 0x4,0x40,0x4,0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3f,0x42,0x72,0x69,0x6e,0x67,0x20, - 0x75,0x70,0x20,0x74,0x68,0x65,0x20,0x43,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72, - 0x20,0x53,0x65,0x6c,0x65,0x63,0x74,0x20,0x53,0x63,0x72,0x65,0x65,0x6e,0x20,0x61, - 0x6e,0x64,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x63, - 0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x40,0x4,0x1e,0x4, - 0x42,0x4,0x3a,0x4,0x40,0x4,0x4b,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3e,0x4, - 0x3a,0x4,0x3d,0x4,0x3e,0x0,0x20,0x4,0x43,0x4,0x3f,0x4,0x40,0x4,0x30,0x4, - 0x32,0x4,0x3b,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x43,0x4, - 0x3b,0x4,0x38,0x4,0x3a,0x4,0x30,0x4,0x3c,0x4,0x38,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x1d,0x42,0x72,0x69,0x6e,0x67,0x20,0x75,0x70,0x20, - 0x74,0x68,0x65,0x20,0x45,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x73,0x63,0x72, - 0x65,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x4,0x1a,0x4,0x1b,0x4,0x18,0x4,0x15, - 0x4,0x1d,0x4,0x22,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x4c, - 0x49,0x45,0x4e,0x54,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1a,0x4,0x21,0x4,0x12,0x4,0x1e,0x4,0x2e, - 0x0,0x20,0x4,0x20,0x4,0x15,0x4,0x1f,0x4,0x1b,0x4,0x18,0x4,0x1a,0x4,0x23, - 0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x43,0x55,0x53,0x54, - 0x4f,0x4d,0x20,0x4f,0x42,0x4a,0x45,0x43,0x54,0x49,0x4f,0x4e,0x21,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x20,0x4,0x12,0x4,0x4b,0x4,0x37,0x4,0x3e,0x4,0x32,0x0,0x20,0x4,0x3c,0x4, - 0x3e,0x4,0x34,0x4,0x35,0x4,0x40,0x4,0x30,0x4,0x42,0x4,0x3e,0x4,0x40,0x4, - 0x30,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x43,0x61,0x6c,0x6c,0x20, - 0x4d,0x6f,0x64,0x65,0x72,0x61,0x74,0x6f,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x24,0x4,0x1f,0x4, - 0x3e,0x4,0x37,0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3c,0x4, - 0x3e,0x4,0x34,0x4,0x35,0x4,0x40,0x4,0x30,0x4,0x42,0x4,0x3e,0x4,0x40,0x4, - 0x30,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x43,0x61,0x6c,0x6c,0x20, - 0x6d,0x6f,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x1e,0x4,0x10,0x4,0x32,0x4,0x42,0x4,0x3e,0x4, - 0x40,0x0,0x20,0x4,0x34,0x4,0x35,0x4,0x3b,0x4,0x30,0x0,0x3a,0x0,0x20,0x0, - 0x25,0x0,0x31,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x43, - 0x61,0x73,0x65,0x20,0x6d,0x61,0x64,0x65,0x20,0x62,0x79,0x20,0x25,0x31,0x2e,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x12,0x4,0x17,0x4,0x30,0x4,0x41,0x4,0x35,0x4,0x34,0x4,0x30,0x4, - 0x3d,0x4,0x38,0x4,0x4f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43, - 0x61,0x73,0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x22,0x4,0x21,0x4,0x3c,0x4,0x35,0x4, - 0x3d,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4, - 0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x10,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x63,0x68,0x61,0x72, - 0x61,0x63,0x74,0x65,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x86,0x4,0x18,0x4,0x37,0x4,0x3c,0x4, - 0x35,0x4,0x3d,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x41,0x4,0x34,0x4, - 0x32,0x4,0x38,0x4,0x33,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x41,0x4, - 0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x0,0x20,0x4,0x3f,0x4,0x3e,0x0, - 0x20,0x4,0x33,0x4,0x3e,0x4,0x40,0x4,0x38,0x4,0x37,0x4,0x3e,0x4,0x3d,0x4, - 0x42,0x4,0x30,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x3e,0x4,0x42,0x4,0x3d,0x4, - 0x3e,0x4,0x41,0x4,0x38,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4, - 0x3e,0x0,0x20,0x4,0x46,0x4,0x35,0x4,0x3d,0x4,0x42,0x4,0x40,0x4,0x30,0x0, - 0x20,0x4,0x4d,0x4,0x3a,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x30,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x63,0x43,0x68,0x61,0x6e,0x67,0x65,0x20, - 0x74,0x68,0x65,0x20,0x68,0x6f,0x72,0x69,0x7a,0x6f,0x6e,0x74,0x61,0x6c,0x20,0x70, - 0x65,0x72,0x63,0x65,0x6e,0x74,0x61,0x67,0x65,0x20,0x6f,0x66,0x66,0x73,0x65,0x74, - 0x20,0x6f,0x66,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74, - 0x65,0x72,0x27,0x73,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x66,0x72, - 0x6f,0x6d,0x20,0x74,0x68,0x65,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x6f,0x66, - 0x20,0x74,0x68,0x65,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x88, - 0x4,0x1f,0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x3c,0x4,0x35,0x4,0x41,0x4,0x42, - 0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32,0x4,0x30,0x4,0x48,0x4,0x35, - 0x4,0x33,0x4,0x3e,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x41,0x4,0x3e, - 0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x0,0x20,0x4,0x32,0x4,0x3f,0x4,0x35, - 0x4,0x40,0x4,0x51,0x4,0x34,0x0,0x20,0x4,0x38,0x4,0x3b,0x4,0x38,0x0,0x20, - 0x4,0x3d,0x4,0x30,0x4,0x37,0x4,0x30,0x4,0x34,0x0,0x20,0x4,0x3e,0x4,0x42, - 0x4,0x3d,0x4,0x3e,0x4,0x41,0x4,0x38,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x4c, - 0x4,0x3d,0x4,0x3e,0x0,0x20,0x4,0x3f,0x4,0x30,0x4,0x40,0x4,0x42,0x4,0x3d, - 0x4,0x51,0x4,0x40,0x4,0x30,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x32,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x74,0x68,0x65,0x20,0x6f,0x72,0x64, - 0x65,0x72,0x20,0x6f,0x66,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x61,0x6e,0x63,0x65, - 0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63, - 0x74,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xe4,0x4,0x18,0x4,0x37,0x4,0x3c,0x4,0x35, - 0x4,0x3d,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x46,0x4,0x32,0x4,0x35, - 0x4,0x42,0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3a,0x4,0x41,0x4,0x42,0x4,0x30, - 0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x35,0x4,0x3d, - 0x4,0x38,0x4,0x4f,0x0,0x2e,0x0,0xa,0x4,0x12,0x4,0x4b,0x0,0x20,0x4,0x42, - 0x4,0x30,0x4,0x3a,0x4,0x36,0x4,0x35,0x0,0x20,0x4,0x3c,0x4,0x3e,0x4,0x36, - 0x4,0x35,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x32,0x4,0x4b,0x4,0x34,0x4,0x35, - 0x4,0x3b,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x41, - 0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3a,0x4,0x41,0x4,0x42, - 0x4,0x30,0x0,0x20,0x4,0x38,0x0,0x20,0x4,0x38,0x4,0x37,0x4,0x3c,0x4,0x35, - 0x4,0x3d,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x42,0x4,0x3e,0x4,0x3b, - 0x4,0x4c,0x4,0x3a,0x4,0x3e,0x0,0x20,0x4,0x35,0x4,0x51,0x0,0x20,0x4,0x46, - 0x4,0x32,0x4,0x35,0x4,0x42,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x32,0x4,0x4b, - 0x4,0x3f,0x4,0x30,0x4,0x34,0x4,0x30,0x4,0x4e,0x4,0x49,0x4,0x35,0x4,0x3c, - 0x0,0x20,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x4e,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x91,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x74,0x68,0x65, - 0x20,0x74,0x65,0x78,0x74,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x6f,0x66,0x20,0x74, - 0x68,0x65,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61,0x67, - 0x65,0x2e,0xa,0x59,0x6f,0x75,0x20,0x63,0x61,0x6e,0x20,0x61,0x6c,0x73,0x6f,0x20, - 0x73,0x65,0x6c,0x65,0x63,0x74,0x20,0x61,0x20,0x70,0x61,0x72,0x74,0x20,0x6f,0x66, - 0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x79,0x20, - 0x74,0x79,0x70,0x65,0x64,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x61,0x6e, - 0x64,0x20,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x64,0x72,0x6f,0x70,0x64,0x6f, - 0x77,0x6e,0x20,0x74,0x6f,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x69,0x74,0x73, - 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x82,0x4,0x18,0x4,0x37,0x4, - 0x3c,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x41,0x4, - 0x34,0x4,0x32,0x4,0x38,0x4,0x33,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4, - 0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x0,0x20,0x4,0x3f,0x4, - 0x3e,0x0,0x20,0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x42,0x4,0x38,0x4,0x3a,0x4, - 0x30,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x3e,0x4,0x42,0x4,0x3d,0x4,0x3e,0x4, - 0x41,0x4,0x38,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4,0x3e,0x0, - 0x20,0x4,0x46,0x4,0x35,0x4,0x3d,0x4,0x42,0x4,0x40,0x4,0x30,0x0,0x20,0x4, - 0x4d,0x4,0x3a,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x30,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x61,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x74,0x68, - 0x65,0x20,0x76,0x65,0x72,0x74,0x69,0x63,0x61,0x6c,0x20,0x70,0x65,0x72,0x63,0x65, - 0x6e,0x74,0x61,0x67,0x65,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x6f,0x66,0x20, - 0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73, - 0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x66,0x72,0x6f,0x6d,0x20,0x74, - 0x68,0x65,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x6f,0x66,0x20,0x74,0x68,0x65, - 0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x2,0x3a,0x4,0x12,0x4,0x4b, - 0x4,0x31,0x4,0x35,0x4,0x40,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x4d, - 0x4,0x44,0x4,0x44,0x4,0x35,0x4,0x3a,0x4,0x42,0x0,0x2c,0x0,0x20,0x4,0x3a, - 0x4,0x3e,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x4b,0x4,0x39,0x0,0x20,0x4,0x3d, - 0x4,0x43,0x4,0x36,0x4,0x3d,0x4,0x3e,0x0,0x20,0x4,0x32,0x4,0x3e,0x4,0x41, - 0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x38,0x4,0x37,0x4,0x32,0x4,0x35,0x4,0x41, - 0x4,0x42,0x4,0x38,0x0,0x20,0x4,0x41,0x0,0x20,0x4,0x32,0x4,0x30,0x4,0x48, - 0x4,0x38,0x4,0x3c,0x0,0x20,0x4,0x41,0x4,0x3b,0x4,0x35,0x4,0x34,0x4,0x43, - 0x4,0x4e,0x4,0x49,0x4,0x38,0x4,0x3c,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x3e, - 0x4,0x31,0x4,0x49,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x4,0x3c,0x0,0x2e, - 0x0,0xa,0x4,0x2d,0x4,0x44,0x4,0x44,0x4,0x35,0x4,0x3a,0x4,0x42,0x4,0x4b, - 0x0,0x20,0x4,0x3e,0x4,0x3f,0x4,0x40,0x4,0x35,0x4,0x34,0x4,0x35,0x4,0x3b, - 0x4,0x4f,0x4,0x4e,0x4,0x42,0x4,0x41,0x4,0x4f,0x0,0x20,0x4,0x44,0x4,0x30, - 0x4,0x39,0x4,0x3b,0x4,0x3e,0x4,0x3c,0x0,0x20,0x0,0x74,0x0,0x68,0x0,0x65, - 0x0,0x6d,0x0,0x65,0x0,0x2f,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x63, - 0x0,0x74,0x0,0x73,0x0,0x2f,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x63, - 0x0,0x74,0x0,0x73,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x2e,0x0,0x20, - 0x4,0x12,0x4,0x30,0x4,0x48,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x41, - 0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x0,0x20,0x4,0x3c,0x4,0x3e,0x4,0x36, - 0x4,0x35,0x4,0x42,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x34,0x4,0x30,0x4,0x42, - 0x4,0x4c,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x31,0x4,0x41,0x4,0x42,0x4,0x32, - 0x4,0x35,0x4,0x3d,0x4,0x3d,0x4,0x4b,0x4,0x35,0x0,0x20,0x4,0x4d,0x4,0x44, - 0x4,0x44,0x4,0x35,0x4,0x3a,0x4,0x42,0x4,0x4b,0x0,0xa,0x4,0x32,0x0,0x20, - 0x4,0x3a,0x4,0x30,0x4,0x42,0x4,0x35,0x4,0x33,0x4,0x3e,0x4,0x40,0x4,0x38, - 0x4,0x38,0x0,0x20,0x0,0x5b,0x0,0x4f,0x0,0x70,0x0,0x74,0x0,0x69,0x0,0x6f, - 0x0,0x6e,0x0,0x73,0x0,0x5d,0x0,0x20,0x4,0x44,0x4,0x30,0x4,0x39,0x4,0x3b, - 0x4,0x30,0x0,0x20,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x2e,0x0,0x69, - 0x0,0x6e,0x0,0x69,0x0,0x2c,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65, - 0x0,0x63,0x0,0x74,0x0,0x73,0x0,0x20,0x0,0x3d,0x0,0x20,0x0,0x27,0x4,0x3d, - 0x4,0x30,0x4,0x37,0x4,0x32,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x27, - 0x0,0x2c,0x0,0x20,0x4,0x47,0x4,0x42,0x4,0x3e,0x0,0x20,0x4,0x3e,0x4,0x42, - 0x4,0x41,0x4,0x4b,0x4,0x3b,0x4,0x30,0x4,0x35,0x4,0x42,0x0,0x20,0x4,0x3a, - 0x0,0x20,0x4,0x44,0x4,0x30,0x4,0x39,0x4,0x3b,0x4,0x43,0x0,0x20,0x0,0x6d, - 0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x2f,0x0,0x3c,0x4,0x3d,0x4,0x30,0x4,0x37, - 0x4,0x32,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x3e,0x0,0x2f,0x0,0x65, - 0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x73,0x0,0x2e,0x0,0x69, - 0x0,0x6e,0x0,0x69,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x1,0x13, - 0x43,0x68,0x6f,0x6f,0x73,0x65,0x20,0x61,0x6e,0x20,0x65,0x66,0x66,0x65,0x63,0x74, - 0x20,0x74,0x6f,0x20,0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72, - 0x20,0x6e,0x65,0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73, - 0x73,0x61,0x67,0x65,0x2e,0xa,0x54,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74, - 0x73,0x20,0x61,0x72,0x65,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x69,0x6e, - 0x20,0x79,0x6f,0x75,0x72,0x20,0x74,0x68,0x65,0x6d,0x65,0x2f,0x65,0x66,0x66,0x65, - 0x63,0x74,0x73,0x2f,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2e,0x69,0x6e,0x69,0x2e, - 0x20,0x59,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20, - 0x63,0x61,0x6e,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x63,0x75,0x73,0x74,0x6f, - 0x6d,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20,0x62,0x79,0xa,0x63,0x68,0x61, - 0x72,0x2e,0x69,0x6e,0x69,0x20,0x5b,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x5d,0x20, - 0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0x2c,0x20,0x65,0x66,0x66,0x65,0x63,0x74, - 0x73,0x20,0x3d,0x20,0x27,0x6d,0x69,0x73,0x63,0x6e,0x61,0x6d,0x65,0x27,0x20,0x77, - 0x68,0x65,0x72,0x65,0x20,0x69,0x74,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x73,0x20, - 0x74,0x6f,0x20,0x6d,0x69,0x73,0x63,0x2f,0x3c,0x6d,0x69,0x73,0x63,0x6e,0x61,0x6d, - 0x65,0x3e,0x2f,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2e,0x69,0x6e,0x69,0x20,0x74, - 0x6f,0x20,0x72,0x65,0x61,0x64,0x20,0x74,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63, - 0x74,0x73,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x14,0x4,0x12,0x4,0x4b,0x4,0x31,0x4,0x40,0x4, - 0x30,0x4,0x42,0x4,0x4c,0x0,0x2e,0x0,0x2e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x8,0x43,0x68,0x6f,0x6f,0x73,0x65,0x2e,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0xbc,0x4,0x17,0x4,0x30,0x4,0x3a,0x4,0x40,0x4,0x4b,0x4,0x42,0x4,0x4c,0x0, - 0x20,0x4,0x3e,0x4,0x3a,0x4,0x3d,0x4,0x3e,0x0,0x20,0x4,0x40,0x4,0x35,0x4, - 0x34,0x4,0x30,0x4,0x3a,0x4,0x42,0x4,0x38,0x4,0x40,0x4,0x3e,0x4,0x32,0x4, - 0x30,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x43,0x4,0x3b,0x4,0x38,0x4, - 0x3a,0x4,0x38,0x0,0x2e,0x0,0xa,0x4,0x15,0x4,0x41,0x4,0x3b,0x4,0x38,0x0, - 0x20,0x4,0x32,0x4,0x4b,0x0,0x20,0x4,0x3d,0x4,0x35,0x0,0x20,0x4,0x41,0x4, - 0x3e,0x4,0x45,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x3b,0x4,0x38,0x0, - 0x20,0x4,0x38,0x4,0x37,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x35,0x4,0x3d,0x4, - 0x38,0x4,0x4f,0x0,0x2c,0x0,0x20,0x4,0x42,0x4,0x3e,0x0,0x20,0x4,0x43,0x4, - 0x32,0x4,0x38,0x4,0x34,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x34,0x4, - 0x38,0x4,0x30,0x4,0x3b,0x4,0x3e,0x4,0x33,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4, - 0x35,0x0,0x20,0x4,0x3e,0x4,0x3a,0x4,0x3d,0x4,0x3e,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x60,0x43,0x6c,0x6f,0x73,0x65,0x20,0x74,0x68,0x65, - 0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x64,0x69,0x73,0x70,0x6c,0x61, - 0x79,0x2f,0x65,0x64,0x69,0x74,0x69,0x6e,0x67,0x20,0x6f,0x76,0x65,0x72,0x6c,0x61, - 0x79,0x2e,0xa,0x59,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x70, - 0x72,0x6f,0x6d,0x70,0x74,0x65,0x64,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x72,0x65, - 0x27,0x73,0x20,0x61,0x6e,0x79,0x20,0x75,0x6e,0x73,0x61,0x76,0x65,0x64,0x20,0x63, - 0x68,0x61,0x6e,0x67,0x65,0x73,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2c,0x4,0x21,0x4,0x32,0x4, - 0x35,0x4,0x40,0x4,0x3d,0x4,0x43,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32,0x4, - 0x41,0x4,0x35,0x0,0x20,0x4,0x3a,0x4,0x30,0x4,0x42,0x4,0x35,0x4,0x33,0x4, - 0x3e,0x4,0x40,0x4,0x38,0x4,0x38,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x17,0x43,0x6f,0x6c,0x6c,0x61,0x70,0x73,0x65,0x20,0x41,0x6c,0x6c,0x20,0x43,0x61, - 0x74,0x65,0x67,0x6f,0x72,0x69,0x65,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x88,0x4,0x12,0x4,0x4b, - 0x0,0x20,0x4,0x32,0x4,0x38,0x4,0x34,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20, - 0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x38,0x4,0x39,0x0,0x20,0x4,0x41,0x4,0x3f, - 0x4,0x38,0x4,0x41,0x4,0x3e,0x4,0x3a,0x0,0x20,0x4,0x43,0x4,0x3b,0x4,0x38, - 0x4,0x3a,0x0,0x2e,0x0,0x20,0x4,0x1d,0x4,0x30,0x4,0x36,0x4,0x3c,0x4,0x38, - 0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x37,0x4,0x34,0x4,0x35,0x4,0x41,0x4,0x4c, - 0x0,0x20,0x4,0x34,0x4,0x3b,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x3e, - 0x4,0x41,0x4,0x3c,0x4,0x3e,0x4,0x42,0x4,0x40,0x4,0x30,0x0,0x20,0x4,0x41, - 0x4,0x32,0x4,0x3e,0x4,0x38,0x4,0x45,0x0,0x20,0x4,0x43,0x4,0x3b,0x4,0x38, - 0x4,0x3a,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x37,0x43,0x75, - 0x72,0x72,0x65,0x6e,0x74,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x69, - 0x73,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x2e,0x20,0x43,0x6c,0x69,0x63,0x6b,0x20, - 0x74,0x6f,0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x20,0x74,0x6f,0x20,0x70,0x72,0x69, - 0x76,0x61,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x86,0x4,0x12,0x4,0x4b,0x0,0x20,0x4, - 0x32,0x4,0x38,0x4,0x34,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x41,0x4, - 0x32,0x4,0x3e,0x4,0x39,0x0,0x20,0x4,0x41,0x4,0x3f,0x4,0x38,0x4,0x41,0x4, - 0x3e,0x4,0x3a,0x0,0x20,0x4,0x43,0x4,0x3b,0x4,0x38,0x4,0x3a,0x0,0x2e,0x0, - 0x20,0x4,0x1d,0x4,0x30,0x4,0x36,0x4,0x3c,0x4,0x38,0x4,0x42,0x4,0x35,0x0, - 0x20,0x4,0x37,0x4,0x34,0x4,0x35,0x4,0x41,0x4,0x4c,0x0,0x20,0x4,0x34,0x4, - 0x3b,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x41,0x4,0x3c,0x4, - 0x3e,0x4,0x42,0x4,0x40,0x4,0x30,0x0,0x20,0x4,0x3e,0x4,0x31,0x4,0x49,0x4, - 0x38,0x4,0x45,0x0,0x20,0x4,0x43,0x4,0x3b,0x4,0x38,0x4,0x3a,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x37,0x43,0x75,0x72,0x72,0x65,0x6e,0x74, - 0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x69,0x73,0x20,0x70,0x72,0x69, - 0x76,0x61,0x74,0x65,0x2e,0x20,0x43,0x6c,0x69,0x63,0x6b,0x20,0x74,0x6f,0x20,0x73, - 0x77,0x69,0x74,0x63,0x68,0x20,0x74,0x6f,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x32,0x4,0x1f,0x4,0x3e,0x4,0x3b,0x4,0x4c,0x4,0x37,0x4,0x3e, - 0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x4c,0x4,0x41,0x4,0x3a, - 0x4,0x38,0x4,0x39,0x0,0x20,0x4,0x32,0x4,0x3e,0x4,0x37,0x4,0x33,0x4,0x3b, - 0x4,0x30,0x4,0x41,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd, - 0x43,0x75,0x73,0x74,0x6f,0x6d,0x20,0x53,0x68,0x6f,0x75,0x74,0x21,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x16,0x4,0x1e,0x4,0x48,0x4,0x42,0x4,0x40,0x4,0x30,0x4,0x44,0x4,0x3e,0x4, - 0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x18,0x44,0x65,0x63,0x72,0x65,0x61,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x68,0x65, - 0x61,0x6c,0x74,0x68,0x20,0x62,0x61,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x18,0x4,0x3f,0x4, - 0x3e,0x0,0x20,0x4,0x43,0x4,0x3c,0x4,0x3e,0x4,0x3b,0x4,0x47,0x4,0x30,0x4, - 0x3d,0x4,0x38,0x4,0x4e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x44, - 0x65,0x66,0x61,0x75,0x6c,0x74,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2a,0x4,0x23,0x4,0x3d,0x4,0x38, - 0x4,0x47,0x4,0x42,0x4,0x3e,0x4,0x36,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20, - 0x4,0x4d,0x4,0x42,0x4,0x43,0x0,0x20,0x4,0x43,0x4,0x3b,0x4,0x38,0x4,0x3a, - 0x4,0x43,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1e,0x44,0x65, - 0x73,0x74,0x72,0x6f,0x79,0x20,0x74,0x68,0x69,0x73,0x20,0x70,0x69,0x65,0x63,0x65, - 0x20,0x6f,0x66,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x66, - 0x4,0x1f,0x4,0x3e,0x4,0x3a,0x4,0x30,0x4,0x37,0x4,0x4b,0x4,0x32,0x4,0x30, - 0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x3b,0x4,0x4c,0x4,0x37, - 0x4,0x3e,0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x4c,0x4,0x41, - 0x4,0x3a,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x38,0x4,0x3c,0x4,0x35,0x4,0x3d, - 0x4,0x30,0x0,0x20,0x4,0x34,0x4,0x3b,0x4,0x4f,0x0,0x20,0x4,0x32,0x4,0x41, - 0x4,0x35,0x4,0x45,0x0,0x20,0x4,0x38,0x4,0x33,0x4,0x40,0x4,0x3e,0x4,0x3a, - 0x4,0x3e,0x4,0x32,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x38, - 0x44,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x69,0x7a, - 0x65,0x64,0x20,0x73,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73,0x20,0x66,0x6f,0x72, - 0x20,0x61,0x6c,0x6c,0x20,0x75,0x73,0x65,0x72,0x73,0x20,0x77,0x68,0x65,0x6e,0x20, - 0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x5e,0x4,0x12,0x4,0x4b, - 0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3f,0x4,0x35, - 0x4,0x40,0x4,0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x35,0x4,0x39, - 0x0,0x2c,0x0,0x20,0x4,0x3a,0x4,0x3e,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x4b, - 0x4,0x45,0x0,0x20,0x4,0x3d,0x4,0x43,0x4,0x36,0x4,0x3d,0x4,0x3e,0x0,0x20, - 0x4,0x38,0x4,0x33,0x4,0x3d,0x4,0x3e,0x4,0x40,0x4,0x38,0x4,0x40,0x4,0x3e, - 0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x37,0x44,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20, - 0x6c,0x69,0x73,0x74,0x20,0x6f,0x66,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65, - 0x72,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x73,0x20,0x79,0x6f,0x75,0x20,0x77,0x69, - 0x73,0x68,0x20,0x74,0x6f,0x20,0x6d,0x75,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x74,0x4, - 0x1f,0x4,0x3e,0x4,0x3a,0x4,0x30,0x4,0x37,0x4,0x30,0x4,0x42,0x4,0x4c,0x0, - 0x20,0x4,0x41,0x4,0x3f,0x4,0x38,0x4,0x41,0x4,0x3e,0x4,0x3a,0x0,0x20,0x4, - 0x3f,0x4,0x35,0x4,0x40,0x4,0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4, - 0x35,0x4,0x39,0x0,0x2c,0x0,0x20,0x4,0x41,0x0,0x20,0x4,0x3a,0x4,0x3e,0x4, - 0x42,0x4,0x3e,0x4,0x40,0x4,0x4b,0x4,0x3c,0x4,0x38,0x0,0x20,0x4,0x3c,0x4, - 0x3e,0x4,0x36,0x4,0x3d,0x4,0x3e,0x0,0x20,0x4,0x32,0x4,0x41,0x4,0x42,0x4, - 0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x40,0x4,0x4f,0x4,0x34,0x4,0x3e,0x4, - 0x3c,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2c,0x44,0x69,0x73, - 0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20,0x6c,0x69,0x73,0x74,0x20,0x6f,0x66, - 0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x20,0x74,0x6f,0x20,0x70, - 0x61,0x69,0x72,0x20,0x77,0x69,0x74,0x68,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xfc,0x4,0x17,0x4, - 0x30,0x4,0x33,0x4,0x3b,0x4,0x43,0x4,0x48,0x4,0x38,0x4,0x42,0x4,0x4c,0x0, - 0x20,0x4,0x32,0x4,0x4b,0x4,0x37,0x4,0x3e,0x4,0x32,0x4,0x4b,0x0,0x20,0x4, - 0x3c,0x4,0x3e,0x4,0x34,0x4,0x35,0x4,0x40,0x4,0x30,0x4,0x42,0x4,0x3e,0x4, - 0x40,0x4,0x30,0x0,0x3a,0x0,0x20,0x4,0x32,0x4,0x4b,0x0,0x20,0x4,0x3d,0x4, - 0x35,0x0,0x20,0x4,0x31,0x4,0x43,0x4,0x34,0x4,0x35,0x4,0x42,0x4,0x35,0x0, - 0x20,0x4,0x3f,0x4,0x3e,0x4,0x3b,0x4,0x43,0x4,0x47,0x4,0x30,0x4,0x42,0x4, - 0x4c,0x0,0x20,0x4,0x37,0x4,0x32,0x4,0x43,0x4,0x3a,0x4,0x3e,0x4,0x32,0x4, - 0x4b,0x4,0x35,0x0,0x20,0x4,0x3e,0x4,0x3f,0x4,0x3e,0x4,0x32,0x4,0x35,0x4, - 0x49,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x2c,0x0,0xa,0x4,0x30,0x0, - 0x20,0x4,0x3e,0x4,0x3a,0x4,0x3d,0x4,0x3e,0x0,0x20,0x4,0x3f,0x4,0x40,0x4, - 0x38,0x4,0x3b,0x4,0x3e,0x4,0x36,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0, - 0x20,0x4,0x3d,0x4,0x35,0x0,0x20,0x4,0x31,0x4,0x43,0x4,0x34,0x4,0x35,0x4, - 0x42,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x38,0x4,0x32,0x4,0x3b,0x4,0x35,0x4, - 0x3a,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x3a,0x0,0x20,0x4,0x41,0x4, - 0x35,0x4,0x31,0x4,0x35,0x0,0x20,0x4,0x32,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4, - 0x30,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x71,0x44,0x6f,0x20,0x6e,0x6f,0x74,0x20,0x6c,0x69,0x73,0x74,0x65,0x6e, - 0x20,0x74,0x6f,0x20,0x6d,0x6f,0x64,0x20,0x63,0x61,0x6c,0x6c,0x73,0x20,0x77,0x68, - 0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x70,0x72,0x65,0x76, - 0x65,0x6e,0x74,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x6d,0x20,0x66,0x72,0x6f,0x6d, - 0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x73,0x6f,0x75,0x6e,0x64,0x73,0x20, - 0x6f,0x72,0x20,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x67,0x20,0x61,0x74,0x74,0x65, - 0x6e,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x77,0x69,0x6e, - 0x64,0x6f,0x77,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x4a,0x4,0x25,0x4,0x3e,0x4,0x42,0x4,0x38, - 0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x45,0x4,0x40,0x4,0x30, - 0x4,0x3d,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32,0x4,0x3d,0x4,0x35, - 0x4,0x41,0x4,0x51,0x4,0x3d,0x4,0x3d,0x4,0x4b,0x4,0x35,0x0,0x20,0x4,0x38, - 0x4,0x37,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f, - 0x0,0x3f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x21,0x44,0x6f,0x20,0x79, - 0x6f,0x75,0x20,0x77,0x61,0x6e,0x74,0x20,0x74,0x6f,0x20,0x73,0x61,0x76,0x65,0x20, - 0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x3f,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x4a,0x4,0x25,0x4,0x3e,0x4,0x42,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4, - 0x41,0x4,0x3e,0x4,0x45,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x42,0x4, - 0x4c,0x0,0x20,0x4,0x32,0x4,0x3d,0x4,0x35,0x4,0x41,0x4,0x51,0x4,0x3d,0x4, - 0x3d,0x4,0x4b,0x4,0x35,0x0,0x20,0x4,0x38,0x4,0x37,0x4,0x3c,0x4,0x35,0x4, - 0x3d,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x3f,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x21,0x44,0x6f,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x73,0x68, - 0x20,0x74,0x6f,0x20,0x6b,0x65,0x65,0x70,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68, - 0x61,0x6e,0x67,0x65,0x73,0x3f,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x4,0x1e,0x4,0x48,0x4,0x38, - 0x4,0x31,0x4,0x3a,0x4,0x30,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5, - 0x45,0x72,0x72,0x6f,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x28,0x4,0x23,0x4,0x3b,0x4,0x38,0x4, - 0x3a,0x4,0x30,0x0,0x20,0x4,0x31,0x4,0x4b,0x4,0x3b,0x4,0x30,0x0,0x20,0x4, - 0x38,0x4,0x37,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x35,0x4,0x3d,0x4,0x30,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1b,0x45,0x76,0x69,0x64,0x65, - 0x6e,0x63,0x65,0x20,0x68,0x61,0x73,0x20,0x62,0x65,0x65,0x6e,0x20,0x6d,0x6f,0x64, - 0x69,0x66,0x69,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x30,0x4,0x20,0x4,0x30,0x4,0x37, - 0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x3d,0x4,0x43,0x4,0x42,0x4,0x4c,0x0,0x20, - 0x4,0x32,0x4,0x41,0x4,0x35,0x0,0x20,0x4,0x3a,0x4,0x30,0x4,0x42,0x4,0x35, - 0x4,0x33,0x4,0x3e,0x4,0x40,0x4,0x38,0x4,0x38,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x15,0x45,0x78,0x70,0x61,0x6e,0x64,0x20,0x41,0x6c,0x6c,0x20,0x43, - 0x61,0x74,0x65,0x67,0x6f,0x72,0x69,0x65,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2c,0x4,0x1f,0x4, - 0x3e,0x4,0x41,0x4,0x42,0x4,0x35,0x4,0x3f,0x4,0x35,0x4,0x3d,0x4,0x3d,0x4, - 0x3e,0x4,0x35,0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x40,0x4,0x30,0x4,0x41,0x4, - 0x42,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x35,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x7,0x46,0x61,0x64,0x65,0x20,0x49,0x6e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x56,0x4,0x1f, - 0x4,0x3e,0x4,0x41,0x4,0x42,0x4,0x35,0x4,0x3f,0x4,0x35,0x4,0x3d,0x4,0x3d, - 0x4,0x3e,0x4,0x35,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x42,0x4,0x43,0x4,0x45, - 0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x35, - 0x4,0x34,0x4,0x4b,0x4,0x34,0x4,0x43,0x4,0x49,0x4,0x35,0x4,0x39,0x0,0x20, - 0x4,0x3a,0x4,0x3e,0x4,0x3c,0x4,0x3f,0x4,0x3e,0x4,0x37,0x4,0x38,0x4,0x46, - 0x4,0x38,0x4,0x38,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x46,0x61, - 0x64,0x65,0x20,0x4f,0x75,0x74,0x20,0x50,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x10,0x4,0x1e,0x4,0x42,0x4,0x40,0x4,0x30,0x4,0x37,0x4,0x38,0x4, - 0x42,0x4,0x4c,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x46,0x6c,0x69, - 0x70,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x36,0x4,0x13,0x4,0x35,0x4,0x3d,0x4,0x35,0x4,0x40,0x4, - 0x30,0x4,0x46,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4, - 0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x35,0x4,0x39,0x0,0x3a,0x0, - 0xa,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x17,0x47,0x65,0x6e,0x65,0x72,0x61,0x74,0x69,0x6e,0x67,0x20, - 0x63,0x68,0x61,0x72,0x73,0x3a,0xa,0x25,0x31,0x2f,0x25,0x32,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1a, - 0x4,0x1d,0x4,0x35,0x0,0x20,0x4,0x31,0x4,0x35,0x4,0x41,0x4,0x3f,0x4,0x3e, - 0x4,0x3a,0x4,0x3e,0x4,0x38,0x4,0x42,0x4,0x4c,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x5,0x47,0x75,0x61,0x72,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x10,0x4,0x12,0x4, - 0x38,0x4,0x3d,0x4,0x3e,0x4,0x32,0x4,0x35,0x4,0x3d,0x0,0x21,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x47,0x75,0x69,0x6c,0x74,0x79,0x21,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0xa,0x4,0x21,0x4,0x22,0x4,0x1e,0x4,0x1f,0x0,0x21,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x8,0x48,0x4f,0x4c,0x44,0x20,0x49,0x54,0x21,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0xa,0x4,0x21,0x4,0x42,0x4,0x3e,0x4,0x3f,0x0,0x21,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x8,0x48,0x6f,0x6c,0x64,0x20,0x49,0x74,0x21,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0xd0,0x4,0x15,0x4,0x41,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x32,0x4,0x3a, - 0x4,0x3b,0x4,0x4e,0x4,0x47,0x4,0x35,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x3f, - 0x4,0x40,0x4,0x35,0x4,0x34,0x4,0x32,0x4,0x30,0x4,0x40,0x4,0x38,0x4,0x42, - 0x4,0x35,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4,0x30,0x4,0x4f,0x0,0x20,0x4,0x30, - 0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x46,0x4,0x38,0x4,0x4f,0x0,0x3a, - 0x0,0xa,0x4,0x32,0x4,0x4b,0x4,0x32,0x4,0x3e,0x4,0x34,0x4,0x38,0x4,0x42, - 0x4,0x4c,0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3a,0x4,0x41,0x4,0x42,0x0,0x2c, - 0x0,0x20,0x4,0x3d,0x4,0x35,0x0,0x20,0x4,0x34,0x4,0x3e,0x4,0x36,0x4,0x38, - 0x4,0x34,0x4,0x30,0x4,0x4f,0x4,0x41,0x4,0x4c,0x0,0x20,0x4,0x3e,0x4,0x3a, - 0x4,0x3e,0x4,0x3d,0x4,0x47,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20, - 0x4,0x3f,0x4,0x40,0x4,0x35,0x4,0x34,0x4,0x32,0x4,0x30,0x4,0x40,0x4,0x38, - 0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4,0x3e,0x4,0x39,0x0,0x20, - 0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x46,0x4,0x38,0x4,0x38, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5e,0x49,0x66,0x20,0x70, - 0x72,0x65,0x61,0x6e,0x69,0x6d,0x20,0x69,0x73,0x20,0x63,0x68,0x65,0x63,0x6b,0x65, - 0x64,0x2c,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20,0x69, - 0x6e,0x70,0x75,0x74,0x20,0x74,0x65,0x78,0x74,0x20,0x69,0x6d,0x6d,0x65,0x64,0x69, - 0x61,0x74,0x65,0x6c,0x79,0x20,0x61,0x73,0x20,0x74,0x68,0x65,0x20,0x61,0x6e,0x69, - 0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x70,0x6c,0x61,0x79,0x73,0x20,0x63,0x6f,0x6e, - 0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x79,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x26,0x4,0x18, - 0x4,0x37,0x4,0x3e,0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x36,0x4,0x35,0x4,0x3d, - 0x4,0x38,0x4,0x4f,0x0,0x20,0x0,0x28,0x0,0x2a,0x0,0x2e,0x0,0x70,0x0,0x6e, - 0x0,0x67,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x49,0x6d, - 0x61,0x67,0x65,0x73,0x20,0x28,0x2a,0x2e,0x70,0x6e,0x67,0x29,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1c, - 0x4,0x13,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4,0x40,0x4,0x38,0x4,0x42,0x4,0x4c, - 0x0,0x20,0x4,0x41,0x4,0x40,0x4,0x30,0x4,0x37,0x4,0x43,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x9,0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x10,0x4,0x1f,0x4,0x3e,0x4,0x3e,0x4,0x49,0x4,0x40,0x4,0x38,0x4, - 0x42,0x4,0x4c,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x18,0x49,0x6e,0x63, - 0x72,0x65,0x61,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x68,0x65,0x61,0x6c,0x74,0x68, - 0x20,0x62,0x61,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x22,0x4,0x24,0x4,0x30,0x4,0x39,0x4, - 0x3b,0x4,0x4b,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x20,0x0,0x28,0x0, - 0x2a,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x29,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x11,0x49,0x6e,0x69,0x20,0x46,0x69,0x6c,0x65,0x73,0x20,0x28, - 0x2a,0x2e,0x69,0x6e,0x69,0x29,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x7e,0x4,0x1f,0x4,0x3e,0x4,0x3b, - 0x4,0x43,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x43,0x4,0x32, - 0x4,0x35,0x4,0x34,0x4,0x3e,0x4,0x3c,0x4,0x3b,0x4,0x35,0x4,0x3d,0x4,0x38, - 0x4,0x4f,0x0,0x20,0x4,0x3e,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x41,0x4,0x35, - 0x4,0x34,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x4f,0x4,0x45,0x0,0x2e,0x0,0xa, - 0x0,0x28,0x4,0x21,0x4,0x3c,0x0,0x2e,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x34, - 0x4,0x40,0x4,0x3e,0x4,0x31,0x4,0x3d,0x4,0x35,0x4,0x35,0x0,0x20,0x4,0x32, - 0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x41,0x4,0x42,0x4,0x40,0x4,0x3e,0x4,0x39, - 0x4,0x3a,0x4,0x30,0x4,0x45,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x5a,0x4c,0x65,0x74,0x73,0x20,0x79,0x6f,0x75,0x20,0x72,0x65,0x63,0x65,0x69, - 0x76,0x65,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x77, - 0x68,0x65,0x6e,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x2e,0xa,0x28,0x59,0x6f, - 0x75,0x20,0x63,0x61,0x6e,0x20,0x73,0x65,0x74,0x20,0x79,0x6f,0x75,0x72,0x20,0x70, - 0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x20,0x69,0x6e,0x20,0x74,0x68, - 0x65,0x20,0x53,0x65,0x74,0x74,0x69,0x6e,0x67,0x73,0x21,0x29,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x3c, - 0x4,0x17,0x4,0x30,0x4,0x33,0x4,0x40,0x4,0x43,0x4,0x37,0x4,0x38,0x4,0x42, - 0x4,0x4c,0x0,0x20,0x4,0x43,0x4,0x3b,0x4,0x38,0x4,0x3a,0x4,0x43,0x0,0x20, - 0x4,0x38,0x4,0x37,0x0,0x20,0x4,0x44,0x4,0x30,0x4,0x39,0x4,0x3b,0x4,0x30, - 0x0,0x20,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x20,0x4c,0x6f,0x61,0x64,0x20,0x65,0x76,0x69,0x64,0x65, - 0x6e,0x63,0x65,0x20,0x66,0x72,0x6f,0x6d,0x20,0x61,0x6e,0x20,0x2e,0x69,0x6e,0x69, - 0x20,0x66,0x69,0x6c,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x4,0x1c,0x4,0x30,0x4,0x41, - 0x4,0x42,0x4,0x35,0x4,0x40,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6, - 0x4d,0x61,0x73,0x74,0x65,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x12,0x4,0x21,0x4,0x3e,0x4,0x3e, - 0x4,0x31,0x4,0x49,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x7,0x4d,0x65,0x73,0x73,0x61,0x67,0x65,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x56,0x4,0x1e,0x4,0x42,0x4,0x40,0x4,0x30,0x4,0x37,0x4,0x38,0x4,0x42,0x4, - 0x4c,0x0,0x20,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x46,0x4, - 0x38,0x4,0x38,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x41,0x4,0x3e,0x4, - 0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x0,0x20,0x4,0x3f,0x4,0x3e,0x0,0x20,0x4, - 0x33,0x4,0x3e,0x4,0x40,0x4,0x38,0x4,0x37,0x4,0x3e,0x4,0x3d,0x4,0x42,0x4, - 0x30,0x4,0x3b,0x4,0x38,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x2c,0x4d,0x69,0x72,0x72,0x6f,0x72,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61, - 0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73,0x20,0x65,0x6d,0x6f,0x74,0x65,0x73,0x20, - 0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0xc,0x4,0x1c,0x4,0x43,0x4,0x37,0x4,0x4b,0x4,0x3a,0x4,0x30,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x4d,0x75,0x73,0x69,0x63,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xe, - 0x4,0x1d,0x4,0x38,0x4,0x3a,0x4,0x3d,0x4,0x35,0x4,0x39,0x4,0x3c,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x4e,0x61,0x6d,0x65,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x52, - 0x4,0x1d,0x4,0x30,0x4,0x37,0x4,0x32,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x35, - 0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0xa,0x4,0x18,0x4,0x37,0x4,0x3e, - 0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x36,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35, - 0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x32,0x0,0xa,0x4,0x1e,0x4,0x3f,0x4,0x38, - 0x4,0x41,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x3a,0x0,0xa,0x0,0x25, - 0x0,0x33,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x22,0x4e,0x61,0x6d,0x65, - 0x3a,0x20,0x25,0x31,0xa,0x49,0x6d,0x61,0x67,0x65,0x3a,0x20,0x25,0x32,0xa,0x44, - 0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x3a,0xa,0x25,0x33,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x54,0x4,0x1e,0x4,0x42,0x4,0x3a,0x4,0x40,0x4,0x3e,0x4,0x39,0x4,0x42, - 0x4,0x35,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x20,0x4,0x34,0x4,0x3b,0x4,0x4f, - 0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x3b,0x4,0x43,0x4,0x47,0x4,0x35,0x4,0x3d, - 0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x3c,0x4,0x30,0x4,0x42,0x4,0x35,0x4,0x40, - 0x4,0x38,0x4,0x30,0x4,0x3b,0x4,0x3e,0x4,0x32,0x0,0x20,0x4,0x34,0x4,0x35, - 0x4,0x3b,0x4,0x30,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1e, - 0x4e,0x61,0x76,0x69,0x67,0x61,0x74,0x65,0x20,0x74,0x6f,0x20,0x25,0x31,0x20,0x66, - 0x6f,0x72,0x20,0x74,0x68,0x65,0x20,0x43,0x4d,0x20,0x64,0x6f,0x63,0x2e,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x6,0x4,0x1d,0x4,0x35,0x4,0x42,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x4,0x4e,0x6f,0x6e,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x14,0x4,0x1f,0x4,0x20,0x4,0x1e, - 0x4,0x22,0x4,0x15,0x4,0x21,0x4,0x22,0x4,0x23,0x4,0x2e,0x0,0x21,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x4f,0x42,0x4a,0x45,0x43,0x54,0x49,0x4f, - 0x4e,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x14,0x4,0x1f,0x4,0x40,0x4,0x3e,0x4,0x42,0x4,0x35, - 0x4,0x41,0x4,0x42,0x4,0x43,0x4,0x4e,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xa,0x4f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x21,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x46,0x4,0x12,0x4,0x30,0x4,0x3c,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x3f, - 0x4,0x40,0x4,0x35,0x4,0x42,0x4,0x38,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x3e, - 0x4,0x42,0x4,0x3f,0x4,0x40,0x4,0x30,0x4,0x32,0x4,0x3b,0x4,0x4f,0x4,0x42, - 0x4,0x4c,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x35, - 0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x13,0x4f,0x6f,0x70,0x73,0x2c,0x20,0x79,0x6f,0x75,0x27,0x72,0x65,0x20,0x6d, - 0x75,0x74,0x65,0x64,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2a,0x4,0x17,0x4,0x30,0x4,0x33,0x4, - 0x40,0x4,0x43,0x4,0x37,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x41,0x4, - 0x3f,0x4,0x38,0x4,0x41,0x4,0x3e,0x4,0x3a,0x0,0x20,0x4,0x43,0x4,0x3b,0x4, - 0x38,0x4,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x4f,0x70,0x65, - 0x6e,0x20,0x49,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x4, - 0x1f,0x4,0x30,0x4,0x40,0x4,0x3e,0x4,0x3b,0x4,0x4c,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x8,0x50,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x1e,0x4,0x17,0x4,0x30,0x4,0x49,0x4,0x38,0x4,0x49,0x4,0x51,0x4,0x3d,0x0, - 0x20,0x4,0x3f,0x4,0x30,0x4,0x40,0x4,0x3e,0x4,0x3b,0x4,0x35,0x4,0x3c,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x50,0x61,0x73,0x73,0x77,0x6f,0x72, - 0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x3a,0x4,0x12,0x4,0x3a,0x4,0x3b,0x4,0x4e,0x4, - 0x47,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x41,0x4,0x3b,0x4,0x43,0x4, - 0x47,0x4,0x30,0x4,0x39,0x4,0x3d,0x4,0x43,0x4,0x4e,0x0,0x20,0x4,0x3a,0x4, - 0x3e,0x4,0x3c,0x4,0x3f,0x4,0x3e,0x4,0x37,0x4,0x38,0x4,0x46,0x4,0x38,0x4, - 0x4e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x50,0x6c,0x61,0x79,0x20, - 0x52,0x61,0x6e,0x64,0x6f,0x6d,0x20,0x53,0x6f,0x6e,0x67,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x98,0x4, - 0x1f,0x4,0x3e,0x4,0x3a,0x4,0x30,0x4,0x37,0x4,0x30,0x4,0x42,0x4,0x4c,0x0, - 0x20,0x4,0x40,0x4,0x30,0x4,0x37,0x4,0x3e,0x4,0x32,0x4,0x43,0x4,0x4e,0x0, - 0x20,0x4,0x3f,0x4,0x40,0x4,0x35,0x4,0x34,0x4,0x32,0x4,0x30,0x4,0x40,0x4, - 0x38,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4,0x43,0x4,0x4e,0x0, - 0x20,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x46,0x4,0x38,0x4, - 0x4e,0x0,0x2c,0x0,0xa,0x4,0x41,0x4,0x3e,0x4,0x3e,0x4,0x42,0x4,0x32,0x4, - 0x35,0x4,0x42,0x4,0x41,0x4,0x42,0x4,0x32,0x4,0x43,0x4,0x4e,0x4,0x49,0x4, - 0x43,0x4,0x4e,0x0,0x20,0x4,0x32,0x4,0x4b,0x4,0x31,0x4,0x40,0x4,0x30,0x4, - 0x3d,0x4,0x3d,0x4,0x3e,0x4,0x39,0x0,0x20,0x4,0x4d,0x4,0x3c,0x4,0x3e,0x4, - 0x46,0x4,0x38,0x4,0x38,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x42,0x50,0x6c,0x61,0x79,0x20,0x61,0x20,0x73,0x69,0x6e,0x67,0x6c,0x65,0x2d,0x73, - 0x68,0x6f,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x61,0x73, - 0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x62,0x79,0x20,0x74,0x68,0x65,0x20, - 0x65,0x6d,0x6f,0x74,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b, - 0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0xa2,0x4,0x1f,0x4,0x3e,0x4,0x3a,0x4,0x30,0x4, - 0x37,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32,0x4,0x41,0x4,0x3f,0x4, - 0x4b,0x4,0x48,0x4,0x3a,0x4,0x43,0x0,0x20,0x4,0x38,0x0,0x20,0x4,0x32,0x4, - 0x3e,0x4,0x41,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x38,0x4,0x37,0x4,0x32,0x4, - 0x35,0x4,0x41,0x4,0x42,0x4,0x38,0x0,0x20,0x4,0x37,0x4,0x32,0x4,0x43,0x4, - 0x3a,0x0,0x20,0x4,0x3e,0x4,0x37,0x4,0x30,0x4,0x40,0x4,0x35,0x4,0x3d,0x4, - 0x38,0x4,0x4f,0x0,0x20,0x4,0x32,0x4,0x3e,0x0,0x20,0x4,0x32,0x4,0x40,0x4, - 0x35,0x4,0x3c,0x4,0x4f,0x0,0x20,0x4,0x32,0x4,0x4b,0x4,0x32,0x4,0x3e,0x4, - 0x34,0x4,0x30,0x0,0x20,0x4,0x41,0x4,0x3b,0x4,0x35,0x4,0x34,0x4,0x43,0x4, - 0x4e,0x4,0x49,0x4,0x35,0x4,0x39,0x0,0x20,0x4,0x40,0x4,0x35,0x4,0x3f,0x4, - 0x3b,0x4,0x38,0x4,0x3a,0x4,0x38,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x5d,0x50,0x6c,0x61,0x79,0x20,0x72,0x65,0x61,0x6c,0x69,0x7a,0x61,0x74, - 0x69,0x6f,0x6e,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x61,0x6e,0x64,0x20,0x61,0x6e, - 0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x76, - 0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x6e, - 0x65,0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61, - 0x67,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x1c,0x4,0x1f,0x4,0x40,0x4,0x35,0x4,0x34,0x0,0x2e,0x0,0x20, - 0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x46,0x4,0x38,0x4,0x4f, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x50,0x72,0x65,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x1c,0x4,0x1f,0x4,0x40,0x4,0x35,0x4,0x34,0x0,0x2e,0x0,0x20,0x4,0x30,0x4, - 0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x46,0x4,0x38,0x4,0x38,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x50,0x72,0x65,0x61,0x6e,0x69,0x6d,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x96,0x4,0x1f,0x4,0x3e,0x4,0x3a,0x4,0x30,0x4,0x37,0x4,0x30,0x4,0x42, - 0x4,0x4c,0x0,0x20,0x4,0x4d,0x4,0x42,0x4,0x43,0x0,0x20,0x4,0x43,0x4,0x3b, - 0x4,0x38,0x4,0x3a,0x4,0x43,0x0,0x20,0x4,0x32,0x4,0x41,0x4,0x35,0x4,0x3c, - 0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x38,0x4,0x41,0x4,0x43,0x4,0x42,0x4,0x41, - 0x4,0x42,0x4,0x32,0x4,0x43,0x4,0x4e,0x4,0x49,0x4,0x38,0x4,0x3c,0x0,0x20, - 0x4,0x32,0x4,0x3c,0x4,0x35,0x4,0x41,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x41, - 0x0,0x20,0x4,0x32,0x4,0x30,0x4,0x48,0x4,0x38,0x4,0x3c,0x0,0x20,0x4,0x41, - 0x4,0x3b,0x4,0x35,0x4,0x34,0x4,0x43,0x4,0x4e,0x4,0x49,0x4,0x38,0x4,0x3c, - 0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x35,0x4,0x3d, - 0x4,0x38,0x4,0x35,0x4,0x3c,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x46,0x50,0x72,0x65,0x73,0x65,0x6e,0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x70, - 0x69,0x65,0x63,0x65,0x20,0x6f,0x66,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65, - 0x20,0x74,0x6f,0x20,0x65,0x76,0x65,0x72,0x79,0x6f,0x6e,0x65,0x20,0x6f,0x6e,0x20, - 0x79,0x6f,0x75,0x72,0x20,0x6e,0x65,0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e, - 0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x10,0x4,0x1f,0x4,0x40, - 0x4,0x38,0x4,0x47,0x4,0x38,0x4,0x3d,0x4,0x30,0x0,0x3a,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x7,0x52,0x65,0x61,0x73,0x6f,0x6e,0x3a,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x6c,0x4,0x1f,0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x37,0x4,0x30,0x4,0x33,0x4, - 0x40,0x4,0x43,0x4,0x37,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x42,0x4, - 0x35,0x4,0x3c,0x4,0x43,0x0,0x20,0x4,0x38,0x0,0x20,0x4,0x3e,0x4,0x31,0x4, - 0x3d,0x4,0x3e,0x4,0x32,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32,0x4, - 0x41,0x4,0x35,0x0,0x20,0x4,0x4d,0x4,0x3b,0x4,0x35,0x4,0x3c,0x4,0x35,0x4, - 0x3d,0x4,0x42,0x4,0x4b,0x0,0x20,0x4,0x38,0x4,0x3d,0x4,0x42,0x4,0x35,0x4, - 0x40,0x4,0x44,0x4,0x35,0x4,0x39,0x4,0x41,0x4,0x30,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x3d,0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x20,0x74, - 0x68,0x65,0x20,0x74,0x68,0x65,0x6d,0x65,0x20,0x61,0x6e,0x64,0x20,0x75,0x70,0x64, - 0x61,0x74,0x65,0x20,0x61,0x6c,0x6c,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x75, - 0x69,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x74,0x6f,0x20,0x6d,0x61, - 0x74,0x63,0x68,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x24,0x4,0x1f,0x4,0x35,0x4,0x40,0x4,0x35, - 0x4,0x37,0x4,0x30,0x4,0x33,0x4,0x40,0x4,0x43,0x4,0x37,0x4,0x38,0x4,0x42, - 0x4,0x4c,0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3c,0x4,0x43,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0xc,0x52,0x65,0x6c,0x6f,0x61,0x64,0x20,0x74,0x68,0x65, - 0x6d,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0xc2,0x4,0x23,0x4,0x34,0x4,0x30,0x4,0x3b,0x4,0x38, - 0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32,0x4,0x4b,0x4,0x31,0x4,0x40,0x4,0x30, - 0x4,0x3d,0x4,0x3d,0x4,0x3e,0x4,0x33,0x4,0x3e,0x0,0x20,0x4,0x34,0x4,0x3b, - 0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x34,0x4,0x3c,0x4,0x35,0x4,0x3d, - 0x4,0x4b,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x20,0x4,0x3f,0x4,0x35, - 0x4,0x40,0x4,0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x0,0x20, - 0x4,0x38,0x0,0x20,0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x3d,0x4,0x43,0x4,0x42, - 0x4,0x4c,0x4,0x41,0x4,0x4f,0x0,0x20,0x4,0x3a,0x0,0x20,0x4,0x3f,0x4,0x30, - 0x4,0x3f,0x4,0x3a,0x4,0x35,0x0,0x20,0x4,0x38,0x4,0x37,0x4,0x3d,0x4,0x30, - 0x4,0x47,0x4,0x30,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4,0x3e,0x0,0x20,0x4,0x32, - 0x4,0x4b,0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x3d,0x4,0x3e,0x4,0x33, - 0x4,0x3e,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x41,0x4,0x3e,0x4,0x3d, - 0x4,0x30,0x4,0x36,0x4,0x30,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x60,0x52,0x65,0x6d,0x6f,0x76,0x65,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72, - 0x72,0x65,0x6e,0x74,0x6c,0x79,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x20, - 0x69,0x6e,0x69,0x73,0x77,0x61,0x70,0x20,0x66,0x72,0x6f,0x6d,0x20,0x74,0x68,0x65, - 0x20,0x6c,0x69,0x73,0x74,0x20,0x61,0x6e,0x64,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x6f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c, - 0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x66,0x6f,0x6c,0x64,0x65, - 0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x44,0x4,0x23,0x4,0x34,0x4,0x30,0x4,0x3b,0x4,0x38, - 0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32,0x4,0x4b,0x4,0x31,0x4,0x40,0x4,0x30, - 0x4,0x3d,0x4,0x3d,0x4,0x4b,0x4,0x39,0x0,0x20,0x4,0x37,0x4,0x32,0x4,0x43, - 0x4,0x3a,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4,0x39,0x0,0x20,0x4,0x4d,0x4,0x44, - 0x4,0x44,0x4,0x35,0x4,0x3a,0x4,0x42,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x2b,0x52,0x65,0x6d,0x6f,0x76,0x65,0x20,0x74,0x68,0x65,0x20,0x63, - 0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x79,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x65, - 0x64,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x2e,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x4a,0x4,0x1f,0x4,0x40,0x4,0x38,0x4,0x32,0x4,0x3b,0x4,0x35,0x4, - 0x47,0x4,0x4c,0x0,0x20,0x4,0x32,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4, - 0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x3c,0x4,0x3e,0x4,0x34,0x4,0x35,0x4, - 0x40,0x4,0x30,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x30,0x0,0x20,0x4,0x41,0x4, - 0x35,0x4,0x40,0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x30,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x38,0x52,0x65,0x71,0x75,0x65,0x73,0x74,0x20,0x74, - 0x68,0x65,0x20,0x61,0x74,0x74,0x65,0x6e,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x66,0x20, - 0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x73,0x65,0x72,0x76, - 0x65,0x72,0x27,0x73,0x20,0x6d,0x6f,0x64,0x65,0x72,0x61,0x74,0x6f,0x72,0x2e,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x3c,0x4,0x21,0x4,0x31,0x4,0x40,0x4,0x3e,0x4,0x41,0x4,0x38,0x4, - 0x42,0x4,0x4c,0x0,0x20,0x4,0x44,0x4,0x3e,0x4,0x3d,0x0,0x20,0x4,0x32,0x4, - 0x30,0x4,0x48,0x4,0x35,0x4,0x33,0x4,0x3e,0x0,0x20,0x4,0x3f,0x4,0x35,0x4, - 0x40,0x4,0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3f,0x52,0x65,0x73,0x65,0x74,0x20,0x79, - 0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73,0x20, - 0x73,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x72,0x79,0x20,0x62,0x61, - 0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x20,0x74,0x6f,0x20,0x69,0x74,0x73,0x20, - 0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x38,0x4,0x12,0x4,0x35, - 0x4,0x40,0x4,0x3d,0x4,0x43,0x4,0x42,0x4,0x4c,0x4,0x41,0x4,0x4f,0x0,0x20, - 0x4,0x3a,0x0,0x20,0x4,0x41,0x4,0x3f,0x4,0x38,0x4,0x41,0x4,0x3a,0x4,0x43, - 0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4,0x32,0x4,0x35,0x4,0x40,0x4,0x3e, - 0x4,0x32,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1f,0x52,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x62,0x61,0x63,0x6b,0x20,0x74,0x6f,0x20,0x74,0x68,0x65, - 0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x6c,0x69,0x73,0x74,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x2a,0x4,0x21,0x4,0x3e,0x4,0x45,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x38,0x4, - 0x42,0x4,0x4c,0x0,0x20,0x4,0x41,0x4,0x3f,0x4,0x38,0x4,0x41,0x4,0x3e,0x4, - 0x3a,0x0,0x20,0x4,0x43,0x4,0x3b,0x4,0x38,0x4,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xe,0x53,0x61,0x76,0x65,0x20,0x49,0x6e,0x76,0x65,0x6e,0x74, - 0x6f,0x72,0x79,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x8a,0x4,0x21,0x4,0x3e,0x4,0x45,0x4,0x40,0x4, - 0x30,0x4,0x3d,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32,0x4,0x41,0x4, - 0x35,0x0,0x20,0x4,0x38,0x4,0x37,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x35,0x4, - 0x3d,0x4,0x38,0x4,0x4f,0x0,0x2c,0x0,0x20,0x4,0x32,0x4,0x3d,0x4,0x35,0x4, - 0x41,0x4,0x51,0x4,0x3d,0x4,0x3d,0x4,0x4b,0x4,0x35,0x0,0x20,0x4,0x32,0x0, - 0x20,0x4,0x43,0x4,0x3b,0x4,0x38,0x4,0x3a,0x4,0x43,0x0,0x2c,0x0,0x20,0x4, - 0x38,0x0,0x20,0x4,0x3e,0x4,0x42,0x4,0x3f,0x4,0x40,0x4,0x30,0x4,0x32,0x4, - 0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x35,0x4,0x51,0x0,0x20,0x4,0x3d,0x4, - 0x30,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4,0x32,0x4,0x35,0x4,0x40,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x48,0x53,0x61,0x76,0x65,0x20, - 0x61,0x6e,0x79,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x20,0x6d,0x61,0x64,0x65, - 0x20,0x74,0x6f,0x20,0x74,0x68,0x69,0x73,0x20,0x70,0x69,0x65,0x63,0x65,0x20,0x6f, - 0x66,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x61,0x6e,0x64,0x20,0x73, - 0x65,0x6e,0x64,0x20,0x74,0x68,0x65,0x6d,0x20,0x74,0x6f,0x20,0x73,0x65,0x72,0x76, - 0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x38,0x4,0x21,0x4,0x3e,0x4,0x45,0x4,0x40,0x4, - 0x30,0x4,0x3d,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x43,0x4,0x3b,0x4, - 0x38,0x4,0x3a,0x4,0x43,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x44,0x4,0x30,0x4, - 0x39,0x4,0x3b,0x0,0x20,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1e,0x53,0x61,0x76,0x65,0x20,0x65,0x76, - 0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x61,0x6e,0x20,0x2e,0x69,0x6e, - 0x69,0x20,0x66,0x69,0x6c,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa,0x4,0x1f,0x4,0x3e,0x4, - 0x38,0x4,0x41,0x4,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x53, - 0x65,0x61,0x72,0x63,0x68,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x64,0x4,0x12,0x4,0x4b,0x4,0x31,0x4, - 0x35,0x4,0x40,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x3f,0x4,0x35,0x4, - 0x40,0x4,0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x0,0x2c,0x0, - 0x20,0x4,0x40,0x4,0x4f,0x4,0x34,0x4,0x3e,0x4,0x3c,0x0,0x20,0x4,0x41,0x0, - 0x20,0x4,0x3a,0x4,0x3e,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x4b,0x4,0x3c,0x0, - 0x20,0x4,0x45,0x4,0x3e,0x4,0x42,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4, - 0x32,0x4,0x41,0x4,0x42,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x29,0x53,0x65,0x6c,0x65,0x63,0x74,0x20,0x61,0x20, - 0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x79,0x6f,0x75,0x20,0x77,0x69, - 0x73,0x68,0x20,0x74,0x6f,0x20,0x70,0x61,0x69,0x72,0x20,0x77,0x69,0x74,0x68,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0xc,0x4,0x21,0x4,0x35,0x4,0x40,0x4,0x32,0x4,0x35,0x4,0x40, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x53,0x65,0x72,0x76,0x65,0x72, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x2,0x96,0x4,0x12,0x4,0x4b,0x4,0x31,0x4,0x35,0x4,0x40,0x4,0x38, - 0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x37,0x4,0x32,0x4,0x43,0x4,0x3a,0x0,0x2c, - 0x0,0x20,0x4,0x3a,0x4,0x3e,0x4,0x42,0x4,0x3e,0x4,0x40,0x4,0x4b,0x4,0x39, - 0x0,0x20,0x4,0x3d,0x4,0x43,0x4,0x36,0x4,0x3d,0x4,0x3e,0x0,0x20,0x4,0x32, - 0x4,0x3e,0x4,0x41,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x38,0x4,0x37,0x4,0x32, - 0x4,0x35,0x4,0x41,0x4,0x42,0x4,0x38,0x0,0x20,0x4,0x41,0x4,0x3e,0x0,0x20, - 0x4,0x41,0x4,0x3b,0x4,0x35,0x4,0x34,0x4,0x43,0x4,0x4e,0x4,0x49,0x4,0x35, - 0x4,0x39,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x35,0x4,0x34,0x0,0x2e,0x0,0x20, - 0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x46,0x4,0x38,0x4,0x35, - 0x4,0x39,0x0,0x2e,0x0,0x20,0x0,0xa,0x4,0x15,0x4,0x41,0x4,0x3b,0x4,0x38, - 0x0,0x20,0x4,0x32,0x4,0x4b,0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x3e, - 0x0,0x20,0x0,0x22,0x4,0x3f,0x4,0x3e,0x0,0x20,0x4,0x43,0x4,0x3c,0x4,0x3e, - 0x4,0x3b,0x4,0x47,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x4e,0x0,0x22,0x0,0x2c, - 0x0,0x20,0x4,0x32,0x4,0x4b,0x0,0x20,0x4,0x43,0x4,0x41,0x4,0x3b,0x4,0x4b, - 0x4,0x48,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x37,0x4,0x32,0x4,0x43, - 0x4,0x3a,0x0,0x2c,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x34,0x4,0x30,0x4,0x3d, - 0x4,0x3d,0x4,0x4b,0x4,0x39,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x35,0x4,0x34, - 0x0,0x2e,0x0,0x20,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x46, - 0x4,0x38,0x4,0x35,0x4,0x39,0x0,0x20,0x0,0x28,0x4,0x35,0x4,0x41,0x4,0x3b, - 0x4,0x38,0x0,0x20,0x4,0x3e,0x4,0x3d,0x0,0x20,0x4,0x35,0x4,0x41,0x4,0x42, - 0x4,0x4c,0x0,0x29,0x0,0x2e,0x0,0xa,0x4,0x12,0x4,0x4b,0x4,0x31,0x4,0x35, - 0x4,0x40,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x38,0x4,0x3b,0x4,0x38, - 0x0,0x20,0x4,0x32,0x4,0x32,0x4,0x35,0x4,0x34,0x4,0x38,0x4,0x42,0x4,0x35, - 0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x37,0x4,0x32,0x4,0x30,0x4,0x3d,0x4,0x38, - 0x4,0x35,0x0,0x20,0x4,0x37,0x4,0x32,0x4,0x43,0x4,0x3a,0x4,0x30,0x0,0x20, - 0x4,0x38,0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x3c,0x4,0x38,0x4,0x42, - 0x4,0x35,0x0,0x20,0x0,0x45,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x3b, - 0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x3c,0x4,0x38,0x4,0x42,0x4,0x35, - 0x0,0x20,0x0,0x5b,0x0,0x58,0x0,0x5d,0x0,0x2c,0x0,0x20,0x4,0x47,0x4,0x42, - 0x4,0x3e,0x4,0x31,0x4,0x4b,0x0,0x20,0x4,0x43,0x4,0x34,0x4,0x30,0x4,0x3b, - 0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x2e,0x0,0x20,0x0,0xa,0x4,0x18,0x4,0x37, - 0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20, - 0x4,0x41,0x4,0x3e,0x4,0x45,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x4f,0x4,0x4e, - 0x4,0x42,0x4,0x41,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x3e,0x0,0x20,0x4,0x41, - 0x4,0x3b,0x4,0x35,0x4,0x34,0x4,0x43,0x4,0x4e,0x4,0x49,0x4,0x35,0x4,0x3c, - 0x4,0x43,0x0,0x20,0x4,0x3f,0x4,0x43,0x4,0x42,0x4,0x38,0x0,0x3a,0x0,0x20, - 0x0,0x62,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x2f,0x0,0x63,0x0,0x68,0x0,0x61, - 0x0,0x72,0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x2f, - 0x0,0x3c,0x4,0x38,0x4,0x3c,0x4,0x4f,0x0,0x5f,0x4,0x3f,0x4,0x35,0x4,0x40, - 0x4,0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x0,0x3e,0x0,0x2f, - 0x0,0x73,0x0,0x6f,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x6c,0x0,0x69,0x0,0x73, - 0x0,0x74,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xe1,0x53,0x65,0x74,0x20,0x61,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20, - 0x65,0x66,0x66,0x65,0x63,0x74,0x20,0x74,0x6f,0x20,0x70,0x6c,0x61,0x79,0x20,0x6f, - 0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x6e,0x65,0x78,0x74,0x20,0x27,0x50,0x72,0x65, - 0x61,0x6e,0x69,0x6d,0x27,0x2e,0x20,0x4c,0x65,0x61,0x76,0x69,0x6e,0x67,0x20,0x69, - 0x74,0x20,0x6f,0x6e,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x77,0x69,0x6c, - 0x6c,0x20,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x65,0x6d,0x6f,0x74,0x65,0x2d, - 0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x28,0x69, - 0x66,0x20,0x61,0x6e,0x79,0x29,0x2e,0xa,0x45,0x64,0x69,0x74,0x20,0x62,0x79,0x20, - 0x74,0x79,0x70,0x69,0x6e,0x67,0x20,0x61,0x6e,0x64,0x20,0x70,0x72,0x65,0x73,0x73, - 0x69,0x6e,0x67,0x20,0x45,0x6e,0x74,0x65,0x72,0x2c,0x20,0x5b,0x58,0x5d,0x20,0x74, - 0x6f,0x20,0x72,0x65,0x6d,0x6f,0x76,0x65,0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x73, - 0x61,0x76,0x65,0x73,0x20,0x74,0x6f,0x20,0x79,0x6f,0x75,0x72,0x20,0x62,0x61,0x73, - 0x65,0x2f,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x2f,0x3c,0x63,0x68, - 0x61,0x72,0x6e,0x61,0x6d,0x65,0x3e,0x2f,0x73,0x6f,0x75,0x6e,0x64,0x6c,0x69,0x73, - 0x74,0x2e,0x69,0x6e,0x69,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0xce,0x4,0x12,0x4,0x3a,0x4,0x3b,0x4, - 0x4e,0x4,0x47,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x42,0x0,0x2e,0x4, - 0x3d,0x0,0x2e,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x34,0x4,0x3c,0x4,0x35,0x4, - 0x3d,0x4,0x43,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x20,0x20,0x13,0x0, - 0x20,0x4,0x30,0x4,0x3b,0x4,0x4c,0x4,0x42,0x4,0x35,0x4,0x40,0x4,0x3d,0x4, - 0x30,0x4,0x42,0x4,0x38,0x4,0x32,0x4,0x3d,0x4,0x43,0x4,0x4e,0x0,0x20,0x4, - 0x3f,0x4,0x30,0x4,0x3f,0x4,0x3a,0x4,0x43,0x0,0x20,0x4,0x3f,0x4,0x35,0x4, - 0x40,0x4,0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x0,0x2c,0x0, - 0x20,0x4,0x3a,0x0,0x20,0x4,0x3a,0x4,0x3e,0x4,0x42,0x4,0x3e,0x4,0x40,0x4, - 0x3e,0x4,0x39,0x0,0x20,0x4,0x31,0x4,0x43,0x4,0x34,0x4,0x35,0x4,0x42,0x0, - 0x20,0x4,0x3e,0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x49,0x4,0x30,0x4,0x42,0x4, - 0x4c,0x4,0x41,0x4,0x4f,0x0,0x20,0x4,0x42,0x4,0x35,0x4,0x3a,0x4,0x43,0x4, - 0x49,0x4,0x38,0x4,0x39,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x41,0x4, - 0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x0,0x2e,0x0,0xa,0x4,0x12,0x4,0x32,0x4, - 0x35,0x4,0x34,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x38,0x4,0x3c,0x4, - 0x4f,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x41,0x4,0x3e,0x4,0x3d,0x4, - 0x30,0x4,0x36,0x4,0x30,0x0,0x20,0x4,0x38,0x0,0x20,0x4,0x3d,0x4,0x30,0x4, - 0x36,0x4,0x3c,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x0,0x45,0x0,0x6e,0x0, - 0x74,0x0,0x65,0x0,0x72,0x0,0x3b,0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x36,0x4, - 0x3c,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x0,0x5b,0x0,0x58,0x0,0x5d,0x0, - 0x2c,0x0,0x20,0x4,0x47,0x4,0x42,0x4,0x3e,0x4,0x31,0x4,0x4b,0x0,0x20,0x4, - 0x43,0x4,0x34,0x4,0x30,0x4,0x3b,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x2e,0x0, - 0xa,0x4,0x18,0x4,0x37,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x35,0x4,0x3d,0x4, - 0x38,0x4,0x4f,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x45,0x4,0x40,0x4,0x30,0x4, - 0x3d,0x4,0x4f,0x4,0x4e,0x4,0x42,0x4,0x41,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4, - 0x3e,0x0,0x20,0x4,0x41,0x4,0x3b,0x4,0x35,0x4,0x34,0x4,0x43,0x4,0x4e,0x4, - 0x49,0x4,0x35,0x4,0x3c,0x4,0x43,0x0,0x20,0x4,0x3f,0x4,0x43,0x4,0x42,0x4, - 0x38,0x0,0x3a,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x2f,0x0, - 0x69,0x0,0x6e,0x0,0x69,0x0,0x73,0x0,0x77,0x0,0x61,0x0,0x70,0x0,0x73,0x0, - 0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xb4,0x53,0x65,0x74,0x20,0x61,0x6e,0x20,0x27,0x69,0x6e,0x69,0x73,0x77,0x61,0x70, - 0x27,0x2c,0x20,0x6f,0x72,0x20,0x61,0x6e,0x20,0x61,0x6c,0x74,0x65,0x72,0x6e,0x61, - 0x74,0x69,0x76,0x65,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x66, - 0x6f,0x6c,0x64,0x65,0x72,0x20,0x74,0x6f,0x20,0x72,0x65,0x66,0x65,0x72,0x20,0x74, - 0x6f,0x20,0x66,0x72,0x6f,0x6d,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x75,0x72,0x72, - 0x65,0x6e,0x74,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x2e,0xa,0x45, - 0x64,0x69,0x74,0x20,0x62,0x79,0x20,0x74,0x79,0x70,0x69,0x6e,0x67,0x20,0x61,0x6e, - 0x64,0x20,0x70,0x72,0x65,0x73,0x73,0x69,0x6e,0x67,0x20,0x45,0x6e,0x74,0x65,0x72, - 0x2c,0x20,0x5b,0x58,0x5d,0x20,0x74,0x6f,0x20,0x72,0x65,0x6d,0x6f,0x76,0x65,0x2e, - 0x20,0x54,0x68,0x69,0x73,0x20,0x73,0x61,0x76,0x65,0x73,0x20,0x74,0x6f,0x20,0x79, - 0x6f,0x75,0x72,0x20,0x62,0x61,0x73,0x65,0x2f,0x69,0x6e,0x69,0x73,0x77,0x61,0x70, - 0x73,0x2e,0x69,0x6e,0x69,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x8e,0x4,0x12,0x4,0x4b,0x4,0x31,0x4, - 0x35,0x4,0x40,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x4d,0x4,0x3c,0x4, - 0x3e,0x4,0x46,0x4,0x38,0x4,0x4e,0x0,0x20,0x4,0x34,0x4,0x3b,0x4,0x4f,0x0, - 0x20,0x4,0x3e,0x4,0x42,0x4,0x3e,0x4,0x31,0x4,0x40,0x4,0x30,0x4,0x36,0x4, - 0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x38,0x0, - 0x20,0x4,0x32,0x4,0x4b,0x4,0x32,0x4,0x3e,0x4,0x34,0x4,0x35,0x0,0x20,0x4, - 0x32,0x4,0x30,0x4,0x48,0x4,0x35,0x4,0x33,0x4,0x3e,0x0,0x20,0x4,0x41,0x4, - 0x3b,0x4,0x35,0x4,0x34,0x4,0x43,0x4,0x4e,0x4,0x49,0x4,0x35,0x4,0x33,0x4, - 0x3e,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x35,0x4, - 0x3d,0x4,0x38,0x4,0x4f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x38,0x53,0x65,0x74,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63, - 0x74,0x65,0x72,0x27,0x73,0x20,0x65,0x6d,0x6f,0x74,0x65,0x20,0x74,0x6f,0x20,0x70, - 0x6c,0x61,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x6e,0x65,0x78,0x74, - 0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x48,0x4,0x23,0x4, - 0x41,0x4,0x42,0x4,0x30,0x4,0x3d,0x4,0x3e,0x4,0x32,0x4,0x38,0x4,0x42,0x4, - 0x4c,0x0,0x20,0x4,0x44,0x4,0x3e,0x4,0x3d,0x0,0x20,0x4,0x34,0x4,0x3b,0x4, - 0x4f,0x0,0x20,0x4,0x32,0x4,0x30,0x4,0x48,0x4,0x35,0x4,0x33,0x4,0x3e,0x0, - 0x20,0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4, - 0x36,0x4,0x30,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2e,0x53, - 0x65,0x74,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65, - 0x72,0x27,0x73,0x20,0x73,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x72, - 0x79,0x20,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x12,0x4,0x1d,0x4,0x30,0x4,0x41,0x4,0x42,0x4,0x40,0x4,0x3e,0x4,0x39,0x4, - 0x3a,0x4,0x38,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x65,0x74, - 0x74,0x69,0x6e,0x67,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1a,0x4,0x17,0x4,0x32,0x4,0x43,0x4, - 0x3a,0x0,0x2e,0x0,0x20,0x4,0x4d,0x4,0x44,0x4,0x44,0x4,0x35,0x4,0x3a,0x4, - 0x42,0x4,0x4b,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x53,0x66,0x78, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x62,0x4,0x1f,0x4,0x3e,0x4,0x42,0x4,0x40,0x4,0x4f,0x4,0x41, - 0x4,0x42,0x4,0x38,0x0,0x20,0x4,0x4d,0x4,0x3a,0x4,0x40,0x4,0x30,0x4,0x3d, - 0x0,0x20,0x4,0x32,0x4,0x3e,0x0,0x20,0x4,0x32,0x4,0x40,0x4,0x35,0x4,0x3c, - 0x4,0x4f,0x0,0x20,0x4,0x32,0x4,0x4b,0x4,0x32,0x4,0x3e,0x4,0x34,0x4,0x30, - 0x0,0x20,0x4,0x41,0x4,0x3b,0x4,0x35,0x4,0x34,0x4,0x43,0x4,0x4e,0x4,0x49, - 0x4,0x35,0x4,0x39,0x0,0x20,0x4,0x40,0x4,0x35,0x4,0x3f,0x4,0x3b,0x4,0x38, - 0x4,0x3a,0x4,0x38,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x35, - 0x53,0x68,0x61,0x6b,0x65,0x20,0x74,0x68,0x65,0x20,0x73,0x63,0x72,0x65,0x65,0x6e, - 0x20,0x6f,0x6e,0x20,0x6e,0x65,0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20, - 0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65, - 0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x6,0x4,0x18,0x4,0x3c,0x4,0x4f,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x68,0x6f,0x77,0x6e,0x61,0x6d, - 0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x18,0x4,0x1f,0x4,0x3e,0x4,0x3b,0x4,0x4c,0x4,0x37,0x0, - 0x2e,0x0,0x20,0x4,0x38,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x30,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x53,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0xe,0x4,0x17,0x4,0x40,0x4,0x38,0x4,0x42,0x4,0x35,0x4,0x3b, - 0x4,0x4c,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x53,0x70,0x65,0x63, - 0x74,0x61,0x74,0x6f,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x36,0x4,0x1f,0x4,0x40,0x4,0x35,0x4, - 0x40,0x4,0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x42,0x4,0x35,0x4, - 0x3a,0x4,0x43,0x4,0x49,0x4,0x43,0x4,0x4e,0x0,0x20,0x4,0x3a,0x4,0x3e,0x4, - 0x3c,0x4,0x3f,0x4,0x3e,0x4,0x37,0x4,0x38,0x4,0x46,0x4,0x38,0x4,0x4e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x53,0x74,0x6f,0x70,0x20,0x43,0x75, - 0x72,0x72,0x65,0x6e,0x74,0x20,0x53,0x6f,0x6e,0x67,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x92,0x4,0x21, - 0x4,0x3e,0x4,0x45,0x4,0x40,0x4,0x30,0x4,0x3d,0x4,0x35,0x4,0x3d,0x4,0x38, - 0x4,0x35,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x48,0x4,0x3b,0x4,0x3e, - 0x0,0x20,0x4,0x43,0x4,0x41,0x4,0x3f,0x4,0x35,0x4,0x48,0x4,0x3d,0x4,0x3e, - 0x0,0x2e,0x0,0x20,0x4,0x21,0x4,0x41,0x4,0x4b,0x4,0x3b,0x4,0x3a,0x4,0x38, - 0x0,0x20,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x34,0x4,0x3e,0x4,0x3a,0x4,0x43, - 0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x42,0x4,0x4b,0x0,0x20,0x4,0x3c,0x4,0x3e, - 0x4,0x36,0x4,0x3d,0x4,0x3e,0x0,0x20,0x4,0x40,0x4,0x35,0x4,0x34,0x4,0x30, - 0x4,0x3a,0x4,0x42,0x4,0x38,0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x30,0x4,0x42, - 0x4,0x4c,0x0,0x20,0x4,0x32,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x36,0x53,0x75,0x63,0x63,0x65,0x73, - 0x66,0x75,0x6c,0x6c,0x79,0x20,0x73,0x61,0x76,0x65,0x64,0x2c,0x20,0x65,0x64,0x69, - 0x74,0x20,0x64,0x6f,0x63,0x20,0x61,0x6e,0x64,0x20,0x63,0x6d,0x64,0x6f,0x63,0x20, - 0x6c,0x69,0x6e,0x6b,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x69,0x6e,0x69,0x21, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x5c,0x4,0x1f,0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x3a,0x4,0x3b, - 0x4,0x4e,0x4,0x47,0x4,0x38,0x4,0x42,0x4,0x4c,0x4,0x41,0x4,0x4f,0x0,0x20, - 0x4,0x3c,0x4,0x35,0x4,0x36,0x4,0x34,0x4,0x43,0x0,0x20,0x4,0x41,0x4,0x3f, - 0x4,0x38,0x4,0x41,0x4,0x3a,0x4,0x30,0x4,0x3c,0x4,0x38,0x0,0x20,0x4,0x3c, - 0x4,0x43,0x4,0x37,0x4,0x4b,0x4,0x3a,0x4,0x38,0x0,0x20,0x4,0x38,0x0,0x20, - 0x4,0x3b,0x4,0x3e,0x4,0x3a,0x4,0x30,0x4,0x46,0x4,0x38,0x4,0x39,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x24,0x53,0x77,0x69,0x74,0x63,0x68, - 0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e,0x20,0x41,0x72,0x65,0x61,0x73,0x20,0x61, - 0x6e,0x64,0x20,0x4d,0x75,0x73,0x69,0x63,0x20,0x6c,0x69,0x73,0x74,0x73,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x30,0x4,0x1f,0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x39,0x4,0x42,0x4,0x38, - 0x0,0x20,0x4,0x3a,0x0,0x20,0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x35,0x4,0x3c, - 0x4,0x43,0x0,0x20,0x4,0x41,0x4,0x3f,0x4,0x38,0x4,0x41,0x4,0x3a,0x4,0x43, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x24,0x53,0x77,0x69,0x74, - 0x63,0x68,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x67, - 0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x30,0x4,0x1f,0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x39,0x4,0x42, - 0x4,0x38,0x0,0x20,0x4,0x3a,0x0,0x20,0x4,0x41,0x4,0x32,0x4,0x3e,0x4,0x35, - 0x4,0x3c,0x4,0x43,0x0,0x20,0x4,0x41,0x4,0x3f,0x4,0x38,0x4,0x41,0x4,0x3a, - 0x4,0x43,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x25,0x53,0x77, - 0x69,0x74,0x63,0x68,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f, - 0x20,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f, - 0x72,0x79,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x20,0x4,0x21,0x4,0x38,0x4,0x3d,0x4,0x45,0x4, - 0x40,0x4,0x3e,0x4,0x3d,0x4,0x38,0x4,0x37,0x4,0x38,0x4,0x40,0x4,0x3e,0x4, - 0x32,0x4,0x30,0x4,0x42,0x4,0x4c,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xb,0x53,0x79,0x6e,0x63,0x68,0x72,0x6f,0x6e,0x69,0x7a,0x65,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x8, - 0x4,0x12,0x4,0x1e,0x4,0x22,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xa,0x54,0x41,0x4b,0x45,0x20,0x54,0x48,0x41,0x54,0x21,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x8, - 0x4,0x12,0x4,0x3e,0x4,0x42,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xa,0x54,0x61,0x6b,0x65,0x20,0x54,0x68,0x61,0x74,0x21,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa, - 0x4,0x17,0x4,0x30,0x4,0x3d,0x4,0x4f,0x4,0x42,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x5,0x54,0x61,0x6b,0x65,0x6e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x34,0x4,0x21,0x4, - 0x3b,0x4,0x38,0x4,0x48,0x4,0x3a,0x4,0x3e,0x4,0x3c,0x0,0x20,0x4,0x34,0x4, - 0x3b,0x4,0x38,0x4,0x3d,0x4,0x3d,0x4,0x3e,0x4,0x35,0x0,0x20,0x4,0x41,0x4, - 0x3e,0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x18,0x54,0x68,0x65,0x20,0x6d, - 0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x69,0x73,0x20,0x74,0x6f,0x6f,0x20,0x6c,0x6f, - 0x6e,0x67,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x74,0x4,0x12,0x0,0x20,0x4,0x43,0x4,0x3b,0x4, - 0x38,0x4,0x3a,0x4,0x43,0x0,0x2c,0x0,0x20,0x4,0x3a,0x4,0x3e,0x4,0x42,0x4, - 0x3e,0x4,0x40,0x4,0x43,0x4,0x4e,0x0,0x20,0x4,0x32,0x4,0x4b,0x0,0x20,0x4, - 0x40,0x4,0x35,0x4,0x34,0x4,0x30,0x4,0x3a,0x4,0x42,0x4,0x38,0x4,0x40,0x4, - 0x3e,0x4,0x32,0x4,0x30,0x4,0x3b,0x4,0x38,0x0,0x2c,0x0,0x20,0x4,0x31,0x4, - 0x4b,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x32,0x4,0x3d,0x4,0x35,0x4,0x41,0x4, - 0x35,0x4,0x3d,0x4,0x4b,0x0,0x20,0x4,0x38,0x4,0x37,0x4,0x3c,0x4,0x35,0x4, - 0x3d,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x36,0x54,0x68,0x65,0x20,0x70,0x69,0x65,0x63,0x65,0x20,0x6f, - 0x66,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x79,0x6f,0x75,0x27,0x76, - 0x65,0x20,0x62,0x65,0x65,0x6e,0x20,0x65,0x64,0x69,0x74,0x69,0x6e,0x67,0x20,0x68, - 0x61,0x73,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x76,0x4, - 0x10,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x46,0x4,0x38,0x4,0x4f,0x0, - 0x20,0x4,0x31,0x4,0x43,0x4,0x34,0x4,0x35,0x4,0x42,0x0,0x20,0x4,0x3f,0x4, - 0x3e,0x4,0x3a,0x4,0x30,0x4,0x37,0x4,0x30,0x4,0x3d,0x4,0x30,0x0,0x20,0x4, - 0x32,0x0,0x20,0x4,0x38,0x4,0x33,0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4, - 0x3c,0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x41,0x4, - 0x40,0x4,0x30,0x4,0x37,0x4,0x43,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x41,0x4, - 0x3b,0x4,0x35,0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x4,0x42,0x4, - 0x38,0x4,0x4f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x49,0x54, - 0x68,0x69,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79, - 0x20,0x74,0x68,0x65,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69, - 0x6e,0x20,0x74,0x68,0x65,0x20,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x20,0x61, - 0x73,0x20,0x73,0x6f,0x6f,0x6e,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x69,0x73,0x20, - 0x70,0x72,0x65,0x73,0x73,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0x7c,0x4,0x1f,0x4,0x3e, - 0x4,0x3a,0x4,0x30,0x4,0x37,0x4,0x30,0x4,0x42,0x4,0x4c,0x0,0x20,0x4,0x32, - 0x0,0x20,0x4,0x38,0x4,0x33,0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4,0x3c, - 0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x43,0x4,0x3d, - 0x4,0x38,0x4,0x3a,0x4,0x30,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4,0x43,0x4,0x4e, - 0x0,0x20,0x4,0x34,0x4,0x3b,0x4,0x4f,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40, - 0x4,0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x0,0x20,0x4,0x30, - 0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x46,0x4,0x38,0x4,0x4e,0x0,0x20, - 0x4,0x41,0x4,0x40,0x4,0x30,0x4,0x37,0x4,0x43,0x0,0x20,0x4,0x3f,0x4,0x3e, - 0x4,0x41,0x4,0x3b,0x4,0x35,0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30, - 0x4,0x42,0x4,0x38,0x4,0x4f,0x0,0x2e,0x0,0xa,0x4,0x14,0x4,0x3b,0x4,0x4f, - 0x0,0x20,0x4,0x34,0x4,0x3e,0x4,0x31,0x4,0x30,0x4,0x32,0x4,0x3b,0x4,0x35, - 0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x42,0x4,0x30,0x4,0x3a,0x4,0x3e, - 0x4,0x39,0x0,0x20,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x3c,0x4,0x30,0x4,0x46, - 0x4,0x38,0x4,0x38,0x0,0x20,0x4,0x3f,0x4,0x3e,0x4,0x3c,0x4,0x35,0x4,0x41, - 0x4,0x42,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x3f, - 0x4,0x30,0x4,0x3f,0x4,0x3a,0x4,0x43,0x0,0x20,0x4,0x3f,0x4,0x35,0x4,0x40, - 0x4,0x41,0x4,0x3e,0x4,0x3d,0x4,0x30,0x4,0x36,0x4,0x30,0x0,0x20,0x4,0x44, - 0x4,0x30,0x4,0x39,0x4,0x3b,0x4,0x4b,0x0,0x20,0x0,0x63,0x0,0x75,0x0,0x73, - 0x0,0x74,0x0,0x6f,0x0,0x6d,0x0,0x2e,0x0,0x77,0x0,0x65,0x0,0x62,0x0,0x70, - 0x0,0x2f,0x0,0x61,0x0,0x70,0x0,0x6e,0x0,0x67,0x0,0x2f,0x0,0x67,0x0,0x69, - 0x0,0x66,0x0,0x2f,0x0,0x70,0x0,0x6e,0x0,0x67,0x0,0x20,0x4,0x38,0x0,0x20, - 0x0,0x63,0x0,0x75,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x6d,0x0,0x2e,0x0,0x77, - 0x0,0x61,0x0,0x76,0x0,0x2f,0x0,0x6f,0x0,0x67,0x0,0x67,0x0,0x2f,0x0,0x6f, - 0x0,0x70,0x0,0x75,0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xd6,0x54,0x68,0x69,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x64,0x69,0x73,0x70, - 0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x63, - 0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x2d,0x64,0x65,0x66,0x69,0x6e,0x65,0x64, - 0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x74,0x68, - 0x65,0x20,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x20,0x61,0x73,0x20,0x73,0x6f, - 0x6f,0x6e,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x70,0x72,0x65,0x73, - 0x73,0x65,0x64,0x2e,0xa,0x54,0x6f,0x20,0x6d,0x61,0x6b,0x65,0x20,0x6f,0x6e,0x65, - 0x2c,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72, - 0x27,0x73,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x20,0x6d,0x75,0x73,0x74,0x20,0x63, - 0x6f,0x6e,0x74,0x61,0x69,0x6e,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x5b,0x77, - 0x65,0x62,0x70,0x2f,0x61,0x70,0x6e,0x67,0x2f,0x67,0x69,0x66,0x2f,0x70,0x6e,0x67, - 0x5d,0x20,0x61,0x6e,0x64,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x5b,0x77,0x61, - 0x76,0x2f,0x6f,0x67,0x67,0x2f,0x6f,0x70,0x75,0x73,0x5d,0x20,0x73,0x6f,0x75,0x6e, - 0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa,0x4,0x21,0x4,0x37, - 0x4,0x30,0x4,0x34,0x4,0x38,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9, - 0x54,0x6f,0x20,0x62,0x65,0x68,0x69,0x6e,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xe,0x4,0x21,0x4, - 0x3f,0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x34,0x4,0x38,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x8,0x54,0x6f,0x20,0x66,0x72,0x6f,0x6e,0x74,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x68,0x4,0x1f,0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x3a,0x4,0x3b,0x4,0x4e,0x4, - 0x47,0x4,0x30,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x4c,0x0,0x20,0x4,0x3c,0x4, - 0x35,0x4,0x36,0x4,0x34,0x4,0x43,0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x42,0x4, - 0x3e,0x4,0x3c,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4,0x32,0x4,0x35,0x4, - 0x40,0x4,0x30,0x0,0x20,0x4,0x38,0x0,0x20,0x4,0x3e,0x4,0x31,0x4,0x49,0x4, - 0x38,0x4,0x3c,0x0,0x20,0x4,0x47,0x4,0x30,0x4,0x42,0x4,0x3e,0x4,0x3c,0x0, - 0x20,0x0,0x41,0x0,0x4f,0x0,0x32,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x2f,0x54,0x6f,0x67,0x67,0x6c,0x65,0x20,0x62,0x65,0x74,0x77,0x65,0x65, - 0x6e,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x63,0x68,0x61,0x74,0x20,0x61,0x6e, - 0x64,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x41,0x4f,0x32,0x20,0x63,0x68,0x61, - 0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x78,0x4,0x1d,0x4,0x35,0x0,0x20,0x4,0x43,0x4,0x34, - 0x4,0x30,0x4,0x3b,0x4,0x3e,0x4,0x41,0x4,0x4c,0x0,0x20,0x4,0x37,0x4,0x30, - 0x4,0x33,0x4,0x40,0x4,0x43,0x4,0x37,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x20, - 0x4,0x34,0x4,0x35,0x4,0x3b,0x4,0x3e,0x0,0x21,0x0,0x20,0x4,0x12,0x4,0x32, - 0x4,0x35,0x4,0x34,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x38,0x4,0x3c, - 0x4,0x4f,0x0,0x20,0x4,0x44,0x4,0x30,0x4,0x39,0x4,0x3b,0x4,0x30,0x0,0x20, - 0x4,0x31,0x4,0x35,0x4,0x37,0x0,0x20,0x4,0x40,0x4,0x30,0x4,0x41,0x4,0x48, - 0x4,0x38,0x4,0x40,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x51,0x54,0x6f,0x6f,0x20,0x6d,0x61,0x6e,0x79, - 0x20,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x20,0x74,0x6f,0x20,0x6c,0x6f, - 0x61,0x64,0x20,0x61,0x20,0x63,0x61,0x73,0x65,0x21,0x20,0x59,0x6f,0x75,0x20,0x6f, - 0x6e,0x6c,0x79,0x20,0x6e,0x65,0x65,0x64,0x20,0x6f,0x6e,0x65,0x20,0x66,0x69,0x6c, - 0x65,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x77,0x69,0x74,0x68,0x6f,0x75,0x74,0x20,0x65, - 0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x94,0x4,0x23,0x4, - 0x31,0x4,0x35,0x4,0x34,0x4,0x38,0x4,0x42,0x4,0x35,0x4,0x41,0x4,0x4c,0x0, - 0x2c,0x0,0x20,0x4,0x47,0x4,0x42,0x4,0x3e,0x0,0x20,0x4,0x38,0x4,0x3c,0x4, - 0x4f,0x0,0x20,0x4,0x44,0x4,0x30,0x4,0x39,0x4,0x3b,0x4,0x30,0x0,0x20,0x4, - 0x32,0x4,0x32,0x4,0x35,0x4,0x34,0x4,0x35,0x4,0x3d,0x4,0x3e,0x0,0x20,0x4, - 0x31,0x4,0x35,0x4,0x37,0x0,0x20,0x4,0x40,0x4,0x30,0x4,0x41,0x4,0x48,0x4, - 0x38,0x4,0x40,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x38,0x0, - 0x20,0x4,0x43,0x4,0x3a,0x4,0x30,0x4,0x37,0x4,0x30,0x4,0x3d,0x0,0x20,0x4, - 0x41,0x4,0x42,0x4,0x30,0x4,0x42,0x4,0x43,0x4,0x41,0x0,0x20,0x4,0x37,0x4, - 0x30,0x4,0x3b,0x4,0x30,0x0,0x20,0x4,0x41,0x4,0x43,0x4,0x34,0x4,0x30,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x67,0x54,0x6f,0x6f,0x20,0x6d, - 0x61,0x6e,0x79,0x20,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x20,0x74,0x6f, - 0x20,0x73,0x61,0x76,0x65,0x20,0x61,0x20,0x63,0x61,0x73,0x65,0x21,0x20,0x59,0x6f, - 0x75,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x6e,0x65,0x65,0x64,0x20,0x61,0x20,0x66,0x69, - 0x6c,0x65,0x6e,0x61,0x6d,0x65,0x20,0x77,0x69,0x74,0x68,0x6f,0x75,0x74,0x20,0x65, - 0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65, - 0x20,0x63,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x20,0x73,0x74,0x61,0x74,0x75, - 0x73,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x3e,0x4,0x1f,0x4,0x35,0x4,0x40,0x4,0x35,0x4,0x3d, - 0x4,0x35,0x4,0x41,0x4,0x42,0x4,0x38,0x0,0x20,0x4,0x43,0x4,0x3b,0x4,0x38, - 0x4,0x3a,0x4,0x43,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x3e,0x4,0x31,0x4,0x49, - 0x4,0x38,0x4,0x39,0x0,0x20,0x4,0x41,0x4,0x3f,0x4,0x38,0x4,0x41,0x4,0x3e, - 0x4,0x3a,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x26,0x54,0x72, - 0x61,0x6e,0x73,0x66,0x65,0x72,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20, - 0x74,0x6f,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74, - 0x6f,0x72,0x79,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x3c,0x4,0x1f,0x4,0x35,0x4,0x40,0x4,0x35, - 0x4,0x3d,0x4,0x35,0x4,0x41,0x4,0x42,0x4,0x38,0x0,0x20,0x4,0x43,0x4,0x3b, - 0x4,0x38,0x4,0x3a,0x4,0x43,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x41,0x4,0x32, - 0x4,0x3e,0x4,0x39,0x0,0x20,0x4,0x41,0x4,0x3f,0x4,0x38,0x4,0x41,0x4,0x3e, - 0x4,0x3a,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x27,0x54,0x72, - 0x61,0x6e,0x73,0x66,0x65,0x72,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20, - 0x74,0x6f,0x20,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x76,0x65,0x6e, - 0x74,0x6f,0x72,0x79,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x6,0x4,0x3d,0x0,0x2f,0x4,0x34,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x55,0x4e,0x4b,0x4e,0x4f,0x57,0x4e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0xa8,0x4,0x1a,0x4,0x3e,0x4,0x33,0x4,0x34,0x4,0x30,0x0,0x20, - 0x4,0x4d,0x4,0x42,0x4,0x30,0x0,0x20,0x4,0x3e,0x4,0x3f,0x4,0x46,0x4,0x38, - 0x4,0x4f,0x0,0x20,0x4,0x32,0x4,0x3a,0x4,0x3b,0x4,0x4e,0x4,0x47,0x4,0x35, - 0x4,0x3d,0x4,0x30,0x0,0x2c,0x0,0x20,0x4,0x32,0x4,0x30,0x4,0x48,0x4,0x35, - 0x0,0x20,0x4,0x41,0x4,0x3b,0x4,0x35,0x4,0x34,0x4,0x43,0x4,0x4e,0x4,0x49, - 0x4,0x35,0x4,0x35,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x3e,0x4,0x31,0x4,0x49, - 0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x38, - 0x4,0x33,0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x3e,0x4,0x3c,0x0,0x20,0x4,0x47, - 0x4,0x30,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x31,0x4,0x43,0x4,0x34,0x4,0x35, - 0x4,0x42,0x0,0x20,0x4,0x41,0x0,0x20,0x4,0x32,0x4,0x3e,0x4,0x37,0x4,0x33, - 0x4,0x3b,0x4,0x30,0x4,0x41,0x4,0x3e,0x4,0x3c,0x0,0x21,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x47,0x57,0x68,0x65,0x6e,0x20,0x74,0x68,0x69,0x73,0x20, - 0x69,0x73,0x20,0x74,0x75,0x72,0x6e,0x65,0x64,0x20,0x6f,0x6e,0x2c,0x20,0x79,0x6f, - 0x75,0x72,0x20,0x6e,0x65,0x78,0x74,0x20,0x69,0x6e,0x2d,0x63,0x68,0x61,0x72,0x61, - 0x63,0x74,0x65,0x72,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x77,0x69,0x6c, - 0x6c,0x20,0x62,0x65,0x20,0x61,0x20,0x73,0x68,0x6f,0x75,0x74,0x21,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x64,0x4,0x1f,0x4,0x30,0x4,0x3f,0x4,0x3a,0x4,0x30,0x0,0x20,0x0,0x60,0x0, - 0x62,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x2f,0x0,0x63,0x0,0x61,0x0,0x73,0x0, - 0x65,0x0,0x73,0x0,0x2f,0x0,0x60,0x0,0x20,0x4,0x3e,0x4,0x42,0x4,0x41,0x4, - 0x43,0x4,0x42,0x4,0x41,0x4,0x42,0x4,0x32,0x4,0x43,0x4,0x35,0x4,0x42,0x0, - 0x2e,0x0,0x20,0x4,0x1e,0x4,0x3d,0x4,0x30,0x0,0x20,0x4,0x31,0x4,0x4b,0x4, - 0x3b,0x4,0x30,0x0,0x20,0x4,0x41,0x4,0x3e,0x4,0x37,0x4,0x34,0x4,0x30,0x4, - 0x3d,0x4,0x30,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x91,0x59, - 0x6f,0x75,0x20,0x64,0x6f,0x6e,0x27,0x74,0x20,0x68,0x61,0x76,0x65,0x20,0x61,0x20, - 0x60,0x62,0x61,0x73,0x65,0x2f,0x63,0x61,0x73,0x65,0x73,0x2f,0x60,0x20,0x66,0x6f, - 0x6c,0x64,0x65,0x72,0x21,0x20,0x49,0x74,0x20,0x77,0x61,0x73,0x20,0x6a,0x75,0x73, - 0x74,0x20,0x6d,0x61,0x64,0x65,0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x2c,0x20, - 0x62,0x75,0x74,0x20,0x73,0x65,0x65,0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x69,0x74, - 0x20,0x57,0x41,0x53,0x20,0x6a,0x75,0x73,0x74,0x20,0x6d,0x61,0x64,0x65,0x20,0x66, - 0x6f,0x72,0x20,0x79,0x6f,0x75,0x2c,0x20,0x69,0x74,0x27,0x73,0x20,0x6c,0x69,0x6b, - 0x65,0x6c,0x79,0x20,0x74,0x68,0x61,0x74,0x20,0x79,0x6f,0x75,0x20,0x73,0x6f,0x6d, - 0x65,0x68,0x6f,0x77,0x20,0x64,0x65,0x6c,0x65,0x74,0x65,0x64,0x20,0x69,0x74,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0xca,0x4,0x24,0x4,0x30,0x4,0x39,0x4,0x3b,0x0,0x20,0x4,0x41, - 0x0,0x20,0x4,0x34,0x4,0x35,0x4,0x3b,0x4,0x3e,0x4,0x3c,0x0,0x20,0x4,0x3d, - 0x4,0x35,0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x39,0x4,0x34,0x4,0x35,0x4,0x3d, - 0x0,0x2e,0x0,0x20,0x4,0x15,0x4,0x41,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x3d, - 0x4,0x30,0x4,0x39,0x4,0x34,0x4,0x51,0x4,0x42,0x4,0x35,0x0,0x2c,0x0,0x20, - 0x4,0x3f,0x4,0x3e,0x4,0x3b,0x4,0x3e,0x4,0x36,0x4,0x38,0x4,0x42,0x4,0x35, - 0x0,0x20,0x4,0x35,0x4,0x33,0x4,0x3e,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x3f, - 0x4,0x30,0x4,0x3f,0x4,0x3a,0x4,0x43,0x0,0x20,0x0,0x60,0x0,0x62,0x0,0x61, - 0x0,0x73,0x0,0x65,0x0,0x2f,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x73, - 0x0,0x2f,0x0,0x60,0x0,0x2c,0x0,0x20,0x4,0x3a,0x4,0x3e,0x4,0x42,0x4,0x3e, - 0x4,0x40,0x4,0x43,0x4,0x4e,0x0,0x20,0x4,0x3c,0x4,0x4b,0x0,0x20,0x4,0x34, - 0x4,0x3b,0x4,0x4f,0x0,0x20,0x4,0x32,0x4,0x30,0x4,0x41,0x0,0x20,0x4,0x41, - 0x4,0x3e,0x4,0x37,0x4,0x34,0x4,0x30,0x4,0x3b,0x4,0x38,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xae,0x59,0x6f,0x75,0x20,0x64,0x6f,0x6e,0x27, - 0x74,0x20,0x68,0x61,0x76,0x65,0x20,0x61,0x20,0x60,0x62,0x61,0x73,0x65,0x2f,0x63, - 0x61,0x73,0x65,0x73,0x2f,0x60,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x21,0x20,0x49, - 0x74,0x20,0x77,0x61,0x73,0x20,0x6a,0x75,0x73,0x74,0x20,0x6d,0x61,0x64,0x65,0x20, - 0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x2c,0x20,0x62,0x75,0x74,0x20,0x73,0x65,0x65, - 0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x57,0x41,0x53,0x20,0x6a,0x75, - 0x73,0x74,0x20,0x6d,0x61,0x64,0x65,0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x2c, - 0x20,0x69,0x74,0x27,0x73,0x20,0x6c,0x69,0x6b,0x65,0x6c,0x79,0x20,0x74,0x68,0x65, - 0x20,0x63,0x61,0x73,0x65,0x20,0x66,0x69,0x6c,0x65,0x20,0x79,0x6f,0x75,0x27,0x72, - 0x65,0x20,0x6c,0x6f,0x6f,0x6b,0x69,0x6e,0x67,0x20,0x66,0x6f,0x72,0x20,0x63,0x61, - 0x6e,0x27,0x74,0x20,0x62,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64,0x20,0x69,0x6e,0x20, - 0x74,0x68,0x65,0x72,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1a,0x4,0x12,0x4,0x30,0x4,0x41, - 0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x31,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x3b, - 0x4,0x38,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x15,0x59,0x6f, - 0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x62,0x65,0x65,0x6e,0x20,0x62,0x61,0x6e,0x6e, - 0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x20,0x4,0x23,0x4,0x3a,0x4,0x30,0x4,0x36,0x4, - 0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x38,0x4,0x47,0x4, - 0x38,0x4,0x3d,0x4,0x43,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x1a,0x59,0x6f,0x75,0x20,0x6d,0x75,0x73,0x74,0x20,0x70,0x72,0x6f,0x76,0x69,0x64, - 0x65,0x20,0x61,0x20,0x72,0x65,0x61,0x73,0x6f,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0x86,0x4, - 0x23,0x4,0x3a,0x4,0x30,0x4,0x36,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4, - 0x38,0x4,0x3c,0x4,0x4f,0x0,0x20,0x4,0x44,0x4,0x30,0x4,0x39,0x4,0x3b,0x4, - 0x30,0x0,0x20,0x4,0x41,0x0,0x20,0x4,0x34,0x4,0x35,0x4,0x3b,0x4,0x3e,0x4, - 0x3c,0x0,0x20,0x0,0x28,0x4,0x31,0x4,0x35,0x4,0x37,0x0,0x20,0x4,0x40,0x4, - 0x30,0x4,0x41,0x4,0x48,0x4,0x38,0x4,0x40,0x4,0x35,0x4,0x3d,0x4,0x38,0x4, - 0x4f,0x0,0x29,0x0,0x20,0x4,0x34,0x4,0x3b,0x4,0x4f,0x0,0x20,0x4,0x37,0x4, - 0x30,0x4,0x33,0x4,0x40,0x4,0x43,0x4,0x37,0x4,0x3a,0x4,0x38,0x0,0x2e,0x0, - 0xa,0x4,0x23,0x4,0x31,0x4,0x35,0x4,0x34,0x4,0x38,0x4,0x42,0x4,0x35,0x4, - 0x41,0x4,0x4c,0x0,0x2c,0x0,0x20,0x4,0x47,0x4,0x42,0x4,0x3e,0x0,0x20,0x4, - 0x3e,0x4,0x3d,0x0,0x20,0x4,0x40,0x4,0x30,0x4,0x41,0x4,0x3f,0x4,0x3e,0x4, - 0x3b,0x4,0x3e,0x4,0x36,0x4,0x35,0x4,0x3d,0x0,0x20,0x4,0x32,0x0,0x20,0x4, - 0x3f,0x4,0x30,0x4,0x3f,0x4,0x3a,0x4,0x35,0x0,0x20,0x0,0x60,0x0,0x62,0x0, - 0x61,0x0,0x73,0x0,0x65,0x0,0x2f,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x65,0x0, - 0x73,0x0,0x60,0x0,0x2c,0x0,0x20,0x4,0x38,0x0,0x20,0x4,0x47,0x4,0x42,0x4, - 0x3e,0x0,0x20,0x4,0x4d,0x4,0x42,0x4,0x3e,0x0,0x20,0x4,0x3f,0x4,0x40,0x4, - 0x30,0x4,0x32,0x4,0x38,0x4,0x3b,0x4,0x4c,0x4,0x3d,0x4,0x3e,0x0,0x20,0x4, - 0x3e,0x4,0x42,0x4,0x44,0x4,0x3e,0x4,0x40,0x4,0x3c,0x4,0x30,0x4,0x42,0x4, - 0x38,0x4,0x40,0x4,0x3e,0x4,0x32,0x4,0x30,0x4,0x3d,0x4,0x3d,0x4,0x4b,0x4, - 0x39,0x0,0x20,0x4,0x44,0x4,0x30,0x4,0x39,0x4,0x3b,0x0,0x20,0x0,0x2e,0x0, - 0x69,0x0,0x6e,0x0,0x69,0x0,0x2e,0x0,0xa,0x4,0x12,0x4,0x4b,0x0,0x20,0x4, - 0x3c,0x4,0x3e,0x4,0x36,0x4,0x35,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x37,0x4, - 0x30,0x4,0x33,0x4,0x40,0x4,0x43,0x4,0x37,0x4,0x38,0x4,0x42,0x4,0x4c,0x0, - 0x20,0x4,0x41,0x4,0x3b,0x4,0x35,0x4,0x34,0x4,0x43,0x4,0x4e,0x4,0x49,0x4, - 0x38,0x4,0x35,0x0,0x20,0x4,0x34,0x4,0x35,0x4,0x3b,0x4,0x30,0x0,0x3a,0x0, - 0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xae,0x59, - 0x6f,0x75,0x20,0x6e,0x65,0x65,0x64,0x20,0x74,0x6f,0x20,0x67,0x69,0x76,0x65,0x20, - 0x61,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x20,0x74,0x6f,0x20,0x6c,0x6f, - 0x61,0x64,0x20,0x28,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x20,0x6e,0x6f, - 0x74,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x29,0x21,0x20,0x4d,0x61,0x6b,0x65,0x20, - 0x73,0x75,0x72,0x65,0x20,0x74,0x68,0x61,0x74,0x20,0x69,0x74,0x20,0x69,0x73,0x20, - 0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x60,0x62,0x61,0x73,0x65,0x2f,0x63,0x61,0x73, - 0x65,0x73,0x2f,0x60,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x2c,0x20,0x61,0x6e,0x64, - 0x20,0x74,0x68,0x61,0x74,0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x61,0x20,0x63,0x6f, - 0x72,0x72,0x65,0x63,0x74,0x6c,0x79,0x20,0x66,0x6f,0x72,0x6d,0x61,0x74,0x74,0x65, - 0x64,0x20,0x69,0x6e,0x69,0x2e,0xa,0x43,0x61,0x73,0x65,0x73,0x20,0x79,0x6f,0x75, - 0x20,0x63,0x61,0x6e,0x20,0x6c,0x6f,0x61,0x64,0x3a,0x20,0x25,0x31,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x7c,0x4,0x12,0x4,0x32,0x4,0x35,0x4,0x34,0x4,0x38,0x4,0x42,0x4,0x35,0x0, - 0x20,0x4,0x38,0x4,0x3c,0x4,0x4f,0x0,0x20,0x4,0x44,0x4,0x30,0x4,0x39,0x4, - 0x3b,0x4,0x30,0x0,0x20,0x0,0x28,0x4,0x31,0x4,0x35,0x4,0x37,0x0,0x20,0x4, - 0x40,0x4,0x30,0x4,0x41,0x4,0x48,0x4,0x38,0x4,0x40,0x4,0x35,0x4,0x3d,0x4, - 0x38,0x4,0x4f,0x0,0x29,0x0,0x20,0x4,0x38,0x0,0x20,0x4,0x43,0x4,0x3a,0x4, - 0x30,0x4,0x36,0x4,0x38,0x4,0x42,0x4,0x35,0x0,0x20,0x4,0x41,0x4,0x42,0x4, - 0x30,0x4,0x42,0x4,0x43,0x4,0x41,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x3b,0x4, - 0x30,0x0,0x20,0x4,0x41,0x4,0x43,0x4,0x34,0x4,0x30,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x54,0x59,0x6f,0x75,0x20,0x6e,0x65,0x65,0x64,0x20, - 0x74,0x6f,0x20,0x67,0x69,0x76,0x65,0x20,0x61,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61, - 0x6d,0x65,0x20,0x74,0x6f,0x20,0x73,0x61,0x76,0x65,0x20,0x28,0x65,0x78,0x74,0x65, - 0x6e,0x73,0x69,0x6f,0x6e,0x20,0x6e,0x6f,0x74,0x20,0x6e,0x65,0x65,0x64,0x65,0x64, - 0x29,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x20,0x63,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x20,0x73,0x74,0x61,0x74,0x75,0x73,0x21,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x52,0x4, - 0x22,0x4,0x35,0x4,0x3f,0x4,0x35,0x4,0x40,0x4,0x4c,0x0,0x20,0x4,0x43,0x0, - 0x20,0x4,0x32,0x4,0x30,0x4,0x41,0x0,0x20,0x4,0x35,0x4,0x41,0x4,0x42,0x4, - 0x4c,0x0,0x20,0x4,0x3a,0x4,0x3d,0x4,0x3e,0x4,0x3f,0x4,0x3a,0x4,0x30,0x0, - 0x20,0x0,0x22,0x4,0x1d,0x4,0x35,0x0,0x20,0x4,0x31,0x4,0x35,0x4,0x41,0x4, - 0x3f,0x4,0x3e,0x4,0x3a,0x4,0x3e,0x4,0x38,0x4,0x42,0x4,0x4c,0x0,0x22,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2d,0x59,0x6f,0x75,0x20,0x77, - 0x65,0x72,0x65,0x20,0x67,0x72,0x61,0x6e,0x74,0x65,0x64,0x20,0x74,0x68,0x65,0x20, - 0x44,0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x4d,0x6f,0x64,0x63,0x61,0x6c,0x6c,0x73, - 0x20,0x62,0x75,0x74,0x74,0x6f,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x3c,0x4,0x12,0x4,0x30, - 0x4,0x48,0x4,0x35,0x0,0x20,0x4,0x34,0x4,0x35,0x4,0x3b,0x4,0x3e,0x0,0x20, - 0x0,0x22,0x0,0x25,0x0,0x31,0x0,0x22,0x0,0x20,0x4,0x31,0x4,0x4b,0x4,0x3b, - 0x4,0x3e,0x0,0x20,0x4,0x37,0x4,0x30,0x4,0x33,0x4,0x40,0x4,0x43,0x4,0x36, - 0x4,0x35,0x4,0x3d,0x4,0x3e,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x1a,0x59,0x6f,0x75,0x72,0x20,0x63,0x61,0x73,0x65,0x20,0x22,0x25,0x31,0x22, - 0x20,0x77,0x61,0x73,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x21,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1e, - 0x0,0x5b,0x4,0x1d,0x4,0x15,0x0,0x20,0x4,0x1d,0x4,0x10,0x4,0x19,0x4,0x14, - 0x4,0x15,0x4,0x1d,0x4,0x1e,0x0,0x5d,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x5b,0x4d,0x49,0x53,0x53,0x49,0x4e,0x47, - 0x5d,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1e,0x0,0x5b,0x4,0x22,0x4,0x20,0x4,0x10, - 0x4,0x1d,0x4,0x21,0x4,0x1b,0x4,0x2f,0x4,0x26,0x4,0x18,0x4,0x2f,0x0,0x5d, - 0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb, - 0x5b,0x53,0x54,0x52,0x45,0x41,0x4d,0x5d,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2a,0x4, - 0x32,0x4,0x3a,0x4,0x3b,0x4,0x4e,0x4,0x47,0x4,0x38,0x4,0x3b,0x0,0x28,0x4, - 0x30,0x0,0x29,0x0,0x20,0x4,0x3a,0x4,0x3e,0x4,0x3c,0x4,0x3f,0x4,0x3e,0x4, - 0x37,0x4,0x38,0x4,0x46,0x4,0x38,0x4,0x4e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x11,0x68,0x61,0x73,0x20,0x70,0x6c,0x61,0x79,0x65,0x64,0x20,0x61,0x20, - 0x73,0x6f,0x6e,0x67,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x24,0x4,0x3f,0x4,0x40,0x4,0x35,0x4,0x34, - 0x4,0x4a,0x4,0x4f,0x4,0x32,0x4,0x38,0x4,0x3b,0x0,0x28,0x4,0x30,0x0,0x29, - 0x0,0x20,0x4,0x43,0x4,0x3b,0x4,0x38,0x4,0x3a,0x4,0x43,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x16,0x68,0x61,0x73,0x20,0x70,0x72,0x65,0x73,0x65,0x6e, - 0x74,0x65,0x64,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x26, - 0x4,0x3e,0x4,0x41,0x4,0x42,0x4,0x30,0x4,0x3d,0x4,0x3e,0x4,0x32,0x4,0x38, - 0x4,0x3b,0x0,0x28,0x4,0x30,0x0,0x29,0x0,0x20,0x4,0x3c,0x4,0x43,0x4,0x37, - 0x4,0x4b,0x4,0x3a,0x4,0x43,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x15, - 0x68,0x61,0x73,0x20,0x73,0x74,0x6f,0x70,0x70,0x65,0x64,0x20,0x74,0x68,0x65,0x20, - 0x6d,0x75,0x73,0x69,0x63,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x18,0x4,0x32,0x4,0x4b,0x4,0x3a,0x4, - 0x40,0x4,0x38,0x4,0x3a,0x4,0x3d,0x4,0x43,0x4,0x3b,0x0,0x28,0x4,0x30,0x0, - 0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x73,0x68,0x6f,0x75,0x74, - 0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x26,0x4,0x24,0x4,0x30,0x4,0x39,0x4,0x3b,0x4,0x4b,0x0, - 0x20,0x4,0x34,0x4,0x35,0x4,0x3c,0x4,0x3e,0x0,0x20,0x0,0x28,0x0,0x2a,0x0, - 0x2e,0x0,0x64,0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x29,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x13,0x44,0x65,0x6d,0x6f,0x20,0x46,0x69,0x6c,0x65,0x73,0x20, - 0x28,0x2a,0x2e,0x64,0x65,0x6d,0x6f,0x29,0x7,0x0,0x0,0x0,0xa,0x44,0x65,0x6d, - 0x6f,0x53,0x65,0x72,0x76,0x65,0x72,0x1,0x3,0x0,0x0,0x0,0x1c,0x4,0x17,0x4, - 0x30,0x4,0x33,0x4,0x40,0x4,0x43,0x4,0x37,0x4,0x38,0x4,0x42,0x4,0x4c,0x0, - 0x20,0x4,0x34,0x4,0x35,0x4,0x3c,0x4,0x3e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x9,0x4c,0x6f,0x61,0x64,0x20,0x44,0x65,0x6d,0x6f,0x7,0x0,0x0,0x0, - 0xa,0x44,0x65,0x6d,0x6f,0x53,0x65,0x72,0x76,0x65,0x72,0x1,0x3,0x0,0x0,0xa, - 0xc0,0x0,0x3c,0x0,0x68,0x0,0x32,0x0,0x3e,0x0,0x41,0x0,0x74,0x0,0x74,0x0, - 0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79,0x0,0x20,0x0,0x4f,0x0,0x6e,0x0, - 0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x3c,0x0, - 0x2f,0x0,0x68,0x0,0x32,0x0,0x3e,0x4,0x21,0x4,0x38,0x4,0x3c,0x4,0x43,0x4, - 0x3b,0x4,0x4f,0x4,0x42,0x4,0x3e,0x4,0x40,0x0,0x20,0x4,0x34,0x4,0x40,0x4, - 0x30,0x4,0x3c,0x4,0x4b,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x37,0x4,0x30,0x4, - 0x3b,0x4,0x35,0x0,0x20,0x4,0x41,0x4,0x43,0x4,0x34,0x4,0x30,0x0,0x2e,0x0, - 0x3c,0x0,0x70,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x3e,0x4,0x18,0x4,0x41,0x4, - 0x45,0x4,0x3e,0x4,0x34,0x4,0x3d,0x4,0x4b,0x4,0x39,0x0,0x20,0x4,0x3a,0x4, - 0x3e,0x4,0x34,0x0,0x3a,0x0,0x3c,0x0,0x2f,0x0,0x62,0x0,0x3e,0x0,0x20,0x0, - 0x3c,0x0,0x61,0x0,0x20,0x0,0x68,0x0,0x72,0x0,0x65,0x0,0x66,0x0,0x3d,0x0, - 0x27,0x0,0x68,0x0,0x74,0x0,0x74,0x0,0x70,0x0,0x73,0x0,0x3a,0x0,0x2f,0x0, - 0x2f,0x0,0x67,0x0,0x69,0x0,0x74,0x0,0x68,0x0,0x75,0x0,0x62,0x0,0x2e,0x0, - 0x63,0x0,0x6f,0x0,0x6d,0x0,0x2f,0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f,0x0, - 0x72,0x0,0x6e,0x0,0x65,0x0,0x79,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0, - 0x6e,0x0,0x65,0x0,0x2f,0x0,0x41,0x0,0x4f,0x0,0x32,0x0,0x2d,0x0,0x43,0x0, - 0x6c,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x27,0x0,0x3e,0x0,0x68,0x0, - 0x74,0x0,0x74,0x0,0x70,0x0,0x73,0x0,0x3a,0x0,0x2f,0x0,0x2f,0x0,0x67,0x0, - 0x69,0x0,0x74,0x0,0x68,0x0,0x75,0x0,0x62,0x0,0x2e,0x0,0x63,0x0,0x6f,0x0, - 0x6d,0x0,0x2f,0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0, - 0x65,0x0,0x79,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0, - 0x2f,0x0,0x41,0x0,0x4f,0x0,0x32,0x0,0x2d,0x0,0x43,0x0,0x6c,0x0,0x69,0x0, - 0x65,0x0,0x6e,0x0,0x74,0x0,0x3c,0x0,0x2f,0x0,0x61,0x0,0x3e,0x0,0x3c,0x0, - 0x70,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x3e,0x4,0x1e,0x4,0x41,0x4,0x3d,0x4, - 0x3e,0x4,0x32,0x4,0x3d,0x4,0x30,0x4,0x4f,0x0,0x20,0x4,0x40,0x4,0x30,0x4, - 0x37,0x4,0x40,0x4,0x30,0x4,0x31,0x4,0x3e,0x4,0x42,0x4,0x3a,0x4,0x30,0x0, - 0x3a,0x0,0x3c,0x0,0x2f,0x0,0x62,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x72,0x0, - 0x3e,0x0,0x4f,0x0,0x6d,0x0,0x6e,0x0,0x69,0x0,0x54,0x0,0x72,0x0,0x6f,0x0, - 0x69,0x0,0x64,0x0,0x2c,0x0,0x20,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x6e,0x0, - 0x65,0x0,0x64,0x0,0x44,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x6f,0x0,0x72,0x0, - 0x64,0x0,0x2c,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x6e,0x0,0x67,0x0,0x62,0x0, - 0x79,0x0,0x74,0x0,0x65,0x0,0x31,0x0,0x2c,0x0,0x20,0x0,0x67,0x0,0x61,0x0, - 0x6d,0x0,0x65,0x0,0x62,0x0,0x6f,0x0,0x79,0x0,0x70,0x0,0x72,0x0,0x69,0x0, - 0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x2c,0x0,0x20,0x0,0x43,0x0,0x65,0x0, - 0x72,0x0,0x61,0x0,0x70,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x2c,0x0,0x20,0x0, - 0x43,0x0,0x72,0x0,0x79,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6c,0x0,0x77,0x0, - 0x61,0x0,0x72,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x72,0x0,0x2c,0x0,0x20,0x0, - 0x49,0x0,0x61,0x0,0x6d,0x0,0x67,0x0,0x6f,0x0,0x6f,0x0,0x66,0x0,0x62,0x0, - 0x61,0x0,0x6c,0x0,0x6c,0x0,0x2c,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x31,0x0, - 0x74,0x0,0x69,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x3c,0x0,0x70,0x0,0x3e,0x0, - 0x3c,0x0,0x62,0x0,0x3e,0x4,0x20,0x4,0x30,0x4,0x37,0x4,0x40,0x4,0x30,0x4, - 0x31,0x4,0x3e,0x4,0x42,0x4,0x3a,0x4,0x30,0x0,0x20,0x4,0x3a,0x4,0x3b,0x4, - 0x38,0x4,0x35,0x4,0x3d,0x4,0x42,0x4,0x30,0x0,0x3a,0x0,0x3c,0x0,0x2f,0x0, - 0x62,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x72,0x0,0x3e,0x0,0x43,0x0,0x65,0x0, - 0x6e,0x0,0x74,0x0,0x73,0x0,0x30,0x0,0x32,0x0,0x2c,0x0,0x20,0x0,0x77,0x0, - 0x69,0x0,0x6e,0x0,0x64,0x0,0x72,0x0,0x61,0x0,0x6d,0x0,0x6d,0x0,0x65,0x0, - 0x72,0x0,0x2c,0x0,0x20,0x0,0x73,0x0,0x6b,0x0,0x79,0x0,0x65,0x0,0x64,0x0, - 0x65,0x0,0x76,0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x3c,0x0,0x70,0x0,0x3e,0x0, - 0x3c,0x0,0x62,0x0,0x3e,0x4,0x22,0x4,0x35,0x4,0x41,0x4,0x42,0x4,0x38,0x4, - 0x40,0x4,0x3e,0x4,0x32,0x4,0x30,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x3a,0x0, - 0x3c,0x0,0x2f,0x0,0x62,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x72,0x0,0x3e,0x0, - 0x43,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x79,0x0,0x43,0x0,0x61,0x0,0x7a,0x0, - 0x79,0x0,0x2c,0x0,0x20,0x0,0x43,0x0,0x65,0x0,0x64,0x0,0x72,0x0,0x69,0x0, - 0x63,0x0,0x44,0x0,0x65,0x0,0x77,0x0,0x69,0x0,0x74,0x0,0x74,0x0,0x2c,0x0, - 0x20,0x0,0x43,0x0,0x68,0x0,0x65,0x0,0x77,0x0,0x61,0x0,0x62,0x0,0x6c,0x0, - 0x65,0x0,0x20,0x0,0x54,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x74,0x0, - 0x73,0x0,0x2c,0x0,0x20,0x0,0x43,0x0,0x72,0x0,0x61,0x0,0x7a,0x0,0x79,0x0, - 0x4a,0x0,0x43,0x0,0x2c,0x0,0x20,0x0,0x46,0x0,0x61,0x0,0x6e,0x0,0x74,0x0, - 0x6f,0x0,0x73,0x0,0x2c,0x0,0x20,0x0,0x46,0x0,0x75,0x0,0x72,0x0,0x79,0x0, - 0x20,0x0,0x4d,0x0,0x63,0x0,0x46,0x0,0x6c,0x0,0x75,0x0,0x72,0x0,0x72,0x0, - 0x79,0x0,0x2c,0x0,0x20,0x0,0x47,0x0,0x65,0x0,0x63,0x0,0x6b,0x0,0x2c,0x0, - 0x20,0x0,0x47,0x0,0x69,0x0,0x6e,0x0,0x2d,0x0,0x47,0x0,0x69,0x0,0x2c,0x0, - 0x20,0x0,0x4a,0x0,0x61,0x0,0x6d,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x61,0x0, - 0x2c,0x0,0x20,0x0,0x4d,0x0,0x69,0x0,0x6e,0x0,0x78,0x0,0x2c,0x0,0x20,0x0, - 0x50,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61,0x0,0x65,0x0,0x2c,0x0,0x20,0x0, - 0x52,0x0,0x6f,0x0,0x62,0x0,0x6f,0x0,0x74,0x0,0x69,0x0,0x63,0x0,0x20,0x0, - 0x4f,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x6c,0x0,0x6f,0x0,0x72,0x0,0x64,0x0, - 0x2c,0x0,0x20,0x0,0x53,0x0,0x68,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x77,0x0, - 0x6c,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x73,0x0,0x20,0x0,0x28,0x0,0x61,0x0, - 0x6b,0x0,0x61,0x0,0x20,0x0,0x53,0x0,0x68,0x0,0x61,0x0,0x6c,0x0,0x69,0x0, - 0x29,0x0,0x2c,0x0,0x20,0x0,0x53,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x72,0x0, - 0x61,0x0,0x2c,0x0,0x20,0x0,0x53,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0,0x47,0x0, - 0x75,0x0,0x79,0x0,0x2c,0x0,0x20,0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x69,0x0, - 0x74,0x0,0x61,0x0,0x73,0x0,0x2c,0x0,0x20,0x0,0x57,0x0,0x69,0x0,0x73,0x0, - 0x6f,0x0,0x3c,0x0,0x70,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x3e,0x0,0x54,0x0, - 0x72,0x0,0x61,0x0,0x6e,0x0,0x73,0x0,0x6c,0x0,0x61,0x0,0x74,0x0,0x69,0x0, - 0x6f,0x0,0x6e,0x0,0x73,0x0,0x3a,0x0,0x3c,0x0,0x2f,0x0,0x62,0x0,0x3e,0x0, - 0x3c,0x0,0x62,0x0,0x72,0x0,0x3e,0x0,0x6b,0x0,0x2d,0x0,0x65,0x0,0x6d,0x0, - 0x69,0x0,0x6b,0x0,0x6f,0x0,0x20,0x0,0x28,0x4,0x20,0x4,0x43,0x4,0x41,0x4, - 0x41,0x4,0x3a,0x4,0x38,0x4,0x39,0x0,0x29,0x0,0x2c,0x0,0x20,0x0,0x50,0x0, - 0x79,0x0,0x72,0x0,0x61,0x0,0x71,0x0,0x20,0x0,0x28,0x0,0x50,0x0,0x6f,0x0, - 0x6c,0x0,0x73,0x0,0x6b,0x0,0x69,0x0,0x29,0x0,0x2c,0x0,0x20,0x0,0x73,0x0, - 0x63,0x0,0x61,0x0,0x74,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x66,0x0,0x6c,0x0, - 0x6f,0x0,0x77,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x28,0x65,0xe5,0x67,0x2c,0x8a, - 0x9e,0x0,0x29,0x0,0x2c,0x0,0x20,0x0,0x76,0x0,0x69,0x0,0x6e,0x0,0x74,0x0, - 0x70,0x0,0x72,0x0,0x6f,0x0,0x78,0x0,0x20,0x0,0x28,0x4,0x20,0x4,0x43,0x4, - 0x41,0x4,0x41,0x4,0x3a,0x4,0x38,0x4,0x39,0x0,0x29,0x0,0x2c,0x0,0x20,0x0, - 0x77,0x0,0x69,0x0,0x6e,0x0,0x64,0x0,0x72,0x0,0x61,0x0,0x6d,0x0,0x6d,0x0, - 0x65,0x0,0x72,0x0,0x20,0x0,0x28,0x0,0x45,0x0,0x73,0x0,0x70,0x0,0x61,0x0, - 0xf1,0x0,0x6f,0x0,0x6c,0x0,0x2c,0x0,0x20,0x0,0x50,0x0,0x6f,0x0,0x72,0x0, - 0x74,0x0,0x75,0x0,0x67,0x0,0x75,0x0,0xea,0x0,0x73,0x0,0x29,0x0,0x3c,0x0, - 0x70,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x3e,0x4,0x11,0x4,0x3b,0x4,0x30,0x4, - 0x33,0x4,0x3e,0x4,0x34,0x4,0x30,0x4,0x40,0x4,0x3d,0x4,0x3e,0x4,0x41,0x4, - 0x42,0x4,0x38,0x0,0x3a,0x0,0x3c,0x0,0x2f,0x0,0x62,0x0,0x3e,0x0,0x3c,0x0, - 0x62,0x0,0x72,0x0,0x3e,0x0,0x43,0x0,0x72,0x0,0x61,0x0,0x7a,0x0,0x79,0x0, - 0x4a,0x0,0x43,0x0,0x20,0x0,0x28,0x4,0x34,0x4,0x38,0x4,0x40,0x4,0x35,0x4, - 0x3a,0x4,0x42,0x4,0x3e,0x4,0x40,0x0,0x20,0x4,0x3f,0x4,0x3e,0x0,0x20,0x4, - 0x32,0x4,0x4b,0x4,0x3f,0x4,0x43,0x4,0x41,0x4,0x3a,0x4,0x43,0x0,0x20,0x4, - 0x32,0x4,0x35,0x4,0x40,0x4,0x41,0x4,0x38,0x4,0x38,0x0,0x20,0x0,0x32,0x0, - 0x2e,0x0,0x38,0x0,0x29,0x0,0x20,0x4,0x38,0x0,0x20,0x0,0x4d,0x0,0x61,0x0, - 0x78,0x0,0x69,0x0,0x6d,0x0,0x75,0x0,0x6d,0x0,0x56,0x0,0x6f,0x0,0x6c,0x0, - 0x74,0x0,0x79,0x0,0x20,0x0,0x28,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x34,0x4, - 0x32,0x4,0x38,0x4,0x36,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x35,0x0,0x20,0x4, - 0x32,0x4,0x35,0x4,0x40,0x4,0x41,0x4,0x38,0x4,0x38,0x0,0x20,0x0,0x32,0x0, - 0x2e,0x0,0x38,0x0,0x29,0x0,0x3b,0x0,0x20,0x0,0x52,0x0,0x65,0x0,0x6d,0x0, - 0x79,0x0,0x2c,0x0,0x20,0x0,0x48,0x0,0x69,0x0,0x62,0x0,0x69,0x0,0x6b,0x0, - 0x69,0x0,0x2c,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x75,0x0,0x72,0x0,0x74,0x0, - 0x2d,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x6f,0x0,0x72,0x0,0x64,0x0,0x73,0x0, - 0x2e,0x0,0x6e,0x0,0x65,0x0,0x74,0x0,0x20,0x0,0x28,0x4,0x41,0x4,0x3f,0x4, - 0x40,0x4,0x30,0x4,0x39,0x4,0x42,0x4,0x4b,0x0,0x29,0x0,0x3b,0x0,0x20,0x0, - 0x51,0x0,0x75,0x0,0x62,0x0,0x72,0x0,0x69,0x0,0x63,0x0,0x6b,0x0,0x20,0x0, - 0x28,0x0,0x77,0x0,0x65,0x0,0x62,0x0,0x41,0x0,0x4f,0x0,0x29,0x0,0x3b,0x0, - 0x20,0x0,0x52,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x28,0x4,0x32,0x4,0x35,0x4, - 0x31,0x4,0x41,0x4,0x30,0x4,0x39,0x4,0x42,0x0,0x29,0x0,0x3b,0x0,0x20,0x0, - 0x44,0x0,0x72,0x0,0x61,0x0,0x78,0x0,0x69,0x0,0x72,0x0,0x63,0x0,0x68,0x0, - 0x20,0x0,0x28,0x4,0x34,0x4,0x38,0x4,0x37,0x4,0x30,0x4,0x39,0x4,0x3d,0x0, - 0x20,0x4,0x38,0x4,0x3d,0x4,0x42,0x4,0x35,0x4,0x40,0x4,0x44,0x4,0x35,0x4, - 0x39,0x4,0x41,0x4,0x30,0x0,0x29,0x0,0x3b,0x0,0x20,0x0,0x4c,0x0,0x65,0x0, - 0x77,0x0,0x64,0x0,0x74,0x0,0x6f,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x6e,0x0, - 0x64,0x0,0x20,0x0,0x41,0x0,0x72,0x0,0x67,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0, - 0x75,0x0,0x73,0x0,0x20,0x0,0x28,0x0,0x74,0x0,0x73,0x0,0x75,0x0,0x73,0x0, - 0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x29,0x0,0x3b,0x0,0x20,0x0, - 0x46,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x63,0x0,0x79,0x0,0x2c,0x0,0x20,0x0, - 0x4e,0x0,0x6f,0x0,0x65,0x0,0x76,0x0,0x61,0x0,0x69,0x0,0x6e,0x0,0x2c,0x0, - 0x20,0x0,0x43,0x0,0x72,0x0,0x6f,0x0,0x6e,0x0,0x6e,0x0,0x69,0x0,0x63,0x0, - 0x6f,0x0,0x73,0x0,0x73,0x0,0x79,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x6e,0x0, - 0x64,0x0,0x20,0x0,0x46,0x0,0x61,0x0,0x6e,0x0,0x61,0x0,0x74,0x0,0x53,0x0, - 0x6f,0x0,0x72,0x0,0x73,0x0,0x20,0x0,0x28,0x0,0x41,0x0,0x4f,0x0,0x31,0x0, - 0x29,0x0,0x3b,0x0,0x20,0x4,0x34,0x4,0x35,0x4,0x40,0x4,0x36,0x4,0x30,0x4, - 0x42,0x4,0x35,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x40,0x4, - 0x32,0x4,0x35,0x4,0x40,0x4,0x3e,0x4,0x32,0x0,0x2c,0x0,0x20,0x4,0x13,0x4, - 0x1c,0x0,0x2c,0x0,0x20,0x4,0x1f,0x4,0x14,0x0,0x2c,0x0,0x20,0x4,0x41,0x4, - 0x3e,0x4,0x37,0x4,0x34,0x4,0x30,0x4,0x42,0x4,0x35,0x4,0x3b,0x4,0x38,0x0, - 0x20,0x4,0x3a,0x4,0x3e,0x4,0x3d,0x4,0x42,0x4,0x35,0x4,0x3d,0x4,0x42,0x4, - 0x30,0x0,0x2c,0x0,0x20,0x4,0x38,0x0,0x20,0x4,0x32,0x4,0x41,0x4,0x51,0x0, - 0x20,0x4,0x41,0x4,0x3e,0x4,0x3e,0x4,0x31,0x4,0x49,0x4,0x35,0x4,0x41,0x4, - 0x42,0x4,0x32,0x4,0x3e,0x0,0x20,0x0,0x41,0x0,0x4f,0x0,0x32,0x0,0x21,0x0, - 0x3c,0x0,0x70,0x0,0x3e,0x4,0x1f,0x4,0x40,0x4,0x3e,0x4,0x35,0x4,0x3a,0x4, - 0x42,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x42,0x4,0x35,0x4,0x32,0x4,0x3e,0x4, - 0x39,0x0,0x20,0x4,0x32,0x4,0x38,0x4,0x37,0x4,0x43,0x4,0x30,0x4,0x3b,0x4, - 0x4c,0x4,0x3d,0x4,0x3e,0x4,0x39,0x0,0x20,0x4,0x3d,0x4,0x3e,0x4,0x32,0x4, - 0x35,0x4,0x3b,0x4,0x3b,0x4,0x4b,0x0,0x20,0x0,0x41,0x0,0x74,0x0,0x74,0x0, - 0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79,0x0,0x20,0x0,0x4f,0x0,0x6e,0x0, - 0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x28,0x0,0x63,0x0,0x29,0x0, - 0x20,0x0,0x32,0x0,0x30,0x0,0x31,0x0,0x36,0x0,0x2d,0x0,0x32,0x0,0x30,0x0, - 0x32,0x0,0x31,0x0,0x20,0x4,0x40,0x4,0x30,0x4,0x37,0x4,0x40,0x4,0x30,0x4, - 0x31,0x4,0x3e,0x4,0x42,0x4,0x47,0x4,0x38,0x4,0x3a,0x4,0x38,0x0,0x20,0x0, - 0x41,0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79,0x0, - 0x20,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x2e,0x0, - 0x20,0x4,0x1f,0x4,0x40,0x4,0x38,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x4f,0x4, - 0x35,0x4,0x42,0x4,0x41,0x4,0x4f,0x0,0x20,0x4,0x3b,0x4,0x38,0x4,0x46,0x4, - 0x35,0x4,0x3d,0x4,0x37,0x4,0x38,0x4,0x4f,0x0,0x20,0x4,0x3d,0x4,0x30,0x0, - 0x20,0x4,0x3e,0x4,0x42,0x4,0x3a,0x4,0x40,0x4,0x4b,0x4,0x42,0x4,0x3e,0x4, - 0x35,0x0,0x20,0x4,0x1f,0x4,0x1e,0x0,0x2e,0x0,0x20,0x4,0x12,0x4,0x41,0x4, - 0x35,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x47,0x4,0x38,0x4,0x35,0x0, - 0x20,0x4,0x44,0x4,0x30,0x4,0x39,0x4,0x3b,0x4,0x4b,0x0,0x20,0x4,0x4f,0x4, - 0x32,0x4,0x3b,0x4,0x4f,0x4,0x4e,0x4,0x42,0x4,0x41,0x4,0x4f,0x0,0x20,0x4, - 0x41,0x4,0x3e,0x4,0x31,0x4,0x41,0x4,0x42,0x4,0x32,0x4,0x35,0x4,0x3d,0x4, - 0x3d,0x4,0x3e,0x4,0x41,0x4,0x42,0x4,0x4c,0x4,0x4e,0x0,0x20,0x4,0x38,0x4, - 0x45,0x0,0x20,0x4,0x32,0x4,0x3b,0x4,0x30,0x4,0x34,0x4,0x35,0x4,0x3b,0x4, - 0x4c,0x4,0x46,0x4,0x35,0x4,0x32,0x0,0x2e,0x0,0x3c,0x0,0x70,0x0,0x3e,0x4, - 0x20,0x4,0x30,0x4,0x31,0x4,0x3e,0x4,0x42,0x4,0x30,0x4,0x35,0x4,0x42,0x0, - 0x20,0x4,0x3d,0x4,0x30,0x0,0x20,0x0,0x51,0x0,0x74,0x0,0x20,0x4,0x32,0x4, - 0x35,0x4,0x40,0x4,0x41,0x4,0x38,0x4,0x38,0x0,0x20,0x0,0x25,0x0,0x32,0x0, - 0x20,0x4,0x41,0x0,0x20,0x4,0x30,0x4,0x43,0x4,0x34,0x4,0x38,0x4,0x3e,0x0, - 0x2d,0x4,0x34,0x4,0x32,0x4,0x38,0x4,0x36,0x4,0x3a,0x4,0x3e,0x4,0x3c,0x0, - 0x20,0x0,0x42,0x0,0x41,0x0,0x53,0x0,0x53,0x0,0x2e,0x0,0x3c,0x0,0x62,0x0, - 0x72,0x0,0x3e,0x4,0x1f,0x4,0x3b,0x4,0x30,0x4,0x33,0x4,0x38,0x4,0x3d,0x0, - 0x20,0x0,0x41,0x0,0x50,0x0,0x4e,0x0,0x47,0x0,0x20,0x4,0x37,0x4,0x30,0x4, - 0x33,0x4,0x40,0x4,0x43,0x4,0x36,0x4,0x35,0x4,0x3d,0x0,0x3a,0x0,0x20,0x0, - 0x25,0x0,0x33,0x0,0x3c,0x0,0x70,0x0,0x3e,0x4,0x21,0x4,0x31,0x4,0x3e,0x4, - 0x40,0x4,0x3a,0x4,0x30,0x0,0x20,0x4,0x3e,0x4,0x42,0x0,0x20,0x0,0x25,0x0, - 0x34,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x5,0x81,0x3c,0x68,0x32,0x3e,0x41, - 0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x25, - 0x31,0x3c,0x2f,0x68,0x32,0x3e,0x54,0x68,0x65,0x20,0x63,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x20,0x64,0x72,0x61,0x6d,0x61,0x20,0x73,0x69,0x6d,0x75,0x6c,0x61, - 0x74,0x6f,0x72,0x2e,0x3c,0x70,0x3e,0x3c,0x62,0x3e,0x53,0x6f,0x75,0x72,0x63,0x65, - 0x20,0x63,0x6f,0x64,0x65,0x3a,0x3c,0x2f,0x62,0x3e,0x20,0x3c,0x61,0x20,0x68,0x72, - 0x65,0x66,0x3d,0x27,0x68,0x74,0x74,0x70,0x73,0x3a,0x2f,0x2f,0x67,0x69,0x74,0x68, - 0x75,0x62,0x2e,0x63,0x6f,0x6d,0x2f,0x41,0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x4f, - 0x6e,0x6c,0x69,0x6e,0x65,0x2f,0x41,0x4f,0x32,0x2d,0x43,0x6c,0x69,0x65,0x6e,0x74, - 0x27,0x3e,0x68,0x74,0x74,0x70,0x73,0x3a,0x2f,0x2f,0x67,0x69,0x74,0x68,0x75,0x62, - 0x2e,0x63,0x6f,0x6d,0x2f,0x41,0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x4f,0x6e,0x6c, - 0x69,0x6e,0x65,0x2f,0x41,0x4f,0x32,0x2d,0x43,0x6c,0x69,0x65,0x6e,0x74,0x3c,0x2f, - 0x61,0x3e,0x3c,0x70,0x3e,0x3c,0x62,0x3e,0x4d,0x61,0x6a,0x6f,0x72,0x20,0x64,0x65, - 0x76,0x65,0x6c,0x6f,0x70,0x6d,0x65,0x6e,0x74,0x3a,0x3c,0x2f,0x62,0x3e,0x3c,0x62, - 0x72,0x3e,0x4f,0x6d,0x6e,0x69,0x54,0x72,0x6f,0x69,0x64,0x2c,0x20,0x73,0x74,0x6f, - 0x6e,0x65,0x64,0x44,0x69,0x73,0x63,0x6f,0x72,0x64,0x2c,0x20,0x6c,0x6f,0x6e,0x67, - 0x62,0x79,0x74,0x65,0x31,0x2c,0x20,0x67,0x61,0x6d,0x65,0x62,0x6f,0x79,0x70,0x72, - 0x69,0x6e,0x74,0x65,0x72,0x2c,0x20,0x43,0x65,0x72,0x61,0x70,0x74,0x65,0x72,0x2c, - 0x20,0x43,0x72,0x79,0x73,0x74,0x61,0x6c,0x77,0x61,0x72,0x72,0x69,0x6f,0x72,0x2c, - 0x20,0x49,0x61,0x6d,0x67,0x6f,0x6f,0x66,0x62,0x61,0x6c,0x6c,0x2c,0x20,0x69,0x6e, - 0x31,0x74,0x69,0x61,0x74,0x65,0x3c,0x70,0x3e,0x3c,0x62,0x3e,0x43,0x6c,0x69,0x65, - 0x6e,0x74,0x20,0x64,0x65,0x76,0x65,0x6c,0x6f,0x70,0x6d,0x65,0x6e,0x74,0x3a,0x3c, - 0x2f,0x62,0x3e,0x3c,0x62,0x72,0x3e,0x43,0x65,0x6e,0x74,0x73,0x30,0x32,0x2c,0x20, - 0x77,0x69,0x6e,0x64,0x72,0x61,0x6d,0x6d,0x65,0x72,0x2c,0x20,0x73,0x6b,0x79,0x65, - 0x64,0x65,0x76,0x69,0x6e,0x67,0x3c,0x70,0x3e,0x3c,0x62,0x3e,0x51,0x41,0x20,0x74, - 0x65,0x73,0x74,0x69,0x6e,0x67,0x3a,0x3c,0x2f,0x62,0x3e,0x3c,0x62,0x72,0x3e,0x43, - 0x61,0x73,0x65,0x79,0x43,0x61,0x7a,0x79,0x2c,0x20,0x43,0x65,0x64,0x72,0x69,0x63, - 0x44,0x65,0x77,0x69,0x74,0x74,0x2c,0x20,0x43,0x68,0x65,0x77,0x61,0x62,0x6c,0x65, - 0x20,0x54,0x61,0x62,0x6c,0x65,0x74,0x73,0x2c,0x20,0x43,0x72,0x61,0x7a,0x79,0x4a, - 0x43,0x2c,0x20,0x46,0x61,0x6e,0x74,0x6f,0x73,0x2c,0x20,0x46,0x75,0x72,0x79,0x20, - 0x4d,0x63,0x46,0x6c,0x75,0x72,0x72,0x79,0x2c,0x20,0x47,0x65,0x63,0x6b,0x2c,0x20, - 0x47,0x69,0x6e,0x2d,0x47,0x69,0x2c,0x20,0x4a,0x61,0x6d,0x61,0x6e,0x69,0x61,0x2c, - 0x20,0x4d,0x69,0x6e,0x78,0x2c,0x20,0x50,0x61,0x6e,0x64,0x61,0x65,0x2c,0x20,0x52, - 0x6f,0x62,0x6f,0x74,0x69,0x63,0x20,0x4f,0x76,0x65,0x72,0x6c,0x6f,0x72,0x64,0x2c, - 0x20,0x53,0x68,0x61,0x64,0x6f,0x77,0x6c,0x69,0x6f,0x6e,0x73,0x20,0x28,0x61,0x6b, - 0x61,0x20,0x53,0x68,0x61,0x6c,0x69,0x29,0x2c,0x20,0x53,0x69,0x65,0x72,0x72,0x61, - 0x2c,0x20,0x53,0x6f,0x6d,0x65,0x47,0x75,0x79,0x2c,0x20,0x56,0x65,0x72,0x69,0x74, - 0x61,0x73,0x2c,0x20,0x57,0x69,0x73,0x6f,0x3c,0x70,0x3e,0x3c,0x62,0x3e,0x54,0x72, - 0x61,0x6e,0x73,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x3c,0x2f,0x62,0x3e,0x3c, - 0x62,0x72,0x3e,0x6b,0x2d,0x65,0x6d,0x69,0x6b,0x6f,0x20,0x28,0xd0,0xa0,0xd1,0x83, - 0xd1,0x81,0xd1,0x81,0xd0,0xba,0xd0,0xb8,0xd0,0xb9,0x29,0x2c,0x20,0x50,0x79,0x72, - 0x61,0x71,0x20,0x28,0x50,0x6f,0x6c,0x73,0x6b,0x69,0x29,0x2c,0x20,0x73,0x63,0x61, - 0x74,0x74,0x65,0x72,0x66,0x6c,0x6f,0x77,0x65,0x72,0x20,0x28,0xe6,0x97,0xa5,0xe6, - 0x9c,0xac,0xe8,0xaa,0x9e,0x29,0x2c,0x20,0x76,0x69,0x6e,0x74,0x70,0x72,0x6f,0x78, - 0x20,0x28,0xd0,0xa0,0xd1,0x83,0xd1,0x81,0xd1,0x81,0xd0,0xba,0xd0,0xb8,0xd0,0xb9, - 0x29,0x2c,0x20,0x77,0x69,0x6e,0x64,0x72,0x61,0x6d,0x6d,0x65,0x72,0x20,0x28,0x45, - 0x73,0x70,0x61,0xc3,0xb1,0x6f,0x6c,0x2c,0x20,0x50,0x6f,0x72,0x74,0x75,0x67,0x75, - 0xc3,0xaa,0x73,0x29,0x3c,0x70,0x3e,0x3c,0x62,0x3e,0x53,0x70,0x65,0x63,0x69,0x61, - 0x6c,0x20,0x74,0x68,0x61,0x6e,0x6b,0x73,0x3a,0x3c,0x2f,0x62,0x3e,0x3c,0x62,0x72, - 0x3e,0x43,0x72,0x61,0x7a,0x79,0x4a,0x43,0x20,0x28,0x32,0x2e,0x38,0x20,0x72,0x65, - 0x6c,0x65,0x61,0x73,0x65,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x29,0x20, - 0x61,0x6e,0x64,0x20,0x4d,0x61,0x78,0x69,0x6d,0x75,0x6d,0x56,0x6f,0x6c,0x74,0x79, - 0x20,0x28,0x32,0x2e,0x38,0x20,0x72,0x65,0x6c,0x65,0x61,0x73,0x65,0x20,0x70,0x72, - 0x6f,0x6d,0x6f,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x20,0x52,0x65,0x6d,0x79,0x2c,0x20, - 0x48,0x69,0x62,0x69,0x6b,0x69,0x2c,0x20,0x63,0x6f,0x75,0x72,0x74,0x2d,0x72,0x65, - 0x63,0x6f,0x72,0x64,0x73,0x2e,0x6e,0x65,0x74,0x20,0x28,0x73,0x70,0x72,0x69,0x74, - 0x65,0x73,0x29,0x3b,0x20,0x51,0x75,0x62,0x72,0x69,0x63,0x6b,0x20,0x28,0x77,0x65, - 0x62,0x41,0x4f,0x29,0x3b,0x20,0x52,0x75,0x65,0x20,0x28,0x77,0x65,0x62,0x73,0x69, - 0x74,0x65,0x29,0x3b,0x20,0x44,0x72,0x61,0x78,0x69,0x72,0x63,0x68,0x20,0x28,0x55, - 0x49,0x20,0x64,0x65,0x73,0x69,0x67,0x6e,0x29,0x3b,0x20,0x4c,0x65,0x77,0x64,0x74, - 0x6f,0x6e,0x20,0x61,0x6e,0x64,0x20,0x41,0x72,0x67,0x6f,0x6e,0x65,0x75,0x73,0x20, - 0x28,0x74,0x73,0x75,0x73,0x65,0x72,0x76,0x65,0x72,0x29,0x3b,0x20,0x46,0x69,0x65, - 0x72,0x63,0x79,0x2c,0x20,0x4e,0x6f,0x65,0x76,0x61,0x69,0x6e,0x2c,0x20,0x43,0x72, - 0x6f,0x6e,0x6e,0x69,0x63,0x6f,0x73,0x73,0x79,0x2c,0x20,0x61,0x6e,0x64,0x20,0x46, - 0x61,0x6e,0x61,0x74,0x53,0x6f,0x72,0x73,0x20,0x28,0x41,0x4f,0x31,0x29,0x3b,0x20, - 0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x68,0x6f,0x73,0x74,0x73,0x2c,0x20,0x67,0x61, - 0x6d,0x65,0x20,0x6d,0x61,0x73,0x74,0x65,0x72,0x73,0x2c,0x20,0x63,0x61,0x73,0x65, - 0x20,0x6d,0x61,0x6b,0x65,0x72,0x73,0x2c,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74, - 0x20,0x63,0x72,0x65,0x61,0x74,0x6f,0x72,0x73,0x2c,0x20,0x61,0x6e,0x64,0x20,0x74, - 0x68,0x65,0x20,0x77,0x68,0x6f,0x6c,0x65,0x20,0x41,0x4f,0x32,0x20,0x63,0x6f,0x6d, - 0x6d,0x75,0x6e,0x69,0x74,0x79,0x21,0x3c,0x70,0x3e,0x54,0x68,0x65,0x20,0x41,0x74, - 0x74,0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x6e,0x65, - 0x74,0x77,0x6f,0x72,0x6b,0x65,0x64,0x20,0x76,0x69,0x73,0x75,0x61,0x6c,0x20,0x6e, - 0x6f,0x76,0x65,0x6c,0x20,0x70,0x72,0x6f,0x6a,0x65,0x63,0x74,0x20,0x69,0x73,0x20, - 0x63,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x32,0x30, - 0x31,0x36,0x2d,0x32,0x30,0x32,0x31,0x20,0x41,0x74,0x74,0x6f,0x72,0x6e,0x65,0x79, - 0x20,0x4f,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x64,0x65,0x76,0x65,0x6c,0x6f,0x70,0x65, - 0x72,0x73,0x2e,0x20,0x4f,0x70,0x65,0x6e,0x2d,0x73,0x6f,0x75,0x72,0x63,0x65,0x20, - 0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x73,0x20,0x61,0x70,0x70,0x6c,0x79,0x2e,0x20, - 0x41,0x6c,0x6c,0x20,0x6f,0x74,0x68,0x65,0x72,0x20,0x61,0x73,0x73,0x65,0x74,0x73, - 0x20,0x61,0x72,0x65,0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74, - 0x79,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x72,0x65,0x73,0x70,0x65, - 0x63,0x74,0x69,0x76,0x65,0x20,0x6f,0x77,0x6e,0x65,0x72,0x73,0x2e,0x3c,0x70,0x3e, - 0x52,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x20,0x6f,0x6e,0x20,0x51,0x74,0x20,0x76,0x65, - 0x72,0x73,0x69,0x6f,0x6e,0x20,0x25,0x32,0x20,0x77,0x69,0x74,0x68,0x20,0x74,0x68, - 0x65,0x20,0x42,0x41,0x53,0x53,0x20,0x61,0x75,0x64,0x69,0x6f,0x20,0x65,0x6e,0x67, - 0x69,0x6e,0x65,0x2e,0x3c,0x62,0x72,0x3e,0x41,0x50,0x4e,0x47,0x20,0x70,0x6c,0x75, - 0x67,0x69,0x6e,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x3a,0x20,0x25,0x33,0x3c,0x70, - 0x3e,0x42,0x75,0x69,0x6c,0x74,0x20,0x6f,0x6e,0x20,0x25,0x34,0x7,0x0,0x0,0x0, - 0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x16,0x4,0x1e,0x0,0x20, - 0x4,0x3f,0x4,0x40,0x4,0x3e,0x4,0x33,0x4,0x40,0x4,0x30,0x4,0x3c,0x4,0x3c, - 0x4,0x35,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x41,0x62,0x6f,0x75, - 0x74,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0, - 0x4a,0x4,0x18,0x4,0x37,0x4,0x3c,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x42,0x4, - 0x4c,0x0,0x20,0x4,0x3f,0x4,0x30,0x4,0x40,0x4,0x30,0x4,0x3c,0x4,0x35,0x4, - 0x42,0x4,0x40,0x4,0x4b,0x0,0x20,0x4,0x40,0x4,0x30,0x4,0x31,0x4,0x3e,0x4, - 0x42,0x4,0x4b,0x0,0x20,0x4,0x3f,0x4,0x40,0x4,0x38,0x4,0x3b,0x4,0x3e,0x4, - 0x36,0x4,0x35,0x4,0x3d,0x4,0x38,0x4,0x4f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x33,0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x79,0x6f,0x75,0x20, - 0x74,0x6f,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x76,0x61,0x72,0x69,0x6f,0x75, - 0x73,0x20,0x61,0x73,0x70,0x65,0x63,0x74,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65, - 0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x2e,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62, - 0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x24,0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f, - 0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79,0x0,0x20,0x0,0x4f,0x0,0x6e,0x0,0x6c, - 0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x12,0x41,0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f, - 0x6e,0x6c,0x69,0x6e,0x65,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62, - 0x62,0x79,0x1,0x3,0x0,0x0,0x0,0xc,0x4,0x1e,0x4,0x42,0x4,0x3c,0x4,0x35, - 0x4,0x3d,0x4,0x30,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x61, - 0x6e,0x63,0x65,0x6c,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3, - 0x0,0x0,0x0,0xec,0x4,0x1a,0x4,0x30,0x4,0x36,0x4,0x35,0x4,0x42,0x4,0x41, - 0x4,0x4f,0x0,0x2c,0x0,0x20,0x4,0x32,0x4,0x30,0x4,0x48,0x0,0x20,0x4,0x3a, - 0x4,0x3b,0x4,0x38,0x4,0x35,0x4,0x3d,0x4,0x42,0x0,0x20,0x4,0x3d,0x4,0x35, - 0x4,0x3f,0x4,0x40,0x4,0x30,0x4,0x32,0x4,0x38,0x4,0x3b,0x4,0x4c,0x4,0x3d, - 0x4,0x3e,0x0,0x20,0x4,0x3d,0x4,0x30,0x4,0x41,0x4,0x42,0x4,0x40,0x4,0x3e, - 0x4,0x35,0x4,0x3d,0x0,0x2e,0x0,0xa,0x4,0x12,0x4,0x4b,0x0,0x20,0x4,0x42, - 0x4,0x3e,0x4,0x47,0x4,0x3d,0x4,0x3e,0x0,0x20,0x4,0x41,0x4,0x3a,0x4,0x30, - 0x4,0x47,0x4,0x30,0x4,0x3b,0x4,0x38,0x0,0x20,0x4,0x32,0x4,0x41,0x4,0x35, - 0x0,0x20,0x4,0x40,0x4,0x35,0x4,0x41,0x4,0x43,0x4,0x40,0x4,0x41,0x4,0x4b, - 0x0,0x20,0x4,0x41,0x0,0x20,0x0,0x74,0x0,0x69,0x0,0x6e,0x0,0x79,0x0,0x2e, - 0x0,0x63,0x0,0x63,0x0,0x2f,0x0,0x67,0x0,0x65,0x0,0x74,0x0,0x61,0x0,0x6f, - 0x0,0x2c,0x0,0x20,0x4,0x32,0x4,0x3a,0x4,0x3b,0x4,0x4e,0x4,0x47,0x4,0x30, - 0x4,0x4f,0x0,0x20,0x4,0x3e,0x4,0x33,0x4,0x40,0x4,0x3e,0x4,0x3c,0x4,0x3d, - 0x4,0x43,0x4,0x4e,0x0,0x20,0x4,0x3f,0x4,0x30,0x4,0x3f,0x4,0x3a,0x4,0x43, - 0x0,0x20,0x0,0x60,0x0,0x62,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x60,0x0,0x3f, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x95,0x49,0x74,0x20,0x64,0x6f,0x65, - 0x73,0x6e,0x27,0x74,0x20,0x6c,0x6f,0x6f,0x6b,0x20,0x6c,0x69,0x6b,0x65,0x20,0x79, - 0x6f,0x75,0x72,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x69,0x73,0x20,0x73,0x65, - 0x74,0x20,0x75,0x70,0x20,0x63,0x6f,0x72,0x72,0x65,0x63,0x74,0x6c,0x79,0x2e,0xa, - 0x44,0x69,0x64,0x20,0x79,0x6f,0x75,0x20,0x64,0x6f,0x77,0x6e,0x6c,0x6f,0x61,0x64, - 0x20,0x61,0x6c,0x6c,0x20,0x72,0x65,0x73,0x6f,0x75,0x72,0x63,0x65,0x73,0x20,0x63, - 0x6f,0x72,0x72,0x65,0x63,0x74,0x6c,0x79,0x20,0x66,0x72,0x6f,0x6d,0x20,0x74,0x69, - 0x6e,0x79,0x2e,0x63,0x63,0x2f,0x67,0x65,0x74,0x61,0x6f,0x2c,0x20,0x69,0x6e,0x63, - 0x6c,0x75,0x64,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x6c,0x61,0x72,0x67,0x65, - 0x20,0x27,0x62,0x61,0x73,0x65,0x27,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x3f,0x7, - 0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x10,0x4, - 0x17,0x4,0x30,0x4,0x33,0x4,0x40,0x4,0x43,0x4,0x37,0x4,0x3a,0x4,0x30,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67, - 0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0xe, - 0x4,0x1d,0x4,0x38,0x4,0x3a,0x4,0x3d,0x4,0x35,0x4,0x39,0x4,0x3c,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x4e,0x61,0x6d,0x65,0x7,0x0,0x0,0x0, - 0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x6,0x4,0x1d,0x4,0x35, - 0x4,0x42,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2,0x4e,0x6f,0x7,0x0, - 0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x12,0x4,0x1d, - 0x4,0x35,0x0,0x20,0x4,0x32,0x0,0x20,0x4,0x41,0x4,0x35,0x4,0x42,0x4,0x38, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4f,0x66,0x66,0x6c,0x69,0x6e, - 0x65,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0, - 0x1a,0x4,0x1e,0x4,0x3d,0x4,0x3b,0x4,0x30,0x4,0x39,0x4,0x3d,0x0,0x3a,0x0, - 0x20,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xd,0x4f,0x6e,0x6c,0x69,0x6e,0x65,0x3a,0x20,0x25,0x31,0x2f, - 0x25,0x32,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0, - 0x0,0xa,0x4,0x1f,0x4,0x3e,0x4,0x38,0x4,0x41,0x4,0x3a,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x6,0x53,0x65,0x61,0x72,0x63,0x68,0x7,0x0,0x0,0x0, - 0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x12,0x4,0x1d,0x4,0x30, - 0x4,0x41,0x4,0x42,0x4,0x40,0x4,0x3e,0x4,0x39,0x4,0x3a,0x4,0x38,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x65,0x74,0x74,0x69,0x6e,0x67,0x73, - 0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x14, - 0x4,0x12,0x4,0x35,0x4,0x40,0x4,0x41,0x4,0x38,0x4,0x4f,0x0,0x3a,0x0,0x20, - 0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x56,0x65, - 0x72,0x73,0x69,0x6f,0x6e,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f, - 0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x4,0x4,0x14,0x4,0x30,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x59,0x65,0x73,0x7,0x0,0x0,0x0,0x5,0x4c, - 0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x6,0x4,0x3d,0x0,0x2f,0x4,0x34, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x55,0x4e,0x4b,0x4e,0x4f,0x57, - 0x4e,0x7,0x0,0x0,0x0,0xc,0x63,0x68,0x61,0x74,0x6c,0x6f,0x67,0x70,0x69,0x65, - 0x63,0x65,0x1,0x3,0x0,0x0,0x0,0xc,0x4,0x1e,0x4,0x48,0x4,0x38,0x4,0x31, - 0x4,0x3a,0x4,0x30,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x45,0x72, - 0x72,0x6f,0x72,0x7,0x0,0x0,0x0,0xf,0x64,0x65,0x62,0x75,0x67,0x5f,0x66,0x75, - 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x1,0x3,0x0,0x0,0x0,0x14,0x4,0x1e,0x4, - 0x48,0x4,0x38,0x4,0x31,0x4,0x3a,0x4,0x30,0x0,0x3a,0x0,0x20,0x0,0x25,0x0, - 0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x45,0x72,0x72,0x6f,0x72, - 0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xf,0x64,0x65,0x62,0x75,0x67,0x5f,0x66, - 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x1,0x3,0x0,0x0,0x0,0x16,0x4,0x23, - 0x4,0x32,0x4,0x35,0x4,0x34,0x4,0x3e,0x4,0x3c,0x4,0x3b,0x4,0x35,0x4,0x3d, - 0x4,0x38,0x4,0x35,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4e,0x6f, - 0x74,0x69,0x63,0x65,0x7,0x0,0x0,0x0,0xf,0x64,0x65,0x62,0x75,0x67,0x5f,0x66, - 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x1,0x88,0x0,0x0,0x0,0xd,0x11,0x1, - 0xfd,0x29,0xb,0xff,0x14,0x2,0x4,0xfd,0x2c,0xa,0x13, - // /media/stoned/SHARED/Git/AO2-Client/resource/translations/ao_pt.qm - 0x0,0x0,0x9f,0x1a, - 0x3c, - 0xb8,0x64,0x18,0xca,0xef,0x9c,0x95,0xcd,0x21,0x1c,0xbf,0x60,0xa1,0xbd,0xdd,0xa7, - 0x0,0x0,0x0,0x5,0x70,0x74,0x5f,0x42,0x52,0x42,0x0,0x0,0x7,0x88,0x0,0x0, - 0x5,0x4f,0x0,0x0,0x95,0x63,0x0,0x0,0x44,0x3d,0x0,0x0,0x47,0x13,0x0,0x0, - 0x48,0xa,0x0,0x0,0x15,0x57,0x0,0x0,0x57,0x85,0x0,0x0,0x6b,0xe1,0x0,0x0, - 0x59,0xd8,0x0,0x0,0x78,0x32,0x0,0x0,0x5f,0xc3,0x0,0x0,0x96,0x9c,0x0,0x4, - 0xd3,0x0,0x0,0x0,0x5f,0xaa,0x0,0x5,0x48,0x35,0x0,0x0,0x66,0xa7,0x0,0x5, - 0x48,0x35,0x0,0x0,0x95,0x3d,0x0,0x5,0x56,0x45,0x0,0x0,0x67,0xdd,0x0,0x5, - 0x7b,0xba,0x0,0x0,0x33,0x45,0x0,0x1d,0xb,0x21,0x0,0x0,0x96,0x63,0x0,0x33, - 0x9c,0xa,0x0,0x0,0x1a,0xac,0x0,0x47,0x96,0xc4,0x0,0x0,0x91,0xe5,0x0,0x48, - 0xba,0xff,0x0,0x0,0x13,0x61,0x0,0x49,0x30,0x73,0x0,0x0,0x4b,0xa1,0x0,0x4c, - 0x99,0x62,0x0,0x0,0x5e,0x3,0x0,0x4c,0x99,0x62,0x0,0x0,0x96,0xe7,0x0,0x4e, - 0xb8,0x84,0x0,0x0,0x60,0x35,0x0,0x54,0xc9,0xf3,0x0,0x0,0x66,0x84,0x0,0x5a, - 0x81,0xbe,0x0,0x0,0x7c,0xd0,0x0,0x5b,0xee,0x2e,0x0,0x0,0x62,0xd2,0x0,0x5c, - 0xcf,0x9e,0x0,0x0,0x60,0xd5,0x0,0x73,0x9c,0x8e,0x0,0x0,0x40,0x25,0x0,0x74, - 0x22,0x2e,0x0,0x0,0x28,0x10,0x0,0x81,0x97,0x4e,0x0,0x0,0x39,0x38,0x0,0x8b, - 0xa2,0x99,0x0,0x0,0x73,0x89,0x0,0x9a,0x6c,0xca,0x0,0x0,0x18,0x0,0x0,0xa0, - 0x39,0x3e,0x0,0x0,0x50,0xc7,0x0,0xa5,0x9e,0x4e,0x0,0x0,0x0,0x58,0x0,0xb7, - 0xb7,0x3e,0x0,0x0,0x76,0x78,0x0,0xc6,0xda,0xde,0x0,0x0,0x2b,0x33,0x0,0xd1, - 0x29,0xfe,0x0,0x0,0x1c,0xcd,0x0,0xf4,0x21,0x9e,0x0,0x0,0x88,0x7,0x1,0x8, - 0x6f,0x91,0x0,0x0,0x79,0x9c,0x1,0x8,0xc3,0x9a,0x0,0x0,0x17,0x63,0x1,0xb, - 0xd3,0x5e,0x0,0x0,0x65,0xd4,0x1,0xe,0x4a,0x51,0x0,0x0,0x4e,0xee,0x1,0x11, - 0x0,0x3,0x0,0x0,0x55,0xda,0x1,0x36,0x85,0x9e,0x0,0x0,0x56,0x47,0x1,0x6a, - 0x19,0x1a,0x0,0x0,0x3d,0x2b,0x1,0x6d,0x91,0xe4,0x0,0x0,0x82,0x23,0x1,0x71, - 0x35,0x8e,0x0,0x0,0x7c,0xff,0x1,0x71,0xfc,0x57,0x0,0x0,0x91,0x3e,0x1,0x90, - 0x8a,0xff,0x0,0x0,0x93,0x31,0x1,0xc6,0x62,0xee,0x0,0x0,0x18,0xcf,0x1,0xd4, - 0x4c,0xee,0x0,0x0,0x23,0xf5,0x1,0xec,0xca,0xde,0x0,0x0,0x4d,0xa2,0x1,0xf4, - 0xee,0x2e,0x0,0x0,0x58,0x30,0x2,0x21,0x83,0xba,0x0,0x0,0x14,0x95,0x2,0x2a, - 0xb9,0xea,0x0,0x0,0x3c,0x91,0x2,0x48,0x6f,0xbe,0x0,0x0,0x6e,0x5d,0x2,0x5b, - 0x7c,0x2e,0x0,0x0,0x72,0xbc,0x2,0x61,0xf3,0x4e,0x0,0x0,0x3,0xe4,0x2,0x77, - 0xf8,0xaa,0x0,0x0,0x13,0x94,0x2,0x7c,0x19,0x8a,0x0,0x0,0x14,0xe5,0x2,0x89, - 0x29,0x7e,0x0,0x0,0x41,0x64,0x2,0x89,0xc1,0x81,0x0,0x0,0x8e,0xfb,0x2,0x92, - 0x1b,0xfe,0x0,0x0,0x82,0x5f,0x2,0xb5,0x2d,0xae,0x0,0x0,0x4b,0xc4,0x2,0xc5, - 0x76,0x61,0x0,0x0,0x0,0x0,0x2,0xc5,0x76,0x61,0x0,0x0,0x92,0xb1,0x2,0xc6, - 0xd5,0xca,0x0,0x0,0x14,0x4d,0x2,0xe6,0xd3,0xa2,0x0,0x0,0x4d,0x2a,0x2,0xf7, - 0xb3,0xca,0x0,0x0,0x2e,0x8f,0x3,0x3e,0x21,0x33,0x0,0x0,0x15,0x84,0x3,0x4c, - 0x3,0x4e,0x0,0x0,0x57,0x12,0x3,0x4f,0x76,0x7e,0x0,0x0,0x72,0x2,0x3,0x57, - 0xb0,0x17,0x0,0x0,0x1,0xbb,0x3,0x57,0xb0,0x17,0x0,0x0,0x95,0x8,0x3,0x69, - 0x45,0x7a,0x0,0x0,0x3c,0xda,0x3,0xba,0xa8,0xe5,0x0,0x0,0x62,0xab,0x3,0xca, - 0x97,0x85,0x0,0x0,0x65,0x9f,0x3,0xdb,0x87,0x6a,0x0,0x0,0x2e,0xdc,0x3,0xf4, - 0x58,0xee,0x0,0x0,0x2a,0x9,0x3,0xf6,0xdf,0x45,0x0,0x0,0x6e,0x33,0x4,0x8, - 0xf0,0xbe,0x0,0x0,0x71,0x10,0x4,0x49,0x96,0x8a,0x0,0x0,0x16,0x34,0x4,0x50, - 0x17,0xc4,0x0,0x0,0x8,0xea,0x4,0x80,0xda,0x34,0x0,0x0,0x4d,0x6,0x4,0x82, - 0xfd,0x59,0x0,0x0,0x70,0xc2,0x4,0x86,0xaf,0x2e,0x0,0x0,0xa,0xfd,0x4,0x87, - 0xdc,0xba,0x0,0x0,0xe,0xf3,0x4,0x92,0x8,0xb2,0x0,0x0,0x5f,0xcc,0x4,0x92, - 0x65,0x9a,0x0,0x0,0x3d,0x7f,0x4,0x93,0x7,0x6a,0x0,0x0,0x15,0x2d,0x4,0x98, - 0x49,0xbc,0x0,0x0,0x93,0x1,0x4,0x98,0xa0,0x47,0x0,0x0,0x15,0xcd,0x4,0x98, - 0xa0,0x47,0x0,0x0,0x4d,0xf4,0x4,0x9c,0x6,0xae,0x0,0x0,0x44,0xdd,0x4,0xd2, - 0xef,0xfe,0x0,0x0,0x1a,0xea,0x4,0xe0,0xf6,0x35,0x0,0x0,0x6c,0x27,0x4,0xeb, - 0x2f,0xa,0x0,0x0,0x2d,0xf7,0x4,0xf6,0x74,0xde,0x0,0x0,0x1b,0xe9,0x5,0x1b, - 0xad,0x8a,0x0,0x0,0x2d,0x19,0x5,0x1c,0x96,0x5a,0x0,0x0,0x2d,0x4d,0x5,0x38, - 0xaa,0xc2,0x0,0x0,0x65,0x7b,0x5,0x4c,0x9f,0x6a,0x0,0x0,0x2f,0xd9,0x5,0x56, - 0xaf,0x95,0x0,0x0,0x97,0x3d,0x5,0x61,0x3,0x44,0x0,0x0,0xa,0xd,0x5,0x9b, - 0x88,0x98,0x0,0x0,0x72,0x86,0x5,0x9b,0x88,0x98,0x0,0x0,0x95,0xf5,0x5,0x9c, - 0x9c,0xc2,0x0,0x0,0x73,0x65,0x5,0xae,0xc3,0x8a,0x0,0x0,0x3e,0xad,0x5,0xcd, - 0x30,0x15,0x0,0x0,0x95,0x85,0x6,0x26,0x54,0x91,0x0,0x0,0x60,0x99,0x6,0x2d, - 0x36,0x3e,0x0,0x0,0x46,0xb1,0x6,0x60,0x3a,0x14,0x0,0x0,0x7f,0xc,0x6,0x73, - 0x98,0x7e,0x0,0x0,0x85,0x9e,0x6,0x83,0xdc,0x2e,0x0,0x0,0x47,0x34,0x6,0x86, - 0x8a,0xd9,0x0,0x0,0x63,0x3a,0x6,0x8b,0xb5,0x54,0x0,0x0,0x81,0xec,0x6,0xb6, - 0x6c,0xfe,0x0,0x0,0x70,0x49,0x6,0xe4,0x3a,0x33,0x0,0x0,0x79,0x3a,0x6,0xf8, - 0x3f,0x1e,0x0,0x0,0x5a,0xf0,0x7,0x1f,0x3b,0x1e,0x0,0x0,0x8c,0x3b,0x7,0x55, - 0xb3,0xce,0x0,0x0,0x12,0x2f,0x7,0x5f,0x40,0x71,0x0,0x0,0x7c,0x94,0x7,0x6a, - 0xd3,0xde,0x0,0x0,0x64,0xef,0x7,0x7e,0x12,0xce,0x0,0x0,0x7d,0x67,0x7,0x8b, - 0x84,0xad,0x0,0x0,0x6c,0x2,0x7,0x93,0x1e,0x9e,0x0,0x0,0x77,0x4c,0x7,0xad, - 0x58,0x6e,0x0,0x0,0x4c,0x97,0x7,0xd3,0x14,0x2e,0x0,0x0,0x3b,0x83,0x7,0xdc, - 0x3d,0xbe,0x0,0x0,0x1e,0xa,0x7,0xe0,0x1a,0x4f,0x0,0x0,0x5d,0xb,0x7,0xf9, - 0x3b,0xfa,0x0,0x0,0x8,0x37,0x8,0x2e,0x78,0xc4,0x0,0x0,0x4d,0x7c,0x8,0x3c, - 0x76,0x59,0x0,0x0,0x18,0x8b,0x8,0x40,0xf,0xbe,0x0,0x0,0x83,0xe,0x8,0x72, - 0x3c,0xfe,0x0,0x0,0x59,0x3f,0x8,0x82,0xd3,0xb4,0x0,0x0,0x9,0x44,0x8,0x99, - 0x50,0xfe,0x0,0x0,0xf,0x53,0x8,0xaa,0xe3,0xe4,0x0,0x0,0x68,0xe6,0x8,0xb3, - 0x26,0x9e,0x0,0x0,0x25,0xba,0x8,0xb8,0xa6,0x4a,0x0,0x0,0x6d,0x9,0x8,0xcb, - 0x30,0x7e,0x0,0x0,0x54,0x80,0x8,0xdc,0xf5,0x2e,0x0,0x0,0x47,0x9b,0x8,0xe0, - 0x7,0x3e,0x0,0x0,0x32,0x46,0x8,0xe0,0x7,0x3e,0x0,0x0,0x6d,0x3a,0x9,0x4, - 0x4f,0x11,0x0,0x0,0x6,0x4,0x9,0x2d,0xc9,0x42,0x0,0x0,0x1,0xf8,0x9,0x3c, - 0x6,0xae,0x0,0x0,0x4e,0x46,0x9,0x3d,0xef,0x3a,0x0,0x0,0x2f,0x7b,0x9,0x45, - 0x92,0xfe,0x0,0x0,0x31,0x94,0x9,0x4c,0x8f,0x69,0x0,0x0,0x4a,0x6d,0x9,0x5c, - 0xb,0x5e,0x0,0x0,0x7b,0x2a,0x9,0x65,0x8e,0x11,0x0,0x0,0x97,0x10,0x9,0x8a, - 0x4,0xea,0x0,0x0,0x15,0xff,0x9,0xa2,0x27,0x1e,0x0,0x0,0x8b,0xe8,0x9,0xbb, - 0x17,0xd1,0x0,0x0,0x7,0x43,0x9,0xc8,0xb4,0xb9,0x0,0x0,0x62,0x5f,0x9,0xf7, - 0x73,0xca,0x0,0x0,0x2f,0x27,0x9,0xf8,0xba,0xe,0x0,0x0,0x5e,0x2e,0x9,0xfb, - 0x69,0xba,0x0,0x0,0x17,0x4,0x9,0xfe,0x27,0x8a,0x0,0x0,0x13,0xef,0xa,0x21, - 0x3c,0x1e,0x0,0x0,0x45,0x82,0xa,0x25,0xf3,0x8e,0x0,0x0,0x10,0xfc,0xa,0x30, - 0x34,0xee,0x0,0x0,0x86,0xe1,0xa,0x30,0x34,0xee,0x0,0x0,0x96,0xbf,0xa,0x50, - 0xfd,0xce,0x0,0x0,0x2,0xd0,0xa,0x7b,0x45,0x52,0x0,0x0,0x95,0xb4,0xa,0x85, - 0xfd,0xa9,0x0,0x0,0x68,0x9a,0xa,0x9c,0x9,0x81,0x0,0x0,0x90,0xce,0xa,0xb0, - 0xb4,0xb5,0x0,0x0,0x48,0x61,0xa,0xbc,0x8c,0x74,0x0,0x0,0x58,0x96,0xa,0xd7, - 0x53,0x8a,0x0,0x0,0x2e,0x32,0xa,0xe3,0xe2,0x14,0x0,0x0,0x69,0x16,0xa,0xe5, - 0x47,0xba,0x0,0x0,0x30,0x11,0xa,0xf8,0x17,0x4,0x0,0x0,0x9,0xa5,0xb,0x14, - 0x21,0x9,0x0,0x0,0x49,0x3c,0xb,0x2a,0x64,0x7e,0x0,0x0,0x89,0xba,0xb,0x33, - 0xc3,0x8e,0x0,0x0,0x5b,0x96,0xb,0xa7,0x67,0xe7,0x0,0x0,0xa,0x7c,0xb,0xaa, - 0xd1,0x2,0x0,0x0,0x79,0x61,0xb,0xaf,0xbd,0x1,0x0,0x0,0x68,0x7,0xb,0xcc, - 0x5d,0x2a,0x0,0x0,0x17,0xc6,0xb,0xd2,0xf0,0x2e,0x0,0x0,0x0,0xc5,0xb,0xf8, - 0x7e,0x2e,0x0,0x0,0x5a,0x1b,0xc,0x1b,0xfe,0x7e,0x0,0x0,0x42,0xa6,0xc,0x38, - 0x78,0xde,0x0,0x0,0x36,0x70,0xc,0x3a,0x32,0x3e,0x0,0x0,0x3e,0xef,0xc,0x46, - 0x2c,0xc3,0x0,0x0,0x7a,0x9a,0xc,0x54,0x5d,0xa2,0x0,0x0,0x4e,0x18,0xc,0x55, - 0xec,0x1e,0x0,0x0,0x30,0x87,0xc,0x65,0x27,0x6e,0x0,0x0,0x3d,0xc9,0xc,0x78, - 0x8e,0x4e,0x0,0x0,0x69,0x98,0xc,0x7a,0x74,0xbe,0x0,0x0,0x5f,0x8,0xc,0x7f, - 0xf2,0x1e,0x0,0x0,0x4a,0xa2,0xc,0xbb,0x1,0x73,0x0,0x0,0x3c,0x4b,0xc,0xbb, - 0x1,0x73,0x0,0x0,0x78,0xc,0xc,0xbb,0x1,0x73,0x0,0x0,0x96,0x27,0xc,0xbd, - 0x72,0x9e,0x0,0x0,0x90,0x33,0xc,0xe0,0xa9,0xbe,0x0,0x0,0x67,0x53,0xc,0xe2, - 0xdf,0x55,0x0,0x0,0x58,0xd7,0xc,0xf9,0x5e,0xae,0x0,0x0,0x7e,0xd,0xd,0x4, - 0x5f,0x59,0x0,0x0,0x63,0x93,0xd,0xf,0x4e,0x6e,0x0,0x0,0x37,0xd6,0xd,0x4c, - 0x1d,0x31,0x0,0x0,0x68,0x41,0xd,0x58,0x98,0x6e,0x0,0x0,0x86,0x3e,0xd,0x9a, - 0x50,0xf3,0x0,0x0,0x66,0xd1,0xd,0xd4,0x95,0x41,0x0,0x0,0x8c,0xad,0xd,0xd7, - 0xfc,0x1e,0x0,0x0,0x21,0xdd,0xd,0xe6,0x8f,0x6a,0x0,0x0,0x18,0x2c,0xd,0xec, - 0xf9,0xc3,0x0,0x0,0x5f,0x55,0xd,0xfd,0xd,0x22,0x0,0x0,0x7,0xe5,0xe,0x13, - 0x1f,0xfe,0x0,0x0,0x35,0x4b,0xe,0x30,0x3,0xa5,0x0,0x0,0x91,0x89,0xe,0x30, - 0x6d,0x3e,0x0,0x0,0x43,0xcb,0xe,0x44,0x82,0x3a,0x0,0x0,0x2d,0x85,0xe,0x7e, - 0xd9,0xce,0x0,0x0,0x37,0x1b,0xe,0x87,0xe7,0x64,0x0,0x0,0x8,0x8a,0xe,0x89, - 0xf0,0x4e,0x0,0x0,0x78,0x53,0xe,0x9f,0x90,0x9e,0x0,0x0,0x48,0x95,0xe,0x9f, - 0x90,0x9e,0x0,0x0,0x92,0xe,0xe,0xa8,0x94,0x77,0x0,0x0,0x69,0x3e,0xe,0xb1, - 0x2b,0xce,0x0,0x0,0x3f,0x90,0xe,0xb2,0x85,0xee,0x0,0x0,0x26,0xad,0xe,0xb4, - 0x8c,0x1,0x0,0x0,0x6,0xa3,0xe,0xc0,0x3b,0xf1,0x0,0x0,0x60,0x64,0xe,0xd0, - 0x9d,0x8e,0x0,0x0,0x6a,0x9e,0xe,0xdc,0xdd,0xce,0x0,0x0,0x20,0x97,0xe,0xf1, - 0x38,0xce,0x0,0x0,0x6f,0x8f,0xe,0xff,0xbf,0x42,0x0,0x0,0x2,0x68,0xf,0x2, - 0x2,0x21,0x0,0x0,0x84,0x37,0xf,0x47,0x35,0x8e,0x0,0x0,0x1f,0x45,0xf,0x48, - 0xb8,0x5a,0x0,0x0,0x16,0x89,0xf,0x55,0xd9,0xd1,0x0,0x0,0x57,0xdd,0xf,0x60, - 0xe2,0x5e,0x0,0x0,0x33,0x75,0xf,0x66,0x94,0x9e,0x0,0x0,0x54,0x46,0xf,0x6e, - 0x43,0xa5,0x0,0x0,0x79,0x14,0xf,0xaf,0x1f,0x4f,0x0,0x0,0x5d,0x88,0xf,0xb3, - 0xad,0xaa,0x0,0x0,0x32,0x4,0xf,0xc6,0x3f,0xf3,0x0,0x0,0x5e,0x9d,0xf,0xcb, - 0x37,0xde,0x0,0x0,0x23,0x16,0xf,0xd2,0xf,0x4e,0x0,0x0,0x2c,0x52,0xf,0xd3, - 0x69,0x3e,0x0,0x0,0x38,0xb2,0xf,0xe9,0x8a,0xbe,0x0,0x0,0x7b,0xc0,0xf,0xef, - 0x55,0x95,0x0,0x0,0x7c,0x55,0xf,0xf4,0x81,0xe1,0x0,0x0,0x87,0x6,0xf,0xfd, - 0x3b,0x5a,0x0,0x0,0xe,0x9f,0x69,0x0,0x0,0x97,0x67,0x3,0x0,0x0,0x0,0x24, - 0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79, - 0x0,0x20,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20, - 0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x41,0x74, - 0x74,0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x25,0x31, - 0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x32,0x0,0x44,0x0,0x65,0x0,0x73,0x0,0x63, - 0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x61,0x0,0x64,0x0,0x6f, - 0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76, - 0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x19,0x44,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x65,0x64, - 0x20,0x66,0x72,0x6f,0x6d,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x7,0x0,0x0, - 0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1, - 0x3,0x0,0x0,0x0,0x94,0x0,0x45,0x0,0x72,0x0,0x72,0x0,0x6f,0x0,0x20,0x0, - 0x61,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x63,0x0, - 0x74,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x6f,0x0,0x20,0x0,0x73,0x0, - 0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x20,0x0, - 0x70,0x0,0x72,0x0,0x69,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x70,0x0,0x61,0x0, - 0x6c,0x0,0x2e,0x0,0x20,0x0,0x54,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0, - 0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x76,0x0,0x61,0x0, - 0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6d,0x0, - 0x20,0x0,0x25,0x0,0x31,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x67,0x0,0x75,0x0, - 0x6e,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x40,0x45,0x72,0x72,0x6f,0x72,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74, - 0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x6d,0x61,0x73,0x74,0x65,0x72,0x20,0x73,0x65, - 0x72,0x76,0x65,0x72,0x2e,0x20,0x57,0x69,0x6c,0x6c,0x20,0x74,0x72,0x79,0x20,0x61, - 0x67,0x61,0x69,0x6e,0x20,0x69,0x6e,0x20,0x25,0x31,0x20,0x73,0x65,0x63,0x6f,0x6e, - 0x64,0x73,0x2e,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x14,0x0,0x43,0x0,0x61,0x0, - 0x72,0x0,0x72,0x0,0x65,0x0,0x67,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67, - 0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x3a,0x0,0x43,0x0,0x61,0x0,0x72,0x0,0x72, - 0x0,0x65,0x0,0x67,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x70, - 0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x67,0x0,0x65, - 0x0,0x6e,0x0,0x73,0x0,0x3a,0x0,0xa,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25, - 0x0,0x32,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x14,0x4c,0x6f,0x61,0x64, - 0x69,0x6e,0x67,0x20,0x63,0x68,0x61,0x72,0x73,0x3a,0xa,0x25,0x31,0x2f,0x25,0x32, - 0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x32,0x0,0x43,0x0,0x61,0x0,0x72,0x0,0x72, - 0x0,0x65,0x0,0x67,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6d, - 0x0,0xfa,0x0,0x73,0x0,0x69,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x3a,0x0,0xa, - 0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x14,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x20,0x6d,0x75,0x73,0x69, - 0x63,0x3a,0xa,0x25,0x31,0x2f,0x25,0x32,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41, - 0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0xa2, - 0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x64, - 0x0,0x65,0x0,0x73,0x0,0x61,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x69, - 0x0,0x7a,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x21,0x0,0x20,0x0,0x53,0x0,0x75, - 0x0,0x61,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0xe3,0x0,0x6f, - 0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0xa,0x0,0x41,0x0,0x63,0x0,0x65, - 0x0,0x73,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x63,0x0,0x65,0x0,0x61, - 0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79,0x0,0x6f, - 0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x2e,0x0,0x63,0x0,0x6f, - 0x0,0x6d,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x61, - 0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x72, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x50,0x4f,0x75,0x74,0x64, - 0x61,0x74,0x65,0x64,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x21,0x20,0x59,0x6f, - 0x75,0x72,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3a,0x20,0x25,0x31,0xa,0x50, - 0x6c,0x65,0x61,0x73,0x65,0x20,0x67,0x6f,0x20,0x74,0x6f,0x20,0x61,0x63,0x65,0x61, - 0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x6f,0x6e,0x6c,0x69,0x6e,0x65,0x2e,0x63,0x6f, - 0x6d,0x20,0x74,0x6f,0x20,0x75,0x70,0x64,0x61,0x74,0x65,0x2e,0x7,0x0,0x0,0x0, - 0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3, - 0x0,0x0,0x0,0xdc,0x0,0x4f,0x0,0x63,0x0,0x6f,0x0,0x72,0x0,0x72,0x0,0x65, - 0x0,0x75,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x72,0x0,0x72, - 0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x6f,0x0,0x20,0x0,0x6f,0x0,0x62,0x0,0x74, - 0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x73, - 0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65, - 0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x65,0x0,0x73, - 0x0,0x2e,0x0,0x20,0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x69,0x0,0x66,0x0,0x69, - 0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x20, - 0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x78,0x0,0xe3,0x0,0x6f,0x0,0x20, - 0x0,0xe0,0x0,0x20,0x0,0x49,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6e, - 0x0,0x65,0x0,0x74,0x0,0x20,0x0,0x65,0x0,0x20,0x0,0x66,0x0,0x69,0x0,0x72, - 0x0,0x65,0x0,0x77,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x20,0x0,0x65,0x0,0x20, - 0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x6e,0x0,0x6f, - 0x0,0x76,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x1,0x22,0x54,0x68,0x65,0x72,0x65,0x20, - 0x77,0x61,0x73,0x20,0x61,0x6e,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x63,0x6f,0x6e, - 0x6e,0x65,0x63,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x6d, - 0x61,0x73,0x74,0x65,0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0xa,0x57,0x65, - 0x20,0x64,0x65,0x70,0x6c,0x6f,0x79,0x20,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65, - 0x20,0x6d,0x61,0x73,0x74,0x65,0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x73,0x20, - 0x74,0x6f,0x20,0x6d,0x69,0x74,0x69,0x67,0x61,0x74,0x65,0x20,0x61,0x6e,0x79,0x20, - 0x70,0x6f,0x73,0x73,0x69,0x62,0x6c,0x65,0x20,0x64,0x6f,0x77,0x6e,0x74,0x69,0x6d, - 0x65,0x2c,0x20,0x62,0x75,0x74,0x20,0x74,0x68,0x65,0x20,0x63,0x6c,0x69,0x65,0x6e, - 0x74,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x73,0x20,0x74,0x6f,0x20,0x68,0x61,0x76, - 0x65,0x20,0x65,0x78,0x68,0x61,0x75,0x73,0x74,0x65,0x64,0x20,0x61,0x6c,0x6c,0x20, - 0x70,0x6f,0x73,0x73,0x69,0x62,0x6c,0x65,0x20,0x6d,0x65,0x74,0x68,0x6f,0x64,0x73, - 0x20,0x6f,0x66,0x20,0x66,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x61,0x6e,0x64,0x20, - 0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x6f,0x6e, - 0x65,0x2e,0xa,0x50,0x6c,0x65,0x61,0x73,0x65,0x20,0x63,0x68,0x65,0x63,0x6b,0x20, - 0x79,0x6f,0x75,0x72,0x20,0x49,0x6e,0x74,0x65,0x72,0x6e,0x65,0x74,0x20,0x63,0x6f, - 0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x6e,0x64,0x20,0x66,0x69,0x72, - 0x65,0x77,0x61,0x6c,0x6c,0x2c,0x20,0x61,0x6e,0x64,0x20,0x70,0x6c,0x65,0x61,0x73, - 0x65,0x20,0x74,0x72,0x79,0x20,0x61,0x67,0x61,0x69,0x6e,0x2e,0x7,0x0,0x0,0x0, - 0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3, - 0x0,0x0,0x0,0x54,0x0,0x56,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x66, - 0x0,0x6f,0x0,0x69,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x20, - 0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72, - 0x0,0x2e,0x0,0xa,0x0,0x4d,0x0,0x6f,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x6f, - 0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x29,0x59,0x6f,0x75,0x20,0x61,0x72,0x65,0x20,0x62,0x61,0x6e,0x6e,0x65,0x64, - 0x20,0x6f,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e, - 0xa,0x52,0x65,0x61,0x73,0x6f,0x6e,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xd, - 0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0, - 0x0,0x0,0x4e,0x0,0x56,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x66,0x0, - 0x6f,0x0,0x69,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x64,0x0, - 0x6f,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0, - 0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x2e,0x0,0xa,0x0,0x4d,0x0, - 0x6f,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x3a,0x0,0x20,0x0,0x25,0x0, - 0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x30,0x59,0x6f,0x75,0x20,0x68, - 0x61,0x76,0x65,0x20,0x62,0x65,0x65,0x6e,0x20,0x62,0x61,0x6e,0x6e,0x65,0x64,0x20, - 0x66,0x72,0x6f,0x6d,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e, - 0xa,0x52,0x65,0x61,0x73,0x6f,0x6e,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xd, - 0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0, - 0x0,0x0,0x50,0x0,0x56,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x66,0x0, - 0x6f,0x0,0x69,0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x70,0x0,0x75,0x0,0x6c,0x0, - 0x73,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0, - 0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x2e,0x0,0xa,0x0, - 0x4d,0x0,0x6f,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x3a,0x0,0x20,0x0, - 0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x30,0x59,0x6f,0x75, - 0x20,0x68,0x61,0x76,0x65,0x20,0x62,0x65,0x65,0x6e,0x20,0x6b,0x69,0x63,0x6b,0x65, - 0x64,0x20,0x66,0x72,0x6f,0x6d,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65, - 0x72,0x2e,0xa,0x52,0x65,0x61,0x73,0x6f,0x6e,0x3a,0x20,0x25,0x31,0x7,0x0,0x0, - 0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1, - 0x3,0x0,0x0,0x0,0x1a,0x0,0x41,0x0,0x6e,0x0,0x75,0x0,0x6e,0x0,0x63,0x0, - 0x69,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x43,0x61,0x73,0x65,0x20,0x41,0x6e, - 0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61, - 0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x1e,0x0,0x54,0x0,0xed,0x0,0x74,0x0,0x75,0x0, - 0x6c,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x61,0x0, - 0x73,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x43, - 0x61,0x73,0x65,0x20,0x74,0x69,0x74,0x6c,0x65,0x3a,0x7,0x0,0x0,0x0,0x15,0x41, - 0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x28,0x0,0x50,0x0,0x72,0x0,0x65, - 0x0,0x63,0x0,0x69,0x0,0x73,0x0,0x61,0x0,0x2d,0x0,0x73,0x0,0x65,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x44,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x73, - 0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x44,0x65,0x66,0x65, - 0x6e,0x73,0x65,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x15,0x41, - 0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x24,0x0,0x50,0x0,0x72,0x0,0x65, - 0x0,0x63,0x0,0x69,0x0,0x73,0x0,0x61,0x0,0x2d,0x0,0x73,0x0,0x65,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x4a,0x0,0x75,0x0,0xed,0x0,0x7a,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x4a,0x75,0x64,0x67,0x65,0x20,0x6e,0x65, - 0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41, - 0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x2a,0x0,0x50,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x73, - 0x0,0x61,0x0,0x2d,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0x4a,0x0,0x75,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x73,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x4a,0x75,0x72,0x6f,0x72,0x73,0x20,0x6e, - 0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65, - 0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x2c,0x0,0x50,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x69,0x0, - 0x73,0x0,0x61,0x0,0x2d,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x20,0x0,0x50,0x0,0x72,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x0,0x74,0x0,0x6f,0x0, - 0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x50,0x72,0x6f,0x73,0x65, - 0x63,0x75,0x74,0x69,0x6f,0x6e,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0, - 0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65, - 0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x32,0x0,0x50,0x0, - 0x72,0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x73,0x0,0x61,0x0,0x2d,0x0,0x73,0x0, - 0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x45,0x0,0x73,0x0,0x74,0x0, - 0x65,0x0,0x6e,0x0,0xf3,0x0,0x67,0x0,0x72,0x0,0x61,0x0,0x66,0x0,0x6f,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x53,0x74,0x65,0x6e,0x6f,0x67,0x72, - 0x61,0x70,0x68,0x65,0x72,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0, - 0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x46,0x0,0x20,0x0,0x2d, - 0x0,0x20,0x0,0x4d,0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x68, - 0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e, - 0x0,0x66,0x0,0x69,0x0,0x67,0x0,0x75,0x0,0x72,0x0,0x61,0x0,0xe7,0x0,0xf5, - 0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x69, - 0x0,0x73,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17,0x20,0x2d,0x20,0x4b, - 0x65,0x65,0x70,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x73,0x65,0x74,0x74, - 0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x2,0x6c,0x0,0x3c,0x0, - 0x68,0x0,0x74,0x0,0x6d,0x0,0x6c,0x0,0x3e,0x0,0x3c,0x0,0x68,0x0,0x65,0x0, - 0x61,0x0,0x64,0x0,0x2f,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0,0x6f,0x0,0x64,0x0, - 0x79,0x0,0x3e,0x0,0x44,0x0,0x69,0x0,0x67,0x0,0x69,0x0,0x74,0x0,0x65,0x0, - 0x20,0x0,0x71,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x73,0x0, - 0x20,0x0,0x70,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x76,0x0,0x72,0x0,0x61,0x0, - 0x73,0x0,0x2d,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x76,0x0,0x65,0x0,0x20,0x0, - 0x76,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0, - 0x65,0x0,0x6a,0x0,0x61,0x0,0x72,0x0,0x2e,0x0,0x20,0x0,0x45,0x0,0x73,0x0, - 0x74,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x6e,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0, - 0x64,0x0,0x69,0x0,0x66,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x6e,0x0,0x63,0x0, - 0x69,0x0,0x61,0x0,0x6d,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x69,0x0,0xfa,0x0, - 0x73,0x0,0x63,0x0,0x75,0x0,0x6c,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x20,0x0,0x6d,0x0,0x69,0x0,0x6e,0x0,0xfa,0x0,0x73,0x0,0x63,0x0, - 0x75,0x0,0x6c,0x0,0x61,0x0,0x73,0x0,0x2e,0x0,0x20,0x0,0x43,0x0,0x65,0x0, - 0x72,0x0,0x74,0x0,0x69,0x0,0x66,0x0,0x69,0x0,0x71,0x0,0x75,0x0,0x65,0x0, - 0x2d,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x69,0x0,0x78,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x63,0x0,0x61,0x0, - 0x64,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x76,0x0, - 0x72,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x76,0x0,0x65,0x0, - 0x20,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x20,0x0, - 0x70,0x0,0x72,0x0,0xf3,0x0,0x70,0x0,0x72,0x0,0x69,0x0,0x61,0x0,0x20,0x0, - 0x6c,0x0,0x69,0x0,0x6e,0x0,0x68,0x0,0x61,0x0,0x21,0x0,0x3c,0x0,0x62,0x0, - 0x72,0x0,0x3e,0x0,0x4e,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x69,0x0,0x78,0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x61,0x0,0x20,0x0, - 0x6c,0x0,0x69,0x0,0x6e,0x0,0x68,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x6f,0x0, - 0x6d,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x70,0x0, - 0x61,0x0,0xe7,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x66,0x0, - 0x69,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x2d,0x0,0x20,0x0,0x76,0x0, - 0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0xe1,0x0, - 0x20,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x61,0x0,0x64,0x0, - 0x6f,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x76,0x0, - 0x65,0x0,0x7a,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x61,0x0, - 0x6c,0x0,0x67,0x0,0x75,0x0,0xe9,0x0,0x6d,0x0,0x20,0x0,0x75,0x0,0x73,0x0, - 0x61,0x0,0x72,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x73,0x0, - 0x70,0x0,0x61,0x0,0xe7,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x20,0x0, - 0x73,0x0,0x75,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0, - 0x73,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x2e,0x0,0x3c,0x0, - 0x2f,0x0,0x62,0x0,0x6f,0x0,0x64,0x0,0x79,0x0,0x3e,0x0,0x3c,0x0,0x2f,0x0, - 0x68,0x0,0x74,0x0,0x6d,0x0,0x6c,0x0,0x3e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x1,0x12,0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x3c,0x68,0x65,0x61,0x64,0x2f,0x3e, - 0x3c,0x62,0x6f,0x64,0x79,0x3e,0x45,0x6e,0x74,0x65,0x72,0x20,0x61,0x73,0x20,0x6d, - 0x61,0x6e,0x79,0x20,0x63,0x61,0x6c,0x6c,0x77,0x6f,0x72,0x64,0x73,0x20,0x61,0x73, - 0x20,0x79,0x6f,0x75,0x20,0x77,0x6f,0x75,0x6c,0x64,0x20,0x6c,0x69,0x6b,0x65,0x2e, - 0x20,0x54,0x68,0x65,0x73,0x65,0x20,0x61,0x72,0x65,0x20,0x63,0x61,0x73,0x65,0x20, - 0x69,0x6e,0x73,0x65,0x6e,0x73,0x69,0x74,0x69,0x76,0x65,0x2e,0x20,0x4d,0x61,0x6b, - 0x65,0x20,0x73,0x75,0x72,0x65,0x20,0x74,0x6f,0x20,0x6c,0x65,0x61,0x76,0x65,0x20, - 0x65,0x76,0x65,0x72,0x79,0x20,0x63,0x61,0x6c,0x6c,0x77,0x6f,0x72,0x64,0x20,0x69, - 0x6e,0x20,0x69,0x74,0x73,0x20,0x6f,0x77,0x6e,0x20,0x6c,0x69,0x6e,0x65,0x21,0x3c, - 0x62,0x72,0x3e,0x44,0x6f,0x20,0x6e,0x6f,0x74,0x20,0x6c,0x65,0x61,0x76,0x65,0x20, - 0x61,0x20,0x6c,0x69,0x6e,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x61,0x20,0x73,0x70, - 0x61,0x63,0x65,0x20,0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x65,0x6e,0x64,0x20,0x2d, - 0x2d,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x6c, - 0x65,0x72,0x74,0x65,0x64,0x20,0x65,0x76,0x65,0x72,0x79,0x74,0x69,0x6d,0x65,0x20, - 0x73,0x6f,0x6d,0x65,0x6f,0x6e,0x65,0x20,0x75,0x73,0x65,0x73,0x20,0x61,0x20,0x73, - 0x70,0x61,0x63,0x65,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x6d,0x65, - 0x73,0x73,0x61,0x67,0x65,0x73,0x2e,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x3c,0x2f, - 0x68,0x74,0x6d,0x6c,0x3e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x22,0x0, - 0x50,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x69,0x0,0x72,0x0, - 0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x73,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x41,0x6c,0x6c,0x6f,0x77, - 0x20,0x45,0x66,0x66,0x65,0x63,0x74,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x2a,0x0,0x50,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0, - 0x69,0x0,0x72,0x0,0x20,0x0,0x73,0x0,0x63,0x0,0x72,0x0,0x65,0x0,0x65,0x0, - 0x6e,0x0,0x73,0x0,0x68,0x0,0x61,0x0,0x6b,0x0,0x65,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x41,0x6c,0x6c,0x6f,0x77,0x20,0x53,0x63,0x72, - 0x65,0x65,0x6e,0x73,0x68,0x61,0x6b,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x1,0x6,0x0,0x50,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0, - 0x65,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x75,0x0, - 0x74,0x0,0x72,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x73,0x0, - 0x73,0x0,0x6f,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x20,0x0, - 0x44,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x6f,0x0,0x72,0x0,0x64,0x0,0x20,0x0, - 0x76,0x0,0x65,0x0,0x6a,0x0,0x61,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x6d,0x0, - 0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0, - 0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x76,0x0,0x6f,0x0, - 0x63,0x0,0xea,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x2c,0x0, - 0x20,0x0,0x71,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x70,0x0,0x65,0x0, - 0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0, - 0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x20,0x0,0x6a,0x0,0x6f,0x0, - 0x67,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x20,0x0, - 0x68,0x0,0xe1,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x74,0x0, - 0x6f,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x70,0x0,0x6f,0x0,0x20,0x0, - 0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x20,0x0,0x6a,0x0,0x6f,0x0,0x67,0x0, - 0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x7f,0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x6f,0x74,0x68,0x65,0x72,0x73, - 0x20,0x6f,0x6e,0x20,0x44,0x69,0x73,0x63,0x6f,0x72,0x64,0x20,0x74,0x6f,0x20,0x73, - 0x65,0x65,0x20,0x77,0x68,0x61,0x74,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x79, - 0x6f,0x75,0x20,0x61,0x72,0x65,0x20,0x69,0x6e,0x2c,0x20,0x77,0x68,0x61,0x74,0x20, - 0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x61,0x72,0x65,0x20,0x79,0x6f, - 0x75,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x2c,0x20,0x61,0x6e,0x64,0x20,0x68, - 0x6f,0x77,0x20,0x6c,0x6f,0x6e,0x67,0x20,0x79,0x6f,0x75,0x20,0x68,0x61,0x76,0x65, - 0x20,0x62,0x65,0x65,0x6e,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x66,0x6f, - 0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa6,0x0,0x50,0x0,0x65, - 0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x66, - 0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x28,0x0,0x41, - 0x0,0x56,0x0,0x49,0x0,0x53,0x0,0x4f,0x0,0x3a,0x0,0x20,0x0,0x50,0x0,0x6f, - 0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x75,0x0,0x73,0x0,0x61, - 0x0,0x72,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x76,0x0,0x75,0x0,0x6c, - 0x0,0x73,0x0,0xf5,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x76, - 0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0xe0,0x0,0x20,0x0,0x69,0x0,0x6d, - 0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x20,0x0,0x74,0x0,0x72, - 0x0,0x65,0x0,0x6d,0x0,0x69,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x29,0x0,0x2e, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x69,0x41,0x6c,0x6c,0x6f, - 0x77,0x73,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x20,0x65,0x66,0x66,0x65,0x63,0x74, - 0x73,0x2e,0x20,0x44,0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x74,0x68,0x69,0x73,0x20, - 0x69,0x66,0x20,0x79,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x63,0x6f,0x6e,0x63, - 0x65,0x72,0x6e,0x73,0x20,0x6f,0x72,0x20,0x69,0x73,0x73,0x75,0x65,0x73,0x20,0x77, - 0x69,0x74,0x68,0x20,0x70,0x68,0x6f,0x74,0x6f,0x73,0x65,0x6e,0x73,0x69,0x74,0x69, - 0x76,0x69,0x74,0x79,0x20,0x61,0x6e,0x64,0x2f,0x6f,0x72,0x20,0x73,0x65,0x69,0x7a, - 0x75,0x72,0x65,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa6,0x0, - 0x50,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x20,0x0, - 0x6f,0x0,0x20,0x0,0x74,0x0,0x72,0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x72,0x0, - 0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6c,0x0,0x61,0x0, - 0x20,0x0,0x28,0x0,0x41,0x0,0x56,0x0,0x49,0x0,0x53,0x0,0x4f,0x0,0x3a,0x0, - 0x20,0x0,0x50,0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0, - 0x75,0x0,0x73,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0, - 0x76,0x0,0x75,0x0,0x6c,0x0,0x73,0x0,0xf5,0x0,0x65,0x0,0x73,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0xe0,0x0, - 0x20,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x73,0x0, - 0x20,0x0,0x74,0x0,0x72,0x0,0x65,0x0,0x6d,0x0,0x69,0x0,0x64,0x0,0x61,0x0, - 0x73,0x0,0x29,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x68,0x41, - 0x6c,0x6c,0x6f,0x77,0x73,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x73,0x68,0x61,0x6b, - 0x69,0x6e,0x67,0x2e,0x20,0x44,0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x74,0x68,0x69, - 0x73,0x20,0x69,0x66,0x20,0x79,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x63,0x6f, - 0x6e,0x63,0x65,0x72,0x6e,0x73,0x20,0x6f,0x72,0x20,0x69,0x73,0x73,0x75,0x65,0x73, - 0x20,0x77,0x69,0x74,0x68,0x20,0x70,0x68,0x6f,0x74,0x6f,0x73,0x65,0x6e,0x73,0x69, - 0x74,0x69,0x76,0x69,0x74,0x79,0x20,0x61,0x6e,0x64,0x2f,0x6f,0x72,0x20,0x73,0x65, - 0x69,0x7a,0x75,0x72,0x65,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0xa,0x0,0xc1,0x0,0x75,0x0,0x64,0x0,0x69,0x0,0x6f,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x5,0x41,0x75,0x64,0x69,0x6f,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x2a,0x0,0x44,0x0,0x69,0x0,0x73,0x0,0x70,0x0,0x6f,0x0,0x73, - 0x0,0x69,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x20,0x0,0xe1,0x0,0x75,0x0,0x64,0x0,0x69,0x0,0x6f,0x0,0x3a,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x41,0x75,0x64,0x69,0x6f,0x20,0x64,0x65, - 0x76,0x69,0x63,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x28,0x0, - 0x52,0x0,0x65,0x0,0x67,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x72,0x0,0x6f,0x0, - 0x20,0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x6f,0x0,0x6d,0x0,0xe1,0x0,0x74,0x0, - 0x69,0x0,0x63,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x12,0x41,0x75,0x74,0x6f,0x6d,0x61,0x74,0x69,0x63,0x20,0x4c,0x6f,0x67,0x67,0x69, - 0x6e,0x67,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1a,0x0,0x4d,0x0, - 0x53,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x63,0x0, - 0x6b,0x0,0x75,0x0,0x70,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xa,0x42,0x61,0x63,0x6b,0x75,0x70,0x20,0x4d,0x53,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x20,0x0,0x42,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x73,0x0, - 0x20,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x62,0x0,0x72,0x0,0x61,0x0,0x6e,0x0, - 0x63,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x42, - 0x6c,0x61,0x6e,0x6b,0x20,0x62,0x6c,0x69,0x70,0x73,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x1a,0x0,0x54,0x0,0x61,0x0,0x78,0x0,0x61,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x20,0x0,0x62,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x3a,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x42,0x6c,0x69,0x70,0x20,0x72,0x61, - 0x74,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x42,0x6c,0x69,0x70,0x73,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x6,0x0,0x43,0x0,0x4d,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x43,0x4d,0x3a,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x1c,0x0,0x50,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x76,0x0,0x72, - 0x0,0x61,0x0,0x73,0x0,0x2d,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x76,0x0,0x65, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x43,0x61,0x6c,0x6c,0x77,0x6f, - 0x72,0x64,0x73,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x8,0x0,0x43,0x0, - 0x61,0x0,0x73,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43, - 0x61,0x73,0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa,0x0, - 0x43,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x7,0x43,0x61,0x73,0x69,0x6e,0x67,0x3a,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x20,0x0,0x43,0x0,0x6f,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x20, - 0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x4c,0x0,0x6f,0x0,0x67,0x0,0x20,0x0,0x49, - 0x0,0x43,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x43,0x6f, - 0x6c,0x6f,0x72,0x73,0x20,0x69,0x6e,0x20,0x49,0x43,0x20,0x4c,0x6f,0x67,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x46,0x0,0x43,0x0,0x61,0x0,0x69,0x0, - 0x78,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x62,0x0, - 0x61,0x0,0x74,0x0,0x65,0x0,0x2d,0x0,0x70,0x0,0x61,0x0,0x70,0x0,0x6f,0x0, - 0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0, - 0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x3a,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x43,0x75,0x73,0x74,0x6f,0x6d,0x20, - 0x43,0x68,0x61,0x74,0x62,0x6f,0x78,0x65,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x2a,0x0,0x4e,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0,0x73,0x0,0x20, - 0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6c, - 0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x3a,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x43,0x75,0x73,0x74,0x6f,0x6d,0x20,0x73, - 0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x2e,0x0,0x4e,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x75,0x0,0xe1,0x0,0x72,0x0,0x69,0x0, - 0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x64,0x0,0x72,0x0,0xe3,0x0,0x6f,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x44,0x65,0x66,0x61,0x75, - 0x6c,0x74,0x20,0x75,0x73,0x65,0x72,0x6e,0x61,0x6d,0x65,0x3a,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x44,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x73, - 0x0,0x61,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x44,0x65, - 0x66,0x65,0x6e,0x73,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0xff,0xff,0xff,0xff, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x44,0x69,0x73,0x63,0x6f,0x72, - 0x64,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x28,0x0,0x41,0x0,0x74, - 0x0,0x69,0x0,0x76,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x53,0x0,0x46, - 0x0,0x58,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x6f, - 0x0,0x70,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x45,0x6e, - 0x61,0x62,0x6c,0x65,0x20,0x4c,0x6f,0x6f,0x70,0x69,0x6e,0x67,0x20,0x53,0x46,0x58, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x18,0x0,0x4a,0x0,0x6f,0x0, - 0x67,0x0,0x61,0x0,0x62,0x0,0x69,0x0,0x6c,0x0,0x69,0x0,0x64,0x0,0x61,0x0, - 0x64,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x47,0x61,0x6d, - 0x65,0x70,0x6c,0x61,0x79,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x20,0x0, - 0x46,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x20,0x0, - 0x6f,0x0,0x20,0x0,0x76,0x0,0x61,0x0,0x6c,0x0,0x6f,0x0,0x72,0x0,0x20,0x0, - 0x70,0x0,0x61,0x0,0x64,0x0,0x72,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x70,0x0, - 0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0, - 0x69,0x0,0x78,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0, - 0x65,0x0,0x6c,0x0,0x65,0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x27,0x0, - 0x53,0x0,0x68,0x0,0x6f,0x0,0x77,0x0,0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0, - 0x73,0x0,0x27,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x6a,0x0,0x6f,0x0, - 0x67,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x6e,0x0, - 0x61,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x63,0x0, - 0x6c,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x76,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x69,0x0,0x62,0x0, - 0x69,0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0,0x73,0x0, - 0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0, - 0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0, - 0x6e,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0, - 0x6f,0x0,0x6e,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x99,0x47,0x69,0x76,0x65,0x73,0x20,0x74, - 0x68,0x65,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x76,0x61,0x6c,0x75,0x65, - 0x20,0x66,0x6f,0x72,0x20,0x74,0x68,0x65,0x20,0x69,0x6e,0x2d,0x67,0x61,0x6d,0x65, - 0x20,0x27,0x43,0x75,0x73,0x74,0x6f,0x6d,0x20,0x73,0x68,0x6f,0x77,0x6e,0x61,0x6d, - 0x65,0x73,0x27,0x20,0x74,0x69,0x63,0x6b,0x62,0x6f,0x78,0x2c,0x20,0x77,0x68,0x69, - 0x63,0x68,0x20,0x69,0x6e,0x20,0x74,0x75,0x72,0x6e,0x20,0x64,0x65,0x74,0x65,0x72, - 0x6d,0x69,0x6e,0x65,0x73,0x20,0x77,0x68,0x65,0x74,0x68,0x65,0x72,0x20,0x74,0x68, - 0x65,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20, - 0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x69, - 0x6e,0x2d,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x6e,0x61,0x6d,0x65, - 0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x43,0x0,0x61, - 0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xe,0x48,0x6f,0x73,0x74,0x69,0x6e,0x67,0x20,0x63,0x61,0x73,0x65,0x73,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x94,0x0,0x53,0x0,0x65,0x0,0x20, - 0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c, - 0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x6f, - 0x0,0x73,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x67,0x0,0x69,0x0,0x73,0x0,0x74, - 0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0xe3, - 0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x6f,0x0,0x6d,0x0,0x61, - 0x0,0x74,0x0,0x69,0x0,0x63,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74, - 0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x61,0x0,0x6c,0x0,0x76,0x0,0x6f,0x0,0x73, - 0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x73,0x0,0x74, - 0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x67,0x0,0x73,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x47,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b, - 0x65,0x64,0x2c,0x20,0x61,0x6c,0x6c,0x20,0x6c,0x6f,0x67,0x73,0x20,0x77,0x69,0x6c, - 0x6c,0x20,0x62,0x65,0x20,0x61,0x75,0x74,0x6f,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c, - 0x6c,0x79,0x20,0x77,0x72,0x69,0x74,0x74,0x65,0x6e,0x20,0x69,0x6e,0x20,0x74,0x68, - 0x65,0x20,0x2f,0x6c,0x6f,0x67,0x73,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x7c,0x0,0x53,0x0,0x65,0x0,0x20,0x0, - 0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0, - 0x20,0x0,0x76,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x61,0x0,0x70,0x0, - 0x61,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x72,0x0,0xe1,0x0,0x20,0x0, - 0x65,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x73,0x0, - 0x20,0x0,0x43,0x0,0x4d,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0, - 0x73,0x0,0xed,0x0,0x76,0x0,0x65,0x0,0x69,0x0,0x73,0x0,0x20,0x0,0x6e,0x0, - 0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0, - 0x6f,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x44,0x49, - 0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77, - 0x69,0x6c,0x6c,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x20,0x61,0x6d,0x6f,0x6e,0x67, - 0x73,0x74,0x20,0x74,0x68,0x65,0x20,0x70,0x6f,0x74,0x65,0x6e,0x74,0x69,0x61,0x6c, - 0x20,0x43,0x4d,0x73,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76, - 0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc6,0x0,0x53,0x0, - 0x65,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0, - 0x6f,0x0,0x2c,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0, - 0x72,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x62,0x0,0x65,0x0,0x72,0x0,0xe1,0x0, - 0x20,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x61,0x0,0x73,0x0, - 0x20,0x0,0x73,0x0,0x6f,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x6f,0x0, - 0x73,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0xfa,0x0,0x6e,0x0,0x63,0x0,0x69,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0, - 0x73,0x0,0x6f,0x0,0x73,0x0,0x2c,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0, - 0x75,0x0,0x6d,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0, - 0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x65,0x0, - 0x73,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x76,0x0, - 0x65,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x65,0x0,0x72,0x0,0x74,0x0, - 0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x53,0x49,0x66,0x20, - 0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c, - 0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62,0x6f, - 0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65, - 0x6d,0x65,0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x61,0x20,0x64,0x65,0x66,0x65,0x6e, - 0x73,0x65,0x20,0x73,0x70,0x6f,0x74,0x20,0x69,0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc6,0x0,0x53,0x0,0x65,0x0,0x20, - 0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c, - 0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x72,0x0,0x65, - 0x0,0x63,0x0,0x65,0x0,0x62,0x0,0x65,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x61, - 0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x73, - 0x0,0x6f,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x73,0x0,0x20, - 0x0,0x61,0x0,0x6e,0x0,0xfa,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x73, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f, - 0x0,0x73,0x0,0x2c,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x6d, - 0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x63,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x6a,0x0,0x75,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x6f, - 0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x65,0x0,0x72, - 0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x6f,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x51,0x49,0x66,0x20,0x63,0x68,0x65, - 0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67, - 0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20, - 0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e, - 0x74,0x73,0x20,0x69,0x66,0x20,0x61,0x20,0x6a,0x75,0x72,0x6f,0x72,0x20,0x73,0x70, - 0x6f,0x74,0x20,0x69,0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0xd8,0x0,0x53,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x61,0x0, - 0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x76,0x0, - 0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x65,0x0, - 0x62,0x0,0x65,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x65,0x0, - 0x72,0x0,0x74,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x62,0x0, - 0x72,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x6e,0x0, - 0xfa,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x2c,0x0, - 0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x61,0x0,0x20,0x0, - 0x70,0x0,0x6f,0x0,0x73,0x0,0x69,0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x0, - 0x74,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x69,0x0, - 0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x73,0x0,0x70,0x0, - 0x6f,0x0,0x6e,0x0,0xed,0x0,0x76,0x0,0x65,0x0,0x6c,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x56,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65, - 0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20, - 0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73, - 0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20, - 0x69,0x66,0x20,0x61,0x20,0x70,0x72,0x6f,0x73,0x65,0x63,0x75,0x74,0x6f,0x72,0x20, - 0x73,0x70,0x6f,0x74,0x20,0x69,0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0xca,0x0,0x53,0x0,0x65,0x0,0x20,0x0,0x6d,0x0, - 0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0, - 0x76,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x63,0x0, - 0x65,0x0,0x62,0x0,0x65,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x61,0x0,0x6c,0x0, - 0x65,0x0,0x72,0x0,0x74,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x6f,0x0, - 0x62,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0xfa,0x0,0x6e,0x0, - 0x63,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x2c,0x0,0x20,0x0,0x73,0x0, - 0x65,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x63,0x0, - 0x61,0x0,0x6c,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x73,0x0, - 0x74,0x0,0x65,0x0,0x6e,0x0,0xf3,0x0,0x67,0x0,0x72,0x0,0x61,0x0,0x66,0x0, - 0x6f,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x65,0x0, - 0x72,0x0,0x20,0x0,0x61,0x0,0x62,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x6f,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x58,0x49,0x66,0x20,0x63,0x68, - 0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20, - 0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74, - 0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65, - 0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x61,0x20,0x73,0x74,0x65,0x6e,0x6f,0x67,0x72, - 0x61,0x70,0x68,0x65,0x72,0x20,0x73,0x70,0x6f,0x74,0x20,0x69,0x73,0x20,0x6f,0x70, - 0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc2,0x0,0x53,0x0, - 0x65,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0, - 0x6f,0x0,0x2c,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0, - 0x72,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x62,0x0,0x65,0x0,0x72,0x0,0xe1,0x0, - 0x20,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x61,0x0,0x73,0x0, - 0x20,0x0,0x73,0x0,0x6f,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x6f,0x0, - 0x73,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0xfa,0x0,0x6e,0x0,0x63,0x0,0x69,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0, - 0x73,0x0,0x6f,0x0,0x73,0x0,0x2c,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0, - 0x6f,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x63,0x0,0x61,0x0,0x6c,0x0,0x20,0x0, - 0x64,0x0,0x6f,0x0,0x20,0x0,0x6a,0x0,0x75,0x0,0xed,0x0,0x7a,0x0,0x3a,0x0, - 0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x65,0x0,0x72,0x0, - 0x20,0x0,0x61,0x0,0x62,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x6f,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x53,0x49,0x66,0x20,0x63,0x68,0x65,0x63, - 0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65, - 0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63, - 0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74, - 0x73,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x20,0x6a,0x75,0x64,0x67,0x65,0x20,0x73, - 0x70,0x6f,0x74,0x20,0x69,0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x82,0x0,0x53,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x61, - 0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x76, - 0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0xe1, - 0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x61,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f, - 0x0,0x20,0x0,0x68,0x0,0x6f,0x0,0x75,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x65, - 0x0,0x6d,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0xfa,0x0,0x6e,0x0,0x63,0x0,0x69, - 0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61, - 0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x39,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f, - 0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74, - 0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e, - 0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x1,0x26,0x0,0x53,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x73,0x0, - 0x20,0x0,0x70,0x0,0x65,0x0,0x73,0x0,0x71,0x0,0x75,0x0,0x69,0x0,0x73,0x0, - 0x61,0x0,0x73,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0, - 0x6e,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x73,0x0, - 0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x20,0x0, - 0x66,0x0,0x61,0x0,0x6c,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x65,0x0,0x6d,0x0, - 0x2c,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x6a,0x0,0x6f,0x0,0x67,0x0,0x6f,0x0, - 0x20,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0xe1,0x0, - 0x20,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72,0x0, - 0x65,0x0,0xe7,0x0,0x6f,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0, - 0x65,0x0,0x63,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x71,0x0, - 0x75,0x0,0x69,0x0,0x20,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x75,0x0, - 0x73,0x0,0x61,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6d,0x0, - 0x6f,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x64,0x0, - 0x65,0x0,0x72,0x0,0x65,0x0,0xe7,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0, - 0x72,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x69,0x0,0x6e,0x0,0x63,0x0,0x69,0x0, - 0x70,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x62,0x0, - 0x61,0x0,0x63,0x0,0x6b,0x0,0x75,0x0,0x70,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x7b,0x49,0x66,0x20,0x74,0x68,0x65,0x20,0x62,0x75,0x69,0x6c, - 0x74,0x2d,0x69,0x6e,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x6c,0x6f,0x6f,0x6b, - 0x75,0x70,0x73,0x20,0x66,0x61,0x69,0x6c,0x2c,0x20,0x74,0x68,0x65,0x20,0x67,0x61, - 0x6d,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x74,0x72,0x79,0x20,0x74,0x68,0x65,0x20, - 0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x20,0x67,0x69,0x76,0x65,0x6e,0x20,0x68,0x65, - 0x72,0x65,0x20,0x61,0x6e,0x64,0x20,0x75,0x73,0x65,0x20,0x69,0x74,0x20,0x61,0x73, - 0x20,0x61,0x20,0x62,0x61,0x63,0x6b,0x75,0x70,0x20,0x6d,0x61,0x73,0x74,0x65,0x72, - 0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x2e, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x90,0x0,0x53,0x0,0x65,0x0,0x20, - 0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c, - 0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x67,0x0,0x69,0x0,0x73, - 0x0,0x74,0x0,0x72,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x74, - 0x0,0x65,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x63, - 0x0,0x61,0x0,0x72,0x0,0x69,0x0,0x6d,0x0,0x62,0x0,0x6f,0x0,0x20,0x0,0x64, - 0x0,0x65,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x70,0x0,0x6f,0x0,0x20, - 0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x55,0x0,0x54,0x0,0x43,0x0,0x20,0x0,0x61, - 0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20, - 0x0,0x6e,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x3f,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x6c, - 0x6f,0x67,0x20,0x77,0x69,0x6c,0x6c,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x20, - 0x61,0x20,0x74,0x69,0x6d,0x65,0x73,0x74,0x61,0x6d,0x70,0x20,0x69,0x6e,0x20,0x55, - 0x54,0x43,0x20,0x62,0x65,0x66,0x6f,0x72,0x65,0x20,0x74,0x68,0x65,0x20,0x6e,0x61, - 0x6d,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xb0,0x0,0x53,0x0, - 0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x63,0x0,0x69,0x0, - 0x6f,0x0,0x6e,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x6e,0x0, - 0x6f,0x0,0x76,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0, - 0x73,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x20,0x0,0x69,0x0, - 0x72,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x70,0x0,0x61,0x0,0x72,0x0, - 0x65,0x0,0x63,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0, - 0x70,0x0,0x61,0x0,0x72,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x69,0x0,0x6e,0x0, - 0x66,0x0,0x65,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x28,0x0, - 0x61,0x0,0x73,0x0,0x73,0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x63,0x0,0x6f,0x0, - 0x6d,0x0,0x6f,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x68,0x0,0x61,0x0, - 0x74,0x0,0x20,0x0,0x4f,0x0,0x4f,0x0,0x43,0x0,0x29,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x8f,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64, - 0x2c,0x20,0x6e,0x65,0x77,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x73,0x20,0x77, - 0x69,0x6c,0x6c,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x20,0x61,0x74,0x20,0x74,0x68, - 0x65,0x20,0x62,0x6f,0x74,0x74,0x6f,0x6d,0x20,0x28,0x6c,0x69,0x6b,0x65,0x20,0x74, - 0x68,0x65,0x20,0x4f,0x4f,0x43,0x20,0x63,0x68,0x61,0x74,0x6c,0x6f,0x67,0x29,0x2e, - 0x20,0x54,0x68,0x65,0x20,0x74,0x72,0x61,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c, - 0x20,0x28,0x41,0x4f,0x31,0x29,0x20,0x62,0x65,0x68,0x61,0x76,0x69,0x6f,0x75,0x72, - 0x20,0x69,0x73,0x20,0x65,0x71,0x75,0x69,0x76,0x61,0x6c,0x65,0x6e,0x74,0x20,0x74, - 0x6f,0x20,0x74,0x68,0x69,0x73,0x20,0x62,0x65,0x69,0x6e,0x67,0x20,0x75,0x6e,0x74, - 0x69,0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x3c, - 0x0,0x53,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61, - 0x0,0x64,0x0,0x61,0x0,0x2c,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x76,0x0,0x61, - 0x0,0x73,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x67, - 0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x70,0x0,0x61,0x0,0x72, - 0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x72,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x73, - 0x0,0x65,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x6d, - 0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x20,0x0,0x61, - 0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x67,0x0,0x65, - 0x0,0x6d,0x0,0x20,0x0,0x61,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x65,0x0,0x63, - 0x0,0x65,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x70, - 0x0,0x72,0x0,0xf3,0x0,0x78,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x6c, - 0x0,0x69,0x0,0x6e,0x0,0x68,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x70,0x0,0xf3, - 0x0,0x73,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x6d,0x0,0x65, - 0x0,0x2e,0x0,0x20,0x0,0x51,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63, - 0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x65, - 0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x20, - 0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x27,0x0,0x6e,0x0,0x6f, - 0x0,0x6d,0x0,0x65,0x0,0x3a,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73, - 0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x27,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x99,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c, - 0x20,0x6e,0x65,0x77,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x73,0x20,0x77,0x69, - 0x6c,0x6c,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x20,0x73,0x65,0x70,0x61,0x72,0x61, - 0x74,0x65,0x64,0x2c,0x20,0x77,0x69,0x74,0x68,0x20,0x74,0x68,0x65,0x20,0x6d,0x65, - 0x73,0x73,0x61,0x67,0x65,0x20,0x63,0x6f,0x6d,0x69,0x6e,0x67,0x20,0x6f,0x6e,0x20, - 0x74,0x68,0x65,0x20,0x6e,0x65,0x78,0x74,0x20,0x6c,0x69,0x6e,0x65,0x20,0x61,0x66, - 0x74,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x6e,0x61,0x6d,0x65,0x2e,0x20,0x57,0x68, - 0x65,0x6e,0x20,0x75,0x6e,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x69,0x74,0x20, - 0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x73,0x20,0x69,0x74,0x20,0x61,0x73,0x20,0x27, - 0x6e,0x61,0x6d,0x65,0x3a,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x27,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xba,0x0,0x53,0x0,0x65,0x0,0x20,0x0, - 0x61,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0, - 0x20,0x0,0x6f,0x0,0x20,0x0,0x6a,0x0,0x6f,0x0,0x67,0x0,0x6f,0x0,0x20,0x0, - 0x70,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x69,0x0,0x72,0x0, - 0xe1,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x66,0x0, - 0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x6f,0x0, - 0x6e,0x0,0x6f,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x6d,0x0, - 0x20,0x0,0x6c,0x0,0x6f,0x0,0x6f,0x0,0x70,0x0,0x20,0x0,0x73,0x0,0x65,0x0, - 0x6a,0x0,0x61,0x0,0x6d,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x70,0x0,0x72,0x0, - 0x6f,0x0,0x64,0x0,0x75,0x0,0x7a,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x73,0x0, - 0x20,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0xe9,0x0,0x2d,0x0, - 0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0xe7,0x0,0xf5,0x0,0x65,0x0, - 0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4c,0x49,0x66,0x20, - 0x74,0x72,0x75,0x65,0x2c,0x20,0x74,0x68,0x65,0x20,0x67,0x61,0x6d,0x65,0x20,0x77, - 0x69,0x6c,0x6c,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x20,0x6c,0x6f,0x6f,0x70,0x69,0x6e, - 0x67,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20, - 0x74,0x6f,0x20,0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e,0x20,0x70,0x72,0x65,0x61,0x6e, - 0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0xb0,0x0,0x53,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x74,0x0,0x69,0x0, - 0x76,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x6f,0x0,0x20,0x0, - 0x6a,0x0,0x6f,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x69,0x0, - 0x74,0x0,0x69,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0, - 0x73,0x0,0x69,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x73,0x0,0x6f,0x0, - 0x6e,0x0,0x6f,0x0,0x72,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x6d,0x0,0x65,0x0, - 0x73,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x61,0x0,0x6e,0x0, - 0x64,0x0,0x6f,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x73,0x0, - 0x70,0x0,0x61,0x0,0xe7,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x69,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x6e,0x0, - 0x64,0x0,0x6f,0x0,0x20,0x0,0x22,0x0,0x64,0x0,0x69,0x0,0x74,0x0,0x6f,0x0, - 0x22,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4b,0x49,0x66,0x20, - 0x74,0x72,0x75,0x65,0x2c,0x20,0x74,0x68,0x65,0x20,0x67,0x61,0x6d,0x65,0x20,0x77, - 0x69,0x6c,0x6c,0x20,0x70,0x6c,0x61,0x79,0x20,0x61,0x20,0x62,0x6c,0x69,0x70,0x20, - 0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x76,0x65,0x6e,0x20,0x77,0x68,0x65,0x6e,0x20, - 0x61,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x69,0x73,0x20,0x27,0x62,0x65,0x69,0x6e, - 0x67,0x20,0x73,0x61,0x69,0x64,0x27,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x6a,0x0,0x53,0x0,0x65,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x63,0x0,0xea, - 0x0,0x20,0x0,0xe9,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x43,0x0,0x4d, - 0x0,0x2c,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x73,0x0,0x69,0x0,0x72,0x0,0x61, - 0x0,0x20,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f, - 0x0,0x73,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x73,0x0,0x65,0x0,0x6a,0x0,0x61,0x0,0x20,0x0,0x68,0x0,0x6f,0x0,0x73, - 0x0,0x70,0x0,0x65,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x39,0x49,0x66,0x20,0x79,0x6f,0x75,0x27,0x72,0x65,0x20, - 0x61,0x20,0x43,0x4d,0x2c,0x20,0x65,0x6e,0x74,0x65,0x72,0x20,0x77,0x68,0x61,0x74, - 0x20,0x63,0x61,0x73,0x65,0x73,0x20,0x79,0x6f,0x75,0x20,0x61,0x72,0x65,0x20,0x77, - 0x69,0x6c,0x6c,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x68,0x6f,0x73,0x74,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa,0x0,0x4a,0x0,0x75,0x0,0xed,0x0, - 0x7a,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4a,0x75,0x64, - 0x67,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x4a,0x0, - 0x75,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x6,0x4a,0x75,0x72,0x6f,0x72,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x36,0x0,0x50,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x72,0x0, - 0x20,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0xfa,0x0,0x73,0x0,0x69,0x0,0x63,0x0, - 0x61,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x6f,0x0, - 0x74,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x18,0x4b,0x69,0x6c,0x6c,0x20,0x4d,0x75,0x73,0x69,0x63,0x20, - 0x4f,0x6e,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x4c,0x0,0xed,0x0,0x6e,0x0,0x67,0x0, - 0x75,0x0,0x61,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x4c, - 0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x26,0x0,0x4c,0x0,0x6f,0x0,0x67,0x0,0x20,0x0,0x76,0x0,0x61,0x0,0x69, - 0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x62,0x0,0x61, - 0x0,0x69,0x0,0x78,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x13,0x4c,0x6f,0x67,0x20,0x67,0x6f,0x65,0x73,0x20,0x64,0x6f,0x77,0x6e,0x77, - 0x61,0x72,0x64,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1e,0x0, - 0x54,0x0,0x61,0x0,0x6d,0x0,0x61,0x0,0x6e,0x0,0x68,0x0,0x6f,0x0,0x20,0x0, - 0x64,0x0,0x6f,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x67,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x4c,0x6f,0x67,0x20,0x6c,0x65,0x6e,0x67,0x74, - 0x68,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1c,0x0,0x4d,0x0,0x61, - 0x0,0x72,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x20, - 0x0,0x6c,0x0,0x6f,0x0,0x67,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xb,0x4c,0x6f,0x67,0x20,0x6d,0x61,0x72,0x67,0x69,0x6e,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x24,0x0,0x4e,0x0,0x6f,0x0,0x76,0x0,0x61,0x0, - 0x20,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x68,0x0,0x61,0x0,0x20,0x0,0x6e,0x0, - 0x6f,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x67,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xc,0x4c,0x6f,0x67,0x20,0x6e,0x65,0x77,0x6c,0x69,0x6e,0x65, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x54,0x0,0x69,0x0, - 0x6d,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6d,0x0,0x70,0x0,0x20,0x0, - 0x6e,0x0,0x6f,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x67,0x0,0x69,0x0,0x73,0x0, - 0x74,0x0,0x72,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xe,0x4c,0x6f,0x67,0x20,0x74,0x69,0x6d,0x65,0x73,0x74,0x61,0x6d,0x70,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x4d,0x0,0xfa,0x0,0x73,0x0, - 0x69,0x0,0x63,0x0,0x61,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x6,0x4d,0x75,0x73,0x69,0x63,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x3c,0x0,0x45,0x0,0x6e,0x0,0x76,0x0,0x69,0x0,0x65,0x0,0x20,0x0,0x65,0x0, - 0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x70,0x0, - 0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0, - 0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x16,0x4e,0x65,0x74,0x77,0x6f,0x72,0x6b,0x20,0x46, - 0x72,0x61,0x6d,0x65,0x20,0x45,0x66,0x66,0x65,0x63,0x74,0x73,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0xa2,0x0,0x52,0x0,0x65,0x0,0x70,0x0,0x72,0x0, - 0x6f,0x0,0x64,0x0,0x75,0x0,0x7a,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0, - 0x73,0x0,0x6f,0x0,0x6d,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x62,0x0, - 0x6c,0x0,0x69,0x0,0x70,0x0,0x20,0x0,0x22,0x0,0x75,0x0,0x6d,0x0,0x61,0x0, - 0x20,0x0,0x76,0x0,0x65,0x0,0x7a,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0, - 0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x73,0x0, - 0xed,0x0,0x6d,0x0,0x62,0x0,0x6f,0x0,0x6c,0x0,0x6f,0x0,0x20,0x0,0x58,0x0, - 0x22,0x0,0x2c,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x71,0x0,0x75,0x0, - 0x65,0x0,0x20,0x0,0x58,0x0,0x20,0x0,0xe9,0x0,0x20,0x0,0x61,0x0,0x20,0x0, - 0x74,0x0,0x61,0x0,0x78,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x62,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x47,0x50,0x6c,0x61,0x79,0x20,0x61,0x20,0x62,0x6c,0x69,0x70,0x20,0x73, - 0x6f,0x75,0x6e,0x64,0x20,0x22,0x6f,0x6e,0x63,0x65,0x20,0x70,0x65,0x72,0x20,0x65, - 0x76,0x65,0x72,0x79,0x20,0x58,0x20,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x22,0x2c, - 0x20,0x77,0x68,0x65,0x72,0x65,0x20,0x58,0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20, - 0x62,0x6c,0x69,0x70,0x20,0x72,0x61,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x34,0x0,0x42,0x0,0x61,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e, - 0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x6f,0x0,0x2d, - 0x0,0x65,0x0,0x78,0x0,0x70,0x0,0x6c,0x0,0x69,0x0,0x63,0x0,0x61,0x0,0x74, - 0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x18,0x50,0x72,0x65,0x74,0x74,0x79,0x20,0x73,0x65,0x6c,0x66,0x2d,0x65,0x78, - 0x70,0x6c,0x61,0x6e,0x61,0x74,0x6f,0x72,0x79,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x12,0x0,0x50,0x0,0x72,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x0,0x74, - 0x0,0x6f,0x0,0x72,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc, - 0x50,0x72,0x6f,0x73,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x3a,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x9e,0x0,0x41,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c, - 0x0,0x69,0x0,0x7a,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x65, - 0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x64, - 0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x6c, - 0x0,0x65,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20, - 0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72, - 0x0,0x66,0x0,0x61,0x0,0x63,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20, - 0x0,0x75,0x0,0x73,0x0,0x75,0x0,0xe1,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x20, - 0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x72, - 0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x70,0x0,0x6f,0x0,0x6e,0x0,0x64,0x0,0x65, - 0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3d,0x52,0x65, - 0x66,0x72,0x65,0x73,0x68,0x20,0x74,0x68,0x65,0x20,0x74,0x68,0x65,0x6d,0x65,0x20, - 0x61,0x6e,0x64,0x20,0x75,0x70,0x64,0x61,0x74,0x65,0x20,0x61,0x6c,0x6c,0x20,0x6f, - 0x66,0x20,0x74,0x68,0x65,0x20,0x75,0x69,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74, - 0x73,0x20,0x74,0x6f,0x20,0x6d,0x61,0x74,0x63,0x68,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x8,0x0,0x53,0x0,0x46,0x0,0x58,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x53,0x46,0x58,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x1,0x26,0x0,0x45,0x0,0x6e,0x0,0x76,0x0,0x69,0x0,0x65,0x0, - 0x20,0x0,0x76,0x0,0x69,0x0,0x62,0x0,0x72,0x0,0x61,0x0,0xe7,0x0,0xf5,0x0, - 0x65,0x0,0x73,0x0,0x2c,0x0,0x20,0x0,0x66,0x0,0x6c,0x0,0x61,0x0,0x73,0x0, - 0x68,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x6f,0x0, - 0x6e,0x0,0x73,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x74,0x0,0x65,0x0, - 0x6c,0x0,0x61,0x0,0x2c,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x66,0x0, - 0x6f,0x0,0x72,0x0,0x6d,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66,0x0, - 0x69,0x0,0x6e,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0, - 0x20,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0, - 0x69,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x72,0x0, - 0x65,0x0,0x64,0x0,0x65,0x0,0x2e,0x0,0x20,0x0,0x46,0x0,0x75,0x0,0x6e,0x0, - 0x63,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x70,0x0, - 0x65,0x0,0x6e,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0, - 0x61,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0, - 0x6f,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0, - 0x20,0x0,0x73,0x0,0x75,0x0,0x70,0x0,0x6f,0x0,0x72,0x0,0x74,0x0,0x61,0x0, - 0x6d,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x73,0x0,0x61,0x0,0x20,0x0,0x66,0x0, - 0x75,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0, - 0x69,0x0,0x64,0x0,0x61,0x0,0x64,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x8c,0x53,0x65,0x6e,0x64,0x20,0x73,0x63,0x72,0x65,0x65,0x6e, - 0x2d,0x73,0x68,0x61,0x6b,0x69,0x6e,0x67,0x2c,0x20,0x66,0x6c,0x61,0x73,0x68,0x65, - 0x73,0x20,0x61,0x6e,0x64,0x20,0x73,0x6f,0x75,0x6e,0x64,0x73,0x20,0x61,0x73,0x20, - 0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x63, - 0x68,0x61,0x72,0x2e,0x69,0x6e,0x69,0x20,0x6f,0x76,0x65,0x72,0x20,0x74,0x68,0x65, - 0x20,0x6e,0x65,0x74,0x77,0x6f,0x72,0x6b,0x2e,0x20,0x4f,0x6e,0x6c,0x79,0x20,0x77, - 0x6f,0x72,0x6b,0x73,0x20,0x66,0x6f,0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x73, - 0x20,0x74,0x68,0x61,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x74,0x68, - 0x69,0x73,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x69,0x74,0x79, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xac,0x0,0x44,0x0,0x65,0x0, - 0x66,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x76,0x0, - 0x6f,0x0,0x6c,0x0,0x75,0x0,0x6d,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x61,0x0, - 0x64,0x0,0x72,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0, - 0x53,0x0,0x46,0x0,0x58,0x0,0x2e,0x0,0x20,0x0,0x49,0x0,0x6e,0x0,0x74,0x0, - 0x65,0x0,0x72,0x0,0x6a,0x0,0x65,0x0,0x69,0x0,0xe7,0x0,0xf5,0x0,0x65,0x0, - 0x73,0x0,0x20,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x69,0x0, - 0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x6f,0x0, - 0x72,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x69,0x0, - 0x73,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x6d,0x0, - 0x20,0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x27,0x0,0x53,0x0, - 0x46,0x0,0x58,0x0,0x27,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x55,0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x53,0x46,0x58,0x27,0x73,0x20, - 0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x2e,0x20, - 0x49,0x6e,0x74,0x65,0x72,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0x61,0x6e, - 0x64,0x20,0x61,0x63,0x74,0x75,0x61,0x6c,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65, - 0x66,0x66,0x65,0x63,0x74,0x73,0x20,0x63,0x6f,0x75,0x6e,0x74,0x20,0x61,0x73,0x20, - 0x27,0x53,0x46,0x58,0x27,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x62, - 0x0,0x44,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x6f, - 0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x73,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x69, - 0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0xe1,0x0,0x75,0x0,0x64,0x0,0x69,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61, - 0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x64,0x0,0x6f,0x0,0x73, - 0x0,0x20,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x73, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x25,0x53,0x65,0x74,0x73, - 0x20,0x74,0x68,0x65,0x20,0x61,0x75,0x64,0x69,0x6f,0x20,0x64,0x65,0x76,0x69,0x63, - 0x65,0x20,0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20,0x73,0x6f,0x75,0x6e,0x64,0x73, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x68,0x0,0x44,0x0,0x65,0x0, - 0x66,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x61,0x0, - 0x74,0x0,0x72,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x6e,0x0, - 0x74,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x72,0x0,0x65,0x0, - 0x70,0x0,0x72,0x0,0x6f,0x0,0x64,0x0,0x75,0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0, - 0x20,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0, - 0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x62,0x0,0x6c,0x0,0x69,0x0, - 0x70,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2f,0x53,0x65,0x74, - 0x73,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x6c,0x61,0x79,0x20,0x62,0x65,0x74,0x77, - 0x65,0x65,0x6e,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20, - 0x62,0x6c,0x69,0x70,0x20,0x73,0x6f,0x75,0x6e,0x64,0x73,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x78,0x0,0x44,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e, - 0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x69,0x0,0x64,0x0,0x69,0x0,0x6f, - 0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x76,0x0,0x6f, - 0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x6e,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x71, - 0x0,0x75,0x0,0x69,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x75,0x0,0x73, - 0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x69,0x0,0x64,0x0,0x69, - 0x0,0x6f,0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x73, - 0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x61,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x40,0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65, - 0x20,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x20,0x69,0x66,0x20,0x79,0x6f,0x75, - 0x20,0x64,0x6f,0x6e,0x27,0x74,0x20,0x77,0x61,0x6e,0x74,0x20,0x74,0x6f,0x20,0x75, - 0x73,0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x73,0x79,0x73,0x74,0x65,0x6d,0x20,0x6c, - 0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x42,0x0,0x44,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20, - 0x0,0x6f,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x6c,0x0,0x75,0x0,0x6d,0x0,0x65, - 0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x64,0x0,0x72,0x0,0xe3,0x0,0x6f,0x0,0x20, - 0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0xfa,0x0,0x73,0x0,0x69,0x0,0x63, - 0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x20,0x53,0x65, - 0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x6d,0x75,0x73,0x69,0x63,0x27,0x73,0x20,0x64, - 0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x2e,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x6c,0x0,0x44,0x0,0x65,0x0,0x66,0x0,0x69, - 0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6d, - 0x0,0x61,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x20, - 0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x6a,0x0,0x6f,0x0,0x67,0x0,0x6f,0x0,0x2e, - 0x0,0x20,0x0,0x53,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x6f, - 0x0,0x76,0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x61,0x0,0x20, - 0x0,0x61,0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x72,0x0,0x20, - 0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0xea,0x0,0x6e, - 0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6c, - 0x0,0x6f,0x0,0x62,0x0,0x62,0x0,0x79,0x0,0x2c,0x0,0x20,0x0,0x73,0x0,0x65, - 0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x6e,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x73, - 0x0,0x73,0x0,0xe1,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x20,0x0,0x72,0x0,0x65, - 0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x72,0x0,0x65,0x0,0x67,0x0,0xe1,0x0,0x2d, - 0x0,0x6c,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20, - 0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x61, - 0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0xe7,0x0,0xf5,0x0,0x65, - 0x0,0x73,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x68,0x0,0x61,0x0,0x6d, - 0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x2c, - 0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x69,0x0,0x6e, - 0x0,0x67,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x73,0x0,0x61,0x0,0x72,0x0,0x20, - 0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x73,0x0,0x65, - 0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x65, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x69,0x0,0x78,0x0,0xe1,0x0,0x2d,0x0,0x6c, - 0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xbb,0x53,0x65, - 0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x74,0x68,0x65,0x6d,0x65,0x20,0x75,0x73,0x65, - 0x64,0x20,0x69,0x6e,0x2d,0x67,0x61,0x6d,0x65,0x2e,0x20,0x49,0x66,0x20,0x74,0x68, - 0x65,0x20,0x6e,0x65,0x77,0x20,0x74,0x68,0x65,0x6d,0x65,0x20,0x63,0x68,0x61,0x6e, - 0x67,0x65,0x73,0x20,0x74,0x68,0x65,0x20,0x6c,0x6f,0x62,0x62,0x79,0x27,0x73,0x20, - 0x6c,0x6f,0x6f,0x6b,0x20,0x61,0x73,0x20,0x77,0x65,0x6c,0x6c,0x2c,0x20,0x79,0x6f, - 0x75,0x27,0x6c,0x6c,0x20,0x6e,0x65,0x65,0x64,0x20,0x74,0x6f,0x20,0x72,0x65,0x6c, - 0x6f,0x61,0x64,0x20,0x74,0x68,0x65,0x20,0x6c,0x6f,0x62,0x62,0x79,0x20,0x66,0x6f, - 0x72,0x20,0x74,0x68,0x65,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x20,0x74,0x6f, - 0x20,0x74,0x61,0x6b,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x2c,0x20,0x73,0x75, - 0x63,0x68,0x20,0x61,0x73,0x20,0x62,0x79,0x20,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67, - 0x20,0x61,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x61,0x6e,0x64,0x20,0x6c,0x65, - 0x61,0x76,0x69,0x6e,0x67,0x20,0x69,0x74,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x6c,0x0,0x44,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e,0x0,0x65,0x0, - 0x20,0x0,0x6f,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x6c,0x0,0x75,0x0,0x6d,0x0, - 0x65,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x62,0x0,0x6c,0x0, - 0x69,0x0,0x70,0x0,0x73,0x0,0x2c,0x0,0x20,0x0,0x6f,0x0,0x73,0x0,0x20,0x0, - 0x65,0x0,0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0, - 0x73,0x0,0x6f,0x0,0x6e,0x0,0x6f,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x20,0x0,0x66,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x38,0x53,0x65,0x74,0x73,0x20,0x74,0x68, - 0x65,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20, - 0x62,0x6c,0x69,0x70,0x73,0x2c,0x20,0x74,0x68,0x65,0x20,0x74,0x61,0x6c,0x6b,0x69, - 0x6e,0x67,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1a,0x0,0x43,0x0,0x6f,0x0, - 0x6e,0x0,0x66,0x0,0x69,0x0,0x67,0x0,0x75,0x0,0x72,0x0,0x61,0x0,0xe7,0x0, - 0xf5,0x0,0x65,0x0,0x73,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53, - 0x65,0x74,0x74,0x69,0x6e,0x67,0x73,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x18,0x0,0x45,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0xf3,0x0,0x67,0x0, - 0x72,0x0,0x61,0x0,0x66,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0xd,0x53,0x74,0x65,0x6e,0x6f,0x67,0x72,0x61,0x70,0x68,0x65,0x72,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1e,0x0,0x4d,0x0,0x61,0x0,0x6e, - 0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x69, - 0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xf,0x53,0x74,0x69,0x63,0x6b,0x79,0x20,0x45,0x66,0x66,0x65,0x63,0x74,0x73, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x4d,0x0,0x61,0x0, - 0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0, - 0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x73,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x10,0x53,0x74,0x69,0x63,0x6b,0x79,0x20,0x50,0x72,0x65,0x61, - 0x6e,0x69,0x6d,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x18,0x0, - 0x4d,0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x73,0x0, - 0x6f,0x0,0x6e,0x0,0x73,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xe,0x53,0x74,0x69,0x63,0x6b,0x79,0x20,0x53,0x6f,0x75,0x6e,0x64,0x73,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x7c,0x0,0x41,0x0,0x20,0x0,0x64,0x0, - 0x69,0x0,0x73,0x0,0x74,0x0,0xe2,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0, - 0x20,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x70,0x0,0x69,0x0,0x78,0x0,0x65,0x0, - 0x6c,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x65,0x0, - 0x20,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6e,0x0, - 0x74,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0, - 0x20,0x0,0x6c,0x0,0x6f,0x0,0x67,0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x2e,0x0, - 0x20,0x0,0x50,0x0,0x61,0x0,0x64,0x0,0x72,0x0,0xe3,0x0,0x6f,0x0,0x3a,0x0, - 0x20,0x0,0x30,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x44,0x54, - 0x68,0x65,0x20,0x64,0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x20,0x69,0x6e,0x20,0x70, - 0x69,0x78,0x65,0x6c,0x73,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e,0x20,0x65,0x61, - 0x63,0x68,0x20,0x65,0x6e,0x74,0x72,0x79,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20, - 0x49,0x43,0x20,0x6c,0x6f,0x67,0x2e,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a, - 0x20,0x30,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x18,0x0,0x54,0x0, - 0x65,0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x76,0x0,0x69,0x0,0x73,0x0,0x75,0x0, - 0x61,0x0,0x6c,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x54, - 0x68,0x65,0x6d,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x54,0x0, - 0x45,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0, - 0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0xe3,0x0, - 0x6f,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x70,0x0,0x6f,0x0,0x72,0x0,0x74,0x0, - 0x61,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x61,0x0, - 0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0, - 0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x29,0x54,0x68,0x69, - 0x73,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f, - 0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61, - 0x6c,0x65,0x72,0x74,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x50, - 0x0,0x45,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72, - 0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x73,0x0,0x75, - 0x0,0x70,0x0,0x6f,0x0,0x72,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x6e, - 0x0,0xfa,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64, - 0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x21,0x54,0x68,0x69,0x73,0x20,0x73, - 0x65,0x72,0x76,0x65,0x72,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x73,0x20,0x63, - 0x61,0x73,0x65,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0xce,0x0,0x41,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x65,0x0, - 0x20,0x0,0x69,0x0,0x73,0x0,0x73,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0, - 0x72,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0, - 0x74,0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0, - 0x6e,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x20,0x0,0x74,0x0, - 0x65,0x0,0x6e,0x0,0x68,0x0,0x61,0x0,0x6d,0x0,0x20,0x0,0x61,0x0,0x73,0x0, - 0x20,0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x72,0x0, - 0xf3,0x0,0x70,0x0,0x72,0x0,0x69,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x63,0x0, - 0x61,0x0,0x69,0x0,0x78,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x20,0x0,0x62,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x2d,0x0,0x70,0x0,0x61,0x0, - 0x70,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0, - 0x6e,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x64,0x0,0x61,0x0, - 0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4d,0x54,0x75,0x72, - 0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x61,0x6c,0x6c, - 0x6f,0x77,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x20,0x74,0x6f, - 0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x6f,0x77, - 0x6e,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x63,0x68,0x61,0x74,0x20,0x62,0x6f, - 0x78,0x20,0x64,0x65,0x73,0x69,0x67,0x6e,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0xca,0x0,0x41,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x65,0x0,0x2d, - 0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x69, - 0x0,0x6d,0x0,0x70,0x0,0x65,0x0,0x64,0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x71, - 0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x69, - 0x0,0x78,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65, - 0x0,0x6c,0x0,0x65,0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x20,0x0,0x70,0x0,0x72,0x0,0xe9,0x0,0x2d,0x0,0x61,0x0,0x6e,0x0,0x69, - 0x0,0x6d,0x0,0x61,0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65, - 0x0,0x6a,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x6d,0x0,0x61, - 0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x70, - 0x0,0xf3,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x65, - 0x0,0x63,0x0,0x75,0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x6f, - 0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x54,0x54,0x75,0x72,0x6e,0x20,0x74,0x68,0x69, - 0x73,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x20, - 0x70,0x72,0x65,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x63,0x68,0x65, - 0x63,0x6b,0x62,0x6f,0x78,0x20,0x66,0x72,0x6f,0x6d,0x20,0x63,0x6c,0x65,0x61,0x72, - 0x69,0x6e,0x67,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e, - 0x67,0x20,0x74,0x68,0x65,0x20,0x65,0x6d,0x6f,0x74,0x65,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0xaa,0x0,0x41,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x65, - 0x0,0x2d,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20, - 0x0,0x69,0x0,0x6d,0x0,0x70,0x0,0x65,0x0,0x64,0x0,0x69,0x0,0x72,0x0,0x20, - 0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0x65, - 0x0,0x6e,0x0,0x75,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x73,0x0,0x70,0x0,0x65, - 0x0,0x6e,0x0,0x73,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x65, - 0x0,0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x78, - 0x0,0x63,0x0,0x6c,0x0,0x75,0x0,0x61,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x65, - 0x0,0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x70, - 0x0,0xf3,0x0,0x73,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x70,0x0,0x72,0x0,0x6f, - 0x0,0x64,0x0,0x75,0x0,0x7a,0x0,0x69,0x0,0x2d,0x0,0x6c,0x0,0x6f,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x57,0x54,0x75,0x72,0x6e,0x20,0x74, - 0x68,0x69,0x73,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x70,0x72,0x65,0x76,0x65,0x6e, - 0x74,0x20,0x74,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20,0x64,0x72, - 0x6f,0x70,0x64,0x6f,0x77,0x6e,0x20,0x66,0x72,0x6f,0x6d,0x20,0x63,0x6c,0x65,0x61, - 0x72,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x20, - 0x61,0x66,0x74,0x65,0x72,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x69,0x74, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x9a,0x0,0x4d,0x0,0x61,0x0, - 0x72,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0, - 0x61,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x74,0x0,0x61,0x0,0x72,0x0, - 0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x73,0x0, - 0x6f,0x0,0x6d,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0x65,0x0, - 0x6e,0x0,0x75,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x73,0x0,0x70,0x0,0x65,0x0, - 0x6e,0x0,0x73,0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x70,0x0,0x61,0x0,0x67,0x0, - 0x75,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x6d,0x0, - 0x20,0x0,0x61,0x0,0x70,0x0,0xf3,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x20,0x0, - 0x72,0x0,0x65,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x64,0x0,0x75,0x0,0xe7,0x0, - 0xe3,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x54,0x54, - 0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x70, - 0x72,0x65,0x76,0x65,0x6e,0x74,0x20,0x74,0x68,0x65,0x20,0x73,0x6f,0x75,0x6e,0x64, - 0x20,0x64,0x72,0x6f,0x70,0x64,0x6f,0x77,0x6e,0x20,0x66,0x72,0x6f,0x6d,0x20,0x63, - 0x6c,0x65,0x61,0x72,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x73,0x6f,0x75,0x6e, - 0x64,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20, - 0x69,0x74,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x52,0x0,0x50,0x0, - 0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x69,0x0,0x72,0x0,0x20,0x0, - 0x63,0x0,0x6f,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0, - 0x20,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x74,0x0,0x20,0x0,0x64,0x0,0x6f,0x0, - 0x20,0x0,0x49,0x0,0x43,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x73,0x0, - 0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2f,0x55,0x73,0x65,0x20,0x74,0x68,0x65, - 0x20,0x6d,0x61,0x72,0x6b,0x75,0x70,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x73,0x20,0x69, - 0x6e,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x49,0x43,0x20, - 0x63,0x68,0x61,0x74,0x6c,0x6f,0x67,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0xbe,0x0,0x53,0x0,0x65,0x0,0x75,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x6d, - 0x0,0x65,0x0,0x20,0x0,0x4f,0x0,0x4f,0x0,0x43,0x0,0x20,0x0,0x73,0x0,0x65, - 0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x6f,0x0,0x6d, - 0x0,0x61,0x0,0x74,0x0,0x69,0x0,0x63,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x6e, - 0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e, - 0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x20, - 0x0,0x65,0x0,0x73,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x76,0x0,0x61,0x0,0x6c, - 0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x69, - 0x0,0x6e,0x0,0x67,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x73,0x0,0x61,0x0,0x72, - 0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x73, - 0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4d,0x59,0x6f,0x75,0x72,0x20,0x4f, - 0x4f,0x43,0x20,0x6e,0x61,0x6d,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20, - 0x61,0x75,0x74,0x6f,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x6c,0x79,0x20,0x73,0x65, - 0x74,0x20,0x74,0x6f,0x20,0x74,0x68,0x69,0x73,0x20,0x76,0x61,0x6c,0x75,0x65,0x20, - 0x77,0x68,0x65,0x6e,0x20,0x79,0x6f,0x75,0x20,0x6a,0x6f,0x69,0x6e,0x20,0x61,0x20, - 0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0x2a,0x0,0x22,0x0,0x25,0x0,0x31,0x0,0x22,0x0,0x20,0x0,0x66,0x0,0x6f,0x0, - 0x69,0x0,0x20,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x73,0x0,0x66,0x0, - 0x65,0x0,0x72,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x1a,0x22,0x25,0x31,0x22,0x20,0x68,0x61,0x73,0x20,0x62,0x65, - 0x65,0x6e,0x20,0x74,0x72,0x61,0x6e,0x73,0x66,0x65,0x72,0x72,0x65,0x64,0x2e,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff, - 0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x41,0x2f,0x4d, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x36,0x0,0x41,0x0,0x64,0x0,0x69,0x0,0x63,0x0,0x69,0x0,0x6f, - 0x0,0x6e,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x76,0x0,0x61, - 0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0xea,0x0,0x6e,0x0,0x63, - 0x0,0x69,0x0,0x61,0x0,0x2e,0x0,0x2e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x13,0x41,0x64,0x64,0x20,0x6e,0x65,0x77,0x20,0x65,0x76,0x69,0x64, - 0x65,0x6e,0x63,0x65,0x2e,0x2e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x76,0x0,0x41,0x0,0x64,0x0, - 0x69,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x74,0x0, - 0x65,0x0,0x78,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0xe0,0x0,0x20,0x0,0x73,0x0, - 0x75,0x0,0x61,0x0,0x20,0x0,0xfa,0x0,0x6c,0x0,0x74,0x0,0x69,0x0,0x6d,0x0, - 0x61,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x67,0x0, - 0x65,0x0,0x6d,0x0,0x20,0x0,0x66,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x64,0x0, - 0x61,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0, - 0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x32,0x41,0x64,0x64,0x20,0x74, - 0x65,0x78,0x74,0x20,0x74,0x6f,0x20,0x79,0x6f,0x75,0x72,0x20,0x6c,0x61,0x73,0x74, - 0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20, - 0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0xe,0x0,0x41,0x0,0x64,0x0,0x69,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x6f,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x41,0x64,0x64,0x69,0x74,0x69,0x76, - 0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x56,0x0,0x50,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0, - 0x74,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x72,0x0, - 0x61,0x0,0x72,0x0,0x20,0x0,0x76,0x0,0xe1,0x0,0x72,0x0,0x69,0x0,0x6f,0x0, - 0x73,0x0,0x20,0x0,0x61,0x0,0x73,0x0,0x70,0x0,0x65,0x0,0x63,0x0,0x74,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x6c,0x0, - 0x69,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x33,0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x79,0x6f,0x75,0x20, - 0x74,0x6f,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x76,0x61,0x72,0x69,0x6f,0x75, - 0x73,0x20,0x61,0x73,0x70,0x65,0x63,0x74,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65, - 0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xb2,0x0,0x55,0x0,0x6d, - 0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x66, - 0x0,0x61,0x0,0x63,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61, - 0x0,0x20,0x0,0x61,0x0,0x6a,0x0,0x75,0x0,0x64,0x0,0xe1,0x0,0x2d,0x0,0x6c, - 0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x75,0x0,0x6e, - 0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20, - 0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x20,0x0,0x28,0x0,0x64,0x0,0x65, - 0x0,0x76,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x75, - 0x0,0x6d,0x0,0x20,0x0,0x43,0x0,0x4d,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72, - 0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20, - 0x0,0x61,0x0,0x6e,0x0,0x75,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x72, - 0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x29,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x61,0x41,0x6e,0x20,0x69,0x6e,0x74,0x65,0x72, - 0x66,0x61,0x63,0x65,0x20,0x74,0x6f,0x20,0x68,0x65,0x6c,0x70,0x20,0x79,0x6f,0x75, - 0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x20,0x61,0x20,0x63,0x61,0x73,0x65, - 0x20,0x28,0x79,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x74,0x6f,0x20,0x62,0x65, - 0x20,0x61,0x20,0x43,0x4d,0x20,0x66,0x69,0x72,0x73,0x74,0x20,0x74,0x6f,0x20,0x62, - 0x65,0x20,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e, - 0x63,0x65,0x20,0x63,0x61,0x73,0x65,0x73,0x29,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa,0x0,0x4c,0x0, - 0x6f,0x0,0x62,0x0,0x62,0x0,0x79,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xd,0x42,0x61,0x63,0x6b,0x20,0x74,0x6f,0x20,0x4c,0x6f,0x62,0x62,0x79,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x92,0x0,0x54,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x2d,0x0,0x73, - 0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x70, - 0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x2e, - 0x0,0x20,0x0,0x56,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x6e,0x0,0xe3, - 0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x63, - 0x0,0x61,0x0,0x70,0x0,0x61,0x0,0x7a,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x67,0x0,0x69, - 0x0,0x72,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x70, - 0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x67,0x0,0x65, - 0x0,0x6d,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4f,0x42,0x65, - 0x63,0x6f,0x6d,0x65,0x20,0x61,0x20,0x73,0x70,0x65,0x63,0x74,0x61,0x74,0x6f,0x72, - 0x2e,0x20,0x59,0x6f,0x75,0x20,0x77,0x6f,0x6e,0x27,0x74,0x20,0x62,0x65,0x20,0x61, - 0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x69,0x6e,0x74,0x65,0x72,0x61,0x63,0x74,0x20, - 0x77,0x69,0x74,0x68,0x20,0x74,0x68,0x65,0x20,0x69,0x6e,0x2d,0x63,0x68,0x61,0x72, - 0x61,0x63,0x74,0x65,0x72,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff, - 0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x42,0x6c,0x69,0x70,0x73, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x76,0x0,0x41,0x0,0x62,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x61, - 0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0xe7,0x0,0xe3,0x0,0x6f, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73, - 0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x65, - 0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65, - 0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e, - 0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x3f,0x42,0x72,0x69,0x6e,0x67,0x20,0x75,0x70,0x20,0x74,0x68,0x65, - 0x20,0x43,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x53,0x65,0x6c,0x65,0x63, - 0x74,0x20,0x53,0x63,0x72,0x65,0x65,0x6e,0x20,0x61,0x6e,0x64,0x20,0x63,0x68,0x61, - 0x6e,0x67,0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74, - 0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x34,0x0,0x41,0x0,0x62,0x0,0x72,0x0,0x61,0x0, - 0x20,0x0,0x61,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6c,0x0,0x61,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0xea,0x0, - 0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x1d,0x42,0x72,0x69,0x6e,0x67,0x20,0x75,0x70,0x20,0x74,0x68, - 0x65,0x20,0x45,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x73,0x63,0x72,0x65,0x65, - 0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6, - 0x43,0x4c,0x49,0x45,0x4e,0x54,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x26,0x0,0x43,0x0,0x68,0x0,0x61, - 0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x4d, - 0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x72, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x43,0x61,0x6c,0x6c,0x20,0x4d, - 0x6f,0x64,0x65,0x72,0x61,0x74,0x6f,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x8,0x43,0x61,0x6c,0x6c,0x20,0x6d,0x6f,0x64,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x24,0x0,0x43,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x20,0x0,0x66,0x0,0x65, - 0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x72,0x0,0x20, - 0x0,0x25,0x0,0x31,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10, - 0x43,0x61,0x73,0x65,0x20,0x6d,0x61,0x64,0x65,0x20,0x62,0x79,0x20,0x25,0x31,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x61, - 0x73,0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x10,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74, - 0x65,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x58,0x0,0x4d,0x0,0x75,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0x61,0x0,0x20,0x0,0x6f,0x0,0x72,0x0,0x64,0x0,0x65,0x0,0x6d,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0xea, - 0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20, - 0x0,0x73,0x0,0x65,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73, - 0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x32,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x74, - 0x68,0x65,0x20,0x6f,0x72,0x64,0x65,0x72,0x20,0x6f,0x66,0x20,0x61,0x70,0x70,0x65, - 0x61,0x72,0x61,0x6e,0x63,0x65,0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x72,0x20, - 0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0x2a,0x0,0x4d, - 0x0,0x75,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x6f, - 0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x78, - 0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x68, - 0x0,0x61,0x0,0x74,0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x2e,0x0,0xa,0x0,0x56, - 0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x74,0x0,0x61,0x0,0x6d,0x0,0x62, - 0x0,0xe9,0x0,0x6d,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0x73,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x6e, - 0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x70, - 0x0,0x61,0x0,0x72,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x20, - 0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73, - 0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x63, - 0x0,0x72,0x0,0x69,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x20, - 0x0,0x6d,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0,0x20, - 0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x6f, - 0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x75,0x0,0x20,0x0,0x73,0x0,0x75, - 0x0,0x73,0x0,0x70,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x6f,0x0,0x20,0x0,0x70, - 0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x74,0x0,0x65, - 0x0,0x72,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x20, - 0x0,0x63,0x0,0x6f,0x0,0x72,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x91,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x74,0x68,0x65,0x20,0x74,0x65,0x78, - 0x74,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x73, - 0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2e,0xa,0x59, - 0x6f,0x75,0x20,0x63,0x61,0x6e,0x20,0x61,0x6c,0x73,0x6f,0x20,0x73,0x65,0x6c,0x65, - 0x63,0x74,0x20,0x61,0x20,0x70,0x61,0x72,0x74,0x20,0x6f,0x66,0x20,0x79,0x6f,0x75, - 0x72,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x79,0x20,0x74,0x79,0x70,0x65, - 0x64,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x61,0x6e,0x64,0x20,0x75,0x73, - 0x65,0x20,0x74,0x68,0x65,0x20,0x64,0x72,0x6f,0x70,0x64,0x6f,0x77,0x6e,0x20,0x74, - 0x6f,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x69,0x74,0x73,0x20,0x63,0x6f,0x6c, - 0x6f,0x72,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x2,0x4e,0x0,0x45,0x0,0x73,0x0,0x63,0x0,0x6f,0x0, - 0x6c,0x0,0x68,0x0,0x61,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x65,0x0, - 0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0, - 0x72,0x0,0x61,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x70,0x0,0x72,0x0,0x6f,0x0, - 0x64,0x0,0x75,0x0,0x7a,0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0x61,0x0, - 0x20,0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0xf3,0x0, - 0x78,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0, - 0x73,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x66,0x0,0x61,0x0, - 0x6c,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x2e,0x0,0xa,0x0,0x4f,0x0,0x73,0x0, - 0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x73,0x0, - 0x20,0x0,0x73,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66,0x0, - 0x69,0x0,0x6e,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x65,0x0, - 0x6d,0x0,0x20,0x0,0x74,0x0,0x68,0x0,0x65,0x0,0x6d,0x0,0x65,0x0,0x20,0x0, - 0x2f,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0, - 0x73,0x0,0x20,0x0,0x2f,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0, - 0x63,0x0,0x74,0x0,0x73,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x2e,0x0, - 0x20,0x0,0x53,0x0,0x65,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0, - 0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x20,0x0, - 0x70,0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66,0x0, - 0x69,0x0,0x6e,0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0, - 0x69,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0, - 0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0, - 0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x6f,0x0,0xa,0x0,0x63,0x0, - 0x61,0x0,0x74,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x72,0x0,0x69,0x0,0x61,0x0, - 0x20,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0, - 0x69,0x0,0x20,0x0,0x5b,0x0,0x4f,0x0,0x70,0x0,0xe7,0x0,0xf5,0x0,0x65,0x0, - 0x73,0x0,0x5d,0x0,0x2c,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0, - 0x63,0x0,0x74,0x0,0x73,0x0,0x20,0x0,0x3d,0x0,0x20,0x0,0x27,0x0,0x6d,0x0, - 0x69,0x0,0x73,0x0,0x63,0x0,0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x27,0x0, - 0x2c,0x0,0x20,0x0,0x6f,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0, - 0x65,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x72,0x0,0x65,0x0, - 0x20,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x2f,0x0, - 0x3c,0x0,0x6d,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x6e,0x0,0x61,0x0,0x6d,0x0, - 0x65,0x0,0x3e,0x0,0x2f,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x63,0x0, - 0x74,0x0,0x73,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x20,0x0,0x74,0x0, - 0x6f,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x64,0x0,0x20,0x0,0x74,0x0, - 0x68,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x63,0x0, - 0x74,0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x1,0x13,0x43, - 0x68,0x6f,0x6f,0x73,0x65,0x20,0x61,0x6e,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x20, - 0x74,0x6f,0x20,0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20, - 0x6e,0x65,0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73, - 0x61,0x67,0x65,0x2e,0xa,0x54,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73, - 0x20,0x61,0x72,0x65,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x69,0x6e,0x20, - 0x79,0x6f,0x75,0x72,0x20,0x74,0x68,0x65,0x6d,0x65,0x2f,0x65,0x66,0x66,0x65,0x63, - 0x74,0x73,0x2f,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2e,0x69,0x6e,0x69,0x2e,0x20, - 0x59,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x63, - 0x61,0x6e,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d, - 0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20,0x62,0x79,0xa,0x63,0x68,0x61,0x72, - 0x2e,0x69,0x6e,0x69,0x20,0x5b,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x5d,0x20,0x63, - 0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0x2c,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73, - 0x20,0x3d,0x20,0x27,0x6d,0x69,0x73,0x63,0x6e,0x61,0x6d,0x65,0x27,0x20,0x77,0x68, - 0x65,0x72,0x65,0x20,0x69,0x74,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x73,0x20,0x74, - 0x6f,0x20,0x6d,0x69,0x73,0x63,0x2f,0x3c,0x6d,0x69,0x73,0x63,0x6e,0x61,0x6d,0x65, - 0x3e,0x2f,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2e,0x69,0x6e,0x69,0x20,0x74,0x6f, - 0x20,0x72,0x65,0x61,0x64,0x20,0x74,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74, - 0x73,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x14,0x0,0x45,0x0,0x73,0x0,0x63,0x0,0x6f,0x0,0x6c, - 0x0,0x68,0x0,0x65,0x0,0x72,0x0,0x2e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x8,0x43,0x68,0x6f,0x6f,0x73,0x65,0x2e,0x2e,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xdc, - 0x0,0x46,0x0,0x65,0x0,0x63,0x0,0x68,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x20, - 0x0,0x73,0x0,0x6f,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x70,0x0,0x6f,0x0,0x73, - 0x0,0x69,0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72, - 0x0,0x61,0x0,0x20,0x0,0x76,0x0,0x69,0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x6c, - 0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x72,0x0,0x2f,0x0,0x65,0x0,0x64,0x0,0x69, - 0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64, - 0x0,0xea,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x73,0x0,0x2e,0x0,0xa, - 0x0,0x56,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72, - 0x0,0xe1,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x67,0x0,0x75,0x0,0x6e, - 0x0,0x74,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20, - 0x0,0x65,0x0,0x78,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x20, - 0x0,0x61,0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0xe7,0x0,0xf5, - 0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x6e,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x73, - 0x0,0x61,0x0,0x6c,0x0,0x76,0x0,0x61,0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x60,0x43,0x6c,0x6f,0x73,0x65,0x20,0x74,0x68,0x65,0x20, - 0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79, - 0x2f,0x65,0x64,0x69,0x74,0x69,0x6e,0x67,0x20,0x6f,0x76,0x65,0x72,0x6c,0x61,0x79, - 0x2e,0xa,0x59,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x70,0x72, - 0x6f,0x6d,0x70,0x74,0x65,0x64,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x72,0x65,0x27, - 0x73,0x20,0x61,0x6e,0x79,0x20,0x75,0x6e,0x73,0x61,0x76,0x65,0x64,0x20,0x63,0x68, - 0x61,0x6e,0x67,0x65,0x73,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x38,0x0,0x52,0x0,0x65,0x0,0x63, - 0x0,0x6f,0x0,0x6c,0x0,0x68,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x74,0x0,0x6f, - 0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x63, - 0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x72,0x0,0x69,0x0,0x61, - 0x0,0x73,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17,0x43,0x6f,0x6c,0x6c, - 0x61,0x70,0x73,0x65,0x20,0x41,0x6c,0x6c,0x20,0x43,0x61,0x74,0x65,0x67,0x6f,0x72, - 0x69,0x65,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x76,0x0,0x41,0x0,0x20,0x0,0x65,0x0,0x76,0x0, - 0x69,0x0,0x64,0x0,0xea,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0, - 0x61,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0xe9,0x0,0x20,0x0, - 0x67,0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x61,0x0,0x6c,0x0,0x2e,0x0,0x20,0x0, - 0x43,0x0,0x6c,0x0,0x69,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x70,0x0, - 0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x64,0x0,0x61,0x0, - 0x72,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x70,0x0, - 0x72,0x0,0x69,0x0,0x76,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x37,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x65, - 0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x69,0x73,0x20,0x67,0x6c,0x6f,0x62,0x61, - 0x6c,0x2e,0x20,0x43,0x6c,0x69,0x63,0x6b,0x20,0x74,0x6f,0x20,0x73,0x77,0x69,0x74, - 0x63,0x68,0x20,0x74,0x6f,0x20,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x2e,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x76,0x0,0x41,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0xea, - 0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x74,0x0,0x75, - 0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0xe9,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x69, - 0x0,0x76,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x2e,0x0,0x20,0x0,0x43,0x0,0x6c, - 0x0,0x69,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72, - 0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x20, - 0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x67,0x0,0x6c,0x0,0x6f, - 0x0,0x62,0x0,0x61,0x0,0x6c,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x37,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x65,0x76,0x69,0x64,0x65,0x6e, - 0x63,0x65,0x20,0x69,0x73,0x20,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x2e,0x20,0x43, - 0x6c,0x69,0x63,0x6b,0x20,0x74,0x6f,0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x20,0x74, - 0x6f,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x28,0x0,0x47,0x0, - 0x72,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0, - 0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0, - 0x64,0x0,0x6f,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x43, - 0x75,0x73,0x74,0x6f,0x6d,0x20,0x53,0x68,0x6f,0x75,0x74,0x21,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x30, - 0x0,0x41,0x0,0x62,0x0,0x61,0x0,0x69,0x0,0x78,0x0,0x65,0x0,0x20,0x0,0x61, - 0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x72,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x64, - 0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x61,0x0,0xfa,0x0,0x64,0x0,0x65,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x18,0x44,0x65,0x63,0x72,0x65,0x61, - 0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x68,0x65,0x61,0x6c,0x74,0x68,0x20,0x62,0x61, - 0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x1c,0x0,0x50,0x0,0x72,0x0,0x65,0x0,0x64,0x0,0x65, - 0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x6e,0x0,0x61,0x0,0x64, - 0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x44,0x65,0x66,0x61, - 0x75,0x6c,0x74,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x44,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x72,0x0,0x75,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0, - 0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0xea,0x0,0x6e,0x0,0x63,0x0, - 0x69,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1e,0x44,0x65,0x73, - 0x74,0x72,0x6f,0x79,0x20,0x74,0x68,0x69,0x73,0x20,0x70,0x69,0x65,0x63,0x65,0x20, - 0x6f,0x66,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x86,0x0, - 0x4d,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x72,0x0,0x20,0x0, - 0x6e,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x65,0x0, - 0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0, - 0x61,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0, - 0x61,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x75,0x0,0xe1,0x0,0x72,0x0, - 0x69,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x61,0x0,0x6e,0x0, - 0x64,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0, - 0x64,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x38,0x44, - 0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x69,0x7a,0x65, - 0x64,0x20,0x73,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73,0x20,0x66,0x6f,0x72,0x20, - 0x61,0x6c,0x6c,0x20,0x75,0x73,0x65,0x72,0x73,0x20,0x77,0x68,0x65,0x6e,0x20,0x63, - 0x68,0x65,0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x80,0x0,0x45,0x0,0x78,0x0, - 0x69,0x0,0x62,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x69,0x0, - 0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x70,0x0, - 0x61,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x20,0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x65,0x0, - 0x72,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0, - 0x76,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0, - 0x65,0x0,0x6a,0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x6c,0x0,0x65,0x0, - 0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x37,0x44,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65, - 0x20,0x6c,0x69,0x73,0x74,0x20,0x6f,0x66,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74, - 0x65,0x72,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x73,0x20,0x79,0x6f,0x75,0x20,0x77, - 0x69,0x73,0x68,0x20,0x74,0x6f,0x20,0x6d,0x75,0x74,0x65,0x2e,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x5c, - 0x0,0x45,0x0,0x78,0x0,0x69,0x0,0x62,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x20, - 0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x65, - 0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61, - 0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x72,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x70, - 0x0,0x6f,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x2c,0x44,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x74,0x68, - 0x65,0x20,0x6c,0x69,0x73,0x74,0x20,0x6f,0x66,0x20,0x63,0x68,0x61,0x72,0x61,0x63, - 0x74,0x65,0x72,0x73,0x20,0x74,0x6f,0x20,0x70,0x61,0x69,0x72,0x20,0x77,0x69,0x74, - 0x68,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0xe6,0x0,0x56,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20, - 0x0,0x6e,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x6f,0x0,0x75,0x0,0x76,0x0,0x65, - 0x0,0x20,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x6d,0x0,0x61,0x0,0x64,0x0,0x61, - 0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x64, - 0x0,0x65,0x0,0x72,0x0,0x61,0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x71, - 0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0x61, - 0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x69, - 0x0,0x6d,0x0,0x70,0x0,0x65,0x0,0x64,0x0,0x69,0x0,0x6e,0x0,0x64,0x0,0x6f, - 0x0,0x2d,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x74, - 0x0,0x6f,0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x6e, - 0x0,0x73,0x0,0x20,0x0,0x6f,0x0,0x75,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e, - 0x0,0x63,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x6e, - 0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x6a, - 0x0,0x61,0x0,0x6e,0x0,0x65,0x0,0x6c,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x71,0x44,0x6f,0x20,0x6e,0x6f,0x74,0x20,0x6c,0x69,0x73, - 0x74,0x65,0x6e,0x20,0x74,0x6f,0x20,0x6d,0x6f,0x64,0x20,0x63,0x61,0x6c,0x6c,0x73, - 0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x70, - 0x72,0x65,0x76,0x65,0x6e,0x74,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x6d,0x20,0x66, - 0x72,0x6f,0x6d,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x73,0x6f,0x75,0x6e, - 0x64,0x73,0x20,0x6f,0x72,0x20,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x67,0x20,0x61, - 0x74,0x74,0x65,0x6e,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20, - 0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x3e,0x0,0x56,0x0,0x6f,0x0, - 0x63,0x0,0xea,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x72,0x0,0x20,0x0, - 0x73,0x0,0x61,0x0,0x6c,0x0,0x76,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x73,0x0, - 0x75,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x64,0x0,0x61,0x0, - 0x6e,0x0,0xe7,0x0,0x61,0x0,0x73,0x0,0x3f,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x21,0x44,0x6f,0x20,0x79,0x6f,0x75,0x20,0x77,0x61,0x6e,0x74,0x20,0x74, - 0x6f,0x20,0x73,0x61,0x76,0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x6e, - 0x67,0x65,0x73,0x3f,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x3c,0x0,0x44,0x0,0x65,0x0,0x73,0x0,0x65, - 0x0,0x6a,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x65, - 0x0,0x72,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x61, - 0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0xe7,0x0,0xf5,0x0,0x65, - 0x0,0x73,0x0,0x3f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x21,0x44,0x6f, - 0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x73,0x68,0x20,0x74,0x6f,0x20,0x6b,0x65,0x65, - 0x70,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x3f,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x8,0x0,0x45,0x0,0x72,0x0,0x72,0x0,0x6f,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x5,0x45,0x72,0x72,0x6f,0x72,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x36,0x0,0x41, - 0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0xea,0x0,0x6e,0x0,0x63, - 0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x69,0x0,0x20,0x0,0x6d, - 0x0,0x6f,0x0,0x64,0x0,0x69,0x0,0x66,0x0,0x69,0x0,0x63,0x0,0x61,0x0,0x64, - 0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1b,0x45,0x76, - 0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x68,0x61,0x73,0x20,0x62,0x65,0x65,0x6e,0x20, - 0x6d,0x6f,0x64,0x69,0x66,0x69,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x38,0x0,0x45,0x0, - 0x78,0x0,0x70,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x69,0x0,0x72,0x0,0x20,0x0, - 0x74,0x0,0x6f,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x73,0x0, - 0x20,0x0,0x63,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x72,0x0, - 0x69,0x0,0x61,0x0,0x73,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x15,0x45, - 0x78,0x70,0x61,0x6e,0x64,0x20,0x41,0x6c,0x6c,0x20,0x43,0x61,0x74,0x65,0x67,0x6f, - 0x72,0x69,0x65,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x28,0x0,0x41,0x0,0x70,0x0,0x61,0x0,0x72, - 0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x6f, - 0x0,0x20,0x0,0x67,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x75,0x0,0x61,0x0,0x6c, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x46,0x61,0x64,0x65,0x20,0x49, - 0x6e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x26,0x0,0x44,0x0,0x65,0x0,0x73,0x0,0x76,0x0,0x61,0x0, - 0x6e,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x41,0x0,0x6e,0x0, - 0x74,0x0,0x65,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x72,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x11,0x46,0x61,0x64,0x65,0x20,0x4f,0x75,0x74,0x20,0x50,0x72, - 0x65,0x76,0x69,0x6f,0x75,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x4,0x46,0x6c,0x69,0x70,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x34,0x0,0x47,0x0,0x65, - 0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x65, - 0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6e, - 0x0,0x73,0x0,0x3a,0x0,0xa,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17,0x47,0x65,0x6e,0x65,0x72,0x61, - 0x74,0x69,0x6e,0x67,0x20,0x63,0x68,0x61,0x72,0x73,0x3a,0xa,0x25,0x31,0x2f,0x25, - 0x32,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0xc,0x0,0x47,0x0,0x75,0x0,0x61,0x0,0x72,0x0,0x64,0x0, - 0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x47,0x75,0x61,0x72,0x64, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x10,0x0,0x43,0x0,0x75,0x0,0x6c,0x0,0x70,0x0,0x61,0x0,0x64, - 0x0,0x6f,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x47,0x75, - 0x69,0x6c,0x74,0x79,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x55,0x0,0x6d,0x0,0x20,0x0, - 0x6d,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0,0x21,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x48,0x6f,0x6c,0x64,0x20,0x49,0x74, - 0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x1,0xe,0x0,0x53,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x72,0x0, - 0xe9,0x0,0x2d,0x0,0x69,0x0,0x6d,0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x73,0x0, - 0x73,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x69,0x0, - 0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0, - 0x61,0x0,0x64,0x0,0x61,0x0,0x2c,0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x69,0x0, - 0x62,0x0,0x61,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x78,0x0, - 0x74,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6e,0x0, - 0x74,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6d,0x0, - 0x65,0x0,0x64,0x0,0x69,0x0,0x61,0x0,0x74,0x0,0x61,0x0,0x6d,0x0,0x65,0x0, - 0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x71,0x0,0x75,0x0, - 0x61,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x61,0x0, - 0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0, - 0x65,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0, - 0x73,0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x72,0x0,0x65,0x0, - 0x70,0x0,0x72,0x0,0x6f,0x0,0x64,0x0,0x75,0x0,0x7a,0x0,0x69,0x0,0x64,0x0, - 0x61,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x6d,0x0,0x75,0x0,0x6c,0x0,0x74,0x0, - 0x61,0x0,0x6e,0x0,0x65,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0, - 0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5e,0x49,0x66,0x20, - 0x70,0x72,0x65,0x61,0x6e,0x69,0x6d,0x20,0x69,0x73,0x20,0x63,0x68,0x65,0x63,0x6b, - 0x65,0x64,0x2c,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20, - 0x69,0x6e,0x70,0x75,0x74,0x20,0x74,0x65,0x78,0x74,0x20,0x69,0x6d,0x6d,0x65,0x64, - 0x69,0x61,0x74,0x65,0x6c,0x79,0x20,0x61,0x73,0x20,0x74,0x68,0x65,0x20,0x61,0x6e, - 0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x70,0x6c,0x61,0x79,0x73,0x20,0x63,0x6f, - 0x6e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x79,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x20,0x0, - 0x49,0x0,0x6d,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x20,0x0, - 0x28,0x0,0x2a,0x0,0x20,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,0x0,0x29,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x49,0x6d,0x61,0x67,0x65,0x73,0x20, - 0x28,0x2a,0x2e,0x70,0x6e,0x67,0x29,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x9,0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x32,0x0,0x41,0x0,0x75,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65, - 0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x72,0x0,0x72,0x0,0x61, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x61,0x0,0xfa,0x0,0x64, - 0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x18,0x49,0x6e, - 0x63,0x72,0x65,0x61,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x68,0x65,0x61,0x6c,0x74, - 0x68,0x20,0x62,0x61,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2a,0x0,0x41,0x0,0x72,0x0,0x71, - 0x0,0x75,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x49,0x0,0x4e, - 0x0,0x49,0x0,0x20,0x0,0x28,0x0,0x2a,0x0,0x20,0x0,0x2e,0x0,0x69,0x0,0x6e, - 0x0,0x69,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x49,0x6e, - 0x69,0x20,0x46,0x69,0x6c,0x65,0x73,0x20,0x28,0x2a,0x2e,0x69,0x6e,0x69,0x29,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0xe4,0x0,0x50,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0, - 0x65,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x76,0x0,0x6f,0x0, - 0x63,0x0,0xea,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x62,0x0, - 0x61,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x61,0x0, - 0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0, - 0x6f,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0, - 0x20,0x0,0x61,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x61,0x0,0x64,0x0,0x6f,0x0, - 0x2e,0x0,0xa,0x0,0x28,0x0,0x56,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0, - 0x70,0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0, - 0x66,0x0,0x69,0x0,0x67,0x0,0x75,0x0,0x72,0x0,0x61,0x0,0x72,0x0,0x20,0x0, - 0x73,0x0,0x75,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0, - 0x66,0x0,0x65,0x0,0x72,0x0,0xea,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0, - 0x73,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x43,0x0,0x6f,0x0,0x6e,0x0, - 0x66,0x0,0x69,0x0,0x67,0x0,0x75,0x0,0x72,0x0,0x61,0x0,0xe7,0x0,0xf5,0x0, - 0x65,0x0,0x73,0x0,0x21,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x5a,0x4c,0x65,0x74,0x73,0x20,0x79,0x6f,0x75,0x20,0x72,0x65,0x63,0x65,0x69,0x76, - 0x65,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x77,0x68, - 0x65,0x6e,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x2e,0xa,0x28,0x59,0x6f,0x75, - 0x20,0x63,0x61,0x6e,0x20,0x73,0x65,0x74,0x20,0x79,0x6f,0x75,0x72,0x20,0x70,0x72, - 0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65, - 0x20,0x53,0x65,0x74,0x74,0x69,0x6e,0x67,0x73,0x21,0x29,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x4e,0x0, - 0x43,0x0,0x61,0x0,0x72,0x0,0x72,0x0,0x65,0x0,0x67,0x0,0x61,0x0,0x72,0x0, - 0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0xea,0x0,0x6e,0x0,0x63,0x0, - 0x69,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x75,0x0, - 0x6d,0x0,0x20,0x0,0x61,0x0,0x72,0x0,0x71,0x0,0x75,0x0,0x69,0x0,0x76,0x0, - 0x6f,0x0,0x20,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x20,0x4c,0x6f,0x61,0x64,0x20,0x65,0x76,0x69,0x64, - 0x65,0x6e,0x63,0x65,0x20,0x66,0x72,0x6f,0x6d,0x20,0x61,0x6e,0x20,0x2e,0x69,0x6e, - 0x69,0x20,0x66,0x69,0x6c,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x6,0x4d,0x61,0x73,0x74,0x65,0x72,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x10,0x0, - 0x4d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4d,0x65,0x73,0x73,0x61,0x67,0x65, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x66,0x0,0x52,0x0,0x65,0x0,0x66,0x0,0x6c,0x0,0x69,0x0,0x74, - 0x0,0x61,0x0,0x20,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x67,0x0,0x65,0x0,0x73, - 0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x73, - 0x0,0x65,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f, - 0x0,0x6e,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x71,0x0,0x75, - 0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72, - 0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x2c,0x4d,0x69,0x72,0x72,0x6f,0x72,0x20,0x79,0x6f,0x75,0x72,0x20, - 0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73,0x20,0x65,0x6d,0x6f,0x74, - 0x65,0x73,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x4d,0x75, - 0x73,0x69,0x63,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x8,0x0,0x4e,0x0,0x6f,0x0,0x6d,0x0,0x65,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x4e,0x61,0x6d,0x65,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x42,0x0,0x4e,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0,0x3a,0x0,0x20,0x0,0x25,0x0, - 0x31,0x0,0xa,0x0,0x49,0x0,0x6d,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0, - 0x3a,0x0,0x20,0x0,0x25,0x0,0x32,0x0,0xa,0x0,0x44,0x0,0x65,0x0,0x73,0x0, - 0x63,0x0,0x72,0x0,0x69,0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0,0x3a,0x0,0xa,0x0, - 0x25,0x0,0x33,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x22,0x4e,0x61,0x6d, - 0x65,0x3a,0x20,0x25,0x31,0xa,0x49,0x6d,0x61,0x67,0x65,0x3a,0x20,0x25,0x32,0xa, - 0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x3a,0xa,0x25,0x33,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x4e,0x0,0x4e,0x0,0x61,0x0,0x76,0x0,0x65,0x0,0x67,0x0,0x75,0x0, - 0x65,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x25,0x0, - 0x31,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x6f,0x0, - 0x20,0x0,0x64,0x0,0x6f,0x0,0x63,0x0,0x75,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0, - 0x74,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x43,0x0,0x4d,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1e,0x4e,0x61,0x76,0x69,0x67, - 0x61,0x74,0x65,0x20,0x74,0x6f,0x20,0x25,0x31,0x20,0x66,0x6f,0x72,0x20,0x74,0x68, - 0x65,0x20,0x43,0x4d,0x20,0x64,0x6f,0x63,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x8,0x0,0x4e,0x0, - 0x61,0x0,0x64,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x4e, - 0x6f,0x6e,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x50,0x0,0x72,0x0,0x6f,0x0,0x74,0x0, - 0x65,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0xa,0x4f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x21,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x28,0x0,0x4f,0x0,0x70,0x0,0x61,0x0,0x2c,0x0,0x20,0x0,0x76,0x0,0x6f,0x0, - 0x63,0x0,0xea,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x20,0x0, - 0x6d,0x0,0x75,0x0,0x64,0x0,0x6f,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x13,0x4f,0x6f,0x70,0x73,0x2c,0x20,0x79,0x6f,0x75,0x27,0x72,0x65,0x20, - 0x6d,0x75,0x74,0x65,0x64,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x41,0x0,0x62,0x0,0x72, - 0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x76,0x0,0x65,0x0,0x6e, - 0x0,0x74,0x0,0xe1,0x0,0x72,0x0,0x69,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xe,0x4f,0x70,0x65,0x6e,0x20,0x49,0x6e,0x76,0x65,0x6e,0x74,0x6f, - 0x72,0x79,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0xa,0x0,0x53,0x0,0x65,0x0,0x6e,0x0,0x68,0x0,0x61, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x50,0x61,0x73,0x73,0x77,0x6f, - 0x72,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa, - 0x50,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x54, - 0x0,0x6f,0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x6d,0x0,0xfa,0x0,0x73, - 0x0,0x69,0x0,0x63,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x61, - 0x0,0x74,0x0,0xf3,0x0,0x72,0x0,0x69,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x10,0x50,0x6c,0x61,0x79,0x20,0x52,0x61,0x6e,0x64,0x6f,0x6d,0x20, - 0x53,0x6f,0x6e,0x67,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa6,0x0,0x52,0x0,0x65,0x0,0x70,0x0,0x72, - 0x0,0x6f,0x0,0x64,0x0,0x75,0x0,0x7a,0x0,0x61,0x0,0x20,0x0,0x75,0x0,0x6d, - 0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0xe7, - 0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x74,0x0,0x69, - 0x0,0x72,0x0,0x6f,0x0,0x20,0x0,0xfa,0x0,0x6e,0x0,0x69,0x0,0x63,0x0,0x6f, - 0x0,0x2c,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x66,0x0,0x6f,0x0,0x72, - 0x0,0x6d,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e, - 0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x6c,0x0,0x6f, - 0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x74,0x0,0x65,0x0,0x2c,0x0,0x20, - 0x0,0x71,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6d, - 0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x42,0x50,0x6c,0x61,0x79,0x20,0x61,0x20,0x73, - 0x69,0x6e,0x67,0x6c,0x65,0x2d,0x73,0x68,0x6f,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x61,0x73,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20, - 0x62,0x79,0x20,0x74,0x68,0x65,0x20,0x65,0x6d,0x6f,0x74,0x65,0x20,0x77,0x68,0x65, - 0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc8,0x0,0x54, - 0x0,0x6f,0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x69, - 0x0,0x6d,0x0,0x61,0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x20,0x0,0x70, - 0x0,0x65,0x0,0x72,0x0,0x66,0x0,0x6f,0x0,0x72,0x0,0x6d,0x0,0x61,0x0,0x6e, - 0x0,0x63,0x0,0x65,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x6a,0x0,0x61, - 0x0,0x6e,0x0,0x65,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x68,0x0,0x6f,0x0,0x20, - 0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x67,0x0,0x75,0x0,0x69, - 0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73, - 0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x66,0x0,0x61,0x0,0x6c, - 0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x61,0x0,0x6e, - 0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61, - 0x0,0x64,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5d, - 0x50,0x6c,0x61,0x79,0x20,0x72,0x65,0x61,0x6c,0x69,0x7a,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x61,0x6e,0x64,0x20,0x61,0x6e,0x69,0x6d,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x76,0x69,0x65,0x77, - 0x70,0x6f,0x72,0x74,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x6e,0x65,0x78,0x74, - 0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20, - 0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff, - 0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x50,0x72,0x65,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff, - 0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x50,0x72,0x65,0x61, - 0x6e,0x69,0x6d,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x7e,0x0,0x41,0x0,0x70,0x0,0x72,0x0,0x65,0x0, - 0x73,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x73,0x0, - 0x73,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0xea,0x0, - 0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x74,0x0, - 0x6f,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0, - 0x73,0x0,0x75,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0xf3,0x0,0x78,0x0, - 0x69,0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0, - 0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x66,0x0,0x61,0x0,0x6c,0x0, - 0x61,0x0,0x64,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x46,0x50, - 0x72,0x65,0x73,0x65,0x6e,0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x70,0x69,0x65,0x63, - 0x65,0x20,0x6f,0x66,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f, - 0x20,0x65,0x76,0x65,0x72,0x79,0x6f,0x6e,0x65,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75, - 0x72,0x20,0x6e,0x65,0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65, - 0x73,0x73,0x61,0x67,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x52,0x0,0x61,0x0,0x7a,0x0, - 0xe3,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x52, - 0x65,0x61,0x73,0x6f,0x6e,0x3a,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x9e,0x0,0x41,0x0,0x74,0x0,0x75, - 0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20, - 0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x20,0x0,0x74, - 0x0,0x6f,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x6f,0x0,0x73,0x0,0x20, - 0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x6f, - 0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x74, - 0x0,0x65,0x0,0x72,0x0,0x66,0x0,0x61,0x0,0x63,0x0,0x65,0x0,0x20,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x75,0x0,0xe1,0x0,0x72,0x0,0x69, - 0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x63, - 0x0,0x6f,0x0,0x72,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x70,0x0,0x6f,0x0,0x6e, - 0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x3d,0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x20,0x74,0x68,0x65,0x20,0x74,0x68, - 0x65,0x6d,0x65,0x20,0x61,0x6e,0x64,0x20,0x75,0x70,0x64,0x61,0x74,0x65,0x20,0x61, - 0x6c,0x6c,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x75,0x69,0x20,0x65,0x6c,0x65, - 0x6d,0x65,0x6e,0x74,0x73,0x20,0x74,0x6f,0x20,0x6d,0x61,0x74,0x63,0x68,0x2e,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff, - 0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x52,0x65,0x6c, - 0x6f,0x61,0x64,0x20,0x74,0x68,0x65,0x6d,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xb4,0x0,0x52,0x0, - 0x65,0x0,0x6d,0x0,0x6f,0x0,0x76,0x0,0x61,0x0,0x20,0x0,0x6f,0x0,0x20,0x0, - 0x69,0x0,0x6e,0x0,0x69,0x0,0x73,0x0,0x77,0x0,0x61,0x0,0x70,0x0,0x20,0x0, - 0x61,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0, - 0x74,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x63,0x0, - 0x69,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x64,0x0, - 0x61,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0, - 0x65,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0, - 0x65,0x0,0x20,0x0,0xe0,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x73,0x0,0x74,0x0, - 0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72,0x0, - 0x61,0x0,0x63,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x20,0x0, - 0x6f,0x0,0x72,0x0,0x69,0x0,0x67,0x0,0x69,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x60,0x52,0x65,0x6d,0x6f,0x76, - 0x65,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x79,0x20, - 0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x20,0x69,0x6e,0x69,0x73,0x77,0x61,0x70, - 0x20,0x66,0x72,0x6f,0x6d,0x20,0x74,0x68,0x65,0x20,0x6c,0x69,0x73,0x74,0x20,0x61, - 0x6e,0x64,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x6f,0x20,0x74,0x68,0x65, - 0x20,0x6f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x20,0x63,0x68,0x61,0x72,0x61,0x63, - 0x74,0x65,0x72,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x64,0x0, - 0x53,0x0,0x6f,0x0,0x6c,0x0,0x69,0x0,0x63,0x0,0x69,0x0,0x74,0x0,0x65,0x0, - 0x20,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0xe7,0x0, - 0xe3,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0x6f,0x0, - 0x64,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x20,0x0, - 0x64,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0, - 0x64,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x74,0x0,0x75,0x0,0x61,0x0, - 0x6c,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x38,0x52,0x65,0x71, - 0x75,0x65,0x73,0x74,0x20,0x74,0x68,0x65,0x20,0x61,0x74,0x74,0x65,0x6e,0x74,0x69, - 0x6f,0x6e,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e, - 0x74,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x27,0x73,0x20,0x6d,0x6f,0x64,0x65,0x72, - 0x61,0x74,0x6f,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x3c,0x0,0x52,0x0,0x65,0x0,0x74,0x0, - 0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0xe0,0x0,0x20,0x0,0x6c,0x0, - 0x69,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0, - 0x65,0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1f,0x52, - 0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61,0x63,0x6b,0x20,0x74,0x6f,0x20,0x74,0x68, - 0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x6c,0x69,0x73,0x74,0x2e,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x22,0x0,0x53,0x0,0x61,0x0,0x6c,0x0,0x76,0x0,0x61,0x0,0x72,0x0,0x20, - 0x0,0x69,0x0,0x6e,0x0,0x76,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0xe1,0x0,0x72, - 0x0,0x69,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x53,0x61, - 0x76,0x65,0x20,0x49,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x8c, - 0x0,0x53,0x0,0x61,0x0,0x6c,0x0,0x76,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x73, - 0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0xe7, - 0x0,0xf5,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x66,0x0,0x65,0x0,0x69,0x0,0x74, - 0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x6e,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61, - 0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0xea,0x0,0x6e,0x0,0x63, - 0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x76, - 0x0,0x69,0x0,0x65,0x0,0x2d,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x61, - 0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72, - 0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x48,0x53,0x61,0x76,0x65,0x20,0x61,0x6e,0x79,0x20,0x63, - 0x68,0x61,0x6e,0x67,0x65,0x73,0x20,0x6d,0x61,0x64,0x65,0x20,0x74,0x6f,0x20,0x74, - 0x68,0x69,0x73,0x20,0x70,0x69,0x65,0x63,0x65,0x20,0x6f,0x66,0x20,0x65,0x76,0x69, - 0x64,0x65,0x6e,0x63,0x65,0x20,0x61,0x6e,0x64,0x20,0x73,0x65,0x6e,0x64,0x20,0x74, - 0x68,0x65,0x6d,0x20,0x74,0x6f,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x48,0x0,0x53,0x0,0x61,0x0,0x6c,0x0,0x76,0x0,0x65,0x0,0x20,0x0,0x65, - 0x0,0x76,0x0,0x69,0x0,0x64,0x0,0xea,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61, - 0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20, - 0x0,0x61,0x0,0x72,0x0,0x71,0x0,0x75,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x20, - 0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x1e,0x53,0x61,0x76,0x65,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63, - 0x65,0x20,0x74,0x6f,0x20,0x61,0x6e,0x20,0x2e,0x69,0x6e,0x69,0x20,0x66,0x69,0x6c, - 0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x50,0x0,0x65,0x0,0x73,0x0,0x71,0x0,0x75, - 0x0,0x69,0x0,0x73,0x0,0x61,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x6,0x53,0x65,0x61,0x72,0x63,0x68,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x62,0x0,0x53,0x0,0x65, - 0x0,0x6c,0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x20, - 0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f, - 0x0,0x6e,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x63,0x0,0x6f, - 0x0,0x6d,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x61,0x0,0x6c, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x6a,0x0,0x61,0x0,0x20, - 0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x72,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x29,0x53,0x65,0x6c,0x65,0x63,0x74,0x20,0x61, - 0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x79,0x6f,0x75,0x20,0x77, - 0x69,0x73,0x68,0x20,0x74,0x6f,0x20,0x70,0x61,0x69,0x72,0x20,0x77,0x69,0x74,0x68, - 0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x53, - 0x65,0x72,0x76,0x65,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0xf0,0x0,0x43,0x0,0x6f,0x0,0x6e,0x0, - 0x66,0x0,0x69,0x0,0x67,0x0,0x75,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x75,0x0, - 0x6d,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0, - 0x20,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x6f,0x0,0x72,0x0,0x6f,0x0,0x20,0x0, - 0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x63,0x0, - 0x61,0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0, - 0x75,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0xf3,0x0,0x78,0x0,0x69,0x0,0x6d,0x0, - 0x6f,0x0,0x20,0x0,0x27,0x0,0x50,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x6e,0x0, - 0x69,0x0,0x6d,0x0,0x27,0x0,0x2e,0x0,0x20,0x0,0x44,0x0,0x65,0x0,0x69,0x0, - 0x78,0x0,0xe1,0x0,0x2d,0x0,0x6c,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0, - 0x20,0x0,0x70,0x0,0x61,0x0,0x64,0x0,0x72,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0, - 0x75,0x0,0x73,0x0,0x61,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x6f,0x0,0x20,0x0, - 0x73,0x0,0x6f,0x0,0x6d,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0, - 0x6e,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x6c,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x6f,0x0,0x74,0x0,0x69,0x0, - 0x63,0x0,0x6f,0x0,0x6e,0x0,0x73,0x0,0x20,0x0,0x28,0x0,0x63,0x0,0x61,0x0, - 0x73,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x69,0x0,0x73,0x0,0x74,0x0, - 0x61,0x0,0x6d,0x0,0x29,0x0,0x2e,0x0,0xa,0x0,0x45,0x0,0x64,0x0,0x69,0x0, - 0x74,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x67,0x0,0x69,0x0,0x74,0x0, - 0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x20,0x0,0x70,0x0, - 0x72,0x0,0x65,0x0,0x73,0x0,0x73,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0, - 0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x45,0x0,0x6e,0x0,0x74,0x0,0x65,0x0, - 0x72,0x0,0x2c,0x0,0x20,0x0,0x5b,0x0,0x58,0x0,0x5d,0x0,0x20,0x0,0x70,0x0, - 0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x63,0x0,0x6c,0x0, - 0x75,0x0,0x69,0x0,0x72,0x0,0x2e,0x0,0x20,0x0,0x49,0x0,0x73,0x0,0x73,0x0, - 0x6f,0x0,0x20,0x0,0xe9,0x0,0x20,0x0,0x73,0x0,0x61,0x0,0x6c,0x0,0x76,0x0, - 0x6f,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x73,0x0, - 0x65,0x0,0x2f,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x63,0x0, - 0x74,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x2f,0x0,0x3c,0x0,0x63,0x0,0x68,0x0, - 0x61,0x0,0x72,0x0,0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x3e,0x0,0x2f,0x0, - 0x73,0x0,0x6f,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x6c,0x0,0x69,0x0,0x73,0x0, - 0x74,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0xe1,0x53,0x65,0x74,0x20,0x61,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65, - 0x66,0x66,0x65,0x63,0x74,0x20,0x74,0x6f,0x20,0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e, - 0x20,0x79,0x6f,0x75,0x72,0x20,0x6e,0x65,0x78,0x74,0x20,0x27,0x50,0x72,0x65,0x61, - 0x6e,0x69,0x6d,0x27,0x2e,0x20,0x4c,0x65,0x61,0x76,0x69,0x6e,0x67,0x20,0x69,0x74, - 0x20,0x6f,0x6e,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x77,0x69,0x6c,0x6c, - 0x20,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x65,0x6d,0x6f,0x74,0x65,0x2d,0x64, - 0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x28,0x69,0x66, - 0x20,0x61,0x6e,0x79,0x29,0x2e,0xa,0x45,0x64,0x69,0x74,0x20,0x62,0x79,0x20,0x74, - 0x79,0x70,0x69,0x6e,0x67,0x20,0x61,0x6e,0x64,0x20,0x70,0x72,0x65,0x73,0x73,0x69, - 0x6e,0x67,0x20,0x45,0x6e,0x74,0x65,0x72,0x2c,0x20,0x5b,0x58,0x5d,0x20,0x74,0x6f, - 0x20,0x72,0x65,0x6d,0x6f,0x76,0x65,0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x73,0x61, - 0x76,0x65,0x73,0x20,0x74,0x6f,0x20,0x79,0x6f,0x75,0x72,0x20,0x62,0x61,0x73,0x65, - 0x2f,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x2f,0x3c,0x63,0x68,0x61, - 0x72,0x6e,0x61,0x6d,0x65,0x3e,0x2f,0x73,0x6f,0x75,0x6e,0x64,0x6c,0x69,0x73,0x74, - 0x2e,0x69,0x6e,0x69,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x7e,0x0,0x44,0x0,0x65,0x0,0x66,0x0,0x69, - 0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x6f, - 0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65, - 0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e, - 0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72, - 0x0,0x61,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x6e, - 0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0xf3,0x0,0x78,0x0,0x69,0x0,0x6d, - 0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x67, - 0x0,0x65,0x0,0x6d,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x38, - 0x53,0x65,0x74,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74, - 0x65,0x72,0x27,0x73,0x20,0x65,0x6d,0x6f,0x74,0x65,0x20,0x74,0x6f,0x20,0x70,0x6c, - 0x61,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x6e,0x65,0x78,0x74,0x20, - 0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x74,0x0,0x44,0x0,0x65, - 0x0,0x66,0x0,0x69,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x70, - 0x0,0x6c,0x0,0x61,0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0x66,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x75, - 0x0,0x70,0x0,0x6c,0x0,0x65,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61, - 0x0,0x72,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x6f, - 0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72, - 0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2e,0x53,0x65,0x74,0x20,0x79,0x6f, - 0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73,0x20,0x73, - 0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x72,0x79,0x20,0x62,0x61,0x63, - 0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x65,0x74,0x74,0x69,0x6e,0x67,0x73,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff, - 0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x53,0x66,0x78,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x6e,0x0,0x41,0x0,0x67,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x20,0x0, - 0x61,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x6e,0x0, - 0x61,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0xf3,0x0,0x78,0x0,0x69,0x0,0x6d,0x0, - 0x61,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x67,0x0, - 0x65,0x0,0x6d,0x0,0x20,0x0,0x66,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x64,0x0, - 0x61,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0, - 0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x61,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x35,0x53,0x68,0x61,0x6b,0x65, - 0x20,0x74,0x68,0x65,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x20,0x6f,0x6e,0x20,0x6e, - 0x65,0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61, - 0x67,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x68, - 0x6f,0x77,0x6e,0x61,0x6d,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x9,0x53,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x14,0x0,0x45,0x0,0x73,0x0,0x70,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x61,0x0, - 0x64,0x0,0x6f,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x53, - 0x70,0x65,0x63,0x74,0x61,0x74,0x6f,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xaa,0x0,0x53,0x0,0x61, - 0x0,0x6c,0x0,0x76,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x20, - 0x0,0x73,0x0,0x75,0x0,0x63,0x0,0x65,0x0,0x73,0x0,0x73,0x0,0x6f,0x0,0x2c, - 0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x70,0x0,0x6f, - 0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x64,0x0,0x69,0x0,0x74,0x0,0x61, - 0x0,0x72,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x63,0x0,0x75, - 0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x20, - 0x0,0x6f,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x6b,0x0,0x20,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x63,0x0,0x75,0x0,0x6d,0x0,0x65, - 0x0,0x6e,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x61, - 0x0,0x72,0x0,0x71,0x0,0x75,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x20,0x0,0x69, - 0x0,0x6e,0x0,0x69,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x36, - 0x53,0x75,0x63,0x63,0x65,0x73,0x66,0x75,0x6c,0x6c,0x79,0x20,0x73,0x61,0x76,0x65, - 0x64,0x2c,0x20,0x65,0x64,0x69,0x74,0x20,0x64,0x6f,0x63,0x20,0x61,0x6e,0x64,0x20, - 0x63,0x6d,0x64,0x6f,0x63,0x20,0x6c,0x69,0x6e,0x6b,0x20,0x6f,0x6e,0x20,0x74,0x68, - 0x65,0x20,0x69,0x6e,0x69,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x4e,0x0,0x41,0x0,0x6c,0x0,0x74, - 0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x74, - 0x0,0x72,0x0,0x65,0x0,0x20,0x0,0xe1,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x73, - 0x0,0x20,0x0,0x65,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x61, - 0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0xfa,0x0,0x73, - 0x0,0x69,0x0,0x63,0x0,0x61,0x0,0x73,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x24,0x53,0x77,0x69,0x74,0x63,0x68,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e, - 0x20,0x41,0x72,0x65,0x61,0x73,0x20,0x61,0x6e,0x64,0x20,0x4d,0x75,0x73,0x69,0x63, - 0x20,0x6c,0x69,0x73,0x74,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x54,0x0,0x4d,0x0,0x75,0x0,0x64, - 0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64, - 0x0,0xea,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x61, - 0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x76, - 0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0xe1,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x20, - 0x0,0x67,0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x61,0x0,0x6c,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x24,0x53,0x77,0x69,0x74,0x63,0x68,0x20,0x65, - 0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x67,0x6c,0x6f,0x62,0x61, - 0x6c,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79,0x2e,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x52, - 0x0,0x45,0x0,0x6e,0x0,0x76,0x0,0x69,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x65, - 0x0,0x76,0x0,0x69,0x0,0x64,0x0,0xea,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61, - 0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6e, - 0x0,0x76,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0xe1,0x0,0x72,0x0,0x69,0x0,0x6f, - 0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x69,0x0,0x76,0x0,0x61,0x0,0x64,0x0,0x6f, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x25,0x53,0x77,0x69,0x74, - 0x63,0x68,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x70, - 0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79, - 0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x16,0x0,0x53,0x0,0x69,0x0,0x6e,0x0,0x63,0x0,0x72,0x0, - 0x6f,0x0,0x6e,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x72,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xb,0x53,0x79,0x6e,0x63,0x68,0x72,0x6f,0x6e,0x69,0x7a,0x65, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x14,0x0,0x54,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0,0x20,0x0,0x69, - 0x0,0x73,0x0,0x73,0x0,0x6f,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xa,0x54,0x61,0x6b,0x65,0x20,0x54,0x68,0x61,0x74,0x21,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc, - 0x0,0x45,0x0,0x6d,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x6f,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x5,0x54,0x61,0x6b,0x65,0x6e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x32,0x0, - 0x41,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x67,0x0, - 0x65,0x0,0x6d,0x0,0x20,0x0,0xe9,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x69,0x0, - 0x74,0x0,0x6f,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x6e,0x0,0x67,0x0,0x61,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x18,0x54,0x68,0x65,0x20,0x6d, - 0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x69,0x73,0x20,0x74,0x6f,0x6f,0x20,0x6c,0x6f, - 0x6e,0x67,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x52,0x0,0x41,0x0,0x20,0x0,0x65,0x0,0x76,0x0, - 0x69,0x0,0x64,0x0,0xea,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0, - 0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x63,0x0,0xea,0x0, - 0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x20,0x0,0x65,0x0,0x64,0x0, - 0x69,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0, - 0x75,0x0,0x64,0x0,0x6f,0x0,0x75,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x36,0x54,0x68,0x65,0x20,0x70,0x69,0x65,0x63,0x65,0x20,0x6f,0x66,0x20, - 0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x79,0x6f,0x75,0x27,0x76,0x65,0x20, - 0x62,0x65,0x65,0x6e,0x20,0x65,0x64,0x69,0x74,0x69,0x6e,0x67,0x20,0x68,0x61,0x73, - 0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x98,0x0,0x49,0x0, - 0x73,0x0,0x73,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x69,0x0,0x62,0x0, - 0x69,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x6e,0x0, - 0x69,0x0,0x6d,0x0,0x61,0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0, - 0x61,0x0,0x20,0x0,0x6a,0x0,0x61,0x0,0x6e,0x0,0x65,0x0,0x6c,0x0,0x61,0x0, - 0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x76,0x0,0x69,0x0,0x73,0x0,0x75,0x0, - 0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0, - 0x20,0x0,0x61,0x0,0x73,0x0,0x73,0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x71,0x0, - 0x75,0x0,0x65,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x70,0x0, - 0x72,0x0,0x65,0x0,0x73,0x0,0x73,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0, - 0x64,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x49,0x54, - 0x68,0x69,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79, - 0x20,0x74,0x68,0x65,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69, - 0x6e,0x20,0x74,0x68,0x65,0x20,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x20,0x61, - 0x73,0x20,0x73,0x6f,0x6f,0x6e,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x69,0x73,0x20, - 0x70,0x72,0x65,0x73,0x73,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0xec,0x0,0x49,0x0,0x73, - 0x0,0x73,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x69,0x0,0x62,0x0,0x69, - 0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x69, - 0x0,0x6d,0x0,0x61,0x0,0xe7,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x65, - 0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73, - 0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x64, - 0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e, - 0x0,0x69,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x76, - 0x0,0x69,0x0,0x65,0x0,0x77,0x0,0x70,0x0,0x6f,0x0,0x72,0x0,0x74,0x0,0x20, - 0x0,0x61,0x0,0x73,0x0,0x73,0x0,0x69,0x0,0x6d,0x0,0x20,0x0,0x71,0x0,0x75, - 0x0,0x65,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x70,0x0,0x72, - 0x0,0x65,0x0,0x73,0x0,0x73,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x64, - 0x0,0x61,0x0,0x2e,0x0,0xa,0x0,0x50,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20, - 0x0,0x63,0x0,0x72,0x0,0x69,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x75,0x0,0x6d, - 0x0,0x61,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x73, - 0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65, - 0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e, - 0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x76, - 0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72, - 0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x73, - 0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61, - 0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20, - 0x0,0x5b,0x0,0x77,0x0,0x65,0x0,0x62,0x0,0x70,0x0,0x2f,0x0,0x61,0x0,0x70, - 0x0,0x6e,0x0,0x67,0x0,0x2f,0x0,0x67,0x0,0x69,0x0,0x66,0x0,0x2f,0x0,0x70, - 0x0,0x6e,0x0,0x67,0x0,0x5d,0x0,0x2e,0x0,0x20,0x0,0x45,0x0,0x20,0x0,0x65, - 0x0,0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x73, - 0x0,0x6f,0x0,0x6e,0x0,0x6f,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x70, - 0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x69, - 0x0,0x7a,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x5b,0x0,0x77, - 0x0,0x61,0x0,0x76,0x0,0x2f,0x0,0x6f,0x0,0x67,0x0,0x67,0x0,0x2f,0x0,0x6f, - 0x0,0x70,0x0,0x75,0x0,0x73,0x0,0x5d,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xd6,0x54,0x68,0x69,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x64,0x69,0x73,0x70, - 0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x63, - 0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x2d,0x64,0x65,0x66,0x69,0x6e,0x65,0x64, - 0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x74,0x68, - 0x65,0x20,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x20,0x61,0x73,0x20,0x73,0x6f, - 0x6f,0x6e,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x70,0x72,0x65,0x73, - 0x73,0x65,0x64,0x2e,0xa,0x54,0x6f,0x20,0x6d,0x61,0x6b,0x65,0x20,0x6f,0x6e,0x65, - 0x2c,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72, - 0x27,0x73,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x20,0x6d,0x75,0x73,0x74,0x20,0x63, - 0x6f,0x6e,0x74,0x61,0x69,0x6e,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x5b,0x77, - 0x65,0x62,0x70,0x2f,0x61,0x70,0x6e,0x67,0x2f,0x67,0x69,0x66,0x2f,0x70,0x6e,0x67, - 0x5d,0x20,0x61,0x6e,0x64,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x2e,0x5b,0x77,0x61, - 0x76,0x2f,0x6f,0x67,0x67,0x2f,0x6f,0x70,0x75,0x73,0x5d,0x20,0x73,0x6f,0x75,0x6e, - 0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x10,0x0,0x41,0x0,0x6f, - 0x0,0x20,0x0,0x66,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x6f,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x9,0x54,0x6f,0x20,0x62,0x65,0x68,0x69,0x6e,0x64,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x16,0x0,0x50,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x66,0x0, - 0x72,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x8,0x54,0x6f,0x20,0x66,0x72,0x6f,0x6e,0x74,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x62,0x0, - 0x41,0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x20,0x0, - 0x65,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20,0x0, - 0x62,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x2d,0x0,0x70,0x0,0x61,0x0,0x70,0x0, - 0x6f,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0, - 0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x20,0x0, - 0x6f,0x0,0x20,0x0,0x67,0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x61,0x0,0x6c,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2f,0x54,0x6f,0x67,0x67,0x6c, - 0x65,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e,0x20,0x73,0x65,0x72,0x76,0x65,0x72, - 0x20,0x63,0x68,0x61,0x74,0x20,0x61,0x6e,0x64,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c, - 0x20,0x41,0x4f,0x32,0x20,0x63,0x68,0x61,0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xba,0x0,0x4d, - 0x0,0x75,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x72, - 0x0,0x67,0x0,0x75,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0,0x73, - 0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61, - 0x0,0x72,0x0,0x72,0x0,0x65,0x0,0x67,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x75, - 0x0,0x6d,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x21,0x0,0x20, - 0x0,0x56,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x73,0x0,0xf3,0x0,0x20, - 0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x73,0x0,0x61,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x6e,0x0,0x6f, - 0x0,0x6d,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x72, - 0x0,0x71,0x0,0x75,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x73, - 0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x74,0x0,0x65,0x0,0x6e, - 0x0,0x73,0x0,0xe3,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x51,0x54,0x6f,0x6f,0x20,0x6d,0x61,0x6e,0x79,0x20,0x61,0x72,0x67,0x75,0x6d, - 0x65,0x6e,0x74,0x73,0x20,0x74,0x6f,0x20,0x6c,0x6f,0x61,0x64,0x20,0x61,0x20,0x63, - 0x61,0x73,0x65,0x21,0x20,0x59,0x6f,0x75,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x6e,0x65, - 0x65,0x64,0x20,0x6f,0x6e,0x65,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x2c, - 0x20,0x77,0x69,0x74,0x68,0x6f,0x75,0x74,0x20,0x65,0x78,0x74,0x65,0x6e,0x73,0x69, - 0x6f,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0xe2,0x0,0x4d,0x0,0x75,0x0,0x69,0x0,0x74,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x72,0x0,0x67,0x0,0x75,0x0,0x6d,0x0, - 0x65,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x61,0x0, - 0x72,0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x61,0x0,0x6c,0x0,0x76,0x0,0x61,0x0, - 0x72,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0, - 0x6f,0x0,0x21,0x0,0x20,0x0,0x56,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0, - 0x73,0x0,0xf3,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x69,0x0, - 0x73,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x6d,0x0, - 0x20,0x0,0x6e,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x20,0x0,0x61,0x0,0x72,0x0,0x71,0x0,0x75,0x0,0x69,0x0,0x76,0x0,0x6f,0x0, - 0x20,0x0,0x73,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x74,0x0, - 0x65,0x0,0x6e,0x0,0x73,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x20,0x0, - 0x6f,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x64,0x0,0x6f,0x0, - 0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x72,0x0,0x69,0x0,0x62,0x0, - 0x75,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x67,0x54,0x6f,0x6f,0x20,0x6d,0x61,0x6e,0x79,0x20,0x61,0x72,0x67,0x75, - 0x6d,0x65,0x6e,0x74,0x73,0x20,0x74,0x6f,0x20,0x73,0x61,0x76,0x65,0x20,0x61,0x20, - 0x63,0x61,0x73,0x65,0x21,0x20,0x59,0x6f,0x75,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x6e, - 0x65,0x65,0x64,0x20,0x61,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x20,0x77, - 0x69,0x74,0x68,0x6f,0x75,0x74,0x20,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e, - 0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x20,0x63,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x20,0x73,0x74,0x61,0x74,0x75,0x73,0x21,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x5c,0x0,0x54, - 0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x73,0x0,0x66,0x0,0x69,0x0,0x72,0x0,0x61, - 0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0xea,0x0,0x6e,0x0,0x63, - 0x0,0x69,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61, - 0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x76,0x0,0x65,0x0,0x6e, - 0x0,0x74,0x0,0xe1,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x20,0x0,0x67,0x0,0x6c, - 0x0,0x6f,0x0,0x62,0x0,0x61,0x0,0x6c,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x26,0x54,0x72,0x61,0x6e,0x73,0x66,0x65,0x72,0x20,0x65,0x76,0x69, - 0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20, - 0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x5e,0x0,0x54, - 0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x73,0x0,0x66,0x0,0x69,0x0,0x72,0x0,0x61, - 0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0xea,0x0,0x6e,0x0,0x63, - 0x0,0x69,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61, - 0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x76,0x0,0x65,0x0,0x6e, - 0x0,0x74,0x0,0xe1,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x72, - 0x0,0x69,0x0,0x76,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x27,0x54,0x72,0x61,0x6e,0x73,0x66,0x65,0x72,0x20,0x65, - 0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x70,0x72,0x69,0x76,0x61, - 0x74,0x65,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff, - 0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x55,0x4e,0x4b,0x4e,0x4f, - 0x57,0x4e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x9c,0x0,0x51,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x69,0x0,0x73,0x0,0x73,0x0,0x6f,0x0,0x20,0x0,0x65, - 0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x61, - 0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20, - 0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0xf3,0x0,0x78, - 0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73, - 0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20, - 0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x67, - 0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0xe1,0x0,0x20, - 0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x67,0x0,0x72,0x0,0x69,0x0,0x74,0x0,0x6f, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x47,0x57,0x68,0x65,0x6e, - 0x20,0x74,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x74,0x75,0x72,0x6e,0x65,0x64,0x20, - 0x6f,0x6e,0x2c,0x20,0x79,0x6f,0x75,0x72,0x20,0x6e,0x65,0x78,0x74,0x20,0x69,0x6e, - 0x2d,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x6d,0x65,0x73,0x73,0x61, - 0x67,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x20,0x73,0x68,0x6f, - 0x75,0x74,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x1,0x4,0x0,0x56,0x0,0x6f,0x0,0x63,0x0,0xea,0x0, - 0x20,0x0,0x6e,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0, - 0x73,0x0,0x75,0x0,0x69,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x61,0x0,0x20,0x0, - 0x70,0x0,0x61,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x60,0x0,0x62,0x0, - 0x61,0x0,0x73,0x0,0x65,0x0,0x2f,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x65,0x0, - 0x73,0x0,0x2f,0x0,0x60,0x0,0x21,0x0,0x20,0x0,0x46,0x0,0x6f,0x0,0x69,0x0, - 0x20,0x0,0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x70,0x0, - 0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x63,0x0,0xea,0x0, - 0x2c,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x73,0x0,0x2c,0x0,0x20,0x0,0x63,0x0, - 0x6f,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x69,0x0,0x20,0x0, - 0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0, - 0x72,0x0,0x61,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x2c,0x0, - 0x20,0x0,0xe9,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x76,0x0,0xe1,0x0, - 0x76,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0, - 0x76,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x74,0x0, - 0x65,0x0,0x6e,0x0,0x68,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x63,0x0, - 0x6c,0x0,0x75,0x0,0xed,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x91,0x59,0x6f,0x75,0x20,0x64,0x6f,0x6e,0x27,0x74,0x20,0x68, - 0x61,0x76,0x65,0x20,0x61,0x20,0x60,0x62,0x61,0x73,0x65,0x2f,0x63,0x61,0x73,0x65, - 0x73,0x2f,0x60,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x21,0x20,0x49,0x74,0x20,0x77, - 0x61,0x73,0x20,0x6a,0x75,0x73,0x74,0x20,0x6d,0x61,0x64,0x65,0x20,0x66,0x6f,0x72, - 0x20,0x79,0x6f,0x75,0x2c,0x20,0x62,0x75,0x74,0x20,0x73,0x65,0x65,0x69,0x6e,0x67, - 0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x57,0x41,0x53,0x20,0x6a,0x75,0x73,0x74,0x20, - 0x6d,0x61,0x64,0x65,0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x2c,0x20,0x69,0x74, - 0x27,0x73,0x20,0x6c,0x69,0x6b,0x65,0x6c,0x79,0x20,0x74,0x68,0x61,0x74,0x20,0x79, - 0x6f,0x75,0x20,0x73,0x6f,0x6d,0x65,0x68,0x6f,0x77,0x20,0x64,0x65,0x6c,0x65,0x74, - 0x65,0x64,0x20,0x69,0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0x62,0x0,0x56,0x0,0x6f,0x0,0x63, - 0x0,0xea,0x0,0x20,0x0,0x6e,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x6f, - 0x0,0x73,0x0,0x73,0x0,0x75,0x0,0x69,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x61, - 0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x60, - 0x0,0x62,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x2f,0x0,0x63,0x0,0x61,0x0,0x73, - 0x0,0x65,0x0,0x73,0x0,0x2f,0x0,0x60,0x0,0x21,0x0,0x20,0x0,0x46,0x0,0x6f, - 0x0,0x69,0x0,0x20,0x0,0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x20, - 0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x63, - 0x0,0xea,0x0,0x2c,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x73,0x0,0x2c,0x0,0x20, - 0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x69, - 0x0,0x20,0x0,0x66,0x0,0x65,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x70, - 0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x63,0x0,0xea, - 0x0,0x2c,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x76,0x0,0x61,0x0,0x76, - 0x0,0x65,0x0,0x6c,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20, - 0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x72,0x0,0x71,0x0,0x75,0x0,0x69,0x0,0x76, - 0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73, - 0x0,0x6f,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x76,0x0,0x6f, - 0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x20, - 0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x63,0x0,0x75,0x0,0x72,0x0,0x61,0x0,0x6e, - 0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x70, - 0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x20, - 0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x61, - 0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6c,0x0,0xe1,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0xae,0x59,0x6f,0x75,0x20,0x64,0x6f,0x6e,0x27,0x74,0x20, - 0x68,0x61,0x76,0x65,0x20,0x61,0x20,0x60,0x62,0x61,0x73,0x65,0x2f,0x63,0x61,0x73, - 0x65,0x73,0x2f,0x60,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x21,0x20,0x49,0x74,0x20, - 0x77,0x61,0x73,0x20,0x6a,0x75,0x73,0x74,0x20,0x6d,0x61,0x64,0x65,0x20,0x66,0x6f, - 0x72,0x20,0x79,0x6f,0x75,0x2c,0x20,0x62,0x75,0x74,0x20,0x73,0x65,0x65,0x69,0x6e, - 0x67,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x57,0x41,0x53,0x20,0x6a,0x75,0x73,0x74, - 0x20,0x6d,0x61,0x64,0x65,0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x2c,0x20,0x69, - 0x74,0x27,0x73,0x20,0x6c,0x69,0x6b,0x65,0x6c,0x79,0x20,0x74,0x68,0x65,0x20,0x63, - 0x61,0x73,0x65,0x20,0x66,0x69,0x6c,0x65,0x20,0x79,0x6f,0x75,0x27,0x72,0x65,0x20, - 0x6c,0x6f,0x6f,0x6b,0x69,0x6e,0x67,0x20,0x66,0x6f,0x72,0x20,0x63,0x61,0x6e,0x27, - 0x74,0x20,0x62,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64,0x20,0x69,0x6e,0x20,0x74,0x68, - 0x65,0x72,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x56,0x0,0x6f,0x0,0x63,0x0,0xea, - 0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x69,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x6e, - 0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x15,0x59,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x62,0x65,0x65,0x6e,0x20, - 0x62,0x61,0x6e,0x6e,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x3a,0x0,0x56,0x0,0x6f,0x0, - 0x63,0x0,0xea,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x76,0x0,0x65,0x0,0x20,0x0, - 0x66,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x72,0x0, - 0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x74,0x0,0x69,0x0, - 0x76,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1a,0x59, - 0x6f,0x75,0x20,0x6d,0x75,0x73,0x74,0x20,0x70,0x72,0x6f,0x76,0x69,0x64,0x65,0x20, - 0x61,0x20,0x72,0x65,0x61,0x73,0x6f,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0x82,0x0,0x56,0x0, - 0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x63,0x0, - 0x69,0x0,0x73,0x0,0x61,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0, - 0x65,0x0,0x63,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0, - 0x6e,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x61,0x0,0x72,0x0,0x71,0x0,0x75,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x20,0x0, - 0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72,0x0, - 0x72,0x0,0x65,0x0,0x67,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x28,0x0,0x65,0x0, - 0x78,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0, - 0x6e,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x65,0x0,0x63,0x0,0x65,0x0, - 0x73,0x0,0x73,0x0,0xe1,0x0,0x72,0x0,0x69,0x0,0x61,0x0,0x29,0x0,0x21,0x0, - 0x20,0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x69,0x0,0x66,0x0,0x69,0x0,0x71,0x0, - 0x75,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x73,0x0, - 0x74,0x0,0xe1,0x0,0x20,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x61,0x0, - 0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x60,0x0,0x62,0x0,0x61,0x0,0x73,0x0, - 0x65,0x0,0x2f,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x73,0x0,0x2f,0x0, - 0x60,0x0,0x20,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0xe9,0x0, - 0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x20,0x0, - 0x66,0x0,0x6f,0x0,0x72,0x0,0x6d,0x0,0x61,0x0,0x74,0x0,0x61,0x0,0x64,0x0, - 0x6f,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x72,0x0,0x72,0x0,0x65,0x0,0x74,0x0, - 0x61,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x2e,0x0,0xa,0x0, - 0x43,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x71,0x0,0x75,0x0, - 0x65,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x70,0x0, - 0x6f,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x72,0x0, - 0x65,0x0,0x67,0x0,0x61,0x0,0x72,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xae,0x59,0x6f,0x75,0x20,0x6e,0x65,0x65, - 0x64,0x20,0x74,0x6f,0x20,0x67,0x69,0x76,0x65,0x20,0x61,0x20,0x66,0x69,0x6c,0x65, - 0x6e,0x61,0x6d,0x65,0x20,0x74,0x6f,0x20,0x6c,0x6f,0x61,0x64,0x20,0x28,0x65,0x78, - 0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x20,0x6e,0x6f,0x74,0x20,0x6e,0x65,0x65,0x64, - 0x65,0x64,0x29,0x21,0x20,0x4d,0x61,0x6b,0x65,0x20,0x73,0x75,0x72,0x65,0x20,0x74, - 0x68,0x61,0x74,0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65, - 0x20,0x60,0x62,0x61,0x73,0x65,0x2f,0x63,0x61,0x73,0x65,0x73,0x2f,0x60,0x20,0x66, - 0x6f,0x6c,0x64,0x65,0x72,0x2c,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x61,0x74,0x20, - 0x69,0x74,0x20,0x69,0x73,0x20,0x61,0x20,0x63,0x6f,0x72,0x72,0x65,0x63,0x74,0x6c, - 0x79,0x20,0x66,0x6f,0x72,0x6d,0x61,0x74,0x74,0x65,0x64,0x20,0x69,0x6e,0x69,0x2e, - 0xa,0x43,0x61,0x73,0x65,0x73,0x20,0x79,0x6f,0x75,0x20,0x63,0x61,0x6e,0x20,0x6c, - 0x6f,0x61,0x64,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc6,0x0,0x56,0x0,0x6f,0x0, - 0x63,0x0,0xea,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x76,0x0,0x65,0x0,0x20,0x0, - 0x66,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x72,0x0, - 0x20,0x0,0x75,0x0,0x6d,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0, - 0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x72,0x0,0x71,0x0,0x75,0x0, - 0x69,0x0,0x76,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0, - 0x20,0x0,0x73,0x0,0x61,0x0,0x6c,0x0,0x76,0x0,0x61,0x0,0x72,0x0,0x20,0x0, - 0x28,0x0,0x73,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x74,0x0, - 0x65,0x0,0x6e,0x0,0x73,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x65,0x0, - 0x63,0x0,0x65,0x0,0x73,0x0,0x73,0x0,0xe1,0x0,0x72,0x0,0x69,0x0,0x61,0x0, - 0x29,0x0,0x20,0x0,0x65,0x0,0x20,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x73,0x0, - 0x74,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0, - 0x74,0x0,0x72,0x0,0x69,0x0,0x62,0x0,0x75,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0, - 0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x54,0x59,0x6f,0x75,0x20,0x6e, - 0x65,0x65,0x64,0x20,0x74,0x6f,0x20,0x67,0x69,0x76,0x65,0x20,0x61,0x20,0x66,0x69, - 0x6c,0x65,0x6e,0x61,0x6d,0x65,0x20,0x74,0x6f,0x20,0x73,0x61,0x76,0x65,0x20,0x28, - 0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x20,0x6e,0x6f,0x74,0x20,0x6e,0x65, - 0x65,0x64,0x65,0x64,0x29,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x20,0x63,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x20,0x73,0x74,0x61,0x74,0x75,0x73,0x21,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x50,0x0,0x56,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x72,0x0, - 0x65,0x0,0x63,0x0,0x65,0x0,0x62,0x0,0x65,0x0,0x75,0x0,0x20,0x0,0x6f,0x0, - 0x20,0x0,0x62,0x0,0x6f,0x0,0x74,0x0,0xe3,0x0,0x6f,0x0,0x20,0x0,0x44,0x0, - 0x65,0x0,0x73,0x0,0x61,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x61,0x0,0x72,0x0, - 0x20,0x0,0x4d,0x0,0x6f,0x0,0x64,0x0,0x63,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0, - 0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2d,0x59,0x6f,0x75, - 0x20,0x77,0x65,0x72,0x65,0x20,0x67,0x72,0x61,0x6e,0x74,0x65,0x64,0x20,0x74,0x68, - 0x65,0x20,0x44,0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x4d,0x6f,0x64,0x63,0x61,0x6c, - 0x6c,0x73,0x20,0x62,0x75,0x74,0x74,0x6f,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x38,0x0,0x53, - 0x0,0x65,0x0,0x75,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x20, - 0x0,0x22,0x0,0x25,0x0,0x31,0x0,0x22,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x69, - 0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x72,0x0,0x65,0x0,0x67,0x0,0x61, - 0x0,0x64,0x0,0x6f,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1a, - 0x59,0x6f,0x75,0x72,0x20,0x63,0x61,0x73,0x65,0x20,0x22,0x25,0x31,0x22,0x20,0x77, - 0x61,0x73,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x21,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1c,0x0,0x74, - 0x0,0x6f,0x0,0x63,0x0,0x6f,0x0,0x75,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x6d, - 0x0,0xfa,0x0,0x73,0x0,0x69,0x0,0x63,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x11,0x68,0x61,0x73,0x20,0x70,0x6c,0x61,0x79,0x65,0x64,0x20,0x61, - 0x20,0x73,0x6f,0x6e,0x67,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x28,0x0,0x61,0x0,0x70,0x0,0x72,0x0, - 0x65,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0,0x75,0x0,0x20,0x0, - 0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0xea,0x0,0x6e,0x0,0x63,0x0,0x69,0x0, - 0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x16,0x68,0x61,0x73,0x20,0x70, - 0x72,0x65,0x73,0x65,0x6e,0x74,0x65,0x64,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63, - 0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0xa,0x0,0x53,0x0,0x6f,0x0,0x62,0x0,0x72,0x0,0x65,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x41,0x62,0x6f,0x75,0x74,0x7,0x0, - 0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x56,0x0,0x50, - 0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x61, - 0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x76, - 0x0,0xe1,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x73, - 0x0,0x70,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x6c,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x74, - 0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x33,0x41,0x6c, - 0x6c,0x6f,0x77,0x73,0x20,0x79,0x6f,0x75,0x20,0x74,0x6f,0x20,0x63,0x68,0x61,0x6e, - 0x67,0x65,0x20,0x76,0x61,0x72,0x69,0x6f,0x75,0x73,0x20,0x61,0x73,0x70,0x65,0x63, - 0x74,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74, - 0x2e,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0, - 0x24,0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0, - 0x79,0x0,0x20,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0, - 0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x41, - 0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x25, - 0x31,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0, - 0x10,0x0,0x43,0x0,0x61,0x0,0x6e,0x0,0x63,0x0,0x65,0x0,0x6c,0x0,0x61,0x0, - 0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x61,0x6e,0x63,0x65, - 0x6c,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x1, - 0x28,0x0,0x53,0x0,0x65,0x0,0x75,0x0,0x20,0x0,0x63,0x0,0x6c,0x0,0x69,0x0, - 0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x6e,0x0,0xe3,0x0,0x6f,0x0, - 0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x20,0x0, - 0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x63,0x0,0x6f,0x0, - 0x6e,0x0,0x66,0x0,0x69,0x0,0x67,0x0,0x75,0x0,0x72,0x0,0x61,0x0,0x64,0x0, - 0x6f,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x72,0x0,0x72,0x0,0x65,0x0,0x74,0x0, - 0x61,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x2e,0x0,0xa,0x0, - 0x56,0x0,0x6f,0x0,0x63,0x0,0xea,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x69,0x0, - 0x78,0x0,0x6f,0x0,0x75,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x64,0x0,0x6f,0x0, - 0x73,0x0,0x20,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x63,0x0, - 0x75,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x63,0x0,0x6f,0x0, - 0x72,0x0,0x72,0x0,0x65,0x0,0x74,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0, - 0x74,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x69,0x0, - 0x6e,0x0,0x79,0x0,0x2e,0x0,0x63,0x0,0x63,0x0,0x2f,0x0,0x67,0x0,0x65,0x0, - 0x74,0x0,0x61,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x63,0x0, - 0x6c,0x0,0x75,0x0,0x69,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x61,0x0, - 0x20,0x0,0x67,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x70,0x0,0x61,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x27,0x0,0x62,0x0, - 0x61,0x0,0x73,0x0,0x65,0x0,0x27,0x0,0x3f,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x95,0x49,0x74,0x20,0x64,0x6f,0x65,0x73,0x6e,0x27,0x74,0x20,0x6c,0x6f, - 0x6f,0x6b,0x20,0x6c,0x69,0x6b,0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x6c,0x69, - 0x65,0x6e,0x74,0x20,0x69,0x73,0x20,0x73,0x65,0x74,0x20,0x75,0x70,0x20,0x63,0x6f, - 0x72,0x72,0x65,0x63,0x74,0x6c,0x79,0x2e,0xa,0x44,0x69,0x64,0x20,0x79,0x6f,0x75, - 0x20,0x64,0x6f,0x77,0x6e,0x6c,0x6f,0x61,0x64,0x20,0x61,0x6c,0x6c,0x20,0x72,0x65, - 0x73,0x6f,0x75,0x72,0x63,0x65,0x73,0x20,0x63,0x6f,0x72,0x72,0x65,0x63,0x74,0x6c, - 0x79,0x20,0x66,0x72,0x6f,0x6d,0x20,0x74,0x69,0x6e,0x79,0x2e,0x63,0x63,0x2f,0x67, - 0x65,0x74,0x61,0x6f,0x2c,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x69,0x6e,0x67,0x20, - 0x74,0x68,0x65,0x20,0x6c,0x61,0x72,0x67,0x65,0x20,0x27,0x62,0x61,0x73,0x65,0x27, - 0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x3f,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62, - 0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x14,0x0,0x43,0x0,0x61,0x0,0x72,0x0,0x72, - 0x0,0x65,0x0,0x67,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x7,0x4c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x7,0x0,0x0, - 0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x8,0x0,0x4e,0x0, - 0x6f,0x0,0x6d,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x4e, - 0x61,0x6d,0x65,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0, - 0x0,0x0,0x6,0x0,0x4e,0x0,0xe3,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x2,0x4e,0x6f,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1, - 0x3,0x0,0x0,0x0,0xe,0x0,0x4f,0x0,0x66,0x0,0x66,0x0,0x6c,0x0,0x69,0x0, - 0x6e,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4f,0x66,0x66, - 0x6c,0x69,0x6e,0x65,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3, - 0x0,0x0,0x0,0x1a,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65, - 0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x4f,0x6e,0x6c,0x69,0x6e,0x65,0x3a,0x20, - 0x25,0x31,0x2f,0x25,0x32,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1, - 0x3,0x0,0x0,0x0,0x12,0x0,0x50,0x0,0x65,0x0,0x73,0x0,0x71,0x0,0x75,0x0, - 0x69,0x0,0x73,0x0,0x61,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x6,0x53,0x65,0x61,0x72,0x63,0x68,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62, - 0x79,0x1,0x3,0x0,0x0,0x0,0x1a,0x0,0x43,0x0,0x6f,0x0,0x6e,0x0,0x66,0x0, - 0x69,0x0,0x67,0x0,0x75,0x0,0x72,0x0,0x61,0x0,0xe7,0x0,0xf5,0x0,0x65,0x0, - 0x73,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x65,0x74,0x74,0x69, - 0x6e,0x67,0x73,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0, - 0x0,0x0,0x14,0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0xe3,0x0,0x6f,0x0, - 0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xb,0x56,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0, - 0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x6,0x0,0x53,0x0,0x69, - 0x0,0x6d,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x59,0x65,0x73,0x7, - 0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0xff,0xff,0xff,0xff,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x55,0x4e,0x4b,0x4e,0x4f,0x57,0x4e, - 0x7,0x0,0x0,0x0,0xc,0x63,0x68,0x61,0x74,0x6c,0x6f,0x67,0x70,0x69,0x65,0x63, - 0x65,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x5,0x45,0x72,0x72,0x6f,0x72,0x7,0x0,0x0,0x0,0xf,0x64,0x65,0x62,0x75,0x67, - 0x5f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x1,0x3,0xff,0xff,0xff,0xff, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x45,0x72,0x72,0x6f,0x72,0x3a, - 0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xf,0x64,0x65,0x62,0x75,0x67,0x5f,0x66,0x75, - 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4e,0x6f,0x74,0x69,0x63,0x65,0x7,0x0,0x0, - 0x0,0xf,0x64,0x65,0x62,0x75,0x67,0x5f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, - 0x73,0x1,0x88,0x0,0x0,0x0,0x2,0x3,0x1, - // /media/stoned/SHARED/Git/AO2-Client/resource/translations/ao_en.qm - 0x0,0x0,0x0,0x21, - 0x3c, - 0xb8,0x64,0x18,0xca,0xef,0x9c,0x95,0xcd,0x21,0x1c,0xbf,0x60,0xa1,0xbd,0xdd,0xa7, - 0x0,0x0,0x0,0x5,0x65,0x6e,0x5f,0x55,0x53,0x88,0x0,0x0,0x0,0x2,0x1,0x1, - - // /media/stoned/SHARED/Git/AO2-Client/resource/translations/ao_es.qm - 0x0,0x0,0xa0,0xf0, - 0x3c, - 0xb8,0x64,0x18,0xca,0xef,0x9c,0x95,0xcd,0x21,0x1c,0xbf,0x60,0xa1,0xbd,0xdd,0xa7, - 0x0,0x0,0x0,0x5,0x65,0x73,0x5f,0x45,0x53,0x42,0x0,0x0,0x7,0x88,0x0,0x0, - 0x5,0x4f,0x0,0x0,0x97,0x3f,0x0,0x0,0x44,0x3d,0x0,0x0,0x48,0x67,0x0,0x0, - 0x48,0xa,0x0,0x0,0x15,0xc3,0x0,0x0,0x57,0x85,0x0,0x0,0x6d,0xc7,0x0,0x0, - 0x59,0xd8,0x0,0x0,0x7a,0x62,0x0,0x0,0x5f,0xc3,0x0,0x0,0x98,0x74,0x0,0x4, - 0xd3,0x0,0x0,0x0,0x61,0x38,0x0,0x5,0x48,0x35,0x0,0x0,0x68,0x21,0x0,0x5, - 0x48,0x35,0x0,0x0,0x97,0x15,0x0,0x5,0x56,0x45,0x0,0x0,0x69,0x61,0x0,0x5, - 0x7b,0xba,0x0,0x0,0x33,0xa5,0x0,0x1d,0xb,0x21,0x0,0x0,0x98,0x39,0x0,0x33, - 0x9c,0xa,0x0,0x0,0x1b,0x56,0x0,0x47,0x96,0xc4,0x0,0x0,0x93,0xa7,0x0,0x48, - 0xba,0xff,0x0,0x0,0x13,0xbf,0x0,0x49,0x30,0x73,0x0,0x0,0x4c,0xeb,0x0,0x4c, - 0x99,0x62,0x0,0x0,0x5f,0x9b,0x0,0x4c,0x99,0x62,0x0,0x0,0x98,0xbd,0x0,0x4e, - 0xb8,0x84,0x0,0x0,0x61,0xc5,0x0,0x54,0xc9,0xf3,0x0,0x0,0x67,0xfe,0x0,0x5a, - 0x81,0xbe,0x0,0x0,0x7f,0x0,0x0,0x5b,0xee,0x2e,0x0,0x0,0x64,0x44,0x0,0x5c, - 0xcf,0x9e,0x0,0x0,0x62,0x6d,0x0,0x73,0x9c,0x8e,0x0,0x0,0x41,0x5b,0x0,0x74, - 0x22,0x2e,0x0,0x0,0x27,0xfe,0x0,0x81,0x97,0x4e,0x0,0x0,0x3a,0x4,0x0,0x8b, - 0xa2,0x99,0x0,0x0,0x75,0xad,0x0,0x9a,0x6c,0xca,0x0,0x0,0x18,0x64,0x0,0xa0, - 0x39,0x3e,0x0,0x0,0x52,0x39,0x0,0xa5,0x9e,0x4e,0x0,0x0,0x0,0x58,0x0,0xb7, - 0xb7,0x3e,0x0,0x0,0x78,0xb2,0x0,0xc6,0xda,0xde,0x0,0x0,0x2b,0x61,0x0,0xd1, - 0x29,0xfe,0x0,0x0,0x1d,0x91,0x0,0xf4,0x21,0x9e,0x0,0x0,0x8a,0x59,0x1,0x8, - 0x6f,0x91,0x0,0x0,0x7b,0xea,0x1,0x8,0xc3,0x9a,0x0,0x0,0x17,0xc5,0x1,0xb, - 0xd3,0x5e,0x0,0x0,0x67,0x46,0x1,0xe,0x4a,0x51,0x0,0x0,0x50,0x48,0x1,0x11, - 0x0,0x3,0x0,0x0,0x57,0x32,0x1,0x36,0x85,0x9e,0x0,0x0,0x57,0xa1,0x1,0x6a, - 0x19,0x1a,0x0,0x0,0x3e,0x2f,0x1,0x6d,0x91,0xe4,0x0,0x0,0x84,0x6b,0x1,0x71, - 0x35,0x8e,0x0,0x0,0x7f,0x2f,0x1,0x71,0xfc,0x57,0x0,0x0,0x92,0xe4,0x1,0x90, - 0x8a,0xff,0x0,0x0,0x95,0x3,0x1,0xc6,0x62,0xee,0x0,0x0,0x19,0x51,0x1,0xd4, - 0x4c,0xee,0x0,0x0,0x24,0x31,0x1,0xec,0xca,0xde,0x0,0x0,0x4e,0xfa,0x1,0xf4, - 0xee,0x2e,0x0,0x0,0x59,0xa0,0x2,0x21,0x83,0xba,0x0,0x0,0x14,0xf3,0x2,0x2a, - 0xb9,0xea,0x0,0x0,0x3d,0x93,0x2,0x48,0x6f,0xbe,0x0,0x0,0x70,0x4b,0x2,0x5b, - 0x7c,0x2e,0x0,0x0,0x74,0xd8,0x2,0x61,0xf3,0x4e,0x0,0x0,0x3,0xfa,0x2,0x77, - 0xf8,0xaa,0x0,0x0,0x13,0xf2,0x2,0x7c,0x19,0x8a,0x0,0x0,0x15,0x43,0x2,0x89, - 0x29,0x7e,0x0,0x0,0x42,0x9c,0x2,0x89,0xc1,0x81,0x0,0x0,0x90,0x5d,0x2,0x92, - 0x1b,0xfe,0x0,0x0,0x84,0xa3,0x2,0xb5,0x2d,0xae,0x0,0x0,0x4d,0xe,0x2,0xc5, - 0x76,0x61,0x0,0x0,0x0,0x0,0x2,0xc5,0x76,0x61,0x0,0x0,0x94,0x83,0x2,0xc6, - 0xd5,0xca,0x0,0x0,0x14,0x99,0x2,0xe6,0xd3,0xa2,0x0,0x0,0x4e,0x88,0x2,0xf7, - 0xb3,0xca,0x0,0x0,0x2e,0xd5,0x3,0x3e,0x21,0x33,0x0,0x0,0x15,0xf0,0x3,0x4c, - 0x3,0x4e,0x0,0x0,0x58,0x76,0x3,0x4f,0x76,0x7e,0x0,0x0,0x74,0x22,0x3,0x57, - 0xb0,0x17,0x0,0x0,0x1,0xd3,0x3,0x57,0xb0,0x17,0x0,0x0,0x96,0xe4,0x3,0x69, - 0x45,0x7a,0x0,0x0,0x3d,0xda,0x3,0xba,0xa8,0xe5,0x0,0x0,0x64,0x1d,0x3,0xca, - 0x97,0x85,0x0,0x0,0x67,0x13,0x3,0xdb,0x87,0x6a,0x0,0x0,0x2f,0x2e,0x3,0xf4, - 0x58,0xee,0x0,0x0,0x2a,0x23,0x3,0xf6,0xdf,0x45,0x0,0x0,0x70,0x21,0x4,0x8, - 0xf0,0xbe,0x0,0x0,0x73,0x2a,0x4,0x49,0x96,0x8a,0x0,0x0,0x16,0xa0,0x4,0x50, - 0x17,0xc4,0x0,0x0,0x9,0x26,0x4,0x80,0xda,0x34,0x0,0x0,0x4e,0x64,0x4,0x82, - 0xfd,0x59,0x0,0x0,0x72,0xda,0x4,0x86,0xaf,0x2e,0x0,0x0,0xb,0x21,0x4,0x87, - 0xdc,0xba,0x0,0x0,0xf,0x9,0x4,0x92,0x8,0xb2,0x0,0x0,0x61,0x5a,0x4,0x92, - 0x65,0x9a,0x0,0x0,0x3e,0x87,0x4,0x93,0x7,0x6a,0x0,0x0,0x15,0x8d,0x4,0x98, - 0x49,0xbc,0x0,0x0,0x94,0xd3,0x4,0x98,0xa0,0x47,0x0,0x0,0x16,0x39,0x4,0x98, - 0xa0,0x47,0x0,0x0,0x4f,0x4c,0x4,0x9c,0x6,0xae,0x0,0x0,0x46,0x43,0x4,0xd2, - 0xef,0xfe,0x0,0x0,0x1b,0x94,0x4,0xe0,0xf6,0x35,0x0,0x0,0x6e,0xd,0x4,0xeb, - 0x2f,0xa,0x0,0x0,0x2e,0x37,0x4,0xf6,0x74,0xde,0x0,0x0,0x1c,0xa9,0x5,0x1b, - 0xad,0x8a,0x0,0x0,0x2d,0x59,0x5,0x1c,0x96,0x5a,0x0,0x0,0x2d,0x8d,0x5,0x38, - 0xaa,0xc2,0x0,0x0,0x66,0xef,0x5,0x4c,0x9f,0x6a,0x0,0x0,0x30,0x2f,0x5,0x56, - 0xaf,0x95,0x0,0x0,0x99,0x13,0x5,0x61,0x3,0x44,0x0,0x0,0xa,0x37,0x5,0x9b, - 0x88,0x98,0x0,0x0,0x74,0xa8,0x5,0x9b,0x88,0x98,0x0,0x0,0x97,0xdd,0x5,0x9c, - 0x9c,0xc2,0x0,0x0,0x75,0x89,0x5,0xae,0xc3,0x8a,0x0,0x0,0x3f,0xe9,0x5,0xcd, - 0x30,0x15,0x0,0x0,0x97,0x5b,0x6,0x26,0x54,0x91,0x0,0x0,0x62,0x2f,0x6,0x2d, - 0x36,0x3e,0x0,0x0,0x47,0xfd,0x6,0x60,0x3a,0x14,0x0,0x0,0x81,0x3e,0x6,0x73, - 0x98,0x7e,0x0,0x0,0x88,0xc,0x6,0x83,0xdc,0x2e,0x0,0x0,0x48,0x88,0x6,0x86, - 0x8a,0xd9,0x0,0x0,0x64,0xae,0x6,0x8b,0xb5,0x54,0x0,0x0,0x84,0x34,0x6,0xb6, - 0x6c,0xfe,0x0,0x0,0x72,0x59,0x6,0xe4,0x3a,0x33,0x0,0x0,0x7b,0x88,0x6,0xf8, - 0x3f,0x1e,0x0,0x0,0x5c,0x78,0x7,0x1f,0x3b,0x1e,0x0,0x0,0x8d,0xb1,0x7,0x55, - 0xb3,0xce,0x0,0x0,0x12,0x4b,0x7,0x5f,0x40,0x71,0x0,0x0,0x7e,0xc4,0x7,0x6a, - 0xd3,0xde,0x0,0x0,0x66,0x69,0x7,0x7e,0x12,0xce,0x0,0x0,0x7f,0x95,0x7,0x8b, - 0x84,0xad,0x0,0x0,0x6d,0xe8,0x7,0x93,0x1e,0x9e,0x0,0x0,0x79,0x8e,0x7,0xad, - 0x58,0x6e,0x0,0x0,0x4d,0xed,0x7,0xd3,0x14,0x2e,0x0,0x0,0x3c,0x8f,0x7,0xdc, - 0x3d,0xbe,0x0,0x0,0x1e,0xbe,0x7,0xe0,0x1a,0x4f,0x0,0x0,0x5e,0xa9,0x7,0xf9, - 0x3b,0xfa,0x0,0x0,0x8,0x73,0x8,0x2e,0x78,0xc4,0x0,0x0,0x4e,0xd4,0x8,0x3c, - 0x76,0x59,0x0,0x0,0x19,0xf,0x8,0x40,0xf,0xbe,0x0,0x0,0x85,0x5a,0x8,0x72, - 0x3c,0xfe,0x0,0x0,0x5a,0xb9,0x8,0x82,0xd3,0xb4,0x0,0x0,0x9,0x7c,0x8,0x99, - 0x50,0xfe,0x0,0x0,0xf,0x69,0x8,0xaa,0xe3,0xe4,0x0,0x0,0x6a,0x78,0x8,0xb3, - 0x26,0x9e,0x0,0x0,0x25,0x92,0x8,0xb8,0xa6,0x4a,0x0,0x0,0x6e,0xeb,0x8,0xcb, - 0x30,0x7e,0x0,0x0,0x55,0xe6,0x8,0xdc,0xf5,0x2e,0x0,0x0,0x48,0xeb,0x8,0xe0, - 0x7,0x3e,0x0,0x0,0x32,0x9a,0x8,0xe0,0x7,0x3e,0x0,0x0,0x6f,0x1c,0x9,0x4, - 0x4f,0x11,0x0,0x0,0x6,0x26,0x9,0x2d,0xc9,0x42,0x0,0x0,0x2,0xc,0x9,0x3c, - 0x6,0xae,0x0,0x0,0x4f,0x9e,0x9,0x3d,0xef,0x3a,0x0,0x0,0x2f,0xcf,0x9,0x45, - 0x92,0xfe,0x0,0x0,0x31,0xee,0x9,0x4c,0x8f,0x69,0x0,0x0,0x4b,0xc9,0x9,0x5c, - 0xb,0x5e,0x0,0x0,0x7d,0x58,0x9,0x65,0x8e,0x11,0x0,0x0,0x98,0xe6,0x9,0x8a, - 0x4,0xea,0x0,0x0,0x16,0x6b,0x9,0xa2,0x27,0x1e,0x0,0x0,0x8d,0x5e,0x9,0xbb, - 0x17,0xd1,0x0,0x0,0x7,0x7b,0x9,0xc8,0xb4,0xb9,0x0,0x0,0x63,0xcf,0x9,0xf7, - 0x73,0xca,0x0,0x0,0x2f,0x79,0x9,0xf8,0xba,0xe,0x0,0x0,0x5f,0xc8,0x9,0xfb, - 0x69,0xba,0x0,0x0,0x17,0x70,0x9,0xfe,0x27,0x8a,0x0,0x0,0x14,0x3b,0xa,0x21, - 0x3c,0x1e,0x0,0x0,0x46,0xec,0xa,0x25,0xf3,0x8e,0x0,0x0,0x10,0xe8,0xa,0x30, - 0x34,0xee,0x0,0x0,0x89,0x3f,0xa,0x30,0x34,0xee,0x0,0x0,0x98,0x95,0xa,0x50, - 0xfd,0xce,0x0,0x0,0x2,0xd8,0xa,0x7b,0x45,0x52,0x0,0x0,0x97,0x98,0xa,0x85, - 0xfd,0xa9,0x0,0x0,0x6a,0x26,0xa,0x9c,0x9,0x81,0x0,0x0,0x92,0x7a,0xa,0xb0, - 0xb4,0xb5,0x0,0x0,0x49,0xb7,0xa,0xbc,0x8c,0x74,0x0,0x0,0x5a,0xe,0xa,0xd7, - 0x53,0x8a,0x0,0x0,0x2e,0x72,0xa,0xe3,0xe2,0x14,0x0,0x0,0x6a,0xb2,0xa,0xe5, - 0x47,0xba,0x0,0x0,0x30,0x67,0xa,0xf8,0x17,0x4,0x0,0x0,0x9,0xd7,0xb,0x14, - 0x21,0x9,0x0,0x0,0x4a,0x9a,0xb,0x2a,0x64,0x7e,0x0,0x0,0x8b,0x7c,0xb,0x33, - 0xc3,0x8e,0x0,0x0,0x5d,0x1e,0xb,0xa7,0x67,0xe7,0x0,0x0,0xa,0xa0,0xb,0xaa, - 0xd1,0x2,0x0,0x0,0x7b,0xaf,0xb,0xaf,0xbd,0x1,0x0,0x0,0x69,0x8b,0xb,0xcc, - 0x5d,0x2a,0x0,0x0,0x18,0x28,0xb,0xd2,0xf0,0x2e,0x0,0x0,0x0,0xc7,0xb,0xf8, - 0x7e,0x2e,0x0,0x0,0x5b,0xa5,0xc,0x1b,0xfe,0x7e,0x0,0x0,0x43,0xce,0xc,0x38, - 0x78,0xde,0x0,0x0,0x37,0x1a,0xc,0x3a,0x32,0x3e,0x0,0x0,0x40,0x2b,0xc,0x46, - 0x2c,0xc3,0x0,0x0,0x7c,0xca,0xc,0x54,0x5d,0xa2,0x0,0x0,0x4f,0x70,0xc,0x55, - 0xec,0x1e,0x0,0x0,0x30,0xd7,0xc,0x65,0x27,0x6e,0x0,0x0,0x3e,0xdb,0xc,0x78, - 0x8e,0x4e,0x0,0x0,0x6b,0x40,0xc,0x7a,0x74,0xbe,0x0,0x0,0x60,0xae,0xc,0x7f, - 0xf2,0x1e,0x0,0x0,0x4b,0xfe,0xc,0xbb,0x1,0x73,0x0,0x0,0x3d,0x59,0xc,0xbb, - 0x1,0x73,0x0,0x0,0x7a,0x3c,0xc,0xbb,0x1,0x73,0x0,0x0,0x98,0x9,0xc,0xbd, - 0x72,0x9e,0x0,0x0,0x91,0xab,0xc,0xe0,0xa9,0xbe,0x0,0x0,0x68,0xd9,0xc,0xe2, - 0xdf,0x55,0x0,0x0,0x5a,0x4f,0xc,0xf9,0x5e,0xae,0x0,0x0,0x80,0x4b,0xd,0x4, - 0x5f,0x59,0x0,0x0,0x65,0x5,0xd,0xf,0x4e,0x6e,0x0,0x0,0x38,0x78,0xd,0x4c, - 0x1d,0x31,0x0,0x0,0x69,0xc7,0xd,0x58,0x98,0x6e,0x0,0x0,0x88,0xa4,0xd,0x9a, - 0x50,0xf3,0x0,0x0,0x68,0x4f,0xd,0xd4,0x95,0x41,0x0,0x0,0x8e,0x23,0xd,0xd7, - 0xfc,0x1e,0x0,0x0,0x22,0x51,0xd,0xe6,0x8f,0x6a,0x0,0x0,0x18,0xa0,0xd,0xec, - 0xf9,0xc3,0x0,0x0,0x60,0xe3,0xd,0xfd,0xd,0x22,0x0,0x0,0x8,0x21,0xe,0x13, - 0x1f,0xfe,0x0,0x0,0x35,0xbf,0xe,0x30,0x3,0xa5,0x0,0x0,0x93,0x45,0xe,0x30, - 0x6d,0x3e,0x0,0x0,0x45,0xd,0xe,0x44,0x82,0x3a,0x0,0x0,0x2d,0xc5,0xe,0x7e, - 0xd9,0xce,0x0,0x0,0x37,0xa7,0xe,0x87,0xe7,0x64,0x0,0x0,0x8,0xc8,0xe,0x89, - 0xf0,0x4e,0x0,0x0,0x7a,0x83,0xe,0x9f,0x90,0x9e,0x0,0x0,0x49,0xeb,0xe,0x9f, - 0x90,0x9e,0x0,0x0,0x93,0xd8,0xe,0xa8,0x94,0x77,0x0,0x0,0x6a,0xda,0xe,0xb1, - 0x2b,0xce,0x0,0x0,0x40,0xca,0xe,0xb2,0x85,0xee,0x0,0x0,0x26,0x9b,0xe,0xb4, - 0x8c,0x1,0x0,0x0,0x6,0xcd,0xe,0xc0,0x3b,0xf1,0x0,0x0,0x61,0xf6,0xe,0xd0, - 0x9d,0x8e,0x0,0x0,0x6c,0x5e,0xe,0xdc,0xdd,0xce,0x0,0x0,0x21,0x19,0xe,0xf1, - 0x38,0xce,0x0,0x0,0x71,0x95,0xe,0xff,0xbf,0x42,0x0,0x0,0x2,0x76,0xf,0x2, - 0x2,0x21,0x0,0x0,0x86,0x85,0xf,0x47,0x35,0x8e,0x0,0x0,0x1f,0xe9,0xf,0x48, - 0xb8,0x5a,0x0,0x0,0x17,0x9,0xf,0x55,0xd9,0xd1,0x0,0x0,0x59,0x4b,0xf,0x60, - 0xe2,0x5e,0x0,0x0,0x33,0xd5,0xf,0x66,0x94,0x9e,0x0,0x0,0x55,0xb0,0xf,0x6e, - 0x43,0xa5,0x0,0x0,0x7b,0x62,0xf,0xaf,0x1f,0x4f,0x0,0x0,0x5f,0x22,0xf,0xb3, - 0xad,0xaa,0x0,0x0,0x32,0x5c,0xf,0xc6,0x3f,0xf3,0x0,0x0,0x60,0x41,0xf,0xcb, - 0x37,0xde,0x0,0x0,0x23,0x7c,0xf,0xd2,0xf,0x4e,0x0,0x0,0x2c,0x82,0xf,0xd3, - 0x69,0x3e,0x0,0x0,0x39,0x5e,0xf,0xe9,0x8a,0xbe,0x0,0x0,0x7d,0xee,0xf,0xef, - 0x55,0x95,0x0,0x0,0x7e,0x85,0xf,0xf4,0x81,0xe1,0x0,0x0,0x89,0x64,0xf,0xfd, - 0x3b,0x5a,0x0,0x0,0xe,0xb5,0x69,0x0,0x0,0x99,0x3d,0x3,0x0,0x0,0x0,0x24, - 0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79, - 0x0,0x20,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20, - 0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x41,0x74, - 0x74,0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x25,0x31, - 0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x34,0x0,0x44,0x0,0x65,0x0,0x73,0x0,0x63, - 0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x61,0x0,0x64,0x0,0x6f, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72, - 0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x19,0x44,0x69,0x73,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74, - 0x65,0x64,0x20,0x66,0x72,0x6f,0x6d,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x7, - 0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x1,0x3,0x0,0x0,0x0,0xaa,0x0,0x45,0x0,0x72,0x0,0x72,0x0,0x6f,0x0, - 0x72,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0, - 0x65,0x0,0x63,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x73,0x0,0x65,0x0,0x20,0x0, - 0x61,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x73,0x0, - 0x74,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0, - 0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x65,0x0,0x73,0x0, - 0x2e,0x0,0x20,0x0,0x53,0x0,0x65,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x74,0x0, - 0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x6e,0x0, - 0x75,0x0,0x65,0x0,0x76,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0, - 0x65,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x20,0x0, - 0x73,0x0,0x65,0x0,0x67,0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x73,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x40,0x45,0x72,0x72,0x6f,0x72, - 0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x6d, - 0x61,0x73,0x74,0x65,0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x20,0x57,0x69, - 0x6c,0x6c,0x20,0x74,0x72,0x79,0x20,0x61,0x67,0x61,0x69,0x6e,0x20,0x69,0x6e,0x20, - 0x25,0x31,0x20,0x73,0x65,0x63,0x6f,0x6e,0x64,0x73,0x2e,0x7,0x0,0x0,0x0,0xd, - 0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0, - 0x0,0x0,0x10,0x0,0x43,0x0,0x61,0x0,0x72,0x0,0x67,0x0,0x61,0x0,0x6e,0x0, - 0x64,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4c,0x6f,0x61, - 0x64,0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69, - 0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x34,0x0,0x43,0x0,0x61, - 0x0,0x72,0x0,0x67,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x70, - 0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6a,0x0,0x65, - 0x0,0x73,0x0,0x3a,0x0,0xa,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x14,0x4c,0x6f,0x61,0x64,0x69,0x6e, - 0x67,0x20,0x63,0x68,0x61,0x72,0x73,0x3a,0xa,0x25,0x31,0x2f,0x25,0x32,0x7,0x0, - 0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x43,0x0,0x61,0x0,0x72,0x0,0x67,0x0,0x61, - 0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0xfa,0x0,0x73,0x0,0x69, - 0x0,0x63,0x0,0x61,0x0,0x3a,0x0,0xa,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25, - 0x0,0x32,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x14,0x4c,0x6f,0x61,0x64, - 0x69,0x6e,0x67,0x20,0x6d,0x75,0x73,0x69,0x63,0x3a,0xa,0x25,0x31,0x2f,0x25,0x32, - 0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0xb0,0x0,0xa1,0x0,0x56,0x0,0x65,0x0,0x72, - 0x0,0x73,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73, - 0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a, - 0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x21,0x0,0x20,0x0,0x53,0x0,0x75,0x0,0x20, - 0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x3a, - 0x0,0x20,0x0,0x25,0x0,0x31,0x0,0xa,0x0,0x49,0x0,0x6e,0x0,0x67,0x0,0x72, - 0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x63, - 0x0,0x65,0x0,0x61,0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65, - 0x0,0x79,0x0,0x6f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x2e, - 0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61, - 0x0,0x20,0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x69, - 0x0,0x7a,0x0,0x61,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x50,0x4f,0x75,0x74,0x64,0x61,0x74,0x65,0x64,0x20,0x76,0x65,0x72,0x73,0x69, - 0x6f,0x6e,0x21,0x20,0x59,0x6f,0x75,0x72,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e, - 0x3a,0x20,0x25,0x31,0xa,0x50,0x6c,0x65,0x61,0x73,0x65,0x20,0x67,0x6f,0x20,0x74, - 0x6f,0x20,0x61,0x63,0x65,0x61,0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x6f,0x6e,0x6c, - 0x69,0x6e,0x65,0x2e,0x63,0x6f,0x6d,0x20,0x74,0x6f,0x20,0x75,0x70,0x64,0x61,0x74, - 0x65,0x2e,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0xe8,0x0,0x48,0x0,0x75,0x0,0x62, - 0x0,0x6f,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x72,0x0,0x72, - 0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x6f,0x0,0x62, - 0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x6c,0x0,0x61, - 0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x64, - 0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64, - 0x0,0x6f,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x2e,0x0,0x20,0x0,0x56,0x0,0x65, - 0x0,0x72,0x0,0x69,0x0,0x66,0x0,0x69,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20, - 0x0,0x73,0x0,0x75,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x78, - 0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x49,0x0,0x6e, - 0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x74,0x0,0x20,0x0,0x79, - 0x0,0x20,0x0,0x66,0x0,0x69,0x0,0x72,0x0,0x65,0x0,0x77,0x0,0x61,0x0,0x6c, - 0x0,0x6c,0x0,0x2c,0x0,0x20,0x0,0x79,0x0,0x20,0x0,0x76,0x0,0x75,0x0,0x65, - 0x0,0x6c,0x0,0x76,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6e, - 0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x6c,0x0,0x6f, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x1,0x22,0x54,0x68,0x65,0x72, - 0x65,0x20,0x77,0x61,0x73,0x20,0x61,0x6e,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x63, - 0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x74,0x68,0x65, - 0x20,0x6d,0x61,0x73,0x74,0x65,0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0xa, - 0x57,0x65,0x20,0x64,0x65,0x70,0x6c,0x6f,0x79,0x20,0x6d,0x75,0x6c,0x74,0x69,0x70, - 0x6c,0x65,0x20,0x6d,0x61,0x73,0x74,0x65,0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72, - 0x73,0x20,0x74,0x6f,0x20,0x6d,0x69,0x74,0x69,0x67,0x61,0x74,0x65,0x20,0x61,0x6e, - 0x79,0x20,0x70,0x6f,0x73,0x73,0x69,0x62,0x6c,0x65,0x20,0x64,0x6f,0x77,0x6e,0x74, - 0x69,0x6d,0x65,0x2c,0x20,0x62,0x75,0x74,0x20,0x74,0x68,0x65,0x20,0x63,0x6c,0x69, - 0x65,0x6e,0x74,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x73,0x20,0x74,0x6f,0x20,0x68, - 0x61,0x76,0x65,0x20,0x65,0x78,0x68,0x61,0x75,0x73,0x74,0x65,0x64,0x20,0x61,0x6c, - 0x6c,0x20,0x70,0x6f,0x73,0x73,0x69,0x62,0x6c,0x65,0x20,0x6d,0x65,0x74,0x68,0x6f, - 0x64,0x73,0x20,0x6f,0x66,0x20,0x66,0x69,0x6e,0x64,0x69,0x6e,0x67,0x20,0x61,0x6e, - 0x64,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20, - 0x6f,0x6e,0x65,0x2e,0xa,0x50,0x6c,0x65,0x61,0x73,0x65,0x20,0x63,0x68,0x65,0x63, - 0x6b,0x20,0x79,0x6f,0x75,0x72,0x20,0x49,0x6e,0x74,0x65,0x72,0x6e,0x65,0x74,0x20, - 0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x6e,0x64,0x20,0x66, - 0x69,0x72,0x65,0x77,0x61,0x6c,0x6c,0x2c,0x20,0x61,0x6e,0x64,0x20,0x70,0x6c,0x65, - 0x61,0x73,0x65,0x20,0x74,0x72,0x79,0x20,0x61,0x67,0x61,0x69,0x6e,0x2e,0x7,0x0, - 0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e, - 0x1,0x3,0x0,0x0,0x0,0x5c,0x0,0x48,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x73, - 0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x62,0x0,0x6c,0x0,0x6f,0x0,0x71, - 0x0,0x75,0x0,0x65,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65, - 0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x2e,0x0,0xa, - 0x0,0x52,0x0,0x61,0x0,0x7a,0x0,0xf3,0x0,0x6e,0x0,0x3a,0x0,0x20,0x0,0x25, - 0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x29,0x59,0x6f,0x75,0x20, - 0x61,0x72,0x65,0x20,0x62,0x61,0x6e,0x6e,0x65,0x64,0x20,0x6f,0x6e,0x20,0x74,0x68, - 0x69,0x73,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0xa,0x52,0x65,0x61,0x73,0x6f, - 0x6e,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c, - 0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x5c,0x0,0x48,0x0, - 0x61,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0, - 0x62,0x0,0x6c,0x0,0x6f,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x61,0x0,0x64,0x0, - 0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0, - 0x6f,0x0,0x72,0x0,0x2e,0x0,0xa,0x0,0x52,0x0,0x61,0x0,0x7a,0x0,0xf3,0x0, - 0x6e,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x30,0x59,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x62,0x65,0x65,0x6e, - 0x20,0x62,0x61,0x6e,0x6e,0x65,0x64,0x20,0x66,0x72,0x6f,0x6d,0x20,0x74,0x68,0x65, - 0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0xa,0x52,0x65,0x61,0x73,0x6f,0x6e,0x3a, - 0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xd,0x41,0x4f,0x41,0x70,0x70,0x6c,0x69,0x63, - 0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0,0x54,0x0,0x48,0x0,0x61,0x0, - 0x73,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x65,0x0, - 0x78,0x0,0x70,0x0,0x75,0x0,0x6c,0x0,0x73,0x0,0x61,0x0,0x64,0x0,0x6f,0x0, - 0x20,0x0,0x64,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0, - 0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x2e,0x0,0xa,0x0,0x52,0x0, - 0x61,0x0,0x7a,0x0,0xf3,0x0,0x6e,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x30,0x59,0x6f,0x75,0x20,0x68,0x61,0x76, - 0x65,0x20,0x62,0x65,0x65,0x6e,0x20,0x6b,0x69,0x63,0x6b,0x65,0x64,0x20,0x66,0x72, - 0x6f,0x6d,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0xa,0x52, - 0x65,0x61,0x73,0x6f,0x6e,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xd,0x41,0x4f, - 0x41,0x70,0x70,0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x1,0x3,0x0,0x0,0x0, - 0x1a,0x0,0x41,0x0,0x6e,0x0,0x75,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0, - 0x72,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xe,0x43,0x61,0x73,0x65,0x20,0x41,0x6e,0x6e,0x6f,0x75,0x6e, - 0x63,0x65,0x72,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e, - 0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x20,0x0,0x54,0x0,0xed,0x0,0x74,0x0,0x75,0x0,0x6c,0x0,0x6f,0x0, - 0x20,0x0,0x64,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0, - 0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x43,0x61,0x73, - 0x65,0x20,0x74,0x69,0x74,0x6c,0x65,0x3a,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43, - 0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x26,0x0,0x53,0x0,0x65,0x0,0x20,0x0,0x6e, - 0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x73,0x0,0x69,0x0,0x74,0x0,0x61,0x0,0x20, - 0x0,0x61,0x0,0x62,0x0,0x6f,0x0,0x67,0x0,0x61,0x0,0x64,0x0,0x6f,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x44,0x65,0x66,0x65,0x6e,0x73,0x65,0x20, - 0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73, - 0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x53,0x0,0x65,0x0,0x20,0x0,0x6e,0x0,0x65, - 0x0,0x63,0x0,0x65,0x0,0x73,0x0,0x69,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x6a, - 0x0,0x75,0x0,0x65,0x0,0x7a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc, - 0x4a,0x75,0x64,0x67,0x65,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0, - 0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x24,0x0,0x53,0x0,0x65, - 0x0,0x20,0x0,0x6e,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x73,0x0,0x69,0x0,0x74, - 0x0,0x61,0x0,0x20,0x0,0x6a,0x0,0x75,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x6f, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x4a,0x75,0x72,0x6f,0x72,0x73, - 0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61, - 0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x24,0x0,0x53,0x0,0x65,0x0,0x20,0x0,0x6e,0x0, - 0x65,0x0,0x63,0x0,0x65,0x0,0x73,0x0,0x69,0x0,0x74,0x0,0x61,0x0,0x20,0x0, - 0x66,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x61,0x0,0x6c,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x12,0x50,0x72,0x6f,0x73,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e, - 0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61, - 0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x53,0x0,0x65,0x0,0x20,0x0,0x6e,0x0, - 0x65,0x0,0x63,0x0,0x65,0x0,0x73,0x0,0x69,0x0,0x74,0x0,0x61,0x0,0x20,0x0, - 0x74,0x0,0x61,0x0,0x71,0x0,0x75,0x0,0xed,0x0,0x67,0x0,0x72,0x0,0x61,0x0, - 0x66,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x53,0x74,0x65, - 0x6e,0x6f,0x67,0x72,0x61,0x70,0x68,0x65,0x72,0x20,0x6e,0x65,0x65,0x64,0x65,0x64, - 0x7,0x0,0x0,0x0,0x15,0x41,0x4f,0x43,0x61,0x73,0x65,0x41,0x6e,0x6e,0x6f,0x75, - 0x6e,0x63,0x65,0x72,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x46, - 0x0,0x20,0x0,0x2d,0x0,0x20,0x0,0x4d,0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x65, - 0x0,0x6e,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x63, - 0x0,0x6f,0x0,0x6e,0x0,0x66,0x0,0x69,0x0,0x67,0x0,0x75,0x0,0x72,0x0,0x61, - 0x0,0x63,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x63,0x0,0x74, - 0x0,0x75,0x0,0x61,0x0,0x6c,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17, - 0x20,0x2d,0x20,0x4b,0x65,0x65,0x70,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20, - 0x73,0x65,0x74,0x74,0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x2, - 0x5e,0x0,0x3c,0x0,0x68,0x0,0x74,0x0,0x6d,0x0,0x6c,0x0,0x3e,0x0,0x3c,0x0, - 0x68,0x0,0x65,0x0,0x61,0x0,0x64,0x0,0x2f,0x0,0x3e,0x0,0x3c,0x0,0x62,0x0, - 0x6f,0x0,0x64,0x0,0x79,0x0,0x3e,0x0,0x49,0x0,0x6e,0x0,0x67,0x0,0x72,0x0, - 0x65,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x74,0x0, - 0x61,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x62,0x0, - 0x72,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x6c,0x0, - 0x6c,0x0,0x61,0x0,0x6d,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x63,0x0, - 0x6f,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x65,0x0, - 0x65,0x0,0x2e,0x0,0x3c,0x0,0x62,0x0,0x72,0x0,0x3e,0x0,0x45,0x0,0x73,0x0, - 0x74,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x69,0x0, - 0x73,0x0,0x74,0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x75,0x0,0x65,0x0,0x20,0x0, - 0x65,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x61,0x0, - 0x79,0x0,0xfa,0x0,0x73,0x0,0x63,0x0,0x75,0x0,0x6c,0x0,0x61,0x0,0x73,0x0, - 0x20,0x0,0x79,0x0,0x20,0x0,0x6d,0x0,0x69,0x0,0x6e,0x0,0xfa,0x0,0x73,0x0, - 0x63,0x0,0x75,0x0,0x6c,0x0,0x61,0x0,0x73,0x0,0x2e,0x0,0x20,0x0,0xa1,0x0, - 0x41,0x0,0x73,0x0,0x65,0x0,0x67,0x0,0xfa,0x0,0x72,0x0,0x65,0x0,0x73,0x0, - 0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6a,0x0, - 0x61,0x0,0x72,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x20,0x0, - 0x70,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x62,0x0,0x72,0x0,0x61,0x0,0x20,0x0, - 0x65,0x0,0x6e,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x72,0x0, - 0x6f,0x0,0x70,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0xed,0x0,0x6e,0x0, - 0x65,0x0,0x61,0x0,0x21,0x0,0x3c,0x0,0x62,0x0,0x72,0x0,0x3e,0x0,0x4e,0x0, - 0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x75,0x0, - 0x6e,0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0xed,0x0,0x6e,0x0,0x65,0x0,0x61,0x0, - 0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0, - 0x65,0x0,0x73,0x0,0x70,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x20,0x0, - 0x61,0x0,0x6c,0x0,0x20,0x0,0x66,0x0,0x69,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0, - 0x3b,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x62,0x0,0x69,0x0, - 0x72,0x0,0xe1,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x61,0x0, - 0x6c,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0, - 0x64,0x0,0x61,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x7a,0x0,0x20,0x0,0x71,0x0, - 0x75,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x67,0x0,0x75,0x0,0x69,0x0, - 0x65,0x0,0x6e,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x75,0x0, - 0x6e,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x70,0x0,0x61,0x0,0x63,0x0,0x69,0x0, - 0x6f,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x73,0x0, - 0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x6a,0x0,0x65,0x0, - 0x73,0x0,0x2e,0x0,0x3c,0x0,0x2f,0x0,0x62,0x0,0x6f,0x0,0x64,0x0,0x79,0x0, - 0x3e,0x0,0x3c,0x0,0x2f,0x0,0x68,0x0,0x74,0x0,0x6d,0x0,0x6c,0x0,0x3e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x1,0x12,0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x3c, - 0x68,0x65,0x61,0x64,0x2f,0x3e,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x45,0x6e,0x74,0x65, - 0x72,0x20,0x61,0x73,0x20,0x6d,0x61,0x6e,0x79,0x20,0x63,0x61,0x6c,0x6c,0x77,0x6f, - 0x72,0x64,0x73,0x20,0x61,0x73,0x20,0x79,0x6f,0x75,0x20,0x77,0x6f,0x75,0x6c,0x64, - 0x20,0x6c,0x69,0x6b,0x65,0x2e,0x20,0x54,0x68,0x65,0x73,0x65,0x20,0x61,0x72,0x65, - 0x20,0x63,0x61,0x73,0x65,0x20,0x69,0x6e,0x73,0x65,0x6e,0x73,0x69,0x74,0x69,0x76, - 0x65,0x2e,0x20,0x4d,0x61,0x6b,0x65,0x20,0x73,0x75,0x72,0x65,0x20,0x74,0x6f,0x20, - 0x6c,0x65,0x61,0x76,0x65,0x20,0x65,0x76,0x65,0x72,0x79,0x20,0x63,0x61,0x6c,0x6c, - 0x77,0x6f,0x72,0x64,0x20,0x69,0x6e,0x20,0x69,0x74,0x73,0x20,0x6f,0x77,0x6e,0x20, - 0x6c,0x69,0x6e,0x65,0x21,0x3c,0x62,0x72,0x3e,0x44,0x6f,0x20,0x6e,0x6f,0x74,0x20, - 0x6c,0x65,0x61,0x76,0x65,0x20,0x61,0x20,0x6c,0x69,0x6e,0x65,0x20,0x77,0x69,0x74, - 0x68,0x20,0x61,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x61,0x74,0x20,0x74,0x68,0x65, - 0x20,0x65,0x6e,0x64,0x20,0x2d,0x2d,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c, - 0x20,0x62,0x65,0x20,0x61,0x6c,0x65,0x72,0x74,0x65,0x64,0x20,0x65,0x76,0x65,0x72, - 0x79,0x74,0x69,0x6d,0x65,0x20,0x73,0x6f,0x6d,0x65,0x6f,0x6e,0x65,0x20,0x75,0x73, - 0x65,0x73,0x20,0x61,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x69,0x6e,0x20,0x74,0x68, - 0x65,0x69,0x72,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x73,0x2e,0x3c,0x2f,0x62, - 0x6f,0x64,0x79,0x3e,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x22,0x0,0x50,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0, - 0x74,0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x63,0x0, - 0x74,0x0,0x6f,0x0,0x73,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0xe,0x41,0x6c,0x6c,0x6f,0x77,0x20,0x45,0x66,0x66,0x65,0x63,0x74,0x73,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x2a,0x0,0x50,0x0,0x65,0x0,0x72,0x0, - 0x6d,0x0,0x69,0x0,0x74,0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x73,0x0,0x63,0x0, - 0x72,0x0,0x65,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x68,0x0,0x61,0x0,0x6b,0x0, - 0x65,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x41,0x6c,0x6c, - 0x6f,0x77,0x20,0x53,0x63,0x72,0x65,0x65,0x6e,0x73,0x68,0x61,0x6b,0x65,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xdc,0x0,0x50,0x0,0x65,0x0,0x72,0x0, - 0x6d,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x6f,0x0, - 0x74,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0, - 0x44,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x6f,0x0,0x72,0x0,0x64,0x0,0x20,0x0, - 0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x71,0x0, - 0x75,0x0,0xe9,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0, - 0x64,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0, - 0x73,0x0,0x2c,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0xe9,0x0,0x20,0x0,0x70,0x0, - 0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6a,0x0,0x65,0x0, - 0x20,0x0,0x6a,0x0,0x75,0x0,0x65,0x0,0x67,0x0,0x61,0x0,0x73,0x0,0x20,0x0, - 0x79,0x0,0x20,0x0,0x63,0x0,0x75,0x0,0xe1,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0, - 0x20,0x0,0x74,0x0,0x69,0x0,0x65,0x0,0x6d,0x0,0x70,0x0,0x6f,0x0,0x20,0x0, - 0x68,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0, - 0x64,0x0,0x6f,0x0,0x20,0x0,0x6a,0x0,0x75,0x0,0x67,0x0,0x61,0x0,0x6e,0x0, - 0x64,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7f,0x41, - 0x6c,0x6c,0x6f,0x77,0x73,0x20,0x6f,0x74,0x68,0x65,0x72,0x73,0x20,0x6f,0x6e,0x20, - 0x44,0x69,0x73,0x63,0x6f,0x72,0x64,0x20,0x74,0x6f,0x20,0x73,0x65,0x65,0x20,0x77, - 0x68,0x61,0x74,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x79,0x6f,0x75,0x20,0x61, - 0x72,0x65,0x20,0x69,0x6e,0x2c,0x20,0x77,0x68,0x61,0x74,0x20,0x63,0x68,0x61,0x72, - 0x61,0x63,0x74,0x65,0x72,0x20,0x61,0x72,0x65,0x20,0x79,0x6f,0x75,0x20,0x70,0x6c, - 0x61,0x79,0x69,0x6e,0x67,0x2c,0x20,0x61,0x6e,0x64,0x20,0x68,0x6f,0x77,0x20,0x6c, - 0x6f,0x6e,0x67,0x20,0x79,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x62,0x65,0x65, - 0x6e,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x66,0x6f,0x72,0x2e,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xd6,0x0,0x50,0x0,0x65,0x0,0x72,0x0,0x6d, - 0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x63, - 0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x70, - 0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x61,0x0,0x20, - 0x0,0x28,0x0,0x41,0x0,0x44,0x0,0x56,0x0,0x45,0x0,0x52,0x0,0x54,0x0,0x45, - 0x0,0x4e,0x0,0x43,0x0,0x49,0x0,0x41,0x0,0x3a,0x0,0x20,0x0,0x65,0x0,0x73, - 0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x72,0x0,0xed, - 0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x64,0x0,0x75,0x0,0x63,0x0,0x69, - 0x0,0x72,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x76,0x0,0x75,0x0,0x6c, - 0x0,0x73,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x64, - 0x0,0x65,0x0,0x62,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x20, - 0x0,0x69,0x0,0x6d,0x0,0xe1,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x73, - 0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x70,0x0,0x61,0x0,0x64,0x0,0x65, - 0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x73,0x0,0x29,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x69,0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x73, - 0x63,0x72,0x65,0x65,0x6e,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2e,0x20,0x44, - 0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x74,0x68,0x69,0x73,0x20,0x69,0x66,0x20,0x79, - 0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x63,0x6f,0x6e,0x63,0x65,0x72,0x6e,0x73, - 0x20,0x6f,0x72,0x20,0x69,0x73,0x73,0x75,0x65,0x73,0x20,0x77,0x69,0x74,0x68,0x20, - 0x70,0x68,0x6f,0x74,0x6f,0x73,0x65,0x6e,0x73,0x69,0x74,0x69,0x76,0x69,0x74,0x79, - 0x20,0x61,0x6e,0x64,0x2f,0x6f,0x72,0x20,0x73,0x65,0x69,0x7a,0x75,0x72,0x65,0x73, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xe8,0x0,0x50,0x0,0x65,0x0, - 0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6c,0x0, - 0x20,0x0,0x6d,0x0,0x6f,0x0,0x76,0x0,0x69,0x0,0x6d,0x0,0x69,0x0,0x65,0x0, - 0x6e,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x6c,0x0, - 0x61,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x6c,0x0, - 0x6c,0x0,0x61,0x0,0x20,0x0,0x28,0x0,0x41,0x0,0x44,0x0,0x56,0x0,0x45,0x0, - 0x52,0x0,0x54,0x0,0x45,0x0,0x4e,0x0,0x43,0x0,0x49,0x0,0x41,0x0,0x3a,0x0, - 0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x6f,0x0, - 0x64,0x0,0x72,0x0,0xed,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x64,0x0, - 0x75,0x0,0x63,0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0, - 0x76,0x0,0x75,0x0,0x6c,0x0,0x73,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0, - 0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x62,0x0,0x69,0x0,0x64,0x0,0x6f,0x0, - 0x20,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6d,0x0,0xe1,0x0,0x67,0x0,0x65,0x0, - 0x6e,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x70,0x0, - 0x61,0x0,0x64,0x0,0x65,0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x73,0x0, - 0x29,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x68,0x41,0x6c,0x6c, - 0x6f,0x77,0x73,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x73,0x68,0x61,0x6b,0x69,0x6e, - 0x67,0x2e,0x20,0x44,0x69,0x73,0x61,0x62,0x6c,0x65,0x20,0x74,0x68,0x69,0x73,0x20, - 0x69,0x66,0x20,0x79,0x6f,0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x63,0x6f,0x6e,0x63, - 0x65,0x72,0x6e,0x73,0x20,0x6f,0x72,0x20,0x69,0x73,0x73,0x75,0x65,0x73,0x20,0x77, - 0x69,0x74,0x68,0x20,0x70,0x68,0x6f,0x74,0x6f,0x73,0x65,0x6e,0x73,0x69,0x74,0x69, - 0x76,0x69,0x74,0x79,0x20,0x61,0x6e,0x64,0x2f,0x6f,0x72,0x20,0x73,0x65,0x69,0x7a, - 0x75,0x72,0x65,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa,0x0, - 0x41,0x0,0x75,0x0,0x64,0x0,0x69,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x5,0x41,0x75,0x64,0x69,0x6f,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x18,0x0,0x44,0x0,0x69,0x0,0x73,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x69, - 0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xd,0x41,0x75,0x64,0x69,0x6f,0x20,0x64,0x65,0x76,0x69,0x63,0x65, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x28,0x0,0x52,0x0,0x65,0x0, - 0x67,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x72,0x0,0x6f,0x0,0x20,0x0,0x61,0x0, - 0x75,0x0,0x74,0x0,0x6f,0x0,0x6d,0x0,0xe1,0x0,0x74,0x0,0x69,0x0,0x63,0x0, - 0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x12,0x41,0x75,0x74, - 0x6f,0x6d,0x61,0x74,0x69,0x63,0x20,0x4c,0x6f,0x67,0x67,0x69,0x6e,0x67,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x4d,0x0,0x61,0x0,0x73,0x0, - 0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x53,0x0,0x56,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x70,0x0,0x61,0x0,0x6c,0x0, - 0x64,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x42, - 0x61,0x63,0x6b,0x75,0x70,0x20,0x4d,0x53,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x20,0x0,0x42,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x73,0x0,0x20,0x0, - 0x65,0x0,0x6e,0x0,0x20,0x0,0x62,0x0,0x6c,0x0,0x61,0x0,0x6e,0x0,0x63,0x0, - 0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x42,0x6c,0x61, - 0x6e,0x6b,0x20,0x62,0x6c,0x69,0x70,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x1c,0x0,0x54,0x0,0x61,0x0,0x73,0x0,0x61,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x20,0x0,0x62,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x73,0x0,0x3a,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x42,0x6c,0x69,0x70,0x20,0x72,0x61, - 0x74,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x42,0x0, - 0x6c,0x0,0x69,0x0,0x70,0x0,0x73,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x6,0x42,0x6c,0x69,0x70,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x6,0x0,0x43,0x0,0x4d,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x3,0x43,0x4d,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1c, - 0x0,0x50,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x62,0x0,0x72,0x0,0x61,0x0,0x73, - 0x0,0x20,0x0,0x63,0x0,0x6c,0x0,0x61,0x0,0x76,0x0,0x65,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x9,0x43,0x61,0x6c,0x6c,0x77,0x6f,0x72,0x64,0x73,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x8,0x0,0x43,0x0,0x61,0x0,0x73,0x0, - 0x6f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x61,0x73,0x69,0x6e, - 0x67,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa,0x0,0x43,0x0,0x61,0x0, - 0x73,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x43, - 0x61,0x73,0x69,0x6e,0x67,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x34, - 0x0,0x43,0x0,0x6f,0x0,0x6c,0x0,0x6f,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x20, - 0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x72,0x0,0x65, - 0x0,0x67,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x72,0x0,0x6f,0x0,0x20,0x0,0x49, - 0x0,0x43,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x43,0x6f, - 0x6c,0x6f,0x72,0x73,0x20,0x69,0x6e,0x20,0x49,0x43,0x20,0x4c,0x6f,0x67,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x32,0x0,0x43,0x0,0x68,0x0,0x61,0x0, - 0x74,0x0,0x62,0x0,0x6f,0x0,0x78,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x70,0x0, - 0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x69,0x0, - 0x7a,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x11,0x43,0x75,0x73,0x74,0x6f,0x6d,0x20,0x43,0x68,0x61,0x74, - 0x62,0x6f,0x78,0x65,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x20, - 0x0,0x4d,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x72,0x0,0x20, - 0x0,0x6e,0x0,0x6f,0x0,0x6d,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x3a, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x43,0x75,0x73,0x74,0x6f,0x6d, - 0x20,0x73,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x2e,0x0,0x55,0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x72,0x0, - 0x69,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x64,0x0,0x65,0x0, - 0x74,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x6e,0x0,0x61,0x0,0x64,0x0, - 0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11,0x44,0x65,0x66, - 0x61,0x75,0x6c,0x74,0x20,0x75,0x73,0x65,0x72,0x6e,0x61,0x6d,0x65,0x3a,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x10,0x0,0x41,0x0,0x62,0x0,0x6f,0x0,0x67, - 0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x8,0x44,0x65,0x66,0x65,0x6e,0x73,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0x10,0x0,0x44,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x6f,0x0,0x72, - 0x0,0x64,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x44,0x69, - 0x73,0x63,0x6f,0x72,0x64,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74, - 0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x38, - 0x0,0x48,0x0,0x61,0x0,0x62,0x0,0x69,0x0,0x6c,0x0,0x69,0x0,0x74,0x0,0x61, - 0x0,0x72,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x70,0x0,0x65,0x0,0x74,0x0,0x69, - 0x0,0x63,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0x53,0x0,0x46,0x0,0x58,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x13,0x45,0x6e,0x61,0x62,0x6c,0x65,0x20,0x4c,0x6f,0x6f,0x70,0x69,0x6e,0x67, - 0x20,0x53,0x46,0x58,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x16,0x0, - 0x4a,0x0,0x75,0x0,0x67,0x0,0x61,0x0,0x62,0x0,0x69,0x0,0x6c,0x0,0x69,0x0, - 0x64,0x0,0x61,0x0,0x64,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x47, - 0x61,0x6d,0x65,0x70,0x6c,0x61,0x79,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1, - 0x48,0x0,0x41,0x0,0x63,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x61,0x0,0x20,0x0, - 0x6c,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x69,0x0,0x6c,0x0, - 0x6c,0x0,0x61,0x0,0x20,0x0,0x27,0x0,0x4d,0x0,0x6f,0x0,0x73,0x0,0x74,0x0, - 0x72,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x6d,0x0,0x62,0x0, - 0x72,0x0,0x65,0x0,0x73,0x0,0x27,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x66,0x0,0x6f,0x0,0x72,0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x72,0x0, - 0x65,0x0,0x64,0x0,0x65,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0, - 0x6e,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0, - 0x65,0x0,0x6c,0x0,0x20,0x0,0x6a,0x0,0x75,0x0,0x65,0x0,0x67,0x0,0x6f,0x0, - 0x2c,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x20,0x0, - 0x73,0x0,0x75,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x7a,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x6e,0x0,0x61,0x0, - 0x20,0x0,0x73,0x0,0x69,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x63,0x0, - 0x6c,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x62,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x73,0x0,0x74,0x0, - 0x72,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x6d,0x0,0x62,0x0, - 0x72,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0, - 0x6f,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x64,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0, - 0x73,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0, - 0x61,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x99,0x47,0x69,0x76,0x65,0x73,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x66, - 0x61,0x75,0x6c,0x74,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x66,0x6f,0x72,0x20,0x74, - 0x68,0x65,0x20,0x69,0x6e,0x2d,0x67,0x61,0x6d,0x65,0x20,0x27,0x43,0x75,0x73,0x74, - 0x6f,0x6d,0x20,0x73,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73,0x27,0x20,0x74,0x69, - 0x63,0x6b,0x62,0x6f,0x78,0x2c,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x69,0x6e,0x20, - 0x74,0x75,0x72,0x6e,0x20,0x64,0x65,0x74,0x65,0x72,0x6d,0x69,0x6e,0x65,0x73,0x20, - 0x77,0x68,0x65,0x74,0x68,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x63,0x6c,0x69,0x65, - 0x6e,0x74,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x64,0x69,0x73,0x70,0x6c,0x61, - 0x79,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x69,0x6e,0x2d,0x63,0x68,0x61,0x72, - 0x61,0x63,0x74,0x65,0x72,0x20,0x6e,0x61,0x6d,0x65,0x73,0x2e,0x7,0x0,0x0,0x0, - 0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67, - 0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x43,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x73, - 0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x48,0x6f,0x73,0x74, - 0x69,0x6e,0x67,0x20,0x63,0x61,0x73,0x65,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x0,0xaa,0x0,0x53,0x0,0x69,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74, - 0x0,0xe1,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64, - 0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x64,0x0,0x6f,0x0,0x73, - 0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x67, - 0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x73, - 0x0,0x65,0x0,0x20,0x0,0x67,0x0,0x75,0x0,0x61,0x0,0x72,0x0,0x64,0x0,0x61, - 0x0,0x72,0x0,0xe1,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x6f, - 0x0,0x6d,0x0,0xe1,0x0,0x74,0x0,0x69,0x0,0x63,0x0,0x61,0x0,0x6d,0x0,0x65, - 0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x6c, - 0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x70,0x0,0x65,0x0,0x74, - 0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x67,0x0,0x73,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x47,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b, - 0x65,0x64,0x2c,0x20,0x61,0x6c,0x6c,0x20,0x6c,0x6f,0x67,0x73,0x20,0x77,0x69,0x6c, - 0x6c,0x20,0x62,0x65,0x20,0x61,0x75,0x74,0x6f,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c, - 0x6c,0x79,0x20,0x77,0x72,0x69,0x74,0x74,0x65,0x6e,0x20,0x69,0x6e,0x20,0x74,0x68, - 0x65,0x20,0x2f,0x6c,0x6f,0x67,0x73,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x80,0x0,0x53,0x0,0x69,0x0,0x20,0x0, - 0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0, - 0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x61,0x0,0x70,0x0, - 0x61,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x72,0x0,0xe1,0x0,0x20,0x0, - 0x65,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0, - 0x73,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x69,0x0,0x62,0x0,0x6c,0x0, - 0x65,0x0,0x73,0x0,0x20,0x0,0x43,0x0,0x4d,0x0,0x20,0x0,0x65,0x0,0x6e,0x0, - 0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0, - 0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x44,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79, - 0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x20,0x61, - 0x6d,0x6f,0x6e,0x67,0x73,0x74,0x20,0x74,0x68,0x65,0x20,0x70,0x6f,0x74,0x65,0x6e, - 0x74,0x69,0x61,0x6c,0x20,0x43,0x4d,0x73,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20, - 0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0xb6,0x0,0x53,0x0,0x69,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0, - 0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0, - 0x2c,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x62,0x0,0x69,0x0, - 0x72,0x0,0xe1,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x74,0x0, - 0x61,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x62,0x0,0x72,0x0,0x65,0x0, - 0x20,0x0,0x61,0x0,0x6e,0x0,0x75,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x6f,0x0, - 0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x20,0x0,0x68,0x0,0x61,0x0, - 0x79,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x6c,0x0,0x75,0x0,0x67,0x0, - 0x61,0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x62,0x0, - 0x6f,0x0,0x67,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6c,0x0,0x69,0x0, - 0x62,0x0,0x72,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x53,0x49,0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75, - 0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73, - 0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f, - 0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x61,0x20,0x64, - 0x65,0x66,0x65,0x6e,0x73,0x65,0x20,0x73,0x70,0x6f,0x74,0x20,0x69,0x73,0x20,0x6f, - 0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xb6,0x0,0x53, - 0x0,0x69,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x20,0x0,0x6d, - 0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20, - 0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x62,0x0,0x69,0x0,0x72,0x0,0xe1, - 0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x61,0x0,0x73, - 0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x61, - 0x0,0x6e,0x0,0x75,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x73, - 0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x79,0x0,0x20, - 0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x70,0x0,0x75,0x0,0x65,0x0,0x73,0x0,0x74, - 0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x6a,0x0,0x75,0x0,0x72, - 0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x62,0x0,0x72, - 0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x51,0x49,0x66, - 0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69, - 0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62, - 0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63, - 0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x61,0x20,0x6a,0x75,0x72,0x6f, - 0x72,0x20,0x73,0x70,0x6f,0x74,0x20,0x69,0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xb6,0x0,0x53,0x0,0x69,0x0,0x20,0x0, - 0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0, - 0x63,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x2c,0x0,0x20,0x0,0x72,0x0,0x65,0x0, - 0x63,0x0,0x69,0x0,0x62,0x0,0x69,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x61,0x0, - 0x6c,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x73,0x0, - 0x6f,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x75,0x0, - 0x6e,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x73,0x0, - 0x69,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x79,0x0,0x20,0x0,0x75,0x0,0x6e,0x0, - 0x20,0x0,0x70,0x0,0x75,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x20,0x0,0x66,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x61,0x0, - 0x6c,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x56,0x49,0x66,0x20,0x63,0x68,0x65,0x63, - 0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c,0x20,0x67,0x65, - 0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63, - 0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x6d,0x65,0x6e,0x74, - 0x73,0x20,0x69,0x66,0x20,0x61,0x20,0x70,0x72,0x6f,0x73,0x65,0x63,0x75,0x74,0x6f, - 0x72,0x20,0x73,0x70,0x6f,0x74,0x20,0x69,0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xbc,0x0,0x53,0x0,0x69,0x0,0x20,0x0, - 0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0, - 0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x72,0x0,0x65,0x0, - 0x63,0x0,0x69,0x0,0x62,0x0,0x69,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x61,0x0, - 0x6c,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x73,0x0, - 0x6f,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x75,0x0, - 0x6e,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x73,0x0, - 0x69,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x79,0x0,0x20,0x0,0x75,0x0,0x6e,0x0, - 0x20,0x0,0x6c,0x0,0x75,0x0,0x67,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x20,0x0,0x74,0x0,0x61,0x0,0x71,0x0,0x75,0x0,0xed,0x0,0x67,0x0, - 0x72,0x0,0x61,0x0,0x66,0x0,0x6f,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x62,0x0, - 0x72,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x58,0x49, - 0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77, - 0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61, - 0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e, - 0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x61,0x20,0x73,0x74,0x65, - 0x6e,0x6f,0x67,0x72,0x61,0x70,0x68,0x65,0x72,0x20,0x73,0x70,0x6f,0x74,0x20,0x69, - 0x73,0x20,0x6f,0x70,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0xb4,0x0,0x53,0x0,0x69,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0, - 0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0, - 0x2c,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x62,0x0,0x69,0x0, - 0x72,0x0,0xe1,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x74,0x0, - 0x61,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x62,0x0,0x72,0x0,0x65,0x0, - 0x20,0x0,0x61,0x0,0x6e,0x0,0x75,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x6f,0x0, - 0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x20,0x0,0x65,0x0,0x6c,0x0, - 0x20,0x0,0x70,0x0,0x75,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x20,0x0,0x6a,0x0,0x75,0x0,0x65,0x0,0x7a,0x0,0x20,0x0, - 0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x62,0x0, - 0x72,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x53,0x49, - 0x66,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77, - 0x69,0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61, - 0x62,0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e, - 0x63,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x20,0x6a, - 0x75,0x64,0x67,0x65,0x20,0x73,0x70,0x6f,0x74,0x20,0x69,0x73,0x20,0x6f,0x70,0x65, - 0x6e,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x58,0x0,0x53,0x0,0x69, - 0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x20,0x0,0x6d,0x0,0x61, - 0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x72, - 0x0,0x65,0x0,0x63,0x0,0x69,0x0,0x62,0x0,0x69,0x0,0x72,0x0,0xe1,0x0,0x20, - 0x0,0x61,0x0,0x6e,0x0,0x75,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x73, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f, - 0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x39,0x49,0x66, - 0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x79,0x6f,0x75,0x20,0x77,0x69, - 0x6c,0x6c,0x20,0x67,0x65,0x74,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x61,0x62, - 0x6f,0x75,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63, - 0x65,0x6d,0x65,0x6e,0x74,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0xc2,0x0,0x53,0x0,0x69,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x6c,0x0, - 0x69,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0, - 0x65,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x64,0x0,0x65,0x0, - 0x74,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x6e,0x0,0x61,0x0,0x64,0x0, - 0x61,0x0,0x20,0x0,0x66,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x61,0x0,0x2c,0x0, - 0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x6a,0x0,0x75,0x0,0x65,0x0,0x67,0x0, - 0x6f,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x62,0x0,0x61,0x0,0x72,0x0, - 0xe1,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x72,0x0, - 0x65,0x0,0x63,0x0,0x63,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0,0x70,0x0, - 0x72,0x0,0x6f,0x0,0x70,0x0,0x6f,0x0,0x72,0x0,0x63,0x0,0x69,0x0,0x6f,0x0, - 0x6e,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x71,0x0,0x75,0x0, - 0xed,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7b,0x49,0x66,0x20, - 0x74,0x68,0x65,0x20,0x62,0x75,0x69,0x6c,0x74,0x2d,0x69,0x6e,0x20,0x73,0x65,0x72, - 0x76,0x65,0x72,0x20,0x6c,0x6f,0x6f,0x6b,0x75,0x70,0x73,0x20,0x66,0x61,0x69,0x6c, - 0x2c,0x20,0x74,0x68,0x65,0x20,0x67,0x61,0x6d,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20, - 0x74,0x72,0x79,0x20,0x74,0x68,0x65,0x20,0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x20, - 0x67,0x69,0x76,0x65,0x6e,0x20,0x68,0x65,0x72,0x65,0x20,0x61,0x6e,0x64,0x20,0x75, - 0x73,0x65,0x20,0x69,0x74,0x20,0x61,0x73,0x20,0x61,0x20,0x62,0x61,0x63,0x6b,0x75, - 0x70,0x20,0x6d,0x61,0x73,0x74,0x65,0x72,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20, - 0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0xa6,0x0,0x53,0x0,0x69,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1, - 0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f, - 0x0,0x2c,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x67, - 0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x72,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x6f, - 0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x72,0x0,0xe1,0x0,0x20, - 0x0,0x75,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63, - 0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x74,0x0,0x69,0x0,0x65, - 0x0,0x6d,0x0,0x70,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x55, - 0x0,0x54,0x0,0x43,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x73, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x6d, - 0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x3f,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x6c,0x6f,0x67, - 0x20,0x77,0x69,0x6c,0x6c,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x20,0x61,0x20, - 0x74,0x69,0x6d,0x65,0x73,0x74,0x61,0x6d,0x70,0x20,0x69,0x6e,0x20,0x55,0x54,0x43, - 0x20,0x62,0x65,0x66,0x6f,0x72,0x65,0x20,0x74,0x68,0x65,0x20,0x6e,0x61,0x6d,0x65, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xb0,0x0,0x53,0x0,0x69,0x0, - 0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x20,0x0,0x6d,0x0,0x61,0x0, - 0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x6c,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x6e,0x0,0x75,0x0,0x65,0x0,0x76,0x0,0x6f,0x0, - 0x73,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x6a,0x0, - 0x65,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x65,0x0, - 0x63,0x0,0x65,0x0,0x72,0x0,0xe1,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x6e,0x0, - 0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x74,0x0, - 0x65,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x66,0x0,0x65,0x0,0x72,0x0,0x69,0x0, - 0x6f,0x0,0x72,0x0,0x20,0x0,0x28,0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x0, - 0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x74,0x0, - 0x20,0x0,0x4f,0x0,0x4f,0x0,0x43,0x0,0x29,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x8f,0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20, - 0x6e,0x65,0x77,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x73,0x20,0x77,0x69,0x6c, - 0x6c,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x20,0x61,0x74,0x20,0x74,0x68,0x65,0x20, - 0x62,0x6f,0x74,0x74,0x6f,0x6d,0x20,0x28,0x6c,0x69,0x6b,0x65,0x20,0x74,0x68,0x65, - 0x20,0x4f,0x4f,0x43,0x20,0x63,0x68,0x61,0x74,0x6c,0x6f,0x67,0x29,0x2e,0x20,0x54, - 0x68,0x65,0x20,0x74,0x72,0x61,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x20,0x28, - 0x41,0x4f,0x31,0x29,0x20,0x62,0x65,0x68,0x61,0x76,0x69,0x6f,0x75,0x72,0x20,0x69, - 0x73,0x20,0x65,0x71,0x75,0x69,0x76,0x61,0x6c,0x65,0x6e,0x74,0x20,0x74,0x6f,0x20, - 0x74,0x68,0x69,0x73,0x20,0x62,0x65,0x69,0x6e,0x67,0x20,0x75,0x6e,0x74,0x69,0x63, - 0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x1,0x68,0x0,0x53, - 0x0,0x69,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72, - 0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x6c,0x0,0x6f, - 0x0,0x73,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x6a, - 0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x6e,0x0,0x75,0x0,0x65,0x0,0x76,0x0,0x6f, - 0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x65,0x0,0x63, - 0x0,0x65,0x0,0x72,0x0,0xe1,0x0,0x6e,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x70, - 0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x2c,0x0,0x20, - 0x0,0x79,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e, - 0x0,0x73,0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x70,0x0,0x61, - 0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x65, - 0x0,0x6e,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x67, - 0x0,0x75,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x6c, - 0x0,0xed,0x0,0x6e,0x0,0x65,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73, - 0x0,0x70,0x0,0x75,0x0,0xe9,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6c, - 0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x6d,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x2e, - 0x0,0x20,0x0,0x43,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20, - 0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73, - 0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c, - 0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x65,0x0,0x73, - 0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x6f, - 0x0,0x20,0x0,0x27,0x0,0x6e,0x0,0x6f,0x0,0x6d,0x0,0x62,0x0,0x72,0x0,0x65, - 0x0,0x3a,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x6a, - 0x0,0x65,0x0,0x27,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x99, - 0x49,0x66,0x20,0x74,0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x6e,0x65,0x77,0x20,0x6d, - 0x65,0x73,0x73,0x61,0x67,0x65,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x61,0x70,0x70, - 0x65,0x61,0x72,0x20,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x64,0x2c,0x20,0x77, - 0x69,0x74,0x68,0x20,0x74,0x68,0x65,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20, - 0x63,0x6f,0x6d,0x69,0x6e,0x67,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x6e,0x65, - 0x78,0x74,0x20,0x6c,0x69,0x6e,0x65,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x74,0x68, - 0x65,0x20,0x6e,0x61,0x6d,0x65,0x2e,0x20,0x57,0x68,0x65,0x6e,0x20,0x75,0x6e,0x74, - 0x69,0x63,0x6b,0x65,0x64,0x2c,0x20,0x69,0x74,0x20,0x64,0x69,0x73,0x70,0x6c,0x61, - 0x79,0x73,0x20,0x69,0x74,0x20,0x61,0x73,0x20,0x27,0x6e,0x61,0x6d,0x65,0x3a,0x20, - 0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x27,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0xce,0x0,0x53,0x0,0x69,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0xe1,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x62,0x0,0x69,0x0,0x6c,0x0,0x69,0x0, - 0x74,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x65,0x0,0x6c,0x0, - 0x20,0x0,0x6a,0x0,0x75,0x0,0x65,0x0,0x67,0x0,0x6f,0x0,0x20,0x0,0x70,0x0, - 0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x69,0x0,0x72,0x0,0xe1,0x0, - 0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0, - 0x72,0x0,0x65,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x64,0x0,0x75,0x0,0x7a,0x0, - 0x63,0x0,0x61,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x63,0x0, - 0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0, - 0x6f,0x0,0x6e,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x6e,0x0, - 0x20,0x0,0x62,0x0,0x75,0x0,0x63,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x6e,0x0,0x69,0x0, - 0x6d,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x73,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4c,0x49,0x66,0x20,0x74,0x72, - 0x75,0x65,0x2c,0x20,0x74,0x68,0x65,0x20,0x67,0x61,0x6d,0x65,0x20,0x77,0x69,0x6c, - 0x6c,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x20,0x6c,0x6f,0x6f,0x70,0x69,0x6e,0x67,0x20, - 0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20,0x74,0x6f, - 0x20,0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e,0x20,0x70,0x72,0x65,0x61,0x6e,0x69,0x6d, - 0x61,0x74,0x69,0x6f,0x6e,0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70, - 0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0, - 0xb2,0x0,0x53,0x0,0x69,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0, - 0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x61,0x0, - 0x2c,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x6a,0x0,0x75,0x0,0x65,0x0, - 0x67,0x0,0x6f,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x70,0x0,0x72,0x0,0x6f,0x0, - 0x64,0x0,0x75,0x0,0x63,0x0,0x69,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x75,0x0, - 0x6e,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x69,0x0,0x64,0x0,0x6f,0x0, - 0x20,0x0,0x62,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x20,0x0,0x69,0x0,0x6e,0x0, - 0x63,0x0,0x6c,0x0,0x75,0x0,0x73,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x75,0x0, - 0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0, - 0x27,0x0,0x64,0x0,0x69,0x0,0x63,0x0,0x65,0x0,0x27,0x0,0x20,0x0,0x75,0x0, - 0x6e,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x70,0x0,0x61,0x0,0x63,0x0,0x69,0x0, - 0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4b,0x49,0x66,0x20, - 0x74,0x72,0x75,0x65,0x2c,0x20,0x74,0x68,0x65,0x20,0x67,0x61,0x6d,0x65,0x20,0x77, - 0x69,0x6c,0x6c,0x20,0x70,0x6c,0x61,0x79,0x20,0x61,0x20,0x62,0x6c,0x69,0x70,0x20, - 0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x76,0x65,0x6e,0x20,0x77,0x68,0x65,0x6e,0x20, - 0x61,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x69,0x73,0x20,0x27,0x62,0x65,0x69,0x6e, - 0x67,0x20,0x73,0x61,0x69,0x64,0x27,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x7a,0x0,0x53,0x0,0x69,0x0,0x20,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x73, - 0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x43,0x0,0x4d,0x0,0x2c,0x0,0x20, - 0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x61,0x0,0x20, - 0x0,0x71,0x0,0x75,0x0,0xe9,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f, - 0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe1,0x0,0x73,0x0,0x20, - 0x0,0x64,0x0,0x69,0x0,0x73,0x0,0x70,0x0,0x75,0x0,0x65,0x0,0x73,0x0,0x74, - 0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x6f,0x0,0x72,0x0,0x67,0x0,0x61, - 0x0,0x6e,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x39,0x49,0x66,0x20,0x79,0x6f,0x75,0x27,0x72,0x65,0x20, - 0x61,0x20,0x43,0x4d,0x2c,0x20,0x65,0x6e,0x74,0x65,0x72,0x20,0x77,0x68,0x61,0x74, - 0x20,0x63,0x61,0x73,0x65,0x73,0x20,0x79,0x6f,0x75,0x20,0x61,0x72,0x65,0x20,0x77, - 0x69,0x6c,0x6c,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x68,0x6f,0x73,0x74,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa,0x0,0x4a,0x0,0x75,0x0,0x65,0x0, - 0x7a,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4a,0x75,0x64, - 0x67,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x4a,0x0, - 0x75,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x6,0x4a,0x75,0x72,0x6f,0x72,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x36,0x0,0x50,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x72,0x0, - 0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0xfa,0x0,0x73,0x0,0x69,0x0, - 0x63,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x6f,0x0,0x62,0x0, - 0x6a,0x0,0x65,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x3a,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x18,0x4b,0x69,0x6c,0x6c,0x20,0x4d,0x75,0x73,0x69,0x63,0x20, - 0x4f,0x6e,0x20,0x4f,0x62,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x49,0x0,0x64,0x0,0x69,0x0,0x6f,0x0, - 0x6d,0x0,0x61,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x4c, - 0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f, - 0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0, - 0x0,0x2c,0x0,0x49,0x0,0x6e,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x69, - 0x0,0x72,0x0,0x20,0x0,0x68,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x72, - 0x0,0x69,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x3a,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x4c,0x6f,0x67,0x20,0x67,0x6f,0x65,0x73, - 0x20,0x64,0x6f,0x77,0x6e,0x77,0x61,0x72,0x64,0x73,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x2a,0x0,0x4c,0x0,0x69,0x0,0x6d,0x0,0x69,0x0,0x74,0x0, - 0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x68,0x0,0x69,0x0, - 0x73,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x69,0x0,0x61,0x0,0x6c,0x0,0x3a,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x4c,0x6f,0x67,0x20,0x6c,0x65,0x6e, - 0x67,0x74,0x68,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x1c,0x0,0x4d, - 0x0,0x61,0x0,0x72,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x67,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xb,0x4c,0x6f,0x67,0x20,0x6d,0x61,0x72,0x67,0x69,0x6e,0x3a,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x26,0x0,0x4e,0x0,0x75,0x0,0x65,0x0, - 0x76,0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0xed,0x0,0x6e,0x0,0x65,0x0,0x61,0x0, - 0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x67,0x0,0x3a,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x4c,0x6f,0x67,0x20,0x6e,0x65,0x77, - 0x6c,0x69,0x6e,0x65,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x2e,0x0, - 0x4d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x20,0x0,0x74,0x0,0x69,0x0,0x65,0x0,0x6d,0x0,0x70,0x0,0x6f,0x0,0x20,0x0, - 0x65,0x0,0x6e,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x67,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x4c,0x6f,0x67,0x20,0x74,0x69,0x6d,0x65,0x73, - 0x74,0x61,0x6d,0x70,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xe,0x0, - 0x4d,0x0,0xfa,0x0,0x73,0x0,0x69,0x0,0x63,0x0,0x61,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4d,0x75,0x73,0x69,0x63,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x36,0x0,0x45,0x0,0x6e,0x0,0x76,0x0,0x69,0x0, - 0x61,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x73,0x0,0x65,0x0, - 0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x16,0x4e,0x65,0x74,0x77,0x6f,0x72,0x6b,0x20,0x46, - 0x72,0x61,0x6d,0x65,0x20,0x45,0x66,0x66,0x65,0x63,0x74,0x73,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0xac,0x0,0x52,0x0,0x65,0x0,0x70,0x0,0x72,0x0, - 0x6f,0x0,0x64,0x0,0x75,0x0,0x63,0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x6e,0x0, - 0x20,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x20,0x0,0x62,0x0,0x6c,0x0,0x69,0x0,0x70,0x0,0x20,0x0, - 0x22,0x0,0x75,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x7a,0x0, - 0x20,0x0,0x70,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x64,0x0, - 0x61,0x0,0x20,0x0,0x58,0x0,0x20,0x0,0x73,0x0,0xed,0x0,0x6d,0x0,0x62,0x0, - 0x6f,0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x22,0x0,0x2c,0x0,0x20,0x0,0x64,0x0, - 0x6f,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x58,0x0,0x20,0x0,0x65,0x0, - 0x73,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x74,0x0,0x61,0x0,0x73,0x0, - 0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x62,0x0,0x6c,0x0,0x69,0x0, - 0x70,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x47,0x50,0x6c,0x61, - 0x79,0x20,0x61,0x20,0x62,0x6c,0x69,0x70,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x22, - 0x6f,0x6e,0x63,0x65,0x20,0x70,0x65,0x72,0x20,0x65,0x76,0x65,0x72,0x79,0x20,0x58, - 0x20,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x22,0x2c,0x20,0x77,0x68,0x65,0x72,0x65, - 0x20,0x58,0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20,0x62,0x6c,0x69,0x70,0x20,0x72, - 0x61,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x32,0x0,0x42, - 0x0,0x61,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20, - 0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x6f,0x0,0x65,0x0,0x78,0x0,0x70,0x0,0x6c, - 0x0,0x69,0x0,0x63,0x0,0x61,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x18,0x50,0x72,0x65,0x74,0x74,0x79, - 0x20,0x73,0x65,0x6c,0x66,0x2d,0x65,0x78,0x70,0x6c,0x61,0x6e,0x61,0x74,0x6f,0x72, - 0x79,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x46,0x0,0x69, - 0x0,0x73,0x0,0x63,0x0,0x61,0x0,0x6c,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0xc,0x50,0x72,0x6f,0x73,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xaa,0x0,0x41,0x0,0x63,0x0,0x74, - 0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x20,0x0,0x65, - 0x0,0x6c,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x79, - 0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x6c, - 0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x6d,0x0,0x65, - 0x0,0x6e,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72, - 0x0,0x66,0x0,0x61,0x0,0x7a,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x75, - 0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x20,0x0,0x70, - 0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20, - 0x0,0x63,0x0,0x6f,0x0,0x69,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x64,0x0,0x61, - 0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3d,0x52,0x65, - 0x66,0x72,0x65,0x73,0x68,0x20,0x74,0x68,0x65,0x20,0x74,0x68,0x65,0x6d,0x65,0x20, - 0x61,0x6e,0x64,0x20,0x75,0x70,0x64,0x61,0x74,0x65,0x20,0x61,0x6c,0x6c,0x20,0x6f, - 0x66,0x20,0x74,0x68,0x65,0x20,0x75,0x69,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74, - 0x73,0x20,0x74,0x6f,0x20,0x6d,0x61,0x74,0x63,0x68,0x2e,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x0,0x8,0x0,0x53,0x0,0x46,0x0,0x58,0x0,0x3a,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x53,0x46,0x58,0x3a,0x7,0x0,0x0,0x0,0xf, - 0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1, - 0x3,0x0,0x0,0x1,0x3a,0x0,0x45,0x0,0x6e,0x0,0x76,0x0,0xed,0x0,0x65,0x0, - 0x20,0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x62,0x0,0x6c,0x0,0x6f,0x0,0x72,0x0, - 0x65,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x61,0x0, - 0x6e,0x0,0x74,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x61,0x0,0x2c,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x6f,0x0, - 0x73,0x0,0x20,0x0,0x79,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x69,0x0, - 0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x0, - 0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0, - 0x6e,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x63,0x0,0x68,0x0, - 0x61,0x0,0x72,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x20,0x0,0x61,0x0, - 0x20,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x76,0x0,0xe9,0x0,0x73,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x72,0x0,0x65,0x0, - 0x64,0x0,0x2e,0x0,0x20,0x0,0x53,0x0,0x6f,0x0,0x6c,0x0,0x6f,0x0,0x20,0x0, - 0x66,0x0,0x75,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0, - 0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x65,0x0, - 0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x65,0x0,0x73,0x0, - 0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x64,0x0,0x6d,0x0, - 0x69,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x61,0x0,0x20,0x0,0x66,0x0,0x75,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x6f,0x0, - 0x6e,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x64,0x0,0x61,0x0,0x64,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8c,0x53,0x65,0x6e,0x64,0x20,0x73,0x63, - 0x72,0x65,0x65,0x6e,0x2d,0x73,0x68,0x61,0x6b,0x69,0x6e,0x67,0x2c,0x20,0x66,0x6c, - 0x61,0x73,0x68,0x65,0x73,0x20,0x61,0x6e,0x64,0x20,0x73,0x6f,0x75,0x6e,0x64,0x73, - 0x20,0x61,0x73,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x69,0x6e,0x20,0x74, - 0x68,0x65,0x20,0x63,0x68,0x61,0x72,0x2e,0x69,0x6e,0x69,0x20,0x6f,0x76,0x65,0x72, - 0x20,0x74,0x68,0x65,0x20,0x6e,0x65,0x74,0x77,0x6f,0x72,0x6b,0x2e,0x20,0x4f,0x6e, - 0x6c,0x79,0x20,0x77,0x6f,0x72,0x6b,0x73,0x20,0x66,0x6f,0x72,0x20,0x73,0x65,0x72, - 0x76,0x65,0x72,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72, - 0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x61, - 0x6c,0x69,0x74,0x79,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xe2,0x0, - 0x45,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x63,0x0, - 0x65,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x6c,0x0, - 0x75,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0, - 0x64,0x0,0x65,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x6e,0x0, - 0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x53,0x0, - 0x46,0x0,0x58,0x0,0x2e,0x0,0x20,0x0,0x4c,0x0,0x61,0x0,0x73,0x0,0x20,0x0, - 0x69,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6a,0x0,0x65,0x0,0x63,0x0, - 0x63,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x79,0x0, - 0x20,0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0, - 0x63,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x73,0x0,0x6f,0x0,0x6e,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x72,0x0, - 0x65,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x63,0x0,0x75,0x0, - 0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x20,0x0,0x63,0x0,0x6f,0x0, - 0x6d,0x0,0x6f,0x0,0x20,0x0,0x27,0x0,0x53,0x0,0x46,0x0,0x58,0x0,0x27,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x55,0x53,0x65,0x74,0x73,0x20, - 0x74,0x68,0x65,0x20,0x53,0x46,0x58,0x27,0x73,0x20,0x64,0x65,0x66,0x61,0x75,0x6c, - 0x74,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x2e,0x20,0x49,0x6e,0x74,0x65,0x72,0x6a, - 0x65,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0x61,0x6e,0x64,0x20,0x61,0x63,0x74,0x75, - 0x61,0x6c,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73, - 0x20,0x63,0x6f,0x75,0x6e,0x74,0x20,0x61,0x73,0x20,0x27,0x53,0x46,0x58,0x27,0x2e, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x44,0x0,0x45,0x0,0x73,0x0,0x74, - 0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x20,0x0,0x65, - 0x0,0x6c,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x73,0x0,0x70,0x0,0x6f,0x0,0x73, - 0x0,0x69,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x64,0x0,0x69,0x0,0x6f,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x25,0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65, - 0x20,0x61,0x75,0x64,0x69,0x6f,0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x20,0x66,0x6f, - 0x72,0x20,0x61,0x6c,0x6c,0x20,0x73,0x6f,0x75,0x6e,0x64,0x73,0x2e,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x7e,0x0,0x45,0x0,0x73,0x0,0x74,0x0,0x61,0x0, - 0x62,0x0,0x6c,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6c,0x0, - 0x20,0x0,0x72,0x0,0x65,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x73,0x0,0x6f,0x0, - 0x20,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x6c,0x0, - 0x61,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x64,0x0, - 0x75,0x0,0x63,0x0,0x63,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x6f,0x0, - 0x6e,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x62,0x0,0x6c,0x0, - 0x69,0x0,0x70,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2f,0x53, - 0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x6c,0x61,0x79,0x20,0x62,0x65, - 0x74,0x77,0x65,0x65,0x6e,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x74,0x68, - 0x65,0x20,0x62,0x6c,0x69,0x70,0x20,0x73,0x6f,0x75,0x6e,0x64,0x73,0x2e,0x7,0x0, - 0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c, - 0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x82,0x0,0x45,0x0,0x73,0x0,0x74,0x0,0x61, - 0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6c, - 0x0,0x20,0x0,0x69,0x0,0x64,0x0,0x69,0x0,0x6f,0x0,0x6d,0x0,0x61,0x0,0x20, - 0x0,0x73,0x0,0x69,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x73,0x0,0x65,0x0,0x61,0x0,0x20,0x0,0x75,0x0,0x74,0x0,0x69,0x0,0x6c, - 0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20, - 0x0,0x69,0x0,0x64,0x0,0x69,0x0,0x6f,0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x64, - 0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x73, - 0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x40,0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x6c,0x61,0x6e, - 0x67,0x75,0x61,0x67,0x65,0x20,0x69,0x66,0x20,0x79,0x6f,0x75,0x20,0x64,0x6f,0x6e, - 0x27,0x74,0x20,0x77,0x61,0x6e,0x74,0x20,0x74,0x6f,0x20,0x75,0x73,0x65,0x20,0x79, - 0x6f,0x75,0x72,0x20,0x73,0x79,0x73,0x74,0x65,0x6d,0x20,0x6c,0x61,0x6e,0x67,0x75, - 0x61,0x67,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x62,0x0,0x45, - 0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x63,0x0,0x65, - 0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x6c,0x0,0x75, - 0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x64, - 0x0,0x65,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x6e,0x0,0x61, - 0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x6c,0x0,0x61, - 0x0,0x20,0x0,0x6d,0x0,0xfa,0x0,0x73,0x0,0x69,0x0,0x63,0x0,0x61,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x20,0x53,0x65,0x74,0x73,0x20,0x74, - 0x68,0x65,0x20,0x6d,0x75,0x73,0x69,0x63,0x27,0x73,0x20,0x64,0x65,0x66,0x61,0x75, - 0x6c,0x74,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41, - 0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3, - 0x0,0x0,0x1,0xac,0x0,0x45,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x62,0x0,0x6c, - 0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x74, - 0x0,0x65,0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x76,0x0,0x69,0x0,0x73,0x0,0x75, - 0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x75,0x0,0x74,0x0,0x69,0x0,0x6c,0x0,0x69, - 0x0,0x7a,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20, - 0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x6a,0x0,0x75,0x0,0x65,0x0,0x67,0x0,0x6f, - 0x0,0x2e,0x0,0x20,0x0,0x53,0x0,0x69,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20, - 0x0,0x6e,0x0,0x75,0x0,0x65,0x0,0x76,0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x65, - 0x0,0x6d,0x0,0x61,0x0,0x20,0x0,0x74,0x0,0x61,0x0,0x6d,0x0,0x62,0x0,0x69, - 0x0,0xe9,0x0,0x6e,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x6d,0x0,0x62,0x0,0x69, - 0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x61,0x0,0x73,0x0,0x70, - 0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6c, - 0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x62,0x0,0x79,0x0,0x2c,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x62,0x0,0x65,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x76, - 0x0,0x6f,0x0,0x6c,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x20, - 0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x67,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x65, - 0x0,0x6c,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x62,0x0,0x79,0x0,0x20, - 0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65, - 0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x6d, - 0x0,0x62,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x72, - 0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x63, - 0x0,0x74,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x6f, - 0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x69,0x0,0x72,0x0,0x73,0x0,0x65,0x0,0x20, - 0x0,0x61,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72, - 0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x79,0x0,0x20, - 0x0,0x76,0x0,0x6f,0x0,0x6c,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x61, - 0x0,0x6c,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x62,0x0,0x79,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xbb,0x53,0x65,0x74,0x73,0x20,0x74, - 0x68,0x65,0x20,0x74,0x68,0x65,0x6d,0x65,0x20,0x75,0x73,0x65,0x64,0x20,0x69,0x6e, - 0x2d,0x67,0x61,0x6d,0x65,0x2e,0x20,0x49,0x66,0x20,0x74,0x68,0x65,0x20,0x6e,0x65, - 0x77,0x20,0x74,0x68,0x65,0x6d,0x65,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x20, - 0x74,0x68,0x65,0x20,0x6c,0x6f,0x62,0x62,0x79,0x27,0x73,0x20,0x6c,0x6f,0x6f,0x6b, - 0x20,0x61,0x73,0x20,0x77,0x65,0x6c,0x6c,0x2c,0x20,0x79,0x6f,0x75,0x27,0x6c,0x6c, - 0x20,0x6e,0x65,0x65,0x64,0x20,0x74,0x6f,0x20,0x72,0x65,0x6c,0x6f,0x61,0x64,0x20, - 0x74,0x68,0x65,0x20,0x6c,0x6f,0x62,0x62,0x79,0x20,0x66,0x6f,0x72,0x20,0x74,0x68, - 0x65,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x20,0x74,0x6f,0x20,0x74,0x61,0x6b, - 0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x2c,0x20,0x73,0x75,0x63,0x68,0x20,0x61, - 0x73,0x20,0x62,0x79,0x20,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x20,0x61,0x20,0x73, - 0x65,0x72,0x76,0x65,0x72,0x20,0x61,0x6e,0x64,0x20,0x6c,0x65,0x61,0x76,0x69,0x6e, - 0x67,0x20,0x69,0x74,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x6e,0x0, - 0x45,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x63,0x0, - 0x65,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x76,0x0,0x6f,0x0,0x6c,0x0, - 0x75,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x6c,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x62,0x0,0x6c,0x0,0x69,0x0,0x70,0x0, - 0x73,0x0,0x2c,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x73,0x0,0x6f,0x0, - 0x6e,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x20,0x0, - 0x68,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x61,0x0,0x72,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x38,0x53,0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20, - 0x76,0x6f,0x6c,0x75,0x6d,0x65,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x62,0x6c, - 0x69,0x70,0x73,0x2c,0x20,0x74,0x68,0x65,0x20,0x74,0x61,0x6c,0x6b,0x69,0x6e,0x67, - 0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x41,0x0,0x6a,0x0,0x75,0x0, - 0x73,0x0,0x74,0x0,0x65,0x0,0x73,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x8,0x53,0x65,0x74,0x74,0x69,0x6e,0x67,0x73,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x16,0x0,0x54,0x0,0x61,0x0,0x71,0x0,0x75,0x0,0xed,0x0,0x67,0x0, - 0x72,0x0,0x61,0x0,0x66,0x0,0x6f,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0xd,0x53,0x74,0x65,0x6e,0x6f,0x67,0x72,0x61,0x70,0x68,0x65,0x72,0x3a, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x22,0x0,0x4d,0x0,0x61,0x0,0x6e, - 0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x66, - 0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x3a,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0xf,0x53,0x74,0x69,0x63,0x6b,0x79,0x20,0x45,0x66,0x66, - 0x65,0x63,0x74,0x73,0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69, - 0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x24,0x0, - 0x4d,0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x72,0x0, - 0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0, - 0x73,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x53,0x74,0x69, - 0x63,0x6b,0x79,0x20,0x50,0x72,0x65,0x61,0x6e,0x69,0x6d,0x73,0x3a,0x7,0x0,0x0, - 0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f, - 0x67,0x1,0x3,0x0,0x0,0x0,0x22,0x0,0x4d,0x0,0x61,0x0,0x6e,0x0,0x74,0x0, - 0x65,0x0,0x6e,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0, - 0x69,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0xe,0x53,0x74,0x69,0x63,0x6b,0x79,0x20,0x53,0x6f,0x75,0x6e,0x64,0x73, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa6,0x0,0x4c,0x0,0x61,0x0, - 0x20,0x0,0x64,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x63,0x0, - 0x69,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x70,0x0,0xed,0x0, - 0x78,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x6e,0x0, - 0x74,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x61,0x0, - 0x20,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x61,0x0, - 0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x72,0x0, - 0x65,0x0,0x67,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x72,0x0,0x6f,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x2e,0x0,0x20,0x0,0x50,0x0, - 0x72,0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6d,0x0, - 0x69,0x0,0x6e,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x3a,0x0,0x20,0x0,0x30,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x44,0x54,0x68,0x65,0x20,0x64, - 0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x20,0x69,0x6e,0x20,0x70,0x69,0x78,0x65,0x6c, - 0x73,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e,0x20,0x65,0x61,0x63,0x68,0x20,0x65, - 0x6e,0x74,0x72,0x79,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x49,0x43,0x20,0x6c, - 0x6f,0x67,0x2e,0x20,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x3a,0x20,0x30,0x2e,0x7, - 0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61, - 0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x18,0x0,0x54,0x0,0x65,0x0,0x6d,0x0, - 0x61,0x0,0x20,0x0,0x76,0x0,0x69,0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x6c,0x0, - 0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x54,0x68,0x65,0x6d,0x65, - 0x3a,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x52,0x0,0x45,0x0,0x73,0x0, - 0x74,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0, - 0x64,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x61,0x0, - 0x64,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x6c,0x0, - 0x65,0x0,0x72,0x0,0x74,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x29,0x54,0x68,0x69,0x73,0x20,0x73,0x65,0x72,0x76, - 0x65,0x72,0x20,0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x73,0x75,0x70,0x70, - 0x6f,0x72,0x74,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x2e, - 0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69, - 0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x4c,0x0,0x45,0x0,0x73,0x0,0x74, - 0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64, - 0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x64,0x0,0x6d,0x0,0x69,0x0,0x74, - 0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x74,0x0,0x61, - 0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73, - 0x0,0x6f,0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x21, - 0x54,0x68,0x69,0x73,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x73,0x75,0x70,0x70, - 0x6f,0x72,0x74,0x73,0x20,0x63,0x61,0x73,0x65,0x20,0x61,0x6c,0x65,0x72,0x74,0x73, - 0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44, - 0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xd0,0x0,0x41,0x0,0x63,0x0, - 0x74,0x0,0xed,0x0,0x76,0x0,0x65,0x0,0x6c,0x0,0x6f,0x0,0x20,0x0,0x70,0x0, - 0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x6d,0x0, - 0x69,0x0,0x74,0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0, - 0x20,0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0, - 0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x73,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e,0x0,0x61,0x0,0x6e,0x0,0x20,0x0, - 0x73,0x0,0x75,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x70,0x0, - 0x69,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x73,0x0,0x65,0x0, - 0xf1,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0, - 0x75,0x0,0x61,0x0,0x64,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x20,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x74,0x0,0x20,0x0,0x70,0x0, - 0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x69,0x0, - 0x7a,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x4d,0x54,0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x6f, - 0x6e,0x20,0x74,0x6f,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x20,0x63,0x68,0x61,0x72,0x61, - 0x63,0x74,0x65,0x72,0x73,0x20,0x74,0x6f,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x20, - 0x74,0x68,0x65,0x69,0x72,0x20,0x6f,0x77,0x6e,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d, - 0x20,0x63,0x68,0x61,0x74,0x20,0x62,0x6f,0x78,0x20,0x64,0x65,0x73,0x69,0x67,0x6e, - 0x73,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xba,0x0,0x41,0x0,0x63, - 0x0,0x74,0x0,0xed,0x0,0x76,0x0,0x65,0x0,0x6c,0x0,0x6f,0x0,0x20,0x0,0x70, - 0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x74, - 0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x6c, - 0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x69,0x0,0x6c,0x0,0x6c, - 0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x6e,0x0,0x69, - 0x0,0x6d,0x0,0x61,0x0,0x74,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x20,0x0,0x73, - 0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x61,0x0,0x63,0x0,0x74, - 0x0,0x69,0x0,0x76,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x70, - 0x0,0x75,0x0,0xe9,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x72, - 0x0,0x65,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x64,0x0,0x75,0x0,0x63,0x0,0x69, - 0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x6f, - 0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x54, - 0x54,0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x20, - 0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x20,0x70,0x72,0x65,0x61,0x6e,0x69,0x6d,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x62,0x6f,0x78,0x20,0x66,0x72, - 0x6f,0x6d,0x20,0x63,0x6c,0x65,0x61,0x72,0x69,0x6e,0x67,0x20,0x61,0x66,0x74,0x65, - 0x72,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x65,0x6d, - 0x6f,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f, - 0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xc4,0x0,0x41, - 0x0,0x63,0x0,0x74,0x0,0xed,0x0,0x76,0x0,0x65,0x0,0x6c,0x0,0x6f,0x0,0x20, - 0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69, - 0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20, - 0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0xfa,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x70,0x0,0x6c,0x0,0x65,0x0,0x67,0x0,0x61, - 0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x65, - 0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x65, - 0x0,0x6c,0x0,0x69,0x0,0x6d,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x65, - 0x0,0x6c,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x6f, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x70,0x0,0x75,0x0,0xe9,0x0,0x73, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x70,0x0,0x72, - 0x0,0x6f,0x0,0x64,0x0,0x75,0x0,0x63,0x0,0x69,0x0,0x72,0x0,0x6c,0x0,0x6f, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x57,0x54,0x75,0x72,0x6e, - 0x20,0x74,0x68,0x69,0x73,0x20,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x70,0x72,0x65,0x76, - 0x65,0x6e,0x74,0x20,0x74,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20, - 0x64,0x72,0x6f,0x70,0x64,0x6f,0x77,0x6e,0x20,0x66,0x72,0x6f,0x6d,0x20,0x63,0x6c, - 0x65,0x61,0x72,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63, - 0x74,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20, - 0x69,0x74,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xbe,0x0,0x41,0x0, - 0x63,0x0,0x74,0x0,0xed,0x0,0x76,0x0,0x65,0x0,0x6c,0x0,0x6f,0x0,0x20,0x0, - 0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0, - 0x74,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0, - 0x65,0x0,0x6c,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0xfa,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x73,0x0,0x70,0x0,0x6c,0x0,0x65,0x0,0x67,0x0,0x61,0x0, - 0x62,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0, - 0x6f,0x0,0x6e,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x62,0x0,0x6f,0x0, - 0x72,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x73,0x0, - 0x6f,0x0,0x6e,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x73,0x0,0x70,0x0,0x75,0x0,0xe9,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x20,0x0,0x72,0x0,0x65,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x64,0x0,0x75,0x0, - 0x63,0x0,0x69,0x0,0x72,0x0,0x6c,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x54,0x54,0x75,0x72,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x6f, - 0x6e,0x20,0x74,0x6f,0x20,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x20,0x74,0x68,0x65, - 0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x64,0x72,0x6f,0x70,0x64,0x6f,0x77,0x6e,0x20, - 0x66,0x72,0x6f,0x6d,0x20,0x63,0x6c,0x65,0x61,0x72,0x69,0x6e,0x67,0x20,0x74,0x68, - 0x65,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x70,0x6c, - 0x61,0x79,0x69,0x6e,0x67,0x20,0x69,0x74,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0, - 0x0,0x0,0x56,0x0,0x50,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0, - 0x65,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6c,0x0,0x6f,0x0,0x72,0x0,0x65,0x0, - 0x73,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0, - 0x63,0x0,0x68,0x0,0x61,0x0,0x74,0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0, - 0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x2f,0x55,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x6d,0x61,0x72,0x6b,0x75, - 0x70,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20, - 0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x49,0x43,0x20,0x63,0x68,0x61,0x74,0x6c,0x6f, - 0x67,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73, - 0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0xa0,0x0,0x53,0x0,0x75, - 0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x6d,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x20, - 0x0,0x4f,0x0,0x4f,0x0,0x43,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x65, - 0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x63,0x0,0x65, - 0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x6f,0x0,0x6d, - 0x0,0xe1,0x0,0x74,0x0,0x69,0x0,0x63,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x6e, - 0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74, - 0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f, - 0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x61,0x0,0x20, - 0x0,0x61,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72, - 0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x4d,0x59,0x6f,0x75,0x72,0x20,0x4f,0x4f,0x43,0x20,0x6e, - 0x61,0x6d,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x75,0x74,0x6f, - 0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x6c,0x79,0x20,0x73,0x65,0x74,0x20,0x74,0x6f, - 0x20,0x74,0x68,0x69,0x73,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x77,0x68,0x65,0x6e, - 0x20,0x79,0x6f,0x75,0x20,0x6a,0x6f,0x69,0x6e,0x20,0x61,0x20,0x73,0x65,0x72,0x76, - 0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0xf,0x41,0x4f,0x4f,0x70,0x74,0x69,0x6f,0x6e, - 0x73,0x44,0x69,0x61,0x6c,0x6f,0x67,0x1,0x3,0x0,0x0,0x0,0x32,0x0,0x22,0x0, - 0x25,0x0,0x31,0x0,0x22,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x20,0x0,0x73,0x0, - 0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x6e,0x0, - 0x73,0x0,0x66,0x0,0x65,0x0,0x72,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1a,0x22,0x25,0x31,0x22,0x20,0x68,0x61, - 0x73,0x20,0x62,0x65,0x65,0x6e,0x20,0x74,0x72,0x61,0x6e,0x73,0x66,0x65,0x72,0x72, - 0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x3,0x41,0x2f,0x4d,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x32,0x0,0x41,0x0,0xf1,0x0,0x61,0x0,0x64, - 0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0x75,0x0,0x65,0x0,0x76,0x0,0x61, - 0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x63, - 0x0,0x69,0x0,0x61,0x0,0x2e,0x0,0x2e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x13,0x41,0x64,0x64,0x20,0x6e,0x65,0x77,0x20,0x65,0x76,0x69,0x64, - 0x65,0x6e,0x63,0x65,0x2e,0x2e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x7c,0x0,0x41,0x0,0x67,0x0, - 0x72,0x0,0x65,0x0,0x67,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x74,0x0,0x65,0x0, - 0x78,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x75,0x0, - 0x20,0x0,0xfa,0x0,0x6c,0x0,0x74,0x0,0x69,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0, - 0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x20,0x0, - 0x68,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0, - 0x63,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x65,0x0, - 0x73,0x0,0x74,0x0,0xe9,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0, - 0x61,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x32,0x41,0x64,0x64,0x20,0x74,0x65,0x78,0x74,0x20,0x74,0x6f,0x20,0x79,0x6f,0x75, - 0x72,0x20,0x6c,0x61,0x73,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65, - 0x73,0x73,0x61,0x67,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b, - 0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x41,0x0,0x64,0x0,0x69,0x0,0x74,0x0, - 0x69,0x0,0x76,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x41, - 0x64,0x64,0x69,0x74,0x69,0x76,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x5e,0x0,0x4c,0x0,0x65,0x0, - 0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x65,0x0, - 0x20,0x0,0x63,0x0,0x61,0x0,0x6d,0x0,0x62,0x0,0x69,0x0,0x61,0x0,0x72,0x0, - 0x20,0x0,0x76,0x0,0x61,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x20,0x0, - 0x61,0x0,0x73,0x0,0x70,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x6f,0x0,0x73,0x0, - 0x20,0x0,0x64,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x63,0x0,0x6c,0x0,0x69,0x0, - 0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x33,0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x79,0x6f,0x75,0x20,0x74,0x6f, - 0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x76,0x61,0x72,0x69,0x6f,0x75,0x73,0x20, - 0x61,0x73,0x70,0x65,0x63,0x74,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x63, - 0x6c,0x69,0x65,0x6e,0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xb0,0x0,0x55,0x0,0x6e,0x0,0x61, - 0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x66,0x0,0x61, - 0x0,0x7a,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x61, - 0x0,0x79,0x0,0x75,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x6c,0x0,0x6f,0x0,0x20, - 0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x75,0x0,0x6e,0x0,0x63,0x0,0x69, - 0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x63,0x0,0x61, - 0x0,0x73,0x0,0x6f,0x0,0x20,0x0,0x28,0x0,0x64,0x0,0x65,0x0,0x62,0x0,0x65, - 0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x20, - 0x0,0x43,0x0,0x4d,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20, - 0x0,0x70,0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x6e, - 0x0,0x75,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x63, - 0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x61,0x41,0x6e,0x20,0x69,0x6e,0x74,0x65,0x72,0x66,0x61,0x63,0x65, - 0x20,0x74,0x6f,0x20,0x68,0x65,0x6c,0x70,0x20,0x79,0x6f,0x75,0x20,0x61,0x6e,0x6e, - 0x6f,0x75,0x6e,0x63,0x65,0x20,0x61,0x20,0x63,0x61,0x73,0x65,0x20,0x28,0x79,0x6f, - 0x75,0x20,0x68,0x61,0x76,0x65,0x20,0x74,0x6f,0x20,0x62,0x65,0x20,0x61,0x20,0x43, - 0x4d,0x20,0x66,0x69,0x72,0x73,0x74,0x20,0x74,0x6f,0x20,0x62,0x65,0x20,0x61,0x62, - 0x6c,0x65,0x20,0x74,0x6f,0x20,0x61,0x6e,0x6e,0x6f,0x75,0x6e,0x63,0x65,0x20,0x63, - 0x61,0x73,0x65,0x73,0x29,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa,0x0,0x4c,0x0,0x6f,0x0,0x62,0x0, - 0x62,0x0,0x79,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x42,0x61,0x63, - 0x6b,0x20,0x74,0x6f,0x20,0x4c,0x6f,0x62,0x62,0x79,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x80,0x0,0x43, - 0x0,0x6f,0x0,0x6e,0x0,0x76,0x0,0x69,0x0,0xe9,0x0,0x72,0x0,0x74,0x0,0x65, - 0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x73, - 0x0,0x70,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x72, - 0x0,0x2e,0x0,0x20,0x0,0x4e,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x64, - 0x0,0x72,0x0,0xe1,0x0,0x73,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x65, - 0x0,0x72,0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x72,0x0,0x20, - 0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72, - 0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4f,0x42,0x65,0x63,0x6f,0x6d,0x65,0x20,0x61, - 0x20,0x73,0x70,0x65,0x63,0x74,0x61,0x74,0x6f,0x72,0x2e,0x20,0x59,0x6f,0x75,0x20, - 0x77,0x6f,0x6e,0x27,0x74,0x20,0x62,0x65,0x20,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f, - 0x20,0x69,0x6e,0x74,0x65,0x72,0x61,0x63,0x74,0x20,0x77,0x69,0x74,0x68,0x20,0x74, - 0x68,0x65,0x20,0x69,0x6e,0x2d,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20, - 0x73,0x63,0x72,0x65,0x65,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x5,0x42,0x6c,0x69,0x70,0x73,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x82,0x0,0x41, - 0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x70, - 0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x61,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x63, - 0x0,0x63,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6a, - 0x0,0x65,0x0,0x20,0x0,0x79,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x6d,0x0,0x62, - 0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x74,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x65, - 0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3f,0x42,0x72,0x69,0x6e,0x67,0x20, - 0x75,0x70,0x20,0x74,0x68,0x65,0x20,0x43,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72, - 0x20,0x53,0x65,0x6c,0x65,0x63,0x74,0x20,0x53,0x63,0x72,0x65,0x65,0x6e,0x20,0x61, - 0x6e,0x64,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x63, - 0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x3c,0x0,0x41,0x0, - 0x62,0x0,0x72,0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0, - 0x76,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x61,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x65,0x0, - 0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x1d,0x42,0x72,0x69,0x6e,0x67,0x20,0x75,0x70,0x20,0x74,0x68,0x65,0x20, - 0x45,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x4c, - 0x49,0x45,0x4e,0x54,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x4c,0x0,0x6c,0x0,0x61,0x0,0x6d, - 0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x4d,0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x72, - 0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xe,0x43,0x61,0x6c,0x6c,0x20,0x4d,0x6f,0x64,0x65,0x72,0x61,0x74,0x6f,0x72, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x43,0x61, - 0x6c,0x6c,0x20,0x6d,0x6f,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x24,0x0,0x43,0x0,0x61,0x0,0x73, - 0x0,0x6f,0x0,0x20,0x0,0x68,0x0,0x65,0x0,0x63,0x0,0x68,0x0,0x6f,0x0,0x20, - 0x0,0x70,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x25,0x0,0x31,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x43,0x61,0x73,0x65,0x20,0x6d,0x61,0x64, - 0x65,0x20,0x62,0x79,0x20,0x25,0x31,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x61,0x73,0x69,0x6e,0x67,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x43,0x68,0x61,0x6e,0x67,0x65, - 0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x5a,0x0,0x43, - 0x0,0x61,0x0,0x6d,0x0,0x62,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6c, - 0x0,0x20,0x0,0x6f,0x0,0x72,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x64, - 0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x69,0x0,0x63, - 0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x74, - 0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e, - 0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x32,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x74,0x68,0x65,0x20,0x6f,0x72,0x64, - 0x65,0x72,0x20,0x6f,0x66,0x20,0x61,0x70,0x70,0x65,0x61,0x72,0x61,0x6e,0x63,0x65, - 0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63, - 0x74,0x65,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0x42,0x0,0x43,0x0,0x61,0x0,0x6d,0x0,0x62, - 0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x63,0x0,0x6f, - 0x0,0x6c,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6c,0x0,0x20, - 0x0,0x74,0x0,0x65,0x0,0x78,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x74, - 0x0,0x20,0x0,0x49,0x0,0x43,0x0,0x2e,0x0,0xa,0x0,0xa1,0x0,0x54,0x0,0x61, - 0x0,0x6d,0x0,0x62,0x0,0x69,0x0,0xe9,0x0,0x6e,0x0,0x20,0x0,0x70,0x0,0x75, - 0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x6c,0x0,0x65, - 0x0,0x63,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x72,0x0,0x20, - 0x0,0x75,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x74, - 0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x20, - 0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x20, - 0x0,0x65,0x0,0x73,0x0,0x63,0x0,0x72,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x20, - 0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x6d,0x0,0x65, - 0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x79,0x0,0x20,0x0,0x75,0x0,0x73, - 0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x6d,0x0,0x65, - 0x0,0x6e,0x0,0xfa,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x70,0x0,0x6c, - 0x0,0x65,0x0,0x67,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x70, - 0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x6d,0x0,0x62, - 0x0,0x69,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x20,0x0,0x63, - 0x0,0x6f,0x0,0x6c,0x0,0x6f,0x0,0x72,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x91,0x43,0x68,0x61,0x6e,0x67,0x65,0x20,0x74,0x68,0x65,0x20,0x74, - 0x65,0x78,0x74,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x6f,0x66,0x20,0x74,0x68,0x65, - 0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2e, - 0xa,0x59,0x6f,0x75,0x20,0x63,0x61,0x6e,0x20,0x61,0x6c,0x73,0x6f,0x20,0x73,0x65, - 0x6c,0x65,0x63,0x74,0x20,0x61,0x20,0x70,0x61,0x72,0x74,0x20,0x6f,0x66,0x20,0x79, - 0x6f,0x75,0x72,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x79,0x20,0x74,0x79, - 0x70,0x65,0x64,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x61,0x6e,0x64,0x20, - 0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x64,0x72,0x6f,0x70,0x64,0x6f,0x77,0x6e, - 0x20,0x74,0x6f,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x69,0x74,0x73,0x20,0x63, - 0x6f,0x6c,0x6f,0x72,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x2,0x46,0x0,0x45,0x0,0x6c,0x0,0x69,0x0, - 0x6a,0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x66,0x0, - 0x65,0x0,0x63,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0, - 0x61,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x64,0x0, - 0x75,0x0,0x63,0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0, - 0x73,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0xf3,0x0,0x78,0x0,0x69,0x0, - 0x6d,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0, - 0x6a,0x0,0x65,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x61,0x0, - 0x64,0x0,0x6f,0x0,0x2e,0x0,0xa,0x0,0x4c,0x0,0x6f,0x0,0x73,0x0,0x20,0x0, - 0x65,0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0, - 0x73,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e,0x0, - 0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x74,0x0,0x68,0x0, - 0x65,0x0,0x6d,0x0,0x65,0x0,0x2f,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0, - 0x63,0x0,0x74,0x0,0x73,0x0,0x2f,0x0,0x65,0x0,0x66,0x0,0x66,0x0,0x65,0x0, - 0x63,0x0,0x74,0x0,0x73,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x2e,0x0, - 0x20,0x0,0x54,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0, - 0x6f,0x0,0x6e,0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x75,0x0, - 0x65,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0, - 0x6e,0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x63,0x0, - 0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0, - 0x6f,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x64,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x72,0x0,0xa,0x0,0x63,0x0, - 0x68,0x0,0x61,0x0,0x72,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x20,0x0, - 0x5b,0x0,0x4f,0x0,0x70,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0, - 0x73,0x0,0x5d,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x74,0x0,0x65,0x0,0x67,0x0, - 0x6f,0x0,0x72,0x0,0xed,0x0,0x61,0x0,0x2c,0x0,0x20,0x0,0x65,0x0,0x66,0x0, - 0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x73,0x0,0x20,0x0,0x3d,0x0,0x20,0x0, - 0x27,0x0,0x6d,0x0,0x69,0x0,0x73,0x0,0x63,0x0,0x6e,0x0,0x61,0x0,0x6d,0x0, - 0x65,0x0,0x27,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x6e,0x0,0x64,0x0,0x65,0x0, - 0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x66,0x0,0x69,0x0, - 0x65,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0x69,0x0, - 0x73,0x0,0x63,0x0,0x2f,0x0,0x3c,0x0,0x6d,0x0,0x69,0x0,0x73,0x0,0x63,0x0, - 0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x3e,0x0,0x2f,0x0,0x65,0x0,0x66,0x0, - 0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x73,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0, - 0x69,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x6c,0x0, - 0x65,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x20,0x0, - 0x65,0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x1,0x13,0x43,0x68,0x6f,0x6f,0x73,0x65,0x20, - 0x61,0x6e,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x20,0x74,0x6f,0x20,0x70,0x6c,0x61, - 0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x6e,0x65,0x78,0x74,0x20,0x73, - 0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2e,0xa,0x54, - 0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20,0x61,0x72,0x65,0x20,0x64, - 0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x69,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x74, - 0x68,0x65,0x6d,0x65,0x2f,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2f,0x65,0x66,0x66, - 0x65,0x63,0x74,0x73,0x2e,0x69,0x6e,0x69,0x2e,0x20,0x59,0x6f,0x75,0x72,0x20,0x63, - 0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x63,0x61,0x6e,0x20,0x64,0x65,0x66, - 0x69,0x6e,0x65,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x65,0x66,0x66,0x65,0x63, - 0x74,0x73,0x20,0x62,0x79,0xa,0x63,0x68,0x61,0x72,0x2e,0x69,0x6e,0x69,0x20,0x5b, - 0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73,0x5d,0x20,0x63,0x61,0x74,0x65,0x67,0x6f,0x72, - 0x79,0x2c,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20,0x3d,0x20,0x27,0x6d,0x69, - 0x73,0x63,0x6e,0x61,0x6d,0x65,0x27,0x20,0x77,0x68,0x65,0x72,0x65,0x20,0x69,0x74, - 0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x73,0x20,0x74,0x6f,0x20,0x6d,0x69,0x73,0x63, - 0x2f,0x3c,0x6d,0x69,0x73,0x63,0x6e,0x61,0x6d,0x65,0x3e,0x2f,0x65,0x66,0x66,0x65, - 0x63,0x74,0x73,0x2e,0x69,0x6e,0x69,0x20,0x74,0x6f,0x20,0x72,0x65,0x61,0x64,0x20, - 0x74,0x68,0x65,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x2e,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x10, - 0x0,0x45,0x0,0x6c,0x0,0x65,0x0,0x67,0x0,0x69,0x0,0x72,0x0,0x2e,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x43,0x68,0x6f,0x6f,0x73,0x65, - 0x2e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0xce,0x0,0x43,0x0,0x69,0x0,0x65,0x0,0x72,0x0,0x72, - 0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x70, - 0x0,0x65,0x0,0x72,0x0,0x70,0x0,0x6f,0x0,0x73,0x0,0x69,0x0,0x63,0x0,0x69, - 0x0,0xf3,0x0,0x6e,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20, - 0x0,0x76,0x0,0x69,0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a, - 0x0,0x61,0x0,0x72,0x0,0x2f,0x0,0x65,0x0,0x64,0x0,0x69,0x0,0x74,0x0,0x61, - 0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x65,0x0,0x6e, - 0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x2e,0x0,0xa,0x0,0x53,0x0,0x65,0x0,0x20, - 0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x67,0x0,0x75, - 0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x73,0x0,0x69, - 0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x79,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x6d, - 0x0,0x62,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x20, - 0x0,0x67,0x0,0x75,0x0,0x61,0x0,0x72,0x0,0x64,0x0,0x61,0x0,0x64,0x0,0x6f, - 0x0,0x73,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x60,0x43,0x6c, - 0x6f,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65, - 0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x2f,0x65,0x64,0x69,0x74,0x69,0x6e,0x67, - 0x20,0x6f,0x76,0x65,0x72,0x6c,0x61,0x79,0x2e,0xa,0x59,0x6f,0x75,0x20,0x77,0x69, - 0x6c,0x6c,0x20,0x62,0x65,0x20,0x70,0x72,0x6f,0x6d,0x70,0x74,0x65,0x64,0x20,0x69, - 0x66,0x20,0x74,0x68,0x65,0x72,0x65,0x27,0x73,0x20,0x61,0x6e,0x79,0x20,0x75,0x6e, - 0x73,0x61,0x76,0x65,0x64,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x2e,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x3a,0x0,0x43,0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x65, - 0x0,0x72,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20, - 0x0,0x6c,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x74,0x0,0x65, - 0x0,0x67,0x0,0x6f,0x0,0x72,0x0,0xed,0x0,0x61,0x0,0x73,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x17,0x43,0x6f,0x6c,0x6c,0x61,0x70,0x73,0x65,0x20,0x41, - 0x6c,0x6c,0x20,0x43,0x61,0x74,0x65,0x67,0x6f,0x72,0x69,0x65,0x73,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x80,0x0,0x4c,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0, - 0x65,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x63,0x0, - 0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x20,0x0, - 0x67,0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x61,0x0,0x6c,0x0,0x2e,0x0,0x20,0x0, - 0x48,0x0,0x61,0x0,0x67,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x6c,0x0,0x69,0x0, - 0x63,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x63,0x0, - 0x61,0x0,0x6d,0x0,0x62,0x0,0x69,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x61,0x0, - 0x20,0x0,0x70,0x0,0x72,0x0,0x69,0x0,0x76,0x0,0x61,0x0,0x64,0x0,0x6f,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x37,0x43,0x75,0x72,0x72,0x65, - 0x6e,0x74,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x69,0x73,0x20,0x67, - 0x6c,0x6f,0x62,0x61,0x6c,0x2e,0x20,0x43,0x6c,0x69,0x63,0x6b,0x20,0x74,0x6f,0x20, - 0x73,0x77,0x69,0x74,0x63,0x68,0x20,0x74,0x6f,0x20,0x70,0x72,0x69,0x76,0x61,0x74, - 0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x80,0x0,0x4c,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x76, - 0x0,0x69,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20, - 0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x65, - 0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x69,0x0,0x76,0x0,0x61,0x0,0x64, - 0x0,0x61,0x0,0x2e,0x0,0x20,0x0,0x48,0x0,0x61,0x0,0x67,0x0,0x61,0x0,0x20, - 0x0,0x63,0x0,0x6c,0x0,0x69,0x0,0x63,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72, - 0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x6d,0x0,0x62,0x0,0x69,0x0,0x61, - 0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x67,0x0,0x6c,0x0,0x6f,0x0,0x62, - 0x0,0x61,0x0,0x6c,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x37, - 0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65, - 0x20,0x69,0x73,0x20,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x2e,0x20,0x43,0x6c,0x69, - 0x63,0x6b,0x20,0x74,0x6f,0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x20,0x74,0x6f,0x20, - 0x67,0x6c,0x6f,0x62,0x61,0x6c,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2a,0x0,0xa1,0x0,0x47,0x0, - 0x72,0x0,0x69,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0, - 0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0, - 0x64,0x0,0x6f,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd,0x43, - 0x75,0x73,0x74,0x6f,0x6d,0x20,0x53,0x68,0x6f,0x75,0x74,0x21,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x38, - 0x0,0x44,0x0,0x69,0x0,0x73,0x0,0x6d,0x0,0x69,0x0,0x6e,0x0,0x75,0x0,0x79, - 0x0,0x65,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x72, - 0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x61, - 0x0,0x6c,0x0,0x75,0x0,0x64,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x18,0x44,0x65,0x63,0x72,0x65,0x61,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x68, - 0x65,0x61,0x6c,0x74,0x68,0x20,0x62,0x61,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x1c,0x0,0x50, - 0x0,0x72,0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6d, - 0x0,0x69,0x0,0x6e,0x0,0x61,0x0,0x64,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x7,0x44,0x65,0x66,0x61,0x75,0x6c,0x74,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x2e,0x0, - 0x44,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x72,0x0,0x75,0x0,0x79,0x0,0x65,0x0, - 0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x76,0x0, - 0x69,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x1e,0x44,0x65,0x73,0x74,0x72,0x6f,0x79,0x20,0x74, - 0x68,0x69,0x73,0x20,0x70,0x69,0x65,0x63,0x65,0x20,0x6f,0x66,0x20,0x65,0x76,0x69, - 0x64,0x65,0x6e,0x63,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x96,0x0,0x4d,0x0,0x6f,0x0,0x73,0x0, - 0x74,0x0,0x72,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x6d,0x0, - 0x62,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0, - 0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0, - 0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0, - 0x20,0x0,0x74,0x0,0x6f,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x6c,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x72,0x0, - 0x69,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x63,0x0,0x75,0x0,0x61,0x0,0x6e,0x0, - 0x64,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe9,0x0,0x20,0x0, - 0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x38,0x44,0x69,0x73,0x70,0x6c,0x61,0x79, - 0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x69,0x7a,0x65,0x64,0x20,0x73,0x68,0x6f,0x77, - 0x6e,0x61,0x6d,0x65,0x73,0x20,0x66,0x6f,0x72,0x20,0x61,0x6c,0x6c,0x20,0x75,0x73, - 0x65,0x72,0x73,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64, - 0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x7e,0x0,0x4d,0x0,0x75,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x72,0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x69,0x0, - 0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0, - 0x61,0x0,0x72,0x0,0x70,0x0,0x65,0x0,0x74,0x0,0x61,0x0,0x73,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x63,0x0, - 0x74,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x71,0x0,0x75,0x0, - 0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x61,0x0,0x20,0x0, - 0x73,0x0,0x69,0x0,0x6c,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0, - 0x72,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x37,0x44,0x69,0x73, - 0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20,0x6c,0x69,0x73,0x74,0x20,0x6f,0x66, - 0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x66,0x6f,0x6c,0x64,0x65, - 0x72,0x73,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x73,0x68,0x20,0x74,0x6f,0x20,0x6d, - 0x75,0x74,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x5c,0x0,0x4d,0x0,0x75,0x0,0x65,0x0,0x73, - 0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x6c, - 0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6a, - 0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20, - 0x0,0x65,0x0,0x6d,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x65,0x0,0x6a,0x0,0x61, - 0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2c,0x44,0x69, - 0x73,0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20,0x6c,0x69,0x73,0x74,0x20,0x6f, - 0x66,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x20,0x74,0x6f,0x20, - 0x70,0x61,0x69,0x72,0x20,0x77,0x69,0x74,0x68,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xfc,0x0,0x4e, - 0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x63,0x0,0x75,0x0,0x63,0x0,0x68, - 0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x6c,0x0,0x61,0x0,0x6d,0x0,0x61,0x0,0x64, - 0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x6f, - 0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0xf3,0x0,0x6e, - 0x0,0x20,0x0,0x63,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20, - 0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe9,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72, - 0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x65,0x0,0x76, - 0x0,0x69,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x71, - 0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x70,0x0,0x72,0x0,0x6f, - 0x0,0x64,0x0,0x75,0x0,0x7a,0x0,0x63,0x0,0x61,0x0,0x6e,0x0,0x20,0x0,0x73, - 0x0,0x6f,0x0,0x6e,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x6f, - 0x0,0x20,0x0,0x63,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x6e, - 0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x74, - 0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0,0x65, - 0x0,0x6e,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x6e, - 0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x71,0x44,0x6f,0x20,0x6e,0x6f,0x74,0x20,0x6c,0x69,0x73,0x74,0x65, - 0x6e,0x20,0x74,0x6f,0x20,0x6d,0x6f,0x64,0x20,0x63,0x61,0x6c,0x6c,0x73,0x20,0x77, - 0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2c,0x20,0x70,0x72,0x65, - 0x76,0x65,0x6e,0x74,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x6d,0x20,0x66,0x72,0x6f, - 0x6d,0x20,0x70,0x6c,0x61,0x79,0x69,0x6e,0x67,0x20,0x73,0x6f,0x75,0x6e,0x64,0x73, - 0x20,0x6f,0x72,0x20,0x66,0x6f,0x63,0x75,0x73,0x69,0x6e,0x67,0x20,0x61,0x74,0x74, - 0x65,0x6e,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x77,0x69, - 0x6e,0x64,0x6f,0x77,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x3a,0x0,0xbf,0x0,0x51,0x0,0x75,0x0, - 0x69,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x67,0x0,0x75,0x0, - 0x61,0x0,0x72,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x74,0x0,0x75,0x0, - 0x73,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x6d,0x0,0x62,0x0,0x69,0x0,0x6f,0x0, - 0x73,0x0,0x3f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x21,0x44,0x6f,0x20, - 0x79,0x6f,0x75,0x20,0x77,0x61,0x6e,0x74,0x20,0x74,0x6f,0x20,0x73,0x61,0x76,0x65, - 0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x3f,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x3a,0x0,0xbf,0x0,0x44,0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x61,0x0,0x20, - 0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x61, - 0x0,0x72,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x73,0x0,0x20,0x0,0x63,0x0,0x61, - 0x0,0x6d,0x0,0x62,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x3f,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x21,0x44,0x6f,0x20,0x79,0x6f,0x75,0x20,0x77,0x69,0x73, - 0x68,0x20,0x74,0x6f,0x20,0x6b,0x65,0x65,0x70,0x20,0x79,0x6f,0x75,0x72,0x20,0x63, - 0x68,0x61,0x6e,0x67,0x65,0x73,0x3f,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xa,0x0,0x45,0x0,0x72,0x0, - 0x72,0x0,0x6f,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x45, - 0x72,0x72,0x6f,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x40,0x0,0x4c,0x0,0x61,0x0,0x20,0x0,0x65, - 0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61, - 0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x64,0x0,0x6f, - 0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x64,0x0,0x69,0x0,0x66,0x0,0x69,0x0,0x63, - 0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x1b,0x45,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x68,0x61,0x73,0x20,0x62, - 0x65,0x65,0x6e,0x20,0x6d,0x6f,0x64,0x69,0x66,0x69,0x65,0x64,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x3a,0x0,0x45,0x0,0x78,0x0,0x70,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x69,0x0, - 0x72,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x64,0x0,0x61,0x0,0x73,0x0,0x20,0x0, - 0x6c,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x74,0x0,0x65,0x0, - 0x67,0x0,0x6f,0x0,0x72,0x0,0xed,0x0,0x61,0x0,0x73,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x15,0x45,0x78,0x70,0x61,0x6e,0x64,0x20,0x41,0x6c,0x6c,0x20, - 0x43,0x61,0x74,0x65,0x67,0x6f,0x72,0x69,0x65,0x73,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x10,0x0,0x46, - 0x0,0x75,0x0,0x6e,0x0,0x64,0x0,0x69,0x0,0x72,0x0,0x73,0x0,0x65,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x46,0x61,0x64,0x65,0x20,0x49,0x6e,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x26,0x0,0x44,0x0,0x65,0x0,0x73,0x0,0x76,0x0,0x61,0x0,0x6e,0x0, - 0x65,0x0,0x63,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x41,0x0,0x6e,0x0,0x74,0x0, - 0x65,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x11,0x46,0x61,0x64,0x65,0x20,0x4f,0x75,0x74,0x20,0x50,0x72,0x65,0x76, - 0x69,0x6f,0x75,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x4,0x46,0x6c,0x69,0x70,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x36,0x0,0x47,0x0,0x65,0x0,0x6e, - 0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x70, - 0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6a,0x0,0x65, - 0x0,0x73,0x0,0x3a,0x0,0xa,0x0,0x25,0x0,0x31,0x0,0x2f,0x0,0x25,0x0,0x32, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17,0x47,0x65,0x6e,0x65,0x72,0x61, - 0x74,0x69,0x6e,0x67,0x20,0x63,0x68,0x61,0x72,0x73,0x3a,0xa,0x25,0x31,0x2f,0x25, - 0x32,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0xe,0x0,0x47,0x0,0x75,0x0,0x61,0x0,0x72,0x0,0x64,0x0, - 0x69,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x47,0x75,0x61, - 0x72,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x14,0x0,0xa1,0x0,0x43,0x0,0x75,0x0,0x6c,0x0,0x70, - 0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x7,0x47,0x75,0x69,0x6c,0x74,0x79,0x21,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x18,0x0, - 0xa1,0x0,0x55,0x0,0x6e,0x0,0x20,0x0,0x4d,0x0,0x6f,0x0,0x6d,0x0,0x65,0x0, - 0x6e,0x0,0x74,0x0,0x6f,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x8,0x48,0x6f,0x6c,0x64,0x20,0x49,0x74,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xe6,0x0,0x53,0x0, - 0x69,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0, - 0x63,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x6e,0x0, - 0x69,0x0,0x6d,0x0,0x2c,0x0,0x20,0x0,0x6d,0x0,0x75,0x0,0x65,0x0,0x73,0x0, - 0x74,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x74,0x0, - 0x65,0x0,0x78,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x65,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x20,0x0, - 0x69,0x0,0x6e,0x0,0x6d,0x0,0x65,0x0,0x64,0x0,0x69,0x0,0x61,0x0,0x74,0x0, - 0x61,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x6d,0x0, - 0x69,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x61,0x0,0x73,0x0,0x20,0x0, - 0x6c,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0, - 0x63,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0, - 0x72,0x0,0x65,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x64,0x0,0x75,0x0,0x63,0x0, - 0x65,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x6d,0x0,0x75,0x0,0x6c,0x0,0x74,0x0, - 0xe1,0x0,0x6e,0x0,0x65,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0, - 0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5e,0x49,0x66,0x20, - 0x70,0x72,0x65,0x61,0x6e,0x69,0x6d,0x20,0x69,0x73,0x20,0x63,0x68,0x65,0x63,0x6b, - 0x65,0x64,0x2c,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20, - 0x69,0x6e,0x70,0x75,0x74,0x20,0x74,0x65,0x78,0x74,0x20,0x69,0x6d,0x6d,0x65,0x64, - 0x69,0x61,0x74,0x65,0x6c,0x79,0x20,0x61,0x73,0x20,0x74,0x68,0x65,0x20,0x61,0x6e, - 0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x70,0x6c,0x61,0x79,0x73,0x20,0x63,0x6f, - 0x6e,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x79,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x22,0x0, - 0x49,0x0,0x6d,0x0,0xe1,0x0,0x67,0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x73,0x0, - 0x20,0x0,0x28,0x0,0x2a,0x0,0x20,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,0x0, - 0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x49,0x6d,0x61,0x67,0x65, - 0x73,0x20,0x28,0x2a,0x2e,0x70,0x6e,0x67,0x29,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x49,0x6d,0x6d,0x65,0x64,0x69,0x61,0x74,0x65, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x34,0x0,0x41,0x0,0x75,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74, - 0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x72, - 0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x61, - 0x0,0x6c,0x0,0x75,0x0,0x64,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x18,0x49,0x6e,0x63,0x72,0x65,0x61,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x68, - 0x65,0x61,0x6c,0x74,0x68,0x20,0x62,0x61,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x28,0x0,0x41, - 0x0,0x72,0x0,0x63,0x0,0x68,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x73,0x0,0x20, - 0x0,0x49,0x0,0x6e,0x0,0x69,0x0,0x20,0x0,0x28,0x0,0x2a,0x0,0x2e,0x0,0x69, - 0x0,0x6e,0x0,0x69,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11, - 0x49,0x6e,0x69,0x20,0x46,0x69,0x6c,0x65,0x73,0x20,0x28,0x2a,0x2e,0x69,0x6e,0x69, - 0x29,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0xec,0x0,0x4c,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x65,0x0, - 0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x72,0x0,0x65,0x0, - 0x63,0x0,0x69,0x0,0x62,0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x6c,0x0, - 0x65,0x0,0x72,0x0,0x74,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x63,0x0, - 0x75,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x73,0x0, - 0x74,0x0,0xe1,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x62,0x0,0x69,0x0,0x6c,0x0, - 0x69,0x0,0x74,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2e,0x0,0xa,0x0,0x28,0x0, - 0xa1,0x0,0x50,0x0,0x75,0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x20,0x0, - 0x63,0x0,0x6f,0x0,0x6e,0x0,0x66,0x0,0x69,0x0,0x67,0x0,0x75,0x0,0x72,0x0, - 0x61,0x0,0x72,0x0,0x20,0x0,0x74,0x0,0x75,0x0,0x73,0x0,0x20,0x0,0x70,0x0, - 0x72,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x72,0x0,0x65,0x0,0x6e,0x0,0x63,0x0, - 0x69,0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x6c,0x0, - 0x61,0x0,0x20,0x0,0x43,0x0,0x6f,0x0,0x6e,0x0,0x66,0x0,0x69,0x0,0x67,0x0, - 0x75,0x0,0x72,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x21,0x0, - 0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5a,0x4c,0x65,0x74,0x73,0x20, - 0x79,0x6f,0x75,0x20,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x20,0x63,0x61,0x73,0x65, - 0x20,0x61,0x6c,0x65,0x72,0x74,0x73,0x20,0x77,0x68,0x65,0x6e,0x20,0x65,0x6e,0x61, - 0x62,0x6c,0x65,0x64,0x2e,0xa,0x28,0x59,0x6f,0x75,0x20,0x63,0x61,0x6e,0x20,0x73, - 0x65,0x74,0x20,0x79,0x6f,0x75,0x72,0x20,0x70,0x72,0x65,0x66,0x65,0x72,0x65,0x6e, - 0x63,0x65,0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x53,0x65,0x74,0x74,0x69, - 0x6e,0x67,0x73,0x21,0x29,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x48,0x0,0x43,0x0,0x61,0x0,0x72,0x0, - 0x67,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0, - 0x65,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x68,0x0, - 0x69,0x0,0x76,0x0,0x6f,0x0,0x20,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0, - 0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x20,0x4c,0x6f,0x61,0x64,0x20, - 0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x66,0x72,0x6f,0x6d,0x20,0x61,0x6e, - 0x20,0x2e,0x69,0x6e,0x69,0x20,0x66,0x69,0x6c,0x65,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4d,0x61,0x73,0x74,0x65,0x72,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0xe,0x0,0x4d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x6a,0x0, - 0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4d,0x65,0x73,0x73,0x61, - 0x67,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x6e,0x0,0x52,0x0,0x65,0x0,0x66,0x0,0x6c,0x0,0x65, - 0x0,0x6a,0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x67, - 0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x20,0x0,0x74,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73, - 0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x75, - 0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74, - 0x0,0xe9,0x0,0x20,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64, - 0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2c,0x4d,0x69, - 0x72,0x72,0x6f,0x72,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63, - 0x74,0x65,0x72,0x27,0x73,0x20,0x65,0x6d,0x6f,0x74,0x65,0x73,0x20,0x77,0x68,0x65, - 0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x4d,0x75,0x73,0x69,0x63,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0xc,0x0,0x4e,0x0,0x6f,0x0,0x6d,0x0,0x62,0x0,0x72,0x0,0x65,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x4e,0x61,0x6d,0x65,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x4a,0x0, - 0x4e,0x0,0x6f,0x0,0x6d,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x3a,0x0,0x20,0x0, - 0x25,0x0,0x31,0x0,0xa,0x0,0x49,0x0,0x6d,0x0,0x61,0x0,0x67,0x0,0x65,0x0, - 0x6e,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x32,0x0,0xa,0x0,0x44,0x0,0x65,0x0, - 0x73,0x0,0x63,0x0,0x72,0x0,0x69,0x0,0x70,0x0,0x63,0x0,0x69,0x0,0xf3,0x0, - 0x6e,0x0,0x3a,0x0,0xa,0x0,0x25,0x0,0x33,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x22,0x4e,0x61,0x6d,0x65,0x3a,0x20,0x25,0x31,0xa,0x49,0x6d,0x61,0x67, - 0x65,0x3a,0x20,0x25,0x32,0xa,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f, - 0x6e,0x3a,0xa,0x25,0x33,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x4c,0x0,0x4e,0x0,0x61,0x0,0x76,0x0, - 0x65,0x0,0x67,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x25,0x0, - 0x31,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x65,0x0, - 0x6c,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x63,0x0,0x75,0x0,0x6d,0x0,0x65,0x0, - 0x6e,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6c,0x0,0x20,0x0, - 0x43,0x0,0x4d,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1e,0x4e, - 0x61,0x76,0x69,0x67,0x61,0x74,0x65,0x20,0x74,0x6f,0x20,0x25,0x31,0x20,0x66,0x6f, - 0x72,0x20,0x74,0x68,0x65,0x20,0x43,0x4d,0x20,0x64,0x6f,0x63,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x8,0x0,0x4e,0x0,0x61,0x0,0x64,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x4,0x4e,0x6f,0x6e,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x14,0x0,0xa1,0x0,0x50,0x0, - 0x72,0x0,0x6f,0x0,0x74,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x21,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x4f,0x62,0x6a,0x65,0x63,0x74,0x69, - 0x6f,0x6e,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x2e,0x0,0xa1,0x0,0x55,0x0,0x70,0x0,0x73,0x0, - 0x2c,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x73,0x0,0x20,0x0, - 0x73,0x0,0x69,0x0,0x6c,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0, - 0x64,0x0,0x6f,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,0x4f, - 0x6f,0x70,0x73,0x2c,0x20,0x79,0x6f,0x75,0x27,0x72,0x65,0x20,0x6d,0x75,0x74,0x65, - 0x64,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x1,0x3,0x0,0x0,0x0,0x26,0x0,0x41,0x0,0x62,0x0,0x72,0x0,0x69,0x0,0x72, - 0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x76,0x0,0x65, - 0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x69,0x0,0x6f,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0xe,0x4f,0x70,0x65,0x6e,0x20,0x49,0x6e,0x76,0x65,0x6e, - 0x74,0x6f,0x72,0x79,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x14,0x0,0x43,0x0,0x6f,0x0,0x6e,0x0,0x74, - 0x0,0x72,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0xf1,0x0,0x61,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x8,0x50,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff, - 0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x50,0x61,0x73,0x73, - 0x77,0x6f,0x72,0x64,0x65,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x38,0x0,0x52,0x0,0x65,0x0,0x70, - 0x0,0x72,0x0,0x6f,0x0,0x64,0x0,0x75,0x0,0x63,0x0,0x69,0x0,0x72,0x0,0x20, - 0x0,0x63,0x0,0x61,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20, - 0x0,0x61,0x0,0x6c,0x0,0x65,0x0,0x61,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x69, - 0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x10,0x50,0x6c,0x61,0x79, - 0x20,0x52,0x61,0x6e,0x64,0x6f,0x6d,0x20,0x53,0x6f,0x6e,0x67,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xbe, - 0x0,0x52,0x0,0x65,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x64,0x0,0x75,0x0,0x7a, - 0x0,0x63,0x0,0x61,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x61, - 0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0xf3,0x0,0x6e, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x73, - 0x0,0x6f,0x0,0x6c,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x69,0x0,0x73,0x0,0x70, - 0x0,0x61,0x0,0x72,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x67,0x0,0xfa, - 0x0,0x6e,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66, - 0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x6f, - 0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x6f, - 0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe9,0x0,0x20,0x0,0x6d, - 0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x42,0x50,0x6c,0x61,0x79,0x20,0x61,0x20,0x73, - 0x69,0x6e,0x67,0x6c,0x65,0x2d,0x73,0x68,0x6f,0x74,0x20,0x61,0x6e,0x69,0x6d,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x61,0x73,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20, - 0x62,0x79,0x20,0x74,0x68,0x65,0x20,0x65,0x6d,0x6f,0x74,0x65,0x20,0x77,0x68,0x65, - 0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xee,0x0,0x52, - 0x0,0x65,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x64,0x0,0x75,0x0,0x7a,0x0,0x63, - 0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x69,0x0,0x64,0x0,0x6f, - 0x0,0x20,0x0,0x79,0x0,0x20,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61, - 0x0,0x63,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x63, - 0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x6c, - 0x0,0x61,0x0,0x20,0x0,0x76,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x6e, - 0x0,0x61,0x0,0x20,0x0,0x67,0x0,0x72,0x0,0xe1,0x0,0x66,0x0,0x69,0x0,0x63, - 0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20, - 0x0,0x73,0x0,0x69,0x0,0x67,0x0,0x75,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x74, - 0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x6a, - 0x0,0x65,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x61,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f, - 0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe9,0x0,0x20,0x0,0x6d,0x0,0x61, - 0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x5d,0x50,0x6c,0x61,0x79,0x20,0x72,0x65,0x61,0x6c,0x69, - 0x7a,0x61,0x74,0x69,0x6f,0x6e,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x61,0x6e,0x64, - 0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,0x74,0x68, - 0x65,0x20,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x20,0x6f,0x6e,0x20,0x74,0x68, - 0x65,0x20,0x6e,0x65,0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65, - 0x73,0x73,0x61,0x67,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b, - 0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x3,0x50,0x72,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x7,0x50,0x72,0x65,0x61,0x6e,0x69,0x6d,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x7a,0x0,0x50,0x0, - 0x72,0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0, - 0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0, - 0x64,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x61,0x0, - 0x20,0x0,0x74,0x0,0x6f,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0xf3,0x0, - 0x78,0x0,0x69,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0, - 0x73,0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x62,0x0, - 0x6c,0x0,0x61,0x0,0x64,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x46,0x50,0x72,0x65,0x73,0x65,0x6e,0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x70,0x69, - 0x65,0x63,0x65,0x20,0x6f,0x66,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20, - 0x74,0x6f,0x20,0x65,0x76,0x65,0x72,0x79,0x6f,0x6e,0x65,0x20,0x6f,0x6e,0x20,0x79, - 0x6f,0x75,0x72,0x20,0x6e,0x65,0x78,0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20, - 0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x52,0x0,0x61,0x0, - 0x7a,0x0,0xf3,0x0,0x6e,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x7,0x52,0x65,0x61,0x73,0x6f,0x6e,0x3a,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xaa,0x0,0x41,0x0,0x63, - 0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x20, - 0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x61,0x0,0x20, - 0x0,0x79,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20, - 0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x6d, - 0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x65, - 0x0,0x72,0x0,0x66,0x0,0x61,0x0,0x7a,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0x75,0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x20, - 0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65, - 0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x69,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x64, - 0x0,0x61,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3d, - 0x52,0x65,0x66,0x72,0x65,0x73,0x68,0x20,0x74,0x68,0x65,0x20,0x74,0x68,0x65,0x6d, - 0x65,0x20,0x61,0x6e,0x64,0x20,0x75,0x70,0x64,0x61,0x74,0x65,0x20,0x61,0x6c,0x6c, - 0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x75,0x69,0x20,0x65,0x6c,0x65,0x6d,0x65, - 0x6e,0x74,0x73,0x20,0x74,0x6f,0x20,0x6d,0x61,0x74,0x63,0x68,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff, - 0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0x52,0x65,0x6c,0x6f,0x61, - 0x64,0x20,0x74,0x68,0x65,0x6d,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xcc,0x0,0x45,0x0,0x6c,0x0, - 0x69,0x0,0x6d,0x0,0x69,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6c,0x0, - 0x20,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x73,0x0,0x77,0x0,0x61,0x0,0x70,0x0, - 0x20,0x0,0x73,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x63,0x0,0x63,0x0,0x69,0x0, - 0x6f,0x0,0x6e,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x61,0x0,0x63,0x0, - 0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0, - 0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0, - 0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x79,0x0,0x20,0x0, - 0x72,0x0,0x65,0x0,0x67,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x61,0x0,0x20,0x0, - 0x61,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72,0x0, - 0x70,0x0,0x65,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x63,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x65,0x0,0x72,0x0, - 0x65,0x0,0x73,0x0,0x20,0x0,0x6f,0x0,0x72,0x0,0x69,0x0,0x67,0x0,0x69,0x0, - 0x6e,0x0,0x61,0x0,0x6c,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x60,0x52,0x65,0x6d,0x6f,0x76,0x65,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72, - 0x65,0x6e,0x74,0x6c,0x79,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x65,0x64,0x20,0x69, - 0x6e,0x69,0x73,0x77,0x61,0x70,0x20,0x66,0x72,0x6f,0x6d,0x20,0x74,0x68,0x65,0x20, - 0x6c,0x69,0x73,0x74,0x20,0x61,0x6e,0x64,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x6f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x20, - 0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72, - 0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x6e,0x0,0x53,0x0,0x6f,0x0,0x6c,0x0,0x69,0x0,0x63,0x0, - 0x69,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x61,0x0, - 0x74,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x64,0x0,0x65,0x0, - 0x72,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x63,0x0, - 0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x6c,0x0, - 0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0, - 0x72,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x38,0x52,0x65,0x71, - 0x75,0x65,0x73,0x74,0x20,0x74,0x68,0x65,0x20,0x61,0x74,0x74,0x65,0x6e,0x74,0x69, - 0x6f,0x6e,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e, - 0x74,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x27,0x73,0x20,0x6d,0x6f,0x64,0x65,0x72, - 0x61,0x74,0x6f,0x72,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x44,0x0,0x52,0x0,0x65,0x0,0x67,0x0, - 0x72,0x0,0x65,0x0,0x73,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x61,0x0,0x20,0x0, - 0x6c,0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x61,0x0, - 0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0, - 0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x1f,0x52,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61, - 0x63,0x6b,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72, - 0x20,0x6c,0x69,0x73,0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x24,0x0,0x47,0x0,0x75,0x0,0x61, - 0x0,0x72,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x76, - 0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x69,0x0,0x6f,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe,0x53,0x61,0x76,0x65,0x20,0x49,0x6e,0x76, - 0x65,0x6e,0x74,0x6f,0x72,0x79,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x92,0x0,0x47,0x0,0x75,0x0,0x61, - 0x0,0x72,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x73, - 0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x6d,0x0,0x62,0x0,0x69,0x0,0x6f,0x0,0x73, - 0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61, - 0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65, - 0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64, - 0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x79,0x0,0x20, - 0x0,0x65,0x0,0x6e,0x0,0x76,0x0,0x69,0x0,0x61,0x0,0x72,0x0,0x6c,0x0,0x6f, - 0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72, - 0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x48,0x53,0x61,0x76,0x65,0x20,0x61,0x6e,0x79,0x20,0x63, - 0x68,0x61,0x6e,0x67,0x65,0x73,0x20,0x6d,0x61,0x64,0x65,0x20,0x74,0x6f,0x20,0x74, - 0x68,0x69,0x73,0x20,0x70,0x69,0x65,0x63,0x65,0x20,0x6f,0x66,0x20,0x65,0x76,0x69, - 0x64,0x65,0x6e,0x63,0x65,0x20,0x61,0x6e,0x64,0x20,0x73,0x65,0x6e,0x64,0x20,0x74, - 0x68,0x65,0x6d,0x20,0x74,0x6f,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x4a,0x0,0x47,0x0,0x75,0x0,0x61,0x0,0x72,0x0,0x64,0x0,0x61,0x0,0x72, - 0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x63, - 0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x75,0x0,0x6e, - 0x0,0x20,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x68,0x0,0x69,0x0,0x76,0x0,0x6f, - 0x0,0x20,0x0,0x2e,0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x1e,0x53,0x61,0x76,0x65,0x20,0x65,0x76,0x69,0x64,0x65, - 0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x61,0x6e,0x20,0x2e,0x69,0x6e,0x69,0x20,0x66, - 0x69,0x6c,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x42,0x0,0x75,0x0,0x73,0x0,0x63, - 0x0,0x61,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x53,0x65, - 0x61,0x72,0x63,0x68,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x6a,0x0,0x53,0x0,0x65,0x0,0x6c,0x0,0x65, - 0x0,0x63,0x0,0x63,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x65,0x0,0x20,0x0,0x75, - 0x0,0x6e,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e, - 0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x20, - 0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x64, - 0x0,0x65,0x0,0x73,0x0,0x65,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x6d,0x0,0x70, - 0x0,0x61,0x0,0x72,0x0,0x65,0x0,0x6a,0x0,0x61,0x0,0x72,0x0,0x73,0x0,0x65, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x29,0x53,0x65,0x6c,0x65, - 0x63,0x74,0x20,0x61,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x79, - 0x6f,0x75,0x20,0x77,0x69,0x73,0x68,0x20,0x74,0x6f,0x20,0x70,0x61,0x69,0x72,0x20, - 0x77,0x69,0x74,0x68,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x6,0x53,0x65,0x72,0x76,0x65,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x2,0x6,0x0,0x45,0x0, - 0x73,0x0,0x74,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x63,0x0,0x65,0x0, - 0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x63,0x0, - 0x74,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x6f,0x0, - 0x6e,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0, - 0x61,0x0,0x20,0x0,0x6a,0x0,0x75,0x0,0x67,0x0,0x61,0x0,0x72,0x0,0x20,0x0, - 0x65,0x0,0x6e,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x72,0x0, - 0xf3,0x0,0x78,0x0,0x69,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x27,0x0,0x50,0x0, - 0x72,0x0,0x65,0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x27,0x0,0x2e,0x0, - 0x20,0x0,0x44,0x0,0x65,0x0,0x6a,0x0,0x61,0x0,0x72,0x0,0x6c,0x0,0x6f,0x0, - 0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x50,0x0,0x72,0x0,0x65,0x0,0x64,0x0, - 0x65,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x6e,0x0,0x61,0x0, - 0x64,0x0,0x6f,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x61,0x0,0x72,0x0,0xe1,0x0, - 0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x69,0x0, - 0x64,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66,0x0,0x69,0x0,0x6e,0x0, - 0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x6f,0x0,0x72,0x0,0x20,0x0, - 0x65,0x0,0x6d,0x0,0x6f,0x0,0x74,0x0,0x69,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0, - 0x65,0x0,0x73,0x0,0x20,0x0,0x28,0x0,0x73,0x0,0x69,0x0,0x20,0x0,0x68,0x0, - 0x61,0x0,0x79,0x0,0x29,0x0,0x2e,0x0,0xa,0x0,0x45,0x0,0x64,0x0,0x69,0x0, - 0x74,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x63,0x0,0x72,0x0,0x69,0x0, - 0x62,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x79,0x0, - 0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0, - 0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x45,0x0,0x6e,0x0,0x74,0x0, - 0x65,0x0,0x72,0x0,0x2c,0x0,0x20,0x0,0x5b,0x0,0x58,0x0,0x5d,0x0,0x20,0x0, - 0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x69,0x0, - 0x6d,0x0,0x69,0x0,0x6e,0x0,0x61,0x0,0x72,0x0,0x2e,0x0,0x20,0x0,0x45,0x0, - 0x73,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x67,0x0, - 0x75,0x0,0x61,0x0,0x72,0x0,0x64,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0, - 0x65,0x0,0x6e,0x0,0x20,0x0,0x62,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x2f,0x0, - 0x63,0x0,0x68,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x65,0x0, - 0x72,0x0,0x73,0x0,0x2f,0x0,0x3c,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x72,0x0, - 0x6e,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x3e,0x0,0x2f,0x0,0x69,0x0,0x6e,0x0, - 0x69,0x0,0x73,0x0,0x77,0x0,0x61,0x0,0x70,0x0,0x73,0x0,0x2e,0x0,0x69,0x0, - 0x6e,0x0,0x69,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xe1,0x53,0x65,0x74, - 0x20,0x61,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x20, - 0x74,0x6f,0x20,0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20, - 0x6e,0x65,0x78,0x74,0x20,0x27,0x50,0x72,0x65,0x61,0x6e,0x69,0x6d,0x27,0x2e,0x20, - 0x4c,0x65,0x61,0x76,0x69,0x6e,0x67,0x20,0x69,0x74,0x20,0x6f,0x6e,0x20,0x44,0x65, - 0x66,0x61,0x75,0x6c,0x74,0x20,0x77,0x69,0x6c,0x6c,0x20,0x75,0x73,0x65,0x20,0x74, - 0x68,0x65,0x20,0x65,0x6d,0x6f,0x74,0x65,0x2d,0x64,0x65,0x66,0x69,0x6e,0x65,0x64, - 0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x28,0x69,0x66,0x20,0x61,0x6e,0x79,0x29,0x2e, - 0xa,0x45,0x64,0x69,0x74,0x20,0x62,0x79,0x20,0x74,0x79,0x70,0x69,0x6e,0x67,0x20, - 0x61,0x6e,0x64,0x20,0x70,0x72,0x65,0x73,0x73,0x69,0x6e,0x67,0x20,0x45,0x6e,0x74, - 0x65,0x72,0x2c,0x20,0x5b,0x58,0x5d,0x20,0x74,0x6f,0x20,0x72,0x65,0x6d,0x6f,0x76, - 0x65,0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x73,0x61,0x76,0x65,0x73,0x20,0x74,0x6f, - 0x20,0x79,0x6f,0x75,0x72,0x20,0x62,0x61,0x73,0x65,0x2f,0x63,0x68,0x61,0x72,0x61, - 0x63,0x74,0x65,0x72,0x73,0x2f,0x3c,0x63,0x68,0x61,0x72,0x6e,0x61,0x6d,0x65,0x3e, - 0x2f,0x73,0x6f,0x75,0x6e,0x64,0x6c,0x69,0x73,0x74,0x2e,0x69,0x6e,0x69,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0, - 0x0,0x86,0x0,0x43,0x0,0x6f,0x0,0x6e,0x0,0x66,0x0,0x69,0x0,0x67,0x0,0x75, - 0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x65,0x0,0x6d, - 0x0,0x6f,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x74, - 0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e, - 0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61, - 0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x74,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0xf3,0x0,0x78, - 0x0,0x69,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73, - 0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x38,0x53,0x65,0x74,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61, - 0x63,0x74,0x65,0x72,0x27,0x73,0x20,0x65,0x6d,0x6f,0x74,0x65,0x20,0x74,0x6f,0x20, - 0x70,0x6c,0x61,0x79,0x20,0x6f,0x6e,0x20,0x79,0x6f,0x75,0x72,0x20,0x6e,0x65,0x78, - 0x74,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x62,0x0,0x45, - 0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x63,0x0,0x65, - 0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x6e,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x75,0x0,0x70,0x0,0x6c,0x0,0x65,0x0,0x6d, - 0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x74,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x65, - 0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2e,0x53,0x65,0x74,0x20,0x79,0x6f, - 0x75,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73,0x20,0x73, - 0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x72,0x79,0x20,0x62,0x61,0x63, - 0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x65,0x74,0x74,0x69,0x6e,0x67,0x73,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff, - 0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x53,0x66,0x78,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x8c,0x0,0x41,0x0,0x67,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x20,0x0, - 0x6c,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x6e,0x0,0x74,0x0,0x61,0x0, - 0x6c,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0, - 0x6c,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x67,0x0,0x75,0x0,0x69,0x0,0x65,0x0, - 0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0, - 0x61,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x62,0x0,0x6c,0x0, - 0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x75,0x0,0x61,0x0,0x6e,0x0, - 0x64,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe9,0x0,0x20,0x0, - 0x6d,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x35,0x53,0x68,0x61,0x6b,0x65,0x20,0x74, - 0x68,0x65,0x20,0x73,0x63,0x72,0x65,0x65,0x6e,0x20,0x6f,0x6e,0x20,0x6e,0x65,0x78, - 0x74,0x20,0x73,0x70,0x6f,0x6b,0x65,0x6e,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65, - 0x20,0x77,0x68,0x65,0x6e,0x20,0x63,0x68,0x65,0x63,0x6b,0x65,0x64,0x2e,0x7,0x0, - 0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff, - 0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x53,0x68,0x6f,0x77, - 0x6e,0x61,0x6d,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x9,0x53,0x68,0x6f,0x77,0x6e,0x61,0x6d,0x65,0x73,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x14,0x0, - 0x45,0x0,0x73,0x0,0x70,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x61,0x0,0x64,0x0, - 0x6f,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x53,0x70,0x65, - 0x63,0x74,0x61,0x74,0x6f,0x72,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x8c,0x0,0xa1,0x0,0x47,0x0,0x75, - 0x0,0x61,0x0,0x72,0x0,0x64,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x63, - 0x0,0x6f,0x0,0x6e,0x0,0x20,0x0,0xe9,0x0,0x78,0x0,0x69,0x0,0x74,0x0,0x6f, - 0x0,0x2c,0x0,0x20,0x0,0x70,0x0,0x75,0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0x65,0x0,0x64,0x0,0x69,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x65, - 0x0,0x6c,0x0,0x20,0x0,0x64,0x0,0x6f,0x0,0x63,0x0,0x20,0x0,0x79,0x0,0x20, - 0x0,0x64,0x0,0x6f,0x0,0x63,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x6b, - 0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x61, - 0x0,0x72,0x0,0x63,0x0,0x68,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x20,0x0,0x69, - 0x0,0x6e,0x0,0x69,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x36, - 0x53,0x75,0x63,0x63,0x65,0x73,0x66,0x75,0x6c,0x6c,0x79,0x20,0x73,0x61,0x76,0x65, - 0x64,0x2c,0x20,0x65,0x64,0x69,0x74,0x20,0x64,0x6f,0x63,0x20,0x61,0x6e,0x64,0x20, - 0x63,0x6d,0x64,0x6f,0x63,0x20,0x6c,0x69,0x6e,0x6b,0x20,0x6f,0x6e,0x20,0x74,0x68, - 0x65,0x20,0x69,0x6e,0x69,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x4c,0x0,0x43,0x0,0x61,0x0,0x6d, - 0x0,0x62,0x0,0x69,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x74, - 0x0,0x72,0x0,0x65,0x0,0x20,0x0,0xe1,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x73, - 0x0,0x20,0x0,0x79,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x61, - 0x0,0x73,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x6d,0x0,0xfa,0x0,0x73, - 0x0,0x69,0x0,0x63,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x24, - 0x53,0x77,0x69,0x74,0x63,0x68,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6e,0x20,0x41, - 0x72,0x65,0x61,0x73,0x20,0x61,0x6e,0x64,0x20,0x4d,0x75,0x73,0x69,0x63,0x20,0x6c, - 0x69,0x73,0x74,0x73,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f, - 0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x54,0x0,0x43,0x0,0x61,0x0,0x6d,0x0,0x62, - 0x0,0x69,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x65, - 0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61, - 0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x76,0x0,0x65, - 0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x20,0x0,0x67, - 0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x61,0x0,0x6c,0x0,0x2e,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x24,0x53,0x77,0x69,0x74,0x63,0x68,0x20,0x65,0x76,0x69, - 0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20, - 0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x54,0x0,0x45, - 0x0,0x6e,0x0,0x76,0x0,0x69,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x6c,0x0,0x61, - 0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x63, - 0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x69,0x0,0x6e, - 0x0,0x76,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x69,0x0,0x6f, - 0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x69,0x0,0x76,0x0,0x61,0x0,0x64,0x0,0x6f, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x25,0x53,0x77,0x69,0x74, - 0x63,0x68,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x70, - 0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79, - 0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x16,0x0,0x53,0x0,0x69,0x0,0x6e,0x0,0x63,0x0,0x72,0x0, - 0x6f,0x0,0x6e,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x72,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0xb,0x53,0x79,0x6e,0x63,0x68,0x72,0x6f,0x6e,0x69,0x7a,0x65, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x14,0x0,0xa1,0x0,0x54,0x0,0x6f,0x0,0x6d,0x0,0x61,0x0,0x20, - 0x0,0x45,0x0,0x73,0x0,0x6f,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0xa,0x54,0x61,0x6b,0x65,0x20,0x54,0x68,0x61,0x74,0x21,0x7,0x0,0x0,0x0, - 0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xc, - 0x0,0x45,0x0,0x6e,0x0,0x20,0x0,0x75,0x0,0x73,0x0,0x6f,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x5,0x54,0x61,0x6b,0x65,0x6e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x30,0x0, - 0x45,0x0,0x6c,0x0,0x20,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x61,0x0, - 0x6a,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x6d,0x0,0x75,0x0, - 0x79,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x72,0x0,0x67,0x0,0x6f,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x18,0x54,0x68,0x65,0x20,0x6d,0x65,0x73, - 0x73,0x61,0x67,0x65,0x20,0x69,0x73,0x20,0x74,0x6f,0x6f,0x20,0x6c,0x6f,0x6e,0x67, - 0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x62,0x0,0x4c,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x76,0x0, - 0x69,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0, - 0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x68,0x0,0x61,0x0,0x73,0x0,0x20,0x0, - 0x65,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x65,0x0, - 0x64,0x0,0x69,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x20,0x0, - 0x68,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x6d,0x0,0x62,0x0,0x69,0x0, - 0x61,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x36,0x54,0x68,0x65,0x20,0x70,0x69,0x65,0x63,0x65,0x20,0x6f,0x66,0x20,0x65,0x76, - 0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x79,0x6f,0x75,0x27,0x76,0x65,0x20,0x62,0x65, - 0x65,0x6e,0x20,0x65,0x64,0x69,0x74,0x69,0x6e,0x67,0x20,0x68,0x61,0x73,0x20,0x63, - 0x68,0x61,0x6e,0x67,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x8c,0x0,0x45,0x0,0x73,0x0, - 0x74,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x72,0x0, - 0x61,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x61,0x0, - 0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0, - 0x20,0x0,0x65,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x76,0x0, - 0x69,0x0,0x65,0x0,0x77,0x0,0x70,0x0,0x6f,0x0,0x72,0x0,0x74,0x0,0x20,0x0, - 0x74,0x0,0x61,0x0,0x6e,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x6e,0x0, - 0x74,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0, - 0x73,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x69,0x0, - 0x6f,0x0,0x6e,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x49,0x54,0x68,0x69,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x64,0x69,0x73,0x70,0x6c, - 0x61,0x79,0x20,0x74,0x68,0x65,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69,0x6f,0x6e, - 0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x76,0x69,0x65,0x77,0x70,0x6f,0x72,0x74, - 0x20,0x61,0x73,0x20,0x73,0x6f,0x6f,0x6e,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x69, - 0x73,0x20,0x70,0x72,0x65,0x73,0x73,0x65,0x64,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x2,0x2,0x0,0x45, - 0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x73,0x0,0x74, - 0x0,0x72,0x0,0x61,0x0,0x72,0x0,0xe1,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20, - 0x0,0x61,0x0,0x6e,0x0,0x69,0x0,0x6d,0x0,0x61,0x0,0x63,0x0,0x69,0x0,0xf3, - 0x0,0x6e,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72, - 0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x70, - 0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x69, - 0x0,0x7a,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x66, - 0x0,0x69,0x0,0x6e,0x0,0x69,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x6e, - 0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x76,0x0,0x69,0x0,0x65,0x0,0x77, - 0x0,0x70,0x0,0x6f,0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x74,0x0,0x61,0x0,0x6e, - 0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0,0x20, - 0x0,0x63,0x0,0x6f,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x20, - 0x0,0x70,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x65, - 0x0,0x2e,0x0,0xa,0x0,0x50,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x68, - 0x0,0x61,0x0,0x63,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x61, - 0x0,0x2c,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72, - 0x0,0x70,0x0,0x65,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20, - 0x0,0x74,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f, - 0x0,0x6e,0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x62, - 0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x6e, - 0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74, - 0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f, - 0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x64,0x0,0x6f, - 0x0,0x73,0x0,0x20,0x0,0x5b,0x0,0x77,0x0,0x65,0x0,0x62,0x0,0x70,0x0,0x2f, - 0x0,0x61,0x0,0x70,0x0,0x6e,0x0,0x67,0x0,0x2f,0x0,0x67,0x0,0x69,0x0,0x66, - 0x0,0x2f,0x0,0x70,0x0,0x6e,0x0,0x67,0x0,0x5d,0x0,0x2e,0x0,0x20,0x0,0x59, - 0x0,0x20,0x0,0x65,0x0,0x66,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x6f,0x0,0x73, - 0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x61, - 0x0,0x6c,0x0,0x69,0x0,0x7a,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20, - 0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x6f,0x0,0x6e,0x0,0x69,0x0,0x64, - 0x0,0x6f,0x0,0x20,0x0,0x5b,0x0,0x77,0x0,0x61,0x0,0x76,0x0,0x2f,0x0,0x6f, - 0x0,0x67,0x0,0x67,0x0,0x2f,0x0,0x6f,0x0,0x70,0x0,0x75,0x0,0x73,0x0,0x5d, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd6,0x54,0x68,0x69,0x73,0x20,0x77, - 0x69,0x6c,0x6c,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x20,0x74,0x68,0x65,0x20, - 0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72, - 0x2d,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x61,0x6e,0x69,0x6d,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x76,0x69,0x65,0x77,0x70,0x6f, - 0x72,0x74,0x20,0x61,0x73,0x20,0x73,0x6f,0x6f,0x6e,0x20,0x61,0x73,0x20,0x69,0x74, - 0x20,0x69,0x73,0x20,0x70,0x72,0x65,0x73,0x73,0x65,0x64,0x2e,0xa,0x54,0x6f,0x20, - 0x6d,0x61,0x6b,0x65,0x20,0x6f,0x6e,0x65,0x2c,0x20,0x79,0x6f,0x75,0x72,0x20,0x63, - 0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x27,0x73,0x20,0x66,0x6f,0x6c,0x64,0x65, - 0x72,0x20,0x6d,0x75,0x73,0x74,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x20,0x63, - 0x75,0x73,0x74,0x6f,0x6d,0x2e,0x5b,0x77,0x65,0x62,0x70,0x2f,0x61,0x70,0x6e,0x67, - 0x2f,0x67,0x69,0x66,0x2f,0x70,0x6e,0x67,0x5d,0x20,0x61,0x6e,0x64,0x20,0x63,0x75, - 0x73,0x74,0x6f,0x6d,0x2e,0x5b,0x77,0x61,0x76,0x2f,0x6f,0x67,0x67,0x2f,0x6f,0x70, - 0x75,0x73,0x5d,0x20,0x73,0x6f,0x75,0x6e,0x64,0x20,0x65,0x66,0x66,0x65,0x63,0x74, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x10,0x0,0x41,0x0,0x6c,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x6e, - 0x0,0x64,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x54,0x6f, - 0x20,0x62,0x65,0x68,0x69,0x6e,0x64,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x41,0x0,0x6c,0x0, - 0x20,0x0,0x66,0x0,0x72,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x54,0x6f,0x20,0x66,0x72,0x6f,0x6e,0x74,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x0,0x6a,0x0,0x41,0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x6e,0x0, - 0x61,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x72,0x0,0x65,0x0, - 0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x74,0x0, - 0x20,0x0,0x64,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0, - 0x76,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x20,0x0,0x79,0x0,0x20,0x0, - 0x65,0x0,0x6c,0x0,0x20,0x0,0x63,0x0,0x68,0x0,0x61,0x0,0x74,0x0,0x20,0x0, - 0x67,0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x61,0x0,0x6c,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x2f,0x54,0x6f,0x67,0x67,0x6c,0x65,0x20,0x62,0x65, - 0x74,0x77,0x65,0x65,0x6e,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x63,0x68,0x61, - 0x74,0x20,0x61,0x6e,0x64,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x41,0x4f,0x32, - 0x20,0x63,0x68,0x61,0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xbc,0x0,0xa1,0x0,0x44,0x0,0x65, - 0x0,0x6d,0x0,0x61,0x0,0x73,0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x73, - 0x0,0x20,0x0,0x61,0x0,0x72,0x0,0x67,0x0,0x75,0x0,0x6d,0x0,0x65,0x0,0x6e, - 0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61, - 0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x67,0x0,0x61,0x0,0x72,0x0,0x20, - 0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x21, - 0x0,0x20,0x0,0x53,0x0,0x6f,0x0,0x6c,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x65, - 0x0,0x63,0x0,0x65,0x0,0x73,0x0,0x69,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x75, - 0x0,0x6e,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x6d,0x0,0x62,0x0,0x72,0x0,0x65, - 0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x68, - 0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x6e, - 0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x69, - 0x0,0xf3,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x51, - 0x54,0x6f,0x6f,0x20,0x6d,0x61,0x6e,0x79,0x20,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e, - 0x74,0x73,0x20,0x74,0x6f,0x20,0x6c,0x6f,0x61,0x64,0x20,0x61,0x20,0x63,0x61,0x73, - 0x65,0x21,0x20,0x59,0x6f,0x75,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x6e,0x65,0x65,0x64, - 0x20,0x6f,0x6e,0x65,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x77, - 0x69,0x74,0x68,0x6f,0x75,0x74,0x20,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e, - 0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x1,0x2,0x0,0xa1,0x0,0x44,0x0,0x65,0x0,0x6d,0x0,0x61,0x0, - 0x73,0x0,0x69,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x61,0x0, - 0x72,0x0,0x67,0x0,0x75,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x6f,0x0, - 0x73,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x73,0x0, - 0x61,0x0,0x6c,0x0,0x76,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x75,0x0,0x6e,0x0, - 0x20,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x21,0x0,0x20,0x0,0x53,0x0, - 0x6f,0x0,0x6c,0x0,0x6f,0x0,0x20,0x0,0x6e,0x0,0x65,0x0,0x63,0x0,0x65,0x0, - 0x73,0x0,0x69,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0, - 0x6e,0x0,0x6f,0x0,0x6d,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x20,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x68,0x0,0x69,0x0,0x76,0x0, - 0x6f,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x6e,0x0,0x20,0x0,0x65,0x0,0x78,0x0, - 0x74,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0, - 0x79,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0, - 0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x6c,0x0, - 0x61,0x0,0x20,0x0,0x73,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x64,0x0, - 0x65,0x0,0x6c,0x0,0x20,0x0,0x74,0x0,0x72,0x0,0x69,0x0,0x62,0x0,0x75,0x0, - 0x6e,0x0,0x61,0x0,0x6c,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x67,0x54,0x6f,0x6f,0x20,0x6d,0x61,0x6e,0x79,0x20,0x61,0x72,0x67,0x75,0x6d,0x65, - 0x6e,0x74,0x73,0x20,0x74,0x6f,0x20,0x73,0x61,0x76,0x65,0x20,0x61,0x20,0x63,0x61, - 0x73,0x65,0x21,0x20,0x59,0x6f,0x75,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x6e,0x65,0x65, - 0x64,0x20,0x61,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x20,0x77,0x69,0x74, - 0x68,0x6f,0x75,0x74,0x20,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x20,0x61, - 0x6e,0x64,0x20,0x74,0x68,0x65,0x20,0x63,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d, - 0x20,0x73,0x74,0x61,0x74,0x75,0x73,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x54,0x0,0x54,0x0,0x72, - 0x0,0x61,0x0,0x6e,0x0,0x73,0x0,0x66,0x0,0x65,0x0,0x72,0x0,0x69,0x0,0x72, - 0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x63, - 0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x61,0x0,0x6c,0x0,0x20,0x0,0x69,0x0,0x6e, - 0x0,0x76,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x72,0x0,0x69,0x0,0x6f, - 0x0,0x20,0x0,0x67,0x0,0x6c,0x0,0x6f,0x0,0x62,0x0,0x61,0x0,0x6c,0x0,0x2e, - 0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x26,0x54,0x72,0x61,0x6e,0x73,0x66, - 0x65,0x72,0x20,0x65,0x76,0x69,0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x67, - 0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79,0x2e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x56,0x0,0x54,0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x73,0x0,0x66, - 0x0,0x65,0x0,0x72,0x0,0x69,0x0,0x72,0x0,0x20,0x0,0x65,0x0,0x76,0x0,0x69, - 0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x61, - 0x0,0x6c,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x76,0x0,0x65,0x0,0x6e,0x0,0x74, - 0x0,0x61,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x72,0x0,0x69, - 0x0,0x76,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6, - 0x0,0x0,0x0,0x27,0x54,0x72,0x61,0x6e,0x73,0x66,0x65,0x72,0x20,0x65,0x76,0x69, - 0x64,0x65,0x6e,0x63,0x65,0x20,0x74,0x6f,0x20,0x70,0x72,0x69,0x76,0x61,0x74,0x65, - 0x20,0x69,0x6e,0x76,0x65,0x6e,0x74,0x6f,0x72,0x79,0x2e,0x7,0x0,0x0,0x0,0x9, - 0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0xff,0xff,0xff,0xff,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x55,0x4e,0x4b,0x4e,0x4f,0x57,0x4e, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x90,0x0,0x43,0x0,0x75,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x6f, - 0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x73, - 0x0,0x20,0x0,0x61,0x0,0x63,0x0,0x74,0x0,0x69,0x0,0x76,0x0,0x61,0x0,0x64, - 0x0,0x6f,0x0,0x2c,0x0,0x20,0x0,0x74,0x0,0x75,0x0,0x20,0x0,0x70,0x0,0x72, - 0x0,0xf3,0x0,0x78,0x0,0x69,0x0,0x6d,0x0,0x6f,0x0,0x20,0x0,0x6d,0x0,0x65, - 0x0,0x6e,0x0,0x73,0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65, - 0x0,0x6c,0x0,0x20,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x6e, - 0x0,0x61,0x0,0x6a,0x0,0x65,0x0,0x20,0x0,0x73,0x0,0x65,0x0,0x72,0x0,0xe1, - 0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x67,0x0,0x72,0x0,0x69,0x0,0x74, - 0x0,0x6f,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x47,0x57,0x68, - 0x65,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x74,0x75,0x72,0x6e,0x65, - 0x64,0x20,0x6f,0x6e,0x2c,0x20,0x79,0x6f,0x75,0x72,0x20,0x6e,0x65,0x78,0x74,0x20, - 0x69,0x6e,0x2d,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x20,0x6d,0x65,0x73, - 0x73,0x61,0x67,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x61,0x20,0x73, - 0x68,0x6f,0x75,0x74,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72, - 0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x74,0x0,0xa1,0x0,0x4e,0x0,0x6f,0x0, - 0x20,0x0,0x74,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x73,0x0,0x20,0x0, - 0x75,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x70,0x0, - 0x65,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x60,0x0,0x62,0x0,0x61,0x0,0x73,0x0, - 0x65,0x0,0x2f,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x73,0x0,0x20,0x0, - 0x2f,0x0,0x60,0x0,0x21,0x0,0x20,0x0,0x46,0x0,0x75,0x0,0x65,0x0,0x20,0x0, - 0x63,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x70,0x0, - 0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x74,0x0,0x69,0x0,0x2e,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x91,0x59,0x6f,0x75,0x20,0x64,0x6f,0x6e,0x27,0x74, - 0x20,0x68,0x61,0x76,0x65,0x20,0x61,0x20,0x60,0x62,0x61,0x73,0x65,0x2f,0x63,0x61, - 0x73,0x65,0x73,0x2f,0x60,0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x21,0x20,0x49,0x74, - 0x20,0x77,0x61,0x73,0x20,0x6a,0x75,0x73,0x74,0x20,0x6d,0x61,0x64,0x65,0x20,0x66, - 0x6f,0x72,0x20,0x79,0x6f,0x75,0x2c,0x20,0x62,0x75,0x74,0x20,0x73,0x65,0x65,0x69, - 0x6e,0x67,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x57,0x41,0x53,0x20,0x6a,0x75,0x73, - 0x74,0x20,0x6d,0x61,0x64,0x65,0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x2c,0x20, - 0x69,0x74,0x27,0x73,0x20,0x6c,0x69,0x6b,0x65,0x6c,0x79,0x20,0x74,0x68,0x61,0x74, - 0x20,0x79,0x6f,0x75,0x20,0x73,0x6f,0x6d,0x65,0x68,0x6f,0x77,0x20,0x64,0x65,0x6c, - 0x65,0x74,0x65,0x64,0x20,0x69,0x74,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75, - 0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x1,0x16,0x0,0xa1,0x0,0x4e, - 0x0,0x6f,0x0,0x20,0x0,0x74,0x0,0x69,0x0,0x65,0x0,0x6e,0x0,0x65,0x0,0x73, - 0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72, - 0x0,0x70,0x0,0x65,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x60,0x0,0x62,0x0,0x61, - 0x0,0x73,0x0,0x65,0x0,0x2f,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x73, - 0x0,0x20,0x0,0x2f,0x0,0x60,0x0,0x21,0x0,0x20,0x0,0x48,0x0,0x61,0x0,0x20, - 0x0,0x73,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x72,0x0,0x65, - 0x0,0x61,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61, - 0x0,0x20,0x0,0x74,0x0,0x69,0x0,0x2e,0x0,0x20,0x0,0x50,0x0,0x65,0x0,0x72, - 0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x62,0x0,0x69,0x0,0x64,0x0,0x6f, - 0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x6e, - 0x0,0x6f,0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x69,0x0,0x73,0x0,0x74,0x0,0x69, - 0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72, - 0x0,0x70,0x0,0x65,0x0,0x74,0x0,0x61,0x0,0x2c,0x0,0x20,0x0,0x74,0x0,0x61, - 0x0,0x6d,0x0,0x70,0x0,0x6f,0x0,0x63,0x0,0x6f,0x0,0x20,0x0,0x68,0x0,0x61, - 0x0,0x62,0x0,0xed,0x0,0x61,0x0,0x6e,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x73, - 0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x67,0x0,0x75,0x0,0x61,0x0,0x72,0x0,0x64, - 0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x68,0x0,0xed, - 0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xae,0x59,0x6f,0x75,0x20, - 0x64,0x6f,0x6e,0x27,0x74,0x20,0x68,0x61,0x76,0x65,0x20,0x61,0x20,0x60,0x62,0x61, - 0x73,0x65,0x2f,0x63,0x61,0x73,0x65,0x73,0x2f,0x60,0x20,0x66,0x6f,0x6c,0x64,0x65, - 0x72,0x21,0x20,0x49,0x74,0x20,0x77,0x61,0x73,0x20,0x6a,0x75,0x73,0x74,0x20,0x6d, - 0x61,0x64,0x65,0x20,0x66,0x6f,0x72,0x20,0x79,0x6f,0x75,0x2c,0x20,0x62,0x75,0x74, - 0x20,0x73,0x65,0x65,0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x69,0x74,0x20,0x57,0x41, - 0x53,0x20,0x6a,0x75,0x73,0x74,0x20,0x6d,0x61,0x64,0x65,0x20,0x66,0x6f,0x72,0x20, - 0x79,0x6f,0x75,0x2c,0x20,0x69,0x74,0x27,0x73,0x20,0x6c,0x69,0x6b,0x65,0x6c,0x79, - 0x20,0x74,0x68,0x65,0x20,0x63,0x61,0x73,0x65,0x20,0x66,0x69,0x6c,0x65,0x20,0x79, - 0x6f,0x75,0x27,0x72,0x65,0x20,0x6c,0x6f,0x6f,0x6b,0x69,0x6e,0x67,0x20,0x66,0x6f, - 0x72,0x20,0x63,0x61,0x6e,0x27,0x74,0x20,0x62,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64, - 0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x72,0x65,0x2e,0x7,0x0,0x0,0x0,0x9,0x43, - 0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x20,0x0,0x48, - 0x0,0x61,0x0,0x73,0x0,0x20,0x0,0x73,0x0,0x69,0x0,0x64,0x0,0x6f,0x0,0x20, - 0x0,0x76,0x0,0x65,0x0,0x74,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x2e,0x8,0x0, - 0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x15,0x59,0x6f,0x75,0x20,0x68,0x61,0x76,0x65, - 0x20,0x62,0x65,0x65,0x6e,0x20,0x62,0x61,0x6e,0x6e,0x65,0x64,0x2e,0x7,0x0,0x0, - 0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0, - 0x3a,0x0,0x44,0x0,0x65,0x0,0x62,0x0,0x65,0x0,0x73,0x0,0x20,0x0,0x70,0x0, - 0x72,0x0,0x6f,0x0,0x70,0x0,0x6f,0x0,0x72,0x0,0x63,0x0,0x69,0x0,0x6f,0x0, - 0x6e,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x61,0x0,0x20,0x0, - 0x72,0x0,0x61,0x0,0x7a,0x0,0xf3,0x0,0x6e,0x0,0x2e,0x8,0x0,0x0,0x0,0x0, - 0x6,0x0,0x0,0x0,0x1a,0x59,0x6f,0x75,0x20,0x6d,0x75,0x73,0x74,0x20,0x70,0x72, - 0x6f,0x76,0x69,0x64,0x65,0x20,0x61,0x20,0x72,0x65,0x61,0x73,0x6f,0x6e,0x2e,0x7, - 0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0, - 0x0,0x1,0x6e,0x0,0xa1,0x0,0x44,0x0,0x65,0x0,0x62,0x0,0x65,0x0,0x20,0x0, - 0x64,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x6e,0x0, - 0x6f,0x0,0x6d,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x20,0x0,0x61,0x0,0x72,0x0,0x63,0x0,0x68,0x0,0x69,0x0,0x76,0x0,0x6f,0x0, - 0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0, - 0x72,0x0,0x67,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x28,0x0,0x6e,0x0,0x6f,0x0, - 0x20,0x0,0x73,0x0,0x65,0x0,0x20,0x0,0x6e,0x0,0x65,0x0,0x63,0x0,0x65,0x0, - 0x73,0x0,0x69,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x78,0x0,0x74,0x0, - 0x65,0x0,0x6e,0x0,0x73,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x29,0x0,0x21,0x0, - 0x20,0x0,0x41,0x0,0x73,0x0,0x65,0x0,0x67,0x0,0xfa,0x0,0x72,0x0,0x65,0x0, - 0x73,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x71,0x0,0x75,0x0, - 0x65,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe9,0x0,0x20,0x0,0x65,0x0, - 0x6e,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72,0x0, - 0x70,0x0,0x65,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x60,0x0,0x62,0x0,0x61,0x0, - 0x73,0x0,0x65,0x0,0x2f,0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x65,0x0,0x73,0x0, - 0x2f,0x0,0x60,0x0,0x20,0x0,0x79,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x74,0x0,0x65,0x0,0x6e,0x0,0x67,0x0, - 0x61,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x66,0x0,0x6f,0x0,0x72,0x0, - 0x6d,0x0,0x61,0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x72,0x0, - 0x72,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x6f,0x0,0x2e,0x0,0xa,0x0,0x43,0x0, - 0x61,0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0, - 0x20,0x0,0x70,0x0,0x75,0x0,0x65,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x63,0x0, - 0x61,0x0,0x72,0x0,0x67,0x0,0x61,0x0,0x72,0x0,0x3a,0x0,0x20,0x0,0x25,0x0, - 0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xae,0x59,0x6f,0x75,0x20,0x6e, - 0x65,0x65,0x64,0x20,0x74,0x6f,0x20,0x67,0x69,0x76,0x65,0x20,0x61,0x20,0x66,0x69, - 0x6c,0x65,0x6e,0x61,0x6d,0x65,0x20,0x74,0x6f,0x20,0x6c,0x6f,0x61,0x64,0x20,0x28, - 0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x20,0x6e,0x6f,0x74,0x20,0x6e,0x65, - 0x65,0x64,0x65,0x64,0x29,0x21,0x20,0x4d,0x61,0x6b,0x65,0x20,0x73,0x75,0x72,0x65, - 0x20,0x74,0x68,0x61,0x74,0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x69,0x6e,0x20,0x74, - 0x68,0x65,0x20,0x60,0x62,0x61,0x73,0x65,0x2f,0x63,0x61,0x73,0x65,0x73,0x2f,0x60, - 0x20,0x66,0x6f,0x6c,0x64,0x65,0x72,0x2c,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x61, - 0x74,0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x61,0x20,0x63,0x6f,0x72,0x72,0x65,0x63, - 0x74,0x6c,0x79,0x20,0x66,0x6f,0x72,0x6d,0x61,0x74,0x74,0x65,0x64,0x20,0x69,0x6e, - 0x69,0x2e,0xa,0x43,0x61,0x73,0x65,0x73,0x20,0x79,0x6f,0x75,0x20,0x63,0x61,0x6e, - 0x20,0x6c,0x6f,0x61,0x64,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x9,0x43,0x6f, - 0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0xdc,0x0,0xa1,0x0, - 0x44,0x0,0x65,0x0,0x62,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x61,0x0,0x72,0x0, - 0x20,0x0,0x75,0x0,0x6e,0x0,0x20,0x0,0x6e,0x0,0x6f,0x0,0x6d,0x0,0x62,0x0, - 0x72,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x61,0x0,0x72,0x0, - 0x63,0x0,0x68,0x0,0x69,0x0,0x76,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0, - 0x72,0x0,0x61,0x0,0x20,0x0,0x67,0x0,0x75,0x0,0x61,0x0,0x72,0x0,0x64,0x0, - 0x61,0x0,0x72,0x0,0x20,0x0,0x28,0x0,0x6e,0x0,0x6f,0x0,0x20,0x0,0x73,0x0, - 0x65,0x0,0x20,0x0,0x6e,0x0,0x65,0x0,0x63,0x0,0x65,0x0,0x73,0x0,0x69,0x0, - 0x74,0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x65,0x0,0x78,0x0, - 0x74,0x0,0x65,0x0,0x6e,0x0,0x73,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x29,0x0, - 0x20,0x0,0x79,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x65,0x0,0x73,0x0, - 0x74,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0, - 0x6c,0x0,0x61,0x0,0x20,0x0,0x73,0x0,0x61,0x0,0x6c,0x0,0x61,0x0,0x20,0x0, - 0x64,0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x74,0x0,0x72,0x0,0x69,0x0,0x62,0x0, - 0x75,0x0,0x6e,0x0,0x61,0x0,0x6c,0x0,0x21,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x54,0x59,0x6f,0x75,0x20,0x6e,0x65,0x65,0x64,0x20,0x74,0x6f,0x20,0x67, - 0x69,0x76,0x65,0x20,0x61,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x20,0x74, - 0x6f,0x20,0x73,0x61,0x76,0x65,0x20,0x28,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f, - 0x6e,0x20,0x6e,0x6f,0x74,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x29,0x20,0x61,0x6e, - 0x64,0x20,0x74,0x68,0x65,0x20,0x63,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x20, - 0x73,0x74,0x61,0x74,0x75,0x73,0x21,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72, - 0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x84,0x0,0x53,0x0,0x65,0x0, - 0x20,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x63,0x0, - 0x65,0x0,0x64,0x0,0x69,0x0,0xf3,0x0,0x20,0x0,0x65,0x0,0x6c,0x0,0x20,0x0, - 0x62,0x0,0x6f,0x0,0x74,0x0,0xf3,0x0,0x6e,0x0,0x20,0x0,0x20,0x0,0x70,0x0, - 0x61,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x73,0x0,0x68,0x0, - 0x61,0x0,0x62,0x0,0x69,0x0,0x6c,0x0,0x69,0x0,0x74,0x0,0x61,0x0,0x72,0x0, - 0x20,0x0,0x6c,0x0,0x6c,0x0,0x61,0x0,0x6d,0x0,0x61,0x0,0x64,0x0,0x61,0x0, - 0x73,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x6d,0x0,0x6f,0x0,0x64,0x0,0x65,0x0, - 0x72,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x72,0x0,0x65,0x0,0x73,0x0,0x2e,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2d,0x59,0x6f,0x75,0x20,0x77,0x65,0x72, - 0x65,0x20,0x67,0x72,0x61,0x6e,0x74,0x65,0x64,0x20,0x74,0x68,0x65,0x20,0x44,0x69, - 0x73,0x61,0x62,0x6c,0x65,0x20,0x4d,0x6f,0x64,0x63,0x61,0x6c,0x6c,0x73,0x20,0x62, - 0x75,0x74,0x74,0x6f,0x6e,0x2e,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74, - 0x72,0x6f,0x6f,0x6d,0x1,0x3,0x0,0x0,0x0,0x32,0x0,0x53,0x0,0x75,0x0,0x20, - 0x0,0x63,0x0,0x61,0x0,0x73,0x0,0x6f,0x0,0x20,0x0,0x22,0x0,0x25,0x0,0x31, - 0x0,0x22,0x0,0x20,0x0,0x66,0x0,0x75,0x0,0x65,0x0,0x20,0x0,0x63,0x0,0x61, - 0x0,0x72,0x0,0x67,0x0,0x61,0x0,0x64,0x0,0x6f,0x0,0x21,0x8,0x0,0x0,0x0, - 0x0,0x6,0x0,0x0,0x0,0x1a,0x59,0x6f,0x75,0x72,0x20,0x63,0x61,0x73,0x65,0x20, - 0x22,0x25,0x31,0x22,0x20,0x77,0x61,0x73,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x21, - 0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1,0x3, - 0x0,0x0,0x0,0x32,0x0,0x68,0x0,0x61,0x0,0x20,0x0,0x72,0x0,0x65,0x0,0x70, - 0x0,0x72,0x0,0x6f,0x0,0x64,0x0,0x75,0x0,0x63,0x0,0x69,0x0,0x64,0x0,0x6f, - 0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x6e,0x0,0x63, - 0x0,0x69,0x0,0xf3,0x0,0x6e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x11, - 0x68,0x61,0x73,0x20,0x70,0x6c,0x61,0x79,0x65,0x64,0x20,0x61,0x20,0x73,0x6f,0x6e, - 0x67,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f,0x6d,0x1, - 0x3,0x0,0x0,0x0,0x2e,0x0,0x68,0x0,0x61,0x0,0x20,0x0,0x70,0x0,0x72,0x0, - 0x65,0x0,0x73,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x61,0x0,0x64,0x0,0x6f,0x0, - 0x20,0x0,0x65,0x0,0x76,0x0,0x69,0x0,0x64,0x0,0x65,0x0,0x6e,0x0,0x63,0x0, - 0x69,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x16,0x68,0x61,0x73, - 0x20,0x70,0x72,0x65,0x73,0x65,0x6e,0x74,0x65,0x64,0x20,0x65,0x76,0x69,0x64,0x65, - 0x6e,0x63,0x65,0x7,0x0,0x0,0x0,0x9,0x43,0x6f,0x75,0x72,0x74,0x72,0x6f,0x6f, - 0x6d,0x1,0x3,0x0,0x0,0x0,0x12,0x0,0x41,0x0,0x63,0x0,0x65,0x0,0x72,0x0, - 0x63,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x5,0x41,0x62,0x6f,0x75,0x74,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62, - 0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x5e,0x0,0x4c,0x0,0x65,0x0,0x20,0x0,0x70, - 0x0,0x65,0x0,0x72,0x0,0x6d,0x0,0x69,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x63, - 0x0,0x61,0x0,0x6d,0x0,0x62,0x0,0x69,0x0,0x61,0x0,0x72,0x0,0x20,0x0,0x76, - 0x0,0x61,0x0,0x72,0x0,0x69,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x73, - 0x0,0x70,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x64, - 0x0,0x65,0x0,0x6c,0x0,0x20,0x0,0x63,0x0,0x6c,0x0,0x69,0x0,0x65,0x0,0x6e, - 0x0,0x74,0x0,0x65,0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x33, - 0x41,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x79,0x6f,0x75,0x20,0x74,0x6f,0x20,0x63,0x68, - 0x61,0x6e,0x67,0x65,0x20,0x76,0x61,0x72,0x69,0x6f,0x75,0x73,0x20,0x61,0x73,0x70, - 0x65,0x63,0x74,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x63,0x6c,0x69,0x65, - 0x6e,0x74,0x2e,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0, - 0x0,0x0,0x24,0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0, - 0x65,0x0,0x79,0x0,0x20,0x0,0x4f,0x0,0x6e,0x0,0x6c,0x0,0x69,0x0,0x6e,0x0, - 0x65,0x0,0x20,0x0,0x25,0x0,0x31,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x12,0x41,0x74,0x74,0x6f,0x72,0x6e,0x65,0x79,0x20,0x4f,0x6e,0x6c,0x69,0x6e,0x65, - 0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0, - 0x0,0x0,0x10,0x0,0x43,0x0,0x61,0x0,0x6e,0x0,0x63,0x0,0x65,0x0,0x6c,0x0, - 0x61,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x43,0x61,0x6e, - 0x63,0x65,0x6c,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0, - 0x0,0x1,0x32,0x0,0x4e,0x0,0x6f,0x0,0x20,0x0,0x70,0x0,0x61,0x0,0x72,0x0, - 0x65,0x0,0x63,0x0,0x65,0x0,0x20,0x0,0x71,0x0,0x75,0x0,0x65,0x0,0x20,0x0, - 0x73,0x0,0x75,0x0,0x20,0x0,0x63,0x0,0x6c,0x0,0x69,0x0,0x65,0x0,0x6e,0x0, - 0x74,0x0,0x65,0x0,0x20,0x0,0x65,0x0,0x73,0x0,0x74,0x0,0xe9,0x0,0x20,0x0, - 0x63,0x0,0x6f,0x0,0x6e,0x0,0x66,0x0,0x69,0x0,0x67,0x0,0x75,0x0,0x72,0x0, - 0x61,0x0,0x64,0x0,0x6f,0x0,0x20,0x0,0x63,0x0,0x6f,0x0,0x72,0x0,0x72,0x0, - 0x65,0x0,0x63,0x0,0x74,0x0,0x61,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0, - 0x65,0x0,0x2e,0x0,0xa,0x0,0xbf,0x0,0x44,0x0,0x65,0x0,0x73,0x0,0x63,0x0, - 0x61,0x0,0x72,0x0,0x67,0x0,0xf3,0x0,0x20,0x0,0x74,0x0,0x6f,0x0,0x64,0x0, - 0x6f,0x0,0x73,0x0,0x20,0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x20,0x0,0x72,0x0, - 0x65,0x0,0x63,0x0,0x75,0x0,0x72,0x0,0x73,0x0,0x6f,0x0,0x73,0x0,0x20,0x0, - 0x63,0x0,0x6f,0x0,0x72,0x0,0x72,0x0,0x65,0x0,0x63,0x0,0x74,0x0,0x61,0x0, - 0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x65,0x0,0x20,0x0,0x64,0x0,0x65,0x0, - 0x73,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x74,0x0,0x69,0x0,0x6e,0x0,0x79,0x0, - 0x2e,0x0,0x63,0x0,0x63,0x0,0x2f,0x0,0x67,0x0,0x65,0x0,0x74,0x0,0x61,0x0, - 0x6f,0x0,0x2c,0x0,0x20,0x0,0x69,0x0,0x6e,0x0,0x63,0x0,0x6c,0x0,0x75,0x0, - 0x69,0x0,0x64,0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x61,0x0,0x20,0x0,0x67,0x0, - 0x72,0x0,0x61,0x0,0x6e,0x0,0x20,0x0,0x63,0x0,0x61,0x0,0x72,0x0,0x70,0x0, - 0x65,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0x27,0x0,0x62,0x0,0x61,0x0,0x73,0x0, - 0x65,0x0,0x27,0x0,0x3f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x95,0x49, - 0x74,0x20,0x64,0x6f,0x65,0x73,0x6e,0x27,0x74,0x20,0x6c,0x6f,0x6f,0x6b,0x20,0x6c, - 0x69,0x6b,0x65,0x20,0x79,0x6f,0x75,0x72,0x20,0x63,0x6c,0x69,0x65,0x6e,0x74,0x20, - 0x69,0x73,0x20,0x73,0x65,0x74,0x20,0x75,0x70,0x20,0x63,0x6f,0x72,0x72,0x65,0x63, - 0x74,0x6c,0x79,0x2e,0xa,0x44,0x69,0x64,0x20,0x79,0x6f,0x75,0x20,0x64,0x6f,0x77, - 0x6e,0x6c,0x6f,0x61,0x64,0x20,0x61,0x6c,0x6c,0x20,0x72,0x65,0x73,0x6f,0x75,0x72, - 0x63,0x65,0x73,0x20,0x63,0x6f,0x72,0x72,0x65,0x63,0x74,0x6c,0x79,0x20,0x66,0x72, - 0x6f,0x6d,0x20,0x74,0x69,0x6e,0x79,0x2e,0x63,0x63,0x2f,0x67,0x65,0x74,0x61,0x6f, - 0x2c,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20, - 0x6c,0x61,0x72,0x67,0x65,0x20,0x27,0x62,0x61,0x73,0x65,0x27,0x20,0x66,0x6f,0x6c, - 0x64,0x65,0x72,0x3f,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3, - 0x0,0x0,0x0,0x10,0x0,0x43,0x0,0x61,0x0,0x72,0x0,0x67,0x0,0x61,0x0,0x6e, - 0x0,0x64,0x0,0x6f,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x4c,0x6f, - 0x61,0x64,0x69,0x6e,0x67,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1, - 0x3,0x0,0x0,0x0,0xc,0x0,0x4e,0x0,0x6f,0x0,0x6d,0x0,0x62,0x0,0x72,0x0, - 0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x4e,0x61,0x6d,0x65,0x7, - 0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0xff,0xff,0xff,0xff,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2,0x4e,0x6f,0x7,0x0,0x0,0x0,0x5, - 0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x1c,0x0,0x46,0x0,0x75,0x0, - 0x65,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x64,0x0,0x65,0x0,0x20,0x0,0x6c,0x0, - 0xed,0x0,0x6e,0x0,0x65,0x0,0x61,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x7,0x4f,0x66,0x66,0x6c,0x69,0x6e,0x65,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62, - 0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x1e,0x0,0x45,0x0,0x6e,0x0,0x20,0x0,0x6c, - 0x0,0xed,0x0,0x6e,0x0,0x65,0x0,0x61,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31, - 0x0,0x2f,0x0,0x25,0x0,0x32,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xd, - 0x4f,0x6e,0x6c,0x69,0x6e,0x65,0x3a,0x20,0x25,0x31,0x2f,0x25,0x32,0x7,0x0,0x0, - 0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0xc,0x0,0x42,0x0, - 0x75,0x0,0x73,0x0,0x63,0x0,0x61,0x0,0x72,0x8,0x0,0x0,0x0,0x0,0x6,0x0, - 0x0,0x0,0x6,0x53,0x65,0x61,0x72,0x63,0x68,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f, - 0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x41,0x0,0x6a,0x0,0x75,0x0, - 0x73,0x0,0x74,0x0,0x65,0x0,0x73,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0, - 0x8,0x53,0x65,0x74,0x74,0x69,0x6e,0x67,0x73,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f, - 0x62,0x62,0x79,0x1,0x3,0x0,0x0,0x0,0x16,0x0,0x56,0x0,0x65,0x0,0x72,0x0, - 0x73,0x0,0x69,0x0,0xf3,0x0,0x6e,0x0,0x3a,0x0,0x20,0x0,0x25,0x0,0x31,0x8, - 0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xb,0x56,0x65,0x72,0x73,0x69,0x6f,0x6e, - 0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1,0x3, - 0x0,0x0,0x0,0x4,0x0,0x53,0x0,0xed,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0, - 0x0,0x3,0x59,0x65,0x73,0x7,0x0,0x0,0x0,0x5,0x4c,0x6f,0x62,0x62,0x79,0x1, - 0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x55, - 0x4e,0x4b,0x4e,0x4f,0x57,0x4e,0x7,0x0,0x0,0x0,0xc,0x63,0x68,0x61,0x74,0x6c, - 0x6f,0x67,0x70,0x69,0x65,0x63,0x65,0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0, - 0x0,0x0,0x6,0x0,0x0,0x0,0x5,0x45,0x72,0x72,0x6f,0x72,0x7,0x0,0x0,0x0, - 0xf,0x64,0x65,0x62,0x75,0x67,0x5f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73, - 0x1,0x3,0xff,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9, - 0x45,0x72,0x72,0x6f,0x72,0x3a,0x20,0x25,0x31,0x7,0x0,0x0,0x0,0xf,0x64,0x65, - 0x62,0x75,0x67,0x5f,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x1,0x3,0xff, - 0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0x4e,0x6f,0x74, - 0x69,0x63,0x65,0x7,0x0,0x0,0x0,0xf,0x64,0x65,0x62,0x75,0x67,0x5f,0x66,0x75, - 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x1,0x88,0x0,0x0,0x0,0x2,0x1,0x1, - -}; - -static const unsigned char qt_resource_name[] = { - // resource - 0x0,0x8, - 0xc,0xa6,0xc7,0x95, - 0x0,0x72, - 0x0,0x65,0x0,0x73,0x0,0x6f,0x0,0x75,0x0,0x72,0x0,0x63,0x0,0x65, - // logo_ao2.png - 0x0,0xc, - 0xa,0x4e,0x9d,0xe7, - 0x0,0x6c, - 0x0,0x6f,0x0,0x67,0x0,0x6f,0x0,0x5f,0x0,0x61,0x0,0x6f,0x0,0x32,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, - // translations - 0x0,0xc, - 0xd,0xfc,0x11,0x13, - 0x0,0x74, - 0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x73,0x0,0x6c,0x0,0x61,0x0,0x74,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x73, - // fonts - 0x0,0x5, - 0x0,0x6d,0x65,0xb3, - 0x0,0x66, - 0x0,0x6f,0x0,0x6e,0x0,0x74,0x0,0x73, - // Ace-Attorney.ttf - 0x0,0x10, - 0x7,0xce,0xd0,0x86, - 0x0,0x41, - 0x0,0x63,0x0,0x65,0x0,0x2d,0x0,0x41,0x0,0x74,0x0,0x74,0x0,0x6f,0x0,0x72,0x0,0x6e,0x0,0x65,0x0,0x79,0x0,0x2e,0x0,0x74,0x0,0x74,0x0,0x66, - // ao_de.qm - 0x0,0x8, - 0x5,0x5a,0x88,0x7d, - 0x0,0x61, - 0x0,0x6f,0x0,0x5f,0x0,0x64,0x0,0x65,0x0,0x2e,0x0,0x71,0x0,0x6d, - // ao_pl.qm - 0x0,0x8, - 0x5,0x66,0xf8,0x7d, - 0x0,0x61, - 0x0,0x6f,0x0,0x5f,0x0,0x70,0x0,0x6c,0x0,0x2e,0x0,0x71,0x0,0x6d, - // ao_jp.qm - 0x0,0x8, - 0x5,0x61,0x38,0x7d, - 0x0,0x61, - 0x0,0x6f,0x0,0x5f,0x0,0x6a,0x0,0x70,0x0,0x2e,0x0,0x71,0x0,0x6d, - // ao_ru.qm - 0x0,0x8, - 0x5,0x69,0x88,0x7d, - 0x0,0x61, - 0x0,0x6f,0x0,0x5f,0x0,0x72,0x0,0x75,0x0,0x2e,0x0,0x71,0x0,0x6d, - // ao_pt.qm - 0x0,0x8, - 0x5,0x67,0x78,0x7d, - 0x0,0x61, - 0x0,0x6f,0x0,0x5f,0x0,0x70,0x0,0x74,0x0,0x2e,0x0,0x71,0x0,0x6d, - // ao_en.qm - 0x0,0x8, - 0x5,0x5c,0x18,0x7d, - 0x0,0x61, - 0x0,0x6f,0x0,0x5f,0x0,0x65,0x0,0x6e,0x0,0x2e,0x0,0x71,0x0,0x6d, - // ao_es.qm - 0x0,0x8, - 0x5,0x5c,0x68,0x7d, - 0x0,0x61, - 0x0,0x6f,0x0,0x5f,0x0,0x65,0x0,0x73,0x0,0x2e,0x0,0x71,0x0,0x6d, - -}; - -static const unsigned char qt_resource_struct[] = { - // : - 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1, -0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - // :/resource - 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x2, -0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - // :/resource/fonts - 0x0,0x0,0x0,0x52,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc, -0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - // :/resource/logo_ao2.png - 0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, -0x0,0x0,0x1,0x80,0x9f,0x12,0xac,0xf2, - // :/resource/translations - 0x0,0x0,0x0,0x34,0x0,0x2,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x5, -0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - // :/resource/translations/ao_de.qm - 0x0,0x0,0x0,0x88,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x80,0xf2, -0x0,0x0,0x1,0x80,0x9f,0x12,0xac,0xf2, - // :/resource/translations/ao_en.qm - 0x0,0x0,0x0,0xf6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3,0xa1,0xbf, -0x0,0x0,0x1,0x80,0x9f,0x12,0xac,0xf2, - // :/resource/translations/ao_es.qm - 0x0,0x0,0x1,0xc,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3,0xa1,0xe4, -0x0,0x0,0x1,0x80,0x9f,0x12,0xac,0xf2, - // :/resource/translations/ao_jp.qm - 0x0,0x0,0x0,0xb4,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2,0x25,0x22, -0x0,0x0,0x1,0x80,0x9f,0x12,0xac,0xf2, - // :/resource/translations/ao_pl.qm - 0x0,0x0,0x0,0x9e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x34,0xfa, -0x0,0x0,0x1,0x80,0x9f,0x12,0xac,0xf2, - // :/resource/translations/ao_pt.qm - 0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3,0x2,0xa1, -0x0,0x0,0x1,0x80,0x9f,0x12,0xac,0xf2, - // :/resource/translations/ao_ru.qm - 0x0,0x0,0x0,0xca,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2,0x34,0x91, -0x0,0x0,0x1,0x80,0x9f,0x12,0xac,0xf2, - // :/resource/fonts/Ace-Attorney.ttf - 0x0,0x0,0x0,0x62,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x72,0x7a, -0x0,0x0,0x1,0x80,0x9f,0x12,0xac,0xe8, - -}; - -#ifdef QT_NAMESPACE -# define QT_RCC_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name -# define QT_RCC_MANGLE_NAMESPACE0(x) x -# define QT_RCC_MANGLE_NAMESPACE1(a, b) a##_##b -# define QT_RCC_MANGLE_NAMESPACE2(a, b) QT_RCC_MANGLE_NAMESPACE1(a,b) -# define QT_RCC_MANGLE_NAMESPACE(name) QT_RCC_MANGLE_NAMESPACE2( \ - QT_RCC_MANGLE_NAMESPACE0(name), QT_RCC_MANGLE_NAMESPACE0(QT_NAMESPACE)) -#else -# define QT_RCC_PREPEND_NAMESPACE(name) name -# define QT_RCC_MANGLE_NAMESPACE(name) name -#endif - -#ifdef QT_NAMESPACE -namespace QT_NAMESPACE { -#endif - -bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); -bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); - -#if defined(__ELF__) || defined(__APPLE__) -static inline unsigned char qResourceFeatureZlib() -{ - extern const unsigned char qt_resourceFeatureZlib; - return qt_resourceFeatureZlib; -} -#else -unsigned char qResourceFeatureZlib(); -#endif - -#ifdef QT_NAMESPACE -} -#endif - -int QT_RCC_MANGLE_NAMESPACE(qInitResources_resources)(); -int QT_RCC_MANGLE_NAMESPACE(qInitResources_resources)() -{ - int version = 3; - QT_RCC_PREPEND_NAMESPACE(qRegisterResourceData) - (version, qt_resource_struct, qt_resource_name, qt_resource_data); - return 1; -} - -int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_resources)(); -int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_resources)() -{ - int version = 3; - version += QT_RCC_PREPEND_NAMESPACE(qResourceFeatureZlib()); - QT_RCC_PREPEND_NAMESPACE(qUnregisterResourceData) - (version, qt_resource_struct, qt_resource_name, qt_resource_data); - return 1; -} - -namespace { - struct initializer { - initializer() { QT_RCC_MANGLE_NAMESPACE(qInitResources_resources)(); } - ~initializer() { QT_RCC_MANGLE_NAMESPACE(qCleanupResources_resources)(); } - } dummy; -} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index 297a4f46..00000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,39 +0,0 @@ -target_sources(Attorney_Online PRIVATE -aoapplication.cpp -aoblipplayer.cpp -aobutton.cpp -aocaseannouncerdialog.cpp -aocharbutton.cpp -aoclocklabel.cpp -aoemotebutton.cpp -aoemotepreview.cpp -aoevidencebutton.cpp -aoevidencedisplay.cpp -aoimage.cpp -aolayer.cpp -aomusicplayer.cpp -aooptionsdialog.cpp -aoclocklabel.cpp -aopacket.cpp -aosfxplayer.cpp -aotextarea.cpp -aoutils.cpp -charselect.cpp -chatlogpiece.cpp -courtroom.cpp -debug_functions.cpp -demoserver.cpp -discord_rich_presence.cpp -emotes.cpp -evidence.cpp -file_functions.cpp -hardware_functions.cpp -lobby.cpp -main.cpp -misc_functions.cpp -networkmanager.cpp -packet_distribution.cpp -path_functions.cpp -scrolltext.cpp -text_file_functions.cpp -) diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index 24682bc2..edd241b6 100644 --- a/src/aoapplication.cpp +++ b/src/aoapplication.cpp @@ -11,14 +11,14 @@ static QtMessageHandler original_message_handler; static AOApplication *message_handler_context; -void message_handler(QtMsgType type, const QMessageLogContext &context, - const QString &msg) +void message_handler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { - emit message_handler_context->qt_log_message(type, context, msg); + Q_EMIT message_handler_context->qt_log_message(type, context, msg); original_message_handler(type, context, msg); } -AOApplication::AOApplication(int &argc, char **argv) : QApplication(argc, argv) +AOApplication::AOApplication(int &argc, char **argv) + : QApplication(argc, argv) { net_manager = new NetworkManager(this); discord = new AttorneyOnline::Discord(); @@ -42,7 +42,8 @@ AOApplication::~AOApplication() void AOApplication::construct_lobby() { - if (lobby_constructed) { + if (lobby_constructed) + { qWarning() << "lobby was attempted constructed when it already exists"; return; } @@ -56,17 +57,22 @@ void AOApplication::construct_lobby() w_lobby->move(x, y); if (Options::getInstance().discordEnabled()) + { discord->state_lobby(); + } if (demo_server) - demo_server->deleteLater(); + { + demo_server->deleteLater(); + } demo_server = new DemoServer(this); w_lobby->show(); } void AOApplication::destruct_lobby() { - if (!lobby_constructed) { + if (!lobby_constructed) + { qWarning() << "lobby was attempted destructed when it did not exist"; return; } @@ -78,7 +84,8 @@ void AOApplication::destruct_lobby() void AOApplication::construct_courtroom() { - if (courtroom_constructed) { + if (courtroom_constructed) + { qWarning() << "courtroom was attempted constructed when it already exists"; return; } @@ -91,18 +98,20 @@ void AOApplication::construct_courtroom() int y = (geometry.height() - w_courtroom->height()) / 2; w_courtroom->move(x, y); - if (demo_server != nullptr) { - QObject::connect(demo_server, &DemoServer::skip_timers, - w_courtroom, &Courtroom::skip_clocks); + if (demo_server != nullptr) + { + QObject::connect(demo_server, &DemoServer::skip_timers, w_courtroom, &Courtroom::skip_clocks); } - else { + else + { qWarning() << "demo server did not exist during courtroom construction"; } } void AOApplication::destruct_courtroom() { - if (!courtroom_constructed) { + if (!courtroom_constructed) + { qWarning() << "courtroom was attempted destructed when it did not exist"; return; } @@ -114,13 +123,13 @@ void AOApplication::destruct_courtroom() QString AOApplication::get_version_string() { - return QString::number(RELEASE) + "." + QString::number(MAJOR_VERSION) + "." + - QString::number(MINOR_VERSION); + return QString::number(RELEASE) + "." + QString::number(MAJOR_VERSION) + "." + QString::number(MINOR_VERSION); } void AOApplication::server_disconnected() { - if (courtroom_constructed) { + if (courtroom_constructed) + { call_notice(tr("Disconnected from server.")); construct_lobby(); destruct_courtroom(); @@ -135,22 +144,21 @@ void AOApplication::loading_cancelled() void AOApplication::call_settings_menu() { - AOOptionsDialog* l_dialog = new AOOptionsDialog(nullptr, this); - if (courtroom_constructed) { - connect(l_dialog, &AOOptionsDialog::reloadThemeRequest, - w_courtroom, &Courtroom::on_reload_theme_clicked); - } + AOOptionsDialog *l_dialog = new AOOptionsDialog(this); + if (courtroom_constructed) + { + connect(l_dialog, &AOOptionsDialog::reloadThemeRequest, w_courtroom, &Courtroom::on_reload_theme_clicked); + } - if(lobby_constructed) { - } - l_dialog->exec(); - delete l_dialog; + if (lobby_constructed) + {} + l_dialog->exec(); + delete l_dialog; } // Callback for when BASS device is lost // Only actually used for music syncs -void CALLBACK AOApplication::BASSreset(HSTREAM handle, DWORD channel, - DWORD data, void *user) +void CALLBACK AOApplication::BASSreset(HSTREAM handle, DWORD channel, DWORD data, void *user) { Q_UNUSED(handle); Q_UNUSED(channel); @@ -175,16 +183,19 @@ void AOApplication::initBASS() unsigned int a = 0; BASS_DEVICEINFO info; - if (Options::getInstance().audioOutputDevice() == "default") { + if (Options::getInstance().audioOutputDevice() == "default") + { BASS_Init(-1, 48000, BASS_DEVICE_LATENCY, nullptr, nullptr); load_bass_plugins(); } - else { - for (a = 0; BASS_GetDeviceInfo(a, &info); a++) { - if (Options::getInstance().audioOutputDevice() == info.name) { + else + { + for (a = 0; BASS_GetDeviceInfo(a, &info); a++) + { + if (Options::getInstance().audioOutputDevice() == info.name) + { BASS_SetDevice(a); - BASS_Init(static_cast(a), 48000, BASS_DEVICE_LATENCY, nullptr, - nullptr); + BASS_Init(static_cast(a), 48000, BASS_DEVICE_LATENCY, nullptr, nullptr); load_bass_plugins(); qInfo() << info.name << "was set as the default audio output device."; BASS_SetConfigPtr(BASS_CONFIG_MIDI_DEFFONT, QString(get_base_path() + "soundfont.sf2").toStdString().c_str()); diff --git a/src/aoapplication.h b/src/aoapplication.h new file mode 100644 index 00000000..41eabf50 --- /dev/null +++ b/src/aoapplication.h @@ -0,0 +1,369 @@ +#pragma once + +#include "aopacket.h" +#include "datatypes.h" +#include "demoserver.h" +#include "discord_rich_presence.h" +#include "widgets/aooptionsdialog.h" + +#include "bass.h" + +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include + +class NetworkManager; +class Lobby; +class Courtroom; +class Options; + +class VPath : QString +{ + using QString::QString; + +public: + explicit VPath(const QString &str) + : QString(str) + {} + inline const QString &toQString() const { return *this; } + inline bool operator==(const VPath &str) const { return this->toQString() == str.toQString(); } + inline VPath operator+(const VPath &str) const { return VPath(this->toQString() + str.toQString()); } +}; + +inline uint qHash(const VPath &key, uint seed = qGlobalQHashSeed()) +{ + return qHash(key.toQString(), seed); +} + +class AOApplication : public QApplication +{ + Q_OBJECT + +public: + AOApplication(int &argc, char **argv); + ~AOApplication(); + + NetworkManager *net_manager; + Lobby *w_lobby; + Courtroom *w_courtroom; + AttorneyOnline::Discord *discord; + + QFont default_font; + + bool lobby_constructed = false; + bool courtroom_constructed = false; + + void construct_lobby(); + void destruct_lobby(); + + void construct_courtroom(); + void destruct_courtroom(); + + void server_packet_received(AOPacket p_packet); + + void send_server_packet(AOPacket p_packet); + + void call_settings_menu(); + + qint64 latency = 0; + QString window_title; + + /////////////////server metadata////////////////// + + bool yellow_text_supported = false; + bool prezoom_supported = false; + bool flipping_supported = false; + bool custom_objection_supported = false; + bool desk_mod_supported = false; + bool evidence_supported = false; + bool cccc_ic_supported = false; + bool arup_supported = false; + bool casing_alerts_supported = false; + bool modcall_reason_supported = false; + bool looping_sfx_supported = false; + bool additive_text_supported = false; + bool effects_supported = false; + bool y_offset_supported = false; + bool expanded_desk_mods_supported = false; + bool auth_packet_supported = false; + + ///////////////loading info/////////////////// + + // client ID. Not useful, to be removed eventually + int client_id = 0; + + QString server_software; + + int char_list_size = 0; + int loaded_chars = 0; + int generated_chars = 0; + int evidence_list_size = 0; + int loaded_evidence = 0; + int music_list_size = 0; + int loaded_music = 0; + + bool courtroom_loaded = false; + + //////////////////versioning/////////////// + + QString get_version_string(); + + /////////////////////////////////////////// + + void set_server_list(QVector &servers) { server_list = servers; } + QVector &get_server_list() { return server_list; } + + // implementation in path_functions.cpp + VPath get_theme_path(QString p_file, QString p_theme = QString()); + VPath get_character_path(QString p_char, QString p_file); + VPath get_misc_path(QString p_misc, QString p_file); + VPath get_sounds_path(QString p_file); + VPath get_music_path(QString p_song); + VPath get_background_path(QString p_file); + VPath get_default_background_path(QString p_file); + VPath get_evidence_path(QString p_file); + QVector get_asset_paths(QString p_element, QString p_theme = QString(), QString p_subtheme = QString(), QString p_default_theme = QString(), QString p_misc = QString(), QString p_character = QString(), QString p_placeholder = QString()); + QString get_asset_path(QVector pathlist); + QString get_image_path(QVector pathlist, bool static_image = false); + QString get_sfx_path(QVector pathlist); + QString get_config_value(QString p_identifier, QString p_config, QString p_theme = QString(), QString p_subtheme = QString(), QString p_default_theme = QString(), QString p_misc = QString()); + QString get_asset(QString p_element, QString p_theme = QString(), QString p_subtheme = QString(), QString p_default_theme = QString(), QString p_misc = QString(), QString p_character = QString(), QString p_placeholder = QString()); + QString get_image(QString p_element, QString p_theme = QString(), QString p_subtheme = QString(), QString p_default_theme = QString(), QString p_misc = QString(), QString p_character = QString(), QString p_placeholder = QString(), bool static_image = false); + QString get_sfx(QString p_sfx, QString p_misc = QString(), QString p_character = QString()); + QString get_pos_path(const QString &pos, bool desk = false); + QString get_case_sensitive_path(QString p_file); + QString get_real_path(const VPath &vpath, const QStringList &suffixes = {""}); + + ////// Functions for reading and writing files ////// + // Implementations file_functions.cpp + + // returns all of the file's lines in a QStringList + QStringList get_list_file(VPath path); + QStringList get_list_file(QString p_file); + + // Process a file and return its text as a QString + QString read_file(QString filename); + + // Write text to file. make_dir would auto-create the directory if it doesn't + // exist. + bool write_to_file(QString p_text, QString p_file, bool make_dir = false); + + // Append text to the end of the file. make_dir would auto-create the + // directory if it doesn't exist. + bool append_to_file(QString p_text, QString p_file, bool make_dir = false); + + // Append to the currently open demo file if there is one + void append_to_demofile(QString packet_string); + + /** + * @brief Reads the clients log folder and locates potential demo files to populate the demoserver list. + * + * @return A seperated list of servernames and demo logfile filenames. + * + * @details This is to remove the need of delimiters or deal with potential + * harmfully encoding or plattform differences. We always get a combo of servername and filename. + * + * Do note this function assumes all demo files have the .demo extension. + * + */ + QMultiMap load_demo_logs_list() const; + + // Returns the value of p_identifier in the design.ini file in p_design_path + QString read_design_ini(QString p_identifier, VPath p_design_path); + QString read_design_ini(QString p_identifier, QString p_design_path); + + // Returns the coordinates of widget with p_identifier from p_file + QPoint get_button_spacing(QString p_identifier, QString p_file); + + // Returns the dimensions of widget with specified identifier from p_file + pos_size_type get_element_dimensions(QString p_identifier, QString p_file, QString p_misc = QString()); + + // Returns the value to you + QString get_design_element(QString p_identifier, QString p_file, QString p_misc = QString()); + + // Returns the color with p_identifier from p_file + QColor get_color(QString p_identifier, QString p_file); + + // Returns the markup symbol used for specified p_identifier such as colors + QString get_chat_markup(QString p_identifier, QString p_file); + + // Returns the color from the misc folder. + QColor get_chat_color(QString p_identifier, QString p_chat); + + // Returns the value with p_identifier from penalty/penalty.ini in the current + // theme path + QString get_penalty_value(QString p_identifier); + + // Returns the sfx with p_identifier from courtroom_sounds.ini in the current theme path + QString get_court_sfx(QString p_identifier, QString p_misc = QString()); + + // Figure out if we can opus this or if we should fall back to wav + QString get_sfx_suffix(VPath sound_to_check); + + // Can we use APNG for this? If not, WEBP? If not, GIF? If not, fall back to + // PNG. + QString get_image_suffix(VPath path_to_check, bool static_image = false); + + // Returns the value of p_search_line within target_tag and terminator_tag + QString read_char_ini(QString p_char, QString p_search_line, QString target_tag); + + // Returns a QStringList of all key=value definitions on a given tag. + QStringList read_ini_tags(VPath p_file, QString target_tag = QString()); + + // Returns the text between target_tag and terminator_tag in p_file + QString get_stylesheet(QString p_file); + + // Returns the side of the p_char character from that characters ini file + QString get_char_side(QString p_char); + + // Returns the showname from the ini of p_char + QString get_showname(QString p_char); + + // Returns the category of this character + QString get_category(QString p_char); + + // Returns the value of chat image from the specific p_char's ini file + QString get_chat(QString p_char); + + // Returns the value of chat font from the specific p_char's ini file + QString get_chat_font(QString p_char); + + // Returns the value of chat font size from the specific p_char's ini file + int get_chat_size(QString p_char); + + // Returns the preanim duration of p_char's p_emote + int get_preanim_duration(QString p_char, QString p_emote); + + // Not in use + int get_text_delay(QString p_char, QString p_emote); + + // Get the theme's effects folder, read it and return the list of filenames in + // a string + QStringList get_effects(QString p_char); + + // Get the correct effect image + QString get_effect(QString effect, QString p_char, QString p_folder); + + // Return p_property of fx_name. If p_property is "sound", return + // the value associated with fx_name, otherwise use fx_name + '_' + p_property. + QString get_effect_property(QString fx_name, QString p_char, QString p_folder, QString p_property); + + // Returns the custom realisation used by the character. + QString get_custom_realization(QString p_char); + + // Returns whether the given pos is a judge position + bool get_pos_is_judge(const QString &p_pos); + + // Returns the total amount of emotes of p_char + int get_emote_number(QString p_char); + + // Returns the emote comment of p_char's p_emote + QString get_emote_comment(QString p_char, int p_emote); + + // Returns the base name of p_char's p_emote + QString get_emote(QString p_char, int p_emote); + + // Returns the preanimation name of p_char's p_emote + QString get_pre_emote(QString p_char, int p_emote); + + // Returns the sfx of p_char's p_emote + QString get_sfx_name(QString p_char, int p_emote); + + // Returns if the sfx is defined as looping in char.ini + QString get_sfx_looping(QString p_char, int p_emote); + + // Returns if an emote has a frame specific SFX for it + QString get_sfx_frame(QString p_char, QString p_emote, int n_frame); + + // Returns if an emote has a frame specific SFX for it + QString get_flash_frame(QString p_char, QString p_emote, int n_frame); + + // Returns if an emote has a frame specific SFX for it + QString get_screenshake_frame(QString p_char, QString p_emote, int n_frame); + + // Not in use + int get_sfx_delay(QString p_char, int p_emote); + + // Returns the modifier for p_char's p_emote + int get_emote_mod(QString p_char, int p_emote); + + // Returns the desk modifier for p_char's p_emote + int get_desk_mod(QString p_char, int p_emote); + + // Returns p_char's blips (previously called their "gender") + QString get_blips(QString p_char); + + // Get a property of a given emote, or get it from "options" if emote doesn't have it + QString get_emote_property(QString p_char, QString p_emote, QString p_property); + + // Return a transformation mode from a string ("smooth" for smooth, anything else for fast) + Qt::TransformationMode get_scaling(QString p_scaling); + + // Returns the scaling type for p_miscname + Qt::TransformationMode get_misc_scaling(QString p_miscname); + + // ====== + // These are all casing-related settings. + // ====== + + // Currently defined subtheme + QString subtheme; + + // Default is always default. + const QString default_theme = "default"; + + // The file name of the log file in base/logs. + QString log_filename; + + /** + * @brief A QString of an URL that defines the content repository + * send by the server. + * + * @details Introduced in Version 2.9.2. + * Addresses the issue of contenturl devlivery for WebAO + * without relying on someone adding the link manually. + */ + QString asset_url; + + void initBASS(); + static void load_bass_plugins(); + static void CALLBACK BASSreset(HSTREAM handle, DWORD channel, DWORD data, void *user); + static void doBASSreset(); + + QElapsedTimer demo_timer; + DemoServer *demo_server = nullptr; + +private: + const int RELEASE = 2; + const int MAJOR_VERSION = 11; + const int MINOR_VERSION = 0; + + QVector server_list; + QHash asset_lookup_cache; + QHash dir_listing_cache; + QSet dir_listing_exist_cache; + +public Q_SLOTS: + void server_disconnected(); + void loading_cancelled(); + +Q_SIGNALS: + void qt_log_message(QtMsgType type, const QMessageLogContext &context, const QString &msg); +}; diff --git a/src/aoblipplayer.cpp b/src/aoblipplayer.cpp index 5dc24678..cf877fd7 100644 --- a/src/aoblipplayer.cpp +++ b/src/aoblipplayer.cpp @@ -1,24 +1,25 @@ #include "aoblipplayer.h" -AOBlipPlayer::AOBlipPlayer(QWidget *parent, AOApplication *p_ao_app) -{ - m_parent = parent; - ao_app = p_ao_app; -} +AOBlipPlayer::AOBlipPlayer(AOApplication *p_ao_app) + : ao_app(p_ao_app) +{} void AOBlipPlayer::set_blips(QString p_sfx) { QString f_path = ao_app->get_sfx_suffix(ao_app->get_sounds_path(p_sfx)); - for (int n_stream = 0; n_stream < 5; ++n_stream) { + for (int n_stream = 0; n_stream < 5; ++n_stream) + { BASS_StreamFree(m_stream_list[n_stream]); if (f_path.endsWith(".opus")) - m_stream_list[n_stream] = BASS_OPUS_StreamCreateFile( - FALSE, f_path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); + { + m_stream_list[n_stream] = BASS_OPUS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); + } else - m_stream_list[n_stream] = BASS_StreamCreateFile( - FALSE, f_path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); + { + m_stream_list[n_stream] = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); + } } set_volume_internal(m_volume); @@ -29,7 +30,9 @@ void AOBlipPlayer::blip_tick() int f_cycle = m_cycle++; if (m_cycle == 5) + { m_cycle = 0; + } HSTREAM f_stream = m_stream_list[f_cycle]; @@ -54,7 +57,8 @@ void AOBlipPlayer::set_volume_internal(qreal p_value) // If muted, volume will always be 0 float volume = static_cast(p_value) * !m_muted; - for (int n_stream = 0; n_stream < 5; ++n_stream) { + for (int n_stream = 0; n_stream < 5; ++n_stream) + { BASS_ChannelSetAttribute(m_stream_list[n_stream], BASS_ATTRIB_VOL, volume); } } diff --git a/src/aoblipplayer.h b/src/aoblipplayer.h new file mode 100644 index 00000000..bc878b80 --- /dev/null +++ b/src/aoblipplayer.h @@ -0,0 +1,31 @@ +#pragma once + +#include "bass.h" +#include "bassopus.h" + +#include "aoapplication.h" + +#include +#include +#include +#include + +class AOBlipPlayer +{ +public: + AOBlipPlayer(AOApplication *p_ao_app); + + void set_blips(QString p_sfx); + void blip_tick(); + void set_volume(int p_volume); + void set_muted(bool toggle); + +private: + AOApplication *ao_app; + qreal m_volume = 0.0; + int m_cycle = 0; + bool m_muted = false; + HSTREAM m_stream_list[5]; + + void set_volume_internal(qreal p_volume); +}; diff --git a/src/aobutton.cpp b/src/aobutton.cpp index 5ef2a066..4fc50d65 100644 --- a/src/aobutton.cpp +++ b/src/aobutton.cpp @@ -4,40 +4,44 @@ #include "file_functions.h" #include "options.h" -AOButton::AOButton(QWidget *parent, AOApplication *p_ao_app) +AOButton::AOButton(AOApplication *p_ao_app, QWidget *parent) : QPushButton(parent) + , ao_app(p_ao_app) { - ao_app = p_ao_app; - movie = new QMovie(this); - connect(movie, &QMovie::frameChanged, [this]{ - this->setIcon(movie->currentPixmap().scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + m_movie = new QMovie(this); + + connect(m_movie, &QMovie::frameChanged, this, [this] { + this->setIcon(m_movie->currentPixmap().scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); this->setIconSize(QSize(this->width(), this->height())); }); } -AOButton::~AOButton() {} +AOButton::~AOButton() +{} void AOButton::set_image(QString p_path, QString p_misc) { - movie->stop(); + m_movie->stop(); QString p_image; - p_image = ao_app->get_image(p_path, Options::getInstance().theme(), Options::getInstance().subTheme(), - ao_app->default_theme, p_misc, "", "", !Options::getInstance().animatedThemeEnabled()); - if (p_image.isEmpty()) { - this->setIcon(QIcon()); - this->setIconSize(this->size()); - this->setStyleSheet(""); - return; + p_image = ao_app->get_image(p_path, Options::getInstance().theme(), Options::getInstance().subTheme(), ao_app->default_theme, p_misc, "", "", !Options::getInstance().animatedThemeEnabled()); + if (p_image.isEmpty()) + { + this->setIcon(QIcon()); + this->setIconSize(this->size()); + this->setStyleSheet(""); + return; } this->setText(""); this->setStyleSheet("QPushButton { background-color: transparent; border: 0px }"); - movie->setFileName(p_image); + m_movie->setFileName(p_image); // We double-check if the user wants animated themes, so even if an animated image slipped through, // we still set it static - if (Options::getInstance().animatedThemeEnabled() && movie->frameCount() > 1) { - movie->start(); + if (Options::getInstance().animatedThemeEnabled() && m_movie->frameCount() > 1) + { + m_movie->start(); } - else { + else + { this->setIcon(QPixmap(p_image).scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); this->setIconSize(this->size()); } diff --git a/src/aobutton.h b/src/aobutton.h new file mode 100644 index 00000000..058d9e5c --- /dev/null +++ b/src/aobutton.h @@ -0,0 +1,22 @@ +#pragma once + +#include "aoapplication.h" + +#include +#include +#include + +class AOButton : public QPushButton +{ + Q_OBJECT + +public: + AOButton(AOApplication *p_ao_app, QWidget *parent = nullptr); + ~AOButton(); + + void set_image(QString p_image, QString p_misc = QString()); + +private: + AOApplication *ao_app; + QMovie *m_movie; +}; diff --git a/src/aocharbutton.cpp b/src/aocharbutton.cpp index 4f00e3c8..cab7fddd 100644 --- a/src/aocharbutton.cpp +++ b/src/aocharbutton.cpp @@ -2,35 +2,24 @@ #include "file_functions.h" -AOCharButton::AOCharButton(QWidget *parent, AOApplication *p_ao_app, int x_pos, - int y_pos, bool is_taken) +AOCharButton::AOCharButton(AOApplication *p_ao_app, int x_pos, int y_pos, bool is_taken, QWidget *parent) : QPushButton(parent) + , ao_app(p_ao_app) + , m_taken(is_taken) { - m_parent = parent; - - ao_app = p_ao_app; - - taken = is_taken; - int size = 60 * Options::getInstance().themeScalingFactor(); int selector_size = 62 * Options::getInstance().themeScalingFactor(); this->resize(size, size); this->move(x_pos, y_pos); - ui_taken = new AOImage(this, ao_app, true); + ui_taken = new AOImage(ao_app, this); ui_taken->resize(size, size); ui_taken->set_image("char_taken"); ui_taken->setAttribute(Qt::WA_TransparentForMouseEvents); ui_taken->hide(); - ui_passworded = new AOImage(this, ao_app, true); - ui_passworded->resize(size, size); - ui_passworded->set_image("char_passworded"); - ui_passworded->setAttribute(Qt::WA_TransparentForMouseEvents); - ui_passworded->hide(); - - ui_selector = new AOImage(parent, ao_app, true); + ui_selector = new AOImage(ao_app, parent); ui_selector->resize(selector_size, selector_size); int offset = Options::getInstance().themeScalingFactor(); ui_selector->move(x_pos - offset, y_pos - offset); @@ -42,39 +31,42 @@ AOCharButton::AOCharButton(QWidget *parent, AOApplication *p_ao_app, int x_pos, void AOCharButton::reset() { ui_taken->hide(); - ui_passworded->hide(); ui_selector->hide(); } -void AOCharButton::set_taken(bool is_taken) { taken = is_taken; } +void AOCharButton::set_taken(bool is_taken) +{ + m_taken = is_taken; +} void AOCharButton::apply_taken_image() { - if (taken) { + if (m_taken) + { ui_taken->move(0, 0); ui_taken->show(); } - else { + else + { ui_taken->hide(); } } -void AOCharButton::set_passworded() { ui_passworded->show(); } - void AOCharButton::set_image(QString p_character) { - QString image_path = ao_app->get_image_suffix( - ao_app->get_character_path(p_character, "char_icon"), true); + QString image_path = ao_app->get_image_suffix(ao_app->get_character_path(p_character, "char_icon"), true); this->setText(""); - if (file_exists(image_path)) { + if (file_exists(image_path)) + { this->setStyleSheet("QPushButton { border-image: url(\"" + image_path + "\") 0 0 0 0 stretch stretch; }" "QToolTip { background-image: url(); color: #000000; " "background-color: #ffffff; border: 0px; }"); } - else { + else + { this->setStyleSheet("QPushButton { border-image: url(); }" "QToolTip { background-image: url(); color: #000000; " "background-color: #ffffff; border: 0px; }"); diff --git a/src/aocharbutton.h b/src/aocharbutton.h new file mode 100644 index 00000000..54117f48 --- /dev/null +++ b/src/aocharbutton.h @@ -0,0 +1,40 @@ +#pragma once + +#include "aoapplication.h" +#include "aoimage.h" + +#include +#include +#include +#include +#include + +class AOCharButton : public QPushButton +{ + Q_OBJECT + +public: + AOCharButton(AOApplication *p_ao_app, int x_pos, int y_pos, bool is_taken, QWidget *parent); + + void refresh(); + void reset(); + void set_taken(bool is_taken); + + void apply_taken_image(); + + void set_image(QString p_character); + +protected: +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + void enterEvent(QEvent *e) override; +#else + void enterEvent(QEnterEvent *e) override; +#endif + void leaveEvent(QEvent *e) override; + +private: + AOApplication *ao_app; + bool m_taken = false; + AOImage *ui_taken; + AOImage *ui_selector; +}; diff --git a/src/aoclocklabel.cpp b/src/aoclocklabel.cpp index ce62f320..afd4d1e3 100644 --- a/src/aoclocklabel.cpp +++ b/src/aoclocklabel.cpp @@ -1,10 +1,12 @@ #include "aoclocklabel.h" -AOClockLabel::AOClockLabel(QWidget *parent) : QLabel(parent) {} +AOClockLabel::AOClockLabel(QWidget *parent) + : QLabel(parent) +{} void AOClockLabel::start() { - timer.start(1000 / 60, this); + m_timer.start(1000 / 60, this); } void AOClockLabel::start(qint64 msecs) @@ -15,16 +17,16 @@ void AOClockLabel::start(qint64 msecs) void AOClockLabel::set(qint64 msecs, bool update_text) { - target_time = QDateTime::currentDateTime().addMSecs(msecs); + m_target_time = QDateTime::currentDateTime().addMSecs(msecs); if (update_text) { - if (QDateTime::currentDateTime() >= target_time) + if (QDateTime::currentDateTime() >= m_target_time) { this->setText("00:00:00.000"); } else { - qint64 ms_left = QDateTime::currentDateTime().msecsTo(target_time); + qint64 ms_left = QDateTime::currentDateTime().msecsTo(m_target_time); QTime timeleft = QTime(0, 0).addMSecs(ms_left % (1000 * 3600 * 24)); QString timestring = timeleft.toString("hh:mm:ss.zzz"); this->setText(timestring); @@ -34,39 +36,42 @@ void AOClockLabel::set(qint64 msecs, bool update_text) void AOClockLabel::pause() { - timer.stop(); + m_timer.stop(); } void AOClockLabel::stop() { this->setText("00:00:00.000"); - timer.stop(); + m_timer.stop(); } void AOClockLabel::skip(qint64 msecs) { - qint64 ms_left = QDateTime::currentDateTime().msecsTo(target_time); + qint64 ms_left = QDateTime::currentDateTime().msecsTo(m_target_time); this->set(ms_left - msecs, true); } bool AOClockLabel::active() { - return timer.isActive(); + return m_timer.isActive(); } void AOClockLabel::timerEvent(QTimerEvent *event) { - if (event->timerId() == timer.timerId()) { - if (QDateTime::currentDateTime() >= target_time) + if (event->timerId() == m_timer.timerId()) + { + if (QDateTime::currentDateTime() >= m_target_time) { this->stop(); return; } - qint64 ms_left = QDateTime::currentDateTime().msecsTo(target_time); + qint64 ms_left = QDateTime::currentDateTime().msecsTo(m_target_time); QTime timeleft = QTime(0, 0).addMSecs(ms_left % (1000 * 3600 * 24)); QString timestring = timeleft.toString("hh:mm:ss.zzz"); this->setText(timestring); - } else { + } + else + { QWidget::timerEvent(event); } } diff --git a/src/aoclocklabel.h b/src/aoclocklabel.h new file mode 100644 index 00000000..415179b3 --- /dev/null +++ b/src/aoclocklabel.h @@ -0,0 +1,30 @@ +#pragma once + +#include +#include +#include +#include +#include + +class AOClockLabel : public QLabel +{ + Q_OBJECT + +public: + AOClockLabel(QWidget *parent); + + void start(); + void start(qint64 msecs); + void set(qint64 msecs, bool update_text = false); + void pause(); + void stop(); + void skip(qint64 msecs); + bool active(); + +protected: + void timerEvent(QTimerEvent *event) override; + +private: + QBasicTimer m_timer; + QDateTime m_target_time; +}; diff --git a/src/aoemotebutton.cpp b/src/aoemotebutton.cpp index c0539844..32e50ff8 100644 --- a/src/aoemotebutton.cpp +++ b/src/aoemotebutton.cpp @@ -1,13 +1,10 @@ #include "aoemotebutton.h" #include "file_functions.h" -AOEmoteButton::AOEmoteButton(QWidget *p_parent, AOApplication *p_ao_app, - int p_x, int p_y, int p_w, int p_h) +AOEmoteButton::AOEmoteButton(AOApplication *p_ao_app, int p_x, int p_y, int p_w, int p_h, QWidget *p_parent) : QPushButton(p_parent) + , ao_app(p_ao_app) { - parent = p_parent; - ao_app = p_ao_app; - this->move(p_x, p_y); this->resize(p_w, p_h); @@ -21,27 +18,38 @@ AOEmoteButton::AOEmoteButton(QWidget *p_parent, AOApplication *p_ao_app, void AOEmoteButton::set_selected_image(QString p_image) { - if (file_exists(p_image)) { + if (file_exists(p_image)) + { ui_selected->setStyleSheet("border-image: url(\"" + p_image + "\")"); } - else { + else + { ui_selected->setStyleSheet("background-color: rgba(0, 0, 0, 128)"); } } -void AOEmoteButton::set_image(QString p_image, QString p_emote_comment) +void AOEmoteButton::set_id(int p_id) +{ + m_id = p_id; +} + +int AOEmoteButton::get_id() { - QString tmp_p_image = p_image; + return m_id; +} - if (file_exists(p_image)) { +void AOEmoteButton::set_image(QString p_image, QString p_emote_comment) +{ + if (file_exists(p_image)) + { this->setText(""); - this->setStyleSheet( - "QPushButton { border: none; }" - "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }"); + this->setStyleSheet("QPushButton { border: none; }" + "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }"); this->setIcon(QPixmap(p_image).scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); this->setIconSize(this->size()); } - else { + else + { this->setText(p_emote_comment); this->setStyleSheet("QPushButton { border-image: url(); }" "QToolTip { background-image: url(); color: #000000; " @@ -54,25 +62,29 @@ void AOEmoteButton::set_image(QString p_image, QString p_emote_comment) void AOEmoteButton::set_char_image(QString p_char, int p_emote, bool on) { QString emotion_number = QString::number(p_emote + 1); - QStringList suffixes { "_off", "_on" }; + QStringList suffixes{"_off", "_on"}; QStringList suffixedPaths; - for (const QString &suffix : suffixes) { - suffixedPaths.append(ao_app->get_image_suffix(ao_app->get_character_path( - p_char, "emotions/button" + emotion_number + suffix))); + for (const QString &suffix : suffixes) + { + suffixedPaths.append(ao_app->get_image_suffix(ao_app->get_character_path(p_char, "emotions/button" + emotion_number + suffix))); } QString image = suffixedPaths[static_cast(on)]; QString emoteComment = ao_app->get_emote_comment(p_char, p_emote); - if (on && !file_exists(suffixedPaths[1])) {; + if (on && !file_exists(suffixedPaths[1])) + { ui_selected->show(); image = suffixedPaths[0]; } - else { + else + { ui_selected->hide(); } set_image(image, emoteComment); } -void AOEmoteButton::on_clicked() { emit emote_clicked(m_id); } - +void AOEmoteButton::on_clicked() +{ + Q_EMIT emote_clicked(m_id); +} diff --git a/src/aoemotebutton.h b/src/aoemotebutton.h new file mode 100644 index 00000000..93149492 --- /dev/null +++ b/src/aoemotebutton.h @@ -0,0 +1,36 @@ +#pragma once + +#include "aoapplication.h" +#include +#include +#include +#include + +class AOEmoteButton : public QPushButton +{ + Q_OBJECT + +public: + AOEmoteButton(AOApplication *p_ao_app, int p_x, int p_y, int p_w, int p_h, QWidget *p_parent); + + void set_image(QString p_image, QString p_emote_comment); + void set_char_image(QString p_char, int p_emote, bool on); + + void set_selected_image(QString p_image); + + void set_id(int p_id); + int get_id(); + +Q_SIGNALS: + void emote_clicked(int p_id); + +private: + AOApplication *ao_app; + + int m_id = 0; + + QLabel *ui_selected = nullptr; + +private Q_SLOTS: + void on_clicked(); +}; diff --git a/src/aoemotepreview.cpp b/src/aoemotepreview.cpp index 5afeebda..8df35dd6 100644 --- a/src/aoemotepreview.cpp +++ b/src/aoemotepreview.cpp @@ -1,11 +1,11 @@ #include "aoemotepreview.h" -AOEmotePreview::AOEmotePreview(QWidget *parent, AOApplication *p_ao_app) : QWidget(parent) +AOEmotePreview::AOEmotePreview(AOApplication *p_ao_app, QWidget *parent) + : QWidget(parent) + , ao_app(p_ao_app) { - ao_app = p_ao_app; - ui_viewport = new QWidget(this); - ui_vp_player_char = new CharLayer(ui_viewport, ao_app); + ui_vp_player_char = new CharLayer(ao_app, ui_viewport); ui_vp_player_char->setObjectName("ui_vp_player_char"); ui_vp_player_char->masked = false; ui_size_label = new QLabel(this); diff --git a/src/aoemotepreview.h b/src/aoemotepreview.h new file mode 100644 index 00000000..ac86ff00 --- /dev/null +++ b/src/aoemotepreview.h @@ -0,0 +1,31 @@ +#pragma once + +#include "aolayer.h" +#include + +class AOEmotePreview : public QWidget +{ + Q_OBJECT + +public: + AOEmotePreview(AOApplication *p_ao_app, QWidget *parent = nullptr); + + void set_widgets(); + void play(QString emote, QString char_name, bool flipped = false, int self_offset = 0, int self_offset_v = 0); + +protected: + void resizeEvent(QResizeEvent *); + +private: + AOApplication *ao_app; + + QString m_emote; + QString m_char; + + QWidget *ui_viewport; + BackgroundLayer *ui_vp_background; + SplashLayer *ui_vp_speedlines; + CharLayer *ui_vp_player_char; + BackgroundLayer *ui_vp_desk; + QLabel *ui_size_label; +}; diff --git a/src/aoevidencebutton.cpp b/src/aoevidencebutton.cpp index d731682e..b026c13e 100644 --- a/src/aoevidencebutton.cpp +++ b/src/aoevidencebutton.cpp @@ -2,21 +2,18 @@ #include "file_functions.h" -AOEvidenceButton::AOEvidenceButton(QWidget *p_parent, AOApplication *p_ao_app, - int p_x, int p_y, int p_w, int p_h) +AOEvidenceButton::AOEvidenceButton(AOApplication *p_ao_app, int p_x, int p_y, int p_w, int p_h, QWidget *p_parent) : QPushButton(p_parent) + , ao_app(p_ao_app) { - ao_app = p_ao_app; - m_parent = p_parent; - - ui_selected = new AOImage(this, ao_app, true); + ui_selected = new AOImage(ao_app, this); ui_selected->resize(p_w, p_h); // ui_selected->move(p_x, p_y); ui_selected->set_image("evidence_selected"); ui_selected->setAttribute(Qt::WA_TransparentForMouseEvents); ui_selected->hide(); - ui_selector = new AOImage(this, ao_app, true); + ui_selector = new AOImage(ao_app, this); ui_selector->resize(p_w, p_h); // ui_selector->move(p_x - 1, p_y - 1); ui_selector->set_image("evidence_selector"); @@ -33,21 +30,22 @@ AOEvidenceButton::AOEvidenceButton(QWidget *p_parent, AOApplication *p_ao_app, void AOEvidenceButton::set_image(QString p_image) { QString image_path = ao_app->get_real_path(ao_app->get_evidence_path(p_image)); - if (file_exists(p_image)) { + if (file_exists(p_image)) + { this->setText(""); - this->setStyleSheet( - "QPushButton { border-image: url(\"" + p_image + - "\") 0 0 0 0 stretch stretch; }" - "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }"); + this->setStyleSheet("QPushButton { border-image: url(\"" + p_image + + "\") 0 0 0 0 stretch stretch; }" + "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }"); } - else if (file_exists(image_path)) { + else if (file_exists(image_path)) + { this->setText(""); - this->setStyleSheet( - "QPushButton { border-image: url(\"" + image_path + - "\") 0 0 0 0 stretch stretch; }" - "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }"); + this->setStyleSheet("QPushButton { border-image: url(\"" + image_path + + "\") 0 0 0 0 stretch stretch; }" + "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }"); } - else { + else + { this->setText(p_image); this->setStyleSheet("QPushButton { border-image: url(); }" "QToolTip { background-image: url(); color: #000000; " @@ -57,17 +55,19 @@ void AOEvidenceButton::set_image(QString p_image) void AOEvidenceButton::set_theme_image(QString p_image) { - QString theme_image_path = ao_app->get_real_path( - ao_app->get_theme_path(p_image)); - QString default_image_path = ao_app->get_real_path( - ao_app->get_theme_path(p_image, ao_app->default_theme)); + QString theme_image_path = ao_app->get_real_path(ao_app->get_theme_path(p_image)); + QString default_image_path = ao_app->get_real_path(ao_app->get_theme_path(p_image, ao_app->default_theme)); QString final_image_path; if (file_exists(theme_image_path)) + { final_image_path = theme_image_path; + } else + { final_image_path = default_image_path; + } this->set_image(final_image_path); } @@ -75,17 +75,24 @@ void AOEvidenceButton::set_theme_image(QString p_image) void AOEvidenceButton::set_selected(bool p_selected) { if (p_selected) + { ui_selected->show(); + } else + { ui_selected->hide(); + } } -void AOEvidenceButton::on_clicked() { emit evidence_clicked(m_id); } +void AOEvidenceButton::on_clicked() +{ + Q_EMIT evidence_clicked(m_id); +} void AOEvidenceButton::mouseDoubleClickEvent(QMouseEvent *e) { QPushButton::mouseDoubleClickEvent(e); - emit evidence_double_clicked(m_id); + Q_EMIT evidence_double_clicked(m_id); } /* @@ -112,7 +119,7 @@ void AOEvidenceButton::enterEvent(QEnterEvent *e) { ui_selector->show(); - emit on_hover(m_id, true); + Q_EMIT on_hover(m_id, true); setFlat(false); QPushButton::enterEvent(e); @@ -122,6 +129,6 @@ void AOEvidenceButton::leaveEvent(QEvent *e) { ui_selector->hide(); - emit on_hover(m_id, false); + Q_EMIT on_hover(m_id, false); QPushButton::leaveEvent(e); } diff --git a/src/aoevidencebutton.h b/src/aoevidencebutton.h new file mode 100644 index 00000000..adaaa17a --- /dev/null +++ b/src/aoevidencebutton.h @@ -0,0 +1,48 @@ +#pragma once + +#include "aoapplication.h" +#include "aoimage.h" + +#include +#include +#include +#include + +class AOEvidenceButton : public QPushButton +{ + Q_OBJECT + +public: + AOEvidenceButton(AOApplication *p_ao_app, int p_x, int p_y, int p_w, int p_h, QWidget *p_parent = nullptr); + + void set_image(QString p_image); + void set_theme_image(QString p_image); + void set_id(int p_id) { m_id = p_id; } + + void set_selected(bool p_selected); + +Q_SIGNALS: + void evidence_clicked(int p_id); + void evidence_double_clicked(int p_id); + void on_hover(int p_id, bool p_state); + +protected: +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + void enterEvent(QEvent *e) override; +#else + void enterEvent(QEnterEvent *e) override; +#endif + void leaveEvent(QEvent *e) override; + void mouseDoubleClickEvent(QMouseEvent *e) override; + +private: + AOApplication *ao_app; + + int m_id = 0; + + AOImage *ui_selected; + AOImage *ui_selector; + +private Q_SLOTS: + void on_clicked(); +}; diff --git a/src/aoevidencedisplay.cpp b/src/aoevidencedisplay.cpp index ed27c007..6a5cf95c 100644 --- a/src/aoevidencedisplay.cpp +++ b/src/aoevidencedisplay.cpp @@ -2,77 +2,81 @@ #include "datatypes.h" #include "file_functions.h" -#include "misc_functions.h" -AOEvidenceDisplay::AOEvidenceDisplay(QWidget *p_parent, AOApplication *p_ao_app) +AOEvidenceDisplay::AOEvidenceDisplay(AOApplication *p_ao_app, QWidget *p_parent) : QLabel(p_parent) + , ao_app(p_ao_app) { - ao_app = p_ao_app; - evidence_icon = new QPushButton(this); - evidence_icon->hide(); - sfx_player = new AOSfxPlayer(this, ao_app); + ui_prompt_details = new QPushButton(this); + ui_prompt_details->hide(); - evidence_movie = new InterfaceLayer(this, ao_app); + m_sfx_player = new AOSfxPlayer(ao_app); - connect(evidence_movie, &InterfaceLayer::done, this, &AOEvidenceDisplay::show_done); - connect(evidence_icon, &QPushButton::clicked, this, &AOEvidenceDisplay::icon_clicked); + m_evidence_movie = new InterfaceLayer(ao_app, this); + + connect(m_evidence_movie, &InterfaceLayer::done, this, &AOEvidenceDisplay::show_done); + connect(ui_prompt_details, &QPushButton::clicked, this, &AOEvidenceDisplay::icon_clicked); } -void AOEvidenceDisplay::show_evidence(int p_index, QString p_evidence_image, - bool is_left_side, int p_volume) +void AOEvidenceDisplay::show_evidence(int p_index, QString p_evidence_image, bool is_left_side, int p_volume) { this->reset(); - last_evidence_index = p_index; + m_last_evidence_index = p_index; - sfx_player->set_volume(p_volume); + m_sfx_player->set_volume(p_volume); QString gif_name; QString icon_identifier; - if (is_left_side) { + if (is_left_side) + { icon_identifier = "left_evidence_icon"; gif_name = "evidence_appear_left"; } - else { + else + { icon_identifier = "right_evidence_icon"; gif_name = "evidence_appear_right"; } - QString f_evidence_path = ao_app->get_real_path( - ao_app->get_evidence_path(p_evidence_image)); + QString f_evidence_path = ao_app->get_real_path(ao_app->get_evidence_path(p_evidence_image)); QPixmap f_pixmap(f_evidence_path); - pos_size_type icon_dimensions = - ao_app->get_element_dimensions(icon_identifier, "courtroom_design.ini"); + pos_size_type icon_dimensions = ao_app->get_element_dimensions(icon_identifier, "courtroom_design.ini"); f_pixmap = f_pixmap.scaled(icon_dimensions.width, icon_dimensions.height); QIcon f_icon(f_pixmap); - evidence_icon->setIcon(f_icon); - evidence_icon->setIconSize(f_pixmap.rect().size()); - evidence_icon->resize(f_pixmap.rect().size()); - evidence_icon->move(icon_dimensions.x, icon_dimensions.y); - evidence_movie->static_duration = 320; - evidence_movie->max_duration = 1000; - evidence_movie->set_play_once(true); - evidence_movie->load_image(gif_name, ""); - sfx_player->play(ao_app->get_court_sfx("evidence_present")); + ui_prompt_details->setIcon(f_icon); + ui_prompt_details->setIconSize(f_pixmap.rect().size()); + ui_prompt_details->resize(f_pixmap.rect().size()); + ui_prompt_details->move(icon_dimensions.x, icon_dimensions.y); + m_evidence_movie->static_duration = 320; + m_evidence_movie->max_duration = 1000; + m_evidence_movie->set_play_once(true); + m_evidence_movie->load_image(gif_name, ""); + m_sfx_player->play(ao_app->get_court_sfx("evidence_present")); } void AOEvidenceDisplay::reset() { - sfx_player->stop(); - evidence_movie->kill(); - evidence_icon->hide(); + m_sfx_player->stop(); + m_evidence_movie->kill(); + ui_prompt_details->hide(); this->clear(); } -void AOEvidenceDisplay::show_done() { evidence_icon->show(); } +void AOEvidenceDisplay::show_done() +{ + ui_prompt_details->show(); +} -void AOEvidenceDisplay::icon_clicked() { - if (last_evidence_index != -1) { - emit show_evidence_details(last_evidence_index - 1); // i dont know why i have to subtract 1 here +void AOEvidenceDisplay::icon_clicked() +{ + if (m_last_evidence_index != -1) + { + Q_EMIT show_evidence_details(m_last_evidence_index - 1); // i dont know why i have to subtract 1 here } } @@ -80,5 +84,5 @@ void AOEvidenceDisplay::combo_resize(int w, int h) { QSize f_size(w, h); this->resize(f_size); - evidence_movie->combo_resize(w, h); + m_evidence_movie->combo_resize(w, h); } diff --git a/src/aoevidencedisplay.h b/src/aoevidencedisplay.h new file mode 100644 index 00000000..b23bc0f7 --- /dev/null +++ b/src/aoevidencedisplay.h @@ -0,0 +1,37 @@ +#pragma once + +#include "aoapplication.h" +#include "aolayer.h" +#include "aosfxplayer.h" + +#include +#include +#include + +class AOEvidenceDisplay : public QLabel +{ + Q_OBJECT + +public: + AOEvidenceDisplay(AOApplication *p_ao_app, QWidget *p_parent = nullptr); + + void show_evidence(int p_index, QString p_evidence_image, bool is_left_side, int p_volume); + void reset(); + void combo_resize(int w, int h); + +Q_SIGNALS: + void show_evidence_details(int index); + +private: + AOApplication *ao_app; + + int m_last_evidence_index = -1; + AOSfxPlayer *m_sfx_player; + + InterfaceLayer *m_evidence_movie; + QPushButton *ui_prompt_details; + +private Q_SLOTS: + void show_done(); + void icon_clicked(); +}; diff --git a/src/aoimage.cpp b/src/aoimage.cpp index e737ffb3..85f127ef 100644 --- a/src/aoimage.cpp +++ b/src/aoimage.cpp @@ -5,56 +5,33 @@ #include -AOImage::AOImage(QWidget *parent, AOApplication *p_ao_app, bool make_static) : QLabel(parent) +AOImage::AOImage(AOApplication *p_ao_app, QWidget *parent) + : QLabel(parent) + , ao_app(p_ao_app) +{} + +AOImage::~AOImage() +{} + +QString AOImage::file_name() { - m_parent = parent; - ao_app = p_ao_app; - is_static = make_static; - if (!is_static) // Only create the QMovie if we're non-static - { - movie = new QMovie(this); - connect(movie, &QMovie::frameChanged, [this]{ - QPixmap f_pixmap = movie->currentPixmap(); - f_pixmap = - f_pixmap.scaled(this->size(), Qt::IgnoreAspectRatio); - this->setPixmap(f_pixmap); - if (masked) { - this->setMask(f_pixmap.mask()); - } - }); - } + return m_file_name; } -AOImage::~AOImage() {} - bool AOImage::set_image(QString p_image, QString p_misc) { - QString p_image_resolved = ao_app->get_image(p_image, Options::getInstance().theme(), Options::getInstance().subTheme(), - ao_app->default_theme, p_misc, "", "", - is_static || !Options::getInstance().animatedThemeEnabled()); + QString p_image_resolved = ao_app->get_image(p_image, Options::getInstance().theme(), Options::getInstance().subTheme(), ao_app->default_theme, p_misc, "", "", false); - if (!file_exists(p_image_resolved)) { + if (!file_exists(p_image_resolved)) + { qWarning() << "could not find image" << p_image; return false; } - path = p_image_resolved; - if (!is_static) { - movie->stop(); - movie->setFileName(path); - if (Options::getInstance().animatedThemeEnabled() && movie->frameCount() > 1) { - movie->start(); - } - } - if (is_static || !Options::getInstance().animatedThemeEnabled() || movie->frameCount() <= 1) { - QPixmap f_pixmap(path); - - f_pixmap = - f_pixmap.scaled(this->size(), Qt::IgnoreAspectRatio); - this->setPixmap(f_pixmap); - if (masked) { - this->setMask(f_pixmap.mask()); - } - } + m_file_name = p_image_resolved; + QPixmap f_pixmap(m_file_name); + f_pixmap = f_pixmap.scaled(size(), Qt::IgnoreAspectRatio); + setPixmap(f_pixmap); + return true; } diff --git a/src/aoimage.h b/src/aoimage.h new file mode 100644 index 00000000..5ab92e7b --- /dev/null +++ b/src/aoimage.h @@ -0,0 +1,27 @@ +// This class represents a static theme-dependent image + +#pragma once + +#include "aoapplication.h" + +#include +#include +#include + +class AOImage : public QLabel +{ + Q_OBJECT + +public: + AOImage(AOApplication *p_ao_app, QWidget *parent = nullptr); + AOImage(AOApplication *p_ao_app, bool make_static, QWidget *parent = nullptr); + ~AOImage(); + + QString file_name(); + bool set_image(QString p_image, QString p_misc = QString()); + +private: + AOApplication *ao_app; + + QString m_file_name; +}; diff --git a/src/aolayer.cpp b/src/aolayer.cpp index 4eaaf9f7..8284230e 100644 --- a/src/aolayer.cpp +++ b/src/aolayer.cpp @@ -2,12 +2,12 @@ #include "aoapplication.h" #include "file_functions.h" -#include "misc_functions.h" #include "options.h" static QThreadPool *thread_pool; -AOLayer::AOLayer(QWidget *p_parent, AOApplication *p_ao_app) : QLabel(p_parent) +AOLayer::AOLayer(AOApplication *p_ao_app, QWidget *p_parent) + : QLabel(p_parent) { ao_app = p_ao_app; @@ -26,45 +26,47 @@ AOLayer::AOLayer(QWidget *p_parent, AOApplication *p_ao_app) : QLabel(p_parent) preanim_timer->setSingleShot(true); connect(preanim_timer, &QTimer::timeout, this, &AOLayer::preanim_done); - if (!thread_pool) { + if (!thread_pool) + { thread_pool = new QThreadPool(p_ao_app); thread_pool->setMaxThreadCount(8); } } -BackgroundLayer::BackgroundLayer(QWidget *p_parent, AOApplication *p_ao_app) - : AOLayer(p_parent, p_ao_app) -{ -} -CharLayer::CharLayer(QWidget *p_parent, AOApplication *p_ao_app) - : AOLayer(p_parent, p_ao_app) -{ -} -EffectLayer::EffectLayer(QWidget *p_parent, AOApplication *p_ao_app) - : AOLayer(p_parent, p_ao_app) -{ -} -SplashLayer::SplashLayer(QWidget *p_parent, AOApplication *p_ao_app) - : AOLayer(p_parent, p_ao_app) -{ -} -InterfaceLayer::InterfaceLayer(QWidget *p_parent, AOApplication *p_ao_app) - : AOLayer(p_parent, p_ao_app) -{ -} -StickerLayer::StickerLayer(QWidget *p_parent, AOApplication *p_ao_app) - : AOLayer(p_parent, p_ao_app) -{ -} +BackgroundLayer::BackgroundLayer(AOApplication *p_ao_app, QWidget *p_parent) + : AOLayer(p_ao_app, p_parent) +{} + +CharLayer::CharLayer(AOApplication *p_ao_app, QWidget *p_parent) + : AOLayer(p_ao_app, p_parent) +{} + +EffectLayer::EffectLayer(AOApplication *p_ao_app, QWidget *p_parent) + : AOLayer(p_ao_app, p_parent) +{} + +SplashLayer::SplashLayer(AOApplication *p_ao_app, QWidget *p_parent) + : AOLayer(p_ao_app, p_parent) +{} + +InterfaceLayer::InterfaceLayer(AOApplication *p_ao_app, QWidget *p_parent) + : AOLayer(p_ao_app, p_parent) +{} + +StickerLayer::StickerLayer(AOApplication *p_ao_app, QWidget *p_parent) + : AOLayer(p_ao_app, p_parent) +{} QString AOLayer::find_image(QStringList p_list) { QString image_path; - for (const QString &path : p_list) { + for (const QString &path : p_list) + { #ifdef DEBUG_MOVIE qDebug() << "checking path " << path; #endif - if (file_exists(path)) { + if (file_exists(path)) + { image_path = path; #ifdef DEBUG_MOVIE qDebug() << "found path " << path; @@ -79,17 +81,28 @@ QPixmap AOLayer::get_pixmap(QImage image) { QPixmap f_pixmap; if (m_flipped) + { f_pixmap = QPixmap::fromImage(image.mirrored(true, false)); + } else + { f_pixmap = QPixmap::fromImage(image); + } // auto aspect_ratio = Qt::KeepAspectRatio; - if (!f_pixmap.isNull()) { + if (!f_pixmap.isNull()) + { if (f_pixmap.height() > f_h) // We are downscaling, use anti-aliasing. + { transform_mode = Qt::SmoothTransformation; + } if (stretch) + { f_pixmap = f_pixmap.scaled(f_w, f_h); + } else + { f_pixmap = f_pixmap.scaledToHeight(f_h, transform_mode); + } this->resize(f_pixmap.size()); } return f_pixmap; @@ -101,15 +114,16 @@ void AOLayer::set_frame(QPixmap f_pixmap) this->center_pixmap(f_pixmap); } -void AOLayer::center_pixmap(QPixmap f_pixmap) { - QLabel::move( - x + (f_w - f_pixmap.width()) / 2, - y + (f_h - f_pixmap.height())); // Always center horizontally, always put - // at the bottom vertically +void AOLayer::center_pixmap(QPixmap f_pixmap) +{ + QLabel::move(x + (f_w - f_pixmap.width()) / 2, + y + (f_h - f_pixmap.height())); // Always center horizontally, always put + // at the bottom vertically if (masked) - this->setMask( - QRegion((f_pixmap.width() - f_w) / 2, (f_pixmap.height() - f_h) / 2, f_w, - f_h)); // make sure we don't escape the area we've been given + { + this->setMask(QRegion((f_pixmap.width() - f_w) / 2, (f_pixmap.height() - f_h) / 2, f_w, + f_h)); // make sure we don't escape the area we've been given + } } void AOLayer::combo_resize(int w, int h) @@ -137,9 +151,13 @@ void AOLayer::move_and_center(int ax, int ay) x = ax; y = ay; if (movie_frames.isEmpty()) // safeguard - QLabel::move(x,y); + { + QLabel::move(x, y); + } else + { center_pixmap(movie_frames[0]); // just use the first frame since dimensions are all that matter + } } void BackgroundLayer::load_image(QString p_filename) @@ -147,15 +165,15 @@ void BackgroundLayer::load_image(QString p_filename) play_once = false; cull_image = false; VPath design_path = ao_app->get_background_path("design.ini"); - transform_mode = - ao_app->get_scaling(ao_app->read_design_ini("scaling", design_path)); + transform_mode = ao_app->get_scaling(ao_app->read_design_ini("scaling", design_path)); stretch = ao_app->read_design_ini("stretch", design_path).startsWith("true"); #ifdef DEBUG_MOVIE qDebug() << "[BackgroundLayer] BG loaded: " << p_filename; #endif QString final_path = ao_app->get_image_suffix(ao_app->get_background_path(p_filename)); - if (final_path == last_path) { + if (final_path == last_path) + { // Don't restart background if background is unchanged return; } @@ -164,24 +182,20 @@ void BackgroundLayer::load_image(QString p_filename) play(); } -void CharLayer::load_image(QString p_filename, QString p_charname, - int p_duration, bool p_is_preanim) +void CharLayer::load_image(QString p_filename, QString p_charname, int p_duration, bool p_is_preanim) { duration = p_duration; cull_image = false; force_continuous = false; - transform_mode = ao_app->get_scaling( - ao_app->get_emote_property(p_charname, p_filename, "scaling")); - stretch = ao_app->get_emote_property(p_charname, p_filename, "stretch") - .startsWith("true"); - if ((p_charname == last_char) && - ((p_filename == last_emote) || - (p_filename.mid(3, -1) == last_emote.mid(3, -1))) && - (!is_preanim) && (!was_preanim)) { + transform_mode = ao_app->get_scaling(ao_app->get_emote_property(p_charname, p_filename, "scaling")); + stretch = ao_app->get_emote_property(p_charname, p_filename, "stretch").startsWith("true"); + if ((p_charname == last_char) && ((p_filename == last_emote) || (p_filename.mid(3, -1) == last_emote.mid(3, -1))) && (!is_preanim) && (!was_preanim)) + { continuous = true; force_continuous = true; } - else { + else + { continuous = false; force_continuous = true; } @@ -194,12 +208,15 @@ void CharLayer::load_image(QString p_filename, QString p_charname, last_emote = current_emote; last_prefix = prefix; is_preanim = p_is_preanim; - if ((p_filename.left(3) == "(a)") || (p_filename.left(3) == "(b)")) { // if we are playing an idle or talking animation + if ((p_filename.left(3) == "(a)") || (p_filename.left(3) == "(b)")) + { // if we are playing an idle or talking animation prefix = p_filename.left(3); // separate the prefix from the emote name current_emote = p_filename.mid(3, -1); } - else if ((duration > 0) || (p_filename.left(3) == "(c)")) { // else if we are playing a preanim or postanim - if (p_filename.left(3) == "(c)") { // if we are playing a postanim + else if ((duration > 0) || (p_filename.left(3) == "(c)")) + { // else if we are playing a preanim or postanim + if (p_filename.left(3) == "(c)") + { // if we are playing a postanim prefix = "(c)"; // separate the prefix from the emote name current_emote = p_filename.mid(3, -1); } @@ -209,29 +226,22 @@ void CharLayer::load_image(QString p_filename, QString p_charname, preanim_timer->start(duration); } #ifdef DEBUG_MOVIE - qDebug() << "[CharLayer] anim loaded: prefix " << prefix << " filename " - << current_emote << " from character: " << p_charname - << " continuous: " << continuous; + qDebug() << "[CharLayer] anim loaded: prefix " << prefix << " filename " << current_emote << " from character: " << p_charname << " continuous: " << continuous; #endif - QVector pathlist { // cursed character path resolution vector - ao_app->get_character_path( - p_charname, prefix + current_emote), // Default path - ao_app->get_character_path( - p_charname, - prefix + "/" + current_emote), // Path check if it's categorized - // into a folder - ao_app->get_character_path( - p_charname, - current_emote), // Just use the non-prefixed image, animated or not - VPath(current_emote), // The path by itself after the above fail - ao_app->get_theme_path("placeholder"), // Theme placeholder path - ao_app->get_theme_path( - "placeholder", ao_app->default_theme)}; // Default theme placeholder path + QVector pathlist{ // cursed character path resolution vector + ao_app->get_character_path(p_charname, prefix + current_emote), // Default path + ao_app->get_character_path(p_charname, + prefix + "/" + current_emote), // Path check if it's categorized + // into a folder + ao_app->get_character_path(p_charname, + current_emote), // Just use the non-prefixed image, animated or not + VPath(current_emote), // The path by itself after the above fail + ao_app->get_theme_path("placeholder"), // Theme placeholder path + ao_app->get_theme_path("placeholder", ao_app->default_theme)}; // Default theme placeholder path start_playback(ao_app->get_image_path(pathlist)); } -void SplashLayer::load_image(QString p_filename, QString p_charname, - QString p_miscname) +void SplashLayer::load_image(QString p_filename, QString p_charname, QString p_miscname) { transform_mode = ao_app->get_misc_scaling(p_miscname); QString final_image = ao_app->get_image(p_filename, Options::getInstance().theme(), Options::getInstance().subTheme(), ao_app->default_theme, p_miscname, p_charname, "placeholder"); @@ -242,9 +252,13 @@ void SplashLayer::load_image(QString p_filename, QString p_charname, void EffectLayer::load_image(QString p_filename, bool p_looping) { if (p_looping) + { play_once = false; + } else + { play_once = true; + } continuous = false; force_continuous = true; cull_image = false; @@ -266,7 +280,9 @@ void StickerLayer::load_image(QString p_charname) { QString p_miscname; if (Options::getInstance().customChatboxEnabled()) + { p_miscname = ao_app->get_chat(p_charname); + } transform_mode = ao_app->get_misc_scaling(p_miscname); QString final_image = ao_app->get_image("sticker/" + p_charname, Options::getInstance().theme(), Options::getInstance().subTheme(), ao_app->default_theme, p_miscname); start_playback(final_image); @@ -277,33 +293,43 @@ void CharLayer::start_playback(QString p_image) { movie_effects.clear(); AOLayer::start_playback(p_image); - if (network_strings.size() > 0) // our FX overwritten by networked ones + if (m_network_strings.size() > 0) // our FX overwritten by networked ones + { load_network_effects(); + } else // Use default ini FX + { load_effects(); + } play(); } void AOLayer::start_playback(QString p_image) { - if (p_image == "") {// image wasn't found by the path resolution function + if (p_image == "") + { // image wasn't found by the path resolution function this->kill(); return; } if (frame_loader.isRunning()) + { exit_loop = true; // tell the loader to stop, we have a new image to load + } QMutexLocker locker(&mutex); this->show(); - if (!Options::getInstance().continuousPlaybackEnabled()) { + if (!Options::getInstance().continuousPlaybackEnabled()) + { continuous = false; force_continuous = true; } if (((last_path == p_image) && (!force_continuous)) || p_image == "") + { return; + } #ifdef DEBUG_MOVIE actual_time.restart(); @@ -312,14 +338,16 @@ void AOLayer::start_playback(QString p_image) this->freeze(); movie_frames.clear(); movie_delays.clear(); - QString scaling_override = - ao_app->read_design_ini("scaling", p_image + ".ini"); + QString scaling_override = ao_app->read_design_ini("scaling", p_image + ".ini"); if (scaling_override != "") + { transform_mode = ao_app->get_scaling(scaling_override); - QString stretch_override = - ao_app->read_design_ini("stretch", p_image + ".ini"); + } + QString stretch_override = ao_app->read_design_ini("stretch", p_image + ".ini"); if (stretch_override != "") + { stretch = stretch_override.startsWith("true"); + } #ifdef DEBUG_MOVIE qDebug() << "[AOLayer::start_playback] Stretch:" << stretch << "Filename:" << p_image; @@ -328,35 +356,39 @@ void AOLayer::start_playback(QString p_image) last_max_frames = max_frames; max_frames = m_reader.imageCount(); if (m_reader.loopCount() == 0 && max_frames > 1) + { play_once = true; - if (!continuous - || ((continuous) && (max_frames != last_max_frames)) - || max_frames == 0 - || frame >= max_frames) { + } + if (!continuous || ((continuous) && (max_frames != last_max_frames)) || max_frames == 0 || frame >= max_frames) + { frame = 0; continuous = false; } - #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) frame_loader = QtConcurrent::run(thread_pool, this, &AOLayer::populate_vectors); - #else +#else frame_loader = QtConcurrent::run(thread_pool, &AOLayer::populate_vectors, this); - #endif +#endif last_path = p_image; while (movie_frames.size() <= frame) // if we haven't loaded the frame we need yet + { frameAdded.wait(&mutex); // wait for the frame loader to add another frame, then check again + } this->set_frame(movie_frames[frame]); - if (max_frames <= 1) { + if (max_frames <= 1) + { duration = static_duration; #ifdef DEBUG_MOVIE qDebug() << "[AOLayer::start_playback] max_frames is <= 1, using static duration"; #endif } if (duration > 0 && cull_image == true) + { shfx_timer->start(duration); + } #ifdef DEBUG_MOVIE - qDebug() << "[AOLayer::start_playback] Max frames:" << max_frames << "Setting image to " << p_image - << "Time taken to process image:" << actual_time.elapsed(); + qDebug() << "[AOLayer::start_playback] Max frames:" << max_frames << "Setting image to " << p_image << "Time taken to process image:" << actual_time.elapsed(); actual_time.restart(); #endif @@ -364,8 +396,10 @@ void AOLayer::start_playback(QString p_image) void CharLayer::play() { - if (max_frames <= 1) { - if (play_once) { + if (max_frames <= 1) + { + if (play_once) + { preanim_timer->start(qMax(0, duration)); } return; @@ -376,26 +410,42 @@ void CharLayer::play() void AOLayer::play() { - if (max_frames <= 1) { - if (play_once) { + if (max_frames <= 1) + { + if (play_once) + { if (duration > 0) + { ticker->start(duration); + } else + { preanim_done(); + } } else + { this->freeze(); + } } - else { - while (movie_delays.size() <= frame) { - frameAdded.wait(&mutex); + else + { + while (movie_delays.size() <= frame) + { + frameAdded.wait(&mutex); } ticker->start(this->get_frame_delay(movie_delays[frame])); } } -void AOLayer::set_play_once(bool p_play_once) { play_once = p_play_once; } -void AOLayer::set_cull_image(bool p_cull_image) { cull_image = p_cull_image; } +void AOLayer::set_play_once(bool p_play_once) +{ + play_once = p_play_once; +} +void AOLayer::set_cull_image(bool p_cull_image) +{ + cull_image = p_cull_image; +} void AOLayer::set_static_duration(int p_static_duration) { static_duration = p_static_duration; @@ -409,21 +459,27 @@ void CharLayer::load_effects() { movie_effects.clear(); if (max_frames <= 1) + { return; + } movie_effects.resize(max_frames); - for (int e_frame = 0; e_frame < max_frames; ++e_frame) { + for (int e_frame = 0; e_frame < max_frames; ++e_frame) + { QString effect = ao_app->get_screenshake_frame(m_char, m_emote, e_frame); - if (effect != "") { + if (effect != "") + { movie_effects[e_frame].append("shake"); } effect = ao_app->get_flash_frame(m_char, m_emote, e_frame); - if (effect != "") { + if (effect != "") + { movie_effects[e_frame].append("flash"); } effect = ao_app->get_sfx_frame(m_char, m_emote, e_frame); - if (effect != "") { + if (effect != "") + { movie_effects[e_frame].append("sfx^" + effect); } } @@ -433,44 +489,54 @@ void CharLayer::load_network_effects() { movie_effects.clear(); if (max_frames <= 1) + { return; + } movie_effects.resize(max_frames); // Order is important!!! QStringList effects_list = {"shake", "flash", "sfx^"}; - // Determines which list is smaller - effects_list or network_strings - and - // uses it as basis for the loop. This way, incomplete network_strings would + // Determines which list is smaller - effects_list or m_network_strings - and + // uses it as basis for the loop. This way, incomplete m_network_strings would // still be parsed, and excess/unaccounted for networked information is // omitted. - int effects_size = qMin(effects_list.size(), network_strings.size()); + int effects_size = qMin(effects_list.size(), m_network_strings.size()); - for (int i = 0; i < effects_size; ++i) { - QString netstring = network_strings.at(i); + for (int i = 0; i < effects_size; ++i) + { + QString netstring = m_network_strings.at(i); QStringList emote_splits = netstring.split("^"); - for (const QString &emote : emote_splits) { + for (const QString &emote : emote_splits) + { QStringList parsed = emote.split("|"); if (parsed.size() <= 0 || parsed.at(0) != m_emote) + { continue; - foreach (QString frame_data, parsed) { + } + foreach (QString frame_data, parsed) + { QStringList frame_split = frame_data.split("="); - if (frame_split.size() <= - 1) // We might still be hanging at the emote itself (entry 0). + if (frame_split.size() <= 1) // We might still be hanging at the emote itself (entry 0). + { continue; + } int f_frame = frame_split.at(0).toInt(); - if (f_frame >= max_frames || f_frame < 0) { - qWarning() << "out of bounds" << effects_list[i] << "frame" - << f_frame << "out of" << max_frames << "for" << m_emote; + if (f_frame >= max_frames || f_frame < 0) + { + qWarning() << "out of bounds" << effects_list[i] << "frame" << f_frame << "out of" << max_frames << "for" << m_emote; continue; } QString f_data = frame_split.at(1); - if (f_data != "") { + if (f_data != "") + { QString effect = effects_list[i]; if (effect == "sfx^") // Currently the only frame result that feeds us // data, let's yank it in. + { effect += f_data; + } #ifdef DEBUG_MOVIE - qDebug() << "[CharLayer::load_network_effects]" << effect << f_data << "frame" << f_frame << "for" - << m_emote; + qDebug() << "[CharLayer::load_network_effects]" << effect << f_data << "frame" << f_frame << "for" << m_emote; #endif movie_effects[f_frame].append(effect); } @@ -481,29 +547,35 @@ void CharLayer::load_network_effects() void CharLayer::play_frame_effect(int p_frame) { - if (p_frame >= movie_effects.size()) { + if (p_frame >= movie_effects.size()) + { qWarning() << "Attempted to play a frame effect bigger than the size of movie_effects"; return; } - if (p_frame < max_frames) { - foreach (QString effect, movie_effects[p_frame]) { - if (effect == "shake") { - emit shake(); + if (p_frame < max_frames) + { + foreach (QString effect, movie_effects[p_frame]) + { + if (effect == "shake") + { + Q_EMIT shake(); #ifdef DEBUG_MOVIE qDebug() << "[CharLayer::play_frame_effect] Attempting to play shake on frame" << frame; #endif } - if (effect == "flash") { - emit flash(); + if (effect == "flash") + { + Q_EMIT flash(); #ifdef DEBUG_MOVIE qDebug() << "[CharLayer::play_frame_effect] Attempting to play flash on frame" << frame; #endif } - if (effect.startsWith("sfx^")) { + if (effect.startsWith("sfx^")) + { QString sfx = effect.section("^", 1); - emit play_sfx(sfx); + Q_EMIT play_sfx(sfx); #ifdef DEBUG_MOVIE qDebug() << "[CharLayer::play_frame_effect] Attempting to play sfx" << sfx << "on frame" << frame; #endif @@ -549,36 +621,47 @@ void CharLayer::movie_ticker() void AOLayer::movie_ticker() { ++frame; - if (frame >= max_frames) { - if (play_once) { + if (frame >= max_frames) + { + if (play_once) + { if (cull_image) + { this->stop(); + } else + { this->freeze(); + } preanim_done(); return; } else + { frame = 0; + } } { QMutexLocker locker(&mutex); while (frame >= movie_frames.size() && frame < max_frames) // oops! our frame isn't ready yet + { frameAdded.wait(&mutex); // wait for a new frame to be added, then check again + } } #ifdef DEBUG_MOVIE - qDebug() << "[AOLayer::movie_ticker] Frame:" << frame << "Delay:" << movie_delays[frame] - << "Actual time taken from last frame:" << actual_time.restart(); + qDebug() << "[AOLayer::movie_ticker] Frame:" << frame << "Delay:" << movie_delays[frame] << "Actual time taken from last frame:" << actual_time.restart(); #endif this->set_frame(movie_frames[frame]); ticker->setInterval(this->get_frame_delay(movie_delays[frame])); } -void AOLayer::populate_vectors() { +void AOLayer::populate_vectors() +{ #ifdef DEBUG_MOVIE qDebug() << "[AOLayer::populate_vectors] Started thread"; #endif - while (!exit_loop && movie_frames.size() < max_frames) { + while (!exit_loop && movie_frames.size() < max_frames) + { load_next_frame(); #ifdef DEBUG_MOVIE qDebug() << "[AOLayer::populate_vectors] Loaded frame" << movie_frames.size(); @@ -586,12 +669,15 @@ void AOLayer::populate_vectors() { } #ifdef DEBUG_MOVIE if (exit_loop) + { qDebug() << "[AOLayer::populate_vectors] Exit requested"; + } #endif exit_loop = false; } -void AOLayer::load_next_frame() { +void AOLayer::load_next_frame() +{ { QMutexLocker locker(&mutex); movie_frames.append(this->get_pixmap(m_reader.read())); @@ -603,16 +689,20 @@ void AOLayer::load_next_frame() { void CharLayer::preanim_done() { if (is_preanim) + { AOLayer::preanim_done(); + } else + { return; + } } void AOLayer::preanim_done() { ticker->stop(); preanim_timer->stop(); - emit done(); + Q_EMIT done(); } void AOLayer::shfx_timer_done() @@ -622,5 +712,5 @@ void AOLayer::shfx_timer_done() qDebug() << "shfx timer signaled done"; #endif // signal connected to courtroom object, let it figure out what to do - emit done(); + Q_EMIT done(); } diff --git a/src/aolayer.h b/src/aolayer.h new file mode 100644 index 00000000..0a44d8f5 --- /dev/null +++ b/src/aolayer.h @@ -0,0 +1,267 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class AOApplication; +class VPath; + +// "Brief" explanation of what the hell this is: +// +// AOLayer handles all animations both inside and outside +// the viewport. It was originally devised as a layering +// system, but turned into a full refactor of the existing +// animation code. +// +// AOLayer has six subclasses, all of which differ mainly in +// how they handle path resolution. +// +// - BackgroundLayer: self-explanatory, handles files found in base/background +// - CharLayer: handles all the "wonderful" quirks of character path resolution +// - SplashLayer: handles elements that can either be provided by a misc/ directory +// or by the theme - speedlines, shouts, WT/CE, et cetera +// - EffectLayer: this is basically a dummy layer since effects do their own wonky +// path resolution in a different file +// - InterfaceLayer: handles UI elements like the chat arrow and the music display +// - StickerLayer: Crystalwarrior really wanted this. Handles "stickers," whatever those are. +// +// For questions comments or concerns, bother someone else + +class AOLayer : public QLabel +{ + Q_OBJECT + +public: + AOLayer(AOApplication *p_ao_app, QWidget *p_parent = nullptr); + + QString filename; // file name without extension, i.e. "witnesstestimony" + int static_duration; // time in ms for static images to be displayed, if + // applicable. set to 0 for infinite + int max_duration; // maximum duration in ms, image will be culled if it is + // exceeded. set this to 0 for infinite duration + bool play_once = false; // Whether to loop this animation or not + bool cull_image = true; // if we're done playing this animation, should we + // hide it? also controls durational culling + // Are we loading this from the same frame we left off on? + bool continuous = false; + // Whether or not to forcibly bypass the simple check done by start_playback + // and use the existent value of continuous instead + bool force_continuous = false; + Qt::TransformationMode transform_mode = Qt::FastTransformation; // transformation mode to use for this image + bool stretch = false; // Should we stretch/squash this image to fill the screen? + bool masked = true; // Set a mask to the dimensions of the widget? + + // Set the movie's image to provided paths, preparing for playback. + void start_playback(QString p_image); + + void set_play_once(bool p_play_once); + void set_cull_image(bool p_cull_image); + void set_static_duration(int p_static_duration); + void set_max_duration(int p_max_duration); + + // Stop the movie, clearing the image + void stop(); + + // Stop the movie and clear all vectors + void kill(); + + // Set the m_flipped variable to true/false + void set_flipped(bool p_flipped) { m_flipped = p_flipped; } + + // Move the label itself around + void move(int ax, int ay); + + // Move the label and center it + void move_and_center(int ax, int ay); + + // This is somewhat pointless now as there's no "QMovie" object to resize, aka + // no "combo" to speak of + void combo_resize(int w, int h); + + // Return the frame delay adjusted for speed + int get_frame_delay(int delay); + + // iterate through a list of paths and return the first entry that exists. if + // none exist, return NULL (safe because we check again for existence later) + QString find_image(QStringList p_list); + +protected: + AOApplication *ao_app; + QVector movie_frames; + QVector movie_delays; + + QTimer *preanim_timer; + QTimer *shfx_timer; + QTimer *ticker; + QString last_path; + QImageReader m_reader; + + QElapsedTimer actual_time; + + // These are the X and Y values before they are fixed based on the sprite's + // width. + int x = 0; + int y = 0; + // These are the width and height values before they are fixed based on the + // sprite's width. + int f_w = 0; + int f_h = 0; + + int frame = 0; + int max_frames = 0; + int last_max_frames = 0; + + int speed = 100; + + bool m_flipped = false; + + int duration = 0; + + // Start playback of the movie (if animated). + void play(); + + // Freeze the movie at the current frame. + void freeze(); + + // Retreive a pixmap adjused for mirroring/aspect ratio shenanigans from a + // provided QImage + QPixmap get_pixmap(QImage image); + + // Set the movie's frame to provided pixmap + void set_frame(QPixmap f_pixmap); + // Center the QLabel in the viewport based on the dimensions of f_pixmap + void center_pixmap(QPixmap f_pixmap); + +private: + // Populates the frame and delay vectors. + void populate_vectors(); + + // used in populate_vectors + void load_next_frame(); + std::atomic_bool exit_loop{false}; // awful solution but i'm not fucking using QThread + QFuture frame_loader; + QMutex mutex; + QWaitCondition frameAdded; + +Q_SIGNALS: + void done(); + +protected Q_SLOTS: + virtual void preanim_done(); + void shfx_timer_done(); + virtual void movie_ticker(); +}; + +class BackgroundLayer : public AOLayer +{ + Q_OBJECT +public: + BackgroundLayer(AOApplication *p_ao_app, QWidget *p_parent); + void load_image(QString p_filename); +}; + +class CharLayer : public AOLayer +{ + Q_OBJECT + +public: + CharLayer(AOApplication *p_ao_app, QWidget *p_parent = nullptr); + + QStringList &network_strings2() { return m_network_strings; } + void set_network_string(QStringList list) { m_network_strings = list; } + + void load_image(QString p_filename, QString p_charname, int p_duration, bool p_is_preanim); + + void play(); // overloaded so we can play effects + +private: + QString current_emote; // name of the emote we're using + bool is_preanim; // equivalent to the old play_once, if true we don't want + // to loop this + QString prefix; // prefix, left blank if it's a preanim + QStringList m_network_strings; + + QString last_char; // name of the last character we used + QString last_emote; // name of the last animation we used + QString last_prefix; // prefix of the last animation we played + bool was_preanim = false; // whether is_preanim was true last time + + // Effects such as sfx, screenshakes and realization flashes are stored in + // here. QString entry format: "sfx^[sfx_name]", "shake", "flash". The program + // uses the QVector index as reference. + QVector> movie_effects; + + // used for effect loading + QString m_char; + QString m_emote; + + // overloaded for effects reasons + void start_playback(QString p_image); + + // Initialize the frame-specific effects from the char.ini + void load_effects(); + + // Initialize the frame-specific effects from the provided network_strings, + // this is only initialized if network_strings has size more than 0. + void load_network_effects(); + + // Play a frame-specific effect, if there's any defined for that specific + // frame. + void play_frame_effect(int p_frame); + +private Q_SLOTS: + void preanim_done() override; // overridden so we don't accidentally cull characters + void movie_ticker() override; // overridden so we can play effects + +Q_SIGNALS: + void shake(); + void flash(); + void play_sfx(QString sfx); +}; + +class SplashLayer : public AOLayer +{ + Q_OBJECT + +public: + SplashLayer(AOApplication *p_ao_app, QWidget *p_parent = nullptr); + + void load_image(QString p_filename, QString p_charname, QString p_miscname); +}; + +class EffectLayer : public AOLayer +{ + Q_OBJECT + +public: + EffectLayer(AOApplication *p_ao_app, QWidget *p_parent = nullptr); + + void load_image(QString p_filename, bool p_looping); +}; + +class InterfaceLayer : public AOLayer +{ + Q_OBJECT + +public: + InterfaceLayer(AOApplication *p_ao_app, QWidget *p_parent = nullptr); + + void load_image(QString p_filename, QString p_miscname); +}; + +class StickerLayer : public AOLayer +{ + Q_OBJECT + +public: + StickerLayer(AOApplication *p_ao_app, QWidget *p_parent = nullptr); + + void load_image(QString p_charname); +}; diff --git a/src/aomusicplayer.cpp b/src/aomusicplayer.cpp index 3f7c43ee..b9e6ab98 100644 --- a/src/aomusicplayer.cpp +++ b/src/aomusicplayer.cpp @@ -1,74 +1,92 @@ #include "aomusicplayer.h" -#include "options.h" -#include "bass.h" #include "file_functions.h" +#include "options.h" -AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app) -{ - m_parent = parent; - ao_app = p_ao_app; -} +#include + +#include +#include +#include + +AOMusicPlayer::AOMusicPlayer(AOApplication *p_ao_app) + : ao_app(p_ao_app) +{} AOMusicPlayer::~AOMusicPlayer() { - for (int n_stream = 0; n_stream < m_channelmax; ++n_stream) { + for (int n_stream = 0; n_stream < CHANNEL_COUNT; ++n_stream) + { BASS_ChannelStop(m_stream_list[n_stream]); } } -QString AOMusicPlayer::play(QString p_song, int channel, bool loop, - int effect_flags) +QString AOMusicPlayer::play(QString p_song, int channel, bool loop, int effect_flags) { - channel = channel % m_channelmax; + channel = channel % CHANNEL_COUNT; if (channel < 0) // wtf? + { return "[ERROR] Invalid Channel"; - unsigned int flags = BASS_STREAM_PRESCAN | BASS_STREAM_AUTOFREE | - BASS_UNICODE | BASS_ASYNCFILE; + } + unsigned int flags = BASS_STREAM_PRESCAN | BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE; unsigned int streaming_flags = BASS_STREAM_AUTOFREE; - if (loop) { + if (loop) + { flags |= BASS_SAMPLE_LOOP; streaming_flags |= BASS_SAMPLE_LOOP; } QString f_path = p_song; DWORD newstream; - if (f_path.startsWith("http")) { - - if (!Options::getInstance().streamingEnabled()) { - BASS_ChannelStop(m_stream_list[channel]); - return QObject::tr("[MISSING] Streaming disabled."); + if (f_path.startsWith("http")) + { + if (!Options::getInstance().streamingEnabled()) + { + BASS_ChannelStop(m_stream_list[channel]); + return QObject::tr("[MISSING] Streaming disabled."); } QUrl l_url = QUrl(f_path); newstream = BASS_StreamCreateURL(l_url.toEncoded().toStdString().c_str(), 0, streaming_flags, nullptr, 0); } - else { + else + { f_path = ao_app->get_real_path(ao_app->get_music_path(p_song)); - if (f_path.endsWith(".mo3") || f_path.endsWith(".xm") || f_path.endsWith(".mod") || f_path.endsWith(".s3m") || f_path.endsWith(".it") || f_path.endsWith(".mtm") || f_path.endsWith(".umx") ) - newstream = BASS_MusicLoad(FALSE,f_path.utf16(), 0, 0, flags, 1); + if (f_path.endsWith(".mo3") || f_path.endsWith(".xm") || f_path.endsWith(".mod") || f_path.endsWith(".s3m") || f_path.endsWith(".it") || f_path.endsWith(".mtm") || f_path.endsWith(".umx")) + { + newstream = BASS_MusicLoad(FALSE, f_path.utf16(), 0, 0, flags, 1); + } else + { newstream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, flags); + } } int error_code = BASS_ErrorGetCode(); if (Options::getInstance().audioOutputDevice() != "default") + { BASS_ChannelSetDevice(m_stream_list[channel], BASS_GetDevice()); + } QString d_path = f_path + ".txt"; - loop_start[channel] = 0; - loop_end[channel] = 0; + m_loop_start[channel] = 0; + m_loop_end[channel] = 0; if (loop && file_exists(d_path)) // Contains loop/etc. information file { QStringList lines = ao_app->read_file(d_path).split("\n"); bool seconds_mode = false; - foreach (QString line, lines) { + foreach (QString line, lines) + { QStringList args = line.split("="); if (args.size() < 2) + { continue; + } QString arg = args[0].trimmed(); - if (arg == "seconds") { - if (args[1].trimmed() == "true") { + if (arg == "seconds") + { + if (args[1].trimmed() == "true") + { seconds_mode = true; // Use new epic behavior continue; } @@ -86,64 +104,71 @@ QString AOMusicPlayer::play(QString p_song, int channel, bool loop, // Calculate the bytes for loop_start/loop_end to use with the sync proc QWORD bytes; - if (seconds_mode) { - bytes = - BASS_ChannelSeconds2Bytes(newstream, args[1].trimmed().toDouble()); + if (seconds_mode) + { + bytes = BASS_ChannelSeconds2Bytes(newstream, args[1].trimmed().toDouble()); } - else { - bytes = static_cast(args[1].trimmed().toUInt() * sample_size * - num_channels); + else + { + bytes = static_cast(args[1].trimmed().toUInt() * sample_size * num_channels); } if (arg == "loop_start") - loop_start[channel] = bytes; + { + m_loop_start[channel] = bytes; + } else if (arg == "loop_length") - loop_end[channel] = loop_start[channel] + bytes; + { + m_loop_end[channel] = m_loop_start[channel] + bytes; + } else if (arg == "loop_end") - loop_end[channel] = bytes; + { + m_loop_end[channel] = bytes; + } } - qDebug() << "Found data file for song" << p_song << "length" - << BASS_ChannelGetLength(newstream, BASS_POS_BYTE) << "loop start" - << loop_start[channel] << "loop end" << loop_end[channel]; + qDebug() << "Found data file for song" << p_song << "length" << BASS_ChannelGetLength(newstream, BASS_POS_BYTE) << "loop start" << m_loop_start[channel] << "loop end" << m_loop_end[channel]; } - if (BASS_ChannelIsActive(m_stream_list[channel]) == BASS_ACTIVE_PLAYING) { + if (BASS_ChannelIsActive(m_stream_list[channel]) == BASS_ACTIVE_PLAYING) + { DWORD oldstream = m_stream_list[channel]; - if (effect_flags & SYNC_POS) { + if (effect_flags & SYNC_POS) + { BASS_ChannelLock(oldstream, true); // Sync it with the new sample - BASS_ChannelSetPosition(newstream, - BASS_ChannelGetPosition(oldstream, BASS_POS_BYTE), - BASS_POS_BYTE); + BASS_ChannelSetPosition(newstream, BASS_ChannelGetPosition(oldstream, BASS_POS_BYTE), BASS_POS_BYTE); BASS_ChannelLock(oldstream, false); } - if ((effect_flags & FADE_OUT) && m_volume[channel] > 0) { + if ((effect_flags & FADE_OUT) && m_volume[channel] > 0) + { // Fade out the other sample and stop it (due to -1) - BASS_ChannelSlideAttribute(oldstream, BASS_ATTRIB_VOL | BASS_SLIDE_LOG, - -1, 4000); + BASS_ChannelSlideAttribute(oldstream, BASS_ATTRIB_VOL | BASS_SLIDE_LOG, -1, 4000); } else - BASS_ChannelStop( - oldstream); // Stop the sample since we don't need it anymore + { + BASS_ChannelStop(oldstream); // Stop the sample since we don't need it anymore + } } else + { BASS_ChannelStop(m_stream_list[channel]); + } m_stream_list[channel] = newstream; BASS_ChannelPlay(newstream, false); - if (effect_flags & FADE_IN) { + if (effect_flags & FADE_IN) + { // Fade in our sample BASS_ChannelSetAttribute(newstream, BASS_ATTRIB_VOL, 0); - BASS_ChannelSlideAttribute(newstream, BASS_ATTRIB_VOL, - static_cast(m_volume[channel] / 100.0f), - 1000); + BASS_ChannelSlideAttribute(newstream, BASS_ATTRIB_VOL, static_cast(m_volume[channel] / 100.0f), 1000); } else + { this->set_volume(m_volume[channel], channel); + } - BASS_ChannelSetSync(newstream, BASS_SYNC_DEV_FAIL, 0, - ao_app->BASSreset, 0); + BASS_ChannelSetSync(newstream, BASS_SYNC_DEV_FAIL, 0, ao_app->BASSreset, 0); this->set_looping(loop, channel); // Have to do this here due to any // crossfading-related changes, etc. @@ -152,20 +177,25 @@ QString AOMusicPlayer::play(QString p_song, int channel, bool loop, QString p_song_clear = QUrl(p_song).fileName(); p_song_clear = p_song_clear.left(p_song_clear.lastIndexOf('.')); - if (is_stop && channel == 0) { // don't send text on channels besides 0 + if (is_stop && channel == 0) + { // don't send text on channels besides 0 return QObject::tr("None"); } - if (error_code == BASS_ERROR_HANDLE) { // Cheap hack to see if file missing + if (error_code == BASS_ERROR_HANDLE) + { // Cheap hack to see if file missing return QObject::tr("[MISSING] %1").arg(p_song_clear); } - if (p_song.startsWith("http") && channel == 0) { + if (p_song.startsWith("http") && channel == 0) + { return QObject::tr("[STREAM] %1").arg(p_song_clear); } if (channel == 0) + { return p_song_clear; + } return ""; } @@ -179,7 +209,8 @@ void AOMusicPlayer::set_muted(bool toggle) { m_muted = toggle; // Update all volume based on the mute setting - for (int n_stream = 0; n_stream < m_channelmax; ++n_stream) { + for (int n_stream = 0; n_stream < CHANNEL_COUNT; ++n_stream) + { set_volume(m_volume[n_stream], n_stream); } } @@ -189,13 +220,15 @@ void AOMusicPlayer::set_volume(int p_value, int channel) m_volume[channel] = p_value; // If muted, volume will always be 0 float volume = (m_volume[channel] / 100.0f) * !m_muted; - if (channel < 0) { - for (int n_stream = 0; n_stream < m_channelmax; ++n_stream) { - BASS_ChannelSetAttribute(m_stream_list[n_stream], BASS_ATTRIB_VOL, - volume); + if (channel < 0) + { + for (int n_stream = 0; n_stream < CHANNEL_COUNT; ++n_stream) + { + BASS_ChannelSetAttribute(m_stream_list[n_stream], BASS_ATTRIB_VOL, volume); } } - else { + else + { BASS_ChannelSetAttribute(m_stream_list[channel], BASS_ATTRIB_VOL, volume); } } @@ -212,35 +245,35 @@ void CALLBACK loopProc(HSYNC handle, DWORD channel, DWORD data, void *user) void AOMusicPlayer::set_looping(bool loop_song, int channel) { - if (!loop_song) { + if (!loop_song) + { if (BASS_ChannelFlags(m_stream_list[channel], 0, 0) & BASS_SAMPLE_LOOP) + { BASS_ChannelFlags(m_stream_list[channel], 0, BASS_SAMPLE_LOOP); // remove the LOOP flag - BASS_ChannelRemoveSync(m_stream_list[channel], loop_sync[channel]); - loop_sync[channel] = 0; + } + BASS_ChannelRemoveSync(m_stream_list[channel], m_loop_sync[channel]); + m_loop_sync[channel] = 0; return; } BASS_ChannelFlags(m_stream_list[channel], BASS_SAMPLE_LOOP, BASS_SAMPLE_LOOP); // set the LOOP flag - if (loop_sync[channel] != 0) { + if (m_loop_sync[channel] != 0) + { BASS_ChannelRemoveSync(m_stream_list[channel], - loop_sync[channel]); // remove the sync - loop_sync[channel] = 0; + m_loop_sync[channel]); // remove the sync + m_loop_sync[channel] = 0; } - if (loop_start[channel] < loop_end[channel]) + if (m_loop_start[channel] < m_loop_end[channel]) { - //Loop when the endpoint is reached. - loop_sync[channel] = BASS_ChannelSetSync( - m_stream_list[channel], BASS_SYNC_POS | BASS_SYNC_MIXTIME, - loop_end[channel], loopProc, &loop_start[channel]); + // Loop when the endpoint is reached. + m_loop_sync[channel] = BASS_ChannelSetSync(m_stream_list[channel], BASS_SYNC_POS | BASS_SYNC_MIXTIME, m_loop_end[channel], loopProc, &m_loop_start[channel]); } else { - //Loop when the end of the file is reached. - loop_sync[channel] = BASS_ChannelSetSync( - m_stream_list[channel], BASS_SYNC_END | BASS_SYNC_MIXTIME, - 0, loopProc, &loop_start[channel]); + // Loop when the end of the file is reached. + m_loop_sync[channel] = BASS_ChannelSetSync(m_stream_list[channel], BASS_SYNC_END | BASS_SYNC_MIXTIME, 0, loopProc, &m_loop_start[channel]); } } diff --git a/src/aomusicplayer.h b/src/aomusicplayer.h new file mode 100644 index 00000000..248a45e3 --- /dev/null +++ b/src/aomusicplayer.h @@ -0,0 +1,44 @@ +#pragma once + +#include "aoapplication.h" + +#include + +class AOMusicPlayer +{ +public: + // Channel 0 = music + // Channel 1 = ambience + static constexpr int CHANNEL_COUNT = 2; + + AOMusicPlayer(AOApplication *p_ao_app); + virtual ~AOMusicPlayer(); + + void set_volume(int p_value, int channel = -1); + void set_looping(bool loop_song, int channel = 0); + void set_muted(bool toggle); + + QFutureWatcher music_watcher; + +public Q_SLOTS: + QString play(QString p_song, int channel = 0, bool loop = false, int effect_flags = 0); + void stop(int channel = 0); + +private: + AOApplication *ao_app; + + bool m_muted = false; + int m_volume[CHANNEL_COUNT] = {0, 0}; + HSTREAM m_stream_list[CHANNEL_COUNT]; + HSYNC m_loop_sync[CHANNEL_COUNT]; + + /** + * @brief The starting sample of the AB-Loop. + */ + unsigned int m_loop_start[CHANNEL_COUNT] = {0, 0}; + + /** + * @brief The end sample of the AB-Loop. + */ + unsigned int m_loop_end[CHANNEL_COUNT] = {0, 0}; +}; diff --git a/src/aopacket.cpp b/src/aopacket.cpp index 4a89e980..663edc52 100644 --- a/src/aopacket.cpp +++ b/src/aopacket.cpp @@ -1,42 +1,48 @@ #include "aopacket.h" -QString AOPacket::to_string(bool encoded) +QString AOPacket::encode(QString data) { - QStringList contents = m_contents; - if (encoded) { - escape(contents); - } - // Our packet is just the header by itself - if (contents.isEmpty()) { - return m_header + "#%"; - } - return m_header + "#" + contents.join("#") + "#%"; + return data.replace("#", "").replace("%", "").replace("$", "").replace("&", ""); } -void AOPacket::net_encode() +QString AOPacket::decode(QString data) { - escape(m_contents); + return data.replace("", "#").replace("", "%").replace("", "$").replace("", "&"); } -void AOPacket::net_decode() +AOPacket::AOPacket(QString header) + : m_header(header) +{} + +AOPacket::AOPacket(QString header, QStringList content) + : m_header(header) + , m_content(content) +{} + +QString AOPacket::get_header() { - unescape(m_contents); + return m_header; } -void AOPacket::escape(QStringList &contents) +QStringList &AOPacket::get_content() { - contents.replaceInStrings("#", "") - .replaceInStrings("%", "") - .replaceInStrings("$", "") - .replaceInStrings("&", ""); - + return m_content; } -void AOPacket::unescape(QStringList &contents) +QString AOPacket::to_string(bool ensureEncoded) { - contents.replaceInStrings("", "#") - .replaceInStrings("", "%") - .replaceInStrings("", "$") - .replaceInStrings("", "&"); + QString message = m_header; + if (!m_content.isEmpty()) + { + for (QString item : qAsConst(m_content)) + { + if (ensureEncoded) + { + item = encode(item); + } + message += "#" + item; + } + } + return message + "#%"; } diff --git a/src/aopacket.h b/src/aopacket.h new file mode 100644 index 00000000..df7f09c2 --- /dev/null +++ b/src/aopacket.h @@ -0,0 +1,22 @@ +#pragma once + +#include +#include + +class AOPacket +{ +public: + static QString encode(QString data); + static QString decode(QString data); + + AOPacket(QString header); + AOPacket(QString header, QStringList content); + + QString get_header(); + QStringList &get_content(); + QString to_string(bool ensureEncoded = false); + +private: + QString m_header; + QStringList m_content; +}; diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp index 8d88667c..1b9be002 100644 --- a/src/aosfxplayer.cpp +++ b/src/aosfxplayer.cpp @@ -1,15 +1,15 @@ #include "aosfxplayer.h" + #include "file_functions.h" -AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) -{ - m_parent = parent; - ao_app = p_ao_app; -} +AOSfxPlayer::AOSfxPlayer(AOApplication *p_ao_app) + : ao_app(p_ao_app) +{} void AOSfxPlayer::clear() { - for (int n_stream = 0; n_stream < m_channelmax; ++n_stream) { + for (int n_stream = 0; n_stream < CHANNEL_COUNT; ++n_stream) + { BASS_ChannelStop(m_stream_list[n_stream]); } set_volume_internal(m_volume); @@ -17,44 +17,51 @@ void AOSfxPlayer::clear() void AOSfxPlayer::loop_clear() { - for (int n_stream = 0; n_stream < m_channelmax; ++n_stream) { + for (int n_stream = 0; n_stream < CHANNEL_COUNT; ++n_stream) + { if ((BASS_ChannelFlags(m_stream_list[n_stream], 0, 0) & BASS_SAMPLE_LOOP)) + { BASS_ChannelStop(m_stream_list[n_stream]); + } } set_volume_internal(m_volume); } void AOSfxPlayer::play(QString p_sfx, QString p_character, QString p_misc) { - for (int i = 0; i < m_channelmax; ++i) { + for (int i = 0; i < CHANNEL_COUNT; ++i) + { if (BASS_ChannelIsActive(m_stream_list[i]) == BASS_ACTIVE_PLAYING) - m_channel = (i + 1) % m_channelmax; - else { + { + m_channel = (i + 1) % CHANNEL_COUNT; + } + else + { m_channel = i; break; } } QString path = ao_app->get_sfx(p_sfx, p_misc, p_character); if (path.endsWith(".opus")) - m_stream_list[m_channel] = BASS_OPUS_StreamCreateFile( - FALSE, path.utf16(), 0, 0, - BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); + { + m_stream_list[m_channel] = BASS_OPUS_StreamCreateFile(FALSE, path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); + } else - m_stream_list[m_channel] = BASS_StreamCreateFile( - FALSE, path.utf16(), 0, 0, - BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); + { + m_stream_list[m_channel] = BASS_StreamCreateFile(FALSE, path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); + } set_volume_internal(m_volume); BASS_ChannelSetDevice(m_stream_list[m_channel], BASS_GetDevice()); BASS_ChannelPlay(m_stream_list[m_channel], false); - BASS_ChannelSetSync(m_stream_list[m_channel], BASS_SYNC_DEV_FAIL, 0, - ao_app->BASSreset, 0); + BASS_ChannelSetSync(m_stream_list[m_channel], BASS_SYNC_DEV_FAIL, 0, ao_app->BASSreset, 0); } void AOSfxPlayer::stop(int channel) { - if (channel == -1) { + if (channel == -1) + { channel = m_channel; } BASS_ChannelStop(m_stream_list[channel]); @@ -67,6 +74,11 @@ void AOSfxPlayer::set_muted(bool toggle) set_volume_internal(m_volume); } +int AOSfxPlayer::get_volume() +{ + return m_volume * 100; +} + void AOSfxPlayer::set_volume(qreal p_value) { m_volume = p_value * 0.01; @@ -77,25 +89,33 @@ void AOSfxPlayer::set_volume_internal(qreal p_value) { // If muted, volume will always be 0 float volume = static_cast(p_value) * !m_muted; - for (int n_stream = 0; n_stream < m_channelmax; ++n_stream) { + for (int n_stream = 0; n_stream < CHANNEL_COUNT; ++n_stream) + { BASS_ChannelSetAttribute(m_stream_list[n_stream], BASS_ATTRIB_VOL, volume); } } void AOSfxPlayer::set_looping(bool toggle, int channel) { - if (channel == -1) { + if (channel == -1) + { channel = m_channel; } m_looping = toggle; - if (BASS_ChannelFlags(m_stream_list[channel], 0, 0) & BASS_SAMPLE_LOOP) { + if (BASS_ChannelFlags(m_stream_list[channel], 0, 0) & BASS_SAMPLE_LOOP) + { if (m_looping == false) + { BASS_ChannelFlags(m_stream_list[channel], 0, BASS_SAMPLE_LOOP); // remove the LOOP flag + } } - else { + else + { if (m_looping == true) + { BASS_ChannelFlags(m_stream_list[channel], BASS_SAMPLE_LOOP, BASS_SAMPLE_LOOP); // set the LOOP flag + } } } diff --git a/src/aosfxplayer.h b/src/aosfxplayer.h new file mode 100644 index 00000000..6a71a71c --- /dev/null +++ b/src/aosfxplayer.h @@ -0,0 +1,38 @@ +#pragma once + +#include "bass.h" +#include "bassopus.h" + +#include "aoapplication.h" + +#include +#include + +class AOSfxPlayer +{ +public: + static constexpr int CHANNEL_COUNT = 5; + + AOSfxPlayer(AOApplication *p_ao_app); + + int get_volume(); + + void clear(); + void loop_clear(); + void play(QString p_sfx, QString p_char = QString(), QString shout = QString()); + void stop(int channel = -1); + void set_volume(qreal p_volume); + void set_looping(bool toggle, int channel = -1); + void set_muted(bool toggle); + +private: + AOApplication *ao_app; + + qreal m_volume = 0.0; + bool m_looping = true; + bool m_muted = false; + int m_channel = 0; + HSTREAM m_stream_list[CHANNEL_COUNT]{}; + + void set_volume_internal(qreal p_volume); +}; diff --git a/src/aotextarea.cpp b/src/aotextarea.cpp index a4259039..cf651244 100644 --- a/src/aotextarea.cpp +++ b/src/aotextarea.cpp @@ -1,42 +1,36 @@ #include "aotextarea.h" -AOTextArea::AOTextArea(QWidget *p_parent, int p_log_length) : QTextBrowser(p_parent) -{ - this->document()->setMaximumBlockCount(p_log_length); -} +AOTextArea::AOTextArea(QWidget *p_parent) + : AOTextArea(5000, p_parent) +{} -void AOTextArea::append_linked(QString p_message) +AOTextArea::AOTextArea(int p_log_length, QWidget *p_parent) + : QTextBrowser(p_parent) { - QString result = p_message.toHtmlEscaped() - .replace("\n", "
") - .replace(url_parser_regex, "\\1"); - this->insertHtml(result); + this->document()->setMaximumBlockCount(p_log_length); } -void AOTextArea::append_chatmessage(QString p_name, QString p_message, - QString p_name_colour, QString p_color) +void AOTextArea::append_chatmessage(QString p_name, QString p_message, QString p_name_colour, QString p_color) { const QTextCursor old_cursor = this->textCursor(); const int old_scrollbar_value = this->verticalScrollBar()->value(); - const bool is_scrolled_down = - old_scrollbar_value == this->verticalScrollBar()->maximum(); + const bool is_scrolled_down = old_scrollbar_value == this->verticalScrollBar()->maximum(); this->moveCursor(QTextCursor::End); this->append(""); - if (!p_name.isEmpty()) { - this->insertHtml("" + p_name.toHtmlEscaped() + - ": "); + if (!p_name.isEmpty()) + { + this->insertHtml("" + p_name.toHtmlEscaped() + ": "); // cheap workarounds ahoy p_message += " "; } - QString result = p_message.toHtmlEscaped() - .replace("\n", "
") - .replace(url_parser_regex, "\\1"); + QString result = p_message.toHtmlEscaped().replace("\n", "
").replace(url_parser_regex, "\\1"); - if (!p_color.isEmpty()) { + if (!p_color.isEmpty()) + { result = "" + result + ""; } @@ -45,36 +39,17 @@ void AOTextArea::append_chatmessage(QString p_name, QString p_message, this->auto_scroll(old_cursor, old_scrollbar_value, is_scrolled_down); } -void AOTextArea::append_error(QString p_message) -{ - const QTextCursor old_cursor = this->textCursor(); - const int old_scrollbar_value = this->verticalScrollBar()->value(); - const bool is_scrolled_down = - old_scrollbar_value == this->verticalScrollBar()->maximum(); - - this->moveCursor(QTextCursor::End); - - this->append(""); - - p_message += " "; - QString result = p_message.replace("\n", "
") - .replace(url_parser_regex, "\\1"); - - this->insertHtml("" + result + ""); - - this->auto_scroll(old_cursor, old_scrollbar_value, is_scrolled_down); -} - -void AOTextArea::auto_scroll(QTextCursor old_cursor, int old_scrollbar_value, - bool is_scrolled_down) +void AOTextArea::auto_scroll(QTextCursor old_cursor, int old_scrollbar_value, bool is_scrolled_down) { - if (old_cursor.hasSelection() || !is_scrolled_down) { + if (old_cursor.hasSelection() || !is_scrolled_down) + { // The user has selected text or scrolled away from the bottom: maintain // position. this->setTextCursor(old_cursor); this->verticalScrollBar()->setValue(old_scrollbar_value); } - else { + else + { // The user hasn't selected any text and the scrollbar is at the bottom: // scroll to the bottom. this->moveCursor(QTextCursor::End); diff --git a/src/aotextarea.h b/src/aotextarea.h new file mode 100644 index 00000000..b6f6ec6a --- /dev/null +++ b/src/aotextarea.h @@ -0,0 +1,23 @@ +#pragma once + +#include +#include +#include +#include +#include + +class AOTextArea : public QTextBrowser +{ + Q_OBJECT + +public: + AOTextArea(QWidget *p_parent = nullptr); + AOTextArea(int p_log_length, QWidget *p_parent = nullptr); + + void append_chatmessage(QString p_name, QString p_message, QString p_name_colour, QString p_color = QString()); + +private: + const QRegularExpression url_parser_regex = QRegularExpression("\\b(https?://\\S+\\.\\S+)\\b"); + + void auto_scroll(QTextCursor old_cursor, int scrollbar_value, bool is_scrolled_down); +}; diff --git a/src/aotextboxwidgets.cpp b/src/aotextboxwidgets.cpp index 1a16e8fe..a6999beb 100644 --- a/src/aotextboxwidgets.cpp +++ b/src/aotextboxwidgets.cpp @@ -1,21 +1,44 @@ #include "aotextboxwidgets.h" -AOChatboxLabel::AOChatboxLabel(QWidget *parent) : QLabel(parent) {} +AOChatboxLabel::AOChatboxLabel(QWidget *parent) + : QLabel(parent) +{} + +void AOChatboxLabel::setOutlineColor(QColor color) +{ + m_outline_color = color; +} + +void AOChatboxLabel::setOutlineWidth(int width) +{ + m_outline_width = width; +} + +void AOChatboxLabel::setIsOutlined(bool outlined) +{ + m_outline = outlined; +} + +void AOChatboxLabel::setTextColor(QColor color) +{ + m_text_color = color; +} void AOChatboxLabel::paintEvent(QPaintEvent *event) { - if (is_outlined) { + if (m_outline) + { QBrush brush; QPen pen; - QPointF baseline(outline_width, fontMetrics().height()); + QPointF baseline(m_outline_width, fontMetrics().height()); // Set up brush (base text) - brush.setColor(text_color); + brush.setColor(m_text_color); brush.setStyle(Qt::SolidPattern); // Set up outline - pen.setColor(outline_color); - pen.setWidthF(outline_width); + pen.setColor(m_outline_color); + pen.setWidthF(m_outline_width); QPainterPath path; path.addText(baseline, font(), text()); @@ -30,7 +53,8 @@ void AOChatboxLabel::paintEvent(QPaintEvent *event) painter.setBrush(brush); painter.drawPath(path); } - else { + else + { // Use the default renderer QLabel::paintEvent(event); } diff --git a/src/aotextboxwidgets.h b/src/aotextboxwidgets.h new file mode 100644 index 00000000..fa7288f8 --- /dev/null +++ b/src/aotextboxwidgets.h @@ -0,0 +1,32 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +class AOChatboxLabel : public QLabel +{ + Q_OBJECT + +public: + AOChatboxLabel(QWidget *parent); + + void setIsOutlined(bool outlined); + void setOutlineColor(QColor color); + void setOutlineWidth(int width); + + void setTextColor(QColor color); + +protected: + void paintEvent(QPaintEvent *event); + +private: + bool m_outline = false; + QColor m_outline_color; + int m_outline_width = 1; + QColor m_text_color; +}; diff --git a/src/aoutils.cpp b/src/aoutils.cpp index ee2e90b3..dd88a0a2 100644 --- a/src/aoutils.cpp +++ b/src/aoutils.cpp @@ -28,15 +28,15 @@ void AOUtils::migrateEffects(QSettings &p_effects_ini) p_effects_ini.endGroup(); const QStringList l_property_list{ - "sound", - "scaling", - "stretch", - "ignore_offset", - "under_chatbox", + "sound", + "scaling", + "stretch", + "ignore_offset", + "under_chatbox", }; const QMap> l_property_replacement_list{ - {"under_chatbox", {"layer", "character"}}, + {"under_chatbox", {"layer", "character"}}, }; QStringList l_key_list; @@ -65,9 +65,10 @@ void AOUtils::migrateEffects(QSettings &p_effects_ini) p_effects_ini.setValue("cull", true); p_effects_ini.setValue("layer", "character"); - if (i_effect_key == "realization") { - p_effects_ini.setValue("stretch", true); - p_effects_ini.setValue("layer", "chat"); + if (i_effect_key == "realization") + { + p_effects_ini.setValue("stretch", true); + p_effects_ini.setValue("layer", "chat"); } for (const QString &i_property : l_property_list) diff --git a/src/aoutils.h b/src/aoutils.h new file mode 100644 index 00000000..1fe03fd5 --- /dev/null +++ b/src/aoutils.h @@ -0,0 +1,12 @@ +#pragma once + +#include + +namespace AOUtils +{ +/** + * @brief Migrates the effects from the old format to version 2. + * @param QSettings object reference of the old effects.ini + */ +void migrateEffects(QSettings &p_fileName); +}; // namespace AOUtils diff --git a/src/charselect.cpp b/src/charselect.cpp index 443c1f20..57b4e76b 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -7,9 +7,9 @@ void Courtroom::construct_char_select() { - this->setWindowFlags( (this->windowFlags() | Qt::CustomizeWindowHint) & ~Qt::WindowMaximizeButtonHint); + this->setWindowFlags((this->windowFlags() | Qt::CustomizeWindowHint) & ~Qt::WindowMaximizeButtonHint); - ui_char_select_background = new AOImage(this, ao_app); + ui_char_select_background = new AOImage(ao_app, this); ui_char_select_background->setObjectName("ui_char_select_background"); ui_char_list = new QTreeWidget(ui_char_select_background); @@ -24,19 +24,19 @@ void Courtroom::construct_char_select() ui_char_buttons = new QWidget(ui_char_select_background); ui_char_buttons->setObjectName("ui_char_buttons"); - ui_back_to_lobby = new AOButton(ui_char_select_background, ao_app); + ui_back_to_lobby = new AOButton(ao_app, ui_char_select_background); ui_back_to_lobby->setObjectName("ui_back_to_lobby"); ui_char_password = new QLineEdit(ui_char_select_background); ui_char_password->setPlaceholderText(tr("Password")); ui_char_password->setObjectName("ui_char_password"); - ui_char_select_left = new AOButton(ui_char_select_background, ao_app); + ui_char_select_left = new AOButton(ao_app, ui_char_select_background); ui_char_select_left->setObjectName("ui_char_select_left"); - ui_char_select_right = new AOButton(ui_char_select_background, ao_app); + ui_char_select_right = new AOButton(ao_app, ui_char_select_background); ui_char_select_right->setObjectName("ui_char_select_right"); - ui_spectator = new AOButton(ui_char_select_background, ao_app); + ui_spectator = new AOButton(ao_app, ui_char_select_background); ui_spectator->setText(tr("Spectator")); ui_spectator->setObjectName("ui_spectator"); @@ -52,42 +52,36 @@ void Courtroom::construct_char_select() ui_char_taken->setText(tr("Taken")); ui_char_taken->setObjectName("ui_char_taken"); - connect(ui_char_list, &QTreeWidget::itemDoubleClicked, - this, &Courtroom::on_char_list_double_clicked); + connect(ui_char_list, &QTreeWidget::itemDoubleClicked, this, &Courtroom::on_char_list_double_clicked); - connect(ui_back_to_lobby, &AOButton::clicked, this, - &Courtroom::on_back_to_lobby_clicked); + connect(ui_back_to_lobby, &AOButton::clicked, this, &Courtroom::on_back_to_lobby_clicked); - connect(ui_char_select_left, &AOButton::clicked, this, - &Courtroom::on_char_select_left_clicked); - connect(ui_char_select_right, &AOButton::clicked, this, - &Courtroom::on_char_select_right_clicked); + connect(ui_char_select_left, &AOButton::clicked, this, &Courtroom::on_char_select_left_clicked); + connect(ui_char_select_right, &AOButton::clicked, this, &Courtroom::on_char_select_right_clicked); connect(ui_spectator, &AOButton::clicked, this, &Courtroom::on_spectator_clicked); - connect(ui_char_search, &QLineEdit::textEdited,this, - &Courtroom::on_char_search_changed); - connect(ui_char_passworded, &QCheckBox::stateChanged, this, - &Courtroom::on_char_passworded_clicked); - connect(ui_char_taken, &QCheckBox::stateChanged, this, - &Courtroom::on_char_taken_clicked); - + connect(ui_char_search, &QLineEdit::textEdited, this, &Courtroom::on_char_search_changed); + connect(ui_char_passworded, &QCheckBox::stateChanged, this, &Courtroom::on_char_passworded_clicked); + connect(ui_char_taken, &QCheckBox::stateChanged, this, &Courtroom::on_char_taken_clicked); } void Courtroom::set_char_select() { QString filename = "courtroom_design.ini"; - pos_size_type f_charselect = - ao_app->get_element_dimensions("char_select", filename); + pos_size_type f_charselect = ao_app->get_element_dimensions("char_select", filename); - if (f_charselect.width < 0 || f_charselect.height < 0) { + if (f_charselect.width < 0 || f_charselect.height < 0) + { qWarning() << "did not find char_select width or height in " - "courtroom_design.ini!"; + "courtroom_design.ini!"; this->setFixedSize(714, 668); } else + { this->setFixedSize(f_charselect.width, f_charselect.height); + } ui_char_select_background->resize(f_charselect.width, f_charselect.height); ui_char_select_background->set_image("charselect_background"); @@ -122,7 +116,8 @@ void Courtroom::set_char_select_page() ui_char_select_left->hide(); ui_char_select_right->hide(); - for (AOCharButton *i_button : qAsConst(ui_char_button_list)) { + for (AOCharButton *i_button : qAsConst(ui_char_button_list)) + { i_button->reset(); i_button->hide(); i_button->move(0, 0); @@ -131,34 +126,40 @@ void Courtroom::set_char_select_page() int total_pages = ui_char_button_list_filtered.size() / max_chars_on_page; int chars_on_page = 0; - if (ui_char_button_list_filtered.size() % max_chars_on_page != 0) { + if (ui_char_button_list_filtered.size() % max_chars_on_page != 0) + { ++total_pages; // i. e. not on the last page if (total_pages > current_char_page + 1) + { chars_on_page = max_chars_on_page; + } else + { chars_on_page = ui_char_button_list_filtered.size() % max_chars_on_page; + } } else + { chars_on_page = max_chars_on_page; + } if (total_pages > current_char_page + 1) + { ui_char_select_right->show(); + } if (current_char_page > 0) + { ui_char_select_left->show(); + } - QPoint f_spacing = - ao_app->get_button_spacing("char_button_spacing", "courtroom_design.ini"); + QPoint f_spacing = ao_app->get_button_spacing("char_button_spacing", "courtroom_design.ini"); int s_button_size = button_width * Options::getInstance().themeScalingFactor(); - char_columns = - ((ui_char_buttons->width() - s_button_size) / (f_spacing.x() + s_button_size)) + - 1; - char_rows = ((ui_char_buttons->height() - s_button_size) / - (f_spacing.y() + s_button_size)) + - 1; + char_columns = ((ui_char_buttons->width() - s_button_size) / (f_spacing.x() + s_button_size)) + 1; + char_rows = ((ui_char_buttons->height() - s_button_size) / (f_spacing.y() + s_button_size)) + 1; max_chars_on_page = char_columns * char_rows; @@ -169,11 +170,13 @@ void Courtroom::on_char_list_double_clicked(QTreeWidgetItem *p_item, int column) { Q_UNUSED(column); int cid = p_item->text(1).toInt(); - if (cid == -1 && !p_item->isExpanded()) { + if (cid == -1 && !p_item->isExpanded()) + { p_item->setExpanded(true); return; } - else if (cid == -1) { + else if (cid == -1) + { p_item->setExpanded(false); return; } @@ -185,10 +188,10 @@ void Courtroom::char_clicked(int n_char) if (n_char != -1) { QString char_name = char_list.at(n_char).name; - QString char_ini_path = ao_app->get_real_path( - ao_app->get_character_path(char_name, "char.ini")); + QString char_ini_path = ao_app->get_real_path(ao_app->get_character_path(char_name, "char.ini")); - if (!file_exists(char_ini_path)) { + if (!file_exists(char_ini_path)) + { call_error(tr("Could not find character (char.ini) for %1").arg(char_name)); return; } @@ -196,14 +199,13 @@ void Courtroom::char_clicked(int n_char) qDebug() << "Found char.ini for" << char_name << "at" << char_ini_path; } - if (n_char != m_cid || n_char == -1) { - ao_app->send_server_packet( - new AOPacket("PW", {ui_char_password->text()})); - ao_app->send_server_packet( - new AOPacket("CC", {QString::number(ao_app->client_id), - QString::number(n_char), get_hdid()})); + if (n_char != m_cid || n_char == -1) + { + ao_app->send_server_packet(AOPacket("PW", {ui_char_password->text()})); + ao_app->send_server_packet(AOPacket("CC", {QString::number(ao_app->client_id), QString::number(n_char), get_hdid()})); } - if (n_char == m_cid || n_char == -1) { + if (n_char == m_cid || n_char == -1) + { update_character(n_char); enter_courtroom(); set_courtroom_size(); @@ -212,7 +214,7 @@ void Courtroom::char_clicked(int n_char) void Courtroom::on_char_button_context_menu_requested(const QPoint &pos) { - AOCharButton* button = qobject_cast(sender()); + AOCharButton *button = qobject_cast(sender()); int n_char = ui_char_button_list.indexOf(button); if (n_char == -1) { @@ -220,45 +222,44 @@ void Courtroom::on_char_button_context_menu_requested(const QPoint &pos) } QString char_name = char_list.at(n_char).name; - QString char_ini_path = ao_app->get_real_path( - ao_app->get_character_path(char_name, "char.ini")); + QString char_ini_path = ao_app->get_real_path(ao_app->get_character_path(char_name, "char.ini")); - if (!file_exists(char_ini_path)) { + if (!file_exists(char_ini_path)) + { call_error(tr("Could not find character (char.ini) for %1").arg(char_name)); return; } QMenu *menu = new QMenu(this); - menu->addAction(QString("Edit " + char_name + "/char.ini"), this, - [=] { QDesktopServices::openUrl(QUrl::fromLocalFile(char_ini_path)); } - ); + menu->addAction(QString("Edit " + char_name + "/char.ini"), this, [=] { QDesktopServices::openUrl(QUrl::fromLocalFile(char_ini_path)); }); menu->addSeparator(); - menu->addAction(QString("Open character folder " + char_name), this, - [=] { + menu->addAction(QString("Open character folder " + char_name), this, [=] { QString p_path = ao_app->get_real_path(VPath("characters/" + char_name + "/")); - if (!dir_exists(p_path)) { + if (!dir_exists(p_path)) + { return; } QDesktopServices::openUrl(QUrl::fromLocalFile(p_path)); - } - ); + }); menu->popup(button->mapToGlobal(pos)); } void Courtroom::put_button_in_place(int starting, int chars_on_this_page) { if (ui_char_button_list_filtered.size() == 0) + { return; + } - QPoint f_spacing = - ao_app->get_button_spacing("char_button_spacing", "courtroom_design.ini"); + QPoint f_spacing = ao_app->get_button_spacing("char_button_spacing", "courtroom_design.ini"); int x_mod_count = 0; int y_mod_count = 0; int startout = starting; int size = button_width * Options::getInstance().themeScalingFactor(); - for (int n = starting; n < startout + chars_on_this_page; ++n) { + for (int n = starting; n < startout + chars_on_this_page; ++n) + { int x_pos = (size + f_spacing.x()) * x_mod_count; int y_pos = (size + f_spacing.y()) * y_mod_count; @@ -268,7 +269,8 @@ void Courtroom::put_button_in_place(int starting, int chars_on_this_page) ++x_mod_count; - if (x_mod_count == char_columns) { + if (x_mod_count == char_columns) + { ++y_mod_count; x_mod_count = 0; } @@ -279,8 +281,10 @@ void Courtroom::character_loading_finished() { // Zeroeth, we'll clear any leftover characters from previous server visits. ao_app->generated_chars = 0; - if (ui_char_button_list.size() > 0) { - foreach (AOCharButton *item, ui_char_button_list) { + if (ui_char_button_list.size() > 0) + { + foreach (AOCharButton *item, ui_char_button_list) + { delete item; } ui_char_button_list.clear(); @@ -290,9 +294,9 @@ void Courtroom::character_loading_finished() // First, we'll make all the character buttons in the very beginning. // We also hide them all, so they can't be accidentally clicked. // Later on, we'll be revealing buttons as we need them. - for (int n = 0; n < char_list.size(); n++) { - AOCharButton *char_button = - new AOCharButton(ui_char_buttons, ao_app, 0, 0, char_list.at(n).taken); + for (int n = 0; n < char_list.size(); n++) + { + AOCharButton *char_button = new AOCharButton(ao_app, 0, 0, char_list.at(n).taken, ui_char_buttons); char_button->setContextMenuPolicy(Qt::CustomContextMenu); char_button->reset(); char_button->hide(); @@ -300,24 +304,25 @@ void Courtroom::character_loading_finished() char_button->setToolTip(char_list.at(n).name); ui_char_button_list.append(char_button); QString char_category = ao_app->get_category(char_list.at(n).name); - QList matching_list = ui_char_list->findItems(char_category, Qt::MatchFixedString, 0); + QList matching_list = ui_char_list->findItems(char_category, Qt::MatchFixedString, 0); // create the character tree item QTreeWidgetItem *treeItem = new QTreeWidgetItem(); treeItem->setText(0, char_list.at(n).name); - treeItem->setIcon( - 0, QIcon(ao_app->get_image_suffix( - ao_app->get_character_path(char_list.at(n).name, "char_icon"), - true))); + treeItem->setIcon(0, QIcon(ao_app->get_image_suffix(ao_app->get_character_path(char_list.at(n).name, "char_icon"), true))); treeItem->setText(1, QString::number(n)); // category logic QTreeWidgetItem *category; if (char_category == "") // no category + { ui_char_list->addTopLevelItem(treeItem); - else if (!matching_list.isEmpty()) { // our category already exists + } + else if (!matching_list.isEmpty()) + { // our category already exists category = matching_list[0]; category->addChild(treeItem); } - else { // we need to make a new category + else + { // we need to make a new category category = new QTreeWidgetItem(); category->setText(0, char_category); category->setText(1, "-1"); @@ -327,14 +332,14 @@ void Courtroom::character_loading_finished() } ui_char_list->sortItems(0, Qt::AscendingOrder); - - connect(char_button, &AOCharButton::clicked, - [this, n]() { this->char_clicked(n); }); + + connect(char_button, &AOCharButton::clicked, this, [this, n]() { this->char_clicked(n); }); connect(char_button, &AOCharButton::customContextMenuRequested, this, &Courtroom::on_char_button_context_menu_requested); // This part here serves as a way of showing to the player that the game is // still running, it is just loading the pictures of the characters. - if (ao_app->lobby_constructed) { + if (ao_app->lobby_constructed) + { ao_app->generated_chars++; } } @@ -344,27 +349,27 @@ void Courtroom::character_loading_finished() void Courtroom::filter_character_list() { ui_char_button_list_filtered.clear(); - for (int i = 0; i < char_list.size(); i++) { + for (int i = 0; i < char_list.size(); i++) + { AOCharButton *current_char = ui_char_button_list.at(i); - QTreeWidgetItem* current_char_list_item = ui_char_list->findItems(QString::number(i), Qt::MatchExactly | Qt::MatchRecursive, 1)[0]; - - + QTreeWidgetItem *current_char_list_item = ui_char_list->findItems(QString::number(i), Qt::MatchExactly | Qt::MatchRecursive, 1)[0]; // It seems passwording characters is unimplemented yet? // Until then, this will stay here, I suppose. // if (ui_char_passworded->isChecked() && character_is_passworded??) // continue; - if (!ui_char_taken->isChecked() && char_list.at(i).taken) { + if (!ui_char_taken->isChecked() && char_list.at(i).taken) + { current_char_list_item->setHidden(true); continue; } - if (!char_list.at(i).name.contains(ui_char_search->text(), - Qt::CaseInsensitive)) { + if (!char_list.at(i).name.contains(ui_char_search->text(), Qt::CaseInsensitive)) + { current_char_list_item->setHidden(true); continue; - } + } // We only really need to update the fact that a character is taken // for the buttons that actually appear. @@ -376,7 +381,9 @@ void Courtroom::filter_character_list() // reset disabled current_char_list_item->setDisabled(false); if (char_list.at(i).taken) // woops, we are taken + { current_char_list_item->setDisabled(true); + } ui_char_button_list_filtered.append(current_char); } @@ -385,8 +392,17 @@ void Courtroom::filter_character_list() set_char_select_page(); } -void Courtroom::on_char_search_changed() { filter_character_list(); } +void Courtroom::on_char_search_changed() +{ + filter_character_list(); +} -void Courtroom::on_char_passworded_clicked() { filter_character_list(); } +void Courtroom::on_char_passworded_clicked() +{ + filter_character_list(); +} -void Courtroom::on_char_taken_clicked() { filter_character_list(); } +void Courtroom::on_char_taken_clicked() +{ + filter_character_list(); +} diff --git a/src/chatlogpiece.cpp b/src/chatlogpiece.cpp index 64ffefe8..662dc0d2 100644 --- a/src/chatlogpiece.cpp +++ b/src/chatlogpiece.cpp @@ -1,17 +1,15 @@ #include "chatlogpiece.h" -chatlogpiece::chatlogpiece() +ChatLogPiece::ChatLogPiece() { name = tr("UNKNOWN"); showname = tr("UNKNOWN"); message = tr("UNKNOWN"); color = 0; - action = ""; datetime = QDateTime::currentDateTimeUtc(); } -chatlogpiece::chatlogpiece(QString p_name, QString p_showname, - QString p_message, QString p_action, int p_color, bool p_selfname) +ChatLogPiece::ChatLogPiece(QString p_name, QString p_showname, QString p_message, QString p_action, int p_color, bool p_selfname) { name = p_name; showname = p_showname; @@ -22,9 +20,7 @@ chatlogpiece::chatlogpiece(QString p_name, QString p_showname, datetime = QDateTime::currentDateTimeUtc(); } -chatlogpiece::chatlogpiece(QString p_name, QString p_showname, - QString p_message, QString p_action, int p_color, bool p_selfname, - QDateTime p_datetime) +ChatLogPiece::ChatLogPiece(QString p_name, QString p_showname, QString p_message, QString p_action, int p_color, bool p_selfname, QDateTime p_datetime) { name = p_name; showname = p_showname; @@ -35,23 +31,30 @@ chatlogpiece::chatlogpiece(QString p_name, QString p_showname, datetime = p_datetime.toUTC(); } -QString chatlogpiece::get_full() +QString ChatLogPiece::get_datetime_as_string() +{ + return datetime.toString(); +} + +QString ChatLogPiece::get_full() { QString full = "["; full.append(get_datetime_as_string()); full.append("] "); - full.append(get_showname()); - if (get_showname() != get_name()) + full.append(showname); + if (showname != name) { full.append(" ("); - full.append(get_name()); + full.append(name); full.append(")"); } - if (!get_action().isEmpty()) - full.append(" " + get_action()); + if (!action.isEmpty()) + { + full.append(" " + action); + } full.append(": "); - full.append(get_message()); + full.append(message); return full; } diff --git a/src/chatlogpiece.h b/src/chatlogpiece.h new file mode 100644 index 00000000..3750ff91 --- /dev/null +++ b/src/chatlogpiece.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include +#include + +class ChatLogPiece +{ + Q_DECLARE_TR_FUNCTIONS(chatlogpiece) + +public: + ChatLogPiece(); + ChatLogPiece(QString p_name, QString p_showname, QString p_message, QString p_action, int color, bool selfname); + ChatLogPiece(QString p_name, QString p_showname, QString p_message, QString p_action, int color, bool selfname, QDateTime p_datetime); + + QString name; + QString showname; + QString message; + QString action; + bool selfname = false; + QDateTime datetime; + int color = 0; + + QString get_datetime_as_string(); + QString get_full(); +}; diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 3056fd92..326f2ad0 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -1,12 +1,12 @@ #include "courtroom.h" #include "options.h" -Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() +Courtroom::Courtroom(AOApplication *p_ao_app) + : QMainWindow() { ao_app = p_ao_app; - this->setWindowFlags((this->windowFlags() | Qt::CustomizeWindowHint) & - ~Qt::WindowMaximizeButtonHint); + this->setWindowFlags((this->windowFlags() | Qt::CustomizeWindowHint) & ~Qt::WindowMaximizeButtonHint); ao_app->initBASS(); #if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) // Needed for pre-5.10 RNG stuff @@ -27,54 +27,53 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() sfx_delay_timer = new QTimer(this); sfx_delay_timer->setSingleShot(true); - music_player = new AOMusicPlayer(this, ao_app); + music_player = new AOMusicPlayer(ao_app); music_player->set_muted(true); - connect(&music_player->music_watcher, &QFutureWatcher::finished, - this, &Courtroom::update_ui_music_name, Qt::QueuedConnection); + connect(&music_player->music_watcher, &QFutureWatcher::finished, this, &Courtroom::update_ui_music_name, Qt::QueuedConnection); - sfx_player = new AOSfxPlayer(this, ao_app); + sfx_player = new AOSfxPlayer(ao_app); sfx_player->set_muted(true); - objection_player = new AOSfxPlayer(this, ao_app); + objection_player = new AOSfxPlayer(ao_app); objection_player->set_muted(true); - blip_player = new AOBlipPlayer(this, ao_app); + blip_player = new AOBlipPlayer(ao_app); blip_player->set_muted(true); - modcall_player = new AOSfxPlayer(this, ao_app); + modcall_player = new AOSfxPlayer(ao_app); modcall_player->set_volume(50); - ui_background = new AOImage(this, ao_app); + ui_background = new AOImage(ao_app, this); ui_background->setObjectName("ui_background"); ui_viewport = new QWidget(this); ui_viewport->setObjectName("ui_viewport"); - ui_vp_background = new BackgroundLayer(ui_viewport, ao_app); + ui_vp_background = new BackgroundLayer(ao_app, ui_viewport); ui_vp_background->setObjectName("ui_vp_background"); - ui_vp_speedlines = new SplashLayer(ui_viewport, ao_app); + ui_vp_speedlines = new SplashLayer(ao_app, ui_viewport); ui_vp_speedlines->setObjectName("ui_vp_speedlines"); ui_vp_speedlines->stretch = true; - ui_vp_player_char = new CharLayer(ui_viewport, ao_app); + ui_vp_player_char = new CharLayer(ao_app, ui_viewport); ui_vp_player_char->setObjectName("ui_vp_player_char"); ui_vp_player_char->masked = false; - ui_vp_sideplayer_char = new CharLayer(ui_viewport, ao_app); + ui_vp_sideplayer_char = new CharLayer(ao_app, ui_viewport); ui_vp_sideplayer_char->setObjectName("ui_vp_sideplayer_char"); ui_vp_sideplayer_char->masked = false; ui_vp_sideplayer_char->hide(); - ui_vp_desk = new BackgroundLayer(ui_viewport, ao_app); + ui_vp_desk = new BackgroundLayer(ao_app, ui_viewport); ui_vp_desk->setObjectName("ui_vp_desk"); - ui_vp_effect = new EffectLayer(this, ao_app); + ui_vp_effect = new EffectLayer(ao_app, this); ui_vp_effect->setAttribute(Qt::WA_TransparentForMouseEvents); ui_vp_effect->setObjectName("ui_vp_effect"); - ui_vp_evidence_display = new AOEvidenceDisplay(ui_viewport, ao_app); + ui_vp_evidence_display = new AOEvidenceDisplay(ao_app, ui_viewport); ui_vp_evidence_display->setObjectName("ui_vp_evidence_display"); - ui_vp_chatbox = new AOImage(this, ao_app); + ui_vp_chatbox = new AOImage(ao_app, this); ui_vp_chatbox->setObjectName("ui_vp_chatbox"); - ui_vp_sticker = new StickerLayer(this, ao_app); + ui_vp_sticker = new StickerLayer(ao_app, this); ui_vp_sticker->set_play_once(false); ui_vp_sticker->set_cull_image(false); ui_vp_sticker->setAttribute(Qt::WA_TransparentForMouseEvents); @@ -83,7 +82,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_vp_showname = new AOChatboxLabel(ui_vp_chatbox); ui_vp_showname->setObjectName("ui_vp_showname"); ui_vp_showname->setAlignment(Qt::AlignLeft); - ui_vp_chat_arrow = new InterfaceLayer(this, ao_app); + ui_vp_chat_arrow = new InterfaceLayer(ao_app, this); ui_vp_chat_arrow->set_play_once(false); ui_vp_chat_arrow->set_cull_image(false); ui_vp_chat_arrow->setObjectName("ui_vp_chat_arrow"); @@ -95,17 +94,17 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_vp_message->setReadOnly(true); ui_vp_message->setObjectName("ui_vp_message"); - ui_vp_testimony = new SplashLayer(this, ao_app); + ui_vp_testimony = new SplashLayer(ao_app, this); ui_vp_testimony->set_play_once(false); ui_vp_testimony->setAttribute(Qt::WA_TransparentForMouseEvents); ui_vp_testimony->setObjectName("ui_vp_testimony"); - ui_vp_wtce = new SplashLayer(this, ao_app); + ui_vp_wtce = new SplashLayer(ao_app, this); ui_vp_wtce->set_play_once(true); ui_vp_wtce->continuous = false; ui_vp_wtce->force_continuous = true; ui_vp_wtce->setAttribute(Qt::WA_TransparentForMouseEvents); ui_vp_wtce->setObjectName("ui_vp_wtce"); - ui_vp_objection = new SplashLayer(this, ao_app); + ui_vp_objection = new SplashLayer(ao_app, this); ui_vp_objection->set_play_once(true); ui_vp_objection->continuous = false; ui_vp_objection->force_continuous = true; @@ -124,13 +123,12 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() log_timestamp = Options::getInstance().logTimestampEnabled(); log_timestamp_format = Options::getInstance().logTimestampFormat(); - ui_debug_log = new AOTextArea(this, Options::getInstance().maxLogSize()); + ui_debug_log = new AOTextArea(Options::getInstance().maxLogSize(), this); ui_debug_log->setReadOnly(true); ui_debug_log->setOpenExternalLinks(true); ui_debug_log->hide(); ui_debug_log->setObjectName("ui_debug_log"); - connect(ao_app, &AOApplication::qt_log_message, - this, &Courtroom::debug_message_handler); + connect(ao_app, &AOApplication::qt_log_message, this, &Courtroom::debug_message_handler); ui_server_chatlog = new AOTextArea(this); ui_server_chatlog->setReadOnly(true); @@ -156,7 +154,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_music_list->setUniformRowHeights(true); ui_music_list->setObjectName("ui_music_list"); - ui_music_display = new InterfaceLayer(this, ao_app); + ui_music_display = new InterfaceLayer(ao_app, this); ui_music_display->set_play_once(false); ui_music_display->set_cull_image(false); ui_music_display->transform_mode = Qt::SmoothTransformation; @@ -168,7 +166,8 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_music_name->setAttribute(Qt::WA_TransparentForMouseEvents); ui_music_name->setObjectName("ui_music_name"); - for (int i = 0; i < max_clocks; i++) { + for (int i = 0; i < max_clocks; i++) + { ui_clock[i] = new AOClockLabel(this); ui_clock[i]->setAttribute(Qt::WA_TransparentForMouseEvents); ui_clock[i]->hide(); @@ -189,7 +188,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_ic_chat_message->installEventFilter(ui_ic_chat_message_filter); ui_ic_chat_message->setObjectName("ui_ic_chat_message"); - ui_muted = new AOImage(ui_ic_chat_message, ao_app); + ui_muted = new AOImage(ao_app, ui_ic_chat_message); ui_muted->hide(); ui_muted->setObjectName("ui_muted"); @@ -217,7 +216,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_pos_dropdown->view()->setTextElideMode(Qt::ElideLeft); ui_pos_dropdown->setObjectName("ui_pos_dropdown"); - ui_pos_remove = new AOButton(this, ao_app); + ui_pos_remove = new AOButton(ao_app, this); ui_pos_remove->setObjectName("ui_pos_remove"); ui_iniswap_dropdown = new QComboBox(this); @@ -225,7 +224,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_iniswap_dropdown->view()->setTextElideMode(Qt::ElideLeft); ui_iniswap_dropdown->setObjectName("ui_iniswap_dropdown"); - ui_iniswap_remove = new AOButton(this, ao_app); + ui_iniswap_remove = new AOButton(ao_app, this); ui_iniswap_remove->setObjectName("ui_iniswap_remove"); ui_sfx_dropdown = new QComboBox(this); @@ -233,7 +232,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_sfx_dropdown->view()->setTextElideMode(Qt::ElideLeft); ui_sfx_dropdown->setObjectName("ui_sfx_dropdown"); - ui_sfx_remove = new AOButton(this, ao_app); + ui_sfx_remove = new AOButton(ao_app, this); ui_sfx_remove->setObjectName("ui_sfx_remove"); ui_effects_dropdown = new QComboBox(this); @@ -241,10 +240,10 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_effects_dropdown->setContextMenuPolicy(Qt::CustomContextMenu); ui_effects_dropdown->setObjectName("ui_effects_dropdown"); - ui_defense_bar = new AOImage(this, ao_app); + ui_defense_bar = new AOImage(ao_app, this); ui_defense_bar->setObjectName("ui_defense_bar"); - ui_prosecution_bar = new AOImage(this, ao_app); + ui_prosecution_bar = new AOImage(ao_app, this); ui_prosecution_bar->setObjectName("ui_prosecution_bar"); ui_music_label = new QLabel(this); @@ -256,43 +255,43 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_blip_label = new QLabel(this); ui_blip_label->setObjectName("ui_blip_label"); - ui_hold_it = new AOButton(this, ao_app); + ui_hold_it = new AOButton(ao_app, this); ui_hold_it->setObjectName("ui_hold_it"); - ui_objection = new AOButton(this, ao_app); + ui_objection = new AOButton(ao_app, this); ui_objection->setObjectName("ui_objection"); - ui_take_that = new AOButton(this, ao_app); + ui_take_that = new AOButton(ao_app, this); ui_take_that->setObjectName("ui_take_that"); - ui_ooc_toggle = new AOButton(this, ao_app); + ui_ooc_toggle = new AOButton(ao_app, this); ui_ooc_toggle->setObjectName("ui_ooc_toggle"); - ui_witness_testimony = new AOButton(this, ao_app); + ui_witness_testimony = new AOButton(ao_app, this); ui_witness_testimony->setObjectName("ui_witness_testimony"); - ui_cross_examination = new AOButton(this, ao_app); + ui_cross_examination = new AOButton(ao_app, this); ui_cross_examination->setObjectName("ui_cross_examination"); - ui_guilty = new AOButton(this, ao_app); + ui_guilty = new AOButton(ao_app, this); ui_guilty->setObjectName("ui_guilty"); - ui_not_guilty = new AOButton(this, ao_app); + ui_not_guilty = new AOButton(ao_app, this); ui_not_guilty->setObjectName("ui_not_guilty"); - ui_change_character = new AOButton(this, ao_app); + ui_change_character = new AOButton(ao_app, this); ui_change_character->setObjectName("ui_change_character"); - ui_reload_theme = new AOButton(this, ao_app); + ui_reload_theme = new AOButton(ao_app, this); ui_reload_theme->setObjectName("ui_reload_theme"); - ui_call_mod = new AOButton(this, ao_app); + ui_call_mod = new AOButton(ao_app, this); ui_call_mod->setObjectName("ui_call_mod"); - ui_settings = new AOButton(this, ao_app); + ui_settings = new AOButton(ao_app, this); ui_settings->setObjectName("ui_settings"); - ui_switch_area_music = new AOButton(this, ao_app); + ui_switch_area_music = new AOButton(ao_app, this); ui_switch_area_music->setObjectName("ui_switch_area_music"); ui_pre = new QCheckBox(this); @@ -324,32 +323,32 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_immediate->hide(); ui_immediate->setObjectName("ui_immediate"); - ui_custom_objection = new AOButton(this, ao_app); + ui_custom_objection = new AOButton(ao_app, this); ui_custom_objection->setContextMenuPolicy(Qt::CustomContextMenu); ui_custom_objection->setObjectName("ui_custom_objection"); custom_obj_menu = new QMenu(this); custom_obj_menu->setObjectName("ui_custom_obj_menu"); - ui_realization = new AOButton(this, ao_app); + ui_realization = new AOButton(ao_app, this); ui_realization->setObjectName("ui_realization"); - ui_screenshake = new AOButton(this, ao_app); + ui_screenshake = new AOButton(ao_app, this); ui_screenshake->setObjectName("ui_screenshake"); - ui_mute = new AOButton(this, ao_app); + ui_mute = new AOButton(ao_app, this); ui_mute->setObjectName("ui_mute"); - ui_defense_plus = new AOButton(this, ao_app); + ui_defense_plus = new AOButton(ao_app, this); ui_defense_plus->setObjectName("ui_defense_plus"); - ui_defense_minus = new AOButton(this, ao_app); + ui_defense_minus = new AOButton(ao_app, this); ui_defense_minus->setObjectName("ui_defense_minus"); - ui_prosecution_plus = new AOButton(this, ao_app); + ui_prosecution_plus = new AOButton(ao_app, this); ui_prosecution_plus->setObjectName("ui_prosecution_plus"); - ui_prosecution_minus = new AOButton(this, ao_app); + ui_prosecution_minus = new AOButton(ao_app, this); ui_prosecution_minus->setObjectName("ui_prosecution_minus"); ui_text_color = new QComboBox(this); @@ -392,10 +391,10 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_pair_order_dropdown->addItem(tr("To behind")); ui_pair_order_dropdown->setObjectName("ui_pair_order_dropdown"); - ui_pair_button = new AOButton(this, ao_app); + ui_pair_button = new AOButton(ao_app, this); ui_pair_button->setObjectName("ui_pair_button"); - ui_evidence_button = new AOButton(this, ao_app); + ui_evidence_button = new AOButton(ao_app, this); ui_evidence_button->setContextMenuPolicy(Qt::CustomContextMenu); ui_evidence_button->setObjectName("ui_evidence_button"); @@ -414,152 +413,100 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() connect(ui_vp_player_char, &CharLayer::done, this, &Courtroom::preanim_done); connect(ui_vp_player_char, &CharLayer::shake, this, &Courtroom::do_screenshake); connect(ui_vp_player_char, &CharLayer::flash, this, &Courtroom::do_flash); - connect(ui_vp_player_char, &CharLayer::play_sfx, this, - &Courtroom::play_char_sfx); + connect(ui_vp_player_char, &CharLayer::play_sfx, this, &Courtroom::play_char_sfx); - connect(text_delay_timer, &QTimer::timeout, this, - &Courtroom::start_chat_ticking); + connect(text_delay_timer, &QTimer::timeout, this, &Courtroom::start_chat_ticking); - connect(text_queue_timer, &QTimer::timeout, this, - &Courtroom::chatmessage_dequeue); + connect(text_queue_timer, &QTimer::timeout, this, &Courtroom::chatmessage_dequeue); connect(sfx_delay_timer, &QTimer::timeout, this, &Courtroom::play_sfx); connect(chat_tick_timer, &QTimer::timeout, this, &Courtroom::chat_tick); - connect(ui_pos_dropdown, QOverload::of(&QComboBox::currentIndexChanged), this, - QOverload::of(&Courtroom::on_pos_dropdown_changed)); - connect(ui_pos_dropdown, &QComboBox::editTextChanged, this, - QOverload::of(&Courtroom::on_pos_dropdown_changed)); - connect(ui_pos_dropdown, &QComboBox::customContextMenuRequested, this, - &Courtroom::on_pos_dropdown_context_menu_requested); + connect(ui_pos_dropdown, QOverload::of(&QComboBox::currentIndexChanged), this, QOverload::of(&Courtroom::on_pos_dropdown_changed)); + connect(ui_pos_dropdown, &QComboBox::editTextChanged, this, QOverload::of(&Courtroom::on_pos_dropdown_changed)); + connect(ui_pos_dropdown, &QComboBox::customContextMenuRequested, this, &Courtroom::on_pos_dropdown_context_menu_requested); connect(ui_pos_remove, &AOButton::clicked, this, &Courtroom::on_pos_remove_clicked); - connect(ui_iniswap_dropdown, QOverload::of(&QComboBox::currentIndexChanged), this, - &Courtroom::on_iniswap_dropdown_changed); - connect(ui_iniswap_dropdown, &QComboBox::customContextMenuRequested, this, - &Courtroom::on_iniswap_context_menu_requested); - connect(ui_iniswap_remove, &AOButton::clicked, this, - &Courtroom::on_iniswap_remove_clicked); - - connect(ui_sfx_dropdown, QOverload::of(&QComboBox::currentIndexChanged), this, - &Courtroom::on_sfx_dropdown_changed); - connect(ui_sfx_dropdown, &QComboBox::editTextChanged, this, - &Courtroom::on_sfx_dropdown_custom); - connect(ui_sfx_dropdown, &QComboBox::customContextMenuRequested, this, - &Courtroom::on_sfx_context_menu_requested); - connect(ui_sfx_remove, &AOButton::clicked, this, - &Courtroom::on_sfx_remove_clicked); - - connect(ui_effects_dropdown, QOverload::of(&QComboBox::currentIndexChanged), this, - &Courtroom::on_effects_dropdown_changed); - connect(ui_effects_dropdown, &QComboBox::customContextMenuRequested, this, - &Courtroom::on_effects_context_menu_requested); - - connect(ui_music_search, &QLineEdit::returnPressed, this, - &Courtroom::on_music_search_return_pressed); - connect(ui_mute_list, &QListWidget::clicked, this, - &Courtroom::on_mute_list_clicked); - - connect(ui_ic_chat_message, &QLineEdit::returnPressed, this, - &Courtroom::on_chat_return_pressed); - - connect(ui_ooc_chat_message, &QLineEdit::returnPressed, this, - &Courtroom::on_ooc_return_pressed); - - connect(ui_music_list, &QTreeWidget::itemDoubleClicked, - this, &Courtroom::on_music_list_double_clicked); - connect(ui_music_list, &QTreeWidget::customContextMenuRequested, this, - &Courtroom::on_music_list_context_menu_requested); - - connect(ui_area_list, &QTreeWidget::itemDoubleClicked, this, - &Courtroom::on_area_list_double_clicked); + connect(ui_iniswap_dropdown, QOverload::of(&QComboBox::currentIndexChanged), this, &Courtroom::on_iniswap_dropdown_changed); + connect(ui_iniswap_dropdown, &QComboBox::customContextMenuRequested, this, &Courtroom::on_iniswap_context_menu_requested); + connect(ui_iniswap_remove, &AOButton::clicked, this, &Courtroom::on_iniswap_remove_clicked); + + connect(ui_sfx_dropdown, QOverload::of(&QComboBox::currentIndexChanged), this, &Courtroom::on_sfx_dropdown_changed); + connect(ui_sfx_dropdown, &QComboBox::editTextChanged, this, &Courtroom::on_sfx_dropdown_custom); + connect(ui_sfx_dropdown, &QComboBox::customContextMenuRequested, this, &Courtroom::on_sfx_context_menu_requested); + connect(ui_sfx_remove, &AOButton::clicked, this, &Courtroom::on_sfx_remove_clicked); + + connect(ui_effects_dropdown, QOverload::of(&QComboBox::currentIndexChanged), this, &Courtroom::on_effects_dropdown_changed); + connect(ui_effects_dropdown, &QComboBox::customContextMenuRequested, this, &Courtroom::on_effects_context_menu_requested); + + connect(ui_music_search, &QLineEdit::returnPressed, this, &Courtroom::on_music_search_return_pressed); + connect(ui_mute_list, &QListWidget::clicked, this, &Courtroom::on_mute_list_clicked); + + connect(ui_ic_chat_message, &QLineEdit::returnPressed, this, &Courtroom::on_chat_return_pressed); + + connect(ui_ooc_chat_message, &QLineEdit::returnPressed, this, &Courtroom::on_ooc_return_pressed); + + connect(ui_music_list, &QTreeWidget::itemDoubleClicked, this, &Courtroom::on_music_list_double_clicked); + connect(ui_music_list, &QTreeWidget::customContextMenuRequested, this, &Courtroom::on_music_list_context_menu_requested); + + connect(ui_area_list, &QTreeWidget::itemDoubleClicked, this, &Courtroom::on_area_list_double_clicked); connect(ui_hold_it, &AOButton::clicked, this, &Courtroom::on_hold_it_clicked); connect(ui_objection, &AOButton::clicked, this, &Courtroom::on_objection_clicked); connect(ui_take_that, &AOButton::clicked, this, &Courtroom::on_take_that_clicked); - connect(ui_custom_objection, &AOButton::clicked, this, - &Courtroom::on_custom_objection_clicked); - connect(ui_custom_objection, - &AOButton::customContextMenuRequested, this, - &Courtroom::show_custom_objection_menu); + connect(ui_custom_objection, &AOButton::clicked, this, &Courtroom::on_custom_objection_clicked); + connect(ui_custom_objection, &AOButton::customContextMenuRequested, this, &Courtroom::show_custom_objection_menu); - connect(ui_realization, &AOButton::clicked, this, - &Courtroom::on_realization_clicked); - connect(ui_screenshake, &AOButton::clicked, this, - &Courtroom::on_screenshake_clicked); + connect(ui_realization, &AOButton::clicked, this, &Courtroom::on_realization_clicked); + connect(ui_screenshake, &AOButton::clicked, this, &Courtroom::on_screenshake_clicked); connect(ui_mute, &AOButton::clicked, this, &Courtroom::on_mute_clicked); - connect(ui_defense_minus, &AOButton::clicked, this, - &Courtroom::on_defense_minus_clicked); - connect(ui_defense_plus, &AOButton::clicked, this, - &Courtroom::on_defense_plus_clicked); - connect(ui_prosecution_minus, &AOButton::clicked, this, - &Courtroom::on_prosecution_minus_clicked); - connect(ui_prosecution_plus, &AOButton::clicked, this, - &Courtroom::on_prosecution_plus_clicked); - - connect(ui_text_color, QOverload::of(&QComboBox::currentIndexChanged), this, - &Courtroom::on_text_color_changed); - connect(ui_text_color, &QComboBox::customContextMenuRequested, this, - &Courtroom::on_text_color_context_menu_requested); - - connect(ui_music_slider, &QSlider::valueChanged, this, - &Courtroom::on_music_slider_moved); - connect(ui_sfx_slider, &QSlider::valueChanged, this, - &Courtroom::on_sfx_slider_moved); - connect(ui_blip_slider, &QSlider::valueChanged, this, - &Courtroom::on_blip_slider_moved); - - connect(ui_ooc_toggle, &AOButton::clicked, this, - &Courtroom::on_ooc_toggle_clicked); - - connect(ui_music_search, &QLineEdit::textChanged, this, - &Courtroom::on_music_search_edited); - - connect(ui_witness_testimony, &AOButton::clicked, this, - &Courtroom::on_witness_testimony_clicked); - connect(ui_cross_examination, &AOButton::clicked, this, - &Courtroom::on_cross_examination_clicked); + connect(ui_defense_minus, &AOButton::clicked, this, &Courtroom::on_defense_minus_clicked); + connect(ui_defense_plus, &AOButton::clicked, this, &Courtroom::on_defense_plus_clicked); + connect(ui_prosecution_minus, &AOButton::clicked, this, &Courtroom::on_prosecution_minus_clicked); + connect(ui_prosecution_plus, &AOButton::clicked, this, &Courtroom::on_prosecution_plus_clicked); + + connect(ui_text_color, QOverload::of(&QComboBox::currentIndexChanged), this, &Courtroom::on_text_color_changed); + connect(ui_text_color, &QComboBox::customContextMenuRequested, this, &Courtroom::on_text_color_context_menu_requested); + + connect(ui_music_slider, &QSlider::valueChanged, this, &Courtroom::on_music_slider_moved); + connect(ui_sfx_slider, &QSlider::valueChanged, this, &Courtroom::on_sfx_slider_moved); + connect(ui_blip_slider, &QSlider::valueChanged, this, &Courtroom::on_blip_slider_moved); + + connect(ui_ooc_toggle, &AOButton::clicked, this, &Courtroom::on_ooc_toggle_clicked); + + connect(ui_music_search, &QLineEdit::textChanged, this, &Courtroom::on_music_search_edited); + + connect(ui_witness_testimony, &AOButton::clicked, this, &Courtroom::on_witness_testimony_clicked); + connect(ui_cross_examination, &AOButton::clicked, this, &Courtroom::on_cross_examination_clicked); connect(ui_guilty, &AOButton::clicked, this, &Courtroom::on_guilty_clicked); - connect(ui_not_guilty, &AOButton::clicked, this, - &Courtroom::on_not_guilty_clicked); + connect(ui_not_guilty, &AOButton::clicked, this, &Courtroom::on_not_guilty_clicked); - connect(ui_change_character, &AOButton::clicked, this, - &Courtroom::on_change_character_clicked); - connect(ui_reload_theme, &AOButton::clicked, this, - &Courtroom::on_reload_theme_clicked); + connect(ui_change_character, &AOButton::clicked, this, &Courtroom::on_change_character_clicked); + connect(ui_reload_theme, &AOButton::clicked, this, &Courtroom::on_reload_theme_clicked); connect(ui_call_mod, &AOButton::clicked, this, &Courtroom::on_call_mod_clicked); connect(ui_settings, &AOButton::clicked, this, &Courtroom::on_settings_clicked); - connect(ui_switch_area_music, &AOButton::clicked, this, - &Courtroom::on_switch_area_music_clicked); + connect(ui_switch_area_music, &AOButton::clicked, this, &Courtroom::on_switch_area_music_clicked); connect(ui_pre, &AOButton::clicked, this, &Courtroom::on_pre_clicked); connect(ui_flip, &AOButton::clicked, this, &Courtroom::on_flip_clicked); connect(ui_additive, &AOButton::clicked, this, &Courtroom::on_additive_clicked); connect(ui_guard, &AOButton::clicked, this, &Courtroom::on_guard_clicked); - connect(ui_showname_enable, &AOButton::clicked, this, - &Courtroom::on_showname_enable_clicked); + connect(ui_showname_enable, &AOButton::clicked, this, &Courtroom::on_showname_enable_clicked); connect(ui_pair_button, &AOButton::clicked, this, &Courtroom::on_pair_clicked); - connect(ui_pair_list, &QListWidget::clicked, this, - &Courtroom::on_pair_list_clicked); - connect(ui_pair_offset_spinbox, QOverload::of(&QSpinBox::valueChanged), this, - &Courtroom::on_pair_offset_changed); - connect(ui_pair_vert_offset_spinbox, QOverload::of(&QSpinBox::valueChanged), this, - &Courtroom::on_pair_vert_offset_changed); - connect(ui_pair_order_dropdown, QOverload::of(&QComboBox::currentIndexChanged), this, - &Courtroom::on_pair_order_dropdown_changed); - - connect(ui_evidence_button, &AOButton::clicked, this, - &Courtroom::on_evidence_button_clicked); - connect(ui_evidence_button, &QComboBox::customContextMenuRequested, this, - &Courtroom::on_evidence_context_menu_requested); - - connect(qApp, QOverload::of(&QApplication::applicationStateChanged), this, - &Courtroom::on_application_state_changed); + connect(ui_pair_list, &QListWidget::clicked, this, &Courtroom::on_pair_list_clicked); + connect(ui_pair_offset_spinbox, QOverload::of(&QSpinBox::valueChanged), this, &Courtroom::on_pair_offset_changed); + connect(ui_pair_vert_offset_spinbox, QOverload::of(&QSpinBox::valueChanged), this, &Courtroom::on_pair_vert_offset_changed); + connect(ui_pair_order_dropdown, QOverload::of(&QComboBox::currentIndexChanged), this, &Courtroom::on_pair_order_dropdown_changed); + + connect(ui_evidence_button, &AOButton::clicked, this, &Courtroom::on_evidence_button_clicked); + connect(ui_evidence_button, &QComboBox::customContextMenuRequested, this, &Courtroom::on_evidence_context_menu_requested); + + connect(qApp, QOverload::of(&QApplication::applicationStateChanged), this, &Courtroom::on_application_state_changed); connect(ui_vp_evidence_display, &AOEvidenceDisplay::show_evidence_details, this, &Courtroom::show_evidence); @@ -568,11 +515,25 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() set_char_select(); } +Courtroom::~Courtroom() +{ + // save sound settings + Options::getInstance().setMusicVolume(ui_music_slider->value()); + Options::getInstance().setSfxVolume(ui_sfx_slider->value()); + Options::getInstance().setBlipVolume(ui_blip_slider->value()); + + delete music_player; + delete sfx_player; + delete objection_player; + delete blip_player; +} + void Courtroom::on_application_state_changed(Qt::ApplicationState state) { // Unsuppressed suppress_audio = 0; - if (state != Qt::ApplicationActive) { + if (state != Qt::ApplicationActive) + { // Suppressed audio setting suppress_audio = Options::getInstance().defaultSuppressAudio(); } @@ -583,13 +544,18 @@ void Courtroom::update_audio_volume() { float remaining_percent = 1.0f - static_cast(suppress_audio / 100.0f); if (remaining_percent > 1) + { remaining_percent = 1; + } if (remaining_percent < 0) + { remaining_percent = 0; + } music_player->set_volume(ui_music_slider->value() * remaining_percent, 0); // set music // Set the ambience and other misc. music layers - for (int i = 1; i < music_player->m_channelmax; ++i) { + for (int i = 1; i < music_player->CHANNEL_COUNT; ++i) + { music_player->set_volume(ui_sfx_slider->value() * remaining_percent, i); } sfx_player->set_volume(ui_sfx_slider->value() * remaining_percent); @@ -597,18 +563,107 @@ void Courtroom::update_audio_volume() blip_player->set_volume(ui_blip_slider->value() * remaining_percent); } +void Courtroom::append_char(char_type p_char) +{ + char_list.append(p_char); +} + +void Courtroom::append_music(QString f_music) +{ + music_list.append(f_music); +} + +void Courtroom::append_area(QString f_area) +{ + area_list.append(f_area); +} + +void Courtroom::clear_chars() +{ + char_list.clear(); +} + +void Courtroom::clear_music() +{ + music_list.clear(); +} + +void Courtroom::clear_areas() +{ + area_list.clear(); +} + +void Courtroom::fix_last_area() +{ + if (area_list.size() > 0) + { + QString malplaced = area_list.last(); + area_list.removeLast(); + append_music(malplaced); + } +} + +void Courtroom::arup_append(int players, QString status, QString cm, QString locked) +{ + arup_players.append(players); + arup_statuses.append(status); + arup_cms.append(cm); + arup_locks.append(locked); +} + +void Courtroom::arup_clear() +{ + arup_players.clear(); + arup_statuses.clear(); + arup_cms.clear(); + arup_locks.clear(); +} + +void Courtroom::arup_modify(int type, int place, QString value) +{ + if (type == 0) + { + if (arup_players.size() > place) + { + arup_players[place] = value.toInt(); + } + } + else if (type == 1) + { + if (arup_statuses.size() > place) + { + arup_statuses[place] = value; + } + } + else if (type == 2) + { + if (arup_cms.size() > place) + { + arup_cms[place] = value; + } + } + else if (type == 3) + { + if (arup_locks.size() > place) + { + arup_locks[place] = value; + } + } +} + void Courtroom::set_courtroom_size() { QString filename = "courtroom_design.ini"; - pos_size_type f_courtroom = - ao_app->get_element_dimensions("courtroom", filename); + pos_size_type f_courtroom = ao_app->get_element_dimensions("courtroom", filename); - if (f_courtroom.width < 0 || f_courtroom.height < 0) { + if (f_courtroom.width < 0 || f_courtroom.height < 0) + { qWarning() << "did not find courtroom width or height in " << filename; this->setFixedSize(714, 668); } - else { + else + { m_courtroom_width = f_courtroom.width; m_courtroom_height = f_courtroom.height; @@ -624,18 +679,22 @@ void Courtroom::set_mute_list() mute_map.clear(); // maps which characters are muted based on cid, none are muted by default - for (int n_cid = 0; n_cid < char_list.size(); n_cid++) { + for (int n_cid = 0; n_cid < char_list.size(); n_cid++) + { mute_map.insert(n_cid, false); } QStringList sorted_mute_list; for (const char_type &i_char : qAsConst(char_list)) + { sorted_mute_list.append(i_char.name); + } sorted_mute_list.sort(); - for (const QString &i_name : sorted_mute_list) { + for (const QString &i_name : sorted_mute_list) + { // mute_map.insert(i_name, false); ui_mute_list->addItem(i_name); } @@ -646,11 +705,14 @@ void Courtroom::set_pair_list() QStringList sorted_pair_list; for (const char_type &i_char : qAsConst(char_list)) + { sorted_pair_list.append(i_char.name); + } sorted_pair_list.sort(); - for (const QString &i_name : sorted_pair_list) { + for (const QString &i_name : sorted_pair_list) + { ui_pair_list->addItem(i_name); } } @@ -665,14 +727,16 @@ void Courtroom::set_widgets() // If there is a point to it, show all CCCC features. // We also do this this soon so that set_size_and_pos can hide them all later, // if needed. - if (ao_app->cccc_ic_supported) { + if (ao_app->cccc_ic_supported) + { ui_pair_button->show(); ui_immediate->show(); ui_showname_enable->show(); ui_ic_chat_name->show(); ui_ic_chat_name->setEnabled(true); } - else { + else + { ui_pair_button->hide(); ui_immediate->hide(); ui_showname_enable->hide(); @@ -699,16 +763,14 @@ void Courtroom::set_widgets() ui_vp_player_char->combo_resize(ui_viewport->width(), ui_viewport->height()); ui_vp_sideplayer_char->move_and_center(0, 0); - ui_vp_sideplayer_char->combo_resize(ui_viewport->width(), - ui_viewport->height()); + ui_vp_sideplayer_char->combo_resize(ui_viewport->width(), ui_viewport->height()); // the AO2 desk element ui_vp_desk->move_and_center(0, 0); ui_vp_desk->combo_resize(ui_viewport->width(), ui_viewport->height()); ui_vp_evidence_display->move(0, 0); - ui_vp_evidence_display->combo_resize(ui_viewport->width(), - ui_viewport->height()); + ui_vp_evidence_display->combo_resize(ui_viewport->width(), ui_viewport->height()); // layering shenanigans with ui_vp_chatbox prevent us from doing the sensible // thing, which is to parent these to ui_viewport. instead, AOLayer handles @@ -728,26 +790,21 @@ void Courtroom::set_widgets() log_maximum_blocks = Options::getInstance().maxLogSize(); - bool regenerate = log_goes_downwards != Options::getInstance().logDirectionDownwards() || - log_colors != Options::getInstance().colorLogEnabled() || - log_newline != Options::getInstance().logNewline() || - log_margin != Options::getInstance().logMargin() || - log_timestamp != Options::getInstance().logTimestampEnabled() || - log_timestamp_format != Options::getInstance().logTimestampFormat(); + bool regenerate = log_goes_downwards != Options::getInstance().logDirectionDownwards() || log_colors != Options::getInstance().colorLogEnabled() || log_newline != Options::getInstance().logNewline() || log_margin != Options::getInstance().logMargin() || log_timestamp != Options::getInstance().logTimestampEnabled() || log_timestamp_format != Options::getInstance().logTimestampFormat(); log_goes_downwards = Options::getInstance().logDirectionDownwards(); log_colors = Options::getInstance().colorLogEnabled(); log_newline = Options::getInstance().logNewline(); log_margin = Options::getInstance().logMargin(); log_timestamp = Options::getInstance().logTimestampEnabled(); log_timestamp_format = Options::getInstance().logTimestampFormat(); - if (regenerate) { + if (regenerate) + { regenerate_ic_chatlog(); } set_size_and_pos(ui_ic_chatlog, "ic_chatlog"); ui_ic_chatlog->setFrameShape(QFrame::NoFrame); - ui_ic_chatlog->setPlaceholderText(log_goes_downwards ? "▼ " + tr("Log goes down") + " ▼" - : "▲ " + tr("Log goes up") + " ▲"); + ui_ic_chatlog->setPlaceholderText(log_goes_downwards ? "▼ " + tr("Log goes down") + " ▼" : "▲ " + tr("Log goes up") + " ▲"); set_size_and_pos(ui_debug_log, "ms_chatlog"); // Old name, still use it to not break compatibility ui_debug_log->setFrameShape(QFrame::NoFrame); @@ -764,27 +821,23 @@ void Courtroom::set_widgets() set_size_and_pos(ui_pair_offset_spinbox, "pair_offset_spinbox"); ui_pair_offset_spinbox->hide(); - ui_pair_offset_spinbox->setToolTip( - tr("Change the horizontal percentage offset of your character's position " - "from the " - "center of the screen.")); + ui_pair_offset_spinbox->setToolTip(tr("Change the horizontal percentage offset of your character's position " + "from the " + "center of the screen.")); set_size_and_pos(ui_pair_vert_offset_spinbox, "pair_vert_offset_spinbox"); ui_pair_vert_offset_spinbox->hide(); - ui_pair_vert_offset_spinbox->setToolTip( - tr("Change the vertical percentage offset of your character's position " - "from the " - "center of the screen.")); + ui_pair_vert_offset_spinbox->setToolTip(tr("Change the vertical percentage offset of your character's position " + "from the " + "center of the screen.")); ui_pair_order_dropdown->hide(); set_size_and_pos(ui_pair_order_dropdown, "pair_order_dropdown"); - ui_pair_order_dropdown->setToolTip( - tr("Change the order of appearance for your character.")); + ui_pair_order_dropdown->setToolTip(tr("Change the order of appearance for your character.")); set_size_and_pos(ui_pair_button, "pair_button"); ui_pair_button->set_image("pair_button"); - ui_pair_button->setToolTip( - tr("Display the list of characters to pair with.")); + ui_pair_button->setToolTip(tr("Display the list of characters to pair with.")); set_size_and_pos(ui_area_list, "music_list"); ui_area_list->header()->setMinimumSectionSize(ui_area_list->width()); @@ -793,9 +846,13 @@ void Courtroom::set_widgets() ui_music_list->header()->setMinimumSectionSize(ui_music_list->width()); QString music_list_indentation = ao_app->get_design_element("music_list_indent", "courtroom_design.ini"); if (music_list_indentation == "") + { ui_music_list->resetIndentation(); + } else + { ui_music_list->setIndentation(music_list_indentation.toInt()); + } QString music_list_animated = ao_app->get_design_element("music_list_animated", "courtroom_design.ini"); ui_music_list->setAnimated(music_list_animated == "1" || music_list_animated.startsWith("true")); @@ -803,22 +860,22 @@ void Courtroom::set_widgets() set_size_and_pos(ui_music_name, "music_name"); ui_music_display->move(0, 0); - pos_size_type design_ini_result = - ao_app->get_element_dimensions("music_display", "courtroom_design.ini"); + pos_size_type design_ini_result = ao_app->get_element_dimensions("music_display", "courtroom_design.ini"); - if (design_ini_result.width < 0 || design_ini_result.height < 0) { + if (design_ini_result.width < 0 || design_ini_result.height < 0) + { qWarning() << "could not find \"music_display\" in courtroom_design.ini"; ui_music_display->hide(); } - else { + else + { ui_music_display->move(design_ini_result.x, design_ini_result.y); - ui_music_display->combo_resize(design_ini_result.width, - design_ini_result.height); + ui_music_display->combo_resize(design_ini_result.width, design_ini_result.height); } ui_music_display->load_image("music_display", ""); - - for (int i = 0; i < max_clocks; i++) { + for (int i = 0; i < max_clocks; i++) + { set_size_and_pos(ui_clock[i], "clock_" + QString::number(i)); } set_size_and_pos(ui_ic_chat_message, "ao2_ic_chat_message"); @@ -827,14 +884,13 @@ void Courtroom::set_widgets() initialize_chatbox(); ui_vp_sticker->move(ui_viewport->x(), ui_viewport->y()); - ui_vp_sticker->combo_resize(ui_viewport->width(), - ui_viewport->height()); + ui_vp_sticker->combo_resize(ui_viewport->width(), ui_viewport->height()); ui_muted->resize(ui_ic_chat_message->width(), ui_ic_chat_message->height()); ui_muted->set_image("muted"); ui_muted->setToolTip(tr("Oops, you're muted!")); - set_size_and_pos(ui_ooc_chat_message, "ooc_chat_message");; + set_size_and_pos(ui_ooc_chat_message, "ooc_chat_message"); set_size_and_pos(ui_ooc_chat_name, "ooc_chat_name"); @@ -842,49 +898,48 @@ void Courtroom::set_widgets() set_size_and_pos(ui_music_search, "music_search"); set_size_and_pos(ui_emote_dropdown, "emote_dropdown"); - ui_emote_dropdown->setToolTip( - tr("Set your character's emote to play on your next message.")); + ui_emote_dropdown->setToolTip(tr("Set your character's emote to play on your next message.")); set_size_and_pos(ui_pos_dropdown, "pos_dropdown"); ui_pos_dropdown->setEditable(true); ui_pos_dropdown->setInsertPolicy(QComboBox::NoInsert); - ui_pos_dropdown->setToolTip( - tr("Set your character's supplementary background.")); + ui_pos_dropdown->setToolTip(tr("Set your character's supplementary background.")); set_size_and_pos(ui_pos_remove, "pos_remove"); ui_pos_remove->setText("X"); ui_pos_remove->set_image("evidencex"); ui_pos_remove->setToolTip(tr("Reset your character's supplementary background to its default.")); if (current_side == "") + { ui_pos_remove->hide(); + } else + { ui_pos_remove->show(); + } set_size_and_pos(ui_iniswap_dropdown, "iniswap_dropdown"); ui_iniswap_dropdown->setEditable(true); ui_iniswap_dropdown->setInsertPolicy(QComboBox::InsertAtBottom); - ui_iniswap_dropdown->setToolTip( - tr("Set an 'iniswap', or an alternative character folder to refer to " - "from your current character.\n" - "Edit by typing and pressing Enter, [X] to remove. This saves to your " - "base/iniswaps.ini")); + ui_iniswap_dropdown->setToolTip(tr("Set an 'iniswap', or an alternative character folder to refer to " + "from your current character.\n" + "Edit by typing and pressing Enter, [X] to remove. This saves to your " + "base/iniswaps.ini")); set_size_and_pos(ui_iniswap_remove, "iniswap_remove"); ui_iniswap_remove->setText("X"); ui_iniswap_remove->set_image("evidencex"); - ui_iniswap_remove->setToolTip( - tr("Remove the currently selected iniswap from the list and return to " - "the original character folder.")); + ui_iniswap_remove->setToolTip(tr("Remove the currently selected iniswap from the list and return to " + "the original character folder.")); ui_iniswap_remove->hide(); set_size_and_pos(ui_sfx_dropdown, "sfx_dropdown"); ui_sfx_dropdown->setEditable(true); ui_sfx_dropdown->setInsertPolicy(QComboBox::NoInsert); - ui_sfx_dropdown->setToolTip( - tr("Set a sound effect to play on your next 'Preanim'. Leaving it on " - "Default will use the emote-defined sound (if any).\n" - "Edit by typing and pressing Enter, [X] to remove. This saves to your " - "base/characters//soundlist.ini")); + ui_sfx_dropdown->setToolTip(tr("Set a sound effect to play on your next 'Preanim'. Leaving it on " + "Default will use the emote-defined sound (if any).\n" + "Edit by typing and pressing Enter, [X] to remove. This saves to your " + "base/characters//soundlist.ini")); set_size_and_pos(ui_sfx_remove, "sfx_remove"); ui_sfx_remove->setText("X"); @@ -896,12 +951,11 @@ void Courtroom::set_widgets() set_size_and_pos(ui_effects_dropdown, "effects_dropdown"); ui_effects_dropdown->setInsertPolicy(QComboBox::InsertAtBottom); - ui_effects_dropdown->setToolTip( - tr("Choose an effect to play on your next spoken message.\n" - "The effects are defined in your theme/effects/effects.ini. Your " - "character can define custom effects by\n" - "char.ini [Options] category, effects = 'miscname' where it refers " - "to misc//effects.ini to read the effects.")); + ui_effects_dropdown->setToolTip(tr("Choose an effect to play on your next spoken message.\n" + "The effects are defined in your theme/effects/effects.ini. Your " + "character can define custom effects by\n" + "char.ini [Options] category, effects = 'miscname' where it refers " + "to misc//effects.ini to read the effects.")); // Todo: recode this entire fucking system with these dumbass goddamn ini's // why is everything so specifically coded for all these purposes is ABSTRACT // CODING not a thing now huh what the FUCK why do I gotta do this pleASE FOR @@ -913,8 +967,7 @@ void Courtroom::set_widgets() ui_defense_bar->set_image("defensebar" + QString::number(defense_bar_state)); set_size_and_pos(ui_prosecution_bar, "prosecution_bar"); - ui_prosecution_bar->set_image("prosecutionbar" + - QString::number(prosecution_bar_state)); + ui_prosecution_bar->set_image("prosecutionbar" + QString::number(prosecution_bar_state)); set_size_and_pos(ui_music_label, "music_label"); ui_music_label->setText(tr("Music")); @@ -943,8 +996,7 @@ void Courtroom::set_widgets() set_size_and_pos(ui_ooc_toggle, "ooc_toggle"); ui_ooc_toggle->setText(tr("Server")); - ui_ooc_toggle->setToolTip( - tr("Toggle between server chat and global AO2 chat.")); + ui_ooc_toggle->setToolTip(tr("Toggle between server chat and global AO2 chat.")); set_size_and_pos(ui_witness_testimony, "witness_testimony"); ui_witness_testimony->set_image("witnesstestimony"); @@ -968,29 +1020,26 @@ void Courtroom::set_widgets() set_size_and_pos(ui_change_character, "change_character"); ui_change_character->setText(tr("Change character")); ui_change_character->set_image("change_character"); - ui_change_character->setToolTip( - tr("Bring up the Character Select Screen and change your character.")); + ui_change_character->setToolTip(tr("Bring up the Character Select Screen and change your character.")); set_size_and_pos(ui_reload_theme, "reload_theme"); ui_reload_theme->setText(tr("Reload theme")); ui_reload_theme->set_image("reload_theme"); - ui_reload_theme->setToolTip( - tr("Refresh the theme and update all of the ui elements to match.")); + ui_reload_theme->setToolTip(tr("Refresh the theme and update all of the ui elements to match.")); set_size_and_pos(ui_call_mod, "call_mod"); ui_call_mod->setText(tr("Call mod")); ui_call_mod->set_image("call_mod"); - ui_call_mod->setToolTip( - tr("Request the attention of the current server's moderator.")); + ui_call_mod->setToolTip(tr("Request the attention of the current server's moderator.")); set_size_and_pos(ui_settings, "settings"); ui_settings->setText(tr("Settings")); ui_settings->set_image("courtroom_settings"); - if (ui_settings->icon().isNull()) { - ui_settings->set_image("settings"); // pre-2.10 filename + if (ui_settings->icon().isNull()) + { + ui_settings->set_image("settings"); // pre-2.10 filename } - ui_settings->setToolTip( - tr("Allows you to change various aspects of the client.")); + ui_settings->setToolTip(tr("Allows you to change various aspects of the client.")); set_size_and_pos(ui_switch_area_music, "switch_area_music"); ui_switch_area_music->setText(tr("A/M")); @@ -999,68 +1048,59 @@ void Courtroom::set_widgets() set_size_and_pos(ui_pre, "pre"); ui_pre->setText(tr("Preanim")); - ui_pre->setToolTip( - tr("Play a single-shot animation as defined by the emote when checked.")); + ui_pre->setToolTip(tr("Play a single-shot animation as defined by the emote when checked.")); - ui_immediate->setToolTip( - tr("If preanim is checked, display the input text immediately as the " - "animation plays concurrently.")); + ui_immediate->setToolTip(tr("If preanim is checked, display the input text immediately as the " + "animation plays concurrently.")); - design_ini_result = - ao_app->get_element_dimensions("immediate", "courtroom_design.ini"); + design_ini_result = ao_app->get_element_dimensions("immediate", "courtroom_design.ini"); // If we don't have new-style naming, fall back to the old method - if (design_ini_result.width < 0 || design_ini_result.height < 0) { + if (design_ini_result.width < 0 || design_ini_result.height < 0) + { set_size_and_pos(ui_immediate, "pre_no_interrupt"); truncate_label_text(ui_immediate, "pre_no_interrupt"); } - else {// Adopt the based new method instead + else + { // Adopt the based new method instead set_size_and_pos(ui_immediate, "immediate"); truncate_label_text(ui_immediate, "immediate"); } - set_size_and_pos(ui_flip, "flip"); ui_flip->setToolTip(tr("Mirror your character's emotes when checked.")); set_size_and_pos(ui_additive, "additive"); - ui_additive->setToolTip( - tr("Add text to your last spoken message when checked.")); + ui_additive->setToolTip(tr("Add text to your last spoken message when checked.")); set_size_and_pos(ui_guard, "guard"); - ui_guard->setToolTip( - tr("Do not listen to mod calls when checked, preventing them from " - "playing sounds or focusing attention on the window.")); + ui_guard->setToolTip(tr("Do not listen to mod calls when checked, preventing them from " + "playing sounds or focusing attention on the window.")); set_size_and_pos(ui_showname_enable, "showname_enable"); - ui_showname_enable->setToolTip( - tr("Display customized shownames for all users when checked.")); + ui_showname_enable->setToolTip(tr("Display customized shownames for all users when checked.")); set_size_and_pos(ui_custom_objection, "custom_objection"); ui_custom_objection->setText(tr("Custom Shout!")); ui_custom_objection->set_image("custom"); - ui_custom_objection->setToolTip( - tr("This will display the custom character-defined animation in the " - "viewport as soon as it is pressed.\n" - "To make one, your character's folder must contain " - "custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect")); + ui_custom_objection->setToolTip(tr("This will display the custom character-defined animation in the " + "viewport as soon as it is pressed.\n" + "To make one, your character's folder must contain " + "custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect")); set_size_and_pos(ui_realization, "realization"); ui_realization->set_image("realization"); - ui_realization->setToolTip( - tr("Play realization sound and animation in the viewport on the next " - "spoken message when checked.")); + ui_realization->setToolTip(tr("Play realization sound and animation in the viewport on the next " + "spoken message when checked.")); set_size_and_pos(ui_screenshake, "screenshake"); ui_screenshake->set_image("screenshake"); - ui_screenshake->setToolTip( - tr("Shake the screen on next spoken message when checked.")); + ui_screenshake->setToolTip(tr("Shake the screen on next spoken message when checked.")); set_size_and_pos(ui_mute, "mute_button"); ui_mute->setText("Mute"); ui_mute->set_image("mute"); - ui_mute->setToolTip( - tr("Display the list of character folders you wish to mute.")); + ui_mute->setToolTip(tr("Display the list of character folders you wish to mute.")); set_size_and_pos(ui_defense_plus, "defense_plus"); ui_defense_plus->set_image("defplus"); @@ -1079,10 +1119,9 @@ void Courtroom::set_widgets() ui_prosecution_minus->setToolTip(tr("Decrease the health bar.")); set_size_and_pos(ui_text_color, "text_color"); - ui_text_color->setToolTip( - tr("Change the text color of the spoken message.\n" - "You can also select a part of your currently typed message and use " - "the dropdown to change its color!")); + ui_text_color->setToolTip(tr("Change the text color of the spoken message.\n" + "You can also select a part of your currently typed message and use " + "the dropdown to change its color!")); set_text_color_dropdown(); set_size_and_pos(ui_music_slider, "music_slider"); @@ -1118,19 +1157,13 @@ void Courtroom::set_widgets() truncate_label_text(ui_sfx_label, "sfx_label"); truncate_label_text(ui_blip_label, "blip_label"); - free_brush = - QBrush(ao_app->get_color("area_free_color", "courtroom_design.ini")); - lfp_brush = - QBrush(ao_app->get_color("area_lfp_color", "courtroom_design.ini")); - casing_brush = - QBrush(ao_app->get_color("area_casing_color", "courtroom_design.ini")); - recess_brush = - QBrush(ao_app->get_color("area_recess_color", "courtroom_design.ini")); + free_brush = QBrush(ao_app->get_color("area_free_color", "courtroom_design.ini")); + lfp_brush = QBrush(ao_app->get_color("area_lfp_color", "courtroom_design.ini")); + casing_brush = QBrush(ao_app->get_color("area_casing_color", "courtroom_design.ini")); + recess_brush = QBrush(ao_app->get_color("area_recess_color", "courtroom_design.ini")); rp_brush = QBrush(ao_app->get_color("area_rp_color", "courtroom_design.ini")); - gaming_brush = - QBrush(ao_app->get_color("area_gaming_color", "courtroom_design.ini")); - locked_brush = - QBrush(ao_app->get_color("area_locked_color", "courtroom_design.ini")); + gaming_brush = QBrush(ao_app->get_color("area_gaming_color", "courtroom_design.ini")); + locked_brush = QBrush(ao_app->get_color("area_locked_color", "courtroom_design.ini")); refresh_evidence(); } @@ -1152,99 +1185,102 @@ void Courtroom::set_fonts(QString p_char) set_font(ui_music_name, "", "music_name", p_char); for (int i = 0; i < max_clocks; i++) + { set_font(ui_clock[i], "", "clock_" + QString::number(i), p_char); + } set_stylesheets(); } -void Courtroom::set_font(QWidget *widget, QString class_name, - QString p_identifier, QString p_char, - QString font_name, int f_pointsize) +void Courtroom::set_font(QWidget *widget, QString class_name, QString p_identifier, QString p_char, QString font_name, int f_pointsize) { QString design_file = "courtroom_fonts.ini"; if (f_pointsize <= 0) - f_pointsize = - ao_app->get_design_element(p_identifier, design_file, ao_app->get_chat(p_char)).toInt() * Options::getInstance().themeScalingFactor(); + { + f_pointsize = ao_app->get_design_element(p_identifier, design_file, ao_app->get_chat(p_char)).toInt() * Options::getInstance().themeScalingFactor(); + } if (font_name == "") - font_name = - ao_app->get_design_element(p_identifier + "_font", design_file, ao_app->get_chat(p_char)); - QString f_color_result = - ao_app->get_design_element(p_identifier + "_color", design_file, ao_app->get_chat(p_char)); + { + font_name = ao_app->get_design_element(p_identifier + "_font", design_file, ao_app->get_chat(p_char)); + } + QString f_color_result = ao_app->get_design_element(p_identifier + "_color", design_file, ao_app->get_chat(p_char)); QColor f_color(0, 0, 0); - if (f_color_result != "") { + if (f_color_result != "") + { QStringList color_list = f_color_result.split(","); - if (color_list.size() >= 3) { + if (color_list.size() >= 3) + { f_color.setRed(color_list.at(0).toInt()); f_color.setGreen(color_list.at(1).toInt()); f_color.setBlue(color_list.at(2).toInt()); } } - bool bold = - ao_app->get_design_element(p_identifier + "_bold", design_file, ao_app->get_chat(p_char)) == - "1"; // is the font bold or not? - bool antialias = ao_app->get_design_element(p_identifier + "_sharp", - design_file, ao_app->get_chat(p_char)) != - "1"; // is the font anti-aliased or not? + bool bold = ao_app->get_design_element(p_identifier + "_bold", design_file, ao_app->get_chat(p_char)) == "1"; // is the font bold or not? + bool antialias = ao_app->get_design_element(p_identifier + "_sharp", design_file, ao_app->get_chat(p_char)) != "1"; // is the font anti-aliased or not? bool outlined = ao_app->get_design_element(p_identifier + "_outlined", design_file, ao_app->get_chat(p_char)) == "1"; QColor outline_color; int outline_width = 1; - if (outlined) { - QString outline_color_result = - ao_app->get_design_element(p_identifier + "_outline_color", design_file, ao_app->get_chat(p_char)); - outline_color = QColor(0,0,0); - if (outline_color_result != "") { - QStringList o_color_list = outline_color_result.split(","); - - if (o_color_list.size() >= 3) { - outline_color.setRed(o_color_list.at(0).toInt()); - outline_color.setGreen(o_color_list.at(1).toInt()); - outline_color.setBlue(o_color_list.at(2).toInt()); - } + if (outlined) + { + QString outline_color_result = ao_app->get_design_element(p_identifier + "_outline_color", design_file, ao_app->get_chat(p_char)); + outline_color = QColor(0, 0, 0); + if (outline_color_result != "") + { + QStringList o_color_list = outline_color_result.split(","); + + if (o_color_list.size() >= 3) + { + outline_color.setRed(o_color_list.at(0).toInt()); + outline_color.setGreen(o_color_list.at(1).toInt()); + outline_color.setBlue(o_color_list.at(2).toInt()); } - outline_width = ao_app->get_design_element(p_identifier + "_outline_width", design_file, ao_app->get_chat(p_char)).toInt() * Options::getInstance().themeScalingFactor(); + } + outline_width = ao_app->get_design_element(p_identifier + "_outline_width", design_file, ao_app->get_chat(p_char)).toInt() * Options::getInstance().themeScalingFactor(); } - this->set_qfont(widget, class_name, - get_qfont(font_name, f_pointsize, antialias), f_color, bold, outlined, outline_color, outline_width); + this->set_qfont(widget, class_name, get_qfont(font_name, f_pointsize, antialias), f_color, bold, outlined, outline_color, outline_width); } QFont Courtroom::get_qfont(QString font_name, int f_pointsize, bool antialias) { QFont font; if (font_name.isEmpty()) + { font_name = "Arial"; + } QFont::StyleStrategy style_strategy = QFont::PreferDefault; if (!antialias) + { style_strategy = QFont::NoAntialias; + } font = QFont(font_name, f_pointsize); font.setStyleHint(QFont::SansSerif, style_strategy); return font; } -void Courtroom::set_qfont(QWidget *widget, QString class_name, QFont font, - QColor f_color, bool bold, bool outlined, QColor outline_color, int outline_width) +void Courtroom::set_qfont(QWidget *widget, QString class_name, QFont font, QColor f_color, bool bold, bool outlined, QColor outline_color, int outline_width) { if (class_name.isEmpty()) + { class_name = widget->metaObject()->className(); + } - if (class_name == "AOChatboxLabel") { // Only shownames can be outlined - ui_vp_showname->setIsOutlined(outlined); - ui_vp_showname->setOutlineColor(outline_color); - ui_vp_showname->setTextColor(f_color); - ui_vp_showname->setOutlineWidth(outline_width); + if (class_name == "AOChatboxLabel") + { // Only shownames can be outlined + ui_vp_showname->setIsOutlined(outlined); + ui_vp_showname->setOutlineColor(outline_color); + ui_vp_showname->setTextColor(f_color); + ui_vp_showname->setOutlineWidth(outline_width); } font.setBold(bold); widget->setFont(font); - QString style_sheet_string = - class_name + " { color: rgba(" + - QString::number(f_color.red()) + ", " + QString::number(f_color.green()) + - ", " + QString::number(f_color.blue()) + ", 255);}"; + QString style_sheet_string = class_name + " { color: rgba(" + QString::number(f_color.red()) + ", " + QString::number(f_color.green()) + ", " + QString::number(f_color.blue()) + ", 255);}"; widget->setStyleSheet(style_sheet_string); } @@ -1253,18 +1289,18 @@ void Courtroom::set_stylesheet(QWidget *widget) QString f_file = "courtroom_stylesheets.css"; QString style_sheet_string = ao_app->get_stylesheet(f_file); if (style_sheet_string != "") + { widget->setStyleSheet(style_sheet_string); + } } void Courtroom::set_stylesheets() { set_stylesheet(this); - this->setStyleSheet( - "QFrame { background-color:transparent; } " - "QAbstractItemView { background-color: transparent; color: black; } " - "QLineEdit { background-color:transparent; }" - + this->styleSheet() - ); + this->setStyleSheet("QFrame { background-color:transparent; } " + "QAbstractItemView { background-color: transparent; color: black; } " + "QLineEdit { background-color:transparent; }" + + this->styleSheet()); } void Courtroom::set_window_title(QString p_title) @@ -1276,14 +1312,15 @@ void Courtroom::set_size_and_pos(QWidget *p_widget, QString p_identifier, QStrin { QString filename = "courtroom_design.ini"; - pos_size_type design_ini_result = - ao_app->get_element_dimensions(p_identifier, filename, p_misc); + pos_size_type design_ini_result = ao_app->get_element_dimensions(p_identifier, filename, p_misc); - if (design_ini_result.width < 0 || design_ini_result.height < 0) { + if (design_ini_result.width < 0 || design_ini_result.height < 0) + { qWarning() << "could not find" << p_identifier << "in" << filename; p_widget->hide(); } - else { + else + { p_widget->move(design_ini_result.x, design_ini_result.y); p_widget->resize(design_ini_result.width, design_ini_result.height); } @@ -1291,7 +1328,8 @@ void Courtroom::set_size_and_pos(QWidget *p_widget, QString p_identifier, QStrin void Courtroom::set_taken(int n_char, bool p_taken) { - if (n_char >= char_list.size()) { + if (n_char >= char_list.size()) + { qWarning() << "set_taken attempted to set an index bigger than char_list size"; return; } @@ -1305,22 +1343,6 @@ void Courtroom::set_taken(int n_char, bool p_taken) char_list.replace(n_char, f_char); } -QPoint Courtroom::get_theme_pos(QString p_identifier) -{ - QString filename = "courtroom_design.ini"; - - pos_size_type design_ini_result = - ao_app->get_element_dimensions(p_identifier, filename); - - if (design_ini_result.width < 0 || design_ini_result.height < 0) { - qWarning() << "could not find" << p_identifier << "in" << filename; - return QPoint(0, 0); - } - else { - return QPoint(design_ini_result.x, design_ini_result.y); - } -} - void Courtroom::done_received() { m_cid = -1; @@ -1363,23 +1385,26 @@ void Courtroom::set_background(QString p_background, bool display) // Populate the dropdown list with all pos that exist on this bg QStringList pos_list = {}; - for (const QString &key : default_pos.keys()) { - if (file_exists(ao_app->get_image_suffix( - ao_app->get_background_path(default_pos[key]))) || // if we have 2.8-style positions, e.g. def.png, wit.webp, hld.apng - file_exists( - ao_app->get_image_suffix(ao_app->get_background_path(key)))) { // if we have pre-2.8-style positions, e.g. defenseempty.png + for (const QString &key : default_pos.keys()) + { + if (file_exists(ao_app->get_image_suffix(ao_app->get_background_path(default_pos[key]))) || // if we have 2.8-style positions, e.g. def.png, wit.webp, hld.apng + file_exists(ao_app->get_image_suffix(ao_app->get_background_path(key)))) + { // if we have pre-2.8-style positions, e.g. defenseempty.png pos_list.append(default_pos[key]); } } - for (const QString &pos : ao_app->read_design_ini("positions", ao_app->get_background_path("design.ini")).split(",")) { - if (file_exists(ao_app->get_image_suffix(ao_app->get_background_path(pos)))) { + for (const QString &pos : ao_app->read_design_ini("positions", ao_app->get_background_path("design.ini")).split(",")) + { + if (file_exists(ao_app->get_image_suffix(ao_app->get_background_path(pos)))) + { pos_list.append(pos); } } set_pos_dropdown(pos_list); - if (display) { + if (display) + { ui_vp_speedlines->hide(); ui_vp_player_char->stop(); @@ -1388,11 +1413,13 @@ void Courtroom::set_background(QString p_background, bool display) ui_vp_message->hide(); ui_vp_chatbox->setVisible(chatbox_always_show); // Show it if chatbox always shows - if (Options::getInstance().characterStickerEnabled() && chatbox_always_show) { + if (Options::getInstance().characterStickerEnabled() && chatbox_always_show) + { ui_vp_sticker->load_image(m_chatmessage[CHAR_NAME]); } // Hide the face sticker - else { + else + { ui_vp_sticker->stop(); } // Stop the chat arrow from animating @@ -1409,20 +1436,24 @@ void Courtroom::set_background(QString p_background, bool display) ui_vp_evidence_display->reset(); QString f_side = current_side; if (current_side == "") + { f_side = ao_app->get_char_side(current_char); + } set_scene(true, f_side); } } void Courtroom::set_side(QString p_side) { - if (p_side.isEmpty() || p_side == ao_app->get_char_side(current_char)) { - ui_pos_remove->hide(); - current_side = ao_app->get_char_side(current_char); + if (p_side.isEmpty() || p_side == ao_app->get_char_side(current_char)) + { + ui_pos_remove->hide(); + current_side = ao_app->get_char_side(current_char); } - else { - ui_pos_remove->show(); - current_side = p_side; + else + { + ui_pos_remove->show(); + current_side = p_side; } set_judge_buttons(); @@ -1430,10 +1461,11 @@ void Courtroom::set_side(QString p_side) // Block the signals to prevent setCurrentIndex from triggering a pos // change ui_pos_dropdown->blockSignals(true); - for (int i = 0; i < ui_pos_dropdown->count(); ++i) { + for (int i = 0; i < ui_pos_dropdown->count(); ++i) + { QString pos = ui_pos_dropdown->itemText(i); - if (pos == current_side) { - + if (pos == current_side) + { // Set the index on dropdown ui element to let you know what pos you're on // right now ui_pos_dropdown->setCurrentIndex(i); @@ -1456,18 +1488,22 @@ void Courtroom::set_pos_dropdown(QStringList pos_dropdowns) ui_pos_dropdown->blockSignals(true); pos_dropdown_list = pos_dropdowns; ui_pos_dropdown->clear(); - for (int n = 0; n < pos_dropdown_list.size(); ++n) { + for (int n = 0; n < pos_dropdown_list.size(); ++n) + { QString pos = pos_dropdown_list.at(n); ui_pos_dropdown->addItem(pos); QPixmap image = QPixmap(ao_app->get_image_suffix(ao_app->get_background_path(ao_app->get_pos_path(pos)))); - if (!image.isNull()) { + if (!image.isNull()) + { image = image.scaledToHeight(ui_pos_dropdown->iconSize().height()); } ui_pos_dropdown->setItemIcon(n, image); } if (current_side != "" && !pos_dropdown_list.contains(current_side)) + { ui_pos_dropdown->setEditText(current_side); + } // Unblock the signals so the element can be used for setting pos again ui_pos_dropdown->blockSignals(false); @@ -1481,19 +1517,26 @@ void Courtroom::update_character(int p_cid, QString char_name, bool reset_emote) QString f_char; - if (m_cid == -1) { + if (m_cid == -1) + { if (Options::getInstance().discordEnabled()) + { ao_app->discord->state_spectate(); + } f_char = ""; } - else { + else + { f_char = char_name; - if (char_name.isEmpty()) { + if (char_name.isEmpty()) + { f_char = char_list.at(m_cid).name; } if (Options::getInstance().discordEnabled()) + { ao_app->discord->state_character(f_char.toStdString()); + } } current_char = f_char; @@ -1503,15 +1546,20 @@ void Courtroom::update_character(int p_cid, QString char_name, bool reset_emote) set_text_color_dropdown(); // If our cid changed or we're being told to reset - if (newchar || reset_emote) { + if (newchar || reset_emote) + { current_emote_page = 0; current_emote = 0; } if (m_cid == -1) + { ui_emotes->hide(); + } else + { ui_emotes->show(); + } refresh_emotes(); set_emote_page(); @@ -1521,28 +1569,34 @@ void Courtroom::update_character(int p_cid, QString char_name, bool reset_emote) set_effects_dropdown(); if (newchar) // Avoid infinite loop of death and suffering + { set_iniswap_dropdown(); + } ui_custom_objection->hide(); if (ao_app->custom_objection_supported) // if setting is enabled { custom_obj_menu->clear(); custom_objections_list.clear(); - if (file_exists(ao_app->get_image_suffix( - ao_app->get_character_path(current_char, "custom")))) { + if (file_exists(ao_app->get_image_suffix(ao_app->get_character_path(current_char, "custom")))) + { ui_custom_objection->show(); QString custom_name = ao_app->read_char_ini(f_char, "custom_name", "Shouts"); QAction *action; if (custom_name != "") + { action = custom_obj_menu->addAction(custom_name); + } else + { action = custom_obj_menu->addAction("Default"); + } custom_obj_menu->setDefaultAction(action); objection_custom = ""; } - QString custom_objection_dir = ao_app->get_real_path( - ao_app->get_character_path(current_char, "custom_objections")); - if (dir_exists(custom_objection_dir)) { + QString custom_objection_dir = ao_app->get_real_path(ao_app->get_character_path(current_char, "custom_objections")); + if (dir_exists(custom_objection_dir)) + { ui_custom_objection->show(); QDir directory(custom_objection_dir); QStringList custom_obj = directory.entryList(QStringList() << "*.png" @@ -1550,32 +1604,38 @@ void Courtroom::update_character(int p_cid, QString char_name, bool reset_emote) << "*.apng" << "*.webp", QDir::Files); - for (const QString &filename : custom_obj) { + for (const QString &filename : custom_obj) + { CustomObjection custom_objection; custom_objection.filename = filename; QString custom_name = ao_app->read_char_ini(f_char, filename.left(filename.lastIndexOf(".")) + "_name", "Shouts"); QAction *action; - if (custom_name != "") { + if (custom_name != "") + { custom_objection.name = custom_name; action = custom_obj_menu->addAction(custom_name); } - else { + else + { custom_objection.name = filename.left(filename.lastIndexOf(".")); action = custom_obj_menu->addAction(custom_objection.name); } - if (custom_obj_menu->defaultAction() == nullptr) { + if (custom_obj_menu->defaultAction() == nullptr) + { custom_obj_menu->setDefaultAction(action); objection_custom = custom_objection.filename; } - custom_objections_list.append(custom_objection); + custom_objections_list.append(custom_objection); } } } - if (m_cid != -1) { + if (m_cid != -1) + { ui_ic_chat_name->setPlaceholderText(char_list.at(m_cid).name); } - else { + else + { ui_ic_chat_name->setPlaceholderText("Spectator"); } ui_char_select_background->hide(); @@ -1589,20 +1649,27 @@ void Courtroom::enter_courtroom() set_evidence_page(); if (ao_app->flipping_supported) + { ui_flip->show(); + } else + { ui_flip->hide(); + } if (ao_app->additive_text_supported) + { ui_additive->show(); + } else + { ui_additive->hide(); + } list_music(); list_areas(); - switch ( - objection_state) // no need to reset these as it was done in set_widgets() + switch (objection_state) // no need to reset these as it was done in set_widgets() { case 1: ui_hold_it->set_image("holdit_selected"); @@ -1647,7 +1714,8 @@ void Courtroom::list_music() int n_listed_songs = 0; QTreeWidgetItem *parent = nullptr; - for (int n_song = 0; n_song < music_list.size(); ++n_song) { + for (int n_song = 0; n_song < music_list.size(); ++n_song) + { QString i_song = music_list.at(n_song); // It's a stop song or a stop category // yes we cannot properly parse a stop song without a stop category cuz otherwise areas break @@ -1657,36 +1725,46 @@ void Courtroom::list_music() // please end my suffering QString temp = i_song; if (i_song == "~stop.mp3" || (temp.remove('=').toLower() == "stop")) - continue; + { + continue; + } QString i_song_listname = i_song.left(i_song.lastIndexOf(".")); - i_song_listname = i_song_listname.right( - i_song_listname.length() - (i_song_listname.lastIndexOf("/") + 1)); + i_song_listname = i_song_listname.right(i_song_listname.length() - (i_song_listname.lastIndexOf("/") + 1)); QTreeWidgetItem *treeItem; - if (i_song_listname != i_song && - parent != nullptr) // not a category, parent exists + if (i_song_listname != i_song && parent != nullptr) // not a category, parent exists + { treeItem = new QTreeWidgetItem(parent); + } else + { treeItem = new QTreeWidgetItem(ui_music_list); + } treeItem->setText(0, i_song_listname); treeItem->setText(1, i_song); QString song_path = ao_app->get_real_path(ao_app->get_music_path(i_song)); if (file_exists(song_path)) + { treeItem->setBackground(0, found_brush); + } else + { treeItem->setBackground(0, missing_brush); + } - if (i_song_listname == - i_song) // Not supposed to be a song to begin with - a category? + if (i_song_listname == i_song) // Not supposed to be a song to begin with - a category? + { parent = treeItem; + } ++n_listed_songs; } ui_music_list->expandAll(); // Needs to somehow remember which categories were // expanded/collapsed if the music list didn't // change since last time - if (ui_music_search->text() != "") { + if (ui_music_search->text() != "") + { on_music_search_edited(ui_music_search->text()); } } @@ -1696,23 +1774,27 @@ void Courtroom::list_areas() { int n_listed_areas = 0; - for (int n_area = 0; n_area < area_list.size(); ++n_area) { - QString i_area = ""; + for (int n_area = 0; n_area < area_list.size(); ++n_area) + { + QString i_area; i_area.append(area_list.at(n_area)); - if (ao_app->arup_supported) { + if (ao_app->arup_supported) + { i_area.append("\n "); i_area.append(arup_statuses.at(n_area)); - if (arup_cms.at(n_area) != "FREE") { + if (arup_cms.at(n_area) != "FREE") + { i_area.append(" | CM: "); i_area.append(arup_cms.at(n_area)); } i_area.append("\n "); - if (arup_players.at(n_area) != -1) { + if (arup_players.at(n_area) != -1) + { i_area.append(QString::number(arup_players.at(n_area))); i_area.append(" users | "); } @@ -1720,93 +1802,95 @@ void Courtroom::list_areas() i_area.append(arup_locks.at(n_area)); } - QTreeWidgetItem *treeItem = ui_area_list->topLevelItem(n_area); - if (treeItem == nullptr) { + if (treeItem == nullptr) + { treeItem = new QTreeWidgetItem(ui_area_list); } treeItem->setText(0, area_list.at(n_area)); treeItem->setText(1, i_area); - if (ao_app->arup_supported) { + if (ao_app->arup_supported) + { // Coloring logic here. treeItem->setBackground(1, free_brush); - if (arup_locks.at(n_area) == "LOCKED") { + if (arup_locks.at(n_area) == "LOCKED") + { treeItem->setBackground(1, locked_brush); } - else { + else + { if (arup_statuses.at(n_area) == "LOOKING-FOR-PLAYERS") + { treeItem->setBackground(1, lfp_brush); + } else if (arup_statuses.at(n_area) == "CASING") + { treeItem->setBackground(1, casing_brush); + } else if (arup_statuses.at(n_area) == "RECESS") + { treeItem->setBackground(1, recess_brush); + } else if (arup_statuses.at(n_area) == "RP") + { treeItem->setBackground(1, rp_brush); + } else if (arup_statuses.at(n_area) == "GAMING") + { treeItem->setBackground(1, gaming_brush); + } } } - else { + else + { treeItem->setBackground(1, free_brush); } ++n_listed_areas; } - while (ui_area_list->topLevelItemCount() > n_listed_areas) { - ui_area_list->takeTopLevelItem(ui_area_list->topLevelItemCount()-1); + while (ui_area_list->topLevelItemCount() > n_listed_areas) + { + ui_area_list->takeTopLevelItem(ui_area_list->topLevelItemCount() - 1); } - if (ui_music_search->text() != "") { + if (ui_music_search->text() != "") + { on_music_search_edited(ui_music_search->text()); } } -void Courtroom::debug_message_handler(QtMsgType type, const QMessageLogContext &context, - const QString &msg) +void Courtroom::debug_message_handler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { Q_UNUSED(context); - const QMap colors = { - {QtDebugMsg, "debug"}, - {QtInfoMsg, "info"}, - {QtWarningMsg, "warn"}, - {QtCriticalMsg, "critical"}, - {QtFatalMsg, "fatal"} - }; + const QMap colors = {{QtDebugMsg, "debug"}, {QtInfoMsg, "info"}, {QtWarningMsg, "warn"}, {QtCriticalMsg, "critical"}, {QtFatalMsg, "fatal"}}; const QString color_id = QString("debug_log_%1_color").arg(colors.value(type, "info")); - ui_debug_log->append_chatmessage( - colors.value(type, "info"), msg, - QString(), ao_app->get_color(color_id, "courtroom_fonts.ini").name()); -} - -void Courtroom::append_debug_message(QString f_message) -{ - ui_debug_log->append_chatmessage( - QString(), f_message, - ao_app->get_color("debug_log_color", "courtroom_fonts.ini").name()); + ui_debug_log->append_chatmessage(colors.value(type, "info"), msg, QString(), ao_app->get_color(color_id, "courtroom_fonts.ini").name()); } -void Courtroom::append_server_chatmessage(QString p_name, QString p_message, - QString p_color) +void Courtroom::append_server_chatmessage(QString p_name, QString p_message, QString p_color) { QString color = "#000000"; if (p_color == "0") - color = ao_app->get_color("ms_chatlog_sender_color", "courtroom_fonts.ini") - .name(); + { + color = ao_app->get_color("ms_chatlog_sender_color", "courtroom_fonts.ini").name(); + } if (p_color == "1") - color = - ao_app->get_color("server_chatlog_sender_color", "courtroom_fonts.ini") - .name(); - if (!ao_app->auth_packet_supported && p_message == "Logged in as a moderator.") { + { + color = ao_app->get_color("server_chatlog_sender_color", "courtroom_fonts.ini").name(); + } + if (!ao_app->auth_packet_supported && p_message == "Logged in as a moderator.") + { // Emulate successful authentication on_authentication_state_received(1); } ui_server_chatlog->append_chatmessage(p_name, p_message, color); - if (Options::getInstance().logToTextFileEnabled() && !ao_app->log_filename.isEmpty()) { + if (Options::getInstance().logToTextFileEnabled() && !ao_app->log_filename.isEmpty()) + { QString full = "[OOC][" + QDateTime::currentDateTimeUtc().toString() + "] " + p_name + ": " + p_message; ao_app->append_to_file(full, ao_app->log_filename, true); } @@ -1814,27 +1898,46 @@ void Courtroom::append_server_chatmessage(QString p_name, QString p_message, void Courtroom::on_authentication_state_received(int p_state) { - if (p_state >= 1) { + if (p_state >= 1) + { ui_guard->show(); append_server_chatmessage(tr("CLIENT"), tr("You were granted the Disable Modcalls button."), "1"); } - else if (p_state == 0) { + else if (p_state == 0) + { append_server_chatmessage(tr("CLIENT"), tr("Login unsuccessful."), "1"); } - else if (p_state < 0) { + else if (p_state < 0) + { ui_guard->hide(); append_server_chatmessage(tr("CLIENT"), tr("You were logged out."), "1"); } } +Courtroom::JudgeState Courtroom::get_judge_state() +{ + return judge_state; +} + +void Courtroom::set_judge_state(JudgeState new_state) +{ + judge_state = new_state; +} + +void Courtroom::set_judge_buttons() +{ + show_judge_controls(ao_app->get_pos_is_judge(current_side)); +} + void Courtroom::on_chat_return_pressed() { if (is_muted) + { return; + } ui_ic_chat_message->blockSignals(true); - QTimer::singleShot(Options::getInstance().chatRateLimit(), this, - [this] { ui_ic_chat_message->blockSignals(false); }); + QTimer::singleShot(Options::getInstance().chatRateLimit(), this, [this] { ui_ic_chat_message->blockSignals(false); }); // MS# // deskmod# // pre-emote# @@ -1865,24 +1968,38 @@ void Courtroom::on_chat_return_pressed() int f_emote_mod = ao_app->get_emote_mod(current_char, current_emote); if (current_side == "") + { f_side = ao_app->get_char_side(current_char); + } else + { f_side = current_side; + } int f_desk_mod = DESK_SHOW; - if (ao_app->desk_mod_supported) { + if (ao_app->desk_mod_supported) + { f_desk_mod = ao_app->get_desk_mod(current_char, current_emote); - if (!ao_app->expanded_desk_mods_supported) { + if (!ao_app->expanded_desk_mods_supported) + { if (f_desk_mod == DESK_PRE_ONLY_EX || f_desk_mod == DESK_PRE_ONLY) + { f_desk_mod = DESK_HIDE; + } else if (f_desk_mod == DESK_EMOTE_ONLY_EX || f_desk_mod == DESK_EMOTE_ONLY) + { f_desk_mod = DESK_SHOW; + } } if (f_desk_mod == -1 && (f_emote_mod == 5 || f_emote_mod == 6)) // workaround for inis that broke after deprecating "chat" + { f_desk_mod = DESK_HIDE; + } else if (f_desk_mod == -1) + { f_desk_mod = DESK_SHOW; + } } packet_contents.append(QString::number(f_desk_mod)); @@ -1891,55 +2008,67 @@ void Courtroom::on_chat_return_pressed() QString f_sfx = "1"; int f_sfx_delay = get_char_sfx_delay(); -// EMOTE MOD OVERRIDES: + // EMOTE MOD OVERRIDES: // Emote_mod 2 is only used by objection check later, having it in the char.ini does nothing - if (f_emote_mod == 2) { + if (f_emote_mod == 2) + { f_emote_mod = PREANIM; } // No clue what emote_mod 3 is even supposed to be. - if (f_emote_mod == 3) { + if (f_emote_mod == 3) + { f_emote_mod = IDLE; } // Emote_mod 4 seems to be a legacy bugfix that just refers it to emote_mod 5 which is zoom emote - if (f_emote_mod == 4) { + if (f_emote_mod == 4) + { f_emote_mod = ZOOM; } // If we have "pre" on, and immediate is not checked - if (ui_pre->isChecked() && !ui_immediate->isChecked()) { + if (ui_pre->isChecked() && !ui_immediate->isChecked()) + { // Turn idle into preanim - if (f_emote_mod == IDLE) { + if (f_emote_mod == IDLE) + { f_emote_mod = PREANIM; } // Turn zoom into preanim zoom - else if (f_emote_mod == ZOOM && ao_app->prezoom_supported) { + else if (f_emote_mod == ZOOM && ao_app->prezoom_supported) + { f_emote_mod = PREANIM_ZOOM; } // Play the sfx f_sfx = get_char_sfx(); } // If we have "pre" off, or immediate is checked - else { + else + { // Turn preanim into idle - if (f_emote_mod == PREANIM) { + if (f_emote_mod == PREANIM) + { f_emote_mod = IDLE; } // Turn preanim zoom into zoom - else if (f_emote_mod == PREANIM_ZOOM) { + else if (f_emote_mod == PREANIM_ZOOM) + { f_emote_mod = ZOOM; } // Play the sfx if pre is checked - if (ui_pre->isChecked()) { + if (ui_pre->isChecked()) + { f_sfx = get_char_sfx(); } } // Custom sfx override via sound list dropdown. - if (!custom_sfx.isEmpty() || ui_sfx_dropdown->currentIndex() != 0) { + if (!custom_sfx.isEmpty() || ui_sfx_dropdown->currentIndex() != 0) + { f_sfx = get_char_sfx(); // We have a custom sfx but we're on idle emotes. // Turn them into pre so the sound plays if client setting sfx_on_idle is enabled. - if (Options::getInstance().playSelectedSFXOnIdle() && (f_emote_mod == IDLE || f_emote_mod == ZOOM)) { + if (Options::getInstance().playSelectedSFXOnIdle() && (f_emote_mod == IDLE || f_emote_mod == ZOOM)) + { // We turn idle into preanim, but make it not send a pre animation f_pre = ""; // Set sfx delay to 0 so the sfx plays immediately @@ -1967,40 +2096,56 @@ void Courtroom::on_chat_return_pressed() QString f_obj_state; - if ((objection_state == 4 && !ao_app->custom_objection_supported) || - (objection_state < 0)) + if ((objection_state == 4 && !ao_app->custom_objection_supported) || (objection_state < 0)) + { f_obj_state = "0"; - else if (objection_custom != "" && objection_state == 4) { - f_obj_state = QString::number(objection_state) + "&" + - objection_custom; // we add the name of the objection so the - // packet is like: 4&(name of custom obj) + } + else if (objection_custom != "" && objection_state == 4) + { + f_obj_state = QString::number(objection_state) + "&" + objection_custom; // we add the name of the objection so the + // packet is like: 4&(name of custom obj) } else + { f_obj_state = QString::number(objection_state); + } // We're doing an Objection (custom objections not yet supported) if (objection_state == 2 && Options::getInstance().objectionStopMusic()) + { music_stop(true); + } packet_contents.append(f_obj_state); if (is_presenting_evidence) + { // the evidence index is shifted by 1 because 0 is no evidence per legacy // standards besides, older clients crash if we pass -1 packet_contents.append(QString::number(current_evidence + 1)); + } else + { packet_contents.append("0"); + } QString f_flip; - if (ao_app->flipping_supported) { + if (ao_app->flipping_supported) + { if (ui_flip->isChecked()) + { f_flip = "1"; + } else + { f_flip = "0"; + } } else + { f_flip = QString::number(m_cid); + } packet_contents.append(f_flip); @@ -2009,78 +2154,96 @@ void Courtroom::on_chat_return_pressed() QString f_text_color; if (text_color < 0) + { f_text_color = "0"; + } else if (text_color >= max_colors) + { f_text_color = "0"; + } else + { f_text_color = QString::number(text_color); + } packet_contents.append(f_text_color); // If the server we're on supports CCCC stuff, we should use it! - if (ao_app->cccc_ic_supported) { + if (ao_app->cccc_ic_supported) + { // If there is a showname entered, use that -- else, just send an empty // packet-part. - if (!ui_ic_chat_name->text().isEmpty()) { + if (!ui_ic_chat_name->text().isEmpty()) + { packet_contents.append(ui_ic_chat_name->text()); } - else { + else + { packet_contents.append(""); } // Similarly, we send over whom we're paired with, unless we have chosen // ourselves. Or a charid of -1 or lower, through some means. - if (other_charid > -1 && other_charid != m_cid) { + if (other_charid > -1 && other_charid != m_cid) + { QString packet = QString::number(other_charid); if (ao_app->effects_supported) // Only servers with effects enabled will - // support pair reordering + // support pair reordering + { packet += "^" + QString::number(pair_order); + } packet_contents.append(packet); } - else { + else + { packet_contents.append("-1"); } // Send the offset as it's gonna be used regardless - if(ao_app->y_offset_supported) - packet_contents.append(QString::number(char_offset) + "&" + QString::number(char_vert_offset)); + if (ao_app->y_offset_supported) + { + packet_contents.append(QString::number(char_offset) + "&" + QString::number(char_vert_offset)); + } else - packet_contents.append(QString::number(char_offset)); + { + packet_contents.append(QString::number(char_offset)); + } // Finally, we send over if we want our pres to not interrupt. - if (ui_immediate->isChecked() && ui_pre->isChecked()) { + if (ui_immediate->isChecked() && ui_pre->isChecked()) + { packet_contents.append("1"); } - else { + else + { packet_contents.append("0"); } } // If the server we're on supports Looping SFX and Screenshake, use it if the // emote uses it. - if (ao_app->looping_sfx_supported) { - packet_contents.append( - ao_app->get_sfx_looping(current_char, current_emote)); + if (ao_app->looping_sfx_supported) + { + packet_contents.append(ao_app->get_sfx_looping(current_char, current_emote)); packet_contents.append(QString::number(screenshake_state)); QString pre_emote = ao_app->get_pre_emote(current_char, current_emote); QString emote = ao_app->get_emote(current_char, current_emote); QStringList emotes_to_check = {pre_emote, "(b)" + emote, "(a)" + emote}; - QStringList effects_to_check = {"_FrameScreenshake", "_FrameRealization", - "_FrameSFX"}; + QStringList effects_to_check = {"_FrameScreenshake", "_FrameRealization", "_FrameSFX"}; - foreach (QString f_effect, effects_to_check) { + foreach (QString f_effect, effects_to_check) + { QString packet; - foreach (QString f_emote, emotes_to_check) { + foreach (QString f_emote, emotes_to_check) + { packet += f_emote; - if (Options::getInstance().networkedFrameSfxEnabled()) { - QString sfx_frames = - ao_app - ->read_ini_tags( - ao_app->get_character_path(current_char, "char.ini"), - f_emote.append(f_effect)) - .join("|"); + if (Options::getInstance().networkedFrameSfxEnabled()) + { + QString sfx_frames = ao_app->read_ini_tags(ao_app->get_character_path(current_char, "char.ini"), f_emote.append(f_effect)).join("|"); if (sfx_frames != "") + { packet += "|" + sfx_frames; + } } packet += "^"; } @@ -2088,22 +2251,24 @@ void Courtroom::on_chat_return_pressed() } } - if (ao_app->additive_text_supported) { + if (ao_app->additive_text_supported) + { packet_contents.append(ui_additive->isChecked() ? "1" : "0"); } - if (ao_app->effects_supported) { - QString p_effect_folder = - ao_app->read_char_ini(current_char, "effects", "Options"); - QString fx_sound = - ao_app->get_effect_property(effect, current_char, p_effect_folder, "sound"); + if (ao_app->effects_supported) + { + QString p_effect_folder = ao_app->read_char_ini(current_char, "effects", "Options"); + QString fx_sound = ao_app->get_effect_property(effect, current_char, p_effect_folder, "sound"); // Don't overlap the two sfx - if (!ui_pre->isChecked() && (!custom_sfx.isEmpty() || ui_sfx_dropdown->currentIndex() == 1)) { + if (!ui_pre->isChecked() && (!custom_sfx.isEmpty() || ui_sfx_dropdown->currentIndex() == 1)) + { fx_sound = "0"; } packet_contents.append(effect + "|" + p_effect_folder + "|" + fx_sound); - if (!Options::getInstance().clearEffectsDropdownOnPlayEnabled() && !ao_app->get_effect_property(effect, current_char, p_effect_folder, "sticky").startsWith("true")) { + if (!Options::getInstance().clearEffectsDropdownOnPlayEnabled() && !ao_app->get_effect_property(effect, current_char, p_effect_folder, "sticky").startsWith("true")) + { ui_effects_dropdown->blockSignals(true); ui_effects_dropdown->setCurrentIndex(0); ui_effects_dropdown->blockSignals(false); @@ -2111,14 +2276,16 @@ void Courtroom::on_chat_return_pressed() } } - ao_app->send_server_packet(new AOPacket("MS", packet_contents)); + ao_app->send_server_packet(AOPacket("MS", packet_contents)); } void Courtroom::reset_ui() { ui_ic_chat_message->clear(); if (ui_additive->isChecked()) + { ui_ic_chat_message->insert(" "); + } objection_state = 0; realization_state = 0; screenshake_state = 0; @@ -2132,7 +2299,8 @@ void Courtroom::reset_ui() ui_evidence_present->set_image("present"); // If sticky sounds is disabled and we either have SFX on Idle enabled, or our Preanim checkbox is checked - if (!Options::getInstance().clearSoundsDropdownOnPlayEnabled() && (Options::getInstance().playSelectedSFXOnIdle() || ui_pre->isChecked())) { + if (!Options::getInstance().clearSoundsDropdownOnPlayEnabled() && (Options::getInstance().playSelectedSFXOnIdle() || ui_pre->isChecked())) + { // Reset the SFX Dropdown to "Default" ui_sfx_dropdown->setCurrentIndex(0); ui_sfx_remove->hide(); @@ -2140,8 +2308,10 @@ void Courtroom::reset_ui() } // If sticky preanims is disabled if (!Options::getInstance().clearPreOnPlayEnabled()) + { // Turn off our Preanim checkbox ui_pre->setChecked(false); + } } void Courtroom::chatmessage_enqueue(QStringList p_contents) @@ -2150,21 +2320,29 @@ void Courtroom::chatmessage_enqueue(QStringList p_contents) // amount of packages, we'll check if it has at least 15. // That was the original chatmessage_size. if (p_contents.size() < MS_MINIMUM) + { return; + } // Check the validity of the character ID we got int f_char_id = p_contents[CHAR_ID].toInt(); if (f_char_id < -1 || f_char_id >= char_list.size()) + { return; + } // We muted this char, gtfo if (mute_map.value(f_char_id)) + { return; + } // Use null showname if packet does not support 2.6+ extensions QString showname = QString(); if (SHOWNAME < p_contents.size()) + { showname = p_contents[SHOWNAME]; + } // if the char ID matches our client's char ID (most likely, this is our message coming back to us) bool sender = f_char_id == m_cid; @@ -2173,23 +2351,23 @@ void Courtroom::chatmessage_enqueue(QStringList p_contents) LogMode log_mode = IO_ONLY; // User-created blankpost - if (p_contents[MESSAGE].trimmed().isEmpty()) { + if (p_contents[MESSAGE].trimmed().isEmpty()) + { // Turn it into true blankpost p_contents[MESSAGE] = ""; } // If we determine we sent this message - if (sender) { + if (sender) + { // Reset input UI elements, clear input box, etc. reset_ui(); } // If we determine we sent this message, or we have desync enabled - if (sender || Options::getInstance().desynchronisedLogsEnabled()) { + if (sender || Options::getInstance().desynchronisedLogsEnabled()) + { // Initialize operation "message queue ghost" - log_chatmessage(p_contents[MESSAGE], p_contents[CHAR_ID].toInt(), - p_contents[SHOWNAME], p_contents[CHAR_NAME], - p_contents[OBJECTION_MOD], p_contents[EVIDENCE_ID].toInt(), - p_contents[TEXT_COLOR].toInt(), QUEUED, sender || Options::getInstance().desynchronisedLogsEnabled()); + log_chatmessage(p_contents[MESSAGE], p_contents[CHAR_ID].toInt(), p_contents[SHOWNAME], p_contents[CHAR_NAME], p_contents[OBJECTION_MOD], p_contents[EVIDENCE_ID].toInt(), p_contents[TEXT_COLOR].toInt(), QUEUED, sender || Options::getInstance().desynchronisedLogsEnabled()); } bool is_objection = false; @@ -2199,7 +2377,8 @@ void Courtroom::chatmessage_enqueue(QStringList p_contents) int objection_mod = p_contents[OBJECTION_MOD].split("&")[0].toInt(); is_objection = objection_mod >= 1 && objection_mod <= 5; // If this is an objection, nuke the queue - if (is_objection) { + if (is_objection) + { text_queue_timer->stop(); skip_chatmessage_queue(); } @@ -2214,7 +2393,9 @@ void Courtroom::chatmessage_enqueue(QStringList p_contents) bool start_queue = Options::getInstance().textStayTime() <= 0 || (text_state >= 2 && !text_queue_timer->isActive()); // Objections also immediately play the message if (start_queue || is_objection) + { chatmessage_dequeue(); // Process the message instantly + } // Otherwise, since a message is being parsed, chat_tick() should be called which will call dequeue once it's done. } @@ -2222,18 +2403,23 @@ void Courtroom::chatmessage_dequeue() { // Nothing to parse in the queue if (chatmessage_queue.isEmpty()) + { return; + } // Stop the text queue timer if (text_queue_timer->isActive()) + { text_queue_timer->stop(); + } unpack_chatmessage(chatmessage_queue.dequeue()); } void Courtroom::skip_chatmessage_queue() { - while (!chatmessage_queue.isEmpty()) { + while (!chatmessage_queue.isEmpty()) + { QStringList p_contents = chatmessage_queue.dequeue(); // if the char ID matches our client's char ID (most likely, this is our message coming back to us) bool sender = Options::getInstance().desynchronisedLogsEnabled() || p_contents[CHAR_ID].toInt() == m_cid; @@ -2243,17 +2429,19 @@ void Courtroom::skip_chatmessage_queue() void Courtroom::unpack_chatmessage(QStringList p_contents) { - for (int n_string = 0; n_string < MS_MAXIMUM; ++n_string) { + for (int n_string = 0; n_string < MS_MAXIMUM; ++n_string) + { // Note that we have added stuff that vanilla clients and servers simply // won't send. So now, we have to check if the thing we want even exists // amongst the packet's content. We also have to check if the server even // supports CCCC's IC features, or if it's just japing us. Also, don't // forget! A size 15 message will have indices from 0 to 14. - if (n_string < p_contents.size() && - (n_string < MS_MINIMUM || ao_app->cccc_ic_supported)) { + if (n_string < p_contents.size() && (n_string < MS_MINIMUM || ao_app->cccc_ic_supported)) + { m_chatmessage[n_string] = p_contents.at(n_string); } - else { + else + { m_chatmessage[n_string] = ""; } } @@ -2277,145 +2465,173 @@ void Courtroom::unpack_chatmessage(QStringList p_contents) ui_vp_evidence_display->reset(); // This chat msg is not objection so we're not waiting on the objection animation to finish to display the character. if (!handle_objection()) + { handle_ic_message(); + } } void Courtroom::log_chatmessage(QString f_message, int f_char_id, QString f_showname, QString f_char, QString f_objection_mod, int f_evi_id, int f_color, LogMode f_log_mode, bool sender) { // Display name will use the showname QString f_displayname = f_showname; - if (f_char_id != -1) { + if (f_char_id != -1) + { // Grab the char.ini showname f_showname = ao_app->get_showname(char_list.at(f_char_id).name); } // If display name is just whitespace, use the char.ini showname. if (f_displayname.trimmed().isEmpty()) + { f_displayname = f_showname; + } bool ghost = f_log_mode == QUEUED; // Detect if we're trying to log a blankpost - bool blankpost = (f_log_mode != IO_ONLY && // if we're not in I/O only mode, - f_message.isEmpty() && // our current message is a blankpost, - !ic_chatlog_history.isEmpty() && // the chat log isn't empty, - last_ic_message == f_displayname + ":" && // the chat log's last message is a blank post, and - last_ic_message.mid(0, last_ic_message.lastIndexOf(":")) == f_displayname); // the blankpost's showname is the same as ours + bool blankpost = (f_log_mode != IO_ONLY && // if we're not in I/O only mode, + f_message.isEmpty() && // our current message is a blankpost, + !ic_chatlog_history.isEmpty() && // the chat log isn't empty, + last_ic_message == f_displayname + ":" && // the chat log's last message is a blank post, and + last_ic_message.mid(0, last_ic_message.lastIndexOf(":")) == f_displayname); // the blankpost's showname is the same as ours bool selfname = f_char_id == m_cid; - if (log_ic_actions) { + if (log_ic_actions) + { // Check if a custom objection is in use int objection_mod = 0; - QString custom_objection = ""; - if (f_objection_mod.contains("4&")) { + QString custom_objection; + if (f_objection_mod.contains("4&")) + { objection_mod = 4; - custom_objection = f_objection_mod.split( - "4&")[1]; // takes the name of custom objection. + custom_objection = f_objection_mod.split("4&")[1]; // takes the name of custom objection. } - else { + else + { objection_mod = f_objection_mod.toInt(); } - //QString f_custom_theme = ao_app->get_chat(f_char); - if (objection_mod <= 4 && objection_mod >= 1) { + // QString f_custom_theme = ao_app->get_chat(f_char); + if (objection_mod <= 4 && objection_mod >= 1) + { blankpost = false; QString shout_message; - switch (objection_mod) { + switch (objection_mod) + { case 1: shout_message = ao_app->read_char_ini(f_char, "holdit_message", "Shouts"); if (shout_message == "") + { shout_message = tr("HOLD IT!"); + } break; case 2: shout_message = ao_app->read_char_ini(f_char, "objection_message", "Shouts"); if (shout_message == "") + { shout_message = tr("OBJECTION!"); + } break; case 3: shout_message = ao_app->read_char_ini(f_char, "takethat_message", "Shouts"); if (shout_message == "") + { shout_message = tr("TAKE THAT!"); + } break; // case 4 is AO2 only case 4: - if (custom_objection != "") { + if (custom_objection != "") + { shout_message = ao_app->read_char_ini(f_char, custom_objection.split('.')[0] + "_message", "Shouts"); if (shout_message == "") + { shout_message = custom_objection.split('.')[0]; + } } - else { + else + { shout_message = ao_app->read_char_ini(f_char, "custom_message", "Shouts"); if (shout_message == "") + { shout_message = tr("CUSTOM OBJECTION!"); + } } break; } - switch (f_log_mode) { - case IO_ONLY: - log_ic_text(f_char, f_displayname, shout_message, tr("shouts"), 0, selfname); - break; - case DISPLAY_AND_IO: - log_ic_text(f_char, f_displayname, shout_message, tr("shouts")); - append_ic_text(shout_message, f_displayname, tr("shouts"), - 0, selfname, QDateTime::currentDateTime(), false); - break; - case DISPLAY_ONLY: - case QUEUED: - if (!ghost && sender) - pop_ic_ghost(); - append_ic_text(shout_message, f_displayname, tr("shouts"), - 0, selfname, QDateTime::currentDateTime(), ghost); - break; + switch (f_log_mode) + { + case IO_ONLY: + log_ic_text(f_char, f_displayname, shout_message, tr("shouts"), 0, selfname); + break; + case DISPLAY_AND_IO: + log_ic_text(f_char, f_displayname, shout_message, tr("shouts")); + append_ic_text(shout_message, f_displayname, tr("shouts"), 0, selfname, QDateTime::currentDateTime(), false); + break; + case DISPLAY_ONLY: + case QUEUED: + if (!ghost && sender) + { + pop_ic_ghost(); + } + append_ic_text(shout_message, f_displayname, tr("shouts"), 0, selfname, QDateTime::currentDateTime(), ghost); + break; } } // If the evidence ID is in the valid range - if (f_evi_id > 0 && f_evi_id <= local_evidence_list.size()) { + if (f_evi_id > 0 && f_evi_id <= local_evidence_list.size()) + { blankpost = false; // Obtain the evidence name QString f_evi_name = local_evidence_list.at(f_evi_id - 1).name; - switch (f_log_mode) { - case IO_ONLY: - log_ic_text(f_showname, f_displayname, f_evi_name, tr("has presented evidence"), 0, selfname); - break; - case DISPLAY_AND_IO: - log_ic_text(f_showname, f_displayname, f_evi_name, tr("has presented evidence")); - append_ic_text(f_evi_name, f_displayname, tr("has presented evidence"), - 0, selfname, QDateTime::currentDateTime(), false); - break; - case DISPLAY_ONLY: - case QUEUED: - if (!ghost && sender) - pop_ic_ghost(); - append_ic_text(f_evi_name, f_displayname, tr("has presented evidence"), - 0, selfname, QDateTime::currentDateTime(), ghost); - break; + switch (f_log_mode) + { + case IO_ONLY: + log_ic_text(f_showname, f_displayname, f_evi_name, tr("has presented evidence"), 0, selfname); + break; + case DISPLAY_AND_IO: + log_ic_text(f_showname, f_displayname, f_evi_name, tr("has presented evidence")); + append_ic_text(f_evi_name, f_displayname, tr("has presented evidence"), 0, selfname, QDateTime::currentDateTime(), false); + break; + case DISPLAY_ONLY: + case QUEUED: + if (!ghost && sender) + { + pop_ic_ghost(); + } + append_ic_text(f_evi_name, f_displayname, tr("has presented evidence"), 0, selfname, QDateTime::currentDateTime(), ghost); + break; } } } // Do not display anything on a repeated blankpost if it's not a ghost - if (blankpost && !ghost) { + if (blankpost && !ghost) + { // Don't forget to clear the ghost if it's us if (sender) + { pop_ic_ghost(); + } return; } - switch (f_log_mode) { - case IO_ONLY: - log_ic_text(f_showname, f_displayname, f_message, "", f_color, selfname); - break; - case DISPLAY_AND_IO: - log_ic_text(f_showname, f_displayname, f_message, "", f_color, selfname); - append_ic_text(f_message, f_displayname, "", - f_color, selfname, QDateTime::currentDateTime(), false); - break; - case DISPLAY_ONLY: - case QUEUED: - if (!ghost && sender) - pop_ic_ghost(); - append_ic_text(f_message, f_displayname, "", - f_color, selfname, QDateTime::currentDateTime(), ghost); - break; + switch (f_log_mode) + { + case IO_ONLY: + log_ic_text(f_showname, f_displayname, f_message, "", f_color, selfname); + break; + case DISPLAY_AND_IO: + log_ic_text(f_showname, f_displayname, f_message, "", f_color, selfname); + append_ic_text(f_message, f_displayname, "", f_color, selfname, QDateTime::currentDateTime(), false); + break; + case DISPLAY_ONLY: + case QUEUED: + if (!ghost && sender) + { + pop_ic_ghost(); + } + append_ic_text(f_message, f_displayname, "", f_color, selfname, QDateTime::currentDateTime(), ghost); + break; } } @@ -2423,18 +2639,20 @@ bool Courtroom::handle_objection() { // Check if a custom objection is in use int objection_mod = 0; - QString custom_objection = ""; - if (m_chatmessage[OBJECTION_MOD].contains("4&")) { + QString custom_objection; + if (m_chatmessage[OBJECTION_MOD].contains("4&")) + { objection_mod = 4; - custom_objection = m_chatmessage[OBJECTION_MOD].split( - "4&")[1]; // takes the name of custom objection. + custom_objection = m_chatmessage[OBJECTION_MOD].split("4&")[1]; // takes the name of custom objection. } - else { + else + { objection_mod = m_chatmessage[OBJECTION_MOD].toInt(); } // if an objection is used - if (objection_mod <= 4 && objection_mod >= 1) { + if (objection_mod <= 4 && objection_mod >= 1) + { ui_vp_chatbox->setVisible(chatbox_always_show); ui_vp_message->setVisible(chatbox_always_show); ui_vp_chat_arrow->setVisible(chatbox_always_show); @@ -2442,48 +2660,44 @@ bool Courtroom::handle_objection() ui_vp_objection->set_static_duration(shout_static_time); ui_vp_objection->set_max_duration(shout_max_time); QString filename; - switch (objection_mod) { + switch (objection_mod) + { case 1: filename = "holdit_bubble"; - objection_player->play("holdit", m_chatmessage[CHAR_NAME], - ao_app->get_chat(m_chatmessage[CHAR_NAME])); + objection_player->play("holdit", m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); break; case 2: filename = "objection_bubble"; - objection_player->play("objection", m_chatmessage[CHAR_NAME], - ao_app->get_chat(m_chatmessage[CHAR_NAME])); + objection_player->play("objection", m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); break; case 3: filename = "takethat_bubble"; - objection_player->play("takethat", m_chatmessage[CHAR_NAME], - ao_app->get_chat(m_chatmessage[CHAR_NAME])); + objection_player->play("takethat", m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); break; // case 4 is AO2 only case 4: - if (custom_objection != "") { + if (custom_objection != "") + { filename = "custom_objections/" + custom_objection.left(custom_objection.lastIndexOf(".")); - objection_player->play(filename, - m_chatmessage[CHAR_NAME], - ao_app->get_chat(m_chatmessage[CHAR_NAME])); + objection_player->play(filename, m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); } - else { + else + { filename = "custom"; - objection_player->play( - "custom", m_chatmessage[CHAR_NAME], - ao_app->get_chat(m_chatmessage[CHAR_NAME])); + objection_player->play("custom", m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); } break; m_chatmessage[EMOTE_MOD] = QChar(PREANIM); } - ui_vp_objection->load_image( - filename, m_chatmessage[CHAR_NAME], - ao_app->get_chat(m_chatmessage[CHAR_NAME])); + ui_vp_objection->load_image(filename, m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); sfx_player->clear(); // Objection played! Cut all sfx. ui_vp_player_char->set_play_once(true); return true; } if (m_chatmessage[EMOTE] != "") + { display_character(); + } return false; } @@ -2499,25 +2713,27 @@ void Courtroom::display_character() ui_vp_message->hide(); ui_vp_chatbox->setVisible(chatbox_always_show); // Show it if chatbox always shows - if (Options::getInstance().characterStickerEnabled() && chatbox_always_show) { + if (Options::getInstance().characterStickerEnabled() && chatbox_always_show) + { ui_vp_sticker->load_image(m_chatmessage[CHAR_NAME]); } // Hide the face sticker - else { + else + { ui_vp_sticker->stop(); } // Arrange the netstrings of the frame SFX for the character to know about - if (!m_chatmessage[FRAME_SFX].isEmpty() && - Options::getInstance().networkedFrameSfxEnabled()) { + if (!m_chatmessage[FRAME_SFX].isEmpty() && Options::getInstance().networkedFrameSfxEnabled()) + { // ORDER IS IMPORTANT!! - QStringList netstrings = {m_chatmessage[FRAME_SCREENSHAKE], - m_chatmessage[FRAME_REALIZATION], - m_chatmessage[FRAME_SFX]}; - ui_vp_player_char->network_strings = netstrings; + QStringList netstrings = {m_chatmessage[FRAME_SCREENSHAKE], m_chatmessage[FRAME_REALIZATION], m_chatmessage[FRAME_SFX]}; + ui_vp_player_char->set_network_string(netstrings); } else - ui_vp_player_char->network_strings.clear(); + { + ui_vp_player_char->set_network_string(QStringList()); + } // Determine if we should flip the character or not ui_vp_player_char->set_flipped(m_chatmessage[FLIP].toInt() == 1); @@ -2528,13 +2744,15 @@ void Courtroom::display_character() void Courtroom::display_pair_character(QString other_charid, QString other_offset) { // If pair information exists - if (!other_charid.isEmpty()) { + if (!other_charid.isEmpty()) + { // Initialize the "ok" bool check to see if the toInt conversion succeeded bool ok; // Grab the charid of the pair int charid = other_charid.split("^")[0].toInt(&ok); // If the charid is an int and is valid... - if (ok && charid > -1) { + if (ok && charid > -1) + { // Show the pair character ui_vp_sideplayer_char->show(); // Obtain the offsets, splitting it up by & char @@ -2542,28 +2760,29 @@ void Courtroom::display_pair_character(QString other_charid, QString other_offse int offset_x; int offset_y; // If we only got one number... - if (offsets.length() <= 1) { + if (offsets.length() <= 1) + { // That's just the X offset. Make Y offset 0. offset_x = other_offset.toInt(); offset_y = 0; } - else { + else + { // We got two numbers, set x and y offsets! offset_x = offsets[0].toInt(); offset_y = offsets[1].toInt(); } // Move pair character according to the offsets - ui_vp_sideplayer_char->move(ui_viewport->width() * offset_x / 100, - ui_viewport->height() * offset_y / 100); + ui_vp_sideplayer_char->move(ui_viewport->width() * offset_x / 100, ui_viewport->height() * offset_y / 100); // Split the charid according to the ^ to determine if we have "ordering" info QStringList args = other_charid.split("^"); - if (args.size() > - 1) // This ugly workaround is so we don't make an extra packet just - // for this purpose. Rewrite pairing when? + if (args.size() > 1) // This ugly workaround is so we don't make an extra packet just + // for this purpose. Rewrite pairing when? { // Change the order of appearance based on the pair order variable int order = args.at(1).toInt(); - switch (order) { + switch (order) + { case 0: // Our character is in front ui_vp_sideplayer_char->stackUnder(ui_vp_player_char); break; @@ -2576,39 +2795,47 @@ void Courtroom::display_pair_character(QString other_charid, QString other_offse } // Flip the pair character if (ao_app->flipping_supported && m_chatmessage[OTHER_FLIP].toInt() == 1) + { ui_vp_sideplayer_char->set_flipped(true); + } else + { ui_vp_sideplayer_char->set_flipped(false); + } // Play the other pair character's idle animation QString filename = "(a)" + m_chatmessage[OTHER_EMOTE]; ui_vp_sideplayer_char->set_play_once(false); - ui_vp_sideplayer_char->load_image(filename, m_chatmessage[OTHER_NAME], - 0, false); - } + ui_vp_sideplayer_char->load_image(filename, m_chatmessage[OTHER_NAME], 0, false); } + } } void Courtroom::handle_emote_mod(int emote_mod, bool p_immediate) { // Deal with invalid emote modifiers - if (emote_mod != IDLE && emote_mod != PREANIM && emote_mod != ZOOM && emote_mod != PREANIM_ZOOM) { + if (emote_mod != IDLE && emote_mod != PREANIM && emote_mod != ZOOM && emote_mod != PREANIM_ZOOM) + { // If emote mod is 4... - if (emote_mod == 4) { + if (emote_mod == 4) + { emote_mod = PREANIM_ZOOM; // Addresses issue with an old bug that sent the wrong - // emote modifier for zoompre + // emote modifier for zoompre } - else if (emote_mod == 2) { + else if (emote_mod == 2) + { // Addresses the deprecated "objection preanim" emote_mod = PREANIM; } - else { + else + { emote_mod = IDLE; // Reset emote mod to 0 } } // Handle the emote mod - switch (emote_mod) { + switch (emote_mod) + { case PREANIM: case PREANIM_ZOOM: // play preanim that makes the chatbox wait for it to finish. @@ -2635,7 +2862,10 @@ void Courtroom::handle_emote_mod(int emote_mod, bool p_immediate) } } -void Courtroom::objection_done() { handle_ic_message(); } +void Courtroom::objection_done() +{ + handle_ic_message(); +} void Courtroom::handle_ic_message() { @@ -2644,7 +2874,8 @@ void Courtroom::handle_ic_message() int emote_mod = m_chatmessage[EMOTE_MOD].toInt(); bool immediate = m_chatmessage[IMMEDIATE].toInt() == 1; - if (m_chatmessage[EMOTE] != "") { + if (m_chatmessage[EMOTE] != "") + { // Display our own character display_character(); @@ -2653,7 +2884,8 @@ void Courtroom::handle_ic_message() ui_vp_sideplayer_char->move(0, 0); // If the emote_mod is not zooming - if (emote_mod != ZOOM && emote_mod != PREANIM_ZOOM) { + if (emote_mod != ZOOM && emote_mod != PREANIM_ZOOM) + { // Display the pair character display_pair_character(m_chatmessage[OTHER_CHARID], m_chatmessage[OTHER_OFFSET]); } @@ -2675,30 +2907,32 @@ void Courtroom::handle_ic_message() bool is_objection = objection_mod >= 1 && objection_mod <= 5; // If this is an objection, we'll need to interrupt our current message. if (is_objection) + { text_queue_timer->start(objection_threshold); + } } } void Courtroom::do_screenshake() { if (!Options::getInstance().shakeEnabled()) + { return; + } // This way, the animation is reset in such a way that last played screenshake // would return to its "final frame" properly. This properly resets all UI // elements without having to bother keeping track of "origin" positions. // Works great with the chat text being detached from the chat box! - screenshake_animation_group->setCurrentTime( - screenshake_animation_group->duration()); + screenshake_animation_group->setCurrentTime(screenshake_animation_group->duration()); screenshake_animation_group->clear(); - const QList &affected_list = {ui_vp_background, ui_vp_player_char, - ui_vp_sideplayer_char, ui_vp_chatbox}; + const QList &affected_list = {ui_vp_background, ui_vp_player_char, ui_vp_sideplayer_char, ui_vp_chatbox}; // I would prefer if this was its own "shake" function to be honest. - for (QWidget *ui_element : affected_list) { - QPropertyAnimation *screenshake_animation = - new QPropertyAnimation(ui_element, "pos", this); + for (QWidget *ui_element : affected_list) + { + QPropertyAnimation *screenshake_animation = new QPropertyAnimation(ui_element, "pos", this); QPoint pos_default = QPoint(ui_element->x(), ui_element->y()); int duration = 300; // How long does the screenshake last @@ -2709,7 +2943,8 @@ void Courtroom::do_screenshake() int max_deviation = 7 * (float(ui_viewport->height()) / 192); int maxframes = 15; // duration / frequency; screenshake_animation->setDuration(duration); - for (int frame = 0; frame < maxframes; frame++) { + for (int frame = 0; frame < maxframes; frame++) + { double fraction = double(frame * frequency) / duration; #if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) int rand_x = max_deviation * (2 * (qrand() / (float)RAND_MAX) - 1) + 1; @@ -2731,69 +2966,68 @@ void Courtroom::do_screenshake() void Courtroom::do_flash() { if (!Options::getInstance().effectsEnabled()) + { return; + } QString f_char = m_chatmessage[CHAR_NAME]; QString f_custom_theme = ao_app->get_chat(f_char); do_effect("realization", "", f_char, f_custom_theme); } -void Courtroom::do_effect(QString fx_path, QString fx_sound, QString p_char, - QString p_folder) +void Courtroom::do_effect(QString fx_path, QString fx_sound, QString p_char, QString p_folder) { - if (fx_path == "") { + if (fx_path == "") + { return; } QString effect = ao_app->get_effect(fx_path, p_char, p_folder); - if (effect == "") { + if (effect == "") + { return; } - if (fx_sound != "") { + if (fx_sound != "") + { sfx_player->play(fx_sound); } // Only check if effects are disabled after playing the sound if it exists - if (!Options::getInstance().effectsEnabled()) { + if (!Options::getInstance().effectsEnabled()) + { return; } - ui_vp_effect->transform_mode = ao_app->get_scaling( - ao_app->get_effect_property(fx_path, p_char, p_folder, "scaling")); - ui_vp_effect->stretch = - ao_app->get_effect_property(fx_path, p_char, p_folder, "stretch") - .startsWith("true"); + ui_vp_effect->transform_mode = ao_app->get_scaling(ao_app->get_effect_property(fx_path, p_char, p_folder, "scaling")); + ui_vp_effect->stretch = ao_app->get_effect_property(fx_path, p_char, p_folder, "stretch").startsWith("true"); ui_vp_effect->set_flipped(ao_app->get_effect_property(fx_path, p_char, p_folder, "respect_flip").startsWith("true") && m_chatmessage[FLIP].toInt() == 1); - ui_vp_effect->set_play_once( - false); // The effects themselves dictate whether or not they're looping. - // Static effects will linger. + ui_vp_effect->set_play_once(false); // The effects themselves dictate whether or not they're looping. + // Static effects will linger. - bool looping = - ao_app->get_effect_property(fx_path, p_char, p_folder, "loop") - .startsWith("true"); + bool looping = ao_app->get_effect_property(fx_path, p_char, p_folder, "loop").startsWith("true"); - int max_duration = - ao_app->get_effect_property(fx_path, p_char, p_folder, "max_duration") - .toInt(); + int max_duration = ao_app->get_effect_property(fx_path, p_char, p_folder, "max_duration").toInt(); - bool cull = - ao_app->get_effect_property(fx_path, p_char, p_folder, "cull") - .startsWith("true"); + bool cull = ao_app->get_effect_property(fx_path, p_char, p_folder, "cull").startsWith("true"); // Possible values: "chat", "character", "behind" QString layer = ao_app->get_effect_property(fx_path, p_char, p_folder, "layer").toLower(); - if (layer == "behind"){ + if (layer == "behind") + { ui_vp_effect->setParent(ui_viewport); ui_vp_effect->stackUnder(ui_vp_player_char); } - else if (layer == "character") { + else if (layer == "character") + { ui_vp_effect->setParent(ui_viewport); ui_vp_effect->stackUnder(ui_vp_desk); } - else if (layer == "over") { + else if (layer == "over") + { ui_vp_effect->setParent(ui_viewport); ui_vp_effect->raise(); } - else { // if (layer == "chat") { + else + { // if (layer == "chat") { ui_vp_effect->setParent(this); ui_vp_effect->stackUnder(ui_vp_objection); } @@ -2801,20 +3035,24 @@ void Courtroom::do_effect(QString fx_path, QString fx_sound, QString p_char, int effect_x = 0; int effect_y = 0; // The effect is not parented to viewport, meaning we're overlaying ui elements - if (ui_vp_effect->parentWidget() != ui_viewport) { - //We need to add the viewport as an offset as effects are not bound to it. + if (ui_vp_effect->parentWidget() != ui_viewport) + { + // We need to add the viewport as an offset as effects are not bound to it. effect_x = ui_viewport->x(); effect_y = ui_viewport->y(); } // This effect respects the character offset settings - if (ao_app->get_effect_property(fx_path, p_char, p_folder, "respect_offset") == "true") { + if (ao_app->get_effect_property(fx_path, p_char, p_folder, "respect_offset") == "true") + { QStringList self_offsets = m_chatmessage[SELF_OFFSET].split("&"); int self_offset = self_offsets[0].toInt(); int self_offset_v; - if (self_offsets.length() <= 1) { + if (self_offsets.length() <= 1) + { self_offset_v = 0; } - else { + else + { self_offset_v = self_offsets[1].toInt(); } @@ -2838,21 +3076,23 @@ void Courtroom::play_char_sfx(QString sfx_name) void Courtroom::initialize_chatbox() { - int f_charid = m_chatmessage[CHAR_ID].toInt(); - if (f_charid >= 0 && f_charid < char_list.size() && - (m_chatmessage[SHOWNAME].isEmpty() || !ui_showname_enable->isChecked())) { + if (f_charid >= 0 && f_charid < char_list.size() && (m_chatmessage[SHOWNAME].isEmpty() || !ui_showname_enable->isChecked())) + { QString real_name = char_list.at(f_charid).name; QString f_showname = ao_app->get_showname(real_name); ui_vp_showname->setText(f_showname); } - else { + else + { ui_vp_showname->setText(m_chatmessage[SHOWNAME]); } QString customchar; if (Options::getInstance().customChatboxEnabled()) + { customchar = m_chatmessage[CHAR_NAME]; + } QString p_misc = ao_app->get_chat(customchar); set_size_and_pos(ui_vp_chatbox, "ao2_chatbox", p_misc); @@ -2864,8 +3104,7 @@ void Courtroom::initialize_chatbox() // We detached the text as parent from the chatbox so it doesn't get affected // by the screenshake. - ui_vp_message->move(ui_vp_message->x() + ui_vp_chatbox->x(), - ui_vp_message->y() + ui_vp_chatbox->y()); + ui_vp_message->move(ui_vp_message->x() + ui_vp_chatbox->x(), ui_vp_message->y() + ui_vp_chatbox->y()); ui_vp_message->setTextInteractionFlags(Qt::NoTextInteraction); if (ui_vp_showname->text().trimmed().isEmpty()) // Whitespace showname @@ -2876,31 +3115,32 @@ void Courtroom::initialize_chatbox() { ui_vp_showname->setVisible(true); if (!ui_vp_chatbox->set_image("chat", p_misc)) + { ui_vp_chatbox->set_image("chatbox", p_misc); - + } // Remember to set the showname font before the font metrics check. set_font(ui_vp_showname, "", "showname", customchar); - pos_size_type default_width = ao_app->get_element_dimensions( - "showname", "courtroom_design.ini", p_misc); - int extra_width = - ao_app - ->get_design_element("showname_extra_width", "courtroom_design.ini", - p_misc) - .toInt(); - QString align = ao_app - ->get_design_element("showname_align", - "courtroom_design.ini", p_misc) - .toLower(); + pos_size_type default_width = ao_app->get_element_dimensions("showname", "courtroom_design.ini", p_misc); + int extra_width = ao_app->get_design_element("showname_extra_width", "courtroom_design.ini", p_misc).toInt(); + QString align = ao_app->get_design_element("showname_align", "courtroom_design.ini", p_misc).toLower(); if (align == "right") + { ui_vp_showname->setAlignment(Qt::AlignRight); + } else if (align == "center") + { ui_vp_showname->setAlignment(Qt::AlignHCenter); + } else if (align == "justify") + { ui_vp_showname->setAlignment(Qt::AlignHCenter); + } else + { ui_vp_showname->setAlignment(Qt::AlignLeft); + } QFontMetrics fm(ui_vp_showname->font()); // Gotta support the slow paced ubuntu 18 STUCK IN 5.9.5!! @@ -2909,53 +3149,55 @@ void Courtroom::initialize_chatbox() #else int fm_width = fm.boundingRect((ui_vp_showname->text())).width(); #endif - if (extra_width > 0) { - QString current_path = ui_vp_chatbox->path.left(ui_vp_chatbox->path.lastIndexOf('.')); - if (fm_width > default_width.width && - ui_vp_chatbox->set_image(current_path + - "med")) // This text be big. Let's do some shenanigans. + if (extra_width > 0) + { + QString current_path = ui_vp_chatbox->file_name().left(ui_vp_chatbox->file_name().lastIndexOf('.')); + if (fm_width > default_width.width && ui_vp_chatbox->set_image(current_path + "med")) // This text be big. Let's do some shenanigans. { - ui_vp_showname->resize(default_width.width + extra_width, - ui_vp_showname->height()); - if (fm_width > ui_vp_showname->width() && - ui_vp_chatbox->set_image(current_path + "big")) // Biggest possible size for us. + ui_vp_showname->resize(default_width.width + extra_width, ui_vp_showname->height()); + if (fm_width > ui_vp_showname->width() && ui_vp_chatbox->set_image(current_path + "big")) // Biggest possible size for us. { - ui_vp_showname->resize( - static_cast(default_width.width + (extra_width * 2)), - ui_vp_showname->height()); + ui_vp_showname->resize(static_cast(default_width.width + (extra_width * 2)), ui_vp_showname->height()); } } else + { ui_vp_showname->resize(default_width.width, ui_vp_showname->height()); + } } - else { + else + { ui_vp_showname->resize(default_width.width, ui_vp_showname->height()); } } // This should probably be called only if any change from the last chat // arrow was actually detected. - pos_size_type design_ini_result = ao_app->get_element_dimensions( - "chat_arrow", "courtroom_design.ini", p_misc); - if (design_ini_result.width < 0 || design_ini_result.height < 0) { + pos_size_type design_ini_result = ao_app->get_element_dimensions("chat_arrow", "courtroom_design.ini", p_misc); + if (design_ini_result.width < 0 || design_ini_result.height < 0) + { qWarning() << "could not find \"chat_arrow\" in courtroom_design.ini"; ui_vp_chat_arrow->hide(); } - else { + else + { ui_vp_chat_arrow->move(design_ini_result.x + ui_vp_chatbox->x(), design_ini_result.y + ui_vp_chatbox->y()); - ui_vp_chat_arrow->combo_resize(design_ini_result.width, - design_ini_result.height); + ui_vp_chat_arrow->combo_resize(design_ini_result.width, design_ini_result.height); } QString font_name; QString chatfont = ao_app->get_chat_font(m_chatmessage[CHAR_NAME]); if (chatfont != "") + { font_name = chatfont; + } int f_pointsize = 0; int chatsize = ao_app->get_chat_size(m_chatmessage[CHAR_NAME]); if (chatsize > 0) + { f_pointsize = chatsize; + } set_font(ui_vp_message, "", "message", customchar, font_name, f_pointsize); } @@ -2963,12 +3205,14 @@ void Courtroom::handle_callwords() { // Quickly check through the message for the word_call (callwords) sfx QString f_message = m_chatmessage[MESSAGE]; - //No more file IO on every message. + // No more file IO on every message. QStringList call_words = Options::getInstance().callwords(); // Loop through each word in the call words list - for (const QString &word : qAsConst(call_words)) { + for (const QString &word : qAsConst(call_words)) + { // If our message contains that specific call word - if (f_message.contains(word, Qt::CaseInsensitive)) { + if (f_message.contains(word, Qt::CaseInsensitive)) + { // Play the call word sfx on the modcall_player sound container modcall_player->play(ao_app->get_court_sfx("word_call")); // Make the window flash @@ -2983,15 +3227,14 @@ void Courtroom::display_evidence_image() { QString side = m_chatmessage[SIDE]; int f_evi_id = m_chatmessage[EVIDENCE_ID].toInt(); - if (f_evi_id > 0 && f_evi_id <= local_evidence_list.size()) { + if (f_evi_id > 0 && f_evi_id <= local_evidence_list.size()) + { // shifted by 1 because 0 is no evidence per legacy standards QString f_image = local_evidence_list.at(f_evi_id - 1).image; - //QString f_evi_name = local_evidence_list.at(f_evi_id - 1).name; - // def jud and hlp should display the evidence icon on the RIGHT side - bool is_left_side = !(side == "def" || side == "hlp" || - side == "jud" || side == "jur"); - ui_vp_evidence_display->show_evidence(f_evi_id, f_image, is_left_side, - sfx_player->get_volume()); + // QString f_evi_name = local_evidence_list.at(f_evi_id - 1).name; + // def jud and hlp should display the evidence icon on the RIGHT side + bool is_left_side = !(side == "def" || side == "hlp" || side == "jud" || side == "jur"); + ui_vp_evidence_display->show_evidence(f_evi_id, f_image, is_left_side, sfx_player->get_volume()); } } @@ -3000,7 +3243,8 @@ void Courtroom::handle_ic_speaking() QString side = m_chatmessage[SIDE]; int emote_mod = m_chatmessage[EMOTE_MOD].toInt(); // emote_mod 5 is zoom and emote_mod 6 is zoom w/ preanim. - if (emote_mod == ZOOM || emote_mod == PREANIM_ZOOM) { + if (emote_mod == ZOOM || emote_mod == PREANIM_ZOOM) + { // Hide the desks ui_vp_desk->hide(); @@ -3008,23 +3252,25 @@ void Courtroom::handle_ic_speaking() QString filename; // I still hate this hardcoding. If we're on pos pro, hlp and wit, use prosecution_speedlines. Otherwise, defense_speedlines. if (side == "pro" || side == "hlp" || side == "wit") + { filename = "prosecution_speedlines"; + } else + { filename = "defense_speedlines"; + } // We're zooming, so hide the pair character and ignore pair offsets. This ain't about them. ui_vp_sideplayer_char->hide(); - ui_vp_player_char->move_and_center(0,0); + ui_vp_player_char->move_and_center(0, 0); ui_vp_speedlines->load_image(filename, m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); } // Check if this is a talking color (white text, etc.) - color_is_talking = - color_markdown_talking_list.at(m_chatmessage[TEXT_COLOR].toInt()); + color_is_talking = color_markdown_talking_list.at(m_chatmessage[TEXT_COLOR].toInt()); QString filename; // If color is talking, and our state isn't already talking - if (color_is_talking && text_state == 1 && - anim_state < 2) + if (color_is_talking && text_state == 1 && anim_state < 2) { // Stop the previous animation and play the talking animation ui_vp_player_char->stop(); @@ -3034,8 +3280,7 @@ void Courtroom::handle_ic_speaking() // Set the anim state accordingly anim_state = 2; } - else if (anim_state < 3 && - anim_state != 3) // Set it to idle as we're not on that already + else if (anim_state < 3 && anim_state != 3) // Set it to idle as we're not on that already { // Stop the previous animation and play the idle animation ui_vp_player_char->stop(); @@ -3050,8 +3295,7 @@ void Courtroom::handle_ic_speaking() start_chat_ticking(); } -QString Courtroom::filter_ic_text(QString p_text, bool html, int target_pos, - int default_color) +QString Courtroom::filter_ic_text(QString p_text, bool html, int target_pos, int default_color) { QString p_text_escaped; @@ -3062,35 +3306,44 @@ QString Courtroom::filter_ic_text(QString p_text, bool html, int target_pos, // Text alignment shenanigans. Could make a dropdown for this later, too! QString align; - if (p_text.trimmed().startsWith("~~")) { + if (p_text.trimmed().startsWith("~~")) + { p_text.remove(p_text.indexOf("~~"), 2); - if (target_pos != -1) { + if (target_pos != -1) + { target_pos = qMax(0, target_pos - 2); } align = "center"; } - else if (p_text.trimmed().startsWith("~>")) { + else if (p_text.trimmed().startsWith("~>")) + { p_text.remove(p_text.indexOf("~>"), 2); - if (target_pos != -1) { + if (target_pos != -1) + { target_pos = qMax(0, target_pos - 2); } align = "right"; } - else if (p_text.trimmed().startsWith("<>")) { + else if (p_text.trimmed().startsWith("<>")) + { p_text.remove(p_text.indexOf("<>"), 2); - if (target_pos != -1) { + if (target_pos != -1) + { target_pos = qMax(0, target_pos - 2); } align = "justify"; } // If html is enabled, prepare this text to be all ready for it. - if (html) { + if (html) + { ic_color_stack.push(default_color); QString appendage = ""; if (!align.isEmpty()) + { appendage.prepend("
"); + } p_text_escaped.insert(check_pos_escaped, appendage); check_pos_escaped += appendage.size(); @@ -3099,7 +3352,8 @@ QString Courtroom::filter_ic_text(QString p_text, bool html, int target_pos, // Current issue: does not properly escape html stuff. // Solution: probably parse p_text and export into a different string // separately, perform some mumbo jumbo to properly adjust string indexes. - while (check_pos < p_text.size()) { + while (check_pos < p_text.size()) + { QString f_rest = p_text.right(p_text.size() - check_pos); QTextBoundaryFinder tbf(QTextBoundaryFinder::Grapheme, f_rest); QString f_character; @@ -3109,9 +3363,13 @@ QString Courtroom::filter_ic_text(QString p_text, bool html, int target_pos, tbf.toNextBoundary(); if (tbf.position() == -1) + { f_character = f_rest; + } else + { f_character = f_rest.left(tbf.position()); + } // if (f_character == "&") //oh shit it's probably an escaped html // { @@ -3128,7 +3386,8 @@ QString Courtroom::filter_ic_text(QString p_text, bool html, int target_pos, f_char_bytes = f_char_length = f_character.length(); - if (html) { + if (html) + { f_character = f_character.toHtmlEscaped(); f_char_length = f_character.length(); } @@ -3137,43 +3396,50 @@ QString Courtroom::filter_ic_text(QString p_text, bool html, int target_pos, bool is_end = false; bool skip = false; - if (!parse_escape_seq) { - if (f_character == "\\") { + if (!parse_escape_seq) + { + if (f_character == "\\") + { parse_escape_seq = true; skip = true; } // Nothing related to colors here - else if (f_character == "{" || - f_character == - "}") //|| f_character == "@" || f_character == "$") + else if (f_character == "{" || f_character == "}") //|| f_character == "@" || f_character == "$") { skip = true; } // Parse markdown colors - else { - for (int c = 0; c < max_colors; ++c) { + else + { + for (int c = 0; c < max_colors; ++c) + { // Clear the stored optimization information QString markdown_start = color_markdown_start_list.at(c); QString markdown_end = color_markdown_end_list.at(c); - if (html) { + if (html) + { markdown_start = markdown_start.toHtmlEscaped(); markdown_end = markdown_end.toHtmlEscaped(); } bool markdown_remove = color_markdown_remove_list.at(c); if (markdown_start.isEmpty()) // Not defined + { continue; + } - if (markdown_end.isEmpty() || - markdown_end == markdown_start) //"toggle switch" type + if (markdown_end.isEmpty() || markdown_end == markdown_start) //"toggle switch" type { - if (f_character == markdown_start) { - if (html) { - if (!ic_color_stack.empty() && ic_color_stack.top() == c && - default_color != c) { + if (f_character == markdown_start) + { + if (html) + { + if (!ic_color_stack.empty() && ic_color_stack.top() == c && default_color != c) + { ic_color_stack.pop(); // Cease our coloring is_end = true; } - else { + else + { ic_color_stack.push(c); // Begin our coloring } color_update = true; @@ -3182,15 +3448,17 @@ QString Courtroom::filter_ic_text(QString p_text, bool html, int target_pos, break; // Prevent it from looping forward for whatever reason } } - else if (f_character == markdown_start || - (f_character == markdown_end && !ic_color_stack.empty() && - ic_color_stack.top() == c)) { - if (html) { - if (f_character == markdown_end) { + else if (f_character == markdown_start || (f_character == markdown_end && !ic_color_stack.empty() && ic_color_stack.top() == c)) + { + if (html) + { + if (f_character == markdown_end) + { ic_color_stack.pop(); // Cease our coloring is_end = true; } - else if (f_character == markdown_start) { + else if (f_character == markdown_start) + { ic_color_stack.push(c); // Begin our coloring } color_update = true; @@ -3200,20 +3468,22 @@ QString Courtroom::filter_ic_text(QString p_text, bool html, int target_pos, } } // Parse the newest color stack - if (color_update && (target_pos <= -1 || check_pos < target_pos)) { - if (!parse_escape_seq) { + if (color_update && (target_pos <= -1 || check_pos < target_pos)) + { + if (!parse_escape_seq) + { QString appendage = ""; if (!ic_color_stack.empty()) - appendage += - ""; + { + appendage += ""; + } - if (is_end && !skip) { + if (is_end && !skip) + { p_text_escaped.insert(check_pos_escaped, f_character); // Add that char right now - check_pos_escaped += - f_char_length; // So the closing char is captured too + check_pos_escaped += f_char_length; // So the closing char is captured too skip = true; } p_text_escaped.insert(check_pos_escaped, appendage); @@ -3222,11 +3492,13 @@ QString Courtroom::filter_ic_text(QString p_text, bool html, int target_pos, } } } - else { + else + { if (f_character == "n") // \n, that's a line break son { QString appendage = "
"; - if (!html) { + if (!html) + { // actual newline commented out // appendage = "\n"; // size = 1; //yeah guess what \n is a "single character" @@ -3238,48 +3510,55 @@ QString Courtroom::filter_ic_text(QString p_text, bool html, int target_pos, skip = true; } if (f_character == "s" || f_character == "f" || f_character == "p") // screenshake/flash/pause + { skip = true; + } parse_escape_seq = false; } // Make all chars we're not supposed to see invisible - if (target_pos > -1 && check_pos == target_pos) { - QString appendage = ""; - if (!ic_color_stack.empty()) { + if (target_pos > -1 && check_pos == target_pos) + { + QString appendage; + if (!ic_color_stack.empty()) + { if (!is_end) // Was our last coloring char ending the color stack or nah { // God forgive me for my transgressions but I have refactored this // whole thing about 25 times and having to refactor it again to more // elegantly support this will finally make me go insane. - color_is_talking = - color_markdown_talking_list.at(ic_color_stack.top()); + color_is_talking = color_markdown_talking_list.at(ic_color_stack.top()); } // Clean it up, we're done here while (!ic_color_stack.empty()) + { ic_color_stack.pop(); + } appendage += "
"; } - ic_color_stack.push( - -1); // Dummy colorstack push for maximum
appendage + ic_color_stack.push(-1); // Dummy colorstack push for maximum appendage appendage += ""; p_text_escaped.insert(check_pos_escaped, appendage); check_pos_escaped += appendage.size(); } - if (!skip) { + if (!skip) + { p_text_escaped.insert(check_pos_escaped, f_character); check_pos_escaped += f_char_length; } check_pos += f_char_bytes; } - if (!ic_color_stack.empty() && html) { + if (!ic_color_stack.empty() && html) + { p_text_escaped.append(""); } - if (html) { + if (html) + { // Example: https://regex101.com/r/oL4nM9/37 - this replaces // excessive/trailing/etc. whitespace with non-breaking space. I WOULD use // white-space: pre; stylesheet tag, but for whataver reason it doesn't work @@ -3287,28 +3566,30 @@ QString Courtroom::filter_ic_text(QString p_text, bool html, int target_pos, // memery to work, please do. p_text_escaped.replace(QRegularExpression("^\\s|(?<=\\s)\\s"), " "); if (!align.isEmpty()) + { p_text_escaped.append("
"); + } } return p_text_escaped; } -void Courtroom::log_ic_text(QString p_name, QString p_showname, - QString p_message, QString p_action, int p_color, bool p_selfname) +void Courtroom::log_ic_text(QString p_name, QString p_showname, QString p_message, QString p_action, int p_color, bool p_selfname) { - chatlogpiece log_entry(p_name, p_showname, p_message, p_action, p_color, p_selfname); + ChatLogPiece log_entry(p_name, p_showname, p_message, p_action, p_color, p_selfname); ic_chatlog_history.append(log_entry); if (Options::getInstance().logToTextFileEnabled() && !ao_app->log_filename.isEmpty()) + { ao_app->append_to_file(log_entry.get_full(), ao_app->log_filename, true); + } - while (ic_chatlog_history.size() > log_maximum_blocks && - log_maximum_blocks > 0) { + while (ic_chatlog_history.size() > log_maximum_blocks && log_maximum_blocks > 0) + { ic_chatlog_history.removeFirst(); } } -void Courtroom::append_ic_text(QString p_text, QString p_name, QString p_action, - int color, bool selfname, QDateTime timestamp, bool ghost) +void Courtroom::append_ic_text(QString p_text, QString p_name, QString p_action, int color, bool selfname, QDateTime timestamp, bool ghost) { QColor chatlog_color = ao_app->get_color("ic_chatlog_color", "courtroom_fonts.ini"); QTextCharFormat bold; @@ -3332,47 +3613,49 @@ void Courtroom::append_ic_text(QString p_text, QString p_name, QString p_action, const QTextCursor old_cursor = ui_ic_chatlog->textCursor(); const int old_scrollbar_value = ui_ic_chatlog->verticalScrollBar()->value(); const bool need_newline = !ui_ic_chatlog->document()->isEmpty(); - const int scrollbar_target_value = - log_goes_downwards ? ui_ic_chatlog->verticalScrollBar()->maximum() - : ui_ic_chatlog->verticalScrollBar()->minimum(); + const int scrollbar_target_value = log_goes_downwards ? ui_ic_chatlog->verticalScrollBar()->maximum() : ui_ic_chatlog->verticalScrollBar()->minimum(); - if (ghost) { + if (ghost) + { ghost_blocks++; chatlog_color.setAlpha(128); bold.setForeground(chatlog_color); normal.setForeground(chatlog_color); italics.setForeground(chatlog_color); } - else { + else + { last_ic_message = p_name + ":" + p_text; } - ui_ic_chatlog->moveCursor(log_goes_downwards ? QTextCursor::End - : QTextCursor::Start); + ui_ic_chatlog->moveCursor(log_goes_downwards ? QTextCursor::End : QTextCursor::Start); - if (!ghost && ghost_blocks > 0) { - for (int i = 0; i < ghost_blocks; ++i) { - ui_ic_chatlog->moveCursor(log_goes_downwards ? QTextCursor::PreviousBlock - : QTextCursor::NextBlock); + if (!ghost && ghost_blocks > 0) + { + for (int i = 0; i < ghost_blocks; ++i) + { + ui_ic_chatlog->moveCursor(log_goes_downwards ? QTextCursor::PreviousBlock : QTextCursor::NextBlock); } - ui_ic_chatlog->moveCursor(log_goes_downwards ? QTextCursor::EndOfBlock - : QTextCursor::StartOfBlock); + ui_ic_chatlog->moveCursor(log_goes_downwards ? QTextCursor::EndOfBlock : QTextCursor::StartOfBlock); } // Only prepend with newline if log goes downwards - if (log_goes_downwards && need_newline) { + if (log_goes_downwards && need_newline) + { ui_ic_chatlog->textCursor().insertBlock(format); } - // Timestamp if we're doing that meme - if (log_timestamp) { + if (log_timestamp) + { // Format the timestamp QTextCharFormat format = selfname ? selftimestamp_format : timestamp_format; - if (timestamp.isValid()) { - ui_ic_chatlog->textCursor().insertText( - "[" + timestamp.toString(log_timestamp_format) + "] ", format); - } else { + if (timestamp.isValid()) + { + ui_ic_chatlog->textCursor().insertText("[" + timestamp.toString(log_timestamp_format) + "] ", format); + } + else + { qCritical() << "could not insert invalid timestamp" << timestamp; } } @@ -3381,53 +3664,65 @@ void Courtroom::append_ic_text(QString p_text, QString p_name, QString p_action, QTextCharFormat name_format = selfname ? own_name : other_name; ui_ic_chatlog->textCursor().insertText(p_name, name_format); // Special case for stopping the music - if (p_action == tr("has stopped the music")) { + if (p_action == tr("has stopped the music")) + { ui_ic_chatlog->textCursor().insertText(" " + p_action + ".", normal); } // Make shout text bold - else if (p_action == tr("shouts") && log_ic_actions) { + else if (p_action == tr("shouts") && log_ic_actions) + { ui_ic_chatlog->textCursor().insertText(" " + p_action + " ", normal); - if (log_colors && !ghost) { - ui_ic_chatlog->textCursor().insertHtml( - "" + - filter_ic_text(p_text, true, -1, 0) - .replace( - "$c0", - chatlog_color.name(QColor::HexArgb)) + - ""); + if (log_colors && !ghost) + { + ui_ic_chatlog->textCursor().insertHtml("" + filter_ic_text(p_text, true, -1, 0).replace("$c0", chatlog_color.name(QColor::HexArgb)) + ""); } else + { ui_ic_chatlog->textCursor().insertText(" " + p_text, italics); + } } // If action not blank: - else if (p_action != "" && log_ic_actions) { + else if (p_action != "" && log_ic_actions) + { // Format the action in normal ui_ic_chatlog->textCursor().insertText(" " + p_action, normal); if (log_newline) + { // For some reason, we're forced to use
instead of the more sensible // \n. Why? Because \n is treated as a new Block instead of a soft newline // within a paragraph! ui_ic_chatlog->textCursor().insertHtml("
"); + } else + { ui_ic_chatlog->textCursor().insertText(": ", normal); + } // Format the result in italics ui_ic_chatlog->textCursor().insertText(p_text + ".", italics); } - else { + else + { if (log_newline) + { // For some reason, we're forced to use
instead of the more sensible // \n. Why? Because \n is treated as a new Block instead of a soft newline // within a paragraph! ui_ic_chatlog->textCursor().insertHtml("
"); + } else + { ui_ic_chatlog->textCursor().insertText(": ", normal); + } // Format the result according to html - if (log_colors) { + if (log_colors) + { QString p_text_filtered = filter_ic_text(p_text, true, -1, color); p_text_filtered = p_text_filtered.replace("$c0", chatlog_color.name(QColor::HexArgb)); - for (int c = 1; c < max_colors; ++c) { + for (int c = 1; c < max_colors; ++c) + { QColor color_result = default_color_rgb_list.at(c); - if (ghost) { + if (ghost) + { color_result.setAlpha(128); } p_text_filtered = p_text_filtered.replace("$c" + QString::number(c), color_result.name(QColor::HexArgb)); @@ -3435,55 +3730,62 @@ void Courtroom::append_ic_text(QString p_text, QString p_name, QString p_action, ui_ic_chatlog->textCursor().insertHtml(p_text_filtered); } else + { ui_ic_chatlog->textCursor().insertText(filter_ic_text(p_text, false), normal); + } } // Only append with newline if log goes upwards - if (!log_goes_downwards && need_newline) { + if (!log_goes_downwards && need_newline) + { ui_ic_chatlog->textCursor().insertBlock(format); } // If we got too many blocks in the current log, delete some. - while (ui_ic_chatlog->document()->blockCount() > log_maximum_blocks && - log_maximum_blocks > 0) { + while (ui_ic_chatlog->document()->blockCount() > log_maximum_blocks && log_maximum_blocks > 0) + { QTextCursor temp_curs = ui_ic_chatlog->textCursor(); - temp_curs.movePosition(log_goes_downwards ? QTextCursor::Start - : QTextCursor::End); + temp_curs.movePosition(log_goes_downwards ? QTextCursor::Start : QTextCursor::End); temp_curs.select(QTextCursor::BlockUnderCursor); temp_curs.removeSelectedText(); if (log_goes_downwards) + { temp_curs.deleteChar(); + } else + { temp_curs.deletePreviousChar(); + } } // Finally, scroll the scrollbar to the correct position. - if (old_cursor.hasSelection() || - old_scrollbar_value != scrollbar_target_value) { + if (old_cursor.hasSelection() || old_scrollbar_value != scrollbar_target_value) + { // The user has selected text or scrolled away from the bottom: maintain // position. ui_ic_chatlog->setTextCursor(old_cursor); ui_ic_chatlog->verticalScrollBar()->setValue(old_scrollbar_value); } - else { - ui_ic_chatlog->verticalScrollBar()->setValue( - log_goes_downwards ? ui_ic_chatlog->verticalScrollBar()->maximum() : 0); + else + { + ui_ic_chatlog->verticalScrollBar()->setValue(log_goes_downwards ? ui_ic_chatlog->verticalScrollBar()->maximum() : 0); } } void Courtroom::pop_ic_ghost() { QTextCursor ghost = ui_ic_chatlog->textCursor(); - ghost.movePosition(log_goes_downwards ? QTextCursor::End - : QTextCursor::Start); - for (int i = 1; i < ghost_blocks; ++i) { - ghost.movePosition(log_goes_downwards ? QTextCursor::PreviousBlock - : QTextCursor::NextBlock); + ghost.movePosition(log_goes_downwards ? QTextCursor::End : QTextCursor::Start); + for (int i = 1; i < ghost_blocks; ++i) + { + ghost.movePosition(log_goes_downwards ? QTextCursor::PreviousBlock : QTextCursor::NextBlock); } ghost.select(QTextCursor::BlockUnderCursor); ghost.removeSelectedText(); if (ghost_blocks <= 1 && !log_goes_downwards) + { ghost.deleteChar(); + } ghost_blocks--; } @@ -3498,13 +3800,17 @@ void Courtroom::play_preanim(bool immediate) int sfx_delay = m_chatmessage[SFX_DELAY].toInt() * time_mod; sfx_delay_timer->start(sfx_delay); - QString anim_to_find = - ao_app->get_image_suffix(ao_app->get_character_path(f_char, f_preanim)); - if (!file_exists(anim_to_find)) { + QString anim_to_find = ao_app->get_image_suffix(ao_app->get_character_path(f_char, f_preanim)); + if (!file_exists(anim_to_find)) + { if (immediate) + { anim_state = 4; + } else + { anim_state = 1; + } preanim_done(); qWarning() << "could not find preanim" << f_preanim << "for character" << f_char; return; @@ -3513,31 +3819,36 @@ void Courtroom::play_preanim(bool immediate) ui_vp_player_char->set_play_once(true); ui_vp_player_char->load_image(f_preanim, f_char, preanim_duration, true); - switch (m_chatmessage[DESK_MOD].toInt()) { - case DESK_EMOTE_ONLY_EX: - ui_vp_sideplayer_char->hide(); - ui_vp_player_char->move_and_center(0, 0); - [[fallthrough]]; - case DESK_EMOTE_ONLY: - case DESK_HIDE: - set_scene(false, m_chatmessage[SIDE]); - break; + switch (m_chatmessage[DESK_MOD].toInt()) + { + case DESK_EMOTE_ONLY_EX: + ui_vp_sideplayer_char->hide(); + ui_vp_player_char->move_and_center(0, 0); + [[fallthrough]]; + case DESK_EMOTE_ONLY: + case DESK_HIDE: + set_scene(false, m_chatmessage[SIDE]); + break; - case DESK_PRE_ONLY_EX: - case DESK_PRE_ONLY: - case DESK_SHOW: - set_scene(true, m_chatmessage[SIDE]); - break; + case DESK_PRE_ONLY_EX: + case DESK_PRE_ONLY: + case DESK_SHOW: + set_scene(true, m_chatmessage[SIDE]); + break; } - if (immediate) { + if (immediate) + { anim_state = 4; handle_ic_speaking(); } - else { + else + { anim_state = 1; if (stay_time >= 0) + { text_delay_timer->start(stay_time); + } } } @@ -3545,7 +3856,9 @@ void Courtroom::preanim_done() { // Currently, someone's talking over us mid-preanim... if (anim_state != 1 && anim_state != 4 && anim_state != 5) + { return; + } anim_state = 1; handle_ic_speaking(); @@ -3557,77 +3870,94 @@ void Courtroom::start_chat_ticking() // we need to ensure that the text isn't already ticking because this function // can be called by two logic paths if (text_state != 0) + { return; + } // Display the evidence display_evidence_image(); // handle expanded desk mods - switch(m_chatmessage[DESK_MOD].toInt()) { - case DESK_EMOTE_ONLY_EX: - set_self_offset(m_chatmessage[SELF_OFFSET]); - [[fallthrough]]; - case DESK_EMOTE_ONLY: - case DESK_SHOW: - set_scene(true, m_chatmessage[SIDE]); - break; + switch (m_chatmessage[DESK_MOD].toInt()) + { + case DESK_EMOTE_ONLY_EX: + set_self_offset(m_chatmessage[SELF_OFFSET]); + [[fallthrough]]; + case DESK_EMOTE_ONLY: + case DESK_SHOW: + set_scene(true, m_chatmessage[SIDE]); + break; - case DESK_PRE_ONLY_EX: - ui_vp_sideplayer_char->hide(); - ui_vp_player_char->move_and_center(0, 0); - [[fallthrough]]; - case DESK_PRE_ONLY: - case DESK_HIDE: - set_scene(false, m_chatmessage[SIDE]); - break; + case DESK_PRE_ONLY_EX: + ui_vp_sideplayer_char->hide(); + ui_vp_player_char->move_and_center(0, 0); + [[fallthrough]]; + case DESK_PRE_ONLY: + case DESK_HIDE: + set_scene(false, m_chatmessage[SIDE]); + break; } - if (m_chatmessage[EFFECTS] != "") { + if (m_chatmessage[EFFECTS] != "") + { QStringList fx_list = m_chatmessage[EFFECTS].split("|"); QString fx = fx_list[0]; QString fx_sound; QString fx_folder; if (fx_list.length() > 1) + { fx_sound = fx_list[1]; + } - if (fx_list.length() > 2) { + if (fx_list.length() > 2) + { fx_folder = fx_list[1]; fx_sound = fx_list[2]; } this->do_effect(fx, fx_sound, m_chatmessage[CHAR_NAME], fx_folder); } - else if (m_chatmessage[REALIZATION] == "1") { + else if (m_chatmessage[REALIZATION] == "1") + { this->do_flash(); sfx_player->play(ao_app->get_custom_realization(m_chatmessage[CHAR_NAME])); } int emote_mod = m_chatmessage[EMOTE_MOD].toInt(); // text meme bonanza - if ((emote_mod == IDLE || emote_mod == ZOOM) && m_chatmessage[SCREENSHAKE] == "1") { + if ((emote_mod == IDLE || emote_mod == ZOOM) && m_chatmessage[SCREENSHAKE] == "1") + { this->do_screenshake(); } - if (m_chatmessage[MESSAGE].isEmpty()) { + if (m_chatmessage[MESSAGE].isEmpty()) + { // since the message is empty, it's technically done ticking text_state = 2; - if (m_chatmessage[ADDITIVE] == "1") { + if (m_chatmessage[ADDITIVE] == "1") + { // Cool behavior ui_vp_chatbox->show(); ui_vp_message->show(); } - else { + else + { ui_vp_chatbox->setVisible(chatbox_always_show); ui_vp_message->hide(); // Show it if chatbox always shows if (Options::getInstance().characterStickerEnabled() && chatbox_always_show) + { ui_vp_sticker->load_image(m_chatmessage[CHAR_NAME]); + } // Hide the face sticker - else { + else + { ui_vp_sticker->stop(); } } // If we're not already waiting on the next message, start the timer. We could be overriden if there's an objection planned. int delay = Options::getInstance().textStayTime(); if (delay > 0 && !text_queue_timer->isActive()) + { text_queue_timer->start(delay); + } return; } @@ -3635,9 +3965,12 @@ void Courtroom::start_chat_ticking() ui_vp_message->show(); if (Options::getInstance().characterStickerEnabled()) + { ui_vp_sticker->load_image(m_chatmessage[CHAR_NAME]); + } - if (m_chatmessage[ADDITIVE] != "1") { + if (m_chatmessage[ADDITIVE] != "1") + { ui_vp_message->clear(); real_tick_pos = 0; additive_previous = ""; @@ -3656,7 +3989,9 @@ void Courtroom::start_chat_ticking() last_misc = current_misc; current_misc = ao_app->get_chat(m_chatmessage[CHAR_NAME]); if (last_misc != current_misc || char_color_rgb_list.size() < max_colors) + { gen_char_rgb_list(current_misc); + } QString f_blips = ao_app->get_blips(m_chatmessage[CHAR_NAME]); blip_player->set_blips(f_blips); @@ -3679,54 +4014,60 @@ void Courtroom::chat_tick() ui_vp_player_char->set_static_duration(0); QString filename; - if (tick_pos >= f_message.size()) { + if (tick_pos >= f_message.size()) + { text_state = 2; // Check if we're a narrator msg - if (m_chatmessage[EMOTE] != "") { - if (anim_state < 3) { - QStringList c_paths = { - ao_app->get_image_suffix(ao_app->get_character_path(m_chatmessage[CHAR_NAME], "(c)" + m_chatmessage[EMOTE])), - ao_app->get_image_suffix(ao_app->get_character_path(m_chatmessage[CHAR_NAME], "(c)/" + m_chatmessage[EMOTE])) - }; + if (m_chatmessage[EMOTE] != "") + { + if (anim_state < 3) + { + QStringList c_paths = {ao_app->get_image_suffix(ao_app->get_character_path(m_chatmessage[CHAR_NAME], "(c)" + m_chatmessage[EMOTE])), ao_app->get_image_suffix(ao_app->get_character_path(m_chatmessage[CHAR_NAME], "(c)/" + m_chatmessage[EMOTE]))}; // if there is a (c) animation for this emote and we haven't played it already - if (file_exists(ui_vp_player_char->find_image(c_paths)) &&(!c_played)) { + if (file_exists(ui_vp_player_char->find_image(c_paths)) && (!c_played)) + { anim_state = 5; ui_vp_player_char->set_play_once(true); filename = "(c)" + m_chatmessage[EMOTE]; c_played = true; } - else { + else + { anim_state = 3; ui_vp_player_char->set_play_once(false); filename = "(a)" + m_chatmessage[EMOTE]; } - ui_vp_player_char->load_image(filename, m_chatmessage[CHAR_NAME], 0, - false); + ui_vp_player_char->load_image(filename, m_chatmessage[CHAR_NAME], 0, false); } } else // We're a narrator msg + { anim_state = 3; + } QString f_char; QString f_custom_theme; - if (Options::getInstance().customChatboxEnabled()) { + if (Options::getInstance().customChatboxEnabled()) + { f_char = m_chatmessage[CHAR_NAME]; f_custom_theme = ao_app->get_chat(f_char); } ui_vp_chat_arrow->transform_mode = ao_app->get_misc_scaling(f_custom_theme); ui_vp_chat_arrow->load_image("chat_arrow", f_custom_theme); // Chat stopped being processed, indicate that. QString f_message_filtered = filter_ic_text(f_message, true, -1, m_chatmessage[TEXT_COLOR].toInt()); - for (int c = 0; c < max_colors; ++c) { + for (int c = 0; c < max_colors; ++c) + { additive_previous = additive_previous.replace("$c" + QString::number(c), char_color_rgb_list.at(c).name(QColor::HexRgb)); f_message_filtered = f_message_filtered.replace("$c" + QString::number(c), char_color_rgb_list.at(c).name(QColor::HexRgb)); } additive_previous = additive_previous + f_message_filtered; real_tick_pos = ui_vp_message->toPlainText().size(); - // If we're not already waiting on the next message, start the timer. We could be overriden if there's an objection planned. int delay = Options::getInstance().textStayTime(); if (delay > 0 && !text_queue_timer->isActive()) + { text_queue_timer->start(delay); + } // if we have instant objections disabled, and queue is not empty, check if next message after this is an objection. if (!Options::getInstance().objectionSkipQueueEnabled() && chatmessage_queue.size() > 0) @@ -3736,7 +4077,9 @@ void Courtroom::chat_tick() bool is_objection = objection_mod >= 1 && objection_mod <= 5; // If this is an objection, we'll need to interrupt our current message. if (is_objection) + { chatmessage_dequeue(); + } } return; } @@ -3747,9 +4090,12 @@ void Courtroom::chat_tick() QString f_rest = f_message; // Alignment characters - if (tick_pos < 2) { + if (tick_pos < 2) + { if (f_rest.startsWith("~~") || f_rest.startsWith("~>") || f_rest.startsWith("<>")) + { tick_pos += 2; + } } f_rest.remove(0, tick_pos); QTextBoundaryFinder tbf(QTextBoundaryFinder::Grapheme, f_rest); @@ -3760,52 +4106,70 @@ void Courtroom::chat_tick() tbf.toNextBoundary(); if (tbf.position() == -1) + { f_character = f_rest; + } else + { f_character = f_rest.left(tbf.position()); + } f_char_length = f_character.length(); tick_pos += f_char_length; // Escape character. - if (!next_character_is_not_special) { - if (f_character == "\\") { + if (!next_character_is_not_special) + { + if (f_character == "\\") + { next_character_is_not_special = true; formatting_char = true; } // Text speed modifier. - else if (f_character == "{") { + else if (f_character == "{") + { // ++, because it INCREASES delay! current_display_speed++; formatting_char = true; } - else if (f_character == "}") { + else if (f_character == "}") + { current_display_speed--; formatting_char = true; } - else { + else + { // Parse markdown colors - for (int c = 0; c < max_colors; ++c) { + for (int c = 0; c < max_colors; ++c) + { QString markdown_start = color_markdown_start_list.at(c); QString markdown_end = color_markdown_end_list.at(c); bool markdown_remove = color_markdown_remove_list.at(c); if (markdown_start.isEmpty()) + { continue; + } - if (f_character == markdown_start || f_character == markdown_end) { + if (f_character == markdown_start || f_character == markdown_end) + { if (markdown_remove) + { formatting_char = true; + } break; } } } } - else { + else + { if (f_character == "n") + { formatting_char = true; // it's a newline - if (f_character == "s") // Screenshake. + } + if (f_character == "s") // Screenshake. { this->do_screenshake(); formatting_char = true; @@ -3824,30 +4188,42 @@ void Courtroom::chat_tick() // Keep the speed at bay. if (current_display_speed < 0) + { current_display_speed = 0; + } else if (current_display_speed > 6) + { current_display_speed = 6; + } if (msg_delay == 0) + { msg_delay = text_crawl * message_display_mult[current_display_speed]; + } - if ((msg_delay <= 0 && - tick_pos < f_message.size() - 1) || - formatting_char) { + if ((msg_delay <= 0 && tick_pos < f_message.size() - 1) || formatting_char) + { if (f_character == "p") + { chat_tick_timer->start(100); // wait the pause lol + } else + { chat_tick_timer->start(0); // Don't bother rendering anything out as we're // doing the SPEED. (there's latency otherwise) - if (!formatting_char || f_character == "n" || f_character == "f" || - f_character == "s" || f_character == "p") + } + if (!formatting_char || f_character == "n" || f_character == "f" || f_character == "s" || f_character == "p") + { real_tick_pos += f_char_length; // Adjust the tick position for the // scrollbar convenience + } } - else { + else + { // Do the colors, gradual showing, etc. in here QString f_message_filtered = filter_ic_text(f_message, true, tick_pos, m_chatmessage[TEXT_COLOR].toInt()); - for (int c = 0; c < max_colors; ++c) { + for (int c = 0; c < max_colors; ++c) + { additive_previous = additive_previous.replace("$c" + QString::number(c), char_color_rgb_list.at(c).name(QColor::HexRgb)); f_message_filtered = f_message_filtered.replace("$c" + QString::number(c), char_color_rgb_list.at(c).name(QColor::HexRgb)); } @@ -3871,24 +4247,26 @@ void Courtroom::chat_tick() // where ! is the blip sound int b_rate = blip_rate; // Overwhelming blip spam prevention, this method is more consistent than timers - if (msg_delay != 0 && msg_delay <= 25) { + if (msg_delay != 0 && msg_delay <= 25) + { // The default blip speed is 40ms, and if current msg_delay is 25ms, // the formula will result in the blip rate of: // 40/25 = 1.6 = 2 // And if it's faster than that: // 40/10 = 4 - b_rate = - qMax(b_rate, qRound(static_cast(text_crawl) / - msg_delay)); + b_rate = qMax(b_rate, qRound(static_cast(text_crawl) / msg_delay)); } - if ((blip_rate <= 0 && blip_ticker < 1) || (b_rate > 0 && blip_ticker % b_rate == 0)) { + if ((blip_rate <= 0 && blip_ticker < 1) || (b_rate > 0 && blip_ticker % b_rate == 0)) + { // ignoring white space unless blank_blip is enabled. - if (!formatting_char && (f_character != ' ' || blank_blip)) { + if (!formatting_char && (f_character != ' ' || blank_blip)) + { blip_player->blip_tick(); ++blip_ticker; } } - else { + else + { // Don't fully ignore whitespace still, keep ticking until // we reached the need to play a blip sound - we also just // need to wait for a letter to play it on. @@ -3896,35 +4274,32 @@ void Courtroom::chat_tick() } // Punctuation delayer, only kicks in on speed ticks less than }} - if (current_display_speed > 1 && punctuation_chars.contains(f_character)) { + if (current_display_speed > 1 && punctuation_chars.contains(f_character)) + { // Making the user have to wait any longer than 1.5 of the slowest speed // is downright unreasonable int max_delay = text_crawl * message_display_mult[6] * 1.5; msg_delay = qMin(max_delay, msg_delay * punctuation_modifier); } - if (m_chatmessage[EMOTE] != "") { + if (m_chatmessage[EMOTE] != "") + { // If this color is talking - if (color_is_talking && anim_state != 2 && - anim_state < - 4) // Set it to talking as we're not on that already (though we have - // to avoid interrupting a non-interrupted preanim) + if (color_is_talking && anim_state != 2 && anim_state < 4) // Set it to talking as we're not on that already (though we have + // to avoid interrupting a non-interrupted preanim) { ui_vp_player_char->stop(); ui_vp_player_char->set_play_once(false); filename = "(b)" + m_chatmessage[EMOTE]; - ui_vp_player_char->load_image(filename, m_chatmessage[CHAR_NAME], 0, - false); + ui_vp_player_char->load_image(filename, m_chatmessage[CHAR_NAME], 0, false); anim_state = 2; } - else if (!color_is_talking && anim_state < 3 && - anim_state != 3) // Set it to idle as we're not on that already + else if (!color_is_talking && anim_state < 3 && anim_state != 3) // Set it to idle as we're not on that already { ui_vp_player_char->stop(); ui_vp_player_char->set_play_once(false); filename = "(a)" + m_chatmessage[EMOTE]; - ui_vp_player_char->load_image(filename, m_chatmessage[CHAR_NAME], 0, - false); + ui_vp_player_char->load_image(filename, m_chatmessage[CHAR_NAME], 0, false); anim_state = 3; } } @@ -3936,18 +4311,20 @@ void Courtroom::chat_tick() void Courtroom::play_sfx() { QString sfx_name = m_chatmessage[SFX_NAME]; - if (m_chatmessage[SCREENSHAKE] == - "1") // Screenshake dependant on preanim sfx delay meme + if (m_chatmessage[SCREENSHAKE] == "1") // Screenshake dependant on preanim sfx delay meme { this->do_screenshake(); } if (sfx_name == "1") + { return; + } sfx_player->play(sfx_name); if (Options::getInstance().loopingSfx()) - sfx_player->set_looping( - ao_app->get_sfx_looping(current_char, current_emote) == "1"); + { + sfx_player->set_looping(ao_app->get_sfx_looping(current_char, current_emote) == "1"); + } } void Courtroom::set_scene(bool show_desk, const QString f_side) @@ -3956,23 +4333,29 @@ void Courtroom::set_scene(bool show_desk, const QString f_side) ui_vp_desk->load_image(ao_app->get_pos_path(f_side, true)); if (show_desk) + { ui_vp_desk->show(); + } else + { ui_vp_desk->hide(); + } } -void Courtroom::set_self_offset(const QString& p_list) { - QStringList self_offsets = p_list.split("&"); - int self_offset = self_offsets[0].toInt(); - int self_offset_v; - if (self_offsets.length() <= 1) { - self_offset_v = 0; - } - else { - self_offset_v = self_offsets[1].toInt(); - } - ui_vp_player_char->move_and_center(ui_viewport->width() * self_offset / 100, - ui_viewport->height() * self_offset_v / 100); +void Courtroom::set_self_offset(const QString &p_list) +{ + QStringList self_offsets = p_list.split("&"); + int self_offset = self_offsets[0].toInt(); + int self_offset_v; + if (self_offsets.length() <= 1) + { + self_offset_v = 0; + } + else + { + self_offset_v = self_offsets[1].toInt(); + } + ui_vp_player_char->move_and_center(ui_viewport->width() * self_offset / 100, ui_viewport->height() * self_offset_v / 100); } void Courtroom::set_ip_list(QString p_list) @@ -3985,11 +4368,16 @@ void Courtroom::set_ip_list(QString p_list) void Courtroom::set_mute(bool p_muted, int p_cid) { if (p_cid != m_cid && p_cid != -1) + { return; + } if (p_muted) + { ui_muted->show(); - else { + } + else + { ui_muted->hide(); ui_ic_chat_message->setFocus(); } @@ -4001,15 +4389,14 @@ void Courtroom::set_mute(bool p_muted, int p_cid) ui_ic_chat_message->setEnabled(!p_muted); } -void Courtroom::set_ban(int p_cid) +QString Courtroom::get_current_char() { - if (p_cid != m_cid && p_cid != -1) - return; - - call_notice(tr("You have been banned.")); + return current_char; +} - ao_app->construct_lobby(); - ao_app->destruct_courtroom(); +QString Courtroom::get_current_background() +{ + return current_background; } void Courtroom::handle_song(QStringList *p_contents) @@ -4017,11 +4404,13 @@ void Courtroom::handle_song(QStringList *p_contents) QStringList f_contents = *p_contents; if (f_contents.size() < 2) + { return; + } - bool ok; // Used for charID, channel, effect check + bool ok; // Used for charID, channel, effect check bool looping = false; // No loop due to outdated server using serverside looping - int channel = 0; // Channel 0 is 'master music', other for ambient + int channel = 0; // Channel 0 is 'master music', other for ambient int effect_flags = 0; // No effects by default - vanilla functionality QString f_song = f_contents.at(0); @@ -4030,129 +4419,158 @@ void Courtroom::handle_song(QStringList *p_contents) int n_char = f_contents.at(1).toInt(&ok); if (!ok) + { return; + } if (p_contents->length() > 3 && p_contents->at(3) == "1") + { looping = true; + } - if (p_contents->length() > 4) { + if (p_contents->length() > 4) + { // eyyy we want to change this song's CHANNEL huh // let the music player handle it if it's bigger than the channel list channel = p_contents->at(4).toInt(&ok); if (!ok) + { return; + } } - if (p_contents->length() > 5) { + if (p_contents->length() > 5) + { // Flags provided to us by server such as Fade In, Fade Out, Sync Pos etc. effect_flags = p_contents->at(5).toInt(&ok); if (!ok) + { return; + } } - if(!file_exists(ao_app->get_sfx_suffix(ao_app->get_music_path(f_song))) && !f_song.startsWith("http") - && f_song != "~stop.mp3" && !ao_app->asset_url.isEmpty()) { - f_song = (ao_app->asset_url + "sounds/music/" + f_song).toLower(); + if (!file_exists(ao_app->get_sfx_suffix(ao_app->get_music_path(f_song))) && !f_song.startsWith("http") && f_song != "~stop.mp3" && !ao_app->asset_url.isEmpty()) + { + f_song = (ao_app->asset_url + "sounds/music/" + f_song).toLower(); } bool is_stop = (f_song == "~stop.mp3"); - if (n_char >= 0 && n_char < char_list.size()) { + if (n_char >= 0 && n_char < char_list.size()) + { QString str_char = char_list.at(n_char).name; QString str_show = ao_app->get_showname(str_char); - if (p_contents->length() > 2) { - if (p_contents->at(2) != "") { + if (p_contents->length() > 2) + { + if (p_contents->at(2) != "") + { str_show = p_contents->at(2); } } - if (!mute_map.value(n_char)) { + if (!mute_map.value(n_char)) + { bool selfname = n_char == m_cid; - if (is_stop) { + if (is_stop) + { log_ic_text(str_char, str_show, "", tr("has stopped the music"), 0, selfname); append_ic_text("", str_show, tr("has stopped the music"), 0, selfname); } - else { + else + { log_ic_text(str_char, str_show, f_song, tr("has played a song"), 0, selfname); append_ic_text(f_song_clear, str_show, tr("has played a song"), 0, selfname); } } } - if (channel == 0) { + if (channel == 0) + { // Current song UI only displays the song playing, not other channels. // Any other music playing is irrelevant. - if (music_player->music_watcher.isRunning()) { - music_player->music_watcher.cancel(); + if (music_player->music_watcher.isRunning()) + { + music_player->music_watcher.cancel(); } ui_music_name->setText(tr("[LOADING] %1").arg(f_song_clear)); } #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - music_player->music_watcher.setFuture(QtConcurrent::run(music_player, &AOMusicPlayer::play, f_song, channel, - looping, effect_flags)); + music_player->music_watcher.setFuture(QtConcurrent::run(music_player, &AOMusicPlayer::play, f_song, channel, looping, effect_flags)); #else - music_player->music_watcher.setFuture(QtConcurrent::run(&AOMusicPlayer::play, music_player, f_song, channel, - looping, effect_flags)); + music_player->music_watcher.setFuture(QtConcurrent::run(&AOMusicPlayer::play, music_player, f_song, channel, looping, effect_flags)); #endif } void Courtroom::update_ui_music_name() { - QString result = music_player->music_watcher.result(); - if (result.isEmpty()) - return; - ui_music_name->setText(result); + QString result = music_player->music_watcher.result(); + if (result.isEmpty()) + { + return; + } + ui_music_name->setText(result); } void Courtroom::handle_wtce(QString p_wtce, int variant) { - //QString sfx_file = "courtroom_sounds.ini"; + // QString sfx_file = "courtroom_sounds.ini"; QString bg_misc = ao_app->read_design_ini("misc", ao_app->get_background_path("design.ini")); QString sfx_name; QString filename; ui_vp_wtce->set_static_duration(wtce_static_time); ui_vp_wtce->set_max_duration(wtce_max_time); // witness testimony - if (p_wtce == "testimony1") { + if (p_wtce == "testimony1") + { // End testimony indicator - if (variant == 1) { + if (variant == 1) + { ui_vp_testimony->kill(); return; } sfx_name = ao_app->get_court_sfx("witness_testimony", bg_misc); - if (sfx_name == "") { + if (sfx_name == "") + { sfx_name = ao_app->get_court_sfx("witnesstestimony", bg_misc); } filename = "witnesstestimony_bubble"; ui_vp_testimony->load_image("testimony", "", bg_misc); } // cross examination - else if (p_wtce == "testimony2") { - sfx_name = ao_app->get_court_sfx("cross_examination", bg_misc); - if (sfx_name == "") { + else if (p_wtce == "testimony2") + { + sfx_name = ao_app->get_court_sfx("cross_examination", bg_misc); + if (sfx_name == "") + { sfx_name = ao_app->get_court_sfx("crossexamination", bg_misc); } filename = "crossexamination_bubble"; ui_vp_testimony->kill(); } - else { + else + { ui_vp_wtce->set_static_duration(verdict_static_time); ui_vp_wtce->set_max_duration(verdict_max_time); // Verdict? - if (p_wtce == "judgeruling") { - if (variant == 0) { + if (p_wtce == "judgeruling") + { + if (variant == 0) + { sfx_name = ao_app->get_court_sfx("not_guilty", bg_misc); - if (sfx_name == "") { + if (sfx_name == "") + { sfx_name = ao_app->get_court_sfx("notguilty", bg_misc); } filename = "notguilty_bubble"; ui_vp_testimony->kill(); } - else if (variant == 1) { + else if (variant == 1) + { sfx_name = ao_app->get_court_sfx("guilty", bg_misc); filename = "guilty_bubble"; ui_vp_testimony->kill(); } } // Completely custom WTCE - else { + else + { sfx_name = p_wtce; filename = p_wtce; } @@ -4165,15 +4583,19 @@ void Courtroom::handle_wtce(QString p_wtce, int variant) void Courtroom::set_hp_bar(int p_bar, int p_state) { if (p_state < 0 || p_state > 10) + { return; + } int prev_state = p_state; - if (p_bar == 1) { + if (p_bar == 1) + { ui_defense_bar->set_image("defensebar" + QString::number(p_state)); prev_state = defense_bar_state; defense_bar_state = p_state; } - else if (p_bar == 2) { + else if (p_bar == 2) + { ui_prosecution_bar->set_image("prosecutionbar" + QString::number(p_state)); prev_state = prosecution_bar_state; prosecution_bar_state = p_state; @@ -4181,62 +4603,66 @@ void Courtroom::set_hp_bar(int p_bar, int p_state) QString sfx_name; QString effect_name; - if (p_state > prev_state) { + if (p_state > prev_state) + { sfx_name = ao_app->get_penalty_value("hp_increased_sfx"); effect_name = ao_app->get_penalty_value("hp_increased_effect").toLower(); } - else if (p_state < prev_state) { + else if (p_state < prev_state) + { sfx_name = ao_app->get_penalty_value("hp_decreased_sfx"); effect_name = ao_app->get_penalty_value("hp_decreased_effect").toLower(); } - else { + else + { return; } - if (effect_name == "screenshake") { + if (effect_name == "screenshake") + { do_screenshake(); } - else if (effect_name == "flash") { + else if (effect_name == "flash") + { do_flash(); } - else { + else + { do_effect(effect_name, "", "", ""); } - if (!sfx_name.isEmpty()) { + if (!sfx_name.isEmpty()) + { sfx_player->play(sfx_name); } } void Courtroom::show_judge_controls(bool visible) { - if (judge_state != POS_DEPENDENT) { + if (judge_state != POS_DEPENDENT) + { visible = judge_state == SHOW_CONTROLS; // Server-side override } - QList judge_controls = - { - ui_witness_testimony, - ui_cross_examination, - ui_guilty, - ui_not_guilty, - ui_defense_minus, - ui_defense_plus, - ui_prosecution_minus, - ui_prosecution_plus - }; - - for (QWidget* control : judge_controls) { - if (visible) - control->show(); - else - control->hide(); + QList judge_controls = {ui_witness_testimony, ui_cross_examination, ui_guilty, ui_not_guilty, ui_defense_minus, ui_defense_plus, ui_prosecution_minus, ui_prosecution_plus}; + + for (QWidget *control : judge_controls) + { + if (visible) + { + control->show(); + } + else + { + control->hide(); + } } } void Courtroom::mod_called(QString p_ip) { ui_server_chatlog->append(p_ip); - if (!ui_guard->isChecked()) { + if (!ui_guard->isChecked()) + { modcall_player->play(ao_app->get_court_sfx("mod_call")); ao_app->alert(this); } @@ -4246,32 +4672,36 @@ void Courtroom::on_ooc_return_pressed() { QString ooc_message = ui_ooc_chat_message->text(); - //We ignore it when the server is compatible with 2.8 - //Using an arbitrary 2.8 feature flag certainly won't cause issues someday. - if (ooc_message.startsWith("/pos") & !ao_app->effects_supported) { - if (ooc_message == "/pos jud") { + // We ignore it when the server is compatible with 2.8 + // Using an arbitrary 2.8 feature flag certainly won't cause issues someday. + if (ooc_message.startsWith("/pos") & !ao_app->effects_supported) + { + if (ooc_message == "/pos jud") + { show_judge_controls(true); } - else { + else + { show_judge_controls(false); } } - if (ooc_message.startsWith("/load_case")) { + if (ooc_message.startsWith("/load_case")) + { #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) QStringList command = ooc_message.split(" ", QString::SkipEmptyParts); #else QStringList command = ooc_message.split(" ", Qt::SkipEmptyParts); #endif - QDir casefolder(get_base_path()+"/cases"); - if (!casefolder.exists()) { + QDir casefolder(get_base_path() + "/cases"); + if (!casefolder.exists()) + { QDir::current().mkdir(get_base_path() + casefolder.dirName()); - append_server_chatmessage( - "CLIENT", - tr("You don't have a `base/cases/` folder! It was just made for you, " - "but seeing as it WAS just made for you, it's likely the case " - "file you're looking for can't be found in there."), - "1"); + append_server_chatmessage("CLIENT", + tr("You don't have a `base/cases/` folder! It was just made for you, " + "but seeing as it WAS just made for you, it's likely the case " + "file you're looking for can't be found in there."), + "1"); ui_ooc_chat_message->clear(); return; } @@ -4280,30 +4710,29 @@ void Courtroom::on_ooc_return_pressed() caseslist.removeOne(".."); caseslist.replaceInStrings(".ini", ""); - if (command.size() < 2) { - append_server_chatmessage( - "CLIENT", - tr("You need to give a filename to load (extension not needed)! Make " - "sure that it is in the `base/cases/` folder, and that it is a " - "correctly formatted ini.\nCases you can load: %1") - .arg(caseslist.join(", ")), - "1"); + if (command.size() < 2) + { + append_server_chatmessage("CLIENT", + tr("You need to give a filename to load (extension not needed)! Make " + "sure that it is in the `base/cases/` folder, and that it is a " + "correctly formatted ini.\nCases you can load: %1") + .arg(caseslist.join(", ")), + "1"); ui_ooc_chat_message->clear(); return; } - if (command.size() > 2) { - append_server_chatmessage( - "CLIENT", - tr("Too many arguments to load a case! You only need one filename, " - "without extension."), - "1"); + if (command.size() > 2) + { + append_server_chatmessage("CLIENT", + tr("Too many arguments to load a case! You only need one filename, " + "without extension."), + "1"); ui_ooc_chat_message->clear(); return; } - QSettings casefile(get_base_path() + "/cases/" + command[1] + ".ini", - QSettings::IniFormat); + QSettings casefile(get_base_path() + "/cases/" + command[1] + ".ini", QSettings::IniFormat); QString caseauth = casefile.value("author", "").value(); QString casedoc = casefile.value("doc", "").value(); @@ -4311,67 +4740,68 @@ void Courtroom::on_ooc_return_pressed() QString casestatus = casefile.value("status", "").value(); if (!caseauth.isEmpty()) - append_server_chatmessage(tr("CLIENT"), - tr("Case made by %1.").arg(caseauth), "1"); - if (!casedoc.isEmpty()) { - ao_app->send_server_packet(new AOPacket("CT", {ui_ooc_chat_name->text(), "/doc " + casedoc})); + { + append_server_chatmessage(tr("CLIENT"), tr("Case made by %1.").arg(caseauth), "1"); } - if (!casestatus.isEmpty()) { - ao_app->send_server_packet(new AOPacket("CT", {ui_ooc_chat_name->text(), "/status " + casestatus})); + if (!casedoc.isEmpty()) + { + ao_app->send_server_packet(AOPacket("CT", {ui_ooc_chat_name->text(), "/doc " + casedoc})); + } + if (!casestatus.isEmpty()) + { + ao_app->send_server_packet(AOPacket("CT", {ui_ooc_chat_name->text(), "/status " + casestatus})); } if (!cmdoc.isEmpty()) - append_server_chatmessage( - "CLIENT", tr("Navigate to %1 for the CM doc.").arg(cmdoc), "1"); + { + append_server_chatmessage("CLIENT", tr("Navigate to %1 for the CM doc.").arg(cmdoc), "1"); + } - for (int i = local_evidence_list.size() - 1; i >= 0; i--) { - ao_app->send_server_packet( - new AOPacket("DE", {QString::number(i)})); + for (int i = local_evidence_list.size() - 1; i >= 0; i--) + { + ao_app->send_server_packet(AOPacket("DE", {QString::number(i)})); } // sort the case_evidence numerically QStringList case_evidence = casefile.childGroups(); - std::sort(case_evidence.begin(), case_evidence.end(), - [] (const QString &a, const QString &b) { - return a.toInt() < b.toInt(); - }); + std::sort(case_evidence.begin(), case_evidence.end(), [](const QString &a, const QString &b) { return a.toInt() < b.toInt(); }); // load evidence - foreach (QString evi, case_evidence) { + foreach (QString evi, case_evidence) + { if (evi == "General") + { continue; + } QStringList f_contents; - f_contents.append( - casefile.value(evi + "/name", tr("UNKNOWN")).value()); - f_contents.append( - casefile.value(evi + "/description", tr("UNKNOWN")).value()); - f_contents.append( - casefile.value(evi + "/image", "UNKNOWN.png").value()); + f_contents.append(casefile.value(evi + "/name", tr("UNKNOWN")).value()); + f_contents.append(casefile.value(evi + "/description", tr("UNKNOWN")).value()); + f_contents.append(casefile.value(evi + "/image", "UNKNOWN.png").value()); - ao_app->send_server_packet(new AOPacket("PE", f_contents)); + ao_app->send_server_packet(AOPacket("PE", f_contents)); } - append_server_chatmessage( - "CLIENT", tr("Your case \"%1\" was loaded!").arg(command[1]), "1"); + append_server_chatmessage("CLIENT", tr("Your case \"%1\" was loaded!").arg(command[1]), "1"); ui_ooc_chat_message->clear(); return; } - else if (ooc_message.startsWith("/save_case")) { + else if (ooc_message.startsWith("/save_case")) + { #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) QStringList command = ooc_message.split(" ", QString::SkipEmptyParts); #else QStringList command = ooc_message.split(" ", Qt::SkipEmptyParts); #endif QDir casefolder(get_base_path() + "cases"); - if (!casefolder.exists()) { + if (!casefolder.exists()) + { QDir(get_base_path()).mkdir(casefolder.dirName()); - append_server_chatmessage( - "CLIENT", - tr("You don't have a `base/cases/` folder! It was just made for you, " - "but seeing as it WAS just made for you, it's likely that you " - "somehow deleted it."), - "1"); + append_server_chatmessage("CLIENT", + tr("You don't have a `base/cases/` folder! It was just made for you, " + "but seeing as it WAS just made for you, it's likely that you " + "somehow deleted it."), + "1"); ui_ooc_chat_message->clear(); return; } @@ -4380,37 +4810,35 @@ void Courtroom::on_ooc_return_pressed() caseslist.removeOne(".."); caseslist.replaceInStrings(".ini", ""); - if (command.size() < 3) { - append_server_chatmessage( - "CLIENT", - tr("You need to give a filename to save (extension not needed) and " - "the courtroom status!"), - "1"); + if (command.size() < 3) + { + append_server_chatmessage("CLIENT", + tr("You need to give a filename to save (extension not needed) and " + "the courtroom status!"), + "1"); ui_ooc_chat_message->clear(); return; } - if (command.size() > 3) { - append_server_chatmessage( - "CLIENT", - tr("Too many arguments to save a case! You only need a filename " - "without extension and the courtroom status!"), - "1"); + if (command.size() > 3) + { + append_server_chatmessage("CLIENT", + tr("Too many arguments to save a case! You only need a filename " + "without extension and the courtroom status!"), + "1"); ui_ooc_chat_message->clear(); return; } - QSettings casefile(get_base_path() + "/cases/" + command[1] + ".ini", - QSettings::IniFormat); + QSettings casefile(get_base_path() + "/cases/" + command[1] + ".ini", QSettings::IniFormat); casefile.setValue("author", ui_ooc_chat_name->text()); casefile.setValue("cmdoc", ""); casefile.setValue("doc", ""); casefile.setValue("status", command[2]); casefile.sync(); - for (int i = 0; i < local_evidence_list.size(); i++) { - QString clean_evidence_dsc = local_evidence_list[i].description.replace( - QRegularExpression("..."), ""); - clean_evidence_dsc = clean_evidence_dsc.replace( - clean_evidence_dsc.lastIndexOf(">"), 1, ""); + for (int i = 0; i < local_evidence_list.size(); i++) + { + QString clean_evidence_dsc = local_evidence_list[i].description.replace(QRegularExpression("..."), ""); + clean_evidence_dsc = clean_evidence_dsc.replace(clean_evidence_dsc.lastIndexOf(">"), 1, ""); casefile.beginGroup(QString::number(i)); casefile.sync(); casefile.setValue("name", local_evidence_list[i].name); @@ -4419,9 +4847,7 @@ void Courtroom::on_ooc_return_pressed() casefile.endGroup(); } casefile.sync(); - append_server_chatmessage( - "CLIENT", tr("Succesfully saved, edit doc and cmdoc link on the ini!"), - "1"); + append_server_chatmessage("CLIENT", tr("Succesfully saved, edit doc and cmdoc link on the ini!"), "1"); ui_ooc_chat_message->clear(); return; } @@ -4430,10 +4856,12 @@ void Courtroom::on_ooc_return_pressed() packet_contents.append(ui_ooc_chat_name->text()); packet_contents.append(ooc_message); - AOPacket *f_packet = new AOPacket("CT", packet_contents); + AOPacket f_packet("CT", packet_contents); if (server_ooc) + { ao_app->send_server_packet(f_packet); + } ui_ooc_chat_message->clear(); @@ -4442,14 +4870,16 @@ void Courtroom::on_ooc_return_pressed() void Courtroom::on_ooc_toggle_clicked() { - if (server_ooc) { + if (server_ooc) + { ui_debug_log->show(); ui_server_chatlog->hide(); ui_ooc_toggle->setText(tr("Debug")); server_ooc = false; } - else { + else + { ui_debug_log->hide(); ui_server_chatlog->show(); ui_ooc_toggle->setText(tr("Server")); @@ -4462,43 +4892,54 @@ void Courtroom::on_ooc_toggle_clicked() void Courtroom::on_music_search_edited(QString p_text) { // Iterate through all QTreeWidgetItem items - if (!ui_music_list->isHidden()) { + if (!ui_music_list->isHidden()) + { QTreeWidgetItemIterator it(ui_music_list); - while (*it) { + while (*it) + { (*it)->setHidden(p_text != ""); ++it; } last_music_search = p_text; } - if (!ui_area_list->isHidden()) { + if (!ui_area_list->isHidden()) + { QTreeWidgetItemIterator ait(ui_area_list); - while (*ait) { + while (*ait) + { (*ait)->setHidden(p_text != ""); ++ait; } last_area_search = p_text; } - if (p_text != "") { - if (!ui_music_list->isHidden()) { + if (p_text != "") + { + if (!ui_music_list->isHidden()) + { // Search in metadata - QList clist = ui_music_list->findItems( - ui_music_search->text(), Qt::MatchContains | Qt::MatchRecursive, 1); - foreach (QTreeWidgetItem *item, clist) { + QList clist = ui_music_list->findItems(ui_music_search->text(), Qt::MatchContains | Qt::MatchRecursive, 1); + foreach (QTreeWidgetItem *item, clist) + { if (item->parent() != nullptr) // So the category shows up too + { item->parent()->setHidden(false); + } item->setHidden(false); } } - if (!ui_area_list->isHidden()) { + if (!ui_area_list->isHidden()) + { // Search in metadata - QList alist = ui_area_list->findItems( - ui_music_search->text(), Qt::MatchContains | Qt::MatchRecursive, 1); - foreach (QTreeWidgetItem *item, alist) { + QList alist = ui_area_list->findItems(ui_music_search->text(), Qt::MatchContains | Qt::MatchRecursive, 1); + foreach (QTreeWidgetItem *item, alist) + { if (item->parent() != nullptr) // So the category shows up too + { item->parent()->setHidden(false); + } item->setHidden(false); } } @@ -4507,7 +4948,8 @@ void Courtroom::on_music_search_edited(QString p_text) void Courtroom::on_music_search_return_pressed() { - if (ui_music_search->text() == "") { + if (ui_music_search->text() == "") + { ui_music_list->collapseAll(); } } @@ -4515,7 +4957,9 @@ void Courtroom::on_music_search_return_pressed() void Courtroom::on_pos_dropdown_changed(int p_index) { if (p_index < 0) + { return; + } on_pos_dropdown_changed(ui_pos_dropdown->itemText(p_index)); } @@ -4531,15 +4975,14 @@ void Courtroom::on_pos_dropdown_context_menu_requested(const QPoint &pos) menu->setAttribute(Qt::WA_DeleteOnClose); menu->addSeparator(); - menu->addAction(QString("Open background " + current_background), this, - [=] { + menu->addAction(QString("Open background " + current_background), this, [=] { QString p_path = ao_app->get_real_path(VPath("background/" + current_background + "/")); - if (!dir_exists(p_path)) { - return; + if (!dir_exists(p_path)) + { + return; } QDesktopServices::openUrl(QUrl::fromLocalFile(p_path)); - } - ); + }); menu->popup(ui_iniswap_dropdown->mapToGlobal(pos)); } @@ -4550,18 +4993,24 @@ void Courtroom::on_pos_remove_clicked() show_judge_controls(ao_app->get_pos_is_judge(default_side)); - for (int i = 0; i < ui_pos_dropdown->count(); ++i) { + for (int i = 0; i < ui_pos_dropdown->count(); ++i) + { QString pos = ui_pos_dropdown->itemText(i); - if (pos == default_side) { + if (pos == default_side) + { ui_pos_dropdown->setCurrentIndex(i); break; } } int wit_index = ui_pos_dropdown->findText("wit"); - if (ui_pos_dropdown->currentText() != default_side && wit_index != -1) //i.e. this bg doesn't have our pos + if (ui_pos_dropdown->currentText() != default_side && wit_index != -1) // i.e. this bg doesn't have our pos + { ui_pos_dropdown->setCurrentIndex(wit_index); // fall back to "wit" + } else if (ui_pos_dropdown->currentText() != default_side) // we don't have "wit" either? + { ui_pos_dropdown->setCurrentIndex(0); // as a last resort, choose the first item in the dropdown + } ui_pos_dropdown->blockSignals(false); current_side = ""; ui_pos_remove->hide(); @@ -4572,34 +5021,39 @@ void Courtroom::set_iniswap_dropdown() { ui_iniswap_dropdown->blockSignals(true); ui_iniswap_dropdown->clear(); - if (m_cid == -1) { + if (m_cid == -1) + { ui_iniswap_dropdown->hide(); ui_iniswap_remove->hide(); return; } - QStringList iniswaps = - ao_app->get_list_file(ao_app->get_character_path(char_list.at(m_cid).name, "iniswaps.ini")) + - ao_app->get_list_file(VPath("iniswaps.ini")); + QStringList iniswaps = ao_app->get_list_file(ao_app->get_character_path(char_list.at(m_cid).name, "iniswaps.ini")) + ao_app->get_list_file(VPath("iniswaps.ini")); iniswaps.prepend(char_list.at(m_cid).name); iniswaps.removeDuplicates(); - if (iniswaps.size() <= 0) { + if (iniswaps.size() <= 0) + { ui_iniswap_dropdown->hide(); ui_iniswap_remove->hide(); return; } ui_iniswap_dropdown->show(); - for (int i = 0; i < iniswaps.size(); ++i) { + for (int i = 0; i < iniswaps.size(); ++i) + { ui_iniswap_dropdown->addItem(iniswaps.at(i)); - QString icon_path = ao_app->get_image_suffix(ao_app->get_character_path( - iniswaps.at(i), "char_icon")); + QString icon_path = ao_app->get_image_suffix(ao_app->get_character_path(iniswaps.at(i), "char_icon")); ui_iniswap_dropdown->setItemIcon(i, QIcon(icon_path)); - if (iniswaps.at(i) == current_char) { + if (iniswaps.at(i) == current_char) + { ui_iniswap_dropdown->setCurrentIndex(i); if (i != 0) + { ui_iniswap_remove->show(); + } else + { ui_iniswap_remove->hide(); + } } } ui_iniswap_dropdown->blockSignals(false); @@ -4612,13 +5066,17 @@ void Courtroom::on_iniswap_dropdown_changed(int p_index) QStringList swaplist; QStringList defswaplist = ao_app->get_list_file(ao_app->get_character_path(char_list.at(m_cid).name, "iniswaps.ini")); - for (int i = 0; i < ui_iniswap_dropdown->count(); ++i) { + for (int i = 0; i < ui_iniswap_dropdown->count(); ++i) + { QString entry = ui_iniswap_dropdown->itemText(i); if (!swaplist.contains(entry) && entry != char_list.at(m_cid).name && !defswaplist.contains(entry)) + { swaplist.append(entry); + } } QString p_path = ao_app->get_real_path(VPath("iniswaps.ini")); - if (!file_exists(p_path)) { + if (!file_exists(p_path)) + { p_path = get_base_path() + "iniswaps.ini"; } ao_app->write_to_file(swaplist.join("\n"), p_path); @@ -4626,13 +5084,16 @@ void Courtroom::on_iniswap_dropdown_changed(int p_index) ui_iniswap_dropdown->setCurrentIndex(p_index); ui_iniswap_dropdown->blockSignals(false); update_character(m_cid, iniswap, true); - QString icon_path = ao_app->get_image_suffix(ao_app->get_character_path( - iniswap, "char_icon")); + QString icon_path = ao_app->get_image_suffix(ao_app->get_character_path(iniswap, "char_icon")); ui_iniswap_dropdown->setItemIcon(p_index, QIcon(icon_path)); if (p_index != 0) + { ui_iniswap_remove->show(); + } else + { ui_iniswap_remove->hide(); + } } void Courtroom::on_iniswap_context_menu_requested(const QPoint &pos) @@ -4641,33 +5102,33 @@ void Courtroom::on_iniswap_context_menu_requested(const QPoint &pos) menu->setAttribute(Qt::WA_DeleteOnClose); menu->addSeparator(); - if (file_exists(ao_app->get_real_path( - ao_app->get_character_path(current_char, "char.ini")))) - menu->addAction(QString("Edit " + current_char + "/char.ini"), this, - &Courtroom::on_iniswap_edit_requested); - if (ui_iniswap_dropdown->itemText(ui_iniswap_dropdown->currentIndex()) != - char_list.at(m_cid).name) - menu->addAction(QString("Remove " + current_char), this, - &Courtroom::on_iniswap_remove_clicked); + if (file_exists(ao_app->get_real_path(ao_app->get_character_path(current_char, "char.ini")))) + { + menu->addAction(QString("Edit " + current_char + "/char.ini"), this, &Courtroom::on_iniswap_edit_requested); + } + if (ui_iniswap_dropdown->itemText(ui_iniswap_dropdown->currentIndex()) != char_list.at(m_cid).name) + { + menu->addAction(QString("Remove " + current_char), this, &Courtroom::on_iniswap_remove_clicked); + } menu->addSeparator(); - menu->addAction(QString("Open character folder " + current_char), this, - [=] { + menu->addAction(QString("Open character folder " + current_char), this, [=] { QString p_path = ao_app->get_real_path(VPath("characters/" + current_char + "/")); - if (!dir_exists(p_path)) { + if (!dir_exists(p_path)) + { return; } QDesktopServices::openUrl(QUrl::fromLocalFile(p_path)); - } - ); + }); menu->popup(ui_iniswap_dropdown->mapToGlobal(pos)); } void Courtroom::on_iniswap_edit_requested() { QString p_path = ao_app->get_real_path(ao_app->get_character_path(current_char, "char.ini")); - if (!file_exists(p_path)) { + if (!file_exists(p_path)) + { return; } QDesktopServices::openUrl(QUrl::fromLocalFile(p_path)); @@ -4675,14 +5136,16 @@ void Courtroom::on_iniswap_edit_requested() void Courtroom::on_iniswap_remove_clicked() { - if (ui_iniswap_dropdown->count() <= 0) { + if (ui_iniswap_dropdown->count() <= 0) + { ui_iniswap_remove->hide(); // We're not supposed to see it. Do this or the // client will crash return; } QStringList defswaplist = ao_app->get_list_file(ao_app->get_character_path(char_list.at(m_cid).name, "iniswaps.ini")); QString iniswap = ui_iniswap_dropdown->itemText(ui_iniswap_dropdown->currentIndex()); - if (iniswap != char_list.at(m_cid).name && !defswaplist.contains(iniswap)) { + if (iniswap != char_list.at(m_cid).name && !defswaplist.contains(iniswap)) + { ui_iniswap_dropdown->removeItem(ui_iniswap_dropdown->currentIndex()); } on_iniswap_dropdown_changed(0); // Reset back to original @@ -4693,29 +5156,31 @@ void Courtroom::set_sfx_dropdown() { ui_sfx_dropdown->blockSignals(true); ui_sfx_dropdown->clear(); - if (m_cid == -1) { + if (m_cid == -1) + { ui_sfx_dropdown->hide(); ui_sfx_remove->hide(); return; } // Initialzie character sound list first. Will be empty if not found. - sound_list = ao_app->get_list_file( - ao_app->get_character_path(current_char, "soundlist.ini")); + sound_list = ao_app->get_list_file(ao_app->get_character_path(current_char, "soundlist.ini")); // If AO2 sound list is empty, try to find the DRO one. - if (sound_list.isEmpty()) { - sound_list = ao_app->get_list_file( - ao_app->get_character_path(current_char, "sounds.ini")); + if (sound_list.isEmpty()) + { + sound_list = ao_app->get_list_file(ao_app->get_character_path(current_char, "sounds.ini")); } // Append default sound list after the character sound list. sound_list += ao_app->get_list_file(VPath("soundlist.ini")); QStringList display_sounds; - for (const QString &sound : qAsConst(sound_list)) { + for (const QString &sound : qAsConst(sound_list)) + { QStringList unpacked = sound.split("="); QString display = unpacked[0].trimmed(); - if (unpacked.size() > 1) { + if (unpacked.size() > 1) + { display = unpacked[1].trimmed(); } @@ -4735,8 +5200,9 @@ void Courtroom::on_sfx_dropdown_changed(int p_index) { custom_sfx = ""; ui_ic_chat_message->setFocus(); - if (p_index == 0) { - ui_sfx_remove->hide(); + if (p_index == 0) + { + ui_sfx_remove->hide(); } } @@ -4753,29 +5219,32 @@ void Courtroom::on_sfx_context_menu_requested(const QPoint &pos) menu->setAttribute(Qt::WA_DeleteOnClose); menu->addSeparator(); // SFX is not "Nothing" or "Default"? - if (get_char_sfx() != "0" && get_char_sfx() != "1" && get_char_sfx() != "-") { + if (get_char_sfx() != "0" && get_char_sfx() != "1" && get_char_sfx() != "-") + { // Add an option to play the SFX - menu->addAction(QString("Play " + get_char_sfx()), this, &Courtroom::on_sfx_play_clicked);; + menu->addAction(QString("Play " + get_char_sfx()), this, &Courtroom::on_sfx_play_clicked); + } + if (file_exists(ao_app->get_real_path(ao_app->get_character_path(current_char, "soundlist.ini")))) + { + menu->addAction(QString("Edit " + current_char + "/soundlist.ini"), this, &Courtroom::on_sfx_edit_requested); } - if (file_exists(ao_app->get_real_path( - ao_app->get_character_path(current_char, "soundlist.ini")))) - menu->addAction(QString("Edit " + current_char + "/soundlist.ini"), this, - &Courtroom::on_sfx_edit_requested); else - menu->addAction(QString("Edit base soundlist.ini"), this, - &Courtroom::on_sfx_edit_requested); + { + menu->addAction(QString("Edit base soundlist.ini"), this, &Courtroom::on_sfx_edit_requested); + } if (!custom_sfx.isEmpty()) + { menu->addAction(QString("Clear Edit Text"), this, &Courtroom::on_sfx_remove_clicked); + } menu->addSeparator(); - menu->addAction(QString("Open base sounds folder"), this, - [=] { + menu->addAction(QString("Open base sounds folder"), this, [=] { QString p_path = get_base_path() + "sounds/general/"; - if (!dir_exists(p_path)) { + if (!dir_exists(p_path)) + { return; } QDesktopServices::openUrl(QUrl::fromLocalFile(p_path)); - } - ); + }); menu->popup(ui_sfx_dropdown->mapToGlobal(pos)); } @@ -4787,15 +5256,18 @@ void Courtroom::on_sfx_play_clicked() void Courtroom::on_sfx_edit_requested() { QString p_path = ao_app->get_real_path(ao_app->get_character_path(current_char, "soundlist.ini")); - if (!file_exists(p_path)) { + if (!file_exists(p_path)) + { p_path = ao_app->get_real_path(ao_app->get_character_path(current_char, "sounds.ini")); } - if (!file_exists(p_path)) { + if (!file_exists(p_path)) + { p_path = ao_app->get_real_path(VPath("soundlist.ini")); } - if (!file_exists(p_path)) { + if (!file_exists(p_path)) + { p_path = get_base_path() + "soundlist.ini"; } QDesktopServices::openUrl(QUrl::fromLocalFile(p_path)); @@ -4812,14 +5284,16 @@ void Courtroom::set_effects_dropdown() { ui_effects_dropdown->blockSignals(true); ui_effects_dropdown->clear(); - if (m_cid == -1) { + if (m_cid == -1) + { ui_effects_dropdown->hide(); return; } QStringList effectslist; effectslist.append(ao_app->get_effects(current_char)); - if (effectslist.empty()) { + if (effectslist.empty()) + { ui_effects_dropdown->hide(); return; } @@ -4830,7 +5304,8 @@ void Courtroom::set_effects_dropdown() ui_effects_dropdown->addItems(effectslist); // Make the icons - for (int i = 0; i < ui_effects_dropdown->count(); ++i) { + for (int i = 0; i < ui_effects_dropdown->count(); ++i) + { QString iconpath = ao_app->get_effect("icons/" + ui_effects_dropdown->itemText(i), current_char, ""); ui_effects_dropdown->setItemIcon(i, QIcon(iconpath)); } @@ -4842,24 +5317,23 @@ void Courtroom::set_effects_dropdown() void Courtroom::on_effects_context_menu_requested(const QPoint &pos) { QMenu *menu = new QMenu(this); - menu->setAttribute(Qt::WA_DeleteOnClose); + if (!ao_app->read_char_ini(current_char, "effects", "Options").isEmpty()) - menu->addAction( - QString("Open misc/" + - ao_app->read_char_ini(current_char, "effects", "Options") + - " folder"), - this, &Courtroom::on_character_effects_edit_requested); - menu->addAction(QString("Open theme's effects folder"), this, - &Courtroom::on_effects_edit_requested); + { + menu->addAction(QString("Open misc/" + ao_app->read_char_ini(current_char, "effects", "Options") + " folder"), this, &Courtroom::on_character_effects_edit_requested); + } + menu->addAction(QString("Open theme's effects folder"), this, &Courtroom::on_effects_edit_requested); menu->popup(ui_effects_dropdown->mapToGlobal(pos)); } void Courtroom::on_effects_edit_requested() { QString p_path = ao_app->get_real_path(ao_app->get_theme_path("effects/")); - if (!dir_exists(p_path)) { + if (!dir_exists(p_path)) + { p_path = ao_app->get_real_path(ao_app->get_theme_path("effects/", "default")); - if (!dir_exists(p_path)) { + if (!dir_exists(p_path)) + { return; } } @@ -4870,7 +5344,9 @@ void Courtroom::on_character_effects_edit_requested() QString p_effect = ao_app->read_char_ini(current_char, "effects", "Options"); QString p_path = ao_app->get_real_path(VPath("misc/" + p_effect + "/")); if (!dir_exists(p_path)) + { return; + } QDesktopServices::openUrl(QUrl::fromLocalFile(p_path)); } @@ -4883,9 +5359,11 @@ void Courtroom::on_effects_dropdown_changed(int p_index) bool Courtroom::effects_dropdown_find_and_set(QString effect) { - for (int i = 0; i < ui_effects_dropdown->count(); ++i) { + for (int i = 0; i < ui_effects_dropdown->count(); ++i) + { QString entry = ui_effects_dropdown->itemText(i); - if (entry == effect) { + if (entry == effect) + { ui_effects_dropdown->setCurrentIndex(i); return true; } @@ -4896,17 +5374,23 @@ bool Courtroom::effects_dropdown_find_and_set(QString effect) QString Courtroom::get_char_sfx() { if (!custom_sfx.isEmpty()) + { return custom_sfx; + } int index = ui_sfx_dropdown->currentIndex(); - if (index == 0) { // Default + if (index == 0) + { // Default return ao_app->get_sfx_name(current_char, current_emote); } - if (index == 1) { // Nothing + if (index == 1) + { // Nothing return "1"; } - QString sfx = sound_list[index-2].split("=")[0].trimmed(); + QString sfx = sound_list[index - 2].split("=")[0].trimmed(); if (sfx == "") + { return "1"; + } return sfx; } @@ -4922,27 +5406,37 @@ void Courtroom::on_mute_list_clicked(QModelIndex p_index) QString real_char; if (f_char.endsWith(" [x]")) + { real_char = f_char.left(f_char.size() - 4); + } else + { real_char = f_char; + } int f_cid = -1; - for (int n_char = 0; n_char < char_list.size(); n_char++) { + for (int n_char = 0; n_char < char_list.size(); n_char++) + { if (char_list.at(n_char).name == real_char) + { f_cid = n_char; + } } - if (f_cid < 0 || f_cid >= char_list.size()) { + if (f_cid < 0 || f_cid >= char_list.size()) + { qWarning() << "" << real_char << " not present in char_list"; return; } - if (mute_map.value(f_cid)) { + if (mute_map.value(f_cid)) + { mute_map.insert(f_cid, false); f_item->setText(real_char); } - else { + else + { mute_map.insert(f_cid, true); f_item->setText(real_char + " [x]"); } @@ -4955,19 +5449,25 @@ void Courtroom::on_pair_list_clicked(QModelIndex p_index) QString real_char; int f_cid = -1; - if (f_char.endsWith(" [x]")) { + if (f_char.endsWith(" [x]")) + { real_char = f_char.left(f_char.size() - 4); f_item->setText(real_char); } - else { + else + { real_char = f_char; - for (int n_char = 0; n_char < char_list.size(); n_char++) { + for (int n_char = 0; n_char < char_list.size(); n_char++) + { if (char_list.at(n_char).name == real_char) + { f_cid = n_char; + } } } - if (f_cid < -2 || f_cid >= char_list.size()) { + if (f_cid < -2 || f_cid >= char_list.size()) + { qWarning() << "" << real_char << " not present in char_list"; return; } @@ -4978,79 +5478,84 @@ void Courtroom::on_pair_list_clicked(QModelIndex p_index) QStringList sorted_pair_list; for (const char_type &i_char : qAsConst(char_list)) + { sorted_pair_list.append(i_char.name); + } sorted_pair_list.sort(); - for (int i = 0; i < ui_pair_list->count(); i++) { + for (int i = 0; i < ui_pair_list->count(); i++) + { ui_pair_list->item(i)->setText(sorted_pair_list.at(i)); } - if (other_charid != -1) { + if (other_charid != -1) + { f_item->setText(real_char + " [x]"); } } -void Courtroom::on_music_list_double_clicked(QTreeWidgetItem *p_item, - int column) +void Courtroom::on_music_list_double_clicked(QTreeWidgetItem *p_item, int column) { if (is_muted) + { return; + } if (!Options::getInstance().stopMusicOnCategoryEnabled() && p_item->parent() == nullptr) + { return; + } column = 1; // Column 1 is always the metadata (which we want) QString p_song = p_item->text(column); QStringList packet_contents; packet_contents.append(p_song); packet_contents.append(QString::number(m_cid)); - if ((!ui_ic_chat_name->text().isEmpty() && ao_app->cccc_ic_supported) || - ao_app->effects_supported) + if ((!ui_ic_chat_name->text().isEmpty() && ao_app->cccc_ic_supported) || ao_app->effects_supported) + { packet_contents.append(ui_ic_chat_name->text()); + } if (ao_app->effects_supported) + { packet_contents.append(QString::number(music_flags)); - ao_app->send_server_packet(new AOPacket("MC", packet_contents)); + } + ao_app->send_server_packet(AOPacket("MC", packet_contents)); } void Courtroom::on_music_list_context_menu_requested(const QPoint &pos) { QMenu *menu = new QMenu(this); menu->setAttribute(Qt::WA_DeleteOnClose); + menu->addAction(QString(tr("Stop Current Song")), this, &Courtroom::music_stop); menu->addAction(QString(tr("Play Random Song")), this, &Courtroom::music_random); menu->addSeparator(); - menu->addAction(QString(tr("Expand All Categories")), this, - &Courtroom::music_list_expand_all); - menu->addAction(QString(tr("Collapse All Categories")), this, - &Courtroom::music_list_collapse_all); + menu->addAction(QString(tr("Expand All Categories")), this, &Courtroom::music_list_expand_all); + menu->addAction(QString(tr("Collapse All Categories")), this, &Courtroom::music_list_collapse_all); menu->addSeparator(); menu->addAction(new QAction(tr("Fade Out Previous"), this)); menu->actions().back()->setCheckable(true); menu->actions().back()->setChecked(music_flags & FADE_OUT); - connect(menu->actions().back(), &QAction::toggled, this, - &Courtroom::music_fade_out); + connect(menu->actions().back(), &QAction::toggled, this, &Courtroom::music_fade_out); menu->addAction(new QAction(tr("Fade In"), this)); menu->actions().back()->setCheckable(true); menu->actions().back()->setChecked(music_flags & FADE_IN); - connect(menu->actions().back(), &QAction::toggled, this, - &Courtroom::music_fade_in); + connect(menu->actions().back(), &QAction::toggled, this, &Courtroom::music_fade_in); menu->addAction(new QAction(tr("Synchronize"), this)); menu->actions().back()->setCheckable(true); menu->actions().back()->setChecked(music_flags & SYNC_POS); - connect(menu->actions().back(), &QAction::toggled, this, - &Courtroom::music_synchronize); + connect(menu->actions().back(), &QAction::toggled, this, &Courtroom::music_synchronize); menu->addSeparator(); - menu->addAction(QString("Open base music folder"), this, - [=] { + menu->addAction(QString("Open base music folder"), this, [=] { QString p_path = get_base_path() + "sounds/music/"; - if (!dir_exists(p_path)) { + if (!dir_exists(p_path)) + { return; } QDesktopServices::openUrl(QUrl::fromLocalFile(p_path)); - } - ); + }); menu->popup(ui_music_list->mapToGlobal(pos)); } @@ -5058,41 +5563,55 @@ void Courtroom::on_music_list_context_menu_requested(const QPoint &pos) void Courtroom::music_fade_out(bool toggle) { if (toggle) + { music_flags |= FADE_OUT; + } else + { music_flags &= ~FADE_OUT; + } } void Courtroom::music_fade_in(bool toggle) { if (toggle) + { music_flags |= FADE_IN; + } else + { music_flags &= ~FADE_IN; + } } void Courtroom::music_synchronize(bool toggle) { if (toggle) + { music_flags |= SYNC_POS; + } else + { music_flags &= ~SYNC_POS; + } } void Courtroom::music_random() { QList clist; - QTreeWidgetItemIterator it(ui_music_list, - QTreeWidgetItemIterator::NotHidden | - QTreeWidgetItemIterator::NoChildren); - while (*it) { - if (!(*it)->parent() || (*it)->parent()->isExpanded()) { // add top level songs and songs in expanded categories + QTreeWidgetItemIterator it(ui_music_list, QTreeWidgetItemIterator::NotHidden | QTreeWidgetItemIterator::NoChildren); + while (*it) + { + if (!(*it)->parent() || (*it)->parent()->isExpanded()) + { // add top level songs and songs in expanded categories clist += (*it); } ++it; } if (clist.length() == 0) - return; + { + return; + } #if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) on_music_list_double_clicked(clist.at(qrand() % clist.length()), 1); #else @@ -5100,69 +5619,86 @@ void Courtroom::music_random() #endif } -void Courtroom::music_list_expand_all() { ui_music_list->expandAll(); } +void Courtroom::music_list_expand_all() +{ + ui_music_list->expandAll(); +} void Courtroom::music_list_collapse_all() { ui_music_list->collapseAll(); QTreeWidgetItem *current = ui_music_list->selectedItems()[0]; if (current->parent() != nullptr) + { current = current->parent(); + } ui_music_list->setCurrentItem(current); } void Courtroom::music_stop(bool no_effects) { if (is_muted) + { return; + } // Default fake song is a song present in Vanilla content, the ~stop.mp3 QString fake_song = "~stop.mp3"; // If the fake song is not present in the music list - if (!music_list.contains(fake_song)) { - // Loop through our music list - for (const QString &song : qAsConst(music_list)) { - // Pick first song that does not contain a file extension - if (!song.contains('.')) { - // Use it as a fake song as the server we're working with must recognize song categories - fake_song = song; - break; - } + if (!music_list.contains(fake_song)) + { + // Loop through our music list + for (const QString &song : qAsConst(music_list)) + { + // Pick first song that does not contain a file extension + if (!song.contains('.')) + { + // Use it as a fake song as the server we're working with must recognize song categories + fake_song = song; + break; } + } } - QStringList packet_contents; // its music list - packet_contents.append( - fake_song); // this is our fake song, playing it triggers special code + QStringList packet_contents; // its music list + packet_contents.append(fake_song); // this is our fake song, playing it triggers special code packet_contents.append(QString::number(m_cid)); - if ((!ui_ic_chat_name->text().isEmpty() && ao_app->cccc_ic_supported) || - ao_app->effects_supported) + if ((!ui_ic_chat_name->text().isEmpty() && ao_app->cccc_ic_supported) || ao_app->effects_supported) + { packet_contents.append(ui_ic_chat_name->text()); - if (ao_app->effects_supported) { + } + if (ao_app->effects_supported) + { if (no_effects) + { packet_contents.append("0"); + } else + { packet_contents.append(QString::number(music_flags)); + } } - ao_app->send_server_packet(new AOPacket("MC", packet_contents)); + ao_app->send_server_packet(AOPacket("MC", packet_contents)); } void Courtroom::on_area_list_double_clicked(QTreeWidgetItem *p_item, int column) { - column = 0; // The metadata + column = 0; // The metadata Q_UNUSED(column); // so gcc shuts up QString p_area = p_item->text(0); QStringList packet_contents; packet_contents.append(p_area); packet_contents.append(QString::number(m_cid)); - ao_app->send_server_packet(new AOPacket("MC", packet_contents)); + ao_app->send_server_packet(AOPacket("MC", packet_contents)); } void Courtroom::on_hold_it_clicked() { - if (objection_state == 1) { + if (objection_state == 1) + { ui_hold_it->set_image("holdit"); objection_state = 0; } - else { + else + { ui_objection->set_image("objection"); ui_take_that->set_image("takethat"); ui_custom_objection->set_image("custom"); @@ -5176,11 +5712,13 @@ void Courtroom::on_hold_it_clicked() void Courtroom::on_objection_clicked() { - if (objection_state == 2) { + if (objection_state == 2) + { ui_objection->set_image("objection"); objection_state = 0; } - else { + else + { ui_hold_it->set_image("holdit"); ui_take_that->set_image("takethat"); ui_custom_objection->set_image("custom"); @@ -5194,11 +5732,13 @@ void Courtroom::on_objection_clicked() void Courtroom::on_take_that_clicked() { - if (objection_state == 3) { + if (objection_state == 3) + { ui_take_that->set_image("takethat"); objection_state = 0; } - else { + else + { ui_objection->set_image("objection"); ui_hold_it->set_image("holdit"); ui_custom_objection->set_image("custom"); @@ -5212,11 +5752,13 @@ void Courtroom::on_take_that_clicked() void Courtroom::on_custom_objection_clicked() { - if (objection_state == 4) { + if (objection_state == 4) + { ui_custom_objection->set_image("custom"); objection_state = 0; } - else { + else + { ui_objection->set_image("objection"); ui_take_that->set_image("takethat"); ui_hold_it->set_image("holdit"); @@ -5232,16 +5774,22 @@ void Courtroom::show_custom_objection_menu(const QPoint &pos) { QPoint globalPos = ui_custom_objection->mapToGlobal(pos); QAction *selecteditem = custom_obj_menu->exec(globalPos); - if (selecteditem) { + if (selecteditem) + { ui_objection->set_image("objection"); ui_take_that->set_image("takethat"); ui_hold_it->set_image("holdit"); ui_custom_objection->set_image("custom_selected"); if (selecteditem->text() == ao_app->read_char_ini(current_char, "custom_name", "Shouts") || selecteditem->text() == "Default") + { objection_custom = ""; - else { - foreach (CustomObjection custom_objection, custom_objections_list) { - if (custom_objection.name == selecteditem->text()) { + } + else + { + foreach (CustomObjection custom_objection, custom_objections_list) + { + if (custom_objection.name == selecteditem->text()) + { objection_custom = custom_objection.filename; break; } @@ -5254,14 +5802,18 @@ void Courtroom::show_custom_objection_menu(const QPoint &pos) void Courtroom::on_realization_clicked() { - if (realization_state == 0) { + if (realization_state == 0) + { realization_state = 1; if (effects_dropdown_find_and_set("realization")) + { on_effects_dropdown_changed(ui_effects_dropdown->currentIndex()); + } ui_realization->set_image("realization_pressed"); } - else { + else + { realization_state = 0; ui_effects_dropdown->setCurrentIndex(0); on_effects_dropdown_changed(ui_effects_dropdown->currentIndex()); @@ -5273,11 +5825,13 @@ void Courtroom::on_realization_clicked() void Courtroom::on_screenshake_clicked() { - if (screenshake_state == 0) { + if (screenshake_state == 0) + { screenshake_state = 1; ui_screenshake->set_image("screenshake_pressed"); } - else { + else + { screenshake_state = 0; ui_screenshake->set_image("screenshake"); } @@ -5287,7 +5841,8 @@ void Courtroom::on_screenshake_clicked() void Courtroom::on_mute_clicked() { - if (ui_mute_list->isHidden()) { + if (ui_mute_list->isHidden()) + { ui_mute_list->show(); ui_pair_list->hide(); ui_pair_offset_spinbox->hide(); @@ -5296,7 +5851,8 @@ void Courtroom::on_mute_clicked() ui_pair_button->set_image("pair_button"); ui_mute->set_image("mute_pressed"); } - else { + else + { ui_mute_list->hide(); ui_mute->set_image("mute"); } @@ -5304,17 +5860,21 @@ void Courtroom::on_mute_clicked() void Courtroom::on_pair_clicked() { - if (ui_pair_list->isHidden()) { + if (ui_pair_list->isHidden()) + { ui_pair_list->show(); ui_pair_offset_spinbox->show(); - if(ao_app->y_offset_supported) - ui_pair_vert_offset_spinbox->show(); + if (ao_app->y_offset_supported) + { + ui_pair_vert_offset_spinbox->show(); + } ui_pair_order_dropdown->show(); ui_mute_list->hide(); ui_mute->set_image("mute"); ui_pair_button->set_image("pair_button_pressed"); } - else { + else + { ui_pair_list->hide(); ui_pair_offset_spinbox->hide(); ui_pair_vert_offset_spinbox->hide(); @@ -5333,8 +5893,9 @@ void Courtroom::on_defense_minus_clicked() int f_state = defense_bar_state - 1; if (f_state >= 0) - ao_app->send_server_packet( - new AOPacket("HP", {"1", QString::number(f_state)})); + { + ao_app->send_server_packet(AOPacket("HP", {"1", QString::number(f_state)})); + } } void Courtroom::on_defense_plus_clicked() @@ -5342,8 +5903,9 @@ void Courtroom::on_defense_plus_clicked() int f_state = defense_bar_state + 1; if (f_state <= 10) - ao_app->send_server_packet( - new AOPacket("HP", {"1", QString::number(f_state)})); + { + ao_app->send_server_packet(AOPacket("HP", {"1", QString::number(f_state)})); + } } void Courtroom::on_prosecution_minus_clicked() @@ -5351,8 +5913,9 @@ void Courtroom::on_prosecution_minus_clicked() int f_state = prosecution_bar_state - 1; if (f_state >= 0) - ao_app->send_server_packet( - new AOPacket("HP", {"2", QString::number(f_state)})); + { + ao_app->send_server_packet(AOPacket("HP", {"2", QString::number(f_state)})); + } } void Courtroom::on_prosecution_plus_clicked() @@ -5360,23 +5923,24 @@ void Courtroom::on_prosecution_plus_clicked() int f_state = prosecution_bar_state + 1; if (f_state <= 10) - ao_app->send_server_packet( - new AOPacket("HP", {"2", QString::number(f_state)})); + { + ao_app->send_server_packet(AOPacket("HP", {"2", QString::number(f_state)})); + } } void Courtroom::on_text_color_context_menu_requested(const QPoint &pos) { QMenu *menu = new QMenu(this); + menu->setAttribute(Qt::WA_DeleteOnClose); - menu->addAction(QString("Open currently used chat_config.ini"), this, - [=] { + menu->addAction(QString("Open currently used chat_config.ini"), this, [=] { QString p_path = ao_app->get_asset("chat_config.ini", Options::getInstance().theme(), Options::getInstance().subTheme(), ao_app->default_theme, ao_app->get_chat(current_char)); - if (!file_exists(p_path)) { - return; + if (!file_exists(p_path)) + { + return; } QDesktopServices::openUrl(QUrl::fromLocalFile(p_path)); - } - ); + }); menu->popup(ui_text_color->mapToGlobal(pos)); } @@ -5396,27 +5960,22 @@ void Courtroom::set_text_color_dropdown() // Update markdown colors. TODO: make a loading function that only loads the // config file once instead of several times - for (int c = 0; c < max_colors; ++c) { - QColor color = - ao_app->get_chat_color("c" + QString::number(c), ao_app->get_chat(current_char)); + for (int c = 0; c < max_colors; ++c) + { + QColor color = ao_app->get_chat_color("c" + QString::number(c), ao_app->get_chat(current_char)); color_rgb_list.append(color); - color_markdown_start_list.append(ao_app->get_chat_markup( - "c" + QString::number(c) + "_start", ao_app->get_chat(current_char))); - color_markdown_end_list.append(ao_app->get_chat_markup( - "c" + QString::number(c) + "_end", ao_app->get_chat(current_char))); - color_markdown_remove_list.append( - ao_app->get_chat_markup("c" + QString::number(c) + "_remove", - ao_app->get_chat(current_char)) == "1"); - color_markdown_talking_list.append( - ao_app->get_chat_markup("c" + QString::number(c) + "_talking", - ao_app->get_chat(current_char)) != "0"); - - QString color_name = ao_app->get_chat_markup( - "c" + QString::number(c) + "_name", ao_app->get_chat(current_char)); + color_markdown_start_list.append(ao_app->get_chat_markup("c" + QString::number(c) + "_start", ao_app->get_chat(current_char))); + color_markdown_end_list.append(ao_app->get_chat_markup("c" + QString::number(c) + "_end", ao_app->get_chat(current_char))); + color_markdown_remove_list.append(ao_app->get_chat_markup("c" + QString::number(c) + "_remove", ao_app->get_chat(current_char)) == "1"); + color_markdown_talking_list.append(ao_app->get_chat_markup("c" + QString::number(c) + "_talking", ao_app->get_chat(current_char)) != "0"); + + QString color_name = ao_app->get_chat_markup("c" + QString::number(c) + "_name", ao_app->get_chat(current_char)); if (color_name.isEmpty()) // Not defined { if (c > 0) + { continue; + } color_name = tr("Default"); } ui_text_color->addItem(color_name); @@ -5425,15 +5984,18 @@ void Courtroom::set_text_color_dropdown() ui_text_color->setItemIcon(ui_text_color->count() - 1, pixmap); color_row_to_number.append(c); } - for (int c = 0; c < max_colors; ++c) { + for (int c = 0; c < max_colors; ++c) + { QColor color = ao_app->get_chat_color("c" + QString::number(c), ""); default_color_rgb_list.append(color); } } -void Courtroom::gen_char_rgb_list(QString p_misc) { +void Courtroom::gen_char_rgb_list(QString p_misc) +{ char_color_rgb_list.clear(); - for (int c = 0; c < max_colors; ++c) { + for (int c = 0; c < max_colors; ++c) + { QColor color = ao_app->get_chat_color("c" + QString::number(c), p_misc); char_color_rgb_list.append(color); } @@ -5445,14 +6007,17 @@ void Courtroom::on_text_color_changed(int p_color) { int c = color_row_to_number.at(p_color); QString markdown_start = color_markdown_start_list.at(c); - if (markdown_start.isEmpty()) { + if (markdown_start.isEmpty()) + { qWarning() << "Color list dropdown selected a non-existent markdown " - "start character"; + "start character"; return; } QString markdown_end = color_markdown_end_list.at(c); if (markdown_end.isEmpty()) + { markdown_end = markdown_start; + } int start = ui_ic_chat_message->selectionStart(); #if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) int end = ui_ic_chat_message->selectionEnd() + 1; @@ -5467,11 +6032,16 @@ void Courtroom::on_text_color_changed(int p_color) // ui_ic_chat_message->end(false); ui_text_color->setCurrentIndex(0); } - else { + else + { if (p_color != -1 && p_color < color_row_to_number.size()) + { text_color = color_row_to_number.at(p_color); + } else + { text_color = 0; + } } ui_ic_chat_message->setFocus(); } @@ -5486,7 +6056,8 @@ void Courtroom::on_sfx_slider_moved(int p_value) { sfx_player->set_volume(p_value); // Set the ambience and other misc. music layers - for (int i = 1; i < music_player->m_channelmax; ++i) { + for (int i = 1; i < music_player->CHANNEL_COUNT; ++i) + { music_player->set_volume(p_value, i); } objection_player->set_volume(p_value); @@ -5499,9 +6070,15 @@ void Courtroom::on_blip_slider_moved(int p_value) ui_ic_chat_message->setFocus(); } -void Courtroom::on_log_limit_changed(int value) { log_maximum_blocks = value; } +void Courtroom::on_log_limit_changed(int value) +{ + log_maximum_blocks = value; +} -void Courtroom::on_pair_offset_changed(int value) { char_offset = value; } +void Courtroom::on_pair_offset_changed(int value) +{ + char_offset = value; +} void Courtroom::on_pair_vert_offset_changed(int value) { @@ -5511,9 +6088,11 @@ void Courtroom::on_pair_vert_offset_changed(int value) void Courtroom::on_witness_testimony_clicked() { if (is_muted) + { return; + } - ao_app->send_server_packet(new AOPacket("RT", {"testimony1"})); + ao_app->send_server_packet(AOPacket("RT", {"testimony1"})); ui_ic_chat_message->setFocus(); } @@ -5521,9 +6100,11 @@ void Courtroom::on_witness_testimony_clicked() void Courtroom::on_cross_examination_clicked() { if (is_muted) + { return; + } - ao_app->send_server_packet(new AOPacket("RT", {"testimony2"})); + ao_app->send_server_packet(AOPacket("RT", {"testimony2"})); ui_ic_chat_message->setFocus(); } @@ -5531,9 +6112,11 @@ void Courtroom::on_cross_examination_clicked() void Courtroom::on_not_guilty_clicked() { if (is_muted) + { return; + } - ao_app->send_server_packet(new AOPacket("RT", {"judgeruling", "0"})); + ao_app->send_server_packet(AOPacket("RT", {"judgeruling", "0"})); ui_ic_chat_message->setFocus(); } @@ -5541,9 +6124,11 @@ void Courtroom::on_not_guilty_clicked() void Courtroom::on_guilty_clicked() { if (is_muted) + { return; + } - ao_app->send_server_packet(new AOPacket("RT", {"judgeruling", "1"})); + ao_app->send_server_packet(AOPacket("RT", {"judgeruling", "1"})); ui_ic_chat_message->setFocus(); } @@ -5588,11 +6173,15 @@ void Courtroom::on_char_select_right_clicked() set_char_select_page(); } -void Courtroom::on_spectator_clicked() { char_clicked(-1); } +void Courtroom::on_spectator_clicked() +{ + char_clicked(-1); +} void Courtroom::on_call_mod_clicked() { - if (ao_app->modcall_reason_supported) { + if (ao_app->modcall_reason_supported) + { QMessageBox errorBox; QInputDialog input; @@ -5602,14 +6191,18 @@ void Courtroom::on_call_mod_clicked() auto code = input.exec(); if (code != QDialog::Accepted) + { return; + } QString text = input.textValue(); - if (text.isEmpty()) { + if (text.isEmpty()) + { errorBox.critical(nullptr, tr("Error"), tr("You must provide a reason.")); return; } - else if (text.length() > 256) { + else if (text.length() > 256) + { errorBox.critical(nullptr, tr("Error"), tr("The message is too long.")); return; } @@ -5617,24 +6210,35 @@ void Courtroom::on_call_mod_clicked() QStringList mod_reason; mod_reason.append(text); - ao_app->send_server_packet(new AOPacket("ZZ", mod_reason)); + ao_app->send_server_packet(AOPacket("ZZ", mod_reason)); } - else { - ao_app->send_server_packet(new AOPacket("ZZ")); + else + { + ao_app->send_server_packet(AOPacket("ZZ")); } ui_ic_chat_message->setFocus(); } -void Courtroom::on_settings_clicked() { ao_app->call_settings_menu(); } +void Courtroom::on_settings_clicked() +{ + ao_app->call_settings_menu(); +} -void Courtroom::on_pre_clicked() { ui_ic_chat_message->setFocus(); } +void Courtroom::on_pre_clicked() +{ + ui_ic_chat_message->setFocus(); +} -void Courtroom::on_flip_clicked() { ui_ic_chat_message->setFocus(); } +void Courtroom::on_flip_clicked() +{ + ui_ic_chat_message->setFocus(); +} void Courtroom::on_additive_clicked() { - if (ui_additive->isChecked()) { + if (ui_additive->isChecked()) + { ui_ic_chat_message->home(false); // move cursor to the start of the message ui_ic_chat_message->insert(" "); // preface the message by whitespace ui_ic_chat_message->end(false); // move cursor to the end of the message @@ -5643,7 +6247,10 @@ void Courtroom::on_additive_clicked() ui_ic_chat_message->setFocus(); } -void Courtroom::on_guard_clicked() { ui_ic_chat_message->setFocus(); } +void Courtroom::on_guard_clicked() +{ + ui_ic_chat_message->setFocus(); +} void Courtroom::on_showname_enable_clicked() { @@ -5655,24 +6262,23 @@ void Courtroom::regenerate_ic_chatlog() { ui_ic_chatlog->clear(); last_ic_message = ""; - foreach (chatlogpiece item, ic_chatlog_history) { - QString message = item.get_message(); - QString name = ui_showname_enable->isChecked() ? item.get_showname() - : item.get_name(); - append_ic_text(message, - name, - item.get_action(), item.get_chat_color(), - item.get_selfname(), item.get_datetime().toLocalTime()); + foreach (ChatLogPiece item, ic_chatlog_history) + { + QString message = item.message; + QString name = ui_showname_enable->isChecked() ? item.showname : item.name; + append_ic_text(message, name, item.action, item.color, item.selfname, item.datetime.toLocalTime()); } } void Courtroom::on_evidence_button_clicked() { - if (ui_evidence->isHidden()) { + if (ui_evidence->isHidden()) + { ui_evidence->show(); ui_evidence_overlay->hide(); } - else { + else + { ui_evidence->hide(); } } @@ -5680,61 +6286,55 @@ void Courtroom::on_evidence_button_clicked() void Courtroom::on_evidence_context_menu_requested(const QPoint &pos) { QMenu *menu = new QMenu(this); - menu->addAction(QString("Open base evidence folder"), this, - [=] { + menu->setAttribute(Qt::WA_DeleteOnClose, true); + menu->addAction(QString("Open base evidence folder"), this, [=] { QString p_path = get_base_path() + "evidence/"; - if (!dir_exists(p_path)) { + if (!dir_exists(p_path)) + { return; } QDesktopServices::openUrl(QUrl::fromLocalFile(p_path)); - } - ); + }); menu->popup(ui_evidence_button->mapToGlobal(pos)); } void Courtroom::on_switch_area_music_clicked() { - if (ui_area_list->isHidden()) { + if (ui_area_list->isHidden()) + { ui_area_list->show(); ui_music_list->hide(); last_music_search = ui_music_search->text(); ui_music_search->setText(last_area_search); } - else { + else + { ui_area_list->hide(); ui_music_list->show(); last_area_search = ui_music_search->text(); ui_music_search->setText(last_music_search); } on_music_search_edited(ui_music_search->text()); - } void Courtroom::ping_server() { ping_timer.start(); is_pinging = true; - ao_app->send_server_packet( - new AOPacket("CH", {QString::number(m_cid)})); + ao_app->send_server_packet(AOPacket("CH", {QString::number(m_cid)})); } qint64 Courtroom::pong() { if (!is_pinging) + { return -1; + } is_pinging = false; return ping_timer.elapsed(); } -void Courtroom::start_clock(int id) -{ - if (id >= 0 && id < max_clocks && ui_clock[id] != nullptr) - { - ui_clock[id]->start(); - } -} - void Courtroom::start_clock(int id, qint64 msecs) { if (id >= 0 && id < max_clocks && ui_clock[id] != nullptr) @@ -5755,10 +6355,13 @@ void Courtroom::set_clock(int id, qint64 msecs) void Courtroom::skip_clocks(qint64 msecs) { // Loop through all the timers - for (int i = 0; i < max_clocks; i++) { + for (int i = 0; i < max_clocks; i++) + { // Only skip time on active clocks if (ui_clock[i]->active()) + { ui_clock[i]->skip(msecs); + } } } @@ -5789,25 +6392,22 @@ void Courtroom::set_clock_visibility(int id, bool visible) void Courtroom::truncate_label_text(QWidget *p_widget, QString p_identifier) { QString filename = "courtroom_design.ini"; - pos_size_type design_ini_result = - ao_app->get_element_dimensions(p_identifier, filename); + pos_size_type design_ini_result = ao_app->get_element_dimensions(p_identifier, filename); // Get the width of the element as defined by the current theme // Cast to make sure we're working with one of the two supported widget types QLabel *p_label = qobject_cast(p_widget); QCheckBox *p_checkbox = qobject_cast(p_widget); - if (p_checkbox == nullptr && - p_label == - nullptr) { // i.e. the given p_widget isn't a QLabel or a QCheckBox + if (p_checkbox == nullptr && p_label == nullptr) + { // i.e. the given p_widget isn't a QLabel or a QCheckBox qWarning() << "Tried to truncate an unsupported widget:" << p_identifier; return; } // translate the text for the widget we're working with so we truncate the right string - QString label_text_tr = - QCoreApplication::translate(p_widget->metaObject()->className(), "%1") - .arg((p_label != nullptr ? p_label->text() : p_checkbox->text())); - if (label_text_tr.endsWith("…") || label_text_tr.endsWith("…")) { + QString label_text_tr = QCoreApplication::translate(p_widget->metaObject()->className(), "%1").arg((p_label != nullptr ? p_label->text() : p_checkbox->text())); + if (label_text_tr.endsWith("…") || label_text_tr.endsWith("…")) + { qInfo() << "Truncation aborted for label text" << label_text_tr << ", label text was already truncated!"; return; } @@ -5815,54 +6415,43 @@ void Courtroom::truncate_label_text(QWidget *p_widget, QString p_identifier) int checkbox_width = AOApplication::style()->pixelMetric(QStyle::PM_IndicatorWidth) + AOApplication::style()->pixelMetric(QStyle::PM_CheckBoxLabelSpacing); int label_theme_width = (p_label != nullptr ? design_ini_result.width : (design_ini_result.width - checkbox_width)); - int label_px_width = - p_widget->fontMetrics().boundingRect(label_text_tr).width(); // pixel width of our translated text - if (!p_widget->toolTip().startsWith(label_text_tr)) // don't want to append this multiple times + int label_px_width = p_widget->fontMetrics().boundingRect(label_text_tr).width(); // pixel width of our translated text + if (!p_widget->toolTip().startsWith(label_text_tr)) // don't want to append this multiple times + { p_widget->setToolTip(label_text_tr + "\n" + p_widget->toolTip()); + } // we can't do much with a 0-width widget, and there's no need to truncate if // the theme gives us enough space - if (label_theme_width <= 0 || label_px_width < label_theme_width) { - qDebug().nospace() << "Truncation aborted for label text " << label_text_tr - << ", either theme width <= 0 or label width < theme width."; + if (label_theme_width <= 0 || label_px_width < label_theme_width) + { + qDebug().nospace() << "Truncation aborted for label text " << label_text_tr << ", either theme width <= 0 or label width < theme width."; return; } QString truncated_label = label_text_tr; int truncated_px_width = label_px_width; - while (truncated_px_width > label_theme_width && truncated_label != "…") { + while (truncated_px_width > label_theme_width && truncated_label != "…") + { truncated_label.chop(2); truncated_label.append("…"); - truncated_px_width = - p_widget->fontMetrics().boundingRect(truncated_label).width(); + truncated_px_width = p_widget->fontMetrics().boundingRect(truncated_label).width(); } - if (truncated_label == "…") { + if (truncated_label == "…") + { // Safeguard against edge case where label text is shorter in px than '…', // causing an infinite loop. Additionally, having just an ellipse for a // label looks strange, so we don't set the new label. - qWarning() << "Potential infinite loop prevented: Label text " - << label_text_tr - << "truncated to '…', so truncation was aborted."; + qWarning() << "Potential infinite loop prevented: Label text " << label_text_tr << "truncated to '…', so truncation was aborted."; return; } if (p_label != nullptr) + { p_label->setText(truncated_label); + } else if (p_checkbox != nullptr) + { p_checkbox->setText(truncated_label); - qDebug().nospace() << "Truncated label text from " << label_text_tr << " (" - << label_px_width << "px) to " << truncated_label << " (" - << truncated_px_width << "px)"; -} - -Courtroom::~Courtroom() -{ - //save sound settings - Options::getInstance().setMusicVolume(ui_music_slider->value()); - Options::getInstance().setSfxVolume(ui_sfx_slider->value()); - Options::getInstance().setBlipVolume(ui_blip_slider->value()); - - delete music_player; - delete sfx_player; - delete objection_player; - delete blip_player; + } + qDebug().nospace() << "Truncated label text from " << label_text_tr << " (" << label_px_width << "px) to " << truncated_label << " (" << truncated_px_width << "px)"; } diff --git a/src/courtroom.h b/src/courtroom.h new file mode 100644 index 00000000..cdcd1e11 --- /dev/null +++ b/src/courtroom.h @@ -0,0 +1,964 @@ +#pragma once + +#include "aoapplication.h" +#include "aoblipplayer.h" +#include "aobutton.h" +#include "aocharbutton.h" +#include "aoclocklabel.h" +#include "aoemotebutton.h" +#include "aoemotepreview.h" +#include "aoevidencebutton.h" +#include "aoevidencedisplay.h" +#include "aoimage.h" +#include "aolayer.h" +#include "aomusicplayer.h" +#include "aopacket.h" +#include "aosfxplayer.h" +#include "aotextarea.h" +#include "aotextboxwidgets.h" +#include "chatlogpiece.h" +#include "datatypes.h" +#include "debug_functions.h" +#include "eventfilters.h" +#include "file_functions.h" +#include "hardware_functions.h" +#include "lobby.h" +#include "scrolltext.h" +#include "widgets/aooptionsdialog.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) +#include //added in Qt 5.10 +#endif +#include +#include +#include +#include +#include + +#include + +#include +#include + +class AOApplication; + +class Courtroom : public QMainWindow +{ + Q_OBJECT + +public: + explicit Courtroom(AOApplication *p_ao_app); + ~Courtroom(); + + void update_audio_volume(); + + void append_char(char_type p_char); + void append_music(QString f_music); + void append_area(QString f_area); + void clear_chars(); + void clear_music(); + void clear_areas(); + + void fix_last_area(); + + void arup_append(int players, QString status, QString cm, QString locked); + + void arup_clear(); + + void arup_modify(int type, int place, QString value); + + void character_loading_finished(); + + void set_courtroom_size(); + + // sets position of widgets based on theme ini files + void set_widgets(); + + // sets font size based on theme ini files + void set_font(QWidget *widget, QString class_name, QString p_identifier, QString p_char = QString(), QString font_name = QString(), int f_pointsize = 0); + + // Get the properly constructed font + QFont get_qfont(QString font_name, int f_pointsize, bool antialias = true); + + // actual operation of setting the font on a widget + void set_qfont(QWidget *widget, QString class_name, QFont font, QColor f_color = Qt::black, bool bold = false, bool outlined = false, QColor outline_color = QColor(0, 0, 0), int outline_width = 1); + + // helper function that calls above function on the relevant widgets + void set_fonts(QString p_char = QString()); + + // sets dropdown menu stylesheet + void set_stylesheet(QWidget *widget); + + // helper funciton that call above function on the relevant widgets + void set_stylesheets(); + + void set_window_title(QString p_title); + + // reads theme and sets size and pos based on the identifier (using p_misc if provided) + void set_size_and_pos(QWidget *p_widget, QString p_identifier, QString p_misc = QString()); + + // sets status as taken on character with cid n_char and places proper shading + // on charselect + void set_taken(int n_char, bool p_taken); + + // sets the current background to argument. also does some checks to see if + // it's a legacy bg + void set_background(QString p_background, bool display = false); + + // sets the local character pos/side to use. + void set_side(QString p_side); + + // sets the pos dropdown + void set_pos_dropdown(QStringList pos_dropdowns); + + // sets the evidence list member variable to argument + void set_evidence_list(QVector &p_evi_list); + + // called when a DONE#% from the server was received + void done_received(); + + // sets the local mute list based on characters available on the server + void set_mute_list(); + + // Sets the local pair list based on the characters available on the server. + void set_pair_list(); + + // sets desk and bg based on pos in chatmessage + void set_scene(bool show_desk, QString f_side); + + // sets ui_vp_player_char according to SELF_OFFSET, only a function bc it's used with desk_mod 4 and 5 + void set_self_offset(const QString &p_list); + + // takes in serverD-formatted IP list as prints a converted version to server + // OOC admittedly poorly named + void set_ip_list(QString p_list); + + // disables chat if current cid matches second argument + // enables if p_muted is false + void set_mute(bool p_muted, int p_cid); + + // cid = character id, returns the cid of the currently selected character + QString get_current_char(); + QString get_current_background(); + + // updates character to p_cid and updates necessary ui elements + // Optional "char_name" is the iniswap we're using + void update_character(int p_cid, QString char_name = QString(), bool reset_emote = false); + + // properly sets up some varibles: resets user state + void enter_courtroom(); + + // helper function that populates ui_music_list with the contents of + // music_list + void list_music(); + void list_areas(); + + // Debug log (formerly master server chat log) + void debug_message_handler(QtMsgType type, const QMessageLogContext &context, const QString &msg); + + // OOC chat log + void append_server_chatmessage(QString p_name, QString p_message, QString p_color); + + // Add the message packet to the stack + void chatmessage_enqueue(QStringList p_contents); + + // Parse the chat message packet and unpack it into the m_chatmessage[ITEM] format + void unpack_chatmessage(QStringList p_contents); + + // Skip the current queue, adding all the queue messages to the logs if desynchronized logs are disabled + void skip_chatmessage_queue(); + + enum LogMode + { + IO_ONLY, + DISPLAY_ONLY, + DISPLAY_AND_IO, + QUEUED, + }; + // Log the message contents and information such as evidence presenting etc. into the log file, the IC log, or both. + void log_chatmessage(QString f_message, int f_char_id, QString f_showname = QString(), QString f_char = QString(), QString f_objection_mod = QString(), int f_evi_id = 0, int f_color = 0, LogMode f_log_mode = IO_ONLY, bool sender = false); + + // Log the message contents and information such as evidence presenting etc. into the IC logs + void handle_callwords(); + + // Handle the objection logic, if it's interrupting the currently parsing message. + // Returns true if this message has an objection, otherwise returns false. The result decides when to call handle_ic_message() + bool handle_objection(); + + // Display the evidence image box when presenting evidence in IC + void display_evidence_image(); + + // Handle the stuff that comes when the character appears on screen and starts animating (preanims etc.) + void handle_ic_message(); + + // Display the character. + void display_character(); + + // Display the character's pair if present. + void display_pair_character(QString other_charid, QString other_offset); + + // Handle the emote modifier value and proceed through the logic accordingly. + void handle_emote_mod(int emote_mod, bool p_immediate); + + // Initialize the chatbox image, showname shenanigans, custom chatboxes, etc. + void initialize_chatbox(); + + // Finally start displaying the chatbox we initialized, display the evidence, and play the talking or idle emote for the character. + // Callwords are also handled here. + void handle_ic_speaking(); + + // This function filters out the common CC inline text trickery, for appending + // to the IC chatlog. + QString filter_ic_text(QString p_text, bool colorize = false, int pos = -1, int default_color = 0); + + void log_ic_text(QString p_name, QString p_showname, QString p_message, QString p_action = QString(), int p_color = 0, bool p_selfname = false); + + // adds text to the IC chatlog. p_name first as bold then p_text then a newlin + // this function keeps the chatlog scrolled to the top unless there's text + // selected + // or the user isn't already scrolled to the top + void append_ic_text(QString p_text, QString p_name = QString(), QString action = QString(), int color = 0, bool selfname = false, QDateTime timestamp = QDateTime::currentDateTime(), bool ghost = false); + + // clear sent messages that appear on the IC log but haven't been delivered + // yet to other players + void pop_ic_ghost(); + + // prints who played the song to IC chat and plays said song(if found on local + // filesystem) takes in a list where the first element is the song name and + // the second is the char id of who played it + void handle_song(QStringList *p_contents); + + void play_preanim(bool immediate); + + // plays the witness testimony or cross examination animation based on + // argument + void handle_wtce(QString p_wtce, int variant); + + // sets the hp bar of defense(p_bar 1) or pro(p_bar 2) + // state is an number between 0 and 10 inclusive + void set_hp_bar(int p_bar, int p_state); + + // Toggles the judge buttons, whether they should appear or not. + void show_judge_controls(bool visible); + + void start_clock(int id, qint64 msecs); + void set_clock(int id, qint64 msecs); + void pause_clock(int id); + void stop_clock(int id); + void set_clock_visibility(int id, bool visible); + void skip_clocks(qint64 msecs); + + qint64 pong(); + // Truncates text so it fits within theme-specified boundaries and sets the tooltip to the full string + void truncate_label_text(QWidget *p_widget, QString p_identifier); + + void on_authentication_state_received(int p_state); + + enum JudgeState + { + POS_DEPENDENT = -1, + HIDE_CONTROLS = 0, + SHOW_CONTROLS = 1 + }; + + JudgeState get_judge_state(); + void set_judge_state(JudgeState new_state); + void set_judge_buttons(); + +private: + AOApplication *ao_app; + + // Percentage of audio that is suppressed when client is not in focus + int suppress_audio = 0; + + int m_courtroom_width = 714; + int m_courtroom_height = 668; + + int m_viewport_x = 0; + int m_viewport_y = 0; + + int m_viewport_width = 256; + int m_viewport_height = 192; + + int maximumMessages = 0; + + QParallelAnimationGroup *screenshake_animation_group = new QParallelAnimationGroup; + + bool next_character_is_not_special = false; // If true, write the + // next character as it is. + + bool message_is_centered = false; + + int current_display_speed = 3; + int text_crawl = 40; + double message_display_mult[7] = {0, 0.25, 0.65, 1, 1.25, 1.75, 2.25}; + + // The character ID of the character this user wants to appear alongside with. + int other_charid = -1; + + // The horizontal offset this user has given if they want to appear alongside someone. + int char_offset = 0; + + // The vertical offset this user has given. + int char_vert_offset = 0; + + // 0 = in front, 1 = behind + int pair_order = 0; + + QVector char_list; + QVector evidence_list; + QVector music_list; + QVector area_list; + + QVector arup_players; + QVector arup_statuses; + QVector arup_cms; + QVector arup_locks; + + QVector ic_chatlog_history; + QString last_ic_message; + + QQueue chatmessage_queue; + + // triggers ping_server() every 45 seconds + QTimer *keepalive_timer; + + // determines how fast messages tick onto screen + QTimer *chat_tick_timer; + + // count up timer to check how long it took for us to get a response from ping_server() + QElapsedTimer ping_timer; + bool is_pinging = false; + + // int chat_tick_interval = 60; + // which tick position(character in chat message) we are at + int tick_pos = 0; + // the actual document tick pos we gotta worry about for making the text + // scroll better + int real_tick_pos = 0; + // used to determine how often blips sound + int blip_ticker = 0; + int blip_rate = 2; + int rainbow_counter = 0; + bool rainbow_appended = false; + bool blank_blip = false; + bool chatbox_always_show = false; + + // Used for getting the current maximum blocks allowed in the IC chatlog. + int log_maximum_blocks = 0; + + // True, if the log should go downwards. + bool log_goes_downwards = true; + + // True, if log should display colors. + bool log_colors = true; + + // True, if the log should display the message like name
text instead of + // name: text + bool log_newline = false; + + // True, if the log should include RP actions like interjections, showing evidence, etc. + bool log_ic_actions = true; + + // Margin in pixels between log entries for the IC log. + int log_margin = 0; + + // True, if the log should have a timestamp. + bool log_timestamp = false; + + // format string for aforementioned log timestamp + QString log_timestamp_format; + + // How long in miliseconds should the objection wait before appearing. + int objection_threshold = 1500; + + // delay before chat messages starts ticking + QTimer *text_delay_timer; + + // delay before the next queue entry is going to be processed + QTimer *text_queue_timer; + + // delay before sfx plays + QTimer *sfx_delay_timer; + + // every time point in char.inis times this equals the final time + const int time_mod = 40; + + // the amount of time non-animated objection/hold it/takethat images stay + // onscreen for in ms, and the maximum amount of time any interjections are + // allowed to play + const int shout_static_time = 724; + const int shout_max_time = 1500; + + // the amount of time non-animated guilty/not guilty images stay onscreen for + // in ms, and the maximum amount of time g/ng images are allowed to play + const int verdict_static_time = 3000; + const int verdict_max_time = 4000; + + // the amount of time non-animated witness testimony/cross-examination images + // stay onscreen for in ms, and the maximum time any wt/ce image is allowed to + // play + const int wtce_static_time = 1500; + const int wtce_max_time = 4000; + + // characters we consider punctuation + const QString punctuation_chars = ".,?!:;"; + + // amount by which we multiply the delay when we parse punctuation chars + const int punctuation_modifier = 3; + + // amount of ghost blocks + int ghost_blocks = 0; + + // Minumum and maximum number of parameters in the MS packet + static const int MS_MINIMUM = 15; + static const int MS_MAXIMUM = 30; + QString m_chatmessage[MS_MAXIMUM]; + + QString previous_ic_message; + QString additive_previous; + + // char id, muted or not + QMap mute_map; + + // QVector muted_cids; + + bool is_muted = false; + + JudgeState judge_state = POS_DEPENDENT; + + // state of animation, 0 = objecting, 1 = preanim, 2 = talking, 3 = idle, 4 = + // noniterrupting preanim, 5 = (c) animation + int anim_state = 3; + + // whether or not current color is a talking one + bool color_is_talking = true; + + // state of text ticking, 0 = not yet ticking, 1 = ticking in progress, 2 = + // ticking done + int text_state = 2; + + // character id, which index of the char_list the player is + int m_cid = -1; + // cid and this may differ in cases of ini-editing + QString current_char; + + int objection_state = 0; + QString objection_custom; + struct CustomObjection + { + QString name; + QString filename; + }; + QList custom_objections_list; + int realization_state = 0; + int screenshake_state = 0; + int text_color = 0; + + // How many unique user colors are possible + static const int max_colors = 12; + + // Text Color-related optimization: + // Current color list indexes to real color references + QVector color_row_to_number; + + // List of associated RGB colors for this color index + QVector color_rgb_list; + + // Same as above but populated from misc/default's config + QVector default_color_rgb_list; + + // Get a color index from an arbitrary misc config + void gen_char_rgb_list(QString p_misc); + QVector char_color_rgb_list; + + // Misc we used for the last message, and the one we're using now. Used to avoid loading assets when it's not needed + QString current_misc; + QString last_misc; + + // List of markdown start characters, their index is tied to the color index + QStringList color_markdown_start_list; + + // List of markdown end characters, their index is tied to the color index + QStringList color_markdown_end_list; + + // Whether or not we're supposed to remove this char during parsing + QVector color_markdown_remove_list; + + // Whether or not this color allows us to play the talking animation + QVector color_markdown_talking_list; + // Text Color-related optimization END + + // List of all currently available pos + QStringList pos_dropdown_list; + + // Current list file sorted line by line + QStringList sound_list; + + // Current SFX the user put in for the sfx dropdown list + QString custom_sfx; + + // is the message we're about to send supposed to present evidence? + bool is_presenting_evidence = false; + bool c_played = false; // whether we've played a (c)-style postanimation yet + + // have we already presented evidence for this message? + bool evidence_presented = false; + + QString effect; + + // Music effect flags we want to send to server when we play music + int music_flags = FADE_OUT; + + int defense_bar_state = 0; + int prosecution_bar_state = 0; + + int current_char_page = 0; + int char_columns = 10; + int char_rows = 9; + int max_chars_on_page = 90; + + const int button_width = 60; + const int button_height = 60; + + int current_emote_page = 0; + int current_emote = 0; + int emote_columns = 5; + int emote_rows = 2; + int max_emotes_on_page = 10; + + QVector local_evidence_list; + QVector private_evidence_list; + QVector global_evidence_list; + + // false = use private_evidence_list + bool current_evidence_global = true; + + int current_evidence_page = 0; + int current_evidence = 0; + int evidence_columns = 6; + int evidence_rows = 3; + int max_evidence_on_page = 18; + + // whether the ooc chat is server or master chat, true is server + bool server_ooc = true; + + QString current_background = "default"; + QString current_side; + + QString last_music_search; + QString last_area_search; + + QBrush free_brush; + QBrush lfp_brush; + QBrush casing_brush; + QBrush recess_brush; + QBrush rp_brush; + QBrush gaming_brush; + QBrush locked_brush; + + AOMusicPlayer *music_player; + AOSfxPlayer *sfx_player; + AOSfxPlayer *objection_player; + AOBlipPlayer *blip_player; + + AOSfxPlayer *modcall_player; + + AOImage *ui_background; + + QWidget *ui_viewport; + BackgroundLayer *ui_vp_background; + SplashLayer *ui_vp_speedlines; + CharLayer *ui_vp_player_char; + CharLayer *ui_vp_sideplayer_char; + BackgroundLayer *ui_vp_desk; + AOEvidenceDisplay *ui_vp_evidence_display; + AOImage *ui_vp_chatbox; + AOChatboxLabel *ui_vp_showname; + InterfaceLayer *ui_vp_chat_arrow; + QTextEdit *ui_vp_message; + SplashLayer *ui_vp_testimony; + SplashLayer *ui_vp_wtce; + EffectLayer *ui_vp_effect; + SplashLayer *ui_vp_objection; + + QTextEdit *ui_ic_chatlog; + + AOTextArea *ui_debug_log; + AOTextArea *ui_server_chatlog; + + QListWidget *ui_mute_list; + QTreeWidget *ui_area_list; + QTreeWidget *ui_music_list; + + ScrollText *ui_music_name; + InterfaceLayer *ui_music_display; + + StickerLayer *ui_vp_sticker; + + static const int max_clocks = 5; + AOClockLabel *ui_clock[max_clocks]; + + AOButton *ui_pair_button; + QListWidget *ui_pair_list; + QSpinBox *ui_pair_offset_spinbox; + QSpinBox *ui_pair_vert_offset_spinbox; + + QComboBox *ui_pair_order_dropdown; + + QLineEdit *ui_ic_chat_message; + AOLineEditFilter *ui_ic_chat_message_filter; + QLineEdit *ui_ic_chat_name; + + QLineEdit *ui_ooc_chat_message; + QLineEdit *ui_ooc_chat_name; + + // QLineEdit *ui_area_password; + QLineEdit *ui_music_search; + + QWidget *ui_emotes; + QVector ui_emote_list; + AOButton *ui_emote_left; + AOButton *ui_emote_right; + + QMenu *emote_menu; + AOEmotePreview *emote_preview; + + QComboBox *ui_emote_dropdown; + QComboBox *ui_pos_dropdown; + AOButton *ui_pos_remove; + + QComboBox *ui_iniswap_dropdown; + AOButton *ui_iniswap_remove; + + QComboBox *ui_sfx_dropdown; + AOButton *ui_sfx_remove; + + QComboBox *ui_effects_dropdown; + + AOImage *ui_defense_bar; + AOImage *ui_prosecution_bar; + + QLabel *ui_music_label; + QLabel *ui_sfx_label; + QLabel *ui_blip_label; + + AOButton *ui_hold_it; + AOButton *ui_objection; + AOButton *ui_take_that; + + AOButton *ui_ooc_toggle; + + AOButton *ui_witness_testimony; + AOButton *ui_cross_examination; + AOButton *ui_guilty; + AOButton *ui_not_guilty; + + AOButton *ui_change_character; + AOButton *ui_reload_theme; + AOButton *ui_call_mod; + AOButton *ui_settings; + AOButton *ui_switch_area_music; + + QCheckBox *ui_pre; + QCheckBox *ui_flip; + QCheckBox *ui_additive; + QCheckBox *ui_guard; + + QCheckBox *ui_immediate; + QCheckBox *ui_showname_enable; + + AOButton *ui_custom_objection; + QMenu *custom_obj_menu; + AOButton *ui_realization; + AOButton *ui_screenshake; + AOButton *ui_mute; + + AOButton *ui_defense_plus; + AOButton *ui_defense_minus; + + AOButton *ui_prosecution_plus; + AOButton *ui_prosecution_minus; + + QComboBox *ui_text_color; + + QSlider *ui_music_slider; + QSlider *ui_sfx_slider; + QSlider *ui_blip_slider; + + AOImage *ui_muted; + + AOButton *ui_evidence_button; + AOImage *ui_evidence; + QLineEdit *ui_evidence_name; + AOLineEditFilter *ui_evidence_name_filter; + QWidget *ui_evidence_buttons; + QVector ui_evidence_list; + AOButton *ui_evidence_left; + AOButton *ui_evidence_right; + AOButton *ui_evidence_present; + AOImage *ui_evidence_overlay; + AOButton *ui_evidence_delete; + QLineEdit *ui_evidence_image_name; + AOLineEditFilter *ui_evidence_image_name_filter; + AOButton *ui_evidence_image_button; + AOButton *ui_evidence_x; + AOButton *ui_evidence_ok; + AOButton *ui_evidence_switch; + AOButton *ui_evidence_transfer; + AOButton *ui_evidence_save; + AOButton *ui_evidence_load; + QPlainTextEdit *ui_evidence_description; + + AOImage *ui_char_select_background; + + // pretty list of characters + QTreeWidget *ui_char_list; + + // abstract widget to hold char buttons + QWidget *ui_char_buttons; + + QVector ui_char_button_list; + QVector ui_char_button_list_filtered; + + AOButton *ui_back_to_lobby; + + QLineEdit *ui_char_password; + + AOButton *ui_char_select_left; + AOButton *ui_char_select_right; + + AOButton *ui_spectator; + + QLineEdit *ui_char_search; + QCheckBox *ui_char_passworded; + QCheckBox *ui_char_taken; + + void construct_char_select(); + void set_char_select(); + void set_char_select_page(); + void char_clicked(int n_char); + void on_char_button_context_menu_requested(const QPoint &pos); + void put_button_in_place(int starting, int chars_on_this_page); + void filter_character_list(); + + void initialize_emotes(); + void refresh_emotes(); + void set_emote_page(); + void set_emote_dropdown(); + + void initialize_evidence(); + void refresh_evidence(); + void show_evidence(int f_real_id); + void set_evidence_page(); + + void reset_ui(); + + void regenerate_ic_chatlog(); +public Q_SLOTS: + void objection_done(); + void preanim_done(); + void do_screenshake(); + void do_flash(); + void do_effect(QString fx_path, QString fx_sound, QString p_char, QString p_folder); + void play_char_sfx(QString sfx_name); + + void mod_called(QString p_ip); + + void on_reload_theme_clicked(); + + void update_ui_music_name(); + +private Q_SLOTS: + void start_chat_ticking(); + void play_sfx(); + + void chat_tick(); + + void on_mute_list_clicked(QModelIndex p_index); + void on_pair_list_clicked(QModelIndex p_index); + + void on_chat_return_pressed(); + + void on_ooc_return_pressed(); + + void on_music_search_return_pressed(); + void on_music_search_edited(QString p_text); + void on_music_list_double_clicked(QTreeWidgetItem *p_item, int column); + void on_music_list_context_menu_requested(const QPoint &pos); + void music_fade_out(bool toggle); + void music_fade_in(bool toggle); + void music_synchronize(bool toggle); + void music_random(); + void music_list_expand_all(); + void music_list_collapse_all(); + void music_stop(bool no_effects = false); + void on_area_list_double_clicked(QTreeWidgetItem *p_item, int column); + + void select_emote(int p_id); + + void on_emote_clicked(int p_id); + + void on_emote_left_clicked(); + void on_emote_right_clicked(); + + void on_emote_dropdown_changed(int p_index); + void on_pos_dropdown_changed(int p_index); + void on_pos_dropdown_changed(QString p_text); + void on_pos_dropdown_context_menu_requested(const QPoint &pos); + void on_pos_remove_clicked(); + + void on_iniswap_dropdown_changed(int p_index); + void set_iniswap_dropdown(); + void on_iniswap_context_menu_requested(const QPoint &pos); + void on_iniswap_edit_requested(); + void on_iniswap_remove_clicked(); + + void on_sfx_dropdown_changed(int p_index); + void on_sfx_dropdown_custom(QString p_sfx); + void set_sfx_dropdown(); + void on_sfx_context_menu_requested(const QPoint &pos); + void on_sfx_play_clicked(); + void on_sfx_edit_requested(); + void on_sfx_remove_clicked(); + + void set_effects_dropdown(); + void on_effects_context_menu_requested(const QPoint &pos); + void on_effects_edit_requested(); + void on_character_effects_edit_requested(); + void on_effects_dropdown_changed(int p_index); + bool effects_dropdown_find_and_set(QString effect); + + QString get_char_sfx(); + int get_char_sfx_delay(); + + void on_evidence_name_edited(); + void on_evidence_image_name_edited(); + void on_evidence_image_button_clicked(); + void on_evidence_clicked(int p_id); + void on_evidence_double_clicked(int p_id); + + void on_evidence_hover(int p_id, bool p_state); + + void on_evidence_left_clicked(); + void on_evidence_right_clicked(); + void on_evidence_present_clicked(); + + void on_hold_it_clicked(); + void on_objection_clicked(); + void on_take_that_clicked(); + void on_custom_objection_clicked(); + void show_custom_objection_menu(const QPoint &pos); + + void show_emote_menu(const QPoint &pos); + + void on_realization_clicked(); + void on_screenshake_clicked(); + + void on_mute_clicked(); + void on_pair_clicked(); + void on_pair_order_dropdown_changed(int p_index); + + void on_defense_minus_clicked(); + void on_defense_plus_clicked(); + void on_prosecution_minus_clicked(); + void on_prosecution_plus_clicked(); + + void on_text_color_changed(int p_color); + void on_text_color_context_menu_requested(const QPoint &pos); + void set_text_color_dropdown(); + + void on_music_slider_moved(int p_value); + void on_sfx_slider_moved(int p_value); + void on_blip_slider_moved(int p_value); + + void on_log_limit_changed(int value); + void on_pair_offset_changed(int value); + void on_pair_vert_offset_changed(int value); + + void on_ooc_toggle_clicked(); + + void on_witness_testimony_clicked(); + void on_cross_examination_clicked(); + void on_not_guilty_clicked(); + void on_guilty_clicked(); + + void on_change_character_clicked(); + void on_call_mod_clicked(); + void on_settings_clicked(); + + void on_pre_clicked(); + void on_flip_clicked(); + void on_additive_clicked(); + void on_guard_clicked(); + + void on_showname_enable_clicked(); + + void on_evidence_button_clicked(); + void on_evidence_context_menu_requested(const QPoint &pos); + + void on_evidence_delete_clicked(); + bool on_evidence_x_clicked(); + void on_evidence_ok_clicked(); + void on_evidence_switch_clicked(); + void on_evidence_transfer_clicked(); + + void on_evidence_edited(); + + void evidence_close(); + void evidence_switch(bool global); + void on_evidence_save_clicked(); + void on_evidence_load_clicked(); + void evidence_save(QString filename); + void evidence_load(QString filename); + bool compare_evidence_changed(evi_type evi_a, evi_type evi_b); + + void on_back_to_lobby_clicked(); + + void on_char_list_double_clicked(QTreeWidgetItem *p_item, int column); + void on_char_select_left_clicked(); + void on_char_select_right_clicked(); + void on_char_search_changed(); + void on_char_taken_clicked(); + void on_char_passworded_clicked(); + + void on_spectator_clicked(); + + void on_switch_area_music_clicked(); + + void on_application_state_changed(Qt::ApplicationState state); + + void ping_server(); + + // Proceed to parse the oldest chatmessage and remove it from the stack + void chatmessage_dequeue(); + + void preview_emote(QString emote); + void update_emote_preview(); +}; diff --git a/src/datatypes.h b/src/datatypes.h new file mode 100644 index 00000000..9b2cbcc3 --- /dev/null +++ b/src/datatypes.h @@ -0,0 +1,147 @@ +#pragma once + +#include +#include + +enum connection_type +{ + TCP, + WEBSOCKETS, +}; + +static QMap to_connection_type = {{"tcp", connection_type::TCP}, {"ws", connection_type::WEBSOCKETS}}; + +struct server_type +{ + QString name; + QString desc; + QString ip; + int port; + connection_type socket_type; +}; + +struct emote_type +{ + QString comment; + QString preanim; + QString anim; + int mod; + QString sfx_name; + int sfx_delay; + int sfx_duration; +}; + +struct char_type +{ + QString name; + QString description; + QString evidence_string; + bool taken; +}; + +struct evi_type +{ + QString name; + QString description; + QString image; +}; + +struct chatmessage_type +{ + QString message; + QString character; + QString side; + QString sfx_name; + QString pre_emote; + QString emote; + int emote_modifier; + int objection_modifier; + int realization; + int text_color; + int evidence; + int cid; + int sfx_delay; + int flip; +}; + +struct area_type +{ + QString name; + QString background; + bool passworded; +}; + +struct pos_type +{ + int x; + int y; +}; + +struct pos_size_type +{ + int x = 0; + int y = 0; + int width = 0; + int height = 0; +}; + +enum CHAT_MESSAGE +{ + DESK_MOD = 0, + PRE_EMOTE, + CHAR_NAME, + EMOTE, + MESSAGE, + SIDE, + SFX_NAME, + EMOTE_MOD, + CHAR_ID, + SFX_DELAY, + OBJECTION_MOD, + EVIDENCE_ID, + FLIP, + REALIZATION, + TEXT_COLOR, + SHOWNAME, + OTHER_CHARID, + OTHER_NAME, + OTHER_EMOTE, + SELF_OFFSET, + OTHER_OFFSET, + OTHER_FLIP, + IMMEDIATE, + LOOPING_SFX, + SCREENSHAKE, + FRAME_SCREENSHAKE, + FRAME_REALIZATION, + FRAME_SFX, + ADDITIVE, + EFFECTS, +}; + +enum EMOTE_MOD_TYPE +{ + IDLE = 0, + PREANIM = 1, + ZOOM = 5, + PREANIM_ZOOM = 6, +}; + +enum DESK_MOD_TYPE +{ + DESK_HIDE = 0, + DESK_SHOW, + DESK_EMOTE_ONLY, + DESK_PRE_ONLY, + DESK_EMOTE_ONLY_EX, + DESK_PRE_ONLY_EX, + //"EX" for "expanded" + // dumb, i know, but throw the first stone if you have a better idea +}; + +enum MUSIC_EFFECT +{ + FADE_IN = 1, + FADE_OUT = 2, + SYNC_POS = 4 +}; diff --git a/src/debug_functions.cpp b/src/debug_functions.cpp index f4f7b3a7..79be51b3 100644 --- a/src/debug_functions.cpp +++ b/src/debug_functions.cpp @@ -1,3 +1,5 @@ +#include "debug_functions.h" + #include #include #include @@ -7,17 +9,13 @@ #include -#include "debug_functions.h" - void call_error(QString p_message) { QMessageBox *msgBox = new QMessageBox; msgBox->setAttribute(Qt::WA_DeleteOnClose); - msgBox->setText(QCoreApplication::translate("debug_functions", "Error: %1") - .arg(p_message)); - msgBox->setWindowTitle( - QCoreApplication::translate("debug_functions", "Error")); + msgBox->setText(QCoreApplication::translate("debug_functions", "Error: %1").arg(p_message)); + msgBox->setWindowTitle(QCoreApplication::translate("debug_functions", "Error")); // msgBox->setWindowModality(Qt::NonModal); msgBox->exec(); @@ -29,8 +27,7 @@ void call_notice(QString p_message) msgBox->setAttribute(Qt::WA_DeleteOnClose); msgBox->setText(p_message); - msgBox->setWindowTitle( - QCoreApplication::translate("debug_functions", "Notice")); + msgBox->setWindowTitle(QCoreApplication::translate("debug_functions", "Notice")); msgBox->setStandardButtons(QMessageBox::Ok); msgBox->setDefaultButton(QMessageBox::Ok); @@ -42,9 +39,10 @@ void call_notice(QString p_message) int counter = 3; const auto updateCounter = [msgBox, &counter] { if (counter <= 0) + { return; - msgBox->defaultButton()->setText( - QString("%1 (%2)").arg(QDialogButtonBox::tr("OK")).arg(counter)); + } + msgBox->defaultButton()->setText(QString("%1 (%2)").arg(QDialogButtonBox::tr("OK")).arg(counter)); counter--; }; @@ -58,6 +56,5 @@ void call_notice(QString p_message) intervalTimer.stop(); }); - msgBox->exec(); - + msgBox->exec(); } diff --git a/src/debug_functions.h b/src/debug_functions.h new file mode 100644 index 00000000..992ad37b --- /dev/null +++ b/src/debug_functions.h @@ -0,0 +1,6 @@ +#pragma once + +#include + +void call_error(QString message); +void call_notice(QString message); diff --git a/src/demoserver.cpp b/src/demoserver.cpp index 16d2b46e..c22160da 100644 --- a/src/demoserver.cpp +++ b/src/demoserver.cpp @@ -1,452 +1,501 @@ #include "demoserver.h" -#include "lobby.h" -DemoServer::DemoServer(QObject *parent) : QObject(parent) +DemoServer::DemoServer(QObject *parent) + : QObject(parent) { - timer = new QTimer(this); - timer->setTimerType(Qt::PreciseTimer); - timer->setSingleShot(true); + timer = new QTimer(this); + timer->setTimerType(Qt::PreciseTimer); + timer->setSingleShot(true); - tcp_server = new QTcpServer(this); - connect(tcp_server, &QTcpServer::newConnection, this, &DemoServer::accept_connection); - connect(timer, &QTimer::timeout, this, &DemoServer::playback); + tcp_server = new QTcpServer(this); + connect(tcp_server, &QTcpServer::newConnection, this, &DemoServer::accept_connection); + connect(timer, &QTimer::timeout, this, &DemoServer::playback); +} + +int DemoServer::port() +{ + return m_port; } void DemoServer::set_demo_file(QString filepath) { - filename = filepath; + filename = filepath; } void DemoServer::start_server() { - if (server_started) return; - if (!tcp_server->listen(QHostAddress::LocalHost, 0)) { - qCritical() << "Could not start demo playback server..."; - qDebug() << tcp_server->errorString(); - return; - } - this->port = tcp_server->serverPort(); - qInfo() << "Demo server started at port" << port; - server_started = true; + if (m_server_started) + { + return; + } + if (!tcp_server->listen(QHostAddress::LocalHost, 0)) + { + qCritical() << "Could not start demo playback server..."; + qDebug() << tcp_server->errorString(); + return; + } + this->m_port = tcp_server->serverPort(); + qInfo() << "Demo server started at port" << m_port; + m_server_started = true; } void DemoServer::destroy_connection() { - QTcpSocket* temp_socket = tcp_server->nextPendingConnection(); - connect(temp_socket, &QAbstractSocket::disconnected, temp_socket, &QObject::deleteLater); - temp_socket->disconnectFromHost(); - return; + QTcpSocket *temp_socket = tcp_server->nextPendingConnection(); + connect(temp_socket, &QAbstractSocket::disconnected, temp_socket, &QObject::deleteLater); + temp_socket->disconnectFromHost(); + return; } void DemoServer::accept_connection() { - if (filename.isEmpty()) - { - destroy_connection(); - return; - } - load_demo(filename); + if (filename.isEmpty()) + { + destroy_connection(); + return; + } + load_demo(filename); - if (demo_data.isEmpty()) - { - destroy_connection(); - return; - } + if (demo_data.isEmpty()) + { + destroy_connection(); + return; + } - if (demo_data.head().startsWith("SC#")) - { - sc_packet = demo_data.dequeue(); - AOPacket sc(sc_packet); - num_chars = sc.get_contents().length(); - } - else - { - sc_packet = "SC#%"; - num_chars = 0; - } + if (demo_data.head().startsWith("SC#")) + { + sc_packet = demo_data.dequeue(); + AOPacket sc(sc_packet); + num_chars = sc.get_content().length(); + } + else + { + sc_packet = "SC#%"; + num_chars = 0; + } - if (client_sock) { - // Client is already connected... - qWarning() << "Multiple connections to demo server disallowed."; - QTcpSocket* temp_socket = tcp_server->nextPendingConnection(); - connect(temp_socket, &QAbstractSocket::disconnected, temp_socket, &QObject::deleteLater); - temp_socket->disconnectFromHost(); - return; - } - client_sock = tcp_server->nextPendingConnection(); - connect(client_sock, &QAbstractSocket::disconnected, this, &DemoServer::client_disconnect); - connect(client_sock, &QAbstractSocket::readyRead, this, &DemoServer::recv_data); - client_sock->write("decryptor#NOENCRYPT#%"); + if (client_sock) + { + // Client is already connected... + qWarning() << "Multiple connections to demo server disallowed."; + QTcpSocket *temp_socket = tcp_server->nextPendingConnection(); + connect(temp_socket, &QAbstractSocket::disconnected, temp_socket, &QObject::deleteLater); + temp_socket->disconnectFromHost(); + return; + } + client_sock = tcp_server->nextPendingConnection(); + connect(client_sock, &QAbstractSocket::disconnected, this, &DemoServer::client_disconnect); + connect(client_sock, &QAbstractSocket::readyRead, this, &DemoServer::recv_data); + client_sock->write("decryptor#NOENCRYPT#%"); } void DemoServer::recv_data() { - QString in_data = QString::fromUtf8(client_sock->readAll()); + QString in_data = QString::fromUtf8(client_sock->readAll()); #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) - const QStringList packet_list = in_data.split("%", QString::SplitBehavior(QString::SkipEmptyParts)); + const QStringList packet_list = in_data.split("%", QString::SplitBehavior(QString::SkipEmptyParts)); #else - const QStringList packet_list = in_data.split("%", Qt::SkipEmptyParts); + const QStringList packet_list = in_data.split("%", Qt::SkipEmptyParts); #endif - for (const QString &packet : packet_list) { - QStringList f_contents; - // Packet should *always* end with # - if (packet.endsWith("#")) { - f_contents = packet.chopped(1).split("#"); - } - // But, if it somehow doesn't, we should still be able to handle it - else { - f_contents = packet.split("#"); - } - // Empty packets are suspicious! - if (f_contents.isEmpty()) { - qWarning() << "WARNING: Empty packet received from server, skipping..."; - continue; - } - // Take the first arg as the command - QString command = f_contents.takeFirst(); - // The rest is contents of the packet - AOPacket *f_packet = new AOPacket(command, f_contents); - // Ship it to the server! - handle_packet(f_packet); + for (const QString &packet : packet_list) + { + QStringList f_contents; + // Packet should *always* end with # + if (packet.endsWith("#")) + { + f_contents = packet.chopped(1).split("#"); + } + // But, if it somehow doesn't, we should still be able to handle it + else + { + f_contents = packet.split("#"); + } + // Empty packets are suspicious! + if (f_contents.isEmpty()) + { + qWarning() << "WARNING: Empty packet received from server, skipping..."; + continue; + } + // Take the first arg as the command + QString command = f_contents.takeFirst(); + for (QString &data : f_contents) + { + data = AOPacket::decode(data); } + + // The rest is contents of the packet + AOPacket f_packet(command, f_contents); + + // Ship it to the server! + handle_packet(f_packet); + } } -void DemoServer::handle_packet(AOPacket *p_packet) +void DemoServer::handle_packet(AOPacket p_packet) { - p_packet->net_decode(); - - // This code is literally a barebones AO server - // It is wise to do it this way, because I can - // avoid touching any of this disgusting shit - // related to hardcoding this stuff in. + // This code is literally a barebones AO server + // It is wise to do it this way, because I can + // avoid touching any of this disgusting shit + // related to hardcoding this stuff in. - // Also, at some point, I will make akashit - // into a shared library. + // Also, at some point, I will make akashit + // into a shared library. - QString header = p_packet->get_header(); - QStringList contents = p_packet->get_contents(); + QString header = p_packet.get_header(); + QStringList contents = p_packet.get_content(); - if (header == "HI") { - client_sock->write("ID#0#DEMOINTERNAL#0#%"); - } - else if (header == "ID") { - QStringList feature_list = { - "noencryption", "yellowtext", "prezoom", - "flipping", "customobjections", "fastloading", - "deskmod", "evidence", "cccc_ic_support", - "arup", "casing_alerts", "modcall_reason", - "looping_sfx", "additive", "effects", - "y_offset", "expanded_desk_mods"}; - client_sock->write("PN#0#1#%"); - client_sock->write("FL#"); - client_sock->write(feature_list.join('#').toUtf8()); - client_sock->write("#%"); - } - else if (header == "askchaa") { - client_sock->write("SI#"); - client_sock->write(QString::number(num_chars).toUtf8()); - client_sock->write("#0#1#%"); - } - else if (header == "RC") { - client_sock->write(sc_packet.toUtf8()); - } - else if (header == "RM") { - client_sock->write("SM#%"); - } - else if (header == "RD") { - client_sock->write("DONE#%"); + if (header == "HI") + { + client_sock->write("ID#0#DEMOINTERNAL#0#%"); + } + else if (header == "ID") + { + QStringList feature_list = {"noencryption", "yellowtext", "prezoom", "flipping", "customobjections", "fastloading", "deskmod", "evidence", "cccc_ic_support", "arup", "casing_alerts", "modcall_reason", "looping_sfx", "additive", "effects", "y_offset", "expanded_desk_mods"}; + client_sock->write("PN#0#1#%"); + client_sock->write("FL#"); + client_sock->write(feature_list.join('#').toUtf8()); + client_sock->write("#%"); + } + else if (header == "askchaa") + { + client_sock->write("SI#"); + client_sock->write(QString::number(num_chars).toUtf8()); + client_sock->write("#0#1#%"); + } + else if (header == "RC") + { + client_sock->write(sc_packet.toUtf8()); + } + else if (header == "RM") + { + client_sock->write("SM#%"); + } + else if (header == "RD") + { + client_sock->write("DONE#%"); + } + else if (header == "CC") + { + client_sock->write("PV#0#CID#-1#%"); + QString packet = "CT#DEMO#" + tr("Demo file loaded. Send /play or > in OOC to begin playback.") + "#1#%"; + client_sock->write(packet.toUtf8()); + } + else if (header == "CT") + { + if (contents[1].startsWith("/load")) + { + QString path = QFileDialog::getOpenFileName(nullptr, tr("Load Demo"), "logs/", tr("Demo Files (*.demo)")); + if (path.isEmpty()) + { + return; + } + load_demo(path); + QString packet = "CT#DEMO#" + tr("Demo file loaded. Send /play or > in OOC to begin playback.") + "#1#%"; + client_sock->write(packet.toUtf8()); + reset_state(); } - else if (header == "CC") { - client_sock->write("PV#0#CID#-1#%"); - QString packet = "CT#DEMO#" + tr("Demo file loaded. Send /play or > in OOC to begin playback.") + "#1#%"; + else if (contents[1].startsWith("/play") || contents[1] == ">") + { + if (timer->interval() != 0 && !timer->isActive()) + { + timer->start(); + QString packet = "CT#DEMO#" + tr("Resuming playback.") + "#1#%"; client_sock->write(packet.toUtf8()); - } - else if (header == "CT") { - if (contents[1].startsWith("/load")) + } + else + { + if (demo_data.isEmpty() && p_path != "") { - QString path = QFileDialog::getOpenFileName(nullptr, tr("Load Demo"), "logs/", tr("Demo Files (*.demo)")); - if (path.isEmpty()) - return; - load_demo(path); - QString packet = "CT#DEMO#" + tr("Demo file loaded. Send /play or > in OOC to begin playback.") + "#1#%"; - client_sock->write(packet.toUtf8()); - reset_state(); + load_demo(p_path); } - else if (contents[1].startsWith("/play") || contents[1] == ">") + playback(); + } + } + else if (contents[1].startsWith("/pause") || contents[1] == "|") + { + int timeleft = timer->remainingTime(); + timer->stop(); + timer->setInterval(timeleft); + QString packet = "CT#DEMO#" + tr("Pausing playback.") + "#1#%"; + client_sock->write(packet.toUtf8()); + } + else if (contents[1].startsWith("/max_wait")) + { + QStringList args = contents[1].split(" "); + if (args.size() > 1) + { + bool ok; + int p_max_wait = args.at(1).toInt(&ok); + if (ok) { - if (timer->interval() != 0 && !timer->isActive()) - { - timer->start(); - QString packet = "CT#DEMO#" + tr("Resuming playback.") + "#1#%"; - client_sock->write(packet.toUtf8()); - } - else + if (p_max_wait < 0) { - if (demo_data.isEmpty() && p_path != "") - load_demo(p_path); - playback(); + p_max_wait = -1; } + m_max_wait = p_max_wait; + QString packet = "CT#DEMO#" + tr("Setting max_wait to") + " "; + client_sock->write(packet.toUtf8()); + client_sock->write(QString::number(m_max_wait).toUtf8()); + packet = " " + tr("milliseconds.") + "#1#%"; + client_sock->write(packet.toUtf8()); } - else if (contents[1].startsWith("/pause") || contents[1] == "|") + else { - int timeleft = timer->remainingTime(); - timer->stop(); - timer->setInterval(timeleft); - QString packet = "CT#DEMO#" + tr("Pausing playback.") + "#1#%"; + QString packet = "CT#DEMO#" + tr("Not a valid integer!") + "#1#%"; client_sock->write(packet.toUtf8()); } - else if (contents[1].startsWith("/max_wait")) + } + else + { + QString packet = "CT#DEMO#" + tr("Current max_wait is") + " "; + client_sock->write(packet.toUtf8()); + client_sock->write(QString::number(m_max_wait).toUtf8()); + packet = " " + tr("milliseconds.") + "#1#%"; + client_sock->write(packet.toUtf8()); + } + } + else if (contents[1].startsWith("/reload")) + { + load_demo(p_path); + QString packet = "CT#DEMO#" + tr("Current demo file reloaded. Send /play or > in OOC to begin playback.") + "#1#%"; + client_sock->write(packet.toUtf8()); + reset_state(); + } + else if (contents[1].startsWith("/min_wait")) + { + QString packet = "CT#DEMO#" + tr("min_wait is deprecated. Use the client Settings for minimum wait instead!") + "#1#%"; + client_sock->write(packet.toUtf8()); + } + else if (contents[1].startsWith("/debug")) + { + QStringList args = contents[1].split(" "); + if (args.size() > 1) + { + bool ok; + int toggle = args.at(1).toInt(&ok); + if (ok && (toggle == 0 || toggle == 1)) { - QStringList args = contents[1].split(" "); - if (args.size() > 1) - { - bool ok; - int p_max_wait = args.at(1).toInt(&ok); - if (ok) - { - if (p_max_wait < 0) - p_max_wait = -1; - max_wait = p_max_wait; - QString packet = "CT#DEMO#" + tr("Setting max_wait to") + " "; - client_sock->write(packet.toUtf8()); - client_sock->write(QString::number(max_wait).toUtf8()); - packet = " " + tr("milliseconds.") + "#1#%"; - client_sock->write(packet.toUtf8()); - } - else - { - QString packet = "CT#DEMO#" + tr("Not a valid integer!") + "#1#%"; - client_sock->write(packet.toUtf8()); - } - } - else + debug_mode = toggle == 1; + QString packet = "CT#DEMO#" + tr("Setting debug mode to %1").arg(static_cast(debug_mode)) + "#1#%"; + client_sock->write(packet.toUtf8()); + // Debug mode disabled? + if (!debug_mode) { - - QString packet = "CT#DEMO#" + tr("Current max_wait is") + " "; - client_sock->write(packet.toUtf8()); - client_sock->write(QString::number(max_wait).toUtf8()); - packet = " " + tr("milliseconds.") + "#1#%"; - client_sock->write(packet.toUtf8()); + // Reset the timer + client_sock->write("TI#4#1#0#%"); + client_sock->write("TI#4#3#0#%"); } } - else if (contents[1].startsWith("/reload")) + else { - load_demo(p_path); - QString packet = "CT#DEMO#" + tr("Current demo file reloaded. Send /play or > in OOC to begin playback.") + "#1#%"; - client_sock->write(packet.toUtf8()); - reset_state(); - } - else if (contents[1].startsWith("/min_wait")) - { - QString packet = "CT#DEMO#" + tr("min_wait is deprecated. Use the client Settings for minimum wait instead!") + "#1#%"; - client_sock->write(packet.toUtf8()); - } - else if (contents[1].startsWith("/debug")) - { - QStringList args = contents[1].split(" "); - if (args.size() > 1) - { - bool ok; - int toggle = args.at(1).toInt(&ok); - if (ok && (toggle == 0 || toggle == 1)) { - debug_mode = toggle == 1; - QString packet = "CT#DEMO#" + tr("Setting debug mode to %1").arg(static_cast(debug_mode)) + "#1#%"; - client_sock->write(packet.toUtf8()); - // Debug mode disabled? - if (!debug_mode) { - // Reset the timer - client_sock->write("TI#4#1#0#%"); - client_sock->write("TI#4#3#0#%"); - } - } - else - { - QString packet = "CT#DEMO#" + tr("Valid values are 1 or 0!") + "#1#%"; - client_sock->write(packet.toUtf8()); - } - } - else - { - QString packet = "CT#DEMO#" + tr("Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line.") + "#1#%"; - client_sock->write(packet.toUtf8()); - } - } - else if (contents[1].startsWith("/help")) - { - QString packet = "CT#DEMO#" + tr("Available commands:\nload, reload, play, pause, max_wait, debug, help") + "#1#%"; - client_sock->write(packet.toUtf8()); + QString packet = "CT#DEMO#" + tr("Valid values are 1 or 0!") + "#1#%"; + client_sock->write(packet.toUtf8()); } + } + else + { + QString packet = "CT#DEMO#" + tr("Set debug mode using /debug 1 to enable, and /debug 0 to disable, which will use the fifth timer (TI#4) to show the remaining time until next demo line.") + "#1#%"; + client_sock->write(packet.toUtf8()); + } } - - delete p_packet; + else if (contents[1].startsWith("/help")) + { + QString packet = "CT#DEMO#" + tr("Available commands:\nload, reload, play, pause, max_wait, debug, help") + "#1#%"; + client_sock->write(packet.toUtf8()); + } + } } void DemoServer::load_demo(QString filename) { - QFile demo_file(filename); - demo_file.open(QIODevice::ReadOnly); - if (!demo_file.isOpen()) - return; - // Clear demo data - demo_data.clear(); - // Set the demo filepath - p_path = filename; - // Process the demo file - QTextStream demo_stream(&demo_file); + QFile demo_file(filename); + demo_file.open(QIODevice::ReadOnly); + if (!demo_file.isOpen()) + { + return; + } + // Clear demo data + demo_data.clear(); + // Set the demo filepath + p_path = filename; + // Process the demo file + QTextStream demo_stream(&demo_file); #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - demo_stream.setCodec("UTF-8"); + demo_stream.setCodec("UTF-8"); #endif - QString line = demo_stream.readLine(); - while (!line.isNull()) { - while (!line.endsWith("%")) { - line += "\n"; - line += demo_stream.readLine(); - } - demo_data.enqueue(line); - line = demo_stream.readLine(); + QString line = demo_stream.readLine(); + while (!line.isNull()) + { + while (!line.endsWith("%")) + { + line += "\n"; + line += demo_stream.readLine(); } - demo_file.flush(); - demo_file.close(); + demo_data.enqueue(line); + line = demo_stream.readLine(); + } + demo_file.flush(); + demo_file.close(); - // No-shenanigans 2.9.0 demo file with the dreaded demo desync bug detected https://github.com/AttorneyOnline/AO2-Client/pull/496 - // If we don't start with the SC packet this means user-edited weirdo shenanigans. Don't screw around with those. - if (demo_data.head().startsWith("SC#") && demo_data.last().startsWith("wait#")) { - qInfo() << "Loaded a broken pre-2.9.1 demo file, with the wait desync issue!"; - QMessageBox *msgBox = new QMessageBox; - msgBox->setAttribute(Qt::WA_DeleteOnClose); - msgBox->setTextFormat(Qt::RichText); - msgBox->setText("This appears to be a broken pre-2.9.1 demo file with the wait desync issue!
Do you want to correct this file? If you refuse, this demo will be desynchronized!"); - msgBox->setWindowTitle("Pre-2.9.1 demo detected!"); - msgBox->setStandardButtons(QMessageBox::NoButton); - QTimer::singleShot(2000, msgBox, std::bind(&QMessageBox::setStandardButtons,msgBox,QMessageBox::Yes|QMessageBox::No)); - int ret = msgBox->exec(); - QQueue p_demo_data; - switch (ret) { - case QMessageBox::Yes: - qInfo() << "Making a backup of the broken demo..."; - QFile::copy(filename, filename + ".backup"); - while (!demo_data.isEmpty()) { - QString current_packet = demo_data.dequeue(); - // TODO: faster way of doing this, maybe with QtConcurrent's MapReduce methods? - if (!current_packet.startsWith("SC#") && current_packet.startsWith("wait#")) { - p_demo_data.insert(qMax(1, p_demo_data.size()-1), current_packet); - continue; - } - p_demo_data.enqueue(current_packet); - } - if (demo_file.open(QIODevice::WriteOnly | QIODevice::Text | - QIODevice::Truncate)) { - QTextStream out(&demo_file); + // No-shenanigans 2.9.0 demo file with the dreaded demo desync bug detected https://github.com/AttorneyOnline/AO2-Client/pull/496 + // If we don't start with the SC packet this means user-edited weirdo shenanigans. Don't screw around with those. + if (demo_data.head().startsWith("SC#") && demo_data.last().startsWith("wait#")) + { + qInfo() << "Loaded a broken pre-2.9.1 demo file, with the wait desync issue!"; + QMessageBox *msgBox = new QMessageBox; + msgBox->setAttribute(Qt::WA_DeleteOnClose); + msgBox->setTextFormat(Qt::RichText); + msgBox->setText("This appears to be a broken pre-2.9.1 demo file with the wait desync issue!
Do you want to correct this file? If you refuse, this demo will be desynchronized!"); + msgBox->setWindowTitle("Pre-2.9.1 demo detected!"); + msgBox->setStandardButtons(QMessageBox::NoButton); + QTimer::singleShot(2000, msgBox, std::bind(&QMessageBox::setStandardButtons, msgBox, QMessageBox::Yes | QMessageBox::No)); + int ret = msgBox->exec(); + QQueue p_demo_data; + switch (ret) + { + case QMessageBox::Yes: + qInfo() << "Making a backup of the broken demo..."; + QFile::copy(filename, filename + ".backup"); + while (!demo_data.isEmpty()) + { + QString current_packet = demo_data.dequeue(); + // TODO: faster way of doing this, maybe with QtConcurrent's MapReduce methods? + if (!current_packet.startsWith("SC#") && current_packet.startsWith("wait#")) + { + p_demo_data.insert(qMax(1, p_demo_data.size() - 1), current_packet); + continue; + } + p_demo_data.enqueue(current_packet); + } + if (demo_file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) + { + QTextStream out(&demo_file); #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - out.setCodec("UTF-8"); + out.setCodec("UTF-8"); #endif - out << p_demo_data.dequeue(); - for (const QString &line : qAsConst(p_demo_data)) { - out << "\n" << line; - } - demo_file.flush(); - demo_file.close(); - } - load_demo(filename); - break; - case QMessageBox::No: - // No was clicked - break; - default: - // should never be reached - break; + out << p_demo_data.dequeue(); + for (const QString &line : qAsConst(p_demo_data)) + { + out << "\n" << line; + } + demo_file.flush(); + demo_file.close(); } + load_demo(filename); + break; + case QMessageBox::No: + // No was clicked + break; + default: + // should never be reached + break; } + } } void DemoServer::reset_state() { - // Reset evidence list - client_sock->write("LE##%"); + // Reset evidence list + client_sock->write("LE##%"); - // Reset timers - client_sock->write("TI#0#1#0#%"); - client_sock->write("TI#0#3#0#%"); - client_sock->write("TI#1#1#0#%"); - client_sock->write("TI#1#3#0#%"); - client_sock->write("TI#2#1#0#%"); - client_sock->write("TI#2#3#0#%"); - client_sock->write("TI#3#1#0#%"); - client_sock->write("TI#3#3#0#%"); - client_sock->write("TI#4#1#0#%"); - client_sock->write("TI#4#3#0#%"); + // Reset timers + client_sock->write("TI#0#1#0#%"); + client_sock->write("TI#0#3#0#%"); + client_sock->write("TI#1#1#0#%"); + client_sock->write("TI#1#3#0#%"); + client_sock->write("TI#2#1#0#%"); + client_sock->write("TI#2#3#0#%"); + client_sock->write("TI#3#1#0#%"); + client_sock->write("TI#3#3#0#%"); + client_sock->write("TI#4#1#0#%"); + client_sock->write("TI#4#3#0#%"); - // Set the BG to default (also breaks up the message queue) - client_sock->write("BN#default#wit#%"); + // Set the BG to default (also breaks up the message queue) + client_sock->write("BN#default#wit#%"); - // Stop the wait packet timer - timer->stop(); + // Stop the wait packet timer + timer->stop(); } void DemoServer::playback() { - if (demo_data.isEmpty()) - return; + if (demo_data.isEmpty()) + { + return; + } - QString current_packet = demo_data.dequeue(); - // We reset the elapsed time with this packet - if (current_packet.startsWith("MS#")) - elapsed_time = 0; + QString current_packet = demo_data.dequeue(); + // We reset the elapsed time with this packet + if (current_packet.startsWith("MS#")) + { + elapsed_time = 0; + } - while (!current_packet.startsWith("wait#")) { - client_sock->write(current_packet.toUtf8()); - if (demo_data.isEmpty()) - break; - current_packet = demo_data.dequeue(); + while (!current_packet.startsWith("wait#")) + { + client_sock->write(current_packet.toUtf8()); + if (demo_data.isEmpty()) + { + break; } - if (!demo_data.isEmpty()) { - QStringList f_contents; - // Packet should *always* end with # - if (current_packet.endsWith("#")) { - f_contents = current_packet.chopped(1).split("#"); - } - // But, if it somehow doesn't, we should still be able to handle it - else { - f_contents = current_packet.split("#"); - } - // Take the first arg as the command - QString command = f_contents.takeFirst(); - int duration = 0; - if (!f_contents.isEmpty()) { - duration = f_contents.at(0).toInt(); - } - // Max wait reached - if (max_wait != -1 && duration + elapsed_time > max_wait) { - int prev_duration = duration; - duration = qMax(0, max_wait - elapsed_time); - qDebug() << "Max_wait of " << max_wait << " reached. Forcing duration to " << duration << "ms"; - // Skip the difference on the timers - emit skip_timers(prev_duration - duration); - } - // Manual user skip, such as with > - else if (timer->remainingTime() > 0) { - qDebug() << "Timer of interval " << timer->interval() << " is being skipped. Forcing to skip " << timer->remainingTime() << "ms on TI# clocks"; - emit skip_timers(timer->remainingTime()); - } - elapsed_time += duration; - timer->start(duration); - if (debug_mode) { - client_sock->write("TI#4#2#%"); - QString debug_timer = "TI#4#0#" + QString::number(duration) + "#%"; - client_sock->write(debug_timer.toUtf8()); - } + current_packet = demo_data.dequeue(); + } + if (!demo_data.isEmpty()) + { + QStringList f_contents; + // Packet should *always* end with # + if (current_packet.endsWith("#")) + { + f_contents = current_packet.chopped(1).split("#"); + } + // But, if it somehow doesn't, we should still be able to handle it + else + { + f_contents = current_packet.split("#"); } - else { - QString end_packet = "CT#DEMO#" + tr("Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file.") + "#1#%"; - client_sock->write(end_packet.toUtf8()); - timer->setInterval(0); + // Take the first arg as the command + QString command = f_contents.takeFirst(); + int duration = 0; + if (!f_contents.isEmpty()) + { + duration = f_contents.at(0).toInt(); + } + // Max wait reached + if (m_max_wait != -1 && duration + elapsed_time > m_max_wait) + { + int prev_duration = duration; + duration = qMax(0, m_max_wait - elapsed_time); + qDebug() << "Max_wait of " << m_max_wait << " reached. Forcing duration to " << duration << "ms"; + // Skip the difference on the timers + Q_EMIT skip_timers(prev_duration - duration); + } + // Manual user skip, such as with > + else if (timer->remainingTime() > 0) + { + qDebug() << "Timer of interval " << timer->interval() << " is being skipped. Forcing to skip " << timer->remainingTime() << "ms on TI# clocks"; + Q_EMIT skip_timers(timer->remainingTime()); + } + elapsed_time += duration; + timer->start(duration); + if (debug_mode) + { + client_sock->write("TI#4#2#%"); + QString debug_timer = "TI#4#0#" + QString::number(duration) + "#%"; + client_sock->write(debug_timer.toUtf8()); } + } + else + { + QString end_packet = "CT#DEMO#" + tr("Reached the end of the demo file. Send /play or > in OOC to restart, or /load to open a new file.") + "#1#%"; + client_sock->write(end_packet.toUtf8()); + timer->setInterval(0); + } } void DemoServer::client_disconnect() { - client_sock->deleteLater(); - client_sock = nullptr; + client_sock->deleteLater(); + client_sock = nullptr; } diff --git a/src/demoserver.h b/src/demoserver.h new file mode 100644 index 00000000..f52fbc7e --- /dev/null +++ b/src/demoserver.h @@ -0,0 +1,60 @@ +#pragma once + +#include "aopacket.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +class DemoServer : public QObject +{ + Q_OBJECT + +public: + explicit DemoServer(QObject *parent = nullptr); + + int port(); + + void set_demo_file(QString filepath); + +private: + bool m_server_started = false; + int m_port = 0; + int m_max_wait = -1; + + QTcpServer *tcp_server; + QTcpSocket *client_sock = nullptr; + bool client_connected = false; + bool partial_packet = false; + bool debug_mode = false; + QString temp_packet; + QQueue demo_data; + QString sc_packet; + int num_chars = 0; + QString p_path; + QTimer *timer; + int elapsed_time = 0; + QString filename; + + void handle_packet(AOPacket packet); + void load_demo(QString filename); + void reset_state(); + +private Q_SLOTS: + void accept_connection(); + void destroy_connection(); + void recv_data(); + void client_disconnect(); + void playback(); + +public Q_SLOTS: + void start_server(); + +Q_SIGNALS: + void skip_timers(qint64 msecs); +}; diff --git a/src/discord_rich_presence.cpp b/src/discord_rich_presence.cpp index 81e5a86c..6969334f 100644 --- a/src/discord_rich_presence.cpp +++ b/src/discord_rich_presence.cpp @@ -1,14 +1,17 @@ #include "discord_rich_presence.h" -namespace AttorneyOnline { +namespace AttorneyOnline +{ -#if defined(DISCORD) && !defined(ANDROID) +#if defined(AO_ENABLE_DISCORD_RPC) && !defined(ANDROID) Discord::Discord() { DiscordEventHandlers handlers; std::memset(&handlers, 0, sizeof(handlers)); handlers = {}; - handlers.ready = [] { qInfo() << "Discord RPC ready"; }; + handlers.ready = [](const DiscordUser *user) { + qInfo() << "Discord RPC ready"; + }; handlers.disconnected = [](int errorCode, const char *message) { qInfo() << "Discord RPC disconnected! " << message << errorCode; }; @@ -19,7 +22,10 @@ Discord::Discord() Discord_Initialize(APPLICATION_ID, &handlers, 1, nullptr); } -Discord::~Discord() { Discord_Shutdown(); } +Discord::~Discord() +{ + Discord_Shutdown(); +} void Discord::state_lobby() { @@ -59,12 +65,10 @@ void Discord::state_server(std::string name, std::string server_id) void Discord::state_character(std::string name) { - auto name_internal = - QString(name.c_str()).toLower().replace(' ', '_').toStdString(); + auto name_internal = QString(name.c_str()).toLower().replace(' ', '_').toStdString(); auto name_friendly = QString(name.c_str()).replace('_', ' ').toStdString(); const std::string playing_as = "Playing as " + name_friendly; - qDebug().nospace() << "Discord RPC: Setting character state (\"" << playing_as.c_str() - << "\")"; + qDebug().nospace() << "Discord RPC: Setting character state (\"" << playing_as.c_str() << "\")"; DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); @@ -98,11 +102,14 @@ void Discord::state_spectate() Discord_UpdatePresence(&presence); } #else -Discord::Discord() {} +Discord::Discord() +{} -Discord::~Discord() {} +Discord::~Discord() +{} -void Discord::state_lobby() {} +void Discord::state_lobby() +{} void Discord::state_server(std::string name, std::string server_id) { diff --git a/src/discord_rich_presence.h b/src/discord_rich_presence.h new file mode 100644 index 00000000..4d390c06 --- /dev/null +++ b/src/discord_rich_presence.h @@ -0,0 +1,34 @@ +#pragma once + +#include +#include + +#include + +#include +#include +#include + +namespace AttorneyOnline +{ + +class Discord +{ + Q_DECLARE_TR_FUNCTIONS(Discord) + +private: + const char *APPLICATION_ID = "399779271737868288"; + std::string server_name, server_id; + int64_t timestamp; + +public: + Discord(); + ~Discord(); + + void state_lobby(); + void state_server(std::string name, std::string server_id); + void state_character(std::string name); + void state_spectate(); +}; + +} // namespace AttorneyOnline diff --git a/src/emotes.cpp b/src/emotes.cpp index 899ae4e9..b16b9893 100644 --- a/src/emotes.cpp +++ b/src/emotes.cpp @@ -8,9 +8,9 @@ void Courtroom::initialize_emotes() ui_emotes = new QWidget(this); ui_emotes->setObjectName("ui_emotes"); - ui_emote_left = new AOButton(this, ao_app); + ui_emote_left = new AOButton(ao_app, this); ui_emote_left->setObjectName("ui_emote_left"); - ui_emote_right = new AOButton(this, ao_app); + ui_emote_right = new AOButton(ao_app, this); ui_emote_right->setObjectName("ui_emote_right"); ui_emote_dropdown = new QComboBox(this); @@ -20,26 +20,19 @@ void Courtroom::initialize_emotes() emote_menu = new QMenu(this); emote_menu->setObjectName("ui_emote_menu"); - emote_preview = new AOEmotePreview(this, ao_app); + emote_preview = new AOEmotePreview(ao_app, this); emote_preview->setObjectName("ui_emote_preview"); - connect(ui_emote_left, &AOButton::clicked, this, - &Courtroom::on_emote_left_clicked); - connect(ui_emote_right, &AOButton::clicked, this, - &Courtroom::on_emote_right_clicked); + connect(ui_emote_left, &AOButton::clicked, this, &Courtroom::on_emote_left_clicked); + connect(ui_emote_right, &AOButton::clicked, this, &Courtroom::on_emote_right_clicked); - connect(ui_emote_dropdown, QOverload::of(&QComboBox::activated), this, - &Courtroom::on_emote_dropdown_changed); - connect(ui_emote_dropdown, - &AOEmoteButton::customContextMenuRequested, this, - &Courtroom::show_emote_menu); + connect(ui_emote_dropdown, QOverload::of(&QComboBox::activated), this, &Courtroom::on_emote_dropdown_changed); + connect(ui_emote_dropdown, &AOEmoteButton::customContextMenuRequested, this, &Courtroom::show_emote_menu); connect(ui_pre, QOverload::of(&QCheckBox::stateChanged), this, &Courtroom::update_emote_preview); connect(ui_flip, &AOButton::clicked, this, &Courtroom::update_emote_preview); - connect(ui_pair_offset_spinbox, QOverload::of(&QSpinBox::valueChanged), this, - &Courtroom::update_emote_preview); - connect(ui_pair_vert_offset_spinbox, QOverload::of(&QSpinBox::valueChanged), this, - &Courtroom::update_emote_preview); + connect(ui_pair_offset_spinbox, QOverload::of(&QSpinBox::valueChanged), this, &Courtroom::update_emote_preview); + connect(ui_pair_vert_offset_spinbox, QOverload::of(&QSpinBox::valueChanged), this, &Courtroom::update_emote_preview); } void Courtroom::refresh_emotes() @@ -56,12 +49,11 @@ void Courtroom::refresh_emotes() set_size_and_pos(ui_emote_right, "emote_right"); ui_emote_right->set_image("arrow_right"); - QPoint f_spacing = ao_app->get_button_spacing("emote_button_spacing", - "courtroom_design.ini"); - QPoint p_point = - ao_app->get_button_spacing("emote_button_size", "courtroom_design.ini"); + QPoint f_spacing = ao_app->get_button_spacing("emote_button_spacing", "courtroom_design.ini"); + QPoint p_point = ao_app->get_button_spacing("emote_button_size", "courtroom_design.ini"); - if (ui_emotes->width() == 0 || ui_emotes->height() == 0) { // Workaround for a nasty crash + if (ui_emotes->width() == 0 || ui_emotes->height() == 0) + { // Workaround for a nasty crash ui_emotes->hide(); return; } @@ -74,37 +66,33 @@ void Courtroom::refresh_emotes() int y_spacing = f_spacing.y(); int y_mod_count = 0; - emote_columns = - ((ui_emotes->width() - button_width) / (x_spacing + button_width)) + 1; - emote_rows = - ((ui_emotes->height() - button_height) / (y_spacing + button_height)) + 1; + emote_columns = ((ui_emotes->width() - button_width) / (x_spacing + button_width)) + 1; + emote_rows = ((ui_emotes->height() - button_height) / (y_spacing + button_height)) + 1; max_emotes_on_page = emote_columns * emote_rows; QString selected_image = ao_app->get_image_suffix(ao_app->get_theme_path("emote_selected", ""), true); - for (int n = 0; n < max_emotes_on_page; ++n) { + for (int n = 0; n < max_emotes_on_page; ++n) + { int x_pos = (button_width + x_spacing) * x_mod_count; int y_pos = (button_height + y_spacing) * y_mod_count; - AOEmoteButton *f_emote = new AOEmoteButton(ui_emotes, ao_app, x_pos, y_pos, - button_width, button_height); + AOEmoteButton *f_emote = new AOEmoteButton(ao_app, x_pos, y_pos, button_width, button_height, ui_emotes); f_emote->set_selected_image(selected_image); ui_emote_list.append(f_emote); f_emote->set_id(n); f_emote->setContextMenuPolicy(Qt::CustomContextMenu); - connect(f_emote, &AOEmoteButton::emote_clicked, this, - &Courtroom::on_emote_clicked); + connect(f_emote, &AOEmoteButton::emote_clicked, this, &Courtroom::on_emote_clicked); - connect(f_emote, - &AOEmoteButton::customContextMenuRequested, this, - &Courtroom::show_emote_menu); + connect(f_emote, &AOEmoteButton::customContextMenuRequested, this, &Courtroom::show_emote_menu); ++x_mod_count; - if (x_mod_count == emote_columns) { + if (x_mod_count == emote_columns) + { ++y_mod_count; x_mod_count = 0; } @@ -114,50 +102,67 @@ void Courtroom::refresh_emotes() void Courtroom::set_emote_page() { if (m_cid == -1) + { return; + } int total_emotes = ao_app->get_emote_number(current_char); ui_emote_left->hide(); ui_emote_right->hide(); - for (AOEmoteButton *i_button : qAsConst(ui_emote_list)) { + for (AOEmoteButton *i_button : qAsConst(ui_emote_list)) + { i_button->hide(); } int total_pages = total_emotes / max_emotes_on_page; int emotes_on_page = 0; - if (total_emotes % max_emotes_on_page != 0) { + if (total_emotes % max_emotes_on_page != 0) + { ++total_pages; // i. e. not on the last page if (total_pages > current_emote_page + 1) + { emotes_on_page = max_emotes_on_page; + } else + { emotes_on_page = total_emotes % max_emotes_on_page; + } } else + { emotes_on_page = max_emotes_on_page; + } if (total_pages > current_emote_page + 1) + { ui_emote_right->show(); + } if (current_emote_page > 0) + { ui_emote_left->show(); + } - for (int n_emote = 0; - n_emote < emotes_on_page && n_emote < ui_emote_list.size(); ++n_emote) { + for (int n_emote = 0; n_emote < emotes_on_page && n_emote < ui_emote_list.size(); ++n_emote) + { int n_real_emote = n_emote + current_emote_page * max_emotes_on_page; AOEmoteButton *f_emote = ui_emote_list.at(n_emote); if (n_real_emote == current_emote) + { f_emote->set_char_image(current_char, n_real_emote, true); + } else + { f_emote->set_char_image(current_char, n_real_emote, false); + } f_emote->show(); - f_emote->setToolTip(QString::number(n_real_emote + 1) + ": " + - ao_app->get_emote_comment(current_char, n_real_emote)); + f_emote->setToolTip(QString::number(n_real_emote + 1) + ": " + ao_app->get_emote_comment(current_char, n_real_emote)); } } @@ -167,14 +172,14 @@ void Courtroom::set_emote_dropdown() int total_emotes = ao_app->get_emote_number(current_char); - for (int n = 0; n < total_emotes; ++n) { - ui_emote_dropdown->addItem(QString::number(n + 1) + ": " + - ao_app->get_emote_comment(current_char, n)); - QString icon_path = ao_app->get_image_suffix(ao_app->get_character_path( - current_char, "emotions/button" + QString::number(n + 1) + "_off")); + for (int n = 0; n < total_emotes; ++n) + { + ui_emote_dropdown->addItem(QString::number(n + 1) + ": " + ao_app->get_emote_comment(current_char, n)); + QString icon_path = ao_app->get_image_suffix(ao_app->get_character_path(current_char, "emotions/button" + QString::number(n + 1) + "_off")); ui_emote_dropdown->setItemIcon(n, QIcon(icon_path)); } - if (current_emote > -1 && current_emote < ui_emote_dropdown->count()) { + if (current_emote > -1 && current_emote < ui_emote_dropdown->count()) + { ui_emote_dropdown->setCurrentIndex(current_emote); } } @@ -185,27 +190,33 @@ void Courtroom::select_emote(int p_id) int max = (max_emotes_on_page - 1) + current_emote_page * max_emotes_on_page; if (current_emote >= min && current_emote <= max) - ui_emote_list.at(current_emote % max_emotes_on_page) - ->set_char_image(current_char, current_emote, false); + { + ui_emote_list.at(current_emote % max_emotes_on_page)->set_char_image(current_char, current_emote, false); + } int old_emote = current_emote; current_emote = p_id; if (current_emote >= min && current_emote <= max) - ui_emote_list.at(current_emote % max_emotes_on_page) - ->set_char_image(current_char, current_emote, true); + { + ui_emote_list.at(current_emote % max_emotes_on_page)->set_char_image(current_char, current_emote, true); + } int emote_mod = ao_app->get_emote_mod(current_char, current_emote); - if (old_emote == current_emote) { + if (old_emote == current_emote) + { ui_pre->setChecked(!ui_pre->isChecked()); } - else if (!Options::getInstance().clearPreOnPlayEnabled()) { - if (emote_mod == PREANIM || emote_mod == PREANIM_ZOOM) { + else if (!Options::getInstance().clearPreOnPlayEnabled()) + { + if (emote_mod == PREANIM || emote_mod == PREANIM_ZOOM) + { ui_pre->setChecked(true); } - else { + else + { ui_pre->setChecked(false); } } @@ -215,16 +226,20 @@ void Courtroom::select_emote(int p_id) ui_ic_chat_message->setFocus(); } -void Courtroom::update_emote_preview() { - if (!emote_preview->isVisible()) { +void Courtroom::update_emote_preview() +{ + if (!emote_preview->isVisible()) + { return; } QString emote; QString pre = ao_app->get_pre_emote(current_char, current_emote); - if (ui_pre->isChecked() && !pre.isEmpty() && pre != "-") { + if (ui_pre->isChecked() && !pre.isEmpty() && pre != "-") + { emote = pre; } - else { + else + { emote = "(b)" + ao_app->get_emote(current_char, current_emote); } preview_emote(emote); @@ -237,38 +252,38 @@ void Courtroom::on_emote_clicked(int p_id) void Courtroom::show_emote_menu(const QPoint &pos) { - QWidget* button = qobject_cast(sender()); + QWidget *button = qobject_cast(sender()); int id = current_emote; - if (qobject_cast(button)) { - AOEmoteButton* emote_button = qobject_cast(sender()); + if (qobject_cast(button)) + { + AOEmoteButton *emote_button = qobject_cast(sender()); id = emote_button->get_id(); } int emote_num = id + max_emotes_on_page * current_emote_page; emote_menu->clear(); - emote_menu->setDefaultAction(emote_menu->addAction("Preview Selected", this, [=]{ + emote_menu->setDefaultAction(emote_menu->addAction("Preview Selected", this, [=] { emote_preview->show(); emote_preview->raise(); emote_preview->set_widgets(); update_emote_preview(); - } - )); - QString prefix = ""; + })); + QString prefix; QString f_pre = ao_app->get_pre_emote(current_char, emote_num); - if (!f_pre.isEmpty() && f_pre != "-") { - emote_menu->addAction("Preview pre: " + f_pre, this, [=]{ preview_emote(f_pre); }); + if (!f_pre.isEmpty() && f_pre != "-") + { + emote_menu->addAction("Preview pre: " + f_pre, this, [=] { preview_emote(f_pre); }); } QString f_emote = ao_app->get_emote(current_char, emote_num); - if (!f_emote.isEmpty()) { - emote_menu->addAction("Preview idle: " + f_emote, this, [=]{ preview_emote("(a)" + f_emote); }); - emote_menu->addAction("Preview talk: " + f_emote, this, [=]{ preview_emote("(b)" + f_emote); }); - QStringList c_paths = { - ao_app->get_image_suffix(ao_app->get_character_path(current_char, "(c)" + f_emote)), - ao_app->get_image_suffix(ao_app->get_character_path(current_char, "(c)/" + f_emote)) - }; + if (!f_emote.isEmpty()) + { + emote_menu->addAction("Preview idle: " + f_emote, this, [=] { preview_emote("(a)" + f_emote); }); + emote_menu->addAction("Preview talk: " + f_emote, this, [=] { preview_emote("(b)" + f_emote); }); + QStringList c_paths = {ao_app->get_image_suffix(ao_app->get_character_path(current_char, "(c)" + f_emote)), ao_app->get_image_suffix(ao_app->get_character_path(current_char, "(c)/" + f_emote))}; // if there is a (c) animation - if (file_exists(ui_vp_player_char->find_image(c_paths))) { - emote_menu->addAction("Preview segway: " + f_emote, this, [=]{ preview_emote("(c)" + f_emote); }); + if (file_exists(ui_vp_player_char->find_image(c_paths))) + { + emote_menu->addAction("Preview segway: " + f_emote, this, [=] { preview_emote("(c)" + f_emote); }); } } emote_menu->popup(button->mapToGlobal(pos)); diff --git a/src/eventfilters.cpp b/src/eventfilters.cpp new file mode 100644 index 00000000..2e11b587 --- /dev/null +++ b/src/eventfilters.cpp @@ -0,0 +1,21 @@ +#include "eventfilters.h" + +bool AOLineEditFilter::eventFilter(QObject *obj, QEvent *event) +{ + QLineEdit *lineEdit = qobject_cast(obj); + if (event->type() == QEvent::FocusOut && lineEdit != nullptr && preserve_selection) + { // lost focus + int start = lineEdit->selectionStart(); +#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) + int len = lineEdit->selectionLength(); +#else + int len = lineEdit->selectedText().length(); +#endif + if (start != -1 && len != -1) + { + lineEdit->setSelection(start, len); + return true; + } + } + return false; +} diff --git a/src/eventfilters.h b/src/eventfilters.h new file mode 100644 index 00000000..3eb98147 --- /dev/null +++ b/src/eventfilters.h @@ -0,0 +1,18 @@ +#pragma once + +#include +#include + +class AOLineEditFilter : public QObject +{ + Q_OBJECT + +public: + bool preserve_selection = false; + +Q_SIGNALS: + void double_clicked(); + +protected: + bool eventFilter(QObject *obj, QEvent *event) override; +}; diff --git a/src/evidence.cpp b/src/evidence.cpp index 752ca47d..4377b257 100644 --- a/src/evidence.cpp +++ b/src/evidence.cpp @@ -3,7 +3,7 @@ void Courtroom::initialize_evidence() { - ui_evidence = new AOImage(this, ao_app); + ui_evidence = new AOImage(ao_app, this); ui_evidence->setObjectName("ui_evidence"); // ui_evidence_name = new QLabel(ui_evidence); @@ -18,90 +18,72 @@ void Courtroom::initialize_evidence() ui_evidence_buttons = new QWidget(ui_evidence); ui_evidence_buttons->setObjectName("ui_evidence_buttons"); - ui_evidence_left = new AOButton(ui_evidence, ao_app); + ui_evidence_left = new AOButton(ao_app, ui_evidence); ui_evidence_left->setObjectName("ui_evidence_left"); - ui_evidence_right = new AOButton(ui_evidence, ao_app); + ui_evidence_right = new AOButton(ao_app, ui_evidence); ui_evidence_right->setObjectName("ui_evidence_right"); - ui_evidence_present = new AOButton(ui_evidence, ao_app); + ui_evidence_present = new AOButton(ao_app, ui_evidence); ui_evidence_present->setToolTip(tr("Present this piece of evidence to " "everyone on your next spoken message")); ui_evidence_present->setObjectName("ui_evidence_present"); - ui_evidence_switch = new AOButton(ui_evidence, ao_app); + ui_evidence_switch = new AOButton(ao_app, ui_evidence); ui_evidence_switch->setObjectName("ui_evidence_switch"); - ui_evidence_transfer = new AOButton(ui_evidence, ao_app); + ui_evidence_transfer = new AOButton(ao_app, ui_evidence); ui_evidence_transfer->setObjectName("ui_evidence_transfer"); - ui_evidence_save = new AOButton(ui_evidence, ao_app); + ui_evidence_save = new AOButton(ao_app, ui_evidence); ui_evidence_save->setToolTip(tr("Save evidence to an .ini file.")); ui_evidence_save->setObjectName("ui_evidence_save"); - ui_evidence_load = new AOButton(ui_evidence, ao_app); + ui_evidence_load = new AOButton(ao_app, ui_evidence); ui_evidence_load->setToolTip(tr("Load evidence from an .ini file.")); ui_evidence_load->setObjectName("ui_evidence_load"); - ui_evidence_overlay = new AOImage(ui_evidence, ao_app); + ui_evidence_overlay = new AOImage(ao_app, ui_evidence); ui_evidence_overlay->setObjectName("ui_evidence_overlay"); - ui_evidence_delete = new AOButton(ui_evidence_overlay, ao_app); + ui_evidence_delete = new AOButton(ao_app, ui_evidence_overlay); ui_evidence_delete->setToolTip(tr("Destroy this piece of evidence")); ui_evidence_delete->setObjectName("ui_evidence_delete"); ui_evidence_image_name = new QLineEdit(ui_evidence_overlay); ui_evidence_image_name_filter = new AOLineEditFilter(); ui_evidence_image_name->installEventFilter(ui_evidence_image_name_filter); ui_evidence_image_name->setObjectName("ui_evidence_image_name"); - ui_evidence_image_button = new AOButton(ui_evidence_overlay, ao_app); + ui_evidence_image_button = new AOButton(ao_app, ui_evidence_overlay); ui_evidence_image_button->setText(tr("Choose..")); ui_evidence_image_button->setObjectName("ui_evidence_image_button"); - ui_evidence_x = new AOButton(ui_evidence_overlay, ao_app); - ui_evidence_x->setToolTip( - tr("Close the evidence display/editing overlay.\n" - "You will be prompted if there's any unsaved changes.")); + ui_evidence_x = new AOButton(ao_app, ui_evidence_overlay); + ui_evidence_x->setToolTip(tr("Close the evidence display/editing overlay.\n" + "You will be prompted if there's any unsaved changes.")); ui_evidence_x->setObjectName("ui_evidence_x"); - ui_evidence_ok = new AOButton(ui_evidence_overlay, ao_app); + ui_evidence_ok = new AOButton(ao_app, ui_evidence_overlay); ui_evidence_ok->setToolTip(tr("Save any changes made to this piece of " "evidence and send them to server.")); ui_evidence_ok->setObjectName("ui_evidence_ok"); ui_evidence_description = new QPlainTextEdit(ui_evidence_overlay); ui_evidence_description->setFrameStyle(QFrame::NoFrame); - ui_evidence_description->setToolTip( - tr("Click to edit. Press [X] to update your changes.")); + ui_evidence_description->setToolTip(tr("Click to edit. Press [X] to update your changes.")); ui_evidence_description->setObjectName("ui_evidence_description"); - connect(ui_evidence_name, &QLineEdit::returnPressed, this, - &Courtroom::on_evidence_name_edited); - connect(ui_evidence_left, &AOButton::clicked, this, - &Courtroom::on_evidence_left_clicked); - connect(ui_evidence_right, &AOButton::clicked, this, - &Courtroom::on_evidence_right_clicked); - connect(ui_evidence_present, &AOButton::clicked, this, - &Courtroom::on_evidence_present_clicked); - connect(ui_evidence_switch, &AOButton::clicked, this, - &Courtroom::on_evidence_switch_clicked); - connect(ui_evidence_transfer, &AOButton::clicked, this, - &Courtroom::on_evidence_transfer_clicked); - connect(ui_evidence_save, &AOButton::clicked, this, - &Courtroom::on_evidence_save_clicked); - connect(ui_evidence_load, &AOButton::clicked, this, - &Courtroom::on_evidence_load_clicked); - - connect(ui_evidence_delete, &AOButton::clicked, this, - &Courtroom::on_evidence_delete_clicked); - connect(ui_evidence_image_name, &QLineEdit::returnPressed, this, - &Courtroom::on_evidence_image_name_edited); - connect(ui_evidence_image_button, &AOButton::clicked, this, - &Courtroom::on_evidence_image_button_clicked); - connect(ui_evidence_x, &AOButton::clicked, this, - &Courtroom::on_evidence_x_clicked); - connect(ui_evidence_ok, &AOButton::clicked, this, - &Courtroom::on_evidence_ok_clicked); - - connect(ui_evidence_name, &QLineEdit::textChanged, this, - &Courtroom::on_evidence_edited); - connect(ui_evidence_image_name, &QLineEdit::textChanged, this, - &Courtroom::on_evidence_edited); - connect(ui_evidence_description, &QPlainTextEdit::textChanged, this, - &Courtroom::on_evidence_edited); + connect(ui_evidence_name, &QLineEdit::returnPressed, this, &Courtroom::on_evidence_name_edited); + connect(ui_evidence_left, &AOButton::clicked, this, &Courtroom::on_evidence_left_clicked); + connect(ui_evidence_right, &AOButton::clicked, this, &Courtroom::on_evidence_right_clicked); + connect(ui_evidence_present, &AOButton::clicked, this, &Courtroom::on_evidence_present_clicked); + connect(ui_evidence_switch, &AOButton::clicked, this, &Courtroom::on_evidence_switch_clicked); + connect(ui_evidence_transfer, &AOButton::clicked, this, &Courtroom::on_evidence_transfer_clicked); + connect(ui_evidence_save, &AOButton::clicked, this, &Courtroom::on_evidence_save_clicked); + connect(ui_evidence_load, &AOButton::clicked, this, &Courtroom::on_evidence_load_clicked); + + connect(ui_evidence_delete, &AOButton::clicked, this, &Courtroom::on_evidence_delete_clicked); + connect(ui_evidence_image_name, &QLineEdit::returnPressed, this, &Courtroom::on_evidence_image_name_edited); + connect(ui_evidence_image_button, &AOButton::clicked, this, &Courtroom::on_evidence_image_button_clicked); + connect(ui_evidence_x, &AOButton::clicked, this, &Courtroom::on_evidence_x_clicked); + connect(ui_evidence_ok, &AOButton::clicked, this, &Courtroom::on_evidence_ok_clicked); + + connect(ui_evidence_name, &QLineEdit::textChanged, this, &Courtroom::on_evidence_edited); + connect(ui_evidence_image_name, &QLineEdit::textChanged, this, &Courtroom::on_evidence_edited); + connect(ui_evidence_description, &QPlainTextEdit::textChanged, this, &Courtroom::on_evidence_edited); ui_evidence->hide(); evidence_load("inventories/autosave.ini"); @@ -123,9 +105,13 @@ void Courtroom::refresh_evidence() set_size_and_pos(ui_evidence, "evidence_background"); if (current_evidence_global) + { ui_evidence->set_image("evidence_background"); + } else + { ui_evidence->set_image("evidence_background_private"); + } set_size_and_pos(ui_evidence_name, "evidence_name"); @@ -142,9 +128,13 @@ void Courtroom::refresh_evidence() set_size_and_pos(ui_evidence_overlay, "evidence_overlay"); if (current_evidence_global) + { ui_evidence_overlay->set_image("evidence_overlay"); + } else + { ui_evidence_overlay->set_image("evidence_overlay_private"); + } set_size_and_pos(ui_evidence_delete, "evidence_delete"); ui_evidence_delete->set_image("evidence_delete"); @@ -160,47 +150,55 @@ void Courtroom::refresh_evidence() ui_evidence_ok->set_image("evidence_ok"); set_size_and_pos(ui_evidence_switch, "evidence_switch"); - if (current_evidence_global) { + if (current_evidence_global) + { ui_evidence_switch->set_image("evidence_global"); ui_evidence_switch->setToolTip(tr("Switch evidence to private inventory.")); } - else { + else + { ui_evidence_switch->set_image("evidence_private"); ui_evidence_switch->setToolTip(tr("Switch evidence to global inventory.")); } set_size_and_pos(ui_evidence_transfer, "evidence_transfer"); - if (current_evidence_global) { + if (current_evidence_global) + { ui_evidence_transfer->set_image("evidence_transfer"); - ui_evidence_transfer->setToolTip( - tr("Transfer evidence to private inventory.")); + ui_evidence_transfer->setToolTip(tr("Transfer evidence to private inventory.")); } - else { + else + { ui_evidence_transfer->set_image("evidence_transfer_private"); - ui_evidence_transfer->setToolTip( - tr("Transfer evidence to global inventory.")); + ui_evidence_transfer->setToolTip(tr("Transfer evidence to global inventory.")); } set_size_and_pos(ui_evidence_save, "evidence_save"); ui_evidence_save->set_image("evidence_save"); if (current_evidence_global) + { ui_evidence_save->hide(); + } else + { ui_evidence_save->show(); + } set_size_and_pos(ui_evidence_load, "evidence_load"); ui_evidence_load->set_image("evidence_load"); if (current_evidence_global) + { ui_evidence_load->hide(); + } else + { ui_evidence_load->show(); + } set_size_and_pos(ui_evidence_description, "evidence_description"); - QPoint f_spacing = ao_app->get_button_spacing("evidence_button_spacing", - "courtroom_design.ini"); - QPoint p_point = ao_app->get_button_spacing("evidence_button_size", - "courtroom_design.ini"); + QPoint f_spacing = ao_app->get_button_spacing("evidence_button_spacing", "courtroom_design.ini"); + QPoint p_point = ao_app->get_button_spacing("evidence_button_size", "courtroom_design.ini"); const int button_width = p_point.x(); int x_spacing = f_spacing.x(); @@ -210,36 +208,30 @@ void Courtroom::refresh_evidence() int y_spacing = f_spacing.y(); int y_mod_count = 0; - evidence_columns = ((ui_evidence_buttons->width() - button_width) / - (x_spacing + button_width)) + - 1; - evidence_rows = ((ui_evidence_buttons->height() - button_height) / - (y_spacing + button_height)) + - 1; + evidence_columns = ((ui_evidence_buttons->width() - button_width) / qMax(1, x_spacing + button_width)) + 1; + evidence_rows = ((ui_evidence_buttons->height() - button_height) / qMax(1, y_spacing + button_height)) + 1; max_evidence_on_page = evidence_columns * evidence_rows; - for (int n = 0; n < max_evidence_on_page; ++n) { + for (int n = 0; n < max_evidence_on_page; ++n) + { int x_pos = (button_width + x_spacing) * x_mod_count; int y_pos = (button_height + y_spacing) * y_mod_count; - AOEvidenceButton *f_evidence = new AOEvidenceButton( - ui_evidence_buttons, ao_app, x_pos, y_pos, button_width, button_height); + AOEvidenceButton *f_evidence = new AOEvidenceButton(ao_app, x_pos, y_pos, button_width, button_height, ui_evidence_buttons); ui_evidence_list.append(f_evidence); f_evidence->set_id(n); - connect(f_evidence, &AOEvidenceButton::evidence_clicked, this, - &Courtroom::on_evidence_clicked); - connect(f_evidence, &AOEvidenceButton::evidence_double_clicked, this, - &Courtroom::on_evidence_double_clicked); - connect(f_evidence, &AOEvidenceButton::on_hover, this, - &Courtroom::on_evidence_hover); + connect(f_evidence, &AOEvidenceButton::evidence_clicked, this, &Courtroom::on_evidence_clicked); + connect(f_evidence, &AOEvidenceButton::evidence_double_clicked, this, &Courtroom::on_evidence_double_clicked); + connect(f_evidence, &AOEvidenceButton::on_hover, this, &Courtroom::on_evidence_hover); ++x_mod_count; - if (x_mod_count == evidence_columns) { + if (x_mod_count == evidence_columns) + { ++y_mod_count; x_mod_count = 0; } @@ -250,8 +242,10 @@ void Courtroom::set_evidence_list(QVector &p_evi_list) { global_evidence_list = p_evi_list; if (!current_evidence_global) + { return; // We're on private evidence editing, wait for user to do their // thing + } QVector old_list = local_evidence_list; local_evidence_list.clear(); @@ -259,11 +253,11 @@ void Courtroom::set_evidence_list(QVector &p_evi_list) set_evidence_page(); - if (ui_evidence_overlay - ->isVisible()) // Update the currently edited evidence for this user + if (ui_evidence_overlay->isVisible()) // Update the currently edited evidence for this user { int p_id = current_evidence - (max_evidence_on_page * current_evidence_page); - if (current_evidence >= local_evidence_list.size()) { + if (current_evidence >= local_evidence_list.size()) + { evidence_close(); ui_evidence_name->setText(""); } @@ -273,27 +267,23 @@ void Courtroom::set_evidence_list(QVector &p_evi_list) } // Todo: make a function that compares two pieces of evidence for any // differences - else if (compare_evidence_changed( - old_list.at(current_evidence), - local_evidence_list.at(current_evidence))) { + else if (compare_evidence_changed(old_list.at(current_evidence), local_evidence_list.at(current_evidence))) + { QMessageBox *msgBox = new QMessageBox; msgBox->setAttribute(Qt::WA_DeleteOnClose); msgBox->setText(tr("The piece of evidence you've been editing has changed.")); msgBox->setInformativeText(tr("Do you wish to keep your changes?")); - msgBox->setDetailedText(tr( - "Name: %1\n" - "Image: %2\n" - "Description:\n%3").arg( - local_evidence_list.at(current_evidence).name, - local_evidence_list.at(current_evidence).image, - local_evidence_list.at(current_evidence).description) - ); + msgBox->setDetailedText(tr("Name: %1\n" + "Image: %2\n" + "Description:\n%3") + .arg(local_evidence_list.at(current_evidence).name, local_evidence_list.at(current_evidence).image, local_evidence_list.at(current_evidence).description)); msgBox->setStandardButtons(QMessageBox::Yes | QMessageBox::No); msgBox->setDefaultButton(QMessageBox::LastButton); // msgBox->setWindowModality(Qt::NonModal); int ret = msgBox->exec(); - switch (ret) { + switch (ret) + { case QMessageBox::Yes: // "Keep changes" ui_evidence_ok->hide(); @@ -317,7 +307,8 @@ void Courtroom::set_evidence_page() ui_evidence_left->hide(); ui_evidence_right->hide(); - for (AOEvidenceButton *i_button : qAsConst(ui_evidence_list)) { + for (AOEvidenceButton *i_button : qAsConst(ui_evidence_list)) + { i_button->hide(); } @@ -327,48 +318,60 @@ void Courtroom::set_evidence_page() int total_pages = total_evidence / max_evidence_on_page; int evidence_on_page = 0; - if ((total_evidence % max_evidence_on_page) != 0) { + if ((total_evidence % max_evidence_on_page) != 0) + { ++total_pages; // i. e. not on the last page if (total_pages > current_evidence_page + 1) + { evidence_on_page = max_evidence_on_page; + } else + { evidence_on_page = total_evidence % max_evidence_on_page; + } } else + { evidence_on_page = max_evidence_on_page; + } if (total_pages > current_evidence_page + 1) + { ui_evidence_right->show(); + } if (current_evidence_page > 0) + { ui_evidence_left->show(); + } - for (int n_evidence_button = 0; n_evidence_button < evidence_on_page; - ++n_evidence_button) { - int n_real_evidence = - n_evidence_button + current_evidence_page * max_evidence_on_page; - AOEvidenceButton *f_evidence_button = - ui_evidence_list.at(n_evidence_button); + for (int n_evidence_button = 0; n_evidence_button < evidence_on_page; ++n_evidence_button) + { + int n_real_evidence = n_evidence_button + current_evidence_page * max_evidence_on_page; + AOEvidenceButton *f_evidence_button = ui_evidence_list.at(n_evidence_button); f_evidence_button->set_selected(false); f_evidence_button->setToolTip(""); - if (n_real_evidence == (total_evidence - 1)) { + if (n_real_evidence == (total_evidence - 1)) + { f_evidence_button->set_theme_image("addevidence.png"); } - else if (n_real_evidence < (total_evidence - 1)) { - f_evidence_button->set_image( - local_evidence_list.at(n_real_evidence).image); + else if (n_real_evidence < (total_evidence - 1)) + { + f_evidence_button->set_image(local_evidence_list.at(n_real_evidence).image); if (n_real_evidence == current_evidence) + { f_evidence_button->set_selected(true); + } - f_evidence_button->setToolTip( - QString::number(n_real_evidence + 1) + ": " + - local_evidence_list.at(n_real_evidence).name); + f_evidence_button->setToolTip(QString::number(n_real_evidence + 1) + ": " + local_evidence_list.at(n_real_evidence).name); } else + { f_evidence_button->set_image(""); + } f_evidence_button->show(); } @@ -386,17 +389,20 @@ void Courtroom::show_evidence(int f_real_id) on_evidence_double_clicked(p_id); } - void Courtroom::on_evidence_name_edited() { if (current_evidence >= local_evidence_list.size()) + { return; + } } void Courtroom::on_evidence_image_name_edited() { if (current_evidence >= local_evidence_list.size()) + { return; + } } void Courtroom::on_evidence_image_button_clicked() @@ -411,17 +417,23 @@ void Courtroom::on_evidence_image_button_clicked() QStringList filenames; if (dialog.exec()) + { filenames = dialog.selectedFiles(); + } if (filenames.size() != 1) + { return; + } QString filename = filenames.at(0); QStringList bases = Options::getInstance().mountPaths(); bases.prepend(get_base_path()); - for (const QString &base : bases) { + for (const QString &base : bases) + { QDir baseDir(base); - if (filename.startsWith(baseDir.absolutePath() + "/")) { + if (filename.startsWith(baseDir.absolutePath() + "/")) + { dir.setPath(baseDir.absolutePath() + "/evidence"); break; } @@ -435,11 +447,14 @@ void Courtroom::on_evidence_clicked(int p_id) { int f_real_id = p_id + max_evidence_on_page * current_evidence_page; - if (f_real_id == local_evidence_list.size()) { + if (f_real_id == local_evidence_list.size()) + { if (current_evidence_global) - ao_app->send_server_packet( - new AOPacket("PE", {"", "", "empty.png"})); - else { + { + ao_app->send_server_packet(AOPacket("PE", {"", "", "empty.png"})); + } + else + { evi_type f_evi; f_evi.name = ""; f_evi.description = ""; @@ -452,20 +467,26 @@ void Courtroom::on_evidence_clicked(int p_id) return; } else if (f_real_id > local_evidence_list.size()) + { return; - - if (!Options::getInstance().evidenceDoubleClickEdit()){ + } + + if (!Options::getInstance().evidenceDoubleClickEdit()) + { on_evidence_double_clicked(p_id); return; } - if (ui_evidence_overlay->isVisible()) { + if (ui_evidence_overlay->isVisible()) + { return; } ui_evidence_name->setText(local_evidence_list.at(f_real_id).name); for (AOEvidenceButton *i_button : qAsConst(ui_evidence_list)) + { i_button->set_selected(false); + } ui_evidence_list.at(p_id)->set_selected(true); current_evidence = f_real_id; @@ -476,21 +497,28 @@ void Courtroom::on_evidence_double_clicked(int p_id) int f_real_id = p_id + max_evidence_on_page * current_evidence_page; if (f_real_id >= local_evidence_list.size()) + { return; + } - if (ui_evidence_overlay->isVisible()) { - if (!on_evidence_x_clicked()) { + if (ui_evidence_overlay->isVisible()) + { + if (!on_evidence_x_clicked()) + { // We're told not to switch over to the other evidence ("cancel" clicked) return; } } for (AOEvidenceButton *i_button : qAsConst(ui_evidence_list)) + { i_button->set_selected(false); + } // We have to check if the ID is on the currently displayed page. // This is because SOMEONE allowed the switching of pages while evidence is still being edited. - if (p_id < ui_evidence_list.count()) { + if (p_id < ui_evidence_list.count()) + { ui_evidence_list.at(p_id)->set_selected(true); } current_evidence = f_real_id; @@ -518,23 +546,33 @@ void Courtroom::on_evidence_double_clicked(int p_id) void Courtroom::on_evidence_hover(int p_id, bool p_state) { - if (ui_evidence_overlay->isVisible()) { + if (ui_evidence_overlay->isVisible()) + { // Ignore hovering behavior if we're in the process of viewing a piece of evidence return; } int final_id = p_id + max_evidence_on_page * current_evidence_page; - if (p_state) { + if (p_state) + { if (final_id == local_evidence_list.size()) + { ui_evidence_name->setText(tr("Add new evidence...")); + } else if (final_id < local_evidence_list.size()) + { ui_evidence_name->setText(local_evidence_list.at(final_id).name); + } } else if (current_evidence < local_evidence_list.size()) + { ui_evidence_name->setText(local_evidence_list.at(current_evidence).name); + } else + { ui_evidence_name->setText(""); + } } void Courtroom::on_evidence_left_clicked() @@ -553,15 +591,20 @@ void Courtroom::on_evidence_right_clicked() void Courtroom::on_evidence_present_clicked() { - if (!current_evidence_global) { + if (!current_evidence_global) + { ui_evidence_present->hide(); is_presenting_evidence = false; return; // otherwise we get force-disconnected } if (is_presenting_evidence) + { ui_evidence_present->set_image("present"); + } else + { ui_evidence_present->set_image("present_disabled"); + } is_presenting_evidence = !is_presenting_evidence; @@ -572,9 +615,11 @@ void Courtroom::on_evidence_delete_clicked() { evidence_close(); if (current_evidence_global) - ao_app->send_server_packet( - new AOPacket("DE", {QString::number(current_evidence)})); - else { + { + ao_app->send_server_packet(AOPacket("DE", {QString::number(current_evidence)})); + } + else + { local_evidence_list.remove(current_evidence); private_evidence_list = local_evidence_list; set_evidence_page(); @@ -588,11 +633,13 @@ void Courtroom::on_evidence_delete_clicked() bool Courtroom::on_evidence_x_clicked() { - if (current_evidence >= - local_evidence_list.size()) // Should never happen but you never know. + if (current_evidence >= local_evidence_list.size()) // Should never happen but you never know. + { return true; + } - if (ui_evidence_ok->isHidden()) { + if (ui_evidence_ok->isHidden()) + { // Nothing was modified evidence_close(); return true; @@ -601,11 +648,11 @@ bool Courtroom::on_evidence_x_clicked() msgBox->setAttribute(Qt::WA_DeleteOnClose); msgBox->setText(tr("Evidence has been modified.")); msgBox->setInformativeText(tr("Do you want to save your changes?")); - msgBox->setStandardButtons(QMessageBox::Save | QMessageBox::Discard | - QMessageBox::Cancel); + msgBox->setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); msgBox->setDefaultButton(QMessageBox::Save); int ret = msgBox->exec(); - switch (ret) { + switch (ret) + { case QMessageBox::Save: evidence_close(); on_evidence_ok_clicked(); @@ -623,18 +670,21 @@ bool Courtroom::on_evidence_x_clicked() void Courtroom::on_evidence_ok_clicked() { ui_evidence_ok->hide(); - if (current_evidence < local_evidence_list.size()) { + if (current_evidence < local_evidence_list.size()) + { evi_type f_evi = local_evidence_list.at(current_evidence); - if (current_evidence_global) { + if (current_evidence_global) + { QStringList f_contents; f_contents.append(QString::number(current_evidence)); f_contents.append(ui_evidence_name->text()); f_contents.append(ui_evidence_description->toPlainText()); f_contents.append(ui_evidence_image_name->text()); - ao_app->send_server_packet(new AOPacket("EE", f_contents)); + ao_app->send_server_packet(AOPacket("EE", f_contents)); } - else { + else + { f_evi.name = ui_evidence_name->text(); f_evi.description = ui_evidence_description->toPlainText(); f_evi.image = ui_evidence_image_name->text(); @@ -646,7 +696,8 @@ void Courtroom::on_evidence_ok_clicked() } // Autosave private evidence - if (!current_evidence_global) { + if (!current_evidence_global) + { evidence_save("inventories/autosave.ini"); } } @@ -659,7 +710,9 @@ void Courtroom::on_evidence_switch_clicked() void Courtroom::on_evidence_transfer_clicked() { if (current_evidence >= local_evidence_list.size()) + { return; + } QString name; if (!current_evidence_global) // Transfer private evidence to global @@ -672,7 +725,7 @@ void Courtroom::on_evidence_transfer_clicked() f_contents.append(f_evi.image); name = f_evi.name; - ao_app->send_server_packet(new AOPacket("PE", f_contents)); + ao_app->send_server_packet(AOPacket("PE", f_contents)); } else // Transfer global evidence to private { @@ -694,18 +747,22 @@ void Courtroom::on_evidence_transfer_clicked() void Courtroom::on_evidence_edited() { - if (current_evidence >= - local_evidence_list.size()) // Should never happen but you never know. + if (current_evidence >= local_evidence_list.size()) // Should never happen but you never know. + { return; + } evi_type fake_evidence; fake_evidence.name = ui_evidence_name->text(); fake_evidence.description = ui_evidence_description->toPlainText(); fake_evidence.image = ui_evidence_image_name->text(); - if (compare_evidence_changed(fake_evidence, - local_evidence_list.at(current_evidence))) + if (compare_evidence_changed(fake_evidence, local_evidence_list.at(current_evidence))) + { ui_evidence_ok->show(); + } else + { ui_evidence_ok->hide(); + } } void Courtroom::evidence_close() @@ -723,7 +780,8 @@ void Courtroom::evidence_switch(bool global) is_presenting_evidence = false; ui_evidence_present->set_image("present"); local_evidence_list.clear(); - if (current_evidence_global) { + if (current_evidence_global) + { local_evidence_list = global_evidence_list; ui_evidence_present->show(); ui_evidence_save->hide(); @@ -732,12 +790,11 @@ void Courtroom::evidence_switch(bool global) ui_evidence->set_image("evidence_background"); ui_evidence_overlay->set_image("evidence_overlay"); ui_evidence_transfer->set_image("evidence_transfer"); - ui_evidence_transfer->setToolTip( - tr("Transfer evidence to private inventory.")); - ui_evidence_switch->setToolTip( - tr("Current evidence is global. Click to switch to private.")); + ui_evidence_transfer->setToolTip(tr("Transfer evidence to private inventory.")); + ui_evidence_switch->setToolTip(tr("Current evidence is global. Click to switch to private.")); } - else { + else + { local_evidence_list = private_evidence_list; ui_evidence_present->hide(); ui_evidence_save->show(); @@ -746,10 +803,8 @@ void Courtroom::evidence_switch(bool global) ui_evidence->set_image("evidence_background_private"); ui_evidence_overlay->set_image("evidence_overlay_private"); ui_evidence_transfer->set_image("evidence_transfer_private"); - ui_evidence_transfer->setToolTip( - tr("Transfer evidence to global inventory.")); - ui_evidence_switch->setToolTip( - tr("Current evidence is private. Click to switch to global.")); + ui_evidence_transfer->setToolTip(tr("Transfer evidence to global inventory.")); + ui_evidence_switch->setToolTip(tr("Current evidence is private. Click to switch to global.")); } current_evidence_page = 0; set_evidence_page(); @@ -758,17 +813,19 @@ void Courtroom::evidence_switch(bool global) void Courtroom::on_evidence_save_clicked() { if (current_evidence_global) + { return; // Don't allow saving/loading operations when in global inventory // mode for now + } // "Inventories" dir keeps our private evidence data - if (!dir_exists("inventories")) { + if (!dir_exists("inventories")) + { // Create one if it doesn't yet exist QDir("inventories").mkdir("inventories"); } - QString p_path = QFileDialog::getSaveFileName( - this, tr("Save Inventory"), "inventories/", tr("Ini Files (*.ini)")); + QString p_path = QFileDialog::getSaveFileName(this, tr("Save Inventory"), "inventories/", tr("Ini Files (*.ini)")); evidence_close(); ui_evidence_name->setText(""); @@ -779,13 +836,16 @@ void Courtroom::on_evidence_save_clicked() void Courtroom::on_evidence_load_clicked() { if (current_evidence_global) + { return; // Don't allow saving/loading operations when in global inventory // mode for now + } - QString p_path = QFileDialog::getOpenFileName( - this, tr("Open Inventory"), "inventories/", tr("Ini Files (*.ini)")); + QString p_path = QFileDialog::getOpenFileName(this, tr("Open Inventory"), "inventories/", tr("Ini Files (*.ini)")); if (p_path.isEmpty()) + { return; + } evidence_close(); ui_evidence_name->setText(""); @@ -796,7 +856,8 @@ void Courtroom::on_evidence_load_clicked() void Courtroom::evidence_load(QString filename) { - if (!file_exists(filename)) { + if (!file_exists(filename)) + { qWarning() << "Trying to load a non-existant evidence save file:" << filename; return; } @@ -805,16 +866,17 @@ void Courtroom::evidence_load(QString filename) inventory.setIniCodec("UTF-8"); #endif private_evidence_list.clear(); - foreach (QString evi, inventory.childGroups()) { + foreach (QString evi, inventory.childGroups()) + { if (evi == "General") + { continue; + } evi_type f_evi; f_evi.name = inventory.value(evi + "/name", "").value(); - f_evi.description = - inventory.value(evi + "/description", "").value(); - f_evi.image = - inventory.value(evi + "/image", "empty.png").value(); + f_evi.description = inventory.value(evi + "/description", "").value(); + f_evi.image = inventory.value(evi + "/image", "empty.png").value(); private_evidence_list.append(f_evi); } } @@ -822,7 +884,8 @@ void Courtroom::evidence_load(QString filename) void Courtroom::evidence_save(QString filename) { // "Inventories" dir keeps our private evidence data - if (!dir_exists("inventories")) { + if (!dir_exists("inventories")) + { // Create one if it doesn't yet exist QDir("inventories").mkdir("inventories"); } @@ -832,7 +895,8 @@ void Courtroom::evidence_save(QString filename) inventory.setIniCodec("UTF-8"); #endif inventory.clear(); - for (int i = 0; i < private_evidence_list.size(); i++) { + for (int i = 0; i < private_evidence_list.size(); i++) + { inventory.beginGroup(QString::number(i)); inventory.setValue("name", private_evidence_list[i].name); inventory.setValue("description", private_evidence_list[i].description); @@ -844,6 +908,5 @@ void Courtroom::evidence_save(QString filename) bool Courtroom::compare_evidence_changed(evi_type evi_a, evi_type evi_b) { - return evi_a.name != evi_b.name || evi_a.image != evi_b.image || - evi_a.description != evi_b.description; + return evi_a.name != evi_b.name || evi_a.image != evi_b.image || evi_a.description != evi_b.description; } diff --git a/src/file_functions.cpp b/src/file_functions.cpp index 92e598f8..fef34f54 100644 --- a/src/file_functions.cpp +++ b/src/file_functions.cpp @@ -3,7 +3,9 @@ bool file_exists(QString file_path) { if (file_path.isEmpty()) + { return false; + } QFileInfo check_file(file_path); @@ -13,7 +15,9 @@ bool file_exists(QString file_path) bool dir_exists(QString dir_path) { if (dir_path == "") - return false; + { + return false; + } QDir check_dir(dir_path); @@ -29,13 +33,15 @@ bool exists(QString p_path) QString get_base_path() { - QString base_path = ""; + QString base_path; #ifdef ANDROID QString sdcard_storage = getenv("SECONDARY_STORAGE"); - if (dir_exists(sdcard_storage + "/base/")) { + if (dir_exists(sdcard_storage + "/base/")) + { base_path = sdcard_storage + "/base/"; } - else { + else + { QString external_storage = getenv("EXTERNAL_STORAGE"); base_path = external_storage + "/base/"; } diff --git a/src/file_functions.h b/src/file_functions.h new file mode 100644 index 00000000..ca1eeb5e --- /dev/null +++ b/src/file_functions.h @@ -0,0 +1,11 @@ +#pragma once + +#include +#include +#include +#include + +bool file_exists(QString file_path); +bool dir_exists(QString file_path); +bool exists(QString p_path); +QString get_base_path(); diff --git a/src/gui_utils.h b/src/gui_utils.h new file mode 100644 index 00000000..b43fe5da --- /dev/null +++ b/src/gui_utils.h @@ -0,0 +1,3 @@ +#pragma once + +#define FROM_UI(type, name) ui_##name = findChild(#name) diff --git a/src/hardware_functions.cpp b/src/hardware_functions.cpp index 14296803..67b5cafa 100644 --- a/src/hardware_functions.cpp +++ b/src/hardware_functions.cpp @@ -3,50 +3,54 @@ #include #include +#include + #if (defined(_WIN32) || defined(_WIN64)) +// clang-format off #include #include +// clang-format on QString get_hdid() { - HANDLE hToken; - HANDLE pHandle; - PTOKEN_USER pToken; - DWORD uSize = 0; - LPWSTR HDIDParam; - - pHandle = GetCurrentProcess(); - OpenProcessToken(pHandle, TOKEN_QUERY, &hToken); - if (!GetTokenInformation(hToken, (TOKEN_INFORMATION_CLASS)1, NULL, 0, &uSize)) + HANDLE hToken; + HANDLE pHandle; + PTOKEN_USER pToken; + DWORD uSize = 0; + LPWSTR HDIDParam; + + pHandle = GetCurrentProcess(); + OpenProcessToken(pHandle, TOKEN_QUERY, &hToken); + if (!GetTokenInformation(hToken, (TOKEN_INFORMATION_CLASS)1, NULL, 0, &uSize)) + { + if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { - if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { - CloseHandle(hToken); - return "gxsps32sa9fnwic92mfbs1"; - } + CloseHandle(hToken); + return "gxsps32sa9fnwic92mfbs1"; } + } - pToken = (PTOKEN_USER)GlobalAlloc(GPTR, uSize); - - if (!GetTokenInformation(hToken, (TOKEN_INFORMATION_CLASS)1, pToken, uSize, &uSize)) - { - CloseHandle(hToken); - return "gxsps32sa9fnwic92mfbs2"; - } + pToken = (PTOKEN_USER)GlobalAlloc(GPTR, uSize); - ConvertSidToStringSidW(pToken->User.Sid, &HDIDParam); - QString returnHDID = QString::fromWCharArray(HDIDParam); + if (!GetTokenInformation(hToken, (TOKEN_INFORMATION_CLASS)1, pToken, uSize, &uSize)) + { CloseHandle(hToken); - return returnHDID; + return "gxsps32sa9fnwic92mfbs2"; + } + + ConvertSidToStringSidW(pToken->User.Sid, &HDIDParam); + QString returnHDID = QString::fromWCharArray(HDIDParam); + CloseHandle(hToken); + return returnHDID; } #elif defined(ANDROID) +#include + QString get_hdid() { - QAndroidJniObject appctx = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;").callObjectMethod("getApplicationContext","()Landroid/content/Context;"); - QAndroidJniObject androidId = QAndroidJniObject::callStaticObjectMethod("android/provider/Settings$Secure","getString", - "(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;", - appctx.callObjectMethod("getContentResolver", "()Landroid/content/ContentResolver;").object(), - QAndroidJniObject::fromString("android_id").object()); - return androidId.toString(); + QAndroidJniObject appctx = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;").callObjectMethod("getApplicationContext", "()Landroid/content/Context;"); + QAndroidJniObject androidId = QAndroidJniObject::callStaticObjectMethod("android/provider/Settings$Secure", "getString", "(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;", appctx.callObjectMethod("getContentResolver", "()Landroid/content/ContentResolver;").object(), QAndroidJniObject::fromString("android_id").object()); + return androidId.toString(); } #elif QT_VERSION < QT_VERSION_CHECK(5, 11, 0) #if (defined(LINUX) || defined(__linux__)) @@ -58,7 +62,8 @@ QString get_hdid() { machineId = QSysInfo::machineUniqueId(); - if (machineId.isEmpty()) { + if (machineId.isEmpty()) + { return "gxsps32sa9fnwic92mfbs2"; } return QString(machineId); @@ -74,16 +79,16 @@ QString get_hdid() CFStringRef serial; char buffer[64] = {0}; QString hdid; - io_service_t platformExpert = IOServiceGetMatchingService( - kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice")); - if (platformExpert) { - CFTypeRef serialNumberAsCFString = IORegistryEntryCreateCFProperty( - platformExpert, CFSTR(kIOPlatformSerialNumberKey), kCFAllocatorDefault, - 0); - if (serialNumberAsCFString) { + io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice")); + if (platformExpert) + { + CFTypeRef serialNumberAsCFString = IORegistryEntryCreateCFProperty(platformExpert, CFSTR(kIOPlatformSerialNumberKey), kCFAllocatorDefault, 0); + if (serialNumberAsCFString) + { serial = (CFStringRef)serialNumberAsCFString; } - if (CFStringGetCString(serial, buffer, 64, kCFStringEncodingUTF8)) { + if (CFStringGetCString(serial, buffer, 64, kCFStringEncodingUTF8)) + { hdid = buffer; } diff --git a/src/hardware_functions.h b/src/hardware_functions.h new file mode 100644 index 00000000..65e5bc68 --- /dev/null +++ b/src/hardware_functions.h @@ -0,0 +1,5 @@ +#pragma once + +#include + +QString get_hdid(); diff --git a/src/interfaces/server_dialog.h b/src/interfaces/server_dialog.h new file mode 100644 index 00000000..98c57fee --- /dev/null +++ b/src/interfaces/server_dialog.h @@ -0,0 +1,20 @@ +#pragma once + +#include + +namespace AttorneyOnline +{ +namespace UI +{ +class FavoriteServerDialog : public QDialog +{ +public: + const QString DEFAULT_UI = "favorite_server_dialog.ui"; + const int TCP_INDEX = 0; + +private Q_SLOTS: + virtual void onSavePressed() = 0; + virtual void onCancelPressed() = 0; +}; +} // namespace UI +} // namespace AttorneyOnline diff --git a/src/lobby.cpp b/src/lobby.cpp index 85cc7449..6c64804d 100644 --- a/src/lobby.cpp +++ b/src/lobby.cpp @@ -2,44 +2,28 @@ #include "aoapplication.h" #include "demoserver.h" +#include "gui_utils.h" #include "networkmanager.h" #include "widgets/add_server_dialog.h" #include "widgets/direct_connect_dialog.h" #include "widgets/edit_server_dialog.h" #include -#include -#include -#include -#include - #include -#define FROM_UI(type, name) \ - ; \ - ui_##name = findChild(#name); - -#define COMBO_RELOAD() \ - list_servers(); \ - list_favorites(); \ - list_demos(); \ - get_motd(); \ - check_for_updates(); \ - reset_selection(); - Lobby::Lobby(AOApplication *p_ao_app, NetworkManager *p_net_manager) : QMainWindow() { ao_app = p_ao_app; net_manager = p_net_manager; - loadUI(); - COMBO_RELOAD() + reloadUi(); } void Lobby::on_tab_changed(int index) { - switch (index) { + switch (index) + { case SERVER: current_page = SERVER; ui_add_to_favorite_button->setVisible(true); @@ -74,14 +58,17 @@ void Lobby::on_tab_changed(int index) int Lobby::get_selected_server() { - switch (ui_connections_tabview->currentIndex()) { + switch (ui_connections_tabview->currentIndex()) + { case SERVER: - if (auto item = ui_serverlist_tree->currentItem()) { + if (auto item = ui_serverlist_tree->currentItem()) + { return item->text(0).toInt(); } break; case FAVORITES: - if (auto item = ui_favorites_tree->currentItem()) { + if (auto item = ui_favorites_tree->currentItem()) + { return item->text(0).toInt(); } break; @@ -91,7 +78,10 @@ int Lobby::get_selected_server() return -1; } -int Lobby::pageSelected() { return current_page; } +int Lobby::pageSelected() +{ + return current_page; +} void Lobby::reset_selection() { @@ -106,14 +96,14 @@ void Lobby::reset_selection() void Lobby::loadUI() { - this->setWindowTitle( - tr("Attorney Online %1").arg(ao_app->applicationVersion())); + this->setWindowTitle(tr("Attorney Online %1").arg(ao_app->applicationVersion())); this->setWindowIcon(QIcon(":/logo.png")); this->setWindowFlags((this->windowFlags() | Qt::CustomizeWindowHint)); QUiLoader l_loader(this); QFile l_uiFile(Options::getInstance().getUIAsset(DEFAULT_UI)); - if (!l_uiFile.open(QFile::ReadOnly)) { + if (!l_uiFile.open(QFile::ReadOnly)) + { qCritical() << "Unable to open file " << l_uiFile.fileName(); return; } @@ -121,95 +111,75 @@ void Lobby::loadUI() l_loader.load(&l_uiFile, this); FROM_UI(QLabel, game_version_lbl); - ui_game_version_lbl->setText( - tr("Version: %1").arg(ao_app->get_version_string())); + ui_game_version_lbl->setText(tr("Version: %1").arg(ao_app->get_version_string())); FROM_UI(QPushButton, settings_button); - connect(ui_settings_button, &QPushButton::clicked, this, - &Lobby::onSettingsRequested); + connect(ui_settings_button, &QPushButton::clicked, this, &Lobby::onSettingsRequested); FROM_UI(QPushButton, about_button); - connect(ui_about_button, &QPushButton::clicked, this, - &Lobby::on_about_clicked); + connect(ui_about_button, &QPushButton::clicked, this, &Lobby::on_about_clicked); // Serverlist elements FROM_UI(QTabWidget, connections_tabview); ui_connections_tabview->tabBar()->setExpanding(true); - connect(ui_connections_tabview, &QTabWidget::currentChanged, this, - &Lobby::on_tab_changed); + connect(ui_connections_tabview, &QTabWidget::currentChanged, this, &Lobby::on_tab_changed); FROM_UI(QTreeWidget, serverlist_tree); FROM_UI(QLineEdit, serverlist_search); - connect(ui_serverlist_tree, &QTreeWidget::itemClicked, this, - &Lobby::on_server_list_clicked); - connect(ui_serverlist_tree, &QTreeWidget::itemDoubleClicked, this, - &Lobby::on_list_doubleclicked); - connect(ui_serverlist_search, &QLineEdit::textChanged, this, - &Lobby::on_server_search_edited); + connect(ui_serverlist_tree, &QTreeWidget::itemClicked, this, &Lobby::on_server_list_clicked); + connect(ui_serverlist_tree, &QTreeWidget::itemDoubleClicked, this, &Lobby::on_list_doubleclicked); + connect(ui_serverlist_search, &QLineEdit::textChanged, this, &Lobby::on_server_search_edited); FROM_UI(QTreeWidget, favorites_tree); - connect(ui_favorites_tree, &QTreeWidget::itemClicked, this, - &Lobby::on_favorite_tree_clicked); - connect(ui_favorites_tree, &QTreeWidget::itemDoubleClicked, this, - &Lobby::on_list_doubleclicked); + connect(ui_favorites_tree, &QTreeWidget::itemClicked, this, &Lobby::on_favorite_tree_clicked); + connect(ui_favorites_tree, &QTreeWidget::itemDoubleClicked, this, &Lobby::on_list_doubleclicked); FROM_UI(QTreeWidget, demo_tree); - connect(ui_demo_tree, &QTreeWidget::itemClicked, this, - &Lobby::on_demo_clicked); - connect(ui_demo_tree, &QTreeWidget::itemDoubleClicked, this, - &Lobby::on_list_doubleclicked); + connect(ui_demo_tree, &QTreeWidget::itemClicked, this, &Lobby::on_demo_clicked); + connect(ui_demo_tree, &QTreeWidget::itemDoubleClicked, this, &Lobby::on_list_doubleclicked); FROM_UI(QPushButton, refresh_button); - connect(ui_refresh_button, &QPushButton::released, this, - &Lobby::on_refresh_released); + connect(ui_refresh_button, &QPushButton::released, this, &Lobby::on_refresh_released); FROM_UI(QPushButton, direct_connect_button); - connect(ui_direct_connect_button, &QPushButton::released, this, - &Lobby::on_direct_connect_released); + connect(ui_direct_connect_button, &QPushButton::released, this, &Lobby::on_direct_connect_released); - FROM_UI(QPushButton, add_to_favorite_button) - connect(ui_add_to_favorite_button, &QPushButton::released, this, - &Lobby::on_add_to_fav_released); + FROM_UI(QPushButton, add_to_favorite_button); + connect(ui_add_to_favorite_button, &QPushButton::released, this, &Lobby::on_add_to_fav_released); - FROM_UI(QPushButton, add_server_button) + FROM_UI(QPushButton, add_server_button); ui_add_server_button->setVisible(false); - connect(ui_add_server_button, &QPushButton::released, this, - &Lobby::on_add_server_to_fave_released); + connect(ui_add_server_button, &QPushButton::released, this, &Lobby::on_add_server_to_fave_released); - FROM_UI(QPushButton, edit_favorite_button) + FROM_UI(QPushButton, edit_favorite_button); ui_edit_favorite_button->setVisible(false); - connect(ui_edit_favorite_button, &QPushButton::released, this, - &Lobby::on_edit_favorite_released) + connect(ui_edit_favorite_button, &QPushButton::released, this, &Lobby::on_edit_favorite_released); - FROM_UI(QPushButton, remove_from_favorites_button) - ui_remove_from_favorites_button->setVisible(false); - connect(ui_remove_from_favorites_button, &QPushButton::released, this, - &Lobby::on_remove_from_fav_released); + FROM_UI(QPushButton, remove_from_favorites_button); + ui_remove_from_favorites_button->setVisible(false); + connect(ui_remove_from_favorites_button, &QPushButton::released, this, &Lobby::on_remove_from_fav_released); - FROM_UI(QLabel, server_player_count_lbl) - FROM_UI(QTextBrowser, server_description_text) + FROM_UI(QLabel, server_player_count_lbl); + FROM_UI(QTextBrowser, server_description_text); FROM_UI(QPushButton, connect_button); - connect(ui_connect_button, &QPushButton::released, net_manager, - &NetworkManager::join_to_server); - connect(ui_connect_button, &QPushButton::released, this, [=] { - ui_server_player_count_lbl->setText(tr("Joining Server...")); - }); - connect(net_manager, &NetworkManager::server_connected, ui_connect_button, - &QPushButton::setEnabled); + connect(ui_connect_button, &QPushButton::released, net_manager, &NetworkManager::join_to_server); + connect(ui_connect_button, &QPushButton::released, this, [=] { ui_server_player_count_lbl->setText(tr("Joining Server...")); }); + connect(net_manager, &NetworkManager::server_connected, ui_connect_button, &QPushButton::setEnabled); FROM_UI(QTextBrowser, motd_text); - FROM_UI(QTextBrowser, game_changelog_text) - if (ui_game_changelog_text != nullptr) { + FROM_UI(QTextBrowser, game_changelog_text); + if (ui_game_changelog_text != nullptr) + { QString l_changelog_text = "No changelog found."; QFile l_changelog(get_base_path() + "changelog.md"); - if (!l_changelog.open(QFile::ReadOnly)) { + if (!l_changelog.open(QFile::ReadOnly)) + { qDebug() << "Unable to locate changelog file. Does it even exist?"; #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) ui_game_changelog_text->setMarkdown(l_changelog_text); #else - ui_game_changelog_text->setPlainText( - l_changelog_text); // imperfect solution, but implementing Markdown - // ourselves for this edge case is out of scope + ui_game_changelog_text->setPlainText(l_changelog_text); // imperfect solution, but implementing Markdown + // ourselves for this edge case is out of scope #endif return; } @@ -221,12 +191,24 @@ void Lobby::loadUI() l_changelog.close(); QTabWidget *l_tabbar = findChild("motd_changelog_tab"); - if (l_tabbar != nullptr) { + if (l_tabbar != nullptr) + { l_tabbar->tabBar()->setExpanding(true); } } } +void Lobby::reloadUi() +{ + loadUI(); + list_servers(); + list_favorites(); + list_demos(); + get_motd(); + check_for_updates(); + reset_selection(); +} + void Lobby::on_refresh_released() { net_manager->get_server_list(); @@ -243,7 +225,8 @@ void Lobby::on_direct_connect_released() void Lobby::on_add_to_fav_released() { int selection = get_selected_server(); - if (selection > -1) { + if (selection > -1) + { Options::getInstance().addFavorite(ao_app->get_server_list().at(selection)); list_favorites(); } @@ -268,7 +251,8 @@ void Lobby::on_edit_favorite_released() void Lobby::on_remove_from_fav_released() { int selection = get_selected_server(); - if (selection >= 0) { + if (selection >= 0) + { Options::getInstance().removeFavorite(selection); list_favorites(); } @@ -277,47 +261,46 @@ void Lobby::on_remove_from_fav_released() void Lobby::on_about_clicked() { const bool hasApng = QImageReader::supportedImageFormats().contains("apng"); - QString msg = - tr("

Attorney Online %1

" - "The courtroom drama simulator." - "

Source code: " - "" - "https://github.com/AttorneyOnline/AO2-Client" - "

Major development:
" - "OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, " - "Crystalwarrior, Iamgoofball, in1tiate" - "

Client development:
" - "Cents02, windrammer, skyedeving, TrickyLeifa, Salanto, lambdcalculus" - "

QA testing:
" - "CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, " - "Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, " - "Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, " - "Veritas, Wiso" - "

Translations:
" - "k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox " - "(Русский), " - "windrammer (Español, Português)" - "

Special thanks:
" - "Wiso, dyviacat (2.10 release); " - "CrazyJC (2.8 release director) and MaximumVolty (2.8 release " - "promotion); " - "Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); " - "Rue (website); Draxirch (UI design); " - "Lewdton and Argoneus (tsuserver); " - "Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); " - "server hosts, game masters, case makers, content creators, " - "and the whole AO2 community!" - "

The Attorney Online networked visual novel project " - "is copyright (c) 2016-2022 Attorney Online developers. Open-source " - "licenses apply. All other assets are the property of their " - "respective owners." - "

Running on Qt version %2 with the BASS audio engine.
" - "APNG plugin loaded: %3" - "

Built on %4") - .arg(ao_app->get_version_string()) - .arg(QLatin1String(QT_VERSION_STR)) - .arg(hasApng ? tr("Yes") : tr("No")) - .arg(QLatin1String(__DATE__)); + QString msg = tr("

Attorney Online %1

" + "The courtroom drama simulator." + "

Source code: " + "" + "https://github.com/AttorneyOnline/AO2-Client" + "

Major development:
" + "OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, " + "Crystalwarrior, Iamgoofball, in1tiate" + "

Client development:
" + "Cents02, windrammer, skyedeving, TrickyLeifa, Salanto, lambdcalculus" + "

QA testing:
" + "CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, " + "Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, " + "Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, " + "Veritas, Wiso" + "

Translations:
" + "k-emiko (Русский), Pyraq (Polski), scatterflower (日本語), vintprox " + "(Русский), " + "windrammer (Español, Português)" + "

Special thanks:
" + "Wiso, dyviacat (2.10 release); " + "CrazyJC (2.8 release director) and MaximumVolty (2.8 release " + "promotion); " + "Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); " + "Rue (website); Draxirch (UI design); " + "Lewdton and Argoneus (tsuserver); " + "Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); " + "server hosts, game masters, case makers, content creators, " + "and the whole AO2 community!" + "

The Attorney Online networked visual novel project " + "is copyright (c) 2016-2022 Attorney Online developers. Open-source " + "licenses apply. All other assets are the property of their " + "respective owners." + "

Running on Qt version %2 with the BASS audio engine.
" + "APNG plugin loaded: %3" + "

Built on %4") + .arg(ao_app->get_version_string()) + .arg(QLatin1String(QT_VERSION_STR)) + .arg(hasApng ? tr("Yes") : tr("No")) + .arg(QLatin1String(__DATE__)); QMessageBox::about(this, tr("About"), msg); } @@ -328,16 +311,23 @@ void Lobby::on_server_list_clicked(QTreeWidgetItem *p_item, int column) server_type f_server; int n_server = p_item->text(column).toInt(); - if (n_server == last_index) { + if (n_server == last_index) + { return; } last_index = n_server; - if (n_server < 0) return; + if (n_server < 0) + { + return; + } QVector f_server_list = ao_app->get_server_list(); - if (n_server >= f_server_list.size()) return; + if (n_server >= f_server_list.size()) + { + return; + } f_server = f_server_list.at(n_server); @@ -367,12 +357,16 @@ void Lobby::on_favorite_tree_clicked(QTreeWidgetItem *p_item, int column) server_type f_server; int n_server = p_item->text(column).toInt(); - if (n_server == last_index) { + if (n_server == last_index) + { return; } last_index = n_server; - if (n_server < 0) return; + if (n_server < 0) + { + return; + } ui_add_server_button->setEnabled(true); ui_edit_favorite_button->setEnabled(true); @@ -380,7 +374,10 @@ void Lobby::on_favorite_tree_clicked(QTreeWidgetItem *p_item, int column) QVector f_server_list = Options::getInstance().favorites(); - if (n_server >= f_server_list.size()) return; + if (n_server >= f_server_list.size()) + { + return; + } f_server = f_server_list.at(n_server); @@ -398,19 +395,22 @@ void Lobby::on_server_search_edited(QString p_text) { // Iterate through all QTreeWidgetItem items QTreeWidgetItemIterator it(ui_serverlist_tree); - while (*it) { + while (*it) + { (*it)->setHidden(p_text != ""); ++it; } - if (p_text != "") { + if (p_text != "") + { // Search in metadata - QList clist = ui_serverlist_tree->findItems( - ui_serverlist_search->text(), Qt::MatchContains | Qt::MatchRecursive, - 1); - foreach (QTreeWidgetItem *item, clist) { + QList clist = ui_serverlist_tree->findItems(ui_serverlist_search->text(), Qt::MatchContains | Qt::MatchRecursive, 1); + foreach (QTreeWidgetItem *item, clist) + { if (item->parent() != nullptr) // So the category shows up too + { item->parent()->setHidden(false); + } item->setHidden(false); } } @@ -420,17 +420,16 @@ void Lobby::on_demo_clicked(QTreeWidgetItem *item, int column) { Q_UNUSED(column) - if (item == nullptr) { + if (item == nullptr) + { return; } - QString l_filepath = (QApplication::applicationDirPath() + "/logs/%1/%2") - .arg(item->data(0, Qt::DisplayRole).toString(), - item->data(1, Qt::DisplayRole).toString()); + QString l_filepath = (QApplication::applicationDirPath() + "/logs/%1/%2").arg(item->data(0, Qt::DisplayRole).toString(), item->data(1, Qt::DisplayRole).toString()); ao_app->demo_server->start_server(); server_type demo_server; demo_server.ip = "127.0.0.1"; - demo_server.port = ao_app->demo_server->port; + demo_server.port = ao_app->demo_server->port(); ao_app->demo_server->set_demo_file(l_filepath); net_manager->connect_to_server(demo_server); } @@ -440,15 +439,14 @@ void Lobby::onReloadThemeRequested() // This is destructive to the active widget data. // Whatever, this is lobby. Nothing here is worth saving. delete centralWidget(); - loadUI(); - COMBO_RELOAD() + + reloadUi(); } void Lobby::onSettingsRequested() { - AOOptionsDialog options(nullptr, ao_app); - connect(&options, &AOOptionsDialog::reloadThemeRequest, this, - &Lobby::onReloadThemeRequested); + AOOptionsDialog options(ao_app); + connect(&options, &AOOptionsDialog::reloadThemeRequest, this, &Lobby::onReloadThemeRequested); options.exec(); } @@ -460,7 +458,8 @@ void Lobby::list_servers() ui_serverlist_search->setText(""); int i = 0; - for (const server_type &i_server : qAsConst(ao_app->get_server_list())) { + for (const server_type &i_server : qAsConst(ao_app->get_server_list())) + { QTreeWidgetItem *treeItem = new QTreeWidgetItem(ui_serverlist_tree); treeItem->setData(0, Qt::DisplayRole, i); treeItem->setText(1, i_server.name); @@ -477,7 +476,8 @@ void Lobby::list_favorites() ui_favorites_tree->clear(); int i = 0; - for (const server_type &i_server : Options::getInstance().favorites()) { + for (const server_type &i_server : Options::getInstance().favorites()) + { QTreeWidgetItem *treeItem = new QTreeWidgetItem(ui_favorites_tree); treeItem->setData(0, Qt::DisplayRole, i); treeItem->setText(1, i_server.name); @@ -494,8 +494,10 @@ void Lobby::list_demos() ui_demo_tree->clear(); QMultiMap m_demo_entries = ao_app->load_demo_logs_list(); - for (auto &l_key : m_demo_entries.uniqueKeys()) { - for (const QString &l_entry : m_demo_entries.values(l_key)) { + for (auto &l_key : m_demo_entries.uniqueKeys()) + { + for (const QString &l_entry : m_demo_entries.values(l_key)) + { QTreeWidgetItem *treeItem = new QTreeWidgetItem(ui_demo_tree); treeItem->setData(0, Qt::DisplayRole, l_key); treeItem->setData(1, Qt::DisplayRole, l_entry); @@ -509,7 +511,8 @@ void Lobby::list_demos() void Lobby::get_motd() { net_manager->request_document(MSDocumentType::Motd, [this](QString document) { - if (document.isEmpty()) { + if (document.isEmpty()) + { document = tr("Couldn't get the message of the day."); } ui_motd_text->setHtml(document); @@ -518,35 +521,28 @@ void Lobby::get_motd() void Lobby::check_for_updates() { - net_manager->request_document( - MSDocumentType::ClientVersion, [this](QString version) { - const QString current_version = ao_app->get_version_string(); - if (!version.isEmpty() && version != current_version) { - ui_game_version_lbl->setText( - tr("Version: %1 (!)").arg(current_version)); - ui_game_version_lbl->setToolTip( - tr("New version available: %1").arg(version)); - } - }); + net_manager->request_document(MSDocumentType::ClientVersion, [this](QString version) { + const QString current_version = ao_app->get_version_string(); + if (!version.isEmpty() && version != current_version) + { + ui_game_version_lbl->setText(tr("Version: %1 (!)").arg(current_version)); + ui_game_version_lbl->setToolTip(tr("New version available: %1").arg(version)); + } + }); } void Lobby::set_player_count(int players_online, int max_players) { - QString f_string = - tr("Online: %1/%2") - .arg(QString::number(players_online), QString::number(max_players)); + QString f_string = tr("Online: %1/%2").arg(QString::number(players_online), QString::number(max_players)); ui_server_player_count_lbl->setText(f_string); } void Lobby::set_server_description(const QString &server_description) { ui_server_description_text->clear(); - QString result = - server_description.toHtmlEscaped() - .replace("\n", "
") - .replace(QRegularExpression("\\b(https?://\\S+\\.\\S+)\\b"), - "\\1"); + QString result = server_description.toHtmlEscaped().replace("\n", "
").replace(QRegularExpression("\\b(https?://\\S+\\.\\S+)\\b"), "\\1"); ui_server_description_text->insertHtml(result); } -Lobby::~Lobby() {} +Lobby::~Lobby() +{} diff --git a/src/lobby.h b/src/lobby.h new file mode 100644 index 00000000..4b4d6240 --- /dev/null +++ b/src/lobby.h @@ -0,0 +1,112 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +#include "file_functions.h" +#include "networkmanager.h" +#include + +#ifdef ANDROID +#include +#endif + +class AOApplication; + +class Lobby : public QMainWindow +{ + Q_OBJECT + +public: + Lobby(AOApplication *p_ao_app, NetworkManager *p_net_man = nullptr); + ~Lobby(); + + void set_player_count(int players_online, int max_players); + void set_server_description(const QString &server_description); + void list_servers(); + int get_selected_server(); + int pageSelected(); + +private: + AOApplication *ao_app; + NetworkManager *net_manager; + + const QString DEFAULT_UI = "lobby.ui"; + + void list_favorites(); + void list_demos(); + void get_motd(); + void check_for_updates(); + void reset_selection(); + + int last_index = -1; + + enum TabPage + { + SERVER, + FAVORITES, + DEMOS + }; + + // UI-file Lobby + + // Top Row + QLabel *ui_game_version_lbl; + QPushButton *ui_settings_button; + QPushButton *ui_about_button; + + // Server, Favs and Demo lists + QTabWidget *ui_connections_tabview; + + QTreeWidget *ui_serverlist_tree; + QLineEdit *ui_serverlist_search; + + QTreeWidget *ui_favorites_tree; + QLineEdit *ui_favorites_search; + + QTreeWidget *ui_demo_tree; + QLineEdit *ui_demo_search; + + QPushButton *ui_add_to_favorite_button; + QPushButton *ui_add_server_button; + QPushButton *ui_remove_from_favorites_button; + QPushButton *ui_edit_favorite_button; + QPushButton *ui_direct_connect_button; + QPushButton *ui_refresh_button; + + // Serverinfo / MOTD Horizontal Row + QTextBrowser *ui_motd_text; + + QLabel *ui_server_player_count_lbl; + QTextBrowser *ui_server_description_text; + QPushButton *ui_connect_button; + + // Optional Widget + QTextBrowser *ui_game_changelog_text; + + void loadUI(); + void reloadUi(); + + TabPage current_page = SERVER; + +private Q_SLOTS: + void on_tab_changed(int index); + void on_refresh_released(); + void on_direct_connect_released(); + void on_add_to_fav_released(); + void on_add_server_to_fave_released(); + void on_edit_favorite_released(); + void on_remove_from_fav_released(); + void on_about_clicked(); + void on_server_list_clicked(QTreeWidgetItem *p_item, int column); + void on_list_doubleclicked(QTreeWidgetItem *p_item, int column); + void on_favorite_tree_clicked(QTreeWidgetItem *p_item, int column); + void on_server_search_edited(QString p_text); + void on_demo_clicked(QTreeWidgetItem *item, int column); + void onReloadThemeRequested(); // Oh boy. + void onSettingsRequested(); +}; diff --git a/src/main.cpp b/src/main.cpp index 2c36c53c..d582eb7b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -5,11 +5,13 @@ #include "datatypes.h" #include "lobby.h" #include "networkmanager.h" + #include +#include #include #include -#include #include +#include int main(int argc, char *argv[]) { @@ -17,11 +19,12 @@ int main(int argc, char *argv[]) AOApplication main_app(argc, argv); - #ifdef ANDROID - if(QtAndroid::checkPermission("android.permission.READ_EXTERNAL_STORAGE")==QtAndroid::PermissionResult::Denied) { - QtAndroid::requestPermissionsSync({"android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE"}); +#ifdef ANDROID + if (QtAndroid::checkPermission("android.permission.READ_EXTERNAL_STORAGE") == QtAndroid::PermissionResult::Denied) + { + QtAndroid::requestPermissionsSync({"android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"}); } - #endif +#endif AOApplication::addLibraryPath(AOApplication::applicationDirPath() + "/lib"); QResource::registerResource(main_app.get_asset("themes/" + Options::getInstance().theme() + ".rcc")); @@ -35,32 +38,37 @@ int main(int argc, char *argv[]) main_app.setFont(new_font); QFontDatabase fontDatabase; - QDirIterator it(get_base_path() + "fonts", - QDirIterator::Subdirectories); + QDirIterator it(get_base_path() + "fonts", QDirIterator::Subdirectories); while (it.hasNext()) + { fontDatabase.addApplicationFont(it.next()); + } QPluginLoader apngPlugin("qapng"); if (!apngPlugin.load()) + { qCritical() << "QApng plugin could not be loaded"; + } QPluginLoader webpPlugin("qwebp"); if (!webpPlugin.load()) + { qCritical() << "QWebp plugin could not be loaded"; + } - QString p_language = - Options::getInstance().language(); - if (p_language == " " || p_language == "") + QString p_language = Options::getInstance().language(); + if (p_language.trimmed().isEmpty()) + { p_language = QLocale::system().name(); + } QTranslator qtTranslator; - qtTranslator.load("qt_" + p_language, - QLibraryInfo::location(QLibraryInfo::TranslationsPath)); + qtTranslator.load("qt_" + p_language, QLibraryInfo::location(QLibraryInfo::TranslationsPath)); main_app.installTranslator(&qtTranslator); QTranslator appTranslator; - qDebug() << ":/resource/translations/ao_" + p_language; - appTranslator.load("ao_" + p_language, ":/resource/translations/"); + qDebug() << ":/data/translations/ao_" + p_language; + appTranslator.load("ao_" + p_language, ":/data/translations/"); main_app.installTranslator(&appTranslator); main_app.construct_lobby(); diff --git a/src/misc_functions.cpp b/src/misc_functions.cpp deleted file mode 100644 index cc144153..00000000 --- a/src/misc_functions.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#include "misc_functions.h" - -void delay(int p_milliseconds) -{ - QTime dieTime = QTime::currentTime().addMSecs(p_milliseconds); - - while (QTime::currentTime() < dieTime) - QCoreApplication::processEvents(QEventLoop::AllEvents, 100); -} diff --git a/src/networkmanager.cpp b/src/networkmanager.cpp index b7e2810c..a0b95d8c 100644 --- a/src/networkmanager.cpp +++ b/src/networkmanager.cpp @@ -11,16 +11,17 @@ #include #include -NetworkManager::NetworkManager(AOApplication *parent) : QObject(parent) +NetworkManager::NetworkManager(AOApplication *parent) + : QObject(parent) { ao_app = parent; http = new QNetworkAccessManager(this); heartbeat_timer = new QTimer(this); - QString master_config = - Options::getInstance().alternativeMasterserver(); - if (!master_config.isEmpty() && QUrl(master_config).scheme().startsWith("http")) { + QString master_config = Options::getInstance().alternativeMasterserver(); + if (!master_config.isEmpty() && QUrl(master_config).scheme().startsWith("http")) + { qInfo() << "using alternate master server" << master_config; ms_baseurl = master_config; } @@ -35,14 +36,14 @@ void NetworkManager::get_server_list() req.setRawHeader("User-Agent", get_user_agent().toUtf8()); QNetworkReply *reply = http->get(req); - connect(reply, &QNetworkReply::finished, - this, std::bind(&NetworkManager::ms_request_finished, this, reply)); + connect(reply, &QNetworkReply::finished, this, std::bind(&NetworkManager::ms_request_finished, this, reply)); } void NetworkManager::ms_request_finished(QNetworkReply *reply) { QJsonDocument json = QJsonDocument::fromJson(reply->readAll()); - if (json.isNull()) { + if (json.isNull()) + { qCritical().noquote() << "Invalid JSON response from" << reply->url(); reply->deleteLater(); return; @@ -52,27 +53,33 @@ void NetworkManager::ms_request_finished(QNetworkReply *reply) QVector server_list; const auto jsonEntries = json.array(); - for (const auto &entryRef : jsonEntries) { + for (const auto &entryRef : jsonEntries) + { const auto entry = entryRef.toObject(); server_type server; server.ip = entry["ip"].toString(); server.name = entry["name"].toString(); server.desc = entry["description"].toString(tr("No description provided.")); - if (entry["ws_port"].isDouble()) { + if (entry["ws_port"].isDouble()) + { server.socket_type = WEBSOCKETS; server.port = entry["ws_port"].toInt(); - } else { + } + else + { server.socket_type = TCP; server.port = entry["port"].toInt(); } - if (server.port != 0) { - server_list.append(server); + if (server.port != 0) + { + server_list.append(server); } } ao_app->set_server_list(server_list); - if (ao_app->lobby_constructed) { - ao_app->w_lobby->list_servers(); + if (ao_app->lobby_constructed) + { + ao_app->w_lobby->list_servers(); } reply->deleteLater(); } @@ -84,7 +91,9 @@ void NetworkManager::send_heartbeat() // that time period can be counted and an accurate player count be displayed. // What do I care about your personal information, I really don't want it. if (Options::getInstance().playerCountOptout()) + { return; + } QNetworkRequest req(QUrl(ms_baseurl + "/playing")); req.setRawHeader("User-Agent", get_user_agent().toUtf8()); @@ -92,38 +101,35 @@ void NetworkManager::send_heartbeat() http->post(req, QByteArray()); } -void NetworkManager::request_document(MSDocumentType document_type, - const std::function &cb) +void NetworkManager::request_document(MSDocumentType document_type, const std::function &cb) { - const QMap endpoints { - // I have to balance an evil with a good - { MSDocumentType::PrivacyPolicy, "/privacy" }, - { MSDocumentType::Motd, "/motd" }, - { MSDocumentType::ClientVersion, "/version" } - }; + const QMap endpoints{// I have to balance an evil with a good + {MSDocumentType::PrivacyPolicy, "/privacy"}, + {MSDocumentType::Motd, "/motd"}, + {MSDocumentType::ClientVersion, "/version"}}; const QString &endpoint = endpoints[document_type]; QNetworkRequest req(QUrl(ms_baseurl + endpoint)); req.setRawHeader("User-Agent", get_user_agent().toUtf8()); - QString language = - Options::getInstance().language(); + QString language = Options::getInstance().language(); if (language.trimmed().isEmpty()) + { language = QLocale::system().name(); + } req.setRawHeader("Accept-Language", language.toUtf8()); - qDebug().noquote().nospace() - << "Getting " << endpoint << ", Accept-Language: " << language; + qDebug().noquote().nospace() << "Getting " << endpoint << ", Accept-Language: " << language; QNetworkReply *reply = http->get(req); connect(reply, &QNetworkReply::finished, this, [endpoint, cb, reply] { QString content = QString::fromUtf8(reply->readAll()); int http_status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); - if (content.isEmpty() || http_status != 200) { - qDebug().noquote().nospace() - << "Failed to get " << endpoint << " (" << reply->errorString() << ") " - << "(http status " << http_status << ")"; + if (content.isEmpty() || http_status != 200) + { + qDebug().noquote().nospace() << "Failed to get " << endpoint << " (" << reply->errorString() << ") " + << "(http status " << http_status << ")"; content = QString(); } cb(content); @@ -135,10 +141,10 @@ void NetworkManager::connect_to_server(server_type p_server) { disconnect_from_server(); - qInfo().nospace().noquote() << "connecting to " << p_server.ip << ":" - << p_server.port; + qInfo().nospace().noquote() << "connecting to " << p_server.ip << ":" << p_server.port; - switch (p_server.socket_type) { + switch (p_server.socket_type) + { default: p_server.socket_type = TCP; [[fallthrough]]; @@ -146,14 +152,9 @@ void NetworkManager::connect_to_server(server_type p_server) qInfo() << "using TCP backend"; server_socket.tcp = new QTcpSocket(this); - connect(server_socket.tcp, &QAbstractSocket::connected, this, [] { - qDebug() << "established connection to server"; - }); - connect(server_socket.tcp, &QIODevice::readyRead, this, [this] { - handle_server_packet(QString::fromUtf8(server_socket.tcp->readAll())); - }); - connect(server_socket.tcp, &QAbstractSocket::disconnected, ao_app, - &AOApplication::server_disconnected); + connect(server_socket.tcp, &QAbstractSocket::connected, this, [] { qDebug() << "established connection to server"; }); + connect(server_socket.tcp, &QIODevice::readyRead, this, [this] { handle_server_packet(QString::fromUtf8(server_socket.tcp->readAll())); }); + connect(server_socket.tcp, &QAbstractSocket::disconnected, ao_app, &AOApplication::server_disconnected); #if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) connect(server_socket.tcp, QOverload::of(&QAbstractSocket::error), this, [this] { #else @@ -168,17 +169,10 @@ void NetworkManager::connect_to_server(server_type p_server) qInfo() << "using WebSockets backend"; server_socket.ws = new QWebSocket(QString(), QWebSocketProtocol::VersionLatest, this); - connect(server_socket.ws, &QWebSocket::connected, this, [] { - qDebug() << "established connection to server"; - }); - connect(server_socket.ws, &QWebSocket::textMessageReceived, this, - &NetworkManager::handle_server_packet); - connect(server_socket.ws, &QWebSocket::disconnected, ao_app, - &AOApplication::server_disconnected); - connect(server_socket.ws, QOverload::of(&QWebSocket::error), - this, [this] { - qCritical() << "WebSockets error:" << server_socket.ws->errorString(); - }); + connect(server_socket.ws, &QWebSocket::connected, this, [] { qDebug() << "established connection to server"; }); + connect(server_socket.ws, &QWebSocket::textMessageReceived, this, &NetworkManager::handle_server_packet); + connect(server_socket.ws, &QWebSocket::disconnected, ao_app, &AOApplication::server_disconnected); + connect(server_socket.ws, QOverload::of(&QWebSocket::error), this, [this] { qCritical() << "WebSockets error:" << server_socket.ws->errorString(); }); QUrl url; url.setScheme("ws"); @@ -196,15 +190,18 @@ void NetworkManager::connect_to_server(server_type p_server) void NetworkManager::join_to_server() { - ship_server_packet(AOPacket("askchaa").to_string()); + ship_server_packet(AOPacket("askchaa").to_string()); } void NetworkManager::disconnect_from_server() { if (!connected) + { return; + } - switch (active_connection_type) { + switch (active_connection_type) + { case TCP: server_socket.tcp->close(); server_socket.tcp->deleteLater(); @@ -218,30 +215,36 @@ void NetworkManager::disconnect_from_server() connected = false; } -void NetworkManager::ship_server_packet(QString p_packet) +void NetworkManager::ship_server_packet(AOPacket p_packet) { - switch (active_connection_type) { + QString message = p_packet.to_string(true); + switch (active_connection_type) + { case TCP: - server_socket.tcp->write(p_packet.toUtf8()); + server_socket.tcp->write(message.toUtf8()); break; + case WEBSOCKETS: - server_socket.ws->sendTextMessage(p_packet); + server_socket.ws->sendTextMessage(message); break; } } -void NetworkManager::handle_server_packet(const QString& p_data) +void NetworkManager::handle_server_packet(const QString &p_data) { QString in_data = p_data; - if (!p_data.endsWith("%")) { + if (!p_data.endsWith("%")) + { partial_packet = true; temp_packet += in_data; return; } - else { - if (partial_packet) { + else + { + if (partial_packet) + { in_data = temp_packet + in_data; temp_packet = ""; partial_packet = false; @@ -253,25 +256,34 @@ void NetworkManager::handle_server_packet(const QString& p_data) const QStringList packet_list = in_data.split("%", Qt::SkipEmptyParts); #endif - for (const QString &packet : packet_list) { + for (const QString &packet : packet_list) + { QStringList f_contents; // Packet should *always* end with # - if (packet.endsWith("#")) { + if (packet.endsWith("#")) + { f_contents = packet.chopped(1).split("#"); } // But, if it somehow doesn't, we should still be able to handle it - else { + else + { f_contents = packet.split("#"); } // Empty packets are suspicious! - if (f_contents.isEmpty()) { + if (f_contents.isEmpty()) + { qWarning() << "WARNING: Empty packet received from server, skipping..."; continue; } // Take the first arg as the command QString command = f_contents.takeFirst(); + for (QString &data : f_contents) + { + data = AOPacket::decode(data); + } + // The rest is contents of the packet - AOPacket *f_packet = new AOPacket(command, f_contents); + AOPacket f_packet(command, f_contents); // Ship it to the server! ao_app->server_packet_received(f_packet); } diff --git a/src/networkmanager.h b/src/networkmanager.h new file mode 100644 index 00000000..984f30f8 --- /dev/null +++ b/src/networkmanager.h @@ -0,0 +1,72 @@ +#pragma once + +#include "aoapplication.h" +#include "aopacket.h" + +#include +#include +#include +#include +#include + +#include + +enum MSDocumentType +{ + PrivacyPolicy, + Motd, + ClientVersion +}; + +class NetworkManager : public QObject +{ + Q_OBJECT + +public: + explicit NetworkManager(AOApplication *parent); + ~NetworkManager() = default; + + void connect_to_server(server_type p_server); + void disconnect_from_server(); + +public Q_SLOTS: + void get_server_list(); + void ship_server_packet(AOPacket p_packet); + void join_to_server(); + void handle_server_packet(const QString &p_data); + + void request_document(MSDocumentType document_type, const std::function &cb); + void send_heartbeat(); + +Q_SIGNALS: + void server_connected(bool state); + +private Q_SLOTS: + void ms_request_finished(QNetworkReply *reply); + +private: + AOApplication *ao_app; + QNetworkAccessManager *http; + + union + { + QWebSocket *ws; + QTcpSocket *tcp; + } server_socket; + connection_type active_connection_type; + bool connected = false; + + QTimer *heartbeat_timer; + + const QString DEFAULT_MS_BASEURL = "http://servers.aceattorneyonline.com"; + QString ms_baseurl = DEFAULT_MS_BASEURL; + + const int heartbeat_interval = 60 * 5 * 1000; + + bool partial_packet = false; + QString temp_packet; + + unsigned int s_decryptor = 5; + + QString get_user_agent() const { return QStringLiteral("AttorneyOnline/%1 (Desktop)").arg(ao_app->get_version_string()); } +}; diff --git a/src/options.cpp b/src/options.cpp index d1822eec..8aec7fd4 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -17,7 +17,8 @@ void Options::migrateCallwords() QFile l_file; l_file.setFileName(get_base_path() + "callwords.ini"); - if (!l_file.open(QIODevice::ReadOnly)) { + if (!l_file.open(QIODevice::ReadOnly)) + { qWarning() << "Unable to migrate callwords : File not open."; return; } @@ -27,7 +28,8 @@ void Options::migrateCallwords() in.setCodec("UTF-8"); #endif - while (!in.atEnd()) { + while (!in.atEnd()) + { QString line = in.readLine(); l_callwords.append(line); } @@ -38,9 +40,8 @@ void Options::migrateCallwords() } Options::Options() - : config(get_base_path() + "config.ini", QSettings::IniFormat, nullptr), - favorite(get_base_path() + "favorite_servers.ini", QSettings::IniFormat, - nullptr) + : config(get_base_path() + "config.ini", QSettings::IniFormat, nullptr) + , favorite(get_base_path() + "favorite_servers.ini", QSettings::IniFormat, nullptr) { #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) config.setIniCodec("UTF-8"); @@ -55,20 +56,25 @@ Options::Options() /*! Migrate old configuration keys/values to a relevant format. */ void Options::migrate() { - if (config.contains("show_custom_shownames")) { + if (config.contains("show_custom_shownames")) + { config.remove("show_custom_shownames"); } - if (QFile::exists(get_base_path() + "callwords.ini")) { + if (QFile::exists(get_base_path() + "callwords.ini")) + { migrateCallwords(); } - if (config.contains("ooc_name")) { - if (username().isEmpty()) { + if (config.contains("ooc_name")) + { + if (username().isEmpty()) + { config.setValue("default_username", config.value("ooc_name")); } config.remove("ooc_name"); } - if (config.contains("casing_enabled")) { + if (config.contains("casing_enabled")) + { config.remove("casing_enabled"); config.remove("casing_defence_enabled"); config.remove("casing_prosecution_enabled"); @@ -85,22 +91,35 @@ QString Options::theme() const return config.value("theme", "default").toString(); } -void Options::setTheme(QString value) { config.setValue("theme", value); } +void Options::setTheme(QString value) +{ + config.setValue("theme", value); +} int Options::themeScalingFactor() const { int value = config.value("theme_scaling_factor", "1").toInt(); - if (value <= 0) { + if (value <= 0) + { value = 1; } return value; } -void Options::setThemeScalingFactor(int value) { config.setValue("theme_scaling_factor", value); } +void Options::setThemeScalingFactor(int value) +{ + config.setValue("theme_scaling_factor", value); +} -int Options::blipRate() const { return config.value("blip_rate", 2).toInt(); } +int Options::blipRate() const +{ + return config.value("blip_rate", 2).toInt(); +} -void Options::setBlipRate(int value) { config.setValue("blip_rate", value); } +void Options::setBlipRate(int value) +{ + config.setValue("blip_rate", value); +} int Options::musicVolume() const { @@ -117,7 +136,10 @@ int Options::sfxVolume() const return config.value("default_sfx", 50).toInt(); } -void Options::setSfxVolume(int value) { config.setValue("default_sfx", value); } +void Options::setSfxVolume(int value) +{ + config.setValue("default_sfx", value); +} int Options::blipVolume() const { @@ -199,9 +221,15 @@ void Options::setLogNewline(bool value) config.setValue("log_newline", value); } -int Options::logMargin() const { return config.value("log_margin", 0).toInt(); } +int Options::logMargin() const +{ + return config.value("log_margin", 0).toInt(); +} -void Options::setLogMargin(int value) { config.setValue("log_margin", value); } +void Options::setLogMargin(int value) +{ + config.setValue("log_margin", value); +} bool Options::logTimestampEnabled() const { @@ -278,7 +306,10 @@ bool Options::blankBlip() const return config.value("blank_blip", false).toBool(); } -void Options::setBlankBlip(bool value) { config.setValue("blank_blip", value); } +void Options::setBlankBlip(bool value) +{ + config.setValue("blank_blip", value); +} bool Options::loopingSfx() const { @@ -345,7 +376,10 @@ bool Options::shakeEnabled() const return config.value("shake", true).toBool(); } -void Options::setShakeEnabled(bool value) { config.setValue("shake", value); } +void Options::setShakeEnabled(bool value) +{ + config.setValue("shake", value); +} bool Options::effectsEnabled() const { @@ -469,7 +503,8 @@ void Options::setLogToDemoFileEnabled(bool value) QString Options::subTheme() const { - if (settingsSubTheme() == "server" && !m_server_subtheme.isEmpty()) { + if (settingsSubTheme() == "server" && !m_server_subtheme.isEmpty()) + { return m_server_subtheme; } return settingsSubTheme(); @@ -485,9 +520,15 @@ void Options::setSettingsSubTheme(QString value) config.setValue("subtheme", value); } -QString Options::serverSubTheme() const { return m_server_subtheme; } +QString Options::serverSubTheme() const +{ + return m_server_subtheme; +} -void Options::setServerSubTheme(QString value) { m_server_subtheme = value; } +void Options::setServerSubTheme(QString value) +{ + m_server_subtheme = value; +} bool Options::animatedThemeEnabled() const { @@ -564,17 +605,21 @@ QString Options::language() const return config.value("language", QLocale::system().name()).toString(); } -void Options::setLanguage(QString value) { config.setValue("language", value); } +void Options::setLanguage(QString value) +{ + config.setValue("language", value); +} QStringList Options::callwords() const { - QStringList l_callwords = - config.value("callwords", QStringList{}).toStringList(); + QStringList l_callwords = config.value("callwords", QStringList{}).toStringList(); // Please someone explain to me how tf I am supposed to create an empty // QStringList using QSetting defaults. if (l_callwords.size() == 1 && l_callwords.at(0).isEmpty()) + { l_callwords.clear(); + } return l_callwords; } @@ -583,7 +628,10 @@ void Options::setCallwords(QStringList value) config.setValue("callwords", value); } -void Options::clearConfig() { config.clear(); } +void Options::clearConfig() +{ + config.clear(); +} QVector Options::favorites() { @@ -592,30 +640,29 @@ QVector Options::favorites() auto grouplist = favorite.childGroups(); { // remove all negative and non-numbers auto filtered_grouplist = grouplist; - for (const QString &group : qAsConst(grouplist)) { + for (const QString &group : qAsConst(grouplist)) + { bool ok = false; const int l_num = group.toInt(&ok); - if (ok && l_num >= 0) { + if (ok && l_num >= 0) + { continue; } filtered_grouplist.append(group); } - std::sort(filtered_grouplist.begin(), filtered_grouplist.end(), - [](const auto &a, const auto &b) -> bool { - return a.toInt() < b.toInt(); - }); + std::sort(filtered_grouplist.begin(), filtered_grouplist.end(), [](const auto &a, const auto &b) -> bool { return a.toInt() < b.toInt(); }); grouplist = std::move(filtered_grouplist); } - for (const QString &group : qAsConst(grouplist)) { + for (const QString &group : qAsConst(grouplist)) + { server_type f_server; favorite.beginGroup(group); f_server.ip = favorite.value("address", "127.0.0.1").toString(); f_server.port = favorite.value("port", 27016).toInt(); f_server.name = favorite.value("name", "Missing Name").toString(); f_server.desc = favorite.value("desc", "No description").toString(); - f_server.socket_type = - to_connection_type.value(favorite.value("protocol", "tcp").toString()); + f_server.socket_type = to_connection_type.value(favorite.value("protocol", "tcp").toString()); serverlist.append(std::move(f_server)); favorite.endGroup(); } @@ -626,7 +673,8 @@ QVector Options::favorites() void Options::setFavorites(QVector value) { favorite.clear(); - for (int i = 0; i < value.size(); ++i) { + for (int i = 0; i < value.size(); ++i) + { auto fav_server = value.at(i); favorite.beginGroup(QString::number(i)); favorite.setValue("name", fav_server.name); @@ -634,10 +682,12 @@ void Options::setFavorites(QVector value) favorite.setValue("port", fav_server.port); favorite.setValue("desc", fav_server.desc); - if (fav_server.socket_type == TCP) { + if (fav_server.socket_type == TCP) + { favorite.setValue("protocol", "tcp"); } - else { + else + { favorite.setValue("protocol", "ws"); } favorite.endGroup(); @@ -660,10 +710,12 @@ void Options::addFavorite(server_type server) favorite.setValue("address", server.ip); favorite.setValue("port", server.port); favorite.setValue("desc", server.desc); - if (server.socket_type == TCP) { + if (server.socket_type == TCP) + { favorite.setValue("protocol", "tcp"); } - else { + else + { favorite.setValue("protocol", "ws"); } favorite.endGroup(); @@ -677,10 +729,12 @@ void Options::updateFavorite(server_type server, int index) favorite.setValue("address", server.ip); favorite.setValue("port", server.port); favorite.setValue("desc", server.desc); - if (server.socket_type == TCP) { + if (server.socket_type == TCP) + { favorite.setValue("protocol", "tcp"); } - else { + else + { favorite.setValue("protocol", "ws"); } favorite.endGroup(); @@ -689,26 +743,27 @@ void Options::updateFavorite(server_type server, int index) QString Options::getUIAsset(QString f_asset_name) { - QStringList l_paths{":/base/themes/" + Options::getInstance().theme() + "/" + - f_asset_name}; + QStringList l_paths{":/base/themes/" + Options::getInstance().theme() + "/" + f_asset_name}; - if (subTheme() == "server") { - if (serverSubTheme().isEmpty()) { - l_paths.prepend(":/base/themes/" + theme() + "/" + serverSubTheme() + - "/" + f_asset_name); + if (subTheme() == "server") + { + if (serverSubTheme().isEmpty()) + { + l_paths.prepend(":/base/themes/" + theme() + "/" + serverSubTheme() + "/" + f_asset_name); } } - else { - l_paths.prepend(":/base/themes/" + theme() + "/" + subTheme() + "/" + - f_asset_name); + else + { + l_paths.prepend(":/base/themes/" + theme() + "/" + subTheme() + "/" + f_asset_name); } - for (const QString &l_path : qAsConst(l_paths)) { - if (QFile::exists(l_path)) { + for (const QString &l_path : qAsConst(l_paths)) + { + if (QFile::exists(l_path)) + { return l_path; } } - qWarning() << "Unable to locate ui-asset" << f_asset_name << "in theme" - << theme() << "Defaulting to embeeded asset."; - return QString(":/resource/ui/" + f_asset_name); + qWarning() << "Unable to locate ui-asset" << f_asset_name << "in theme" << theme() << "Defaulting to embeeded asset."; + return QString(":/data/ui/" + f_asset_name); } diff --git a/src/options.h b/src/options.h new file mode 100644 index 00000000..07075557 --- /dev/null +++ b/src/options.h @@ -0,0 +1,285 @@ +#pragma once + +#include +#include +#include + +class Options +{ +public: + Options(const Options &) = delete; + void operator=(const Options &) = delete; + + static Options &getInstance() + { + static Options instance; + return instance; + } + + /** + * @brief Migrates old configuration files to the most recent format. + */ + void migrate(); + + // Reads the theme from config.ini and loads it into the currenttheme + // variable + QString theme() const; + void setTheme(QString value); + + int themeScalingFactor() const; + void setThemeScalingFactor(int value); + + // Returns the blip rate from config.ini (once per X symbols) + int blipRate() const; + void setBlipRate(int value); + + // Returns true if blank blips is enabled in config.ini and false otherwise + bool blankBlip() const; + void setBlankBlip(bool value); + + // Returns true if looping sound effects are enabled in the config.ini + bool loopingSfx() const; + void setLoopingSfx(bool value); + + // Returns true if stop music on objection is enabled in the config.ini + bool objectionStopMusic() const; + void setObjectionStopMusic(bool value); + + // Returns true if streaming is enabled in the config.ini + bool streamingEnabled() const; + void setStreamingEnabled(bool value); + + // Returns the value of defaultmusic in config.ini + int musicVolume() const; + void setMusicVolume(int value); + + // Returns the value of defaultsfx in config.ini + int sfxVolume() const; + void setSfxVolume(int value); + + // Returns the value of defaultblip in config.ini + int blipVolume() const; + void setBlipVolume(int value); + + // Returns the value of suppressaudio in config.ini + int defaultSuppressAudio() const; + void setDefaultSupressedAudio(int value); + + // Returns the value if objections interrupt and skip the message queue + // from the config.ini. + bool objectionSkipQueueEnabled() const; + void setObjectionSkipQueueEnabled(bool value); + + // returns if log will show messages as-received, while viewport will parse + // according to the queue (Text Stay Time) from the config.ini + bool desynchronisedLogsEnabled() const; + void setDesynchronisedLogsEnabled(bool value); + + // Returns the value of whether Discord should be enabled on startup + // from the config.ini. + bool discordEnabled() const; + void setDiscordEnabled(bool value); + + // Returns the value of whether shaking should be enabled. + // from the config.ini. + bool shakeEnabled() const; + void setShakeEnabled(bool value); + + // Returns the value of whether effects should be Enabled. + // from the config.ini. + bool effectsEnabled() const; + void setEffectsEnabled(bool value); + + // Returns the value of whether frame-specific effects defined in char.ini + // should be sent/received over the network. from the config.ini. + bool networkedFrameSfxEnabled() const; + void setNetworkedFrameSfxEnabled(bool value); + + // Returns the value of whether colored ic log should be a thing. + // from the config.ini. + bool colorLogEnabled() const; + void setColorLogEnabled(bool value); + + // Returns the value of whether sticky sounds should be a thing. + // from the config.ini. + bool clearSoundsDropdownOnPlayEnabled() const; + void setClearSoundsDropdownOnPlayEnabled(bool value); + + // Returns the value of whether sticky effects should be a thing. + // from the config.ini. + bool clearEffectsDropdownOnPlayEnabled() const; + void setClearEffectsDropdownOnPlayEnabled(bool value); + + // Returns the value of whether sticky preanims should be a thing. + // from the config.ini. + bool clearPreOnPlayEnabled() const; + void setClearPreOnPlayEnabled(bool value); + + // Returns the value of whether custom chatboxes should be a thing. + // from the config.ini. + // I am increasingly maddened by the lack of dynamic auto-generation system + // for settings. + bool customChatboxEnabled() const; + void setCustomChatboxEnabled(bool value); + + // Returns the value of characer sticker (avatar) setting + bool characterStickerEnabled() const; + void setCharacterStickerEnabled(bool value); + + // Returns the value of whether continuous playback should be used + // from the config.ini. + bool continuousPlaybackEnabled() const; + void setContinuousPlaybackEnabled(bool value); + + // Returns the value of whether stopping music by double clicking category + // should be used from the config.ini. + bool stopMusicOnCategoryEnabled() const; + void setStopMusicOnCategoryEnabled(bool value); + + // Returns the value of the maximum amount of lines the IC chatlog + // may contain, from config.ini. + int maxLogSize() const; + void setMaxLogSize(int value); + + // Current wait time between messages for the queue system + int textStayTime() const; + void setTextStayTime(int value); + + // Returns the letter display speed during text crawl in in-character messages + int textCrawlSpeed() const; + void setTextCrawlSpeed(int value); + + // Returns Minimum amount of time (in miliseconds) that must pass before the + // next Enter key press will send your IC message. (new behaviour) + int chatRateLimit() const; + void setChatRateLimit(int value); + + // Returns whether the log should go upwards (new behaviour) + // or downwards (vanilla behaviour). + bool logDirectionDownwards() const; + void setLogDirectionDownwards(bool value); + + // Returns whether the log should separate name from text via newline or : + bool logNewline() const; + void setLogNewline(bool value); + + // Get spacing between IC log entries. + int logMargin() const; + void setLogMargin(int value); + + // Returns whether the log should have a timestamp. + bool logTimestampEnabled() const; + void setLogTimestampEnabled(bool value); + + // Returns the format string for the log timestamp + QString logTimestampFormat() const; + void setLogTimestampFormat(QString value); + + // Returns whether to log IC actions. + bool logIcActions() const; + void setLogIcActions(bool value); + + // Returns the username the user may have set in config.ini. + QString username() const; + void setUsername(QString value); + + // Returns the audio device used for the client. + QString audioOutputDevice() const; + void setAudioOutputDevice(QString value); + + // Returns whether the user would like to have custom shownames on by default. + bool customShownameEnabled() const; + void setCustomShownameEnabled(bool value); + + // Returns the showname the user may have set in config.ini. + QString shownameOnJoin() const; + void setShownameOnJoin(QString value); + + // Get if text file logging is Enabled + bool logToTextFileEnabled() const; + void setLogToTextFileEnabled(bool value); + + // Get if demo logging is Enabled + bool logToDemoFileEnabled() const; + void setLogToDemoFileEnabled(bool value); + + // Get the subtheme from settings + QString subTheme() const; + QString settingsSubTheme() const; + void setSettingsSubTheme(QString value); + + // Returns the server- + QString serverSubTheme() const; + void setServerSubTheme(QString value); + + // Get if the theme is animated + bool animatedThemeEnabled() const; + void setAnimatedThemeEnabled(bool value); + + // Get the default scaling method + QString defaultScalingMode() const; + void setDefaultScalingMode(QString value); + + // Get a list of custom mount paths + QStringList mountPaths() const; + void setMountPaths(QStringList value); + + // Get whether to opt out of player count metrics sent to the master server + bool playerCountOptout() const; + void setPlayerCountOptout(bool value); + + // Get if sfx can be sent to play on idle + bool playSelectedSFXOnIdle() const; + void setPlaySelectedSFXOnIdle(bool value); + + // Whether opening evidence requires a single or double click + bool evidenceDoubleClickEdit() const; + void setEvidenceDoubleClickEdit(bool value); + + // Supplies an alternative masterserver URL + QString alternativeMasterserver() const; + void setAlternativeMasterserver(QString value); + + // Language the client loads on start. + QString language() const; + void setLanguage(QString value); + + // Callwords notify the user when the word/words are used in a game message. + QStringList callwords() const; + void setCallwords(QStringList value); + + // Clears the configuration file. Essentially restoring it to default. + void clearConfig(); + + // Loads the favorite servers + QVector favorites(); + void setFavorites(QVector value); + + // Interactions with favorite servers + void removeFavorite(int index); + void addFavorite(server_type server); + void updateFavorite(server_type server, int index); + + // Theming Nonesense! + QString getUIAsset(QString f_asset_name); + +private: + /** + * @brief QSettings object for config.ini + */ + QSettings config; + + /** + * @brief QSettings object for favorite_servers.ini + */ + QSettings favorite; + + void migrateCallwords(); + + /** + * @brief Constructor for options class. + */ + Options(); + + QString m_server_subtheme; +}; diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 9bd4d8f6..011a4623 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -9,37 +9,45 @@ void AOApplication::append_to_demofile(QString packet_string) { - if (Options::getInstance().logToDemoFileEnabled() && !log_filename.isEmpty()) + if (Options::getInstance().logToDemoFileEnabled() && !log_filename.isEmpty()) + { + QString path = log_filename.left(log_filename.size()).replace(".log", ".demo"); + if (!demo_timer.isValid()) { - QString path = log_filename.left(log_filename.size()).replace(".log", ".demo"); - if (!demo_timer.isValid()) - demo_timer.start(); - else - append_to_file("wait#"+ QString::number(demo_timer.restart()) + "#%", path, true); - append_to_file(packet_string, path, true); + demo_timer.start(); + } + else + { + append_to_file("wait#" + QString::number(demo_timer.restart()) + "#%", path, true); } + append_to_file(packet_string, path, true); + } } -void AOApplication::server_packet_received(AOPacket *p_packet) +void AOApplication::server_packet_received(AOPacket p_packet) { - QStringList f_contents_encoded = p_packet->get_contents(); - QString f_packet_encoded = p_packet->to_string(); - p_packet->net_decode(); + QStringList f_contents_encoded = p_packet.get_content(); + QString f_packet_encoded = p_packet.to_string(); - QString header = p_packet->get_header(); - QStringList f_contents = p_packet->get_contents(); - QString f_packet = p_packet->to_string(); + QString header = p_packet.get_header(); + QStringList f_contents = p_packet.get_content(); + QString f_packet = p_packet.to_string(); bool log_to_demo = true; #ifdef DEBUG_NETWORK if (header != "checkconnection") + { qDebug() << "R:" << f_packet; + } #endif - if (header == "decryptor") { + if (header == "decryptor") + { if (f_contents.size() == 0) - goto end; + { + return; + } // default(legacy) values yellow_text_supported = false; @@ -61,13 +69,16 @@ void AOApplication::server_packet_received(AOPacket *p_packet) f_hdid = get_hdid(); QStringList f_contents = {f_hdid}; - AOPacket *hi_packet = new AOPacket("HI", f_contents); + AOPacket hi_packet("HI", f_contents); send_server_packet(hi_packet); log_to_demo = false; } - else if (header == "ID") { + else if (header == "ID") + { if (f_contents.size() < 2) - goto end; + { + return; + } client_id = f_contents.at(0).toInt(); server_software = f_contents.at(1); @@ -75,21 +86,26 @@ void AOApplication::server_packet_received(AOPacket *p_packet) net_manager->server_connected(true); QStringList f_contents = {"AO2", get_version_string()}; - send_server_packet(new AOPacket("ID", f_contents)); + send_server_packet(AOPacket("ID", f_contents)); } - else if (header == "CT") { - if (!courtroom_constructed || f_contents.size() < 2) { - goto end; -} + else if (header == "CT") + { + if (!courtroom_constructed || f_contents.size() < 2) + { + return; + } if (f_contents.size() == 3) - w_courtroom->append_server_chatmessage( - f_contents.at(0), f_contents.at(1), f_contents.at(2)); + { + w_courtroom->append_server_chatmessage(f_contents.at(0), f_contents.at(1), f_contents.at(2)); + } else - w_courtroom->append_server_chatmessage(f_contents.at(0), - f_contents.at(1), "0"); + { + w_courtroom->append_server_chatmessage(f_contents.at(0), f_contents.at(1), "0"); + } } - else if (header == "FL") { + else if (header == "FL") + { yellow_text_supported = false; prezoom_supported = false; flipping_supported = false; @@ -106,63 +122,102 @@ void AOApplication::server_packet_received(AOPacket *p_packet) expanded_desk_mods_supported = false; auth_packet_supported = false; if (f_packet.contains("yellowtext", Qt::CaseInsensitive)) + { yellow_text_supported = true; + } if (f_packet.contains("prezoom", Qt::CaseInsensitive)) + { prezoom_supported = true; + } if (f_packet.contains("flipping", Qt::CaseInsensitive)) + { flipping_supported = true; + } if (f_packet.contains("customobjections", Qt::CaseInsensitive)) + { custom_objection_supported = true; + } if (f_packet.contains("deskmod", Qt::CaseInsensitive)) + { desk_mod_supported = true; + } if (f_packet.contains("evidence", Qt::CaseInsensitive)) + { evidence_supported = true; + } if (f_packet.contains("cccc_ic_support", Qt::CaseInsensitive)) + { cccc_ic_supported = true; + } if (f_packet.contains("arup", Qt::CaseInsensitive)) + { arup_supported = true; + } if (f_packet.contains("casing_alerts", Qt::CaseInsensitive)) + { casing_alerts_supported = true; + } if (f_packet.contains("modcall_reason", Qt::CaseInsensitive)) + { modcall_reason_supported = true; + } if (f_packet.contains("looping_sfx", Qt::CaseInsensitive)) + { looping_sfx_supported = true; + } if (f_packet.contains("additive", Qt::CaseInsensitive)) + { additive_text_supported = true; + } if (f_packet.contains("effects", Qt::CaseInsensitive)) + { effects_supported = true; + } if (f_packet.contains("y_offset", Qt::CaseInsensitive)) - y_offset_supported = true; + { + y_offset_supported = true; + } if (f_packet.contains("expanded_desk_mods", Qt::CaseInsensitive)) + { expanded_desk_mods_supported = true; + } if (f_packet.contains("auth_packet", Qt::CaseInsensitive)) + { auth_packet_supported = true; + } log_to_demo = false; } - else if (header == "PN") { + else if (header == "PN") + { if (!lobby_constructed || f_contents.size() < 2) - goto end; + { + return; + } - w_lobby->set_player_count(f_contents.at(0).toInt(), - f_contents.at(1).toInt()); + w_lobby->set_player_count(f_contents.at(0).toInt(), f_contents.at(1).toInt()); - if (f_contents.size() >= 3) { - w_lobby->set_server_description(f_contents.at(2)); + if (f_contents.size() >= 3) + { + w_lobby->set_server_description(f_contents.at(2)); } log_to_demo = false; } - else if (header == "SI") { - if (!lobby_constructed || f_contents.size() != 3) { - goto end; -} + else if (header == "SI") + { + if (!lobby_constructed || f_contents.size() != 3) + { + return; + } char_list_size = f_contents.at(0).toInt(); evidence_list_size = f_contents.at(1).toInt(); music_list_size = f_contents.at(2).toInt(); if (char_list_size < 0 || evidence_list_size < 0 || music_list_size < 0) - goto end; + { + return; + } loaded_chars = 0; loaded_evidence = 0; @@ -175,91 +230,107 @@ void AOApplication::server_packet_received(AOPacket *p_packet) courtroom_loaded = false; int selected_server = w_lobby->get_selected_server(); - QString server_address = "", server_name = ""; - switch (w_lobby->pageSelected()) { + QString server_address; + QString server_name; + switch (w_lobby->pageSelected()) + { case 0: - if (selected_server >= 0 && selected_server < server_list.size()) { - auto info = server_list.at(selected_server); - server_name = info.name; - server_address = - QString("%1:%2").arg(info.ip, QString::number(info.port)); - window_title = server_name; - } - break; + if (selected_server >= 0 && selected_server < server_list.size()) + { + auto info = server_list.at(selected_server); + server_name = info.name; + server_address = QString("%1:%2").arg(info.ip, QString::number(info.port)); + window_title = server_name; + } + break; case 1: { - QVector favorite_list = Options::getInstance().favorites(); - if (selected_server >= 0 && selected_server < favorite_list.size()) { - auto info = favorite_list.at(selected_server); - server_name = info.name; - server_address = - QString("%1:%2").arg(info.ip, QString::number(info.port)); - window_title = server_name; - } + QVector favorite_list = Options::getInstance().favorites(); + if (selected_server >= 0 && selected_server < favorite_list.size()) + { + auto info = favorite_list.at(selected_server); + server_name = info.name; + server_address = QString("%1:%2").arg(info.ip, QString::number(info.port)); + window_title = server_name; + } } - break; + break; case 2: - window_title = "Local Demo Recording"; - break; + window_title = "Local Demo Recording"; + break; default: - break; + break; } if (courtroom_constructed) + { w_courtroom->set_window_title(window_title); + } - AOPacket *f_packet; - - f_packet = new AOPacket("RC"); - send_server_packet(f_packet); + send_server_packet(AOPacket("RC")); // Remove any characters not accepted in folder names for the server_name // here - if (Options::getInstance().logToDemoFileEnabled() && server_name != "Demo playback") { - this->log_filename = QDateTime::currentDateTime().toUTC().toString( - "'logs/" + server_name.remove(QRegularExpression("[\\\\/:*?\"<>|\']")) + - "/'yyyy-MM-dd hh-mm-ss t'.log'"); - this->write_to_file("Joined server " + server_name + " hosted on address " + - server_address + " on " + - QDateTime::currentDateTime().toUTC().toString(), - log_filename, true); + if (Options::getInstance().logToDemoFileEnabled() && server_name != "Demo playback") + { + this->log_filename = QDateTime::currentDateTime().toUTC().toString("'logs/" + server_name.remove(QRegularExpression("[\\\\/:*?\"<>|\']")) + "/'yyyy-MM-dd hh-mm-ss t'.log'"); + this->write_to_file("Joined server " + server_name + " hosted on address " + server_address + " on " + QDateTime::currentDateTime().toUTC().toString(), log_filename, true); } else + { this->log_filename = ""; + } QCryptographicHash hash(QCryptographicHash::Algorithm::Sha256); hash.addData(server_address.toUtf8()); if (Options::getInstance().discordEnabled()) - discord->state_server(server_name.toStdString(), - hash.result().toBase64().toStdString()); + { + discord->state_server(server_name.toStdString(), hash.result().toBase64().toStdString()); + } log_to_demo = false; } - else if (header == "CharsCheck") { + else if (header == "CharsCheck") + { if (!courtroom_constructed) - goto end; + { + return; + } - for (int n_char = 0; n_char < f_contents.size(); ++n_char) { + for (int n_char = 0; n_char < f_contents.size(); ++n_char) + { if (f_contents.at(n_char) == "-1") + { w_courtroom->set_taken(n_char, true); + } else + { w_courtroom->set_taken(n_char, false); + } } log_to_demo = false; } - else if (header == "SC") { + else if (header == "SC") + { if (!courtroom_constructed) - goto end; + { + return; + } w_courtroom->clear_chars(); - for (int n_element = 0; n_element < f_contents.size(); ++n_element) { + for (int n_element = 0; n_element < f_contents.size(); ++n_element) + { QStringList sub_elements = f_contents.at(n_element).split("&"); - - AOPacket::unescape(sub_elements); + for (QString &sub_element : sub_elements) + { + sub_element = AOPacket::decode(sub_element); + } char_type f_char; f_char.name = sub_elements.at(0); if (sub_elements.size() >= 2) + { f_char.description = sub_elements.at(1); + } // temporary. the CharsCheck packet sets this properly f_char.taken = false; @@ -268,55 +339,67 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } if (!courtroom_loaded) - send_server_packet(new AOPacket("RM")); + { + send_server_packet(AOPacket("RM")); + } else + { w_courtroom->character_loading_finished(); + } } - else if (header == "SM") { + else if (header == "SM") + { if (!courtroom_constructed || courtroom_loaded) - goto end; + { + return; + } bool musics_time = false; int areas = 0; - for (int n_element = 0; n_element < f_contents.size(); ++n_element) { + for (int n_element = 0; n_element < f_contents.size(); ++n_element) + { ++loaded_music; - if (musics_time) { + if (musics_time) + { w_courtroom->append_music(f_contents.at(n_element)); } - else { - if (f_contents.at(n_element).endsWith(".wav") || - f_contents.at(n_element).endsWith(".mp3") || - f_contents.at(n_element).endsWith(".mp4") || - f_contents.at(n_element).endsWith(".ogg") || - f_contents.at(n_element).endsWith(".opus")) { + else + { + if (f_contents.at(n_element).endsWith(".wav") || f_contents.at(n_element).endsWith(".mp3") || f_contents.at(n_element).endsWith(".mp4") || f_contents.at(n_element).endsWith(".ogg") || f_contents.at(n_element).endsWith(".opus")) + { musics_time = true; w_courtroom->fix_last_area(); w_courtroom->append_music(f_contents.at(n_element)); areas--; } - else { + else + { w_courtroom->append_area(f_contents.at(n_element)); areas++; } } } - for (int area_n = 0; area_n < areas; area_n++) { + for (int area_n = 0; area_n < areas; area_n++) + { w_courtroom->arup_append(0, "Unknown", "Unknown", "Unknown"); } - send_server_packet(new AOPacket("RD")); + send_server_packet(AOPacket("RD")); log_to_demo = false; } else if (header == "FM") // Fetch music ONLY { if (!courtroom_constructed) - goto end; + { + return; + } w_courtroom->clear_music(); - for (int n_element = 0; n_element < f_contents.size(); ++n_element) { + for (int n_element = 0; n_element < f_contents.size(); ++n_element) + { w_courtroom->append_music(f_contents.at(n_element)); } @@ -326,12 +409,15 @@ void AOApplication::server_packet_received(AOPacket *p_packet) else if (header == "FA") // Fetch areas ONLY { if (!courtroom_constructed) - goto end; + { + return; + } w_courtroom->clear_areas(); w_courtroom->arup_clear(); - for (int n_element = 0; n_element < f_contents.size(); ++n_element) { + for (int n_element = 0; n_element < f_contents.size(); ++n_element) + { w_courtroom->append_area(f_contents.at(n_element)); w_courtroom->arup_append(0, "Unknown", "Unknown", "Unknown"); } @@ -339,9 +425,12 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->list_areas(); log_to_demo = false; } - else if (header == "DONE") { + else if (header == "DONE") + { if (!courtroom_constructed) - goto end; + { + return; + } w_courtroom->character_loading_finished(); w_courtroom->done_received(); @@ -351,21 +440,30 @@ void AOApplication::server_packet_received(AOPacket *p_packet) destruct_lobby(); log_to_demo = false; } - else if (header == "BN") { + else if (header == "BN") + { if (!courtroom_constructed || f_contents.isEmpty()) - goto end; + { + return; + } - if (f_contents.size() >= 2) { + if (f_contents.size() >= 2) + { // We have a pos included in the background packet! - if (!f_contents.at(1).isEmpty()) - //Not touching it when its empty. - w_courtroom->set_side(f_contents.at(1)); + if (!f_contents.at(1).isEmpty()) + { + // Not touching it when its empty. + w_courtroom->set_side(f_contents.at(1)); + } } w_courtroom->set_background(f_contents.at(0), f_contents.size() >= 2); } - else if (header == "SP") { + else if (header == "SP") + { if (!courtroom_constructed || f_contents.isEmpty()) - goto end; + { + return; + } // We were sent a "set position" packet w_courtroom->set_side(f_contents.at(0)); @@ -373,61 +471,83 @@ void AOApplication::server_packet_received(AOPacket *p_packet) else if (header == "SD") // Send pos dropdown { if (!courtroom_constructed || f_contents.isEmpty()) - goto end; + { + return; + } w_courtroom->set_pos_dropdown(f_contents.at(0).split("*")); } // server accepting char request(CC) packet - else if (header == "PV") { + else if (header == "PV") + { if (!courtroom_constructed || f_contents.size() < 3) - goto end; + { + return; + } // For some reason, args 0 and 1 are not used (from tsu3 they're client ID and a string "CID") w_courtroom->enter_courtroom(); w_courtroom->set_courtroom_size(); w_courtroom->update_character(f_contents.at(2).toInt()); } - else if (header == "MS") { + else if (header == "MS") + { if (courtroom_constructed && courtroom_loaded) { - w_courtroom->chatmessage_enqueue(p_packet->get_contents()); + w_courtroom->chatmessage_enqueue(p_packet.get_content()); } } - else if (header == "MC") { + else if (header == "MC") + { if (courtroom_constructed && courtroom_loaded) { - w_courtroom->handle_song(&p_packet->get_contents()); + w_courtroom->handle_song(&p_packet.get_content()); } } - else if (header == "RT") { + else if (header == "RT") + { if (f_contents.isEmpty()) - goto end; - if (courtroom_constructed) { + { + return; + } + if (courtroom_constructed) + { if (f_contents.size() == 1) + { w_courtroom->handle_wtce(f_contents.at(0), 0); + } else if (f_contents.size() >= 2) + { w_courtroom->handle_wtce(f_contents.at(0), f_contents.at(1).toInt()); + } } } - else if (header == "HP") { + else if (header == "HP") + { if (courtroom_constructed && f_contents.size() >= 2) { - w_courtroom->set_hp_bar(f_contents.at(0).toInt(), - f_contents.at(1).toInt()); + w_courtroom->set_hp_bar(f_contents.at(0).toInt(), f_contents.at(1).toInt()); } } - else if (header == "LE") { - if (courtroom_constructed) { + else if (header == "LE") + { + if (courtroom_constructed) + { QVector f_evi_list; - for (QString f_string : f_contents_encoded) { + for (QString f_string : f_contents_encoded) + { QStringList sub_contents = f_string.split("&"); - if (sub_contents.size() < 3) + { continue; + } // decoding has to be done here instead of on reception // because this packet uses & as a delimiter for some reason - AOPacket::unescape(sub_contents); + for (QString &data : sub_contents) + { + data = AOPacket::decode(data); + } evi_type f_evi; f_evi.name = sub_contents.at(0); @@ -440,72 +560,93 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->set_evidence_list(f_evi_list); } } - else if (header == "ARUP") { - if (courtroom_constructed && !f_contents.isEmpty()) { + else if (header == "ARUP") + { + if (courtroom_constructed && !f_contents.isEmpty()) + { int arup_type = f_contents.at(0).toInt(); - for (int n_element = 1; n_element < f_contents.size(); n_element++) { - w_courtroom->arup_modify(arup_type, n_element - 1, - f_contents.at(n_element)); + for (int n_element = 1; n_element < f_contents.size(); n_element++) + { + w_courtroom->arup_modify(arup_type, n_element - 1, f_contents.at(n_element)); } w_courtroom->list_areas(); } log_to_demo = false; } - else if (header == "IL") { + else if (header == "IL") + { if (courtroom_constructed && !f_contents.isEmpty()) + { w_courtroom->set_ip_list(f_contents.at(0)); + } log_to_demo = false; } - else if (header == "MU") { + else if (header == "MU") + { if (courtroom_constructed && !f_contents.isEmpty()) + { w_courtroom->set_mute(true, f_contents.at(0).toInt()); + } log_to_demo = false; } - else if (header == "UM") { - if (courtroom_constructed && !f_contents.isEmpty()) { + else if (header == "UM") + { + if (courtroom_constructed && !f_contents.isEmpty()) + { w_courtroom->set_mute(false, f_contents.at(0).toInt()); - log_to_demo = false; -} + log_to_demo = false; + } } - else if (header == "BB") { - if (courtroom_constructed && !f_contents.isEmpty()) { + else if (header == "BB") + { + if (courtroom_constructed && !f_contents.isEmpty()) + { call_notice(f_contents.at(0)); } log_to_demo = false; } - else if (header == "KK") { - if (courtroom_constructed && !f_contents.isEmpty()) { - call_notice(tr("You have been kicked from the server.\nReason: %1") - .arg(f_contents.at(0))); + else if (header == "KK") + { + if (courtroom_constructed && !f_contents.isEmpty()) + { + call_notice(tr("You have been kicked from the server.\nReason: %1").arg(f_contents.at(0))); construct_lobby(); destruct_courtroom(); } log_to_demo = false; } - else if (header == "KB") { - if (courtroom_constructed && !f_contents.isEmpty()) { - call_notice(tr("You have been banned from the server.\nReason: %1") - .arg(f_contents.at(0))); + else if (header == "KB") + { + if (courtroom_constructed && !f_contents.isEmpty()) + { + call_notice(tr("You have been banned from the server.\nReason: %1").arg(f_contents.at(0))); construct_lobby(); destruct_courtroom(); } log_to_demo = false; } - else if (header == "BD") { - if (f_contents.isEmpty()) { - goto end; + else if (header == "BD") + { + if (f_contents.isEmpty()) + { + return; } - call_notice( - tr("You are banned on this server.\nReason: %1").arg(f_contents.at(0))); + call_notice(tr("You are banned on this server.\nReason: %1").arg(f_contents.at(0))); log_to_demo = false; } - else if (header == "ZZ") { + else if (header == "ZZ") + { if (courtroom_constructed && !f_contents.isEmpty()) + { w_courtroom->mod_called(f_contents.at(0)); + } } - else if (header == "TI") { // Timer packet + else if (header == "TI") + { // Timer packet if (!courtroom_constructed || f_contents.size() < 2) - goto end; + { + return; + } // Timer ID is reserved as argument 0 int id = f_contents.at(0).toInt(); @@ -519,7 +660,9 @@ void AOApplication::server_packet_received(AOPacket *p_packet) if (type == 0 || type == 1) { if (f_contents.size() < 3) - goto end; + { + return; + } // The time as displayed on the clock, in milliseconds. // If the number received is negative, stop the timer. @@ -543,99 +686,118 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } } else if (type == 2) + { w_courtroom->set_clock_visibility(id, true); + } else if (type == 3) + { w_courtroom->set_clock_visibility(id, false); + } } - else if (header == "CHECK") { + else if (header == "CHECK") + { if (!courtroom_constructed) - goto end; + { + return; + } qint64 ping_time = w_courtroom->pong(); qDebug() << "ping:" << ping_time; if (ping_time != -1) + { latency = ping_time; + } log_to_demo = false; } // Subtheme packet - else if (header == "ST") { + else if (header == "ST") + { if (!courtroom_constructed || f_contents.isEmpty()) - goto end; + { + return; + } // Subtheme reserved as argument 0 subtheme = f_contents.at(0); // Check if we have subthemes set to "server" if (Options::getInstance().settingsSubTheme().toLower() != "server") + { // We don't. Simply acknowledge the subtheme sent by the server, but don't do anything else. return; + } // Reload theme request - if (f_contents.size() > 1 && f_contents.at(1) == "1") { + if (f_contents.size() > 1 && f_contents.at(1) == "1") + { Options::getInstance().setServerSubTheme(subtheme); w_courtroom->on_reload_theme_clicked(); } } // Auth packet - else if (header == "AUTH") { - if (!courtroom_constructed || !auth_packet_supported || f_contents.isEmpty()) { - goto end; -} + else if (header == "AUTH") + { + if (!courtroom_constructed || !auth_packet_supported || f_contents.isEmpty()) + { + return; + } bool ok; int authenticated = f_contents.at(0).toInt(&ok); - if (!ok) { + if (!ok) + { qWarning() << "Malformed AUTH packet! Contents:" << f_contents.at(0); } w_courtroom->on_authentication_state_received(authenticated); log_to_demo = false; } - else if (header == "JD") { - if (!courtroom_constructed || f_contents.isEmpty()) { - goto end; + else if (header == "JD") + { + if (!courtroom_constructed || f_contents.isEmpty()) + { + return; } bool ok; Courtroom::JudgeState state = static_cast(f_contents.at(0).toInt(&ok)); - if (!ok) { - goto end; // ignore malformed packet + if (!ok) + { + return; // ignore malformed packet } w_courtroom->set_judge_state(state); - if (w_courtroom->get_judge_state() != Courtroom::POS_DEPENDENT) { // If we receive JD -1, it means the server asks us to fall back to client-side judge buttons behavior + if (w_courtroom->get_judge_state() != Courtroom::POS_DEPENDENT) + { // If we receive JD -1, it means the server asks us to fall back to client-side judge buttons behavior w_courtroom->show_judge_controls(w_courtroom->get_judge_state() == Courtroom::SHOW_CONTROLS); } - else { + else + { w_courtroom->set_judge_buttons(); // client-side judge behavior } } - //AssetURL Packet - else if (header == "ASS") { - if (f_contents.size() > 1 || f_contents.isEmpty()) { // This can never be more than one link. - goto end; + // AssetURL Packet + else if (header == "ASS") + { + if (f_contents.size() > 1 || f_contents.isEmpty()) + { // This can never be more than one link. + return; } QUrl t_asset_url = QUrl::fromPercentEncoding(f_contents.at(0).toUtf8()); if (t_asset_url.isValid()) - asset_url = t_asset_url.toString(); + { + asset_url = t_asset_url.toString(); + } } - if (log_to_demo) { + if (log_to_demo) + { append_to_demofile(f_packet_encoded); } - -end: - - delete p_packet; } -void AOApplication::send_server_packet(AOPacket *p_packet) +void AOApplication::send_server_packet(AOPacket p_packet) { - // ***NEVER*** send an unencoded packet. - p_packet->net_encode(); - - QString f_packet = p_packet->to_string(); + QString f_packet = p_packet.to_string(); #ifdef DEBUG_NETWORK - qDebug() << "S:" << f_packet; + qDebug() << "S:" << p_packet.to_string(); #endif - net_manager->ship_server_packet(f_packet); - - delete p_packet; + net_manager->ship_server_packet(p_packet); } diff --git a/src/path_functions.cpp b/src/path_functions.cpp index df76383d..7953d921 100644 --- a/src/path_functions.cpp +++ b/src/path_functions.cpp @@ -20,9 +20,11 @@ #define CASE_SENSITIVE_FILESYSTEM #endif -static bool is_power_2(unsigned int n) { +static bool is_power_2(unsigned int n) +{ unsigned int r = 0; - while (n) { + while (n) + { r += n & 1; n >>= 1; } @@ -32,7 +34,9 @@ static bool is_power_2(unsigned int n) { VPath AOApplication::get_theme_path(QString p_file, QString p_theme) { if (p_theme == "") - p_theme = Options::getInstance().theme(); + { + p_theme = Options::getInstance().theme(); + } return VPath("themes/" + p_theme + "/" + p_file); } @@ -53,7 +57,8 @@ VPath AOApplication::get_sounds_path(QString p_file) VPath AOApplication::get_music_path(QString p_song) { - if (p_song.startsWith("http")) { + if (p_song.startsWith("http")) + { return VPath(p_song); // url } return VPath("sounds/music/" + p_song); @@ -61,7 +66,8 @@ VPath AOApplication::get_music_path(QString p_song) VPath AOApplication::get_background_path(QString p_file) { - if (courtroom_constructed) { + if (courtroom_constructed) + { return VPath("background/" + w_courtroom->get_current_background() + "/" + p_file); } return get_default_background_path(p_file); @@ -72,72 +78,71 @@ VPath AOApplication::get_default_background_path(QString p_file) return VPath("background/default/" + p_file); } -QString AOApplication::get_pos_path(const QString& pos, const bool desk) +QString AOApplication::get_pos_path(const QString &pos, const bool desk) { // witness is default if pos is invalid QString f_background; QString f_desk_image; - if (file_exists(get_image_suffix(get_background_path("witnessempty")))) { + if (file_exists(get_image_suffix(get_background_path("witnessempty")))) + { f_background = "witnessempty"; f_desk_image = "stand"; } - else { + else + { f_background = "wit"; f_desk_image = "wit_overlay"; } - if (pos == "def" && file_exists(get_image_suffix( - get_background_path("defenseempty")))) { + if (pos == "def" && file_exists(get_image_suffix(get_background_path("defenseempty")))) + { f_background = "defenseempty"; f_desk_image = "defensedesk"; } - else if (pos == "pro" && - file_exists(get_image_suffix( - get_background_path("prosecutorempty")))) { + else if (pos == "pro" && file_exists(get_image_suffix(get_background_path("prosecutorempty")))) + { f_background = "prosecutorempty"; f_desk_image = "prosecutiondesk"; } - else if (pos == "jud" && file_exists(get_image_suffix( - get_background_path("judgestand")))) { + else if (pos == "jud" && file_exists(get_image_suffix(get_background_path("judgestand")))) + { f_background = "judgestand"; f_desk_image = "judgedesk"; } - else if (pos == "hld" && - file_exists(get_image_suffix( - get_background_path("helperstand")))) { + else if (pos == "hld" && file_exists(get_image_suffix(get_background_path("helperstand")))) + { f_background = "helperstand"; f_desk_image = "helperdesk"; } - else if (pos == "hlp" && - file_exists(get_image_suffix( - get_background_path("prohelperstand")))) { + else if (pos == "hlp" && file_exists(get_image_suffix(get_background_path("prohelperstand")))) + { f_background = "prohelperstand"; f_desk_image = "prohelperdesk"; } - else if (pos == "jur" && file_exists(get_image_suffix( - get_background_path("jurystand")))) { + else if (pos == "jur" && file_exists(get_image_suffix(get_background_path("jurystand")))) + { f_background = "jurystand"; f_desk_image = "jurydesk"; } - else if (pos == "sea" && - file_exists(get_image_suffix( - get_background_path("seancestand")))) { + else if (pos == "sea" && file_exists(get_image_suffix(get_background_path("seancestand")))) + { f_background = "seancestand"; f_desk_image = "seancedesk"; } - if (file_exists(get_image_suffix( - get_background_path(pos)))) // Unique pos path + if (file_exists(get_image_suffix(get_background_path(pos)))) // Unique pos path { f_background = pos; f_desk_image = pos + "_overlay"; } QString desk_override = read_design_ini("overlays/" + f_background, get_background_path("design.ini")); - if (desk_override != "") { + if (desk_override != "") + { f_desk_image = desk_override; -} - if (desk) { + } + if (desk) + { return f_desk_image; } return f_background; @@ -150,108 +155,130 @@ VPath AOApplication::get_evidence_path(QString p_file) QVector AOApplication::get_asset_paths(QString p_element, QString p_theme, QString p_subtheme, QString p_default_theme, QString p_misc, QString p_character, QString p_placeholder) { - QVector pathlist; - if (p_character != "") - pathlist += get_character_path(p_character, p_element); // Character folder - if (p_misc != "" && p_theme != "" && p_subtheme != "") - pathlist += get_theme_path("misc/" + p_misc + "/" + p_element, p_theme + "/" + p_subtheme); // Subtheme misc path - if (p_misc != "" && p_theme != "") - pathlist += get_theme_path("misc/" + p_misc + "/" + p_element, p_theme); // Theme misc path - if (p_theme != "" && p_subtheme != "") - pathlist += get_theme_path(p_element, p_theme + "/" + p_subtheme); // Subtheme path - if (p_misc != "") - pathlist += get_misc_path(p_misc, p_element); // Base misc path - if (p_theme != "") - pathlist += get_theme_path(p_element, p_theme); // Theme path - if (p_default_theme != "") - pathlist += get_theme_path(p_element, p_default_theme); // Default theme path - pathlist += VPath(p_element); // The path by itself - if (p_placeholder != "" && p_theme != "") - pathlist += get_theme_path(p_placeholder, p_theme); // Placeholder path - if (p_placeholder != "" && p_default_theme != "") - pathlist += get_theme_path(p_placeholder, p_default_theme); // Default placeholder path - return pathlist; + QVector pathlist; + if (p_character != "") + { + pathlist += get_character_path(p_character, p_element); // Character folder + } + if (p_misc != "" && p_theme != "" && p_subtheme != "") + { + pathlist += get_theme_path("misc/" + p_misc + "/" + p_element, p_theme + "/" + p_subtheme); // Subtheme misc path + } + if (p_misc != "" && p_theme != "") + { + pathlist += get_theme_path("misc/" + p_misc + "/" + p_element, p_theme); // Theme misc path + } + if (p_theme != "" && p_subtheme != "") + { + pathlist += get_theme_path(p_element, p_theme + "/" + p_subtheme); // Subtheme path + } + if (p_misc != "") + { + pathlist += get_misc_path(p_misc, p_element); // Base misc path + } + if (p_theme != "") + { + pathlist += get_theme_path(p_element, p_theme); // Theme path + } + if (p_default_theme != "") + { + pathlist += get_theme_path(p_element, p_default_theme); // Default theme path + } + pathlist += VPath(p_element); // The path by itself + if (p_placeholder != "" && p_theme != "") + { + pathlist += get_theme_path(p_placeholder, p_theme); // Placeholder path + } + if (p_placeholder != "" && p_default_theme != "") + { + pathlist += get_theme_path(p_placeholder, p_default_theme); // Default placeholder path + } + return pathlist; } QString AOApplication::get_asset_path(QVector pathlist) { - for (const VPath &p : pathlist) { - QString path = get_real_path(p); - if (!path.isEmpty()) { - return path; - } + for (const VPath &p : pathlist) + { + QString path = get_real_path(p); + if (!path.isEmpty()) + { + return path; + } } return QString(); } QString AOApplication::get_image_path(QVector pathlist, bool static_image) { - for (const VPath &p : pathlist) { - QString path = get_image_suffix(p, static_image); - if (!path.isEmpty()) { - return path; - } + for (const VPath &p : pathlist) + { + QString path = get_image_suffix(p, static_image); + if (!path.isEmpty()) + { + return path; + } } return QString(); } QString AOApplication::get_sfx_path(QVector pathlist) { - for (const VPath &p : pathlist) { - QString path = get_sfx_suffix(p); - if (!path.isEmpty()) { - return path; - } + for (const VPath &p : pathlist) + { + QString path = get_sfx_suffix(p); + if (!path.isEmpty()) + { + return path; + } } return QString(); } QString AOApplication::get_config_value(QString p_identifier, QString p_config, QString p_theme, QString p_subtheme, QString p_default_theme, QString p_misc) { - QString path; -// qDebug() << "got request for" << p_identifier << "in" << p_config; - const auto paths = get_asset_paths(p_config, p_theme, p_subtheme, p_default_theme, p_misc); - for (const VPath &p : paths) { - path = get_real_path(p); - if (!path.isEmpty()) { - QSettings settings(path, QSettings::IniFormat); + QString path; + // qDebug() << "got request for" << p_identifier << "in" << p_config; + const auto paths = get_asset_paths(p_config, p_theme, p_subtheme, p_default_theme, p_misc); + for (const VPath &p : paths) + { + path = get_real_path(p); + if (!path.isEmpty()) + { + QSettings settings(path, QSettings::IniFormat); #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - settings.setIniCodec("UTF-8"); + settings.setIniCodec("UTF-8"); #endif - QVariant value = settings.value(p_identifier); - if (value.type() == QVariant::StringList) { - return value.toStringList().join(","); - } - else if (!value.isNull()){ - return value.toString(); - } - } + QVariant value = settings.value(p_identifier); + if (value.type() == QVariant::StringList) + { + return value.toStringList().join(","); + } + else if (!value.isNull()) + { + return value.toString(); + } } - return ""; + } + return ""; } QString AOApplication::get_asset(QString p_element, QString p_theme, QString p_subtheme, QString p_default_theme, QString p_misc, QString p_character, QString p_placeholder) { QString ret = get_asset_path(get_asset_paths(p_element, p_theme, p_subtheme, p_default_theme, p_misc, p_character, p_placeholder)); - if (ret.isEmpty()) { - qWarning().nospace() << "could not find asset " << p_element - << " (theme = " << p_theme - << ", misc = " << p_misc - << ", char = " << p_character << ")"; + if (ret.isEmpty()) + { + qWarning().nospace() << "could not find asset " << p_element << " (theme = " << p_theme << ", misc = " << p_misc << ", char = " << p_character << ")"; } return ret; } -QString AOApplication::get_image(QString p_element, QString p_theme, QString p_subtheme, QString p_default_theme, QString p_misc, QString p_character, QString p_placeholder, - bool static_image) +QString AOApplication::get_image(QString p_element, QString p_theme, QString p_subtheme, QString p_default_theme, QString p_misc, QString p_character, QString p_placeholder, bool static_image) { QString ret = get_image_path(get_asset_paths(p_element, p_theme, p_subtheme, p_default_theme, p_misc, p_character, p_placeholder), static_image); - if (ret.isEmpty()) { - qWarning().nospace() << "could not find image " << p_element - << " (theme = " << p_theme - << ", misc = " << p_misc - << ", char = " << p_character - << ", static = " << static_image << ")"; + if (ret.isEmpty()) + { + qWarning().nospace() << "could not find image " << p_element << " (theme = " << p_theme << ", misc = " << p_misc << ", char = " << p_character << ", static = " << static_image << ")"; } return ret; } @@ -266,62 +293,69 @@ QString AOApplication::get_sfx(QString p_sfx, QString p_misc, QString p_characte // If SFX not found, search base/sounds/general/ folder pathlist += get_sounds_path(p_sfx); QString ret = get_sfx_path(pathlist); - if (ret.isEmpty()) { - qWarning().nospace() << "could not find sfx " << p_sfx - << " (char = " << p_character - << ", misc = " << p_misc << ")"; + if (ret.isEmpty()) + { + qWarning().nospace() << "could not find sfx " << p_sfx << " (char = " << p_character << ", misc = " << p_misc << ")"; } return ret; } QString AOApplication::get_case_sensitive_path(QString p_file) { -#ifdef CASE_SENSITIVE_FILESYSTEM +#ifndef CASE_SENSITIVE_FILESYSTEM + return p_file; +#endif + // first, check to see if it's actually there (also serves as base case for // recursion) QFileInfo file(p_file); QString file_basename = file.fileName(); if (exists(p_file)) + { return p_file; - + } QString file_parent_dir = get_case_sensitive_path(file.absolutePath()); // second, does it exist in the new parent dir? if (exists(file_parent_dir + "/" + file_basename)) + { return file_parent_dir + "/" + file_basename; + } // last resort, dirlist parent dir and find case insensitive match - - if (!dir_listing_exist_cache.contains(qHash(file_parent_dir))) { + if (!dir_listing_exist_cache.contains(qHash(file_parent_dir))) + { QStringList files = QDir(file_parent_dir).entryList(); - for (const QString &file : files) { + for (const QString &file : files) + { dir_listing_cache.insert(qHash(file_parent_dir % QChar('/') % file.toLower()), file); } dir_listing_exist_cache.insert(qHash(file_parent_dir)); } - QString found_file = dir_listing_cache.value( - qHash(file_parent_dir % QChar('/') % file_basename.toLower())); + QString found_file = dir_listing_cache.value(qHash(file_parent_dir % QChar('/') % file_basename.toLower())); - if (!found_file.isEmpty()) { + if (!found_file.isEmpty()) + { return file_parent_dir + "/" + found_file; } // if nothing is found, let the caller handle the missing file return file_parent_dir + "/" + file_basename; -#else - return p_file; -#endif } -QString AOApplication::get_real_path(const VPath &vpath, - const QStringList &suffixes) { +QString AOApplication::get_real_path(const VPath &vpath, const QStringList &suffixes) +{ // Try cache first QString phys_path = asset_lookup_cache.value(qHash(vpath)); - if (!phys_path.isEmpty() && exists(phys_path)) { - for (const QString &suffix : suffixes) { // make sure cached asset is the right type + if (!phys_path.isEmpty() && exists(phys_path)) + { + for (const QString &suffix : suffixes) + { // make sure cached asset is the right type if (phys_path.endsWith(suffix, Qt::CaseInsensitive)) + { return phys_path; + } } } @@ -338,20 +372,26 @@ QString AOApplication::get_real_path(const VPath &vpath, // content 2 // content 1 // base - for (const QString &base : bases) { - for (const QString &suffix : suffixes) { + for (const QString &base : bases) + { + for (const QString &suffix : suffixes) + { QDir baseDir(base); QString path = baseDir.absoluteFilePath(vpath.toQString() + suffix); - if (!path.startsWith(baseDir.absolutePath())) { + if (!path.startsWith(baseDir.absolutePath())) + { qWarning() << "invalid path" << path << "(path is outside vfs)"; break; } path = get_case_sensitive_path(path); - if (exists(path)) { + if (exists(path)) + { asset_lookup_cache.insert(qHash(vpath), path); unsigned int cache_size = asset_lookup_cache.size(); if (is_power_2(cache_size)) + { qDebug() << "lookup cache has reached" << cache_size << "entries"; + } return path; } } @@ -359,16 +399,11 @@ QString AOApplication::get_real_path(const VPath &vpath, // Not found in mount paths; check if the file is remote QString remotePath = vpath.toQString(); - if (remotePath.startsWith("http:") || remotePath.startsWith("https:")) { - return remotePath; + if (remotePath.startsWith("http:") || remotePath.startsWith("https:")) + { + return remotePath; } // File or directory not found return QString(); } - -void AOApplication::invalidate_lookup_cache() { - asset_lookup_cache.clear(); - dir_listing_cache.clear(); - dir_listing_exist_cache.clear(); -} diff --git a/src/scrolltext.cpp b/src/scrolltext.cpp index b526a8ab..25090a7a 100644 --- a/src/scrolltext.cpp +++ b/src/scrolltext.cpp @@ -1,6 +1,8 @@ #include "scrolltext.h" -ScrollText::ScrollText(QWidget *parent) : QWidget(parent), scrollPos(0) +ScrollText::ScrollText(QWidget *parent) + : QWidget(parent) + , scrollPos(0) { staticText.setTextFormat(Qt::PlainText); @@ -13,7 +15,10 @@ ScrollText::ScrollText(QWidget *parent) : QWidget(parent), scrollPos(0) timer.setInterval(50); } -QString ScrollText::text() const { return _text; } +QString ScrollText::text() const +{ + return _text; +} void ScrollText::setText(QString text) { @@ -22,7 +27,10 @@ void ScrollText::setText(QString text) update(); } -QString ScrollText::separator() const { return _separator; } +QString ScrollText::separator() const +{ + return _separator; +} void ScrollText::setSeparator(QString separator) { @@ -42,39 +50,40 @@ void ScrollText::updateText() scrollEnabled = (singleTextWidth > width() - leftMargin * 2); - if (scrollEnabled) { + if (scrollEnabled) + { scrollPos = -64; staticText.setText(_text + _separator); timer.start(); } else + { staticText.setText(_text); + } staticText.prepare(QTransform(), font()); #if QT_VERSION > QT_VERSION_CHECK(5, 11, 0) - wholeTextSize = QSize(fontMetrics().horizontalAdvance(staticText.text()), - fontMetrics().height()); + wholeTextSize = QSize(fontMetrics().horizontalAdvance(staticText.text()), fontMetrics().height()); #else - wholeTextSize = QSize(fontMetrics().boundingRect(staticText.text()).width(), - fontMetrics().height()); + wholeTextSize = QSize(fontMetrics().boundingRect(staticText.text()).width(), fontMetrics().height()); #endif - } void ScrollText::paintEvent(QPaintEvent *) { QPainter p(this); - if (scrollEnabled) { + if (scrollEnabled) + { buffer.fill(qRgba(0, 0, 0, 0)); QPainter pb(&buffer); pb.setPen(p.pen()); pb.setFont(p.font()); int x = qMin(-scrollPos, 0) + leftMargin; - while (x < width()) { - pb.drawStaticText(QPointF(x, (height() - wholeTextSize.height()) / 2), - staticText); + while (x < width()) + { + pb.drawStaticText(QPointF(x, (height() - wholeTextSize.height()) / 2), staticText); x += wholeTextSize.width(); } @@ -86,16 +95,17 @@ void ScrollText::paintEvent(QPaintEvent *) // initial situation: don't apply alpha channel in the left half of the // image at all; apply it more and more until scrollPos gets positive if (scrollPos < 0) + { pb.setOpacity(static_cast((qMax(-8, scrollPos) + 8) / 8.0)); + } pb.drawImage(0, 0, alphaChannel); // pb.end(); p.drawImage(0, 0, buffer); } - else { - p.drawStaticText( - QPointF(leftMargin, (height() - wholeTextSize.height()) / 2), - staticText); + else + { + p.drawStaticText(QPointF(leftMargin, (height() - wholeTextSize.height()) / 2), staticText); } } @@ -107,25 +117,35 @@ void ScrollText::resizeEvent(QResizeEvent *) buffer = QImage(size(), QImage::Format_ARGB32_Premultiplied); // Create Alpha Channel: - if (width() > 64) { + if (width() > 64) + { // create first scanline QRgb *scanline1 = reinterpret_cast(alphaChannel.scanLine(0)); for (int x = 1; x < 16; ++x) + { scanline1[x - 1] = scanline1[width() - x] = qRgba(0, 0, 0, x << 4); + } for (int x = 15; x < width() - 15; ++x) + { scanline1[x] = qRgb(0, 0, 0); + } // copy scanline to the other ones for (int y = 1; y < height(); ++y) - memcpy(alphaChannel.scanLine(y), scanline1, - static_cast(width() * 4)); + { + memcpy(alphaChannel.scanLine(y), scanline1, static_cast(width() * 4)); + } } else + { alphaChannel.fill(qRgb(0, 0, 0)); + } // Update scrolling state bool newScrollEnabled = (singleTextWidth > width() - leftMargin); if (newScrollEnabled != scrollEnabled) + { updateText(); + } } void ScrollText::timer_timeout() diff --git a/src/scrolltext.h b/src/scrolltext.h new file mode 100644 index 00000000..b7dd59f8 --- /dev/null +++ b/src/scrolltext.h @@ -0,0 +1,46 @@ +#pragma once + +#include +#include +#include +#include +#include + +class ScrollText : public QWidget +{ + Q_OBJECT + + Q_PROPERTY(QString text READ text WRITE setText) + Q_PROPERTY(QString separator READ separator WRITE setSeparator) + +public: + explicit ScrollText(QWidget *parent = nullptr); + +public Q_SLOTS: + QString text() const; + void setText(QString text); + + QString separator() const; + void setSeparator(QString separator); + +protected: + virtual void paintEvent(QPaintEvent *); + virtual void resizeEvent(QResizeEvent *); + +private: + void updateText(); + QString _text; + QString _separator; + QStaticText staticText; + int singleTextWidth; + QSize wholeTextSize; + int leftMargin; + bool scrollEnabled; + int scrollPos; + QImage alphaChannel; + QImage buffer; + QTimer timer; + +private Q_SLOTS: + virtual void timer_timeout(); +}; diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp index 51dc95ad..d8d0c61c 100644 --- a/src/text_file_functions.cpp +++ b/src/text_file_functions.cpp @@ -1,7 +1,16 @@ -#include "text_file_functions.h" +#include "aoapplication.h" + #include "aoutils.h" +#include "file_functions.h" #include "options.h" +#include +#include +#include +#include +#include +#include + QStringList AOApplication::get_list_file(VPath path) { return get_list_file(get_real_path(path)); @@ -16,11 +25,14 @@ QStringList AOApplication::get_list_file(QString p_file) p_ini.setFileName(p_file); if (!p_ini.open(QIODevice::ReadOnly)) + { return return_value; + } QTextStream in(&p_ini); - while (!in.atEnd()) { + while (!in.atEnd()) + { QString line = in.readLine(); return_value.append(line); } @@ -31,11 +43,14 @@ QStringList AOApplication::get_list_file(QString p_file) QString AOApplication::read_file(QString filename) { if (filename.isEmpty()) + { return QString(); + } QFile f_log(filename); - if (!f_log.open(QIODevice::ReadOnly | QIODevice::Text)) { + if (!f_log.open(QIODevice::ReadOnly | QIODevice::Text)) + { qWarning() << "Couldn't open" << filename << "for reading"; return QString(); } @@ -49,17 +64,22 @@ QString AOApplication::read_file(QString filename) bool AOApplication::write_to_file(QString p_text, QString p_file, bool make_dir) { QString path = QFileInfo(p_file).path(); - if (make_dir) { + if (make_dir) + { // Create the dir if it doesn't exist yet QDir dir(path); if (!dir.exists()) + { if (!dir.mkpath(".")) + { return false; + } + } } QFile f_log(p_file); - if (f_log.open(QIODevice::WriteOnly | QIODevice::Text | - QIODevice::Truncate)) { + if (f_log.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) + { QTextStream out(&f_log); #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) @@ -74,24 +94,29 @@ bool AOApplication::write_to_file(QString p_text, QString p_file, bool make_dir) return false; } -bool AOApplication::append_to_file(QString p_text, QString p_file, - bool make_dir) +bool AOApplication::append_to_file(QString p_text, QString p_file, bool make_dir) { - if(!file_exists(p_file)) //Don't create a newline if file didn't exist before now + if (!file_exists(p_file)) // Don't create a newline if file didn't exist before now { return write_to_file(p_text, p_file, make_dir); } QString path = QFileInfo(p_file).path(); // Create the dir if it doesn't exist yet - if (make_dir) { + if (make_dir) + { QDir dir(path); if (!dir.exists()) + { if (!dir.mkpath(".")) + { return false; + } + } } QFile f_log(p_file); - if (f_log.open(QIODevice::WriteOnly | QIODevice::Append)) { + if (f_log.open(QIODevice::WriteOnly | QIODevice::Append)) + { QTextStream out(&f_log); #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) @@ -108,41 +133,43 @@ bool AOApplication::append_to_file(QString p_text, QString p_file, QMultiMap AOApplication::load_demo_logs_list() const { - QString l_log_path = applicationDirPath() + "/logs/"; - QDir l_log_folder(l_log_path); - l_log_folder.setFilter(QDir::NoDotAndDotDot | QDir::Dirs); + QString l_log_path = applicationDirPath() + "/logs/"; + QDir l_log_folder(l_log_path); + l_log_folder.setFilter(QDir::NoDotAndDotDot | QDir::Dirs); - QMultiMap l_demo_logs; - for (const QString &l_demo_folder_name : l_log_folder.entryList()) { - QDir l_demo_folder(l_log_path + l_demo_folder_name); - l_demo_folder.setFilter(QDir::Files); - l_demo_folder.setNameFilters(QStringList() << "*.demo"); + QMultiMap l_demo_logs; + for (const QString &l_demo_folder_name : l_log_folder.entryList()) + { + QDir l_demo_folder(l_log_path + l_demo_folder_name); + l_demo_folder.setFilter(QDir::Files); + l_demo_folder.setNameFilters(QStringList() << "*.demo"); - for (QString l_demo_name : l_demo_folder.entryList()) { - l_demo_logs.insert(l_demo_folder_name, l_demo_name); - } + for (QString l_demo_name : l_demo_folder.entryList()) + { + l_demo_logs.insert(l_demo_folder_name, l_demo_name); } - return l_demo_logs; + } + return l_demo_logs; } -QString AOApplication::read_design_ini(QString p_identifier, - VPath p_design_path) +QString AOApplication::read_design_ini(QString p_identifier, VPath p_design_path) { return read_design_ini(p_identifier, get_real_path(p_design_path)); } -QString AOApplication::read_design_ini(QString p_identifier, - QString p_design_path) +QString AOApplication::read_design_ini(QString p_identifier, QString p_design_path) { QSettings settings(p_design_path, QSettings::IniFormat); #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) settings.setIniCodec("UTF-8"); #endif QVariant value = settings.value(p_identifier); - if (value.type() == QVariant::StringList) { + if (value.type() == QVariant::StringList) + { return value.toStringList().join(","); } - else if (!value.isNull()) { + else if (!value.isNull()) + { return value.toString(); } return ""; @@ -151,10 +178,14 @@ QString AOApplication::read_design_ini(QString p_identifier, Qt::TransformationMode AOApplication::get_scaling(QString p_scaling) { if (p_scaling.isEmpty()) + { p_scaling = Options::getInstance().defaultScalingMode(); + } if (p_scaling == "smooth") + { return Qt::SmoothTransformation; + } return Qt::FastTransformation; } @@ -167,21 +198,23 @@ QPoint AOApplication::get_button_spacing(QString p_identifier, QString p_file) return_value.setY(0); if (value == "") + { return return_value; + } QStringList sub_line_elements = value.split(","); if (sub_line_elements.size() < 2) + { return return_value; + } return_value.setX(sub_line_elements.at(0).toInt() * Options::getInstance().themeScalingFactor()); return_value.setY(sub_line_elements.at(1).toInt() * Options::getInstance().themeScalingFactor()); return return_value; } -pos_size_type AOApplication::get_element_dimensions(QString p_identifier, - QString p_file, - QString p_misc) +pos_size_type AOApplication::get_element_dimensions(QString p_identifier, QString p_file, QString p_misc) { pos_size_type return_value; return_value.x = 0; @@ -193,7 +226,9 @@ pos_size_type AOApplication::get_element_dimensions(QString p_identifier, QStringList sub_line_elements = f_result.split(","); if (sub_line_elements.size() < 4) + { return return_value; + } int scale = Options::getInstance().themeScalingFactor(); @@ -204,36 +239,32 @@ pos_size_type AOApplication::get_element_dimensions(QString p_identifier, return return_value; } -QString AOApplication::get_design_element(QString p_identifier, QString p_file, - QString p_misc) +QString AOApplication::get_design_element(QString p_identifier, QString p_file, QString p_misc) { QString value = get_config_value(p_identifier, p_file, Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme, p_misc); if (!value.isEmpty()) + { return value; + } return ""; } -// tfw this function is only used for lobby and nowhere else -int AOApplication::get_font_size(QString p_identifier, QString p_file) -{ - QString value = get_config_value(p_identifier, p_file, Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme); - if (!value.isEmpty()) - return value.toInt(); - return 10; -} - QColor AOApplication::get_color(QString p_identifier, QString p_file) { QString value = get_config_value(p_identifier, p_file, Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme); QColor return_color(0, 0, 0); if (value.isEmpty()) + { return return_color; + } QStringList color_list = value.split(","); if (color_list.size() < 3) + { return return_color; + } return_color.setRed(color_list.at(0).toInt()); return_color.setGreen(color_list.at(1).toInt()); @@ -248,47 +279,17 @@ QString AOApplication::get_stylesheet(QString p_file) QFile design_ini; design_ini.setFileName(path); if (!design_ini.open(QIODevice::ReadOnly)) + { return ""; - - QTextStream in(&design_ini); - - QString f_text; - - while (!in.atEnd()) { - f_text.append(in.readLine()); } - design_ini.close(); - return f_text; -} - -QString AOApplication::get_tagged_stylesheet(QString target_tag, QString p_file) -{ - QString path = get_asset(p_file, Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme); - QFile design_ini; - design_ini.setFileName(path); - if (!design_ini.open(QIODevice::ReadOnly)) - return ""; - QTextStream in(&design_ini); QString f_text; - bool tag_found = false; - - while (!in.atEnd()) { - QString line = in.readLine(); - - if (line.startsWith(target_tag, Qt::CaseInsensitive)) { - tag_found = true; - continue; - } - - if (tag_found) { - if ((line.startsWith("[") && line.endsWith("]"))) - break; - f_text.append(line); - } + while (!in.atEnd()) + { + f_text.append(in.readLine()); } design_ini.close(); @@ -300,19 +301,18 @@ QString AOApplication::get_chat_markup(QString p_identifier, QString p_chat) // New Chadly method QString value = get_config_value(p_identifier, "chat_config.ini", Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme, p_chat); if (!value.isEmpty()) + { return value.toUtf8(); + } // Backwards ass compatibility - QVector backwards_paths { - get_theme_path("misc/" + p_chat + "/config.ini"), - VPath("misc/" + p_chat + "/config.ini"), - get_theme_path("misc/default/config.ini"), - VPath("misc/default/config.ini") - }; + QVector backwards_paths{get_theme_path("misc/" + p_chat + "/config.ini"), VPath("misc/" + p_chat + "/config.ini"), get_theme_path("misc/default/config.ini"), VPath("misc/default/config.ini")}; - for (const VPath &p : backwards_paths) { + for (const VPath &p : backwards_paths) + { QString value = read_design_ini(p_identifier, p); - if (!value.isEmpty()) { + if (!value.isEmpty()) + { return value.toUtf8(); } } @@ -325,12 +325,16 @@ QColor AOApplication::get_chat_color(QString p_identifier, QString p_chat) QColor return_color(255, 255, 255); QString f_result = get_chat_markup(p_identifier, p_chat); if (f_result == "") + { return return_color; + } QStringList color_list = f_result.split(","); if (color_list.size() < 3) + { return return_color; + } return_color.setRed(color_list.at(0).toInt()); return_color.setGreen(color_list.at(1).toInt()); @@ -341,30 +345,33 @@ QColor AOApplication::get_chat_color(QString p_identifier, QString p_chat) QString AOApplication::get_penalty_value(QString p_identifier) { - return get_config_value(p_identifier, "penalty/penalty.ini", Options::getInstance().theme(), - Options::getInstance().subTheme(), default_theme, ""); + return get_config_value(p_identifier, "penalty/penalty.ini", Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme, ""); } - QString AOApplication::get_court_sfx(QString p_identifier, QString p_misc) { QString value = get_config_value(p_identifier, "courtroom_sounds.ini", Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme, p_misc); if (!value.isEmpty()) + { return value.toUtf8(); + } return ""; } QString AOApplication::get_sfx_suffix(VPath sound_to_check) { - QStringList suffixes = {".opus", ".ogg", ".mp3", ".wav", ".mid", ".midi", ".xm", ".it", ".s3m", ".mod", ".mtm", ".umx" }; + QStringList suffixes = {".opus", ".ogg", ".mp3", ".wav", ".mid", ".midi", ".xm", ".it", ".s3m", ".mod", ".mtm", ".umx"}; // Check if we were provided a direct filepath with a suffix already QString path = sound_to_check.toQString(); // Loop through our suffixes - for (const QString &suffix : suffixes) { + for (const QString &suffix : suffixes) + { // If our VPath ends with a valid suffix if (path.endsWith(suffix, Qt::CaseInsensitive)) + { // Return that as the path return get_real_path(sound_to_check); + } } // Otherwise, ignore the provided suffix and check our own return get_real_path(sound_to_check, suffixes); @@ -372,20 +379,24 @@ QString AOApplication::get_sfx_suffix(VPath sound_to_check) QString AOApplication::get_image_suffix(VPath path_to_check, bool static_image) { - QStringList suffixes {}; - if (!static_image) { - suffixes.append({ ".webp", ".apng", ".gif" }); + QStringList suffixes{}; + if (!static_image) + { + suffixes.append({".webp", ".apng", ".gif"}); } suffixes.append(".png"); // Check if we were provided a direct filepath with a suffix already QString path = path_to_check.toQString(); // Loop through our suffixes - for (const QString &suffix : suffixes) { + for (const QString &suffix : suffixes) + { // If our VPath ends with a valid suffix if (path.endsWith(suffix, Qt::CaseInsensitive)) + { // Return that as the path return get_real_path(path_to_check); + } } // Otherwise, ignore the provided suffix and check our own return get_real_path(path_to_check, suffixes); @@ -394,11 +405,9 @@ QString AOApplication::get_image_suffix(VPath path_to_check, bool static_image) // returns whatever is to the right of "search_line =" within target_tag and // terminator_tag, trimmed returns the empty string if the search line couldnt // be found -QString AOApplication::read_char_ini(QString p_char, QString p_search_line, - QString target_tag) +QString AOApplication::read_char_ini(QString p_char, QString p_search_line, QString target_tag) { - QSettings settings(get_real_path(get_character_path(p_char, "char.ini")), - QSettings::IniFormat); + QSettings settings(get_real_path(get_character_path(p_char, "char.ini")), QSettings::IniFormat); #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) settings.setIniCodec("UTF-8"); #endif @@ -408,20 +417,6 @@ QString AOApplication::read_char_ini(QString p_char, QString p_search_line, return value; } -void AOApplication::set_char_ini(QString p_char, QString value, - QString p_search_line, QString target_tag) -{ - QSettings settings(get_real_path(get_character_path(p_char, "char.ini")), - QSettings::IniFormat); - -#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - settings.setIniCodec("UTF-8"); -#endif - settings.beginGroup(target_tag); - settings.setValue(p_search_line, value); - settings.endGroup(); -} - // returns all the values of target_tag QStringList AOApplication::read_ini_tags(VPath p_path, QString target_tag) { @@ -431,14 +426,19 @@ QStringList AOApplication::read_ini_tags(VPath p_path, QString target_tag) settings.setIniCodec("UTF-8"); #endif if (!target_tag.isEmpty()) + { settings.beginGroup(target_tag); + } QStringList keys = settings.allKeys(); - foreach (QString key, keys) { + foreach (QString key, keys) + { QString value = settings.value(key).value(); r_values << key + "=" + value; } if (!settings.group().isEmpty()) + { settings.endGroup(); + } return r_values; } @@ -448,9 +448,13 @@ QString AOApplication::get_showname(QString p_char) QString f_needed = read_char_ini(p_char, "needs_showname", "Options"); if (f_needed.startsWith("false")) + { return ""; + } if (f_result == "") + { return p_char; + } return f_result; } @@ -459,7 +463,9 @@ QString AOApplication::get_char_side(QString p_char) QString f_result = read_char_ini(p_char, "side", "Options"); if (f_result == "") + { return "wit"; + } return f_result; } @@ -467,42 +473,51 @@ QString AOApplication::get_blips(QString p_char) { QString f_result = read_char_ini(p_char, "blips", "Options"); - if (f_result == "") { + if (f_result == "") + { f_result = read_char_ini(p_char, "gender", "Options"); // not very PC, FanatSors if (f_result == "") + { f_result = "male"; + } } - if (!file_exists(get_sfx_suffix(get_sounds_path(f_result)))) { + if (!file_exists(get_sfx_suffix(get_sounds_path(f_result)))) + { if (file_exists(get_sfx_suffix(get_sounds_path("../blips/" + f_result)))) + { return "../blips/" + f_result; // Return the cool kids variant + } return "sfx-blip" + f_result; // Return legacy variant } return f_result; } -QString AOApplication::get_emote_property(QString p_char, QString p_emote, - QString p_property) +QString AOApplication::get_emote_property(QString p_char, QString p_emote, QString p_property) { - QString f_result = - read_char_ini(p_char, p_emote, p_property); // per-emote override + QString f_result = read_char_ini(p_char, p_emote, p_property); // per-emote override if (f_result == "") + { f_result = read_char_ini(p_char, p_property, "Options"); // global for this character + } return f_result; } Qt::TransformationMode AOApplication::get_misc_scaling(QString p_miscname) { - if (p_miscname != "") { - QString misc_transform_mode = read_design_ini( - "scaling", get_theme_path("misc/" + p_miscname + "/config.ini")); + if (p_miscname != "") + { + QString misc_transform_mode = read_design_ini("scaling", get_theme_path("misc/" + p_miscname + "/config.ini")); if (misc_transform_mode == "") - misc_transform_mode = - read_design_ini("scaling", get_misc_path(p_miscname, "config.ini")); + { + misc_transform_mode = read_design_ini("scaling", get_misc_path(p_miscname, "config.ini")); + } if (misc_transform_mode == "smooth") + { return Qt::SmoothTransformation; + } } return Qt::FastTransformation; } @@ -516,7 +531,9 @@ QString AOApplication::get_category(QString p_char) QString AOApplication::get_chat(QString p_char) { if (p_char == "default") + { return "default"; + } QString f_result = read_char_ini(p_char, "chat", "Options"); return f_result; } @@ -533,7 +550,9 @@ int AOApplication::get_chat_size(QString p_char) QString f_result = read_char_ini(p_char, "chat_size", "Options"); if (f_result == "") + { return -1; + } return f_result.toInt(); } @@ -542,7 +561,9 @@ int AOApplication::get_preanim_duration(QString p_char, QString p_emote) QString f_result = read_char_ini(p_char, p_emote, "Time"); if (f_result == "") + { return -1; + } return f_result.toInt(); } @@ -551,18 +572,20 @@ int AOApplication::get_emote_number(QString p_char) QString f_result = read_char_ini(p_char, "number", "Emotions"); if (f_result == "") + { return 0; + } return f_result.toInt(); } QString AOApplication::get_emote_comment(QString p_char, int p_emote) { - QString f_result = - read_char_ini(p_char, QString::number(p_emote + 1), "Emotions"); + QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "Emotions"); QStringList result_contents = f_result.split("#"); - if (result_contents.size() < 4) { + if (result_contents.size() < 4) + { qWarning() << "misformatted char.ini: " << p_char << ", " << p_emote; return "normal"; } @@ -571,12 +594,12 @@ QString AOApplication::get_emote_comment(QString p_char, int p_emote) QString AOApplication::get_pre_emote(QString p_char, int p_emote) { - QString f_result = - read_char_ini(p_char, QString::number(p_emote + 1), "Emotions"); + QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "Emotions"); QStringList result_contents = f_result.split("#"); - if (result_contents.size() < 4) { + if (result_contents.size() < 4) + { qWarning() << "misformatted char.ini: " << p_char << ", " << p_emote; return ""; } @@ -585,12 +608,12 @@ QString AOApplication::get_pre_emote(QString p_char, int p_emote) QString AOApplication::get_emote(QString p_char, int p_emote) { - QString f_result = - read_char_ini(p_char, QString::number(p_emote + 1), "Emotions"); + QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "Emotions"); QStringList result_contents = f_result.split("#"); - if (result_contents.size() < 4) { + if (result_contents.size() < 4) + { qWarning() << "misformatted char.ini: " << p_char << ", " << p_emote; return "normal"; } @@ -599,14 +622,13 @@ QString AOApplication::get_emote(QString p_char, int p_emote) int AOApplication::get_emote_mod(QString p_char, int p_emote) { - QString f_result = - read_char_ini(p_char, QString::number(p_emote + 1), "Emotions"); + QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "Emotions"); QStringList result_contents = f_result.split("#"); - if (result_contents.size() < 4) { - qWarning() << "misformatted char.ini: " << p_char << ", " - << QString::number(p_emote); + if (result_contents.size() < 4) + { + qWarning() << "misformatted char.ini: " << p_char << ", " << QString::number(p_emote); return 0; } return result_contents.at(3).toInt(); @@ -614,89 +636,90 @@ int AOApplication::get_emote_mod(QString p_char, int p_emote) int AOApplication::get_desk_mod(QString p_char, int p_emote) { - QString f_result = - read_char_ini(p_char, QString::number(p_emote + 1), "Emotions"); + QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "Emotions"); QStringList result_contents = f_result.split("#"); if (result_contents.size() < 5) + { return -1; + } QString string_result = result_contents.at(4); if (string_result == "") + { return -1; + } return string_result.toInt(); } QString AOApplication::get_sfx_name(QString p_char, int p_emote) { - QString f_result = - read_char_ini(p_char, QString::number(p_emote + 1), "SoundN"); + QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "SoundN"); if (f_result == "") + { return "1"; - return f_result; -} - -QString AOApplication::get_emote_blip(QString p_char, int p_emote) -{ - QString f_result = - read_char_ini(p_char, QString::number(p_emote + 1), "SoundB"); + } return f_result; } int AOApplication::get_sfx_delay(QString p_char, int p_emote) { - QString f_result = - read_char_ini(p_char, QString::number(p_emote + 1), "SoundT"); + QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "SoundT"); if (f_result == "") + { return 1; + } return f_result.toInt(); } QString AOApplication::get_sfx_looping(QString p_char, int p_emote) { - QString f_result = - read_char_ini(p_char, QString::number(p_emote + 1), "SoundL"); + QString f_result = read_char_ini(p_char, QString::number(p_emote + 1), "SoundL"); if (f_result == "") + { return "0"; + } else + { return f_result; + } } -QString AOApplication::get_sfx_frame(QString p_char, QString p_emote, - int n_frame) +QString AOApplication::get_sfx_frame(QString p_char, QString p_emote, int n_frame) { - QString f_result = read_char_ini(p_char, QString::number(n_frame), - p_emote.append("_FrameSFX")); + QString f_result = read_char_ini(p_char, QString::number(n_frame), p_emote.append("_FrameSFX")); if (f_result == "") + { return ""; + } return f_result; } -QString AOApplication::get_screenshake_frame(QString p_char, QString p_emote, - int n_frame) +QString AOApplication::get_screenshake_frame(QString p_char, QString p_emote, int n_frame) { - QString f_result = read_char_ini(p_char, QString::number(n_frame), - p_emote.append("_FrameScreenshake")); + QString f_result = read_char_ini(p_char, QString::number(n_frame), p_emote.append("_FrameScreenshake")); if (f_result == "") + { return ""; + } return f_result; } -QString AOApplication::get_flash_frame(QString p_char, QString p_emote, - int n_frame) +QString AOApplication::get_flash_frame(QString p_char, QString p_emote, int n_frame) { - QString f_result = read_char_ini(p_char, QString::number(n_frame), - p_emote.append("_FrameRealization")); + QString f_result = read_char_ini(p_char, QString::number(n_frame), p_emote.append("_FrameRealization")); if (f_result == "") + { return ""; + } return f_result; } @@ -705,15 +728,17 @@ int AOApplication::get_text_delay(QString p_char, QString p_emote) QString f_result = read_char_ini(p_char, p_emote, "stay_time"); if (f_result == "") + { return -1; + } return f_result.toInt(); } QStringList AOApplication::get_effects(QString p_char) { const QStringList l_filepath_list{ - get_asset("effects/effects.ini", Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme, ""), - get_asset("effects.ini", Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme, read_char_ini(p_char, "effects", "Options")), + get_asset("effects/effects.ini", Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme, ""), + get_asset("effects.ini", Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme, read_char_ini(p_char, "effects", "Options")), }; QStringList l_effect_name_list; @@ -728,14 +753,16 @@ QStringList AOApplication::get_effects(QString p_char) #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) l_effects_ini.setIniCodec("UTF-8"); #endif - // port legacy effects + // port legacy effects if (!l_effects_ini.contains("version/major") || l_effects_ini.value("version/major").toInt() < 2) { QFile effects_old(i_filepath); - if (QFile::copy(i_filepath, i_filepath + ".old")) { + if (QFile::copy(i_filepath, i_filepath + ".old")) + { AOUtils::migrateEffects(l_effects_ini); } - else { + else + { qWarning() << "Unable to copy effects.ini, skipping migration."; } } @@ -751,9 +778,7 @@ QStringList AOApplication::get_effects(QString p_char) } } - std::sort(l_group_list.begin(), l_group_list.end(), [](const QString &lhs, const QString &rhs) { - return lhs.toInt() < rhs.toInt(); - }); + std::sort(l_group_list.begin(), l_group_list.end(), [](const QString &lhs, const QString &rhs) { return lhs.toInt() < rhs.toInt(); }); for (const QString &i_group : qAsConst(l_group_list)) { @@ -775,46 +800,54 @@ QStringList AOApplication::get_effects(QString p_char) return l_effect_name_list; } -QString AOApplication::get_effect(QString effect, QString p_char, - QString p_folder) +QString AOApplication::get_effect(QString effect, QString p_char, QString p_folder) { if (p_folder == "") + { p_folder = read_char_ini(p_char, "effects", "Options"); + } - QStringList paths { - get_image("effects/" + effect, Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme, ""), - get_image(effect, Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme, p_folder) - }; + QStringList paths{get_image("effects/" + effect, Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme, ""), get_image(effect, Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme, p_folder)}; for (const auto &p : paths) + { if (file_exists(p)) + { return p; + } + } return {}; } -QString AOApplication::get_effect_property(QString fx_name, QString p_char, - QString p_folder, QString p_property) +QString AOApplication::get_effect_property(QString fx_name, QString p_char, QString p_folder, QString p_property) { if (p_folder == "") + { p_folder = read_char_ini(p_char, "effects", "Options"); + } const auto paths = get_asset_paths("effects/effects.ini", Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme, ""); const auto misc_paths = get_asset_paths("effects.ini", Options::getInstance().theme(), Options::getInstance().subTheme(), default_theme, p_folder); QString path; QString f_result; - for (const VPath &p : paths + misc_paths) { + for (const VPath &p : paths + misc_paths) + { path = get_real_path(p); - if (!path.isEmpty()) { + if (!path.isEmpty()) + { QSettings settings(path, QSettings::IniFormat); #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) settings.setIniCodec("UTF-8"); #endif QStringList char_effects = settings.childGroups(); - for (int i = 0; i < char_effects.size(); ++i) { + for (int i = 0; i < char_effects.size(); ++i) + { QString effect = settings.value(char_effects[i] + "/name").toString(); - if (effect.toLower() == fx_name.toLower()) { + if (effect.toLower() == fx_name.toLower()) + { f_result = settings.value(char_effects[i] + "/" + p_property).toString(); - if (!f_result.isEmpty()) { + if (!f_result.isEmpty()) + { // Only break the loop if we get a non-empty result, continue the search otherwise break; } @@ -822,7 +855,8 @@ QString AOApplication::get_effect_property(QString fx_name, QString p_char, } } } - if (fx_name == "realization" && p_property == "sound") { + if (fx_name == "realization" && p_property == "sound") + { f_result = get_custom_realization(p_char); } return f_result; @@ -832,15 +866,18 @@ QString AOApplication::get_custom_realization(QString p_char) { QString f_result = read_char_ini(p_char, "realization", "Options"); if (f_result == "") + { return get_court_sfx("realization"); + } return get_sfx_suffix(get_sounds_path(f_result)); } bool AOApplication::get_pos_is_judge(const QString &p_pos) { QStringList positions = read_design_ini("judges", get_background_path("design.ini")).split(","); - if (positions.size() == 1 && positions[0] == "") { - return p_pos == "jud"; //Hardcoded BS only if we have no judges= defined + if (positions.size() == 1 && positions[0] == "") + { + return p_pos == "jud"; // Hardcoded BS only if we have no judges= defined } return positions.contains(p_pos.trimmed()); } diff --git a/src/widgets/add_server_dialog.cpp b/src/widgets/add_server_dialog.cpp index d590d77c..dfc302f0 100644 --- a/src/widgets/add_server_dialog.cpp +++ b/src/widgets/add_server_dialog.cpp @@ -1,29 +1,28 @@ -#include "widgets/add_server_dialog.h" +#include "add_server_dialog.h" + #include "datatypes.h" #include "options.h" +#include "gui_utils.h" #include #include #include #include -#include #include +#include #include #include #include #include #include -#define FROM_UI(type, name) \ - ; \ - ui_##name = findChild(#name); - AddServerDialog::AddServerDialog() { QUiLoader l_loader(this); QFile l_uiFile(Options::getInstance().getUIAsset(DEFAULT_UI)); - if (!l_uiFile.open(QFile::ReadOnly)) { + if (!l_uiFile.open(QFile::ReadOnly)) + { qCritical() << "Unable to open file " << l_uiFile.fileName(); return; } @@ -38,16 +37,13 @@ AddServerDialog::AddServerDialog() FROM_UI(QComboBox, server_protocol_box); FROM_UI(QPlainTextEdit, server_description_edit); FROM_UI(QDialogButtonBox, server_dialog_button); - connect(ui_server_dialog_button, &QDialogButtonBox::accepted, this, - &::AddServerDialog::onSavePressed); - connect(ui_server_dialog_button, &QDialogButtonBox::rejected, this, - &AddServerDialog::onCancelPressed); + connect(ui_server_dialog_button, &QDialogButtonBox::accepted, this, &::AddServerDialog::onSavePressed); + connect(ui_server_dialog_button, &QDialogButtonBox::rejected, this, &AddServerDialog::onCancelPressed); FROM_UI(QLabel, server_legacy_lbl); FROM_UI(QLineEdit, server_legacy_edit); FROM_UI(QPushButton, server_legacy_load_button); - connect(ui_server_legacy_load_button, &QPushButton::released, this, - &AddServerDialog::parseLegacyServerEntry); + connect(ui_server_legacy_load_button, &QPushButton::released, this, &AddServerDialog::parseLegacyServerEntry); } void AddServerDialog::onSavePressed() @@ -57,38 +53,42 @@ void AddServerDialog::onSavePressed() server.ip = ui_server_hostname_edit->text(); server.port = ui_server_port_box->value(); server.desc = ui_server_description_edit->toPlainText(); - server.socket_type = - ui_server_protocol_box->currentIndex() == TCP_INDEX ? TCP : WEBSOCKETS; + server.socket_type = ui_server_protocol_box->currentIndex() == TCP_INDEX ? TCP : WEBSOCKETS; Options::getInstance().addFavorite(server); close(); } void AddServerDialog::onCancelPressed() { - close(); - deleteLater(); + close(); + deleteLater(); } void AddServerDialog::parseLegacyServerEntry() { QStringList l_legacy_entry = ui_server_legacy_edit->text().split(":"); server_type l_server_entry; - if (l_legacy_entry.isEmpty()) { + if (l_legacy_entry.isEmpty()) + { qDebug() << "Legacy entry empty."; return; } int l_item_count = l_legacy_entry.size(); - if (l_item_count >= 3) { + if (l_item_count >= 3) + { ui_server_hostname_edit->setText(l_legacy_entry.at(0)); ui_server_port_box->setValue(l_legacy_entry.at(1).toInt()); ui_server_display_name_edit->setText(l_legacy_entry.at(2)); - if (l_item_count >= 4) { - if (l_legacy_entry.at(3) == "ws") { + if (l_item_count >= 4) + { + if (l_legacy_entry.at(3) == "ws") + { ui_server_protocol_box->setCurrentIndex(1); } - else { + else + { ui_server_protocol_box->setCurrentIndex(0); } } diff --git a/src/widgets/add_server_dialog.h b/src/widgets/add_server_dialog.h new file mode 100644 index 00000000..5df868cc --- /dev/null +++ b/src/widgets/add_server_dialog.h @@ -0,0 +1,40 @@ +#pragma once + +#include "interfaces/server_dialog.h" + +#include +#include +#include +#include +#include +#include +#include + +class AddServerDialog : public AttorneyOnline::UI::FavoriteServerDialog +{ + Q_OBJECT + +public: + AddServerDialog(); + ~AddServerDialog() = default; + +private: + QWidget *ui_widget; + + QLineEdit *ui_server_display_name_edit; + QLineEdit *ui_server_hostname_edit; + QSpinBox *ui_server_port_box; + QComboBox *ui_server_protocol_box; + QPlainTextEdit *ui_server_description_edit; + QDialogButtonBox *ui_server_dialog_button; + + // Legacy Server UI + QLabel *ui_server_legacy_lbl; + QLineEdit *ui_server_legacy_edit; + QPushButton *ui_server_legacy_load_button; + +private Q_SLOTS: + void onSavePressed() override; + void onCancelPressed() override; + void parseLegacyServerEntry(); +}; diff --git a/src/widgets/aooptionsdialog.cpp b/src/widgets/aooptionsdialog.cpp index 72c9f4e8..a25bde36 100644 --- a/src/widgets/aooptionsdialog.cpp +++ b/src/widgets/aooptionsdialog.cpp @@ -1,45 +1,37 @@ -#include "widgets/aooptionsdialog.h" +#include "aooptionsdialog.h" + #include "QDesktopServices" #include "aoapplication.h" #include "bass.h" #include "file_functions.h" +#include "gui_utils.h" #include "networkmanager.h" #include "options.h" -#include #include -#include -#include #include -#include -#include -#include -#include #include -#include #include #include -#define FROM_UI(type, name) \ - ; \ - ui_##name = findChild(#name); - -AOOptionsDialog::AOOptionsDialog(QDialog *parent, AOApplication *p_ao_app) +AOOptionsDialog::AOOptionsDialog(AOApplication *p_ao_app, QWidget *parent) : QDialog(parent) + , ao_app(p_ao_app) { - ao_app = p_ao_app; setupUI(); } void AOOptionsDialog::populateAudioDevices() { ui_audio_device_combobox->clear(); - if (needsDefaultAudioDevice()) { + if (needsDefaultAudioDevice()) + { ui_audio_device_combobox->addItem("default", "default"); } BASS_DEVICEINFO info; - for (int a = 0; BASS_GetDeviceInfo(a, &info); a++) { + for (int a = 0; BASS_GetDeviceInfo(a, &info); a++) + { ui_audio_device_combobox->addItem(info.name, info.name); } } @@ -50,7 +42,8 @@ void AOOptionsDialog::setWidgetData(QCheckBox *widget, const bool &value) widget->setChecked(value); } -template <> bool AOOptionsDialog::widgetData(QCheckBox *widget) const +template <> +bool AOOptionsDialog::widgetData(QCheckBox *widget) const { return widget->isChecked(); } @@ -61,7 +54,8 @@ void AOOptionsDialog::setWidgetData(QLineEdit *widget, const QString &value) widget->setText(value); } -template <> QString AOOptionsDialog::widgetData(QLineEdit *widget) const +template <> +QString AOOptionsDialog::widgetData(QLineEdit *widget) const { return widget->text(); } @@ -72,14 +66,14 @@ void AOOptionsDialog::setWidgetData(QLineEdit *widget, const uint16_t &value) widget->setText(QString::number(value)); } -template <> uint16_t AOOptionsDialog::widgetData(QLineEdit *widget) const +template <> +uint16_t AOOptionsDialog::widgetData(QLineEdit *widget) const { return widget->text().toUShort(); } template <> -void AOOptionsDialog::setWidgetData(QPlainTextEdit *widget, - const QStringList &value) +void AOOptionsDialog::setWidgetData(QPlainTextEdit *widget, const QStringList &value) { widget->setPlainText(value.join('\n')); } @@ -96,7 +90,8 @@ void AOOptionsDialog::setWidgetData(QSpinBox *widget, const int &value) widget->setValue(value); } -template <> int AOOptionsDialog::widgetData(QSpinBox *widget) const +template <> +int AOOptionsDialog::widgetData(QSpinBox *widget) const { return widget->value(); } @@ -104,17 +99,19 @@ template <> int AOOptionsDialog::widgetData(QSpinBox *widget) const template <> void AOOptionsDialog::setWidgetData(QComboBox *widget, const QString &value) { - for (auto i = 0; i < widget->count(); i++) { - if (widget->itemData(i).toString() == value) { + for (auto i = 0; i < widget->count(); i++) + { + if (widget->itemData(i).toString() == value) + { widget->setCurrentIndex(i); return; } } - qWarning() << "value" << value << "not found for widget" - << widget->objectName(); + qWarning() << "value" << value << "not found for widget" << widget->objectName(); } -template <> QString AOOptionsDialog::widgetData(QComboBox *widget) const +template <> +QString AOOptionsDialog::widgetData(QComboBox *widget) const { return widget->currentData().toString(); } @@ -125,34 +122,35 @@ void AOOptionsDialog::setWidgetData(QGroupBox *widget, const bool &value) widget->setChecked(value); } -template <> bool AOOptionsDialog::widgetData(QGroupBox *widget) const +template <> +bool AOOptionsDialog::widgetData(QGroupBox *widget) const { return widget->isChecked(); } template <> -void AOOptionsDialog::setWidgetData(QListWidget *widget, - const QStringList &value) +void AOOptionsDialog::setWidgetData(QListWidget *widget, const QStringList &value) { widget->addItems(value); } -template <> QStringList AOOptionsDialog::widgetData(QListWidget *widget) const +template <> +QStringList AOOptionsDialog::widgetData(QListWidget *widget) const { QStringList paths; - for (auto i = 1; i < widget->count(); i++) { + for (auto i = 1; i < widget->count(); i++) + { paths.append(widget->item(i)->text()); } return paths; } template -void AOOptionsDialog::registerOption(const QString &widgetName, - V (Options::*getter)() const, - void (Options::*setter)(V)) +void AOOptionsDialog::registerOption(const QString &widgetName, V (Options::*getter)() const, void (Options::*setter)(V)) { auto *widget = findChild(widgetName); - if (!widget) { + if (!widget) + { qWarning() << "could not find widget" << widgetName; return; } @@ -174,70 +172,74 @@ void AOOptionsDialog::updateValues() QStringList bases = Options::getInstance().mountPaths(); bases.push_front(get_base_path()); - for (const QString &base : bases) { - QStringList l_themes = - QDir(base + "/themes").entryList(QDir::Dirs | QDir::NoDotAndDotDot); + for (const QString &base : bases) + { + QStringList l_themes = QDir(base + "/themes").entryList(QDir::Dirs | QDir::NoDotAndDotDot); // Resorts list to match numeric sorting found in Windows. QCollator l_sorting; l_sorting.setNumericMode(true); std::sort(l_themes.begin(), l_themes.end(), l_sorting); - for (const QString &l_theme : qAsConst(l_themes)) { - if (!themes.contains(l_theme)) { + for (const QString &l_theme : qAsConst(l_themes)) + { + if (!themes.contains(l_theme)) + { ui_theme_combobox->addItem(l_theme, l_theme); themes.insert(l_theme); } } } - QStringList l_subthemes = - QDir(ao_app->get_real_path(ao_app->get_theme_path(""))) - .entryList(QDir::Dirs | QDir::NoDotAndDotDot); - for (const QString &l_subtheme : qAsConst(l_subthemes)) { - if (l_subtheme.toLower() != "server" && l_subtheme.toLower() != "default" && - l_subtheme.toLower() != "effects" && l_subtheme.toLower() != "misc") { + QStringList l_subthemes = QDir(ao_app->get_real_path(ao_app->get_theme_path(""))).entryList(QDir::Dirs | QDir::NoDotAndDotDot); + for (const QString &l_subtheme : qAsConst(l_subthemes)) + { + if (l_subtheme.toLower() != "server" && l_subtheme.toLower() != "default" && l_subtheme.toLower() != "effects" && l_subtheme.toLower() != "misc") + { ui_subtheme_combobox->addItem(l_subtheme, l_subtheme); } } - ao_app->net_manager->request_document( - MSDocumentType::PrivacyPolicy, [this](QString document) { - if (document.isEmpty()) { - document = tr("Couldn't get the privacy policy."); - } - ui_privacy_policy->setHtml(document); - }); + ao_app->net_manager->request_document(MSDocumentType::PrivacyPolicy, [this](QString document) { + if (document.isEmpty()) + { + document = tr("Couldn't get the privacy policy."); + } + ui_privacy_policy->setHtml(document); + }); - for (const OptionEntry &entry : qAsConst(optionEntries)) { + for (const OptionEntry &entry : qAsConst(optionEntries)) + { entry.load(); } } void AOOptionsDialog::savePressed() { - bool l_reload_theme_required = - (ui_theme_combobox->currentText() != Options::getInstance().theme()) || - (ui_theme_scaling_factor_sb->value() != - Options::getInstance().themeScalingFactor()); - for (const OptionEntry &entry : qAsConst(optionEntries)) { + bool l_reload_theme_required = (ui_theme_combobox->currentText() != Options::getInstance().theme()) || (ui_theme_scaling_factor_sb->value() != Options::getInstance().themeScalingFactor()); + for (const OptionEntry &entry : qAsConst(optionEntries)) + { entry.save(); } - if (l_reload_theme_required) { - emit reloadThemeRequest(); + if (l_reload_theme_required) + { + Q_EMIT reloadThemeRequest(); } close(); } -void AOOptionsDialog::discardPressed() { close(); } +void AOOptionsDialog::discardPressed() +{ + close(); +} void AOOptionsDialog::buttonClicked(QAbstractButton *button) { - if (ui_settings_buttons->buttonRole(button) == QDialogButtonBox::ResetRole) { - if (QMessageBox::question( - this, "", "Restore default settings?\nThis can't be undone!", - QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { + if (ui_settings_buttons->buttonRole(button) == QDialogButtonBox::ResetRole) + { + if (QMessageBox::question(this, "", "Restore default settings?\nThis can't be undone!", QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) + { // Destructive operation. Options::getInstance().clearConfig(); updateValues(); @@ -249,9 +251,8 @@ void AOOptionsDialog::onReloadThemeClicked() { Options::getInstance().setTheme(ui_theme_combobox->currentText()); Options::getInstance().setSettingsSubTheme(ui_subtheme_combobox->currentText()); - Options::getInstance().setAnimatedThemeEnabled( - ui_animated_theme_cb->isChecked()); - emit reloadThemeRequest(); + Options::getInstance().setAnimatedThemeEnabled(ui_animated_theme_cb->isChecked()); + Q_EMIT reloadThemeRequest(); delete layout(); delete ui_settings_widget; optionEntries.clear(); @@ -265,24 +266,21 @@ void AOOptionsDialog::themeChanged(int i) ui_subtheme_combobox->addItem("server", "server"); ui_subtheme_combobox->addItem("default", "server"); - QStringList l_subthemes = QDir(ao_app->get_real_path(ao_app->get_theme_path( - "", ui_theme_combobox->itemText(i)))) - .entryList(QDir::Dirs | QDir::NoDotAndDotDot); + QStringList l_subthemes = QDir(ao_app->get_real_path(ao_app->get_theme_path("", ui_theme_combobox->itemText(i)))).entryList(QDir::Dirs | QDir::NoDotAndDotDot); - for (const QString &l_subthemes : qAsConst(l_subthemes)) { - if (l_subthemes.toLower() != "server" && - l_subthemes.toLower() != "default" && - l_subthemes.toLower() != "effects" && l_subthemes.toLower() != "misc") { + for (const QString &l_subthemes : qAsConst(l_subthemes)) + { + if (l_subthemes.toLower() != "server" && l_subthemes.toLower() != "default" && l_subthemes.toLower() != "effects" && l_subthemes.toLower() != "misc") + { ui_subtheme_combobox->addItem(l_subthemes, l_subthemes); } } QString l_ressource_name = Options::getInstance().theme() + ".rcc"; - QString l_resource = - ao_app->get_asset("themes/" + ui_theme_combobox->currentText() + ".rcc"); - if (l_resource.isEmpty()) { - QResource::unregisterResource( - ao_app->get_asset("themes/" + l_ressource_name)); + QString l_resource = ao_app->get_asset("themes/" + ui_theme_combobox->currentText() + ".rcc"); + if (l_resource.isEmpty()) + { + QResource::unregisterResource(ao_app->get_asset("themes/" + l_ressource_name)); qDebug() << "Unable to locate ressource file" << l_ressource_name; return; } @@ -293,7 +291,8 @@ void AOOptionsDialog::setupUI() { QUiLoader l_loader(this); QFile l_uiFile(Options::getInstance().getUIAsset("options_dialog.ui")); - if (!l_uiFile.open(QFile::ReadOnly)) { + if (!l_uiFile.open(QFile::ReadOnly)) + { qWarning() << "Unable to open file " << l_uiFile.fileName(); return; } @@ -306,98 +305,71 @@ void AOOptionsDialog::setupUI() // General dialog element. FROM_UI(QDialogButtonBox, settings_buttons); - connect(ui_settings_buttons, &QDialogButtonBox::accepted, this, - &AOOptionsDialog::savePressed); - connect(ui_settings_buttons, &QDialogButtonBox::rejected, this, - &AOOptionsDialog::discardPressed); - connect(ui_settings_buttons, &QDialogButtonBox::clicked, this, - &AOOptionsDialog::buttonClicked); + connect(ui_settings_buttons, &QDialogButtonBox::accepted, this, &AOOptionsDialog::savePressed); + connect(ui_settings_buttons, &QDialogButtonBox::rejected, this, &AOOptionsDialog::discardPressed); + connect(ui_settings_buttons, &QDialogButtonBox::clicked, this, &AOOptionsDialog::buttonClicked); // Gameplay Tab - FROM_UI(QComboBox, theme_combobox) - connect(ui_theme_combobox, - QOverload::of(&QComboBox::currentIndexChanged), this, - &AOOptionsDialog::themeChanged); + FROM_UI(QComboBox, theme_combobox); + connect(ui_theme_combobox, QOverload::of(&QComboBox::currentIndexChanged), this, &AOOptionsDialog::themeChanged); - registerOption("theme_combobox", &Options::theme, - &Options::setTheme); + registerOption("theme_combobox", &Options::theme, &Options::setTheme); - FROM_UI(QComboBox, subtheme_combobox) - registerOption("subtheme_combobox", &Options::settingsSubTheme, - &Options::setSettingsSubTheme); + FROM_UI(QComboBox, subtheme_combobox); + registerOption("subtheme_combobox", &Options::settingsSubTheme, &Options::setSettingsSubTheme); - FROM_UI(QPushButton, theme_reload_button) - connect(ui_theme_reload_button, &QPushButton::clicked, this, - &::AOOptionsDialog::onReloadThemeClicked); + FROM_UI(QPushButton, theme_reload_button); + connect(ui_theme_reload_button, &QPushButton::clicked, this, &::AOOptionsDialog::onReloadThemeClicked); - FROM_UI(QPushButton, theme_folder_button) + FROM_UI(QPushButton, theme_folder_button); connect(ui_theme_folder_button, &QPushButton::clicked, this, [=] { - QString p_path = ao_app->get_real_path(ao_app->get_theme_path( - "", ui_theme_combobox->itemText(ui_theme_combobox->currentIndex()))); - if (!dir_exists(p_path)) { + QString p_path = ao_app->get_real_path(ao_app->get_theme_path("", ui_theme_combobox->itemText(ui_theme_combobox->currentIndex()))); + if (!dir_exists(p_path)) + { return; } QDesktopServices::openUrl(QUrl::fromLocalFile(p_path)); }); - FROM_UI(QSpinBox, theme_scaling_factor_sb) - FROM_UI(QCheckBox, animated_theme_cb) - FROM_UI(QSpinBox, stay_time_spinbox) - FROM_UI(QCheckBox, instant_objection_cb) - FROM_UI(QSpinBox, text_crawl_spinbox) - FROM_UI(QSpinBox, chat_ratelimit_spinbox) - FROM_UI(QLineEdit, username_textbox) - FROM_UI(QCheckBox, showname_cb) - FROM_UI(QLineEdit, default_showname_textbox) - FROM_UI(QLineEdit, ms_textbox) - FROM_UI(QCheckBox, discord_cb) - FROM_UI(QComboBox, language_combobox) - FROM_UI(QComboBox, scaling_combobox) - FROM_UI(QCheckBox, shake_cb) - FROM_UI(QCheckBox, effects_cb) - FROM_UI(QCheckBox, framenetwork_cb) - FROM_UI(QCheckBox, colorlog_cb) - FROM_UI(QCheckBox, stickysounds_cb) - FROM_UI(QCheckBox, stickyeffects_cb) - FROM_UI(QCheckBox, stickypres_cb) - FROM_UI(QCheckBox, customchat_cb) - FROM_UI(QCheckBox, sticker_cb) - FROM_UI(QCheckBox, continuous_cb) - FROM_UI(QCheckBox, category_stop_cb) - FROM_UI(QCheckBox, sfx_on_idle_cb) - FROM_UI(QCheckBox, evidence_double_click_cb) - - registerOption("theme_scaling_factor_sb", - &Options::themeScalingFactor, - &Options::setThemeScalingFactor); - registerOption("animated_theme_cb", - &Options::animatedThemeEnabled, - &Options::setAnimatedThemeEnabled); - registerOption("stay_time_spinbox", &Options::textStayTime, - &Options::setTextStayTime); - registerOption("instant_objection_cb", - &Options::objectionSkipQueueEnabled, - &Options::setObjectionSkipQueueEnabled); - registerOption("text_crawl_spinbox", &Options::textCrawlSpeed, - &Options::setTextCrawlSpeed); - registerOption("chat_ratelimit_spinbox", - &Options::chatRateLimit, - &Options::setChatRateLimit); - registerOption("username_textbox", &Options::username, - &Options::setUsername); - registerOption("showname_cb", - &Options::customShownameEnabled, - &Options::setCustomShownameEnabled); - registerOption("default_showname_textbox", - &Options::shownameOnJoin, - &Options::setShownameOnJoin); - registerOption("ms_textbox", - &Options::alternativeMasterserver, - &Options::setAlternativeMasterserver); - registerOption("discord_cb", &Options::discordEnabled, - &Options::setDiscordEnabled); - registerOption("language_combobox", &Options::language, - &Options::setLanguage); + FROM_UI(QSpinBox, theme_scaling_factor_sb); + FROM_UI(QCheckBox, animated_theme_cb); + FROM_UI(QSpinBox, stay_time_spinbox); + FROM_UI(QCheckBox, instant_objection_cb); + FROM_UI(QSpinBox, text_crawl_spinbox); + FROM_UI(QSpinBox, chat_ratelimit_spinbox); + FROM_UI(QLineEdit, username_textbox); + FROM_UI(QCheckBox, showname_cb); + FROM_UI(QLineEdit, default_showname_textbox); + FROM_UI(QLineEdit, ms_textbox); + FROM_UI(QCheckBox, discord_cb); + FROM_UI(QComboBox, language_combobox); + FROM_UI(QComboBox, scaling_combobox); + FROM_UI(QCheckBox, shake_cb); + FROM_UI(QCheckBox, effects_cb); + FROM_UI(QCheckBox, framenetwork_cb); + FROM_UI(QCheckBox, colorlog_cb); + FROM_UI(QCheckBox, stickysounds_cb); + FROM_UI(QCheckBox, stickyeffects_cb); + FROM_UI(QCheckBox, stickypres_cb); + FROM_UI(QCheckBox, customchat_cb); + FROM_UI(QCheckBox, sticker_cb); + FROM_UI(QCheckBox, continuous_cb); + FROM_UI(QCheckBox, category_stop_cb); + FROM_UI(QCheckBox, sfx_on_idle_cb); + FROM_UI(QCheckBox, evidence_double_click_cb); + + registerOption("theme_scaling_factor_sb", &Options::themeScalingFactor, &Options::setThemeScalingFactor); + registerOption("animated_theme_cb", &Options::animatedThemeEnabled, &Options::setAnimatedThemeEnabled); + registerOption("stay_time_spinbox", &Options::textStayTime, &Options::setTextStayTime); + registerOption("instant_objection_cb", &Options::objectionSkipQueueEnabled, &Options::setObjectionSkipQueueEnabled); + registerOption("text_crawl_spinbox", &Options::textCrawlSpeed, &Options::setTextCrawlSpeed); + registerOption("chat_ratelimit_spinbox", &Options::chatRateLimit, &Options::setChatRateLimit); + registerOption("username_textbox", &Options::username, &Options::setUsername); + registerOption("showname_cb", &Options::customShownameEnabled, &Options::setCustomShownameEnabled); + registerOption("default_showname_textbox", &Options::shownameOnJoin, &Options::setShownameOnJoin); + registerOption("ms_textbox", &Options::alternativeMasterserver, &Options::setAlternativeMasterserver); + registerOption("discord_cb", &Options::discordEnabled, &Options::setDiscordEnabled); + registerOption("language_combobox", &Options::language, &Options::setLanguage); ui_language_combobox->addItem("English", "en"); ui_language_combobox->addItem("Deutsch", "de"); @@ -407,108 +379,69 @@ void AOOptionsDialog::setupUI() ui_language_combobox->addItem("日本語", "jp"); ui_language_combobox->addItem("Русский", "ru"); - registerOption("scaling_combobox", - &Options::defaultScalingMode, - &Options::setDefaultScalingMode); + registerOption("scaling_combobox", &Options::defaultScalingMode, &Options::setDefaultScalingMode); // Populate scaling dropdown. This is necessary as we need the user data // embeeded into the entry. ui_scaling_combobox->addItem(tr("Pixel"), "fast"); ui_scaling_combobox->addItem(tr("Smooth"), "smooth"); - registerOption("shake_cb", &Options::shakeEnabled, - &Options::setShakeEnabled); - registerOption("effects_cb", &Options::effectsEnabled, - &Options::setEffectsEnabled); - registerOption("framenetwork_cb", - &Options::networkedFrameSfxEnabled, - &Options::setNetworkedFrameSfxEnabled); - registerOption("colorlog_cb", &Options::colorLogEnabled, - &Options::setColorLogEnabled); - registerOption( - "stickysounds_cb", &Options::clearSoundsDropdownOnPlayEnabled, - &Options::setClearSoundsDropdownOnPlayEnabled); - registerOption( - "stickyeffects_cb", &Options::clearEffectsDropdownOnPlayEnabled, - &Options::setClearEffectsDropdownOnPlayEnabled); - registerOption("stickypres_cb", - &Options::clearPreOnPlayEnabled, - &Options::setClearPreOnPlayEnabled); - registerOption("customchat_cb", - &Options::customChatboxEnabled, - &Options::setCustomChatboxEnabled); - registerOption("sticker_cb", - &Options::characterStickerEnabled, - &Options::setCharacterStickerEnabled); - registerOption("continuous_cb", - &Options::continuousPlaybackEnabled, - &Options::setContinuousPlaybackEnabled); - registerOption("category_stop_cb", - &Options::stopMusicOnCategoryEnabled, - &Options::setStopMusicOnCategoryEnabled); - registerOption("sfx_on_idle_cb", - &Options::playSelectedSFXOnIdle, - &Options::setPlaySelectedSFXOnIdle); - registerOption("evidence_double_click_cb", - &Options::evidenceDoubleClickEdit, - &Options::setEvidenceDoubleClickEdit); + registerOption("shake_cb", &Options::shakeEnabled, &Options::setShakeEnabled); + registerOption("effects_cb", &Options::effectsEnabled, &Options::setEffectsEnabled); + registerOption("framenetwork_cb", &Options::networkedFrameSfxEnabled, &Options::setNetworkedFrameSfxEnabled); + registerOption("colorlog_cb", &Options::colorLogEnabled, &Options::setColorLogEnabled); + registerOption("stickysounds_cb", &Options::clearSoundsDropdownOnPlayEnabled, &Options::setClearSoundsDropdownOnPlayEnabled); + registerOption("stickyeffects_cb", &Options::clearEffectsDropdownOnPlayEnabled, &Options::setClearEffectsDropdownOnPlayEnabled); + registerOption("stickypres_cb", &Options::clearPreOnPlayEnabled, &Options::setClearPreOnPlayEnabled); + registerOption("customchat_cb", &Options::customChatboxEnabled, &Options::setCustomChatboxEnabled); + registerOption("sticker_cb", &Options::characterStickerEnabled, &Options::setCharacterStickerEnabled); + registerOption("continuous_cb", &Options::continuousPlaybackEnabled, &Options::setContinuousPlaybackEnabled); + registerOption("category_stop_cb", &Options::stopMusicOnCategoryEnabled, &Options::setStopMusicOnCategoryEnabled); + registerOption("sfx_on_idle_cb", &Options::playSelectedSFXOnIdle, &Options::setPlaySelectedSFXOnIdle); + registerOption("evidence_double_click_cb", &Options::evidenceDoubleClickEdit, &Options::setEvidenceDoubleClickEdit); // Callwords tab. This could just be a QLineEdit, but no, we decided to allow // people to put a billion entries in. - FROM_UI(QPlainTextEdit, callwords_textbox) - registerOption( - "callwords_textbox", &Options::callwords, &Options::setCallwords); + FROM_UI(QPlainTextEdit, callwords_textbox); + registerOption("callwords_textbox", &Options::callwords, &Options::setCallwords); // Audio tab. - FROM_UI(QComboBox, audio_device_combobox) + FROM_UI(QComboBox, audio_device_combobox); populateAudioDevices(); - registerOption("audio_device_combobox", - &Options::audioOutputDevice, - &Options::setAudioOutputDevice); - - FROM_UI(QSpinBox, suppress_audio_spinbox) - FROM_UI(QSpinBox, bliprate_spinbox) - FROM_UI(QCheckBox, blank_blips_cb) - FROM_UI(QCheckBox, loopsfx_cb) - FROM_UI(QCheckBox, objectmusic_cb) - FROM_UI(QCheckBox, disablestreams_cb) - - registerOption("suppress_audio_spinbox", - &::Options::defaultSuppressAudio, - &Options::setDefaultSupressedAudio); - registerOption("bliprate_spinbox", &::Options::blipRate, - &Options::setBlipRate); - registerOption("blank_blips_cb", &Options::blankBlip, - &Options::setBlankBlip); - registerOption("loopsfx_cb", &Options::loopingSfx, - &Options::setLoopingSfx); - registerOption("objectmusic_cb", - &Options::objectionStopMusic, - &Options::setObjectionStopMusic); - registerOption("disablestreams_cb", - &Options::streamingEnabled, - &Options::setStreamingEnabled); + registerOption("audio_device_combobox", &Options::audioOutputDevice, &Options::setAudioOutputDevice); + + FROM_UI(QSpinBox, suppress_audio_spinbox); + FROM_UI(QSpinBox, bliprate_spinbox); + FROM_UI(QCheckBox, blank_blips_cb); + FROM_UI(QCheckBox, loopsfx_cb); + FROM_UI(QCheckBox, objectmusic_cb); + FROM_UI(QCheckBox, disablestreams_cb); + + registerOption("suppress_audio_spinbox", &::Options::defaultSuppressAudio, &Options::setDefaultSupressedAudio); + registerOption("bliprate_spinbox", &::Options::blipRate, &Options::setBlipRate); + registerOption("blank_blips_cb", &Options::blankBlip, &Options::setBlankBlip); + registerOption("loopsfx_cb", &Options::loopingSfx, &Options::setLoopingSfx); + registerOption("objectmusic_cb", &Options::objectionStopMusic, &Options::setObjectionStopMusic); + registerOption("disablestreams_cb", &Options::streamingEnabled, &Options::setStreamingEnabled); // Asset tab - FROM_UI(QListWidget, mount_list) - auto *defaultMount = - new QListWidgetItem(tr("%1 (default)").arg(get_base_path())); + FROM_UI(QListWidget, mount_list); + auto *defaultMount = new QListWidgetItem(tr("%1 (default)").arg(get_base_path())); defaultMount->setFlags(Qt::ItemFlag::NoItemFlags); ui_mount_list->addItem(defaultMount); - registerOption("mount_list", &Options::mountPaths, - &Options::setMountPaths); + registerOption("mount_list", &Options::mountPaths, &Options::setMountPaths); - FROM_UI(QPushButton, mount_add) + FROM_UI(QPushButton, mount_add); connect(ui_mount_add, &QPushButton::clicked, this, [this] { - QString path = QFileDialog::getExistingDirectory( - this, tr("Select a base folder"), QApplication::applicationDirPath(), - QFileDialog::ShowDirsOnly); - if (path.isEmpty()) { + QString path = QFileDialog::getExistingDirectory(this, tr("Select a base folder"), QApplication::applicationDirPath(), QFileDialog::ShowDirsOnly); + if (path.isEmpty()) + { return; } QDir dir(QApplication::applicationDirPath()); QString relative = dir.relativeFilePath(path); - if (!relative.contains("../")) { + if (!relative.contains("../")) + { path = relative; } QListWidgetItem *dir_item = new QListWidgetItem(path); @@ -516,22 +449,28 @@ void AOOptionsDialog::setupUI() ui_mount_list->setCurrentItem(dir_item); // quick hack to update buttons - emit ui_mount_list->itemSelectionChanged(); + Q_EMIT ui_mount_list->itemSelectionChanged(); }); - FROM_UI(QPushButton, mount_remove) + FROM_UI(QPushButton, mount_remove); connect(ui_mount_remove, &QPushButton::clicked, this, [this] { auto selected = ui_mount_list->selectedItems(); - if (selected.isEmpty()) return; + if (selected.isEmpty()) + { + return; + } delete selected[0]; - emit ui_mount_list->itemSelectionChanged(); + Q_EMIT ui_mount_list->itemSelectionChanged(); asset_cache_dirty = true; }); - FROM_UI(QPushButton, mount_up) + FROM_UI(QPushButton, mount_up); connect(ui_mount_up, &QPushButton::clicked, this, [this] { auto selected = ui_mount_list->selectedItems(); - if (selected.isEmpty()) return; + if (selected.isEmpty()) + { + return; + } auto *item = selected[0]; int row = ui_mount_list->row(item); ui_mount_list->takeItem(row); @@ -541,10 +480,13 @@ void AOOptionsDialog::setupUI() asset_cache_dirty = true; }); - FROM_UI(QPushButton, mount_down) + FROM_UI(QPushButton, mount_down); connect(ui_mount_down, &QPushButton::clicked, this, [this] { auto selected = ui_mount_list->selectedItems(); - if (selected.isEmpty()) return; + if (selected.isEmpty()) + { + return; + } auto *item = selected[0]; int row = ui_mount_list->row(item); ui_mount_list->takeItem(row); @@ -554,7 +496,7 @@ void AOOptionsDialog::setupUI() asset_cache_dirty = true; }); - FROM_UI(QPushButton, mount_clear_cache) + FROM_UI(QPushButton, mount_clear_cache); connect(ui_mount_clear_cache, &QPushButton::clicked, this, [this] { asset_cache_dirty = true; ui_mount_clear_cache->setEnabled(false); @@ -567,48 +509,43 @@ void AOOptionsDialog::setupUI() ui_mount_up->setEnabled(row_selected); ui_mount_down->setEnabled(row_selected); - if (!row_selected) return; + if (!row_selected) + { + return; + } int row = ui_mount_list->row(selected_items[0]); - if (row <= 1) ui_mount_up->setEnabled(false); - if (row >= ui_mount_list->count() - 1) ui_mount_down->setEnabled(false); + if (row <= 1) + { + ui_mount_up->setEnabled(false); + } + if (row >= ui_mount_list->count() - 1) + { + ui_mount_down->setEnabled(false); + } }); // Logging tab - FROM_UI(QCheckBox, downwards_cb) - FROM_UI(QSpinBox, length_spinbox) - FROM_UI(QCheckBox, log_newline_cb) - FROM_UI(QSpinBox, log_margin_spinbox) - FROM_UI(QLabel, log_timestamp_format_lbl) - FROM_UI(QComboBox, log_timestamp_format_combobox) - - registerOption("downwards_cb", - &Options::logDirectionDownwards, - &Options::setLogDirectionDownwards); - registerOption("length_spinbox", &Options::maxLogSize, - &Options::setMaxLogSize); - registerOption("log_newline_cb", &Options::logNewline, - &Options::setLogNewline); - registerOption("log_margin_spinbox", &Options::logMargin, - &Options::setLogMargin); - - FROM_UI(QCheckBox, log_timestamp_cb) - registerOption("log_timestamp_cb", - &Options::logTimestampEnabled, - &Options::setLogTimestampEnabled); - connect(ui_log_timestamp_cb, &QCheckBox::stateChanged, this, - &::AOOptionsDialog::timestampCbChanged); - ui_log_timestamp_format_lbl->setText( - tr("Log timestamp format:\n") + - QDateTime::currentDateTime().toString( - Options::getInstance().logTimestampFormat())); - - FROM_UI(QComboBox, log_timestamp_format_combobox) - registerOption("log_timestamp_format_combobox", - &Options::logTimestampFormat, - &Options::setLogTimestampFormat); - connect(ui_log_timestamp_format_combobox, &QComboBox::currentTextChanged, - this, &::AOOptionsDialog::onTimestampFormatEdited); + FROM_UI(QCheckBox, downwards_cb); + FROM_UI(QSpinBox, length_spinbox); + FROM_UI(QCheckBox, log_newline_cb); + FROM_UI(QSpinBox, log_margin_spinbox); + FROM_UI(QLabel, log_timestamp_format_lbl); + FROM_UI(QComboBox, log_timestamp_format_combobox); + + registerOption("downwards_cb", &Options::logDirectionDownwards, &Options::setLogDirectionDownwards); + registerOption("length_spinbox", &Options::maxLogSize, &Options::setMaxLogSize); + registerOption("log_newline_cb", &Options::logNewline, &Options::setLogNewline); + registerOption("log_margin_spinbox", &Options::logMargin, &Options::setLogMargin); + + FROM_UI(QCheckBox, log_timestamp_cb); + registerOption("log_timestamp_cb", &Options::logTimestampEnabled, &Options::setLogTimestampEnabled); + connect(ui_log_timestamp_cb, &QCheckBox::stateChanged, this, &::AOOptionsDialog::timestampCbChanged); + ui_log_timestamp_format_lbl->setText(tr("Log timestamp format:\n") + QDateTime::currentDateTime().toString(Options::getInstance().logTimestampFormat())); + + FROM_UI(QComboBox, log_timestamp_format_combobox); + registerOption("log_timestamp_format_combobox", &Options::logTimestampFormat, &Options::setLogTimestampFormat); + connect(ui_log_timestamp_format_combobox, &QComboBox::currentTextChanged, this, &::AOOptionsDialog::onTimestampFormatEdited); QString l_current_format = Options::getInstance().logTimestampFormat(); @@ -620,28 +557,26 @@ void AOOptionsDialog::setupUI() ui_log_timestamp_format_combobox->addItem("h:mm AP", "h:mm AP"); ui_log_timestamp_format_combobox->addItem("hh:mm", "hh:mm"); - if (!Options::getInstance().logTimestampEnabled()) { + if (!Options::getInstance().logTimestampEnabled()) + { ui_log_timestamp_format_combobox->setDisabled(true); } - FROM_UI(QCheckBox, log_ic_actions_cb) - FROM_UI(QCheckBox, desync_logs_cb) - FROM_UI(QCheckBox, log_text_cb) + FROM_UI(QCheckBox, log_ic_actions_cb); + FROM_UI(QCheckBox, desync_logs_cb); + FROM_UI(QCheckBox, log_text_cb); - registerOption("log_ic_actions_cb", &Options::logIcActions, - &Options::setLogIcActions); - registerOption("desync_logs_cb", - &Options::desynchronisedLogsEnabled, - &Options::setDesynchronisedLogsEnabled); - registerOption("log_text_cb", &Options::logToTextFileEnabled, - &Options::setLogToTextFileEnabled); - registerOption("log_demo_cb", &Options::logToDemoFileEnabled, - &Options::setLogToDemoFileEnabled); + registerOption("log_ic_actions_cb", &Options::logIcActions, &Options::setLogIcActions); + registerOption("desync_logs_cb", &Options::desynchronisedLogsEnabled, &Options::setDesynchronisedLogsEnabled); + registerOption("log_text_cb", &Options::logToTextFileEnabled, &Options::setLogToTextFileEnabled); + registerOption("log_demo_cb", &Options::logToDemoFileEnabled, &Options::setLogToDemoFileEnabled); // DSGVO/Privacy tab - FROM_UI(QTextBrowser, privacy_policy) + FROM_UI(QTextBrowser, privacy_policy); ui_privacy_policy->setPlainText(tr("Getting privacy policy...")); + FROM_UI(QCheckBox, privacy_optout_cb); + registerOption("privacy_optout", &Options::playerCountOptout, &Options::setPlayerCountOptout); updateValues(); } @@ -653,9 +588,7 @@ void AOOptionsDialog::onTimestampFormatEdited() ui_log_timestamp_format_combobox->setItemText(index, format); ui_log_timestamp_format_combobox->setItemData(index, format); - ui_log_timestamp_format_lbl->setText( - tr("Log timestamp format:\n") + - QDateTime::currentDateTime().toString(format)); + ui_log_timestamp_format_lbl->setText(tr("Log timestamp format:\n") + QDateTime::currentDateTime().toString(format)); } void AOOptionsDialog::timestampCbChanged(int state) @@ -664,11 +597,20 @@ void AOOptionsDialog::timestampCbChanged(int state) } #if (defined(_WIN32) || defined(_WIN64)) -bool AOOptionsDialog::needsDefaultAudioDevice() { return true; } +bool AOOptionsDialog::needsDefaultAudioDevice() +{ + return true; +} #elif (defined(LINUX) || defined(__linux__)) -bool AOOptionsDialog::needsDefaultAudioDevice() { return false; } +bool AOOptionsDialog::needsDefaultAudioDevice() +{ + return false; +} #elif defined __APPLE__ -bool AOOptionsDialog::needsDefaultAudioDevice() { return true; } +bool AOOptionsDialog::needsDefaultAudioDevice() +{ + return true; +} #else #error This operating system is not supported. #endif diff --git a/src/widgets/aooptionsdialog.h b/src/widgets/aooptionsdialog.h new file mode 100644 index 00000000..bccec581 --- /dev/null +++ b/src/widgets/aooptionsdialog.h @@ -0,0 +1,153 @@ +#pragma once + +#include "options.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class AOApplication; + +struct OptionEntry +{ + std::function load; + std::function save; +}; + +class AOOptionsDialog : public QDialog +{ + Q_OBJECT + +public: + explicit AOOptionsDialog(AOApplication *p_ao_app, QWidget *parent = nullptr); + +private: + AOApplication *ao_app; + + // Dialog interaction buttons. Save/Discard/Restore Defaults + QDialogButtonBox *ui_settings_buttons; + + // The gameplay tab + QWidget *ui_settings_widget; + QComboBox *ui_theme_combobox; + QComboBox *ui_subtheme_combobox; + QSpinBox *ui_theme_scaling_factor_sb; + QPushButton *ui_theme_reload_button; + QPushButton *ui_theme_folder_button; + QCheckBox *ui_evidence_double_click_cb; + QCheckBox *ui_animated_theme_cb; + QSpinBox *ui_stay_time_spinbox; + QCheckBox *ui_instant_objection_cb; + QSpinBox *ui_text_crawl_spinbox; + QSpinBox *ui_chat_ratelimit_spinbox; + QFrame *ui_log_names_divider; + QLineEdit *ui_username_textbox; + QCheckBox *ui_showname_cb; + QLineEdit *ui_default_showname_textbox; + QFrame *ui_net_divider; + QLineEdit *ui_ms_textbox; + QCheckBox *ui_discord_cb; + QLabel *ui_language_label; + QComboBox *ui_language_combobox; + QLabel *ui_scaling_label; + QComboBox *ui_scaling_combobox; + QCheckBox *ui_shake_cb; + QCheckBox *ui_effects_cb; + QCheckBox *ui_framenetwork_cb; + QCheckBox *ui_colorlog_cb; + QCheckBox *ui_stickysounds_cb; + QCheckBox *ui_stickyeffects_cb; + QCheckBox *ui_stickypres_cb; + QCheckBox *ui_customchat_cb; + QCheckBox *ui_sticker_cb; + QCheckBox *ui_continuous_cb; + QCheckBox *ui_category_stop_cb; + QCheckBox *ui_sfx_on_idle_cb; + + // The callwords tab + QPlainTextEdit *ui_callwords_textbox; + QCheckBox *ui_callwords_char_textbox; + + // The audio tab + QWidget *ui_audio_tab; + QWidget *ui_audio_widget; + QComboBox *ui_audio_device_combobox; + QSpinBox *ui_suppress_audio_spinbox; + QFrame *ui_volume_blip_divider; + QSpinBox *ui_bliprate_spinbox; + QCheckBox *ui_blank_blips_cb; + QCheckBox *ui_loopsfx_cb; + QCheckBox *ui_objectmusic_cb; + QCheckBox *ui_disablestreams_cb; + + // The asset tab + QListWidget *ui_mount_list; + QPushButton *ui_mount_add; + QPushButton *ui_mount_remove; + QPushButton *ui_mount_up; + QPushButton *ui_mount_down; + QPushButton *ui_mount_clear_cache; + + // The logging tab + QCheckBox *ui_downwards_cb; + QSpinBox *ui_length_spinbox; + QCheckBox *ui_log_newline_cb; + QSpinBox *ui_log_margin_spinbox; + QLabel *ui_log_timestamp_format_lbl; + QCheckBox *ui_log_timestamp_cb; + QComboBox *ui_log_timestamp_format_combobox; + QCheckBox *ui_desync_logs_cb; + QCheckBox *ui_log_ic_actions_cb; + QCheckBox *ui_log_text_cb; + QCheckBox *ui_log_demo_cb; + + /** + * Allows the AO2 master server hoster to go broke. + */ + QWidget *ui_privacy_tab; + QCheckBox *ui_privacy_optout_cb; + QFrame *ui_privacy_separator; + QTextBrowser *ui_privacy_policy; + + bool asset_cache_dirty = false; + + bool needsDefaultAudioDevice(); + void populateAudioDevices(); + void updateValues(); + + QVector optionEntries; + + template + void setWidgetData(T *widget, const V &value); + + template + V widgetData(T *widget) const; + + template + void registerOption(const QString &widgetName, V (Options::*getter)() const, void (Options::*setter)(V)); + +Q_SIGNALS: + void reloadThemeRequest(); + +private Q_SLOTS: + void savePressed(); + void discardPressed(); + void buttonClicked(QAbstractButton *button); + void onTimestampFormatEdited(); + void timestampCbChanged(int state); + void onReloadThemeClicked(); + void themeChanged(int i); + void setupUI(); +}; diff --git a/src/widgets/direct_connect_dialog.cpp b/src/widgets/direct_connect_dialog.cpp index 82eaa23a..40e75b76 100644 --- a/src/widgets/direct_connect_dialog.cpp +++ b/src/widgets/direct_connect_dialog.cpp @@ -1,74 +1,65 @@ -#include "widgets/direct_connect_dialog.h" +#include "direct_connect_dialog.h" +#include "debug_functions.h" +#include "gui_utils.h" #include "networkmanager.h" #include "options.h" -#include "debug_functions.h" -#include -#include -#include -#include -#include +#include #include #include -#include -#include -#include -#define FROM_UI(type, name) \ - ; \ - ui_##name = findChild(#name); - -DirectConnectDialog::DirectConnectDialog(NetworkManager *p_net_manager) : - net_manager(p_net_manager) +DirectConnectDialog::DirectConnectDialog(NetworkManager *p_net_manager) + : net_manager(p_net_manager) { - QUiLoader l_loader(this); - QFile l_uiFile(Options::getInstance().getUIAsset(DEFAULT_UI)); + QUiLoader l_loader(this); + QFile l_uiFile(Options::getInstance().getUIAsset(DEFAULT_UI)); - if (!l_uiFile.open(QFile::ReadOnly)) { - qCritical() << "Unable to open file " << l_uiFile.fileName(); - return; - } - ui_widget = l_loader.load(&l_uiFile, this); + if (!l_uiFile.open(QFile::ReadOnly)) + { + qCritical() << "Unable to open file " << l_uiFile.fileName(); + return; + } + ui_widget = l_loader.load(&l_uiFile, this); - auto l_layout = new QVBoxLayout(this); - l_layout->addWidget(ui_widget); + auto l_layout = new QVBoxLayout(this); + l_layout->addWidget(ui_widget); - FROM_UI(QLineEdit, direct_hostname_edit) + FROM_UI(QLineEdit, direct_hostname_edit); - FROM_UI(QLabel, direct_connection_status_lbl) + FROM_UI(QLabel, direct_connection_status_lbl); - FROM_UI(QPushButton, direct_connect_button); - connect(ui_direct_connect_button, &QPushButton::pressed, - this, &DirectConnectDialog::onConnectPressed); - FROM_UI(QPushButton, direct_cancel_button); - connect(ui_direct_cancel_button, &QPushButton::pressed, - this, &DirectConnectDialog::close); + FROM_UI(QPushButton, direct_connect_button); + connect(ui_direct_connect_button, &QPushButton::pressed, this, &DirectConnectDialog::onConnectPressed); + FROM_UI(QPushButton, direct_cancel_button); + connect(ui_direct_cancel_button, &QPushButton::pressed, this, &DirectConnectDialog::close); - connect(net_manager, &NetworkManager::server_connected, - this, &DirectConnectDialog::onServerConnected); + connect(net_manager, &NetworkManager::server_connected, this, &DirectConnectDialog::onServerConnected); - connect(&connect_timeout, &QTimer::timeout, this, - &DirectConnectDialog::onConnectTimeout); - connect_timeout.setSingleShot(true); + connect(&connect_timeout, &QTimer::timeout, this, &DirectConnectDialog::onConnectTimeout); + connect_timeout.setSingleShot(true); } void DirectConnectDialog::onConnectPressed() { QString l_hostname = ui_direct_hostname_edit->text(); - if (!SCHEME_PATTERN.match(l_hostname).hasMatch()) { + if (!SCHEME_PATTERN.match(l_hostname).hasMatch()) + { l_hostname = "tcp://" % l_hostname; } QUrl l_url(l_hostname); - if (!l_url.isValid()) { + if (!l_url.isValid()) + { call_error(tr("Invalid URL.")); return; } - if (!to_connection_type.contains(l_url.scheme())) { + if (!to_connection_type.contains(l_url.scheme())) + { call_error(tr("Scheme not recognized. Must be either of the following: ") % QStringList::fromVector(to_connection_type.keys().toVector()).join(", ")); return; } - if (l_url.port() == -1) { + if (l_url.port() == -1) + { call_error(tr("Invalid server port.")); return; } diff --git a/src/widgets/direct_connect_dialog.h b/src/widgets/direct_connect_dialog.h new file mode 100644 index 00000000..fc34f748 --- /dev/null +++ b/src/widgets/direct_connect_dialog.h @@ -0,0 +1,43 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include + +class NetworkManager; + +class DirectConnectDialog : public QDialog +{ + Q_OBJECT + +public: + DirectConnectDialog(NetworkManager *p_net_manager); + ~DirectConnectDialog() = default; + +private Q_SLOTS: + void onConnectPressed(); + void onServerConnected(); + void onConnectTimeout(); + +private: + NetworkManager *net_manager; + + QLineEdit *ui_direct_hostname_edit; + + QLabel *ui_direct_connection_status_lbl; + QPushButton *ui_direct_connect_button; + QPushButton *ui_direct_cancel_button; + + QWidget *ui_widget; + QTimer connect_timeout; + + const int TCP_INDEX = 0; + const QRegularExpression SCHEME_PATTERN{"^\\w+://.+$"}; + const int CONNECT_TIMEOUT = 5 * 1000; + const QString DEFAULT_UI = "direct_connect_dialog.ui"; +}; diff --git a/src/widgets/edit_server_dialog.cpp b/src/widgets/edit_server_dialog.cpp index 109e968f..a302f372 100644 --- a/src/widgets/edit_server_dialog.cpp +++ b/src/widgets/edit_server_dialog.cpp @@ -1,87 +1,75 @@ -#include "widgets/edit_server_dialog.h" +#include "edit_server_dialog.h" + #include "datatypes.h" +#include "gui_utils.h" #include "options.h" -#include -#include -#include #include -#include -#include -#include -#include -#include #include #include -#define FROM_UI(type, name) \ - ; \ - ui_##name = findChild(#name); - -EditServerDialog::EditServerDialog(int index) : - index(index) // lol +EditServerDialog::EditServerDialog(int index) + : index(index) // lol { - QUiLoader l_loader(this); - QFile l_uiFile(Options::getInstance().getUIAsset(DEFAULT_UI)); + QUiLoader l_loader(this); + QFile l_uiFile(Options::getInstance().getUIAsset(DEFAULT_UI)); - if (!l_uiFile.open(QFile::ReadOnly)) { - qCritical() << "Unable to open file " << l_uiFile.fileName(); - return; - } - ui_widget = l_loader.load(&l_uiFile, this); + if (!l_uiFile.open(QFile::ReadOnly)) + { + qCritical() << "Unable to open file " << l_uiFile.fileName(); + return; + } + ui_widget = l_loader.load(&l_uiFile, this); - auto l_layout = new QVBoxLayout(this); - l_layout->addWidget(ui_widget); + auto l_layout = new QVBoxLayout(this); + l_layout->addWidget(ui_widget); - FROM_UI(QLineEdit, server_display_name_edit); - FROM_UI(QLineEdit, server_hostname_edit); - FROM_UI(QSpinBox, server_port_box); - FROM_UI(QComboBox, server_protocol_box); - FROM_UI(QPlainTextEdit, server_description_edit); - FROM_UI(QDialogButtonBox, server_dialog_button); - connect(ui_server_dialog_button, &QDialogButtonBox::accepted, this, - &::EditServerDialog::onSavePressed); - connect(ui_server_dialog_button, &QDialogButtonBox::rejected, this, - &EditServerDialog::onCancelPressed); + FROM_UI(QLineEdit, server_display_name_edit); + FROM_UI(QLineEdit, server_hostname_edit); + FROM_UI(QSpinBox, server_port_box); + FROM_UI(QComboBox, server_protocol_box); + FROM_UI(QPlainTextEdit, server_description_edit); + FROM_UI(QDialogButtonBox, server_dialog_button); + connect(ui_server_dialog_button, &QDialogButtonBox::accepted, this, &::EditServerDialog::onSavePressed); + connect(ui_server_dialog_button, &QDialogButtonBox::rejected, this, &EditServerDialog::onCancelPressed); - // We don't need you. - FROM_UI(QLabel, server_legacy_lbl); - FROM_UI(QLineEdit, server_legacy_edit); - FROM_UI(QPushButton, server_legacy_load_button); + // We don't need you. + FROM_UI(QLabel, server_legacy_lbl); + FROM_UI(QLineEdit, server_legacy_edit); + FROM_UI(QPushButton, server_legacy_load_button); - ui_server_legacy_lbl->setVisible(false); - ui_server_legacy_edit->setVisible(false); - ui_server_legacy_load_button->setVisible(false); + ui_server_legacy_lbl->setVisible(false); + ui_server_legacy_edit->setVisible(false); + ui_server_legacy_load_button->setVisible(false); - loadEntry(); + loadEntry(); } void EditServerDialog::loadEntry() { - server_type server = Options::getInstance().favorites().at(index); - ui_server_display_name_edit->setText(server.name); - ui_server_hostname_edit->setText(server.ip); - ui_server_port_box->setValue(server.port); - ui_server_description_edit->setPlainText(server.desc); - ui_server_protocol_box->setCurrentIndex(server.socket_type); + server_type server = Options::getInstance().favorites().at(index); + ui_server_display_name_edit->setText(server.name); + ui_server_hostname_edit->setText(server.ip); + ui_server_port_box->setValue(server.port); + ui_server_description_edit->setPlainText(server.desc); + ui_server_protocol_box->setCurrentIndex(server.socket_type); } void EditServerDialog::onSavePressed() { - server_type server; - server.name = ui_server_display_name_edit->text(); - server.ip = ui_server_hostname_edit->text(); - server.port = ui_server_port_box->value(); - server.desc = ui_server_description_edit->toPlainText(); - server.socket_type = - ui_server_protocol_box->currentIndex() == TCP_INDEX ? TCP : WEBSOCKETS; - Options::getInstance().updateFavorite(server, index); - close(); - deleteLater(); + server_type server; + server.name = ui_server_display_name_edit->text(); + server.ip = ui_server_hostname_edit->text(); + server.port = ui_server_port_box->value(); + server.desc = ui_server_description_edit->toPlainText(); + server.socket_type = ui_server_protocol_box->currentIndex() == TCP_INDEX ? TCP : WEBSOCKETS; + Options::getInstance().updateFavorite(server, index); + close(); + deleteLater(); } void EditServerDialog::onCancelPressed() { - close(); - deleteLater(); + close(); + deleteLater(); } diff --git a/src/widgets/edit_server_dialog.h b/src/widgets/edit_server_dialog.h new file mode 100644 index 00000000..628ea606 --- /dev/null +++ b/src/widgets/edit_server_dialog.h @@ -0,0 +1,42 @@ +#pragma once + +#include "interfaces/server_dialog.h" + +#include +#include +#include +#include +#include +#include +#include + +class EditServerDialog : public AttorneyOnline::UI::FavoriteServerDialog +{ + Q_OBJECT + +public: + EditServerDialog(int index); + ~EditServerDialog() = default; + +private: + QWidget *ui_widget; + + QLineEdit *ui_server_display_name_edit; + QLineEdit *ui_server_hostname_edit; + QSpinBox *ui_server_port_box; + QComboBox *ui_server_protocol_box; + QPlainTextEdit *ui_server_description_edit; + QDialogButtonBox *ui_server_dialog_button; + + // Legacy Server UI + QLabel *ui_server_legacy_lbl; + QLineEdit *ui_server_legacy_edit; + QPushButton *ui_server_legacy_load_button; + + int index; + void loadEntry(); + +private Q_SLOTS: + void onSavePressed() override; + void onCancelPressed() override; +}; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 393a7537..c6b191e4 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,8 +1,20 @@ -find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED) +find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Gui Widgets REQUIRED) find_package(Catch2 REQUIRED) -add_executable(test test_aopacket.cpp test_caseloading.cpp test_apng.cpp test_bass.cpp ../include/aopacket.h ../src/aopacket.cpp) -target_include_directories(test PRIVATE ../include) +target_include_directories(test PRIVATE ../src) target_link_directories(test PRIVATE ../lib) -target_link_libraries(test PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets Catch2::Catch2 bass bassmidi bassopus discord-rpc) -target_compile_definitions(Attorney_Online PRIVATE DISCORD) +target_link_libraries(test PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets Catch2::Catch2) + +add_executable(test + test_aopacket.cpp + test_caseloading.cpp + test_apng.cpp + ../src/aopacket.h + ../src/aopacket.cpp +) + +if(AO_ENABLE_BASS) + target_compile_definitions(Attorney_Online PRIVATE AO_ENABLE_BASS) + target_link_libraries(Attorney_Online PRIVATE bass bassmidi bassopus) + target_sources(test PRIVATE test_bass.cpp) +endif() diff --git a/test/test_aopacket.cpp b/test/test_aopacket.cpp index 0b318213..42ff778e 100644 --- a/test/test_aopacket.cpp +++ b/test/test_aopacket.cpp @@ -3,27 +3,32 @@ #include "aopacket.h" -TEST_CASE("AOPacket construct", "[aopacket]") { +TEST_CASE("AOPacket construct", "[aopacket]") +{ // Parameters QString packet_string = "CT#MY_OOC_NAME#/doc https://docs.google.com/document/d/123/edit##%"; - SECTION("Packet string") { + SECTION("Packet string") + { AOPacket p(packet_string); REQUIRE(p.to_string() == packet_string); } - SECTION("Header and contents") { + SECTION("Header and contents") + { QStringList contents = {"MY_OOC_NAME", "/doc https://docs.google.com/document/d/123/edit#"}; AOPacket p("CT", contents); REQUIRE(p.to_string() == packet_string); } } -TEST_CASE("AOPacket encode/decode", "[aopacket]") { +TEST_CASE("AOPacket encode/decode", "[aopacket]") +{ // Parameters QString packet_string = "CT#MY_OOC_NAME#/doc https://docs.google.com/document/d/%$&/edit##%"; QString good_encode = "CT#MY_OOC_NAME#/doc https://docs.google.com/document/d//edit#%"; - SECTION("Bad encode/decode because packet string constructor splits the '#' after 'edit'") { + SECTION("Bad encode/decode because packet string constructor splits the '#' after 'edit'") + { AOPacket p(packet_string); p.net_encode(); REQUIRE(p.to_string() != good_encode); @@ -32,7 +37,8 @@ TEST_CASE("AOPacket encode/decode", "[aopacket]") { REQUIRE(p.to_string() == packet_string); } - SECTION("Good encode/decode with header and contents constructor") { + SECTION("Good encode/decode with header and contents constructor") + { QStringList contents = {"MY_OOC_NAME", "/doc https://docs.google.com/document/d/%$&/edit#"}; AOPacket p("CT", contents); diff --git a/test/test_apng.cpp b/test/test_apng.cpp index 20c7e927..c092191f 100644 --- a/test/test_apng.cpp +++ b/test/test_apng.cpp @@ -1,12 +1,13 @@ #include -#include -#include #include #include +#include #include +#include -TEST_CASE("Support APNG Plugin", "[apng]") { +TEST_CASE("Support APNG Plugin", "[apng]") +{ // Check paths for libs QCoreApplication::addLibraryPath("."); QCoreApplication::addLibraryPath("lib"); @@ -19,38 +20,43 @@ TEST_CASE("Support APNG Plugin", "[apng]") { REQUIRE(QImageReader::supportedImageFormats().contains("apng")); } -TEST_CASE("Detect png animation", "[apng]") { +TEST_CASE("Detect png animation", "[apng]") +{ // Required for QPixmap methods int argc = 1; char bin[] = "test"; - char *argv[] = { bin }; + char *argv[] = {bin}; QGuiApplication app(argc, argv); // Instantiate reader QImageReader reader; - SECTION("Decide format from content fails on apng") { + SECTION("Decide format from content fails on apng") + { reader.setFileName("snackoo.png"); reader.setDecideFormatFromContent(true); REQUIRE(!reader.supportsAnimation()); REQUIRE(!QPixmap::fromImage(reader.read()).isNull()); } - SECTION("Auto detect fails on apng") { + SECTION("Auto detect fails on apng") + { reader.setFileName("snackoo.png"); reader.setAutoDetectImageFormat(true); REQUIRE(!reader.supportsAnimation()); REQUIRE(!QPixmap::fromImage(reader.read()).isNull()); } - SECTION("Detect apng supports animation") { + SECTION("Detect apng supports animation") + { reader.setFileName("snackoo.png"); reader.setFormat("apng"); REQUIRE(reader.supportsAnimation()); REQUIRE(!QPixmap::fromImage(reader.read()).isNull()); } - SECTION("Detect png frame has no animation") { + SECTION("Detect png frame has no animation") + { reader.setFileName("missle.png"); reader.setFormat("apng"); REQUIRE(!reader.supportsAnimation()); diff --git a/test/test_bass.cpp b/test/test_bass.cpp index e48decd8..0e97b6a1 100644 --- a/test/test_bass.cpp +++ b/test/test_bass.cpp @@ -1,14 +1,15 @@ -#include #include +#include -#include #include +#include #include "bass.h" #include "bassmidi.h" #include "bassopus.h" -TEST_CASE("BASS URL streaming", "[bass][noci]") { +TEST_CASE("BASS URL streaming", "[bass][noci]") +{ // Sample QString url = "https://raw.githubusercontent.com/skyedeving/aocharedit/master/Attorney%20Online%20Character%20Editor/Resources/about.mp3"; @@ -18,17 +19,21 @@ TEST_CASE("BASS URL streaming", "[bass][noci]") { // create stream from url HSTREAM stream; unsigned int flags = BASS_STREAM_AUTOFREE | BASS_STREAM_STATUS; - if (url.endsWith(".opus")) { + if (url.endsWith(".opus")) + { stream = BASS_OPUS_StreamCreateURL(url.toStdString().c_str(), 0, flags, nullptr, 0); } - else { + else + { stream = BASS_StreamCreateURL(url.toStdString().c_str(), 0, flags, nullptr, 0); } // Log http status const char *tags = BASS_ChannelGetTags(stream, BASS_TAG_HTTP); - if (tags) { - while(*tags) { + if (tags) + { + while (*tags) + { UNSCOPED_INFO(tags); tags += strlen(tags) + 1; } diff --git a/test/test_caseloading.cpp b/test/test_caseloading.cpp index 5df27823..dd82c7e5 100644 --- a/test/test_caseloading.cpp +++ b/test/test_caseloading.cpp @@ -2,16 +2,14 @@ #include -TEST_CASE("Sort case evidence numerically", "[case]") { +TEST_CASE("Sort case evidence numerically", "[case]") +{ // Parameters QStringList case_evidence = {"1", "10", "11", "2", "3", "4", "5", "6", "7", "8", "9"}; QStringList case_evidence_sorted = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"}; // Sort - std::sort(case_evidence.begin(), case_evidence.end(), - [] (const QString &a, const QString &b) { - return a.toInt() < b.toInt(); - }); + std::sort(case_evidence.begin(), case_evidence.end(), [](const QString &a, const QString &b) { return a.toInt() < b.toInt(); }); // Test REQUIRE(case_evidence == case_evidence_sorted); -- cgit From 39e4354b1dae5d8487ea5b84be9f304b1950a61a Mon Sep 17 00:00:00 2001 From: TrickyLeifa Date: Thu, 16 May 2024 03:09:21 +0200 Subject: Reimplemented favorite server widget, ... * Reworked favorite server widget * Renamed `server_type` to `ServerInfo` * Renamed `connection_type` to `ServerConnectionType` * Refactored `AOCharButton` * Reimplemented `AOButton` * Partially reimplemented `AOEmoteButton` * Refactored `AOEvidenceButton` --- CMakeLists.txt | 11 +- data/ui/favorite_server_dialog.ui | 36 +++--- src/aoapplication.h | 6 +- src/aobutton.cpp | 75 +++++++++---- src/aobutton.h | 17 ++- src/aocharbutton.cpp | 69 +++++------- src/aocharbutton.h | 16 +-- src/aoemotebutton.cpp | 85 +++++++------- src/aoemotebutton.h | 18 +-- src/aoevidencebutton.cpp | 87 ++++++--------- src/aoevidencebutton.h | 18 +-- src/aoimage.cpp | 20 ++-- src/aoimage.h | 10 +- src/aopacket.cpp | 6 +- src/aopacket.h | 7 +- src/charselect.cpp | 29 +++-- src/chatlogpiece.cpp | 67 ++++-------- src/chatlogpiece.h | 19 ++-- src/courtroom.cpp | 201 ++++++++++++++++++---------------- src/courtroom.h | 16 +-- src/datatypes.h | 60 ++-------- src/demoserver.cpp | 8 +- src/emotes.cpp | 36 +++--- src/evidence.cpp | 108 +++++++++--------- src/interfaces/server_dialog.h | 20 ---- src/lobby.cpp | 45 ++++---- src/networkmanager.cpp | 32 +++--- src/networkmanager.h | 5 +- src/options.cpp | 30 ++--- src/options.h | 8 +- src/packet_distribution.cpp | 24 ++-- src/scrolltext.cpp | 10 +- src/scrolltext.h | 5 +- src/widgets/add_server_dialog.cpp | 96 ---------------- src/widgets/add_server_dialog.h | 40 ------- src/widgets/direct_connect_dialog.cpp | 25 +++-- src/widgets/direct_connect_dialog.h | 26 ++--- src/widgets/edit_server_dialog.cpp | 75 ------------- src/widgets/edit_server_dialog.h | 42 ------- src/widgets/server_editor_dialog.cpp | 93 ++++++++++++++++ src/widgets/server_editor_dialog.h | 43 ++++++++ 41 files changed, 716 insertions(+), 928 deletions(-) delete mode 100644 src/interfaces/server_dialog.h delete mode 100644 src/widgets/add_server_dialog.cpp delete mode 100644 src/widgets/add_server_dialog.h delete mode 100644 src/widgets/edit_server_dialog.cpp delete mode 100644 src/widgets/edit_server_dialog.h create mode 100644 src/widgets/server_editor_dialog.cpp create mode 100644 src/widgets/server_editor_dialog.h diff --git a/CMakeLists.txt b/CMakeLists.txt index d6194a91..ba09819d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,13 +66,14 @@ add_executable(Attorney_Online src/discord_rich_presence.cpp src/discord_rich_presence.h src/emotes.cpp + src/eventfilters.cpp src/eventfilters.h src/evidence.cpp src/file_functions.cpp src/file_functions.h + src/gui_utils.h src/hardware_functions.cpp src/hardware_functions.h - src/interfaces/server_dialog.h src/lobby.cpp src/lobby.h src/main.cpp @@ -85,17 +86,13 @@ add_executable(Attorney_Online src/scrolltext.cpp src/scrolltext.h src/text_file_functions.cpp - src/gui_utils.h - src/widgets/add_server_dialog.cpp - src/widgets/add_server_dialog.h src/widgets/aooptionsdialog.cpp src/widgets/aooptionsdialog.h src/widgets/direct_connect_dialog.cpp src/widgets/direct_connect_dialog.h - src/widgets/edit_server_dialog.cpp - src/widgets/edit_server_dialog.h + src/widgets/server_editor_dialog.cpp + src/widgets/server_editor_dialog.h data.qrc - src/eventfilters.cpp ) set_target_properties(Attorney_Online PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin") diff --git a/data/ui/favorite_server_dialog.ui b/data/ui/favorite_server_dialog.ui index a1d5f28e..f0f60cb4 100644 --- a/data/ui/favorite_server_dialog.ui +++ b/data/ui/favorite_server_dialog.ui @@ -23,17 +23,17 @@ - + Legacy Entry : - + - + Convert @@ -44,48 +44,48 @@ - + - Display Name: + Name: - + - + - Hostname : + Hostname: - + - + Port: - + 65535 - + - Protocol : + Protocol: - + TCP @@ -99,14 +99,14 @@ - + Description: - + 0 @@ -118,7 +118,7 @@ - + QFrame::Plain @@ -128,7 +128,7 @@ - + QDialogButtonBox::Close|QDialogButtonBox::Save diff --git a/src/aoapplication.h b/src/aoapplication.h index 419377f1..1ff059b6 100644 --- a/src/aoapplication.h +++ b/src/aoapplication.h @@ -128,8 +128,8 @@ public: /////////////////////////////////////////// - void set_server_list(QVector &servers) { server_list = servers; } - QVector &get_server_list() { return server_list; } + void set_server_list(QVector &servers) { server_list = servers; } + QVector &get_server_list() { return server_list; } // implementation in path_functions.cpp VPath get_theme_path(QString p_file, QString p_theme = QString()); @@ -359,7 +359,7 @@ private: const int MAJOR_VERSION = 11; const int MINOR_VERSION = 0; - QVector server_list; + QVector server_list; QHash asset_lookup_cache; QHash dir_listing_cache; QSet dir_listing_exist_cache; diff --git a/src/aobutton.cpp b/src/aobutton.cpp index 4fc50d65..07ea649a 100644 --- a/src/aobutton.cpp +++ b/src/aobutton.cpp @@ -1,12 +1,10 @@ #include "aobutton.h" -#include "debug_functions.h" -#include "file_functions.h" #include "options.h" -AOButton::AOButton(AOApplication *p_ao_app, QWidget *parent) +AOButton::AOButton(AOApplication *ao_app, QWidget *parent) : QPushButton(parent) - , ao_app(p_ao_app) + , ao_app(ao_app) { m_movie = new QMovie(this); @@ -17,32 +15,61 @@ AOButton::AOButton(AOApplication *p_ao_app, QWidget *parent) } AOButton::~AOButton() -{} +{ + deleteMovie(); +} -void AOButton::set_image(QString p_path, QString p_misc) +void AOButton::setImage(QString image_name) { - m_movie->stop(); - QString p_image; - p_image = ao_app->get_image(p_path, Options::getInstance().theme(), Options::getInstance().subTheme(), ao_app->default_theme, p_misc, "", "", !Options::getInstance().animatedThemeEnabled()); - if (p_image.isEmpty()) + deleteMovie(); + + QString file_path = ao_app->get_image(image_name, Options::getInstance().theme(), Options::getInstance().subTheme(), ao_app->default_theme, QString(), QString(), QString(), !Options::getInstance().animatedThemeEnabled()); + if (file_path.isEmpty()) { - this->setIcon(QIcon()); - this->setIconSize(this->size()); - this->setStyleSheet(""); - return; + setStyleSheet(QString()); + setIcon(QIcon()); } - this->setText(""); - this->setStyleSheet("QPushButton { background-color: transparent; border: 0px }"); - m_movie->setFileName(p_image); - // We double-check if the user wants animated themes, so even if an animated image slipped through, - // we still set it static - if (Options::getInstance().animatedThemeEnabled() && m_movie->frameCount() > 1) + else { - m_movie->start(); + setText(QString()); + setStyleSheet("QPushButton { background-color: transparent; border: 0px }"); + + if (Options::getInstance().animatedThemeEnabled()) + { + m_movie = new QMovie; + m_movie->setFileName(file_path); + + connect(m_movie, &QMovie::frameChanged, this, &AOButton::handleNextFrame); + + m_movie->start(); + } + else + { + updateIcon(QPixmap(file_path)); + } } - else +} + +void AOButton::deleteMovie() +{ + if (m_movie) { - this->setIcon(QPixmap(p_image).scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); - this->setIconSize(this->size()); + disconnect(m_movie, &QMovie::frameChanged, this, &AOButton::handleNextFrame); + + m_movie->stop(); + m_movie->deleteLater(); + m_movie = nullptr; } } + +void AOButton::handleNextFrame() +{ + updateIcon(m_movie->currentPixmap()); +} + +void AOButton::updateIcon(QPixmap icon) +{ + const QSize current_size = size(); + setIcon(icon.scaled(current_size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + setIconSize(current_size); +} diff --git a/src/aobutton.h b/src/aobutton.h index 058d9e5c..8104bdbd 100644 --- a/src/aobutton.h +++ b/src/aobutton.h @@ -2,7 +2,6 @@ #include "aoapplication.h" -#include #include #include @@ -11,12 +10,20 @@ class AOButton : public QPushButton Q_OBJECT public: - AOButton(AOApplication *p_ao_app, QWidget *parent = nullptr); - ~AOButton(); + explicit AOButton(AOApplication *ao_app, QWidget *parent = nullptr); + virtual ~AOButton(); - void set_image(QString p_image, QString p_misc = QString()); + void setImage(QString image_name); private: AOApplication *ao_app; - QMovie *m_movie; + + QMovie *m_movie = nullptr; + + void deleteMovie(); + +private Q_SLOTS: + void handleNextFrame(); + + void updateIcon(QPixmap icon); }; diff --git a/src/aocharbutton.cpp b/src/aocharbutton.cpp index cab7fddd..d446cca3 100644 --- a/src/aocharbutton.cpp +++ b/src/aocharbutton.cpp @@ -2,46 +2,31 @@ #include "file_functions.h" -AOCharButton::AOCharButton(AOApplication *p_ao_app, int x_pos, int y_pos, bool is_taken, QWidget *parent) +AOCharButton::AOCharButton(AOApplication *ao_app, QWidget *parent) : QPushButton(parent) - , ao_app(p_ao_app) - , m_taken(is_taken) + , ao_app(ao_app) { int size = 60 * Options::getInstance().themeScalingFactor(); int selector_size = 62 * Options::getInstance().themeScalingFactor(); - this->resize(size, size); - this->move(x_pos, y_pos); + resize(size, size); ui_taken = new AOImage(ao_app, this); - ui_taken->resize(size, size); - ui_taken->set_image("char_taken"); ui_taken->setAttribute(Qt::WA_TransparentForMouseEvents); + ui_taken->resize(size, size); + ui_taken->setImage("char_taken"); ui_taken->hide(); ui_selector = new AOImage(ao_app, parent); - ui_selector->resize(selector_size, selector_size); - int offset = Options::getInstance().themeScalingFactor(); - ui_selector->move(x_pos - offset, y_pos - offset); - ui_selector->set_image("char_selector"); ui_selector->setAttribute(Qt::WA_TransparentForMouseEvents); + ui_selector->resize(selector_size, selector_size); + ui_selector->setImage("char_selector"); ui_selector->hide(); } -void AOCharButton::reset() -{ - ui_taken->hide(); - ui_selector->hide(); -} - -void AOCharButton::set_taken(bool is_taken) +void AOCharButton::setTaken(bool enabled) { - m_taken = is_taken; -} - -void AOCharButton::apply_taken_image() -{ - if (m_taken) + if (enabled) { ui_taken->move(0, 0); ui_taken->show(); @@ -52,45 +37,47 @@ void AOCharButton::apply_taken_image() } } -void AOCharButton::set_image(QString p_character) +void AOCharButton::setCharacter(QString character) { - QString image_path = ao_app->get_image_suffix(ao_app->get_character_path(p_character, "char_icon"), true); + QString image_path = ao_app->get_image_suffix(ao_app->get_character_path(character, "char_icon"), true); - this->setText(""); + setText(QString()); if (file_exists(image_path)) { - this->setStyleSheet("QPushButton { border-image: url(\"" + image_path + - "\") 0 0 0 0 stretch stretch; }" - "QToolTip { background-image: url(); color: #000000; " - "background-color: #ffffff; border: 0px; }"); + setStyleSheet("QPushButton { border-image: url(\"" + image_path + + "\") 0 0 0 0 stretch stretch; }" + "QToolTip { background-image: url(); color: #000000; " + "background-color: #ffffff; border: 0px; }"); } else { - this->setStyleSheet("QPushButton { border-image: url(); }" - "QToolTip { background-image: url(); color: #000000; " - "background-color: #ffffff; border: 0px; }"); - this->setText(p_character); + setStyleSheet("QPushButton { border-image: url(); }" + "QToolTip { background-image: url(); color: #000000; " + "background-color: #ffffff; border: 0px; }"); + setText(character); } } #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) -void AOCharButton::enterEvent(QEvent *e) +void AOCharButton::enterEvent(QEvent *event) #else -void AOCharButton::enterEvent(QEnterEvent *e) +void AOCharButton::enterEvent(QEnterEvent *event) #endif { int offset = Options::getInstance().themeScalingFactor(); - ui_selector->move(this->x() - offset, this->y() - offset); + ui_selector->move(x() - offset, y() - offset); ui_selector->raise(); ui_selector->show(); setFlat(false); - QPushButton::enterEvent(e); + + QPushButton::enterEvent(event); } -void AOCharButton::leaveEvent(QEvent *e) +void AOCharButton::leaveEvent(QEvent *event) { ui_selector->hide(); - QPushButton::leaveEvent(e); + + QPushButton::leaveEvent(event); } diff --git a/src/aocharbutton.h b/src/aocharbutton.h index 54117f48..ba618976 100644 --- a/src/aocharbutton.h +++ b/src/aocharbutton.h @@ -14,23 +14,19 @@ class AOCharButton : public QPushButton Q_OBJECT public: - AOCharButton(AOApplication *p_ao_app, int x_pos, int y_pos, bool is_taken, QWidget *parent); + AOCharButton(AOApplication *ao_app, QWidget *parent); - void refresh(); - void reset(); - void set_taken(bool is_taken); + void setCharacter(QString character); - void apply_taken_image(); - - void set_image(QString p_character); + void setTaken(bool enabled); protected: #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - void enterEvent(QEvent *e) override; + void enterEvent(QEvent *event) override; #else - void enterEvent(QEnterEvent *e) override; + void enterEvent(QEnterEvent *event) override; #endif - void leaveEvent(QEvent *e) override; + void leaveEvent(QEvent *event) override; private: AOApplication *ao_app; diff --git a/src/aoemotebutton.cpp b/src/aoemotebutton.cpp index 32e50ff8..028c265d 100644 --- a/src/aoemotebutton.cpp +++ b/src/aoemotebutton.cpp @@ -1,22 +1,25 @@ #include "aoemotebutton.h" + #include "file_functions.h" -AOEmoteButton::AOEmoteButton(AOApplication *p_ao_app, int p_x, int p_y, int p_w, int p_h, QWidget *p_parent) - : QPushButton(p_parent) - , ao_app(p_ao_app) +#include + +AOEmoteButton::AOEmoteButton(int id, int width, int height, AOApplication *ao_app, QWidget *parent) + : QPushButton(parent) + , ao_app(ao_app) + , m_id(id) { - this->move(p_x, p_y); - this->resize(p_w, p_h); + resize(width, height); ui_selected = new QLabel(this); - ui_selected->resize(size()); ui_selected->setAttribute(Qt::WA_TransparentForMouseEvents); + ui_selected->resize(width, height); ui_selected->hide(); - connect(this, &AOEmoteButton::clicked, this, &AOEmoteButton::on_clicked); + connect(this, &AOEmoteButton::clicked, this, [this] { Q_EMIT emoteClicked(m_id); }); } -void AOEmoteButton::set_selected_image(QString p_image) +void AOEmoteButton::setSelectedImage(QString p_image) { if (file_exists(p_image)) { @@ -28,50 +31,24 @@ void AOEmoteButton::set_selected_image(QString p_image) } } -void AOEmoteButton::set_id(int p_id) -{ - m_id = p_id; -} - -int AOEmoteButton::get_id() +int AOEmoteButton::id() { return m_id; } -void AOEmoteButton::set_image(QString p_image, QString p_emote_comment) +void AOEmoteButton::setImage(QString character, int emoteId, bool enabled) { - if (file_exists(p_image)) - { - this->setText(""); - this->setStyleSheet("QPushButton { border: none; }" - "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }"); - this->setIcon(QPixmap(p_image).scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); - this->setIconSize(this->size()); - } - else - { - this->setText(p_emote_comment); - this->setStyleSheet("QPushButton { border-image: url(); }" - "QToolTip { background-image: url(); color: #000000; " - "background-color: #ffffff; border: 0px; }"); - this->setIcon(QIcon()); - this->setIconSize(this->size()); - } -} + QString emotion_number = QString::number(emoteId + 1); -void AOEmoteButton::set_char_image(QString p_char, int p_emote, bool on) -{ - QString emotion_number = QString::number(p_emote + 1); - QStringList suffixes{"_off", "_on"}; QStringList suffixedPaths; - for (const QString &suffix : suffixes) + static const QStringList SUFFIX_LIST{"_off", "_on"}; + for (const QString &suffix : SUFFIX_LIST) { - suffixedPaths.append(ao_app->get_image_suffix(ao_app->get_character_path(p_char, "emotions/button" + emotion_number + suffix))); + suffixedPaths.append(ao_app->get_image_suffix(ao_app->get_character_path(character, "emotions/button" + emotion_number + suffix))); } - QString image = suffixedPaths[static_cast(on)]; - QString emoteComment = ao_app->get_emote_comment(p_char, p_emote); - if (on && !file_exists(suffixedPaths[1])) + QString image = suffixedPaths[static_cast(enabled)]; + if (enabled && !file_exists(suffixedPaths[1])) { ui_selected->show(); image = suffixedPaths[0]; @@ -81,10 +58,22 @@ void AOEmoteButton::set_char_image(QString p_char, int p_emote, bool on) ui_selected->hide(); } - set_image(image, emoteComment); -} - -void AOEmoteButton::on_clicked() -{ - Q_EMIT emote_clicked(m_id); + if (file_exists(image)) + { + setText(QString()); + setStyleSheet("QPushButton { border: none; }" + "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }"); + setIcon(QPixmap(image).scaled(size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + setIconSize(size()); + } + else + { + QString emote_comment = ao_app->get_emote_comment(character, emoteId); + setText(emote_comment); + setStyleSheet("QPushButton { border-image: url(); }" + "QToolTip { background-image: url(); color: #000000; " + "background-color: #ffffff; border: 0px; }"); + setIcon(QIcon()); + setIconSize(size()); + } } diff --git a/src/aoemotebutton.h b/src/aoemotebutton.h index 93149492..3c316314 100644 --- a/src/aoemotebutton.h +++ b/src/aoemotebutton.h @@ -1,9 +1,8 @@ #pragma once #include "aoapplication.h" -#include + #include -#include #include class AOEmoteButton : public QPushButton @@ -11,18 +10,16 @@ class AOEmoteButton : public QPushButton Q_OBJECT public: - AOEmoteButton(AOApplication *p_ao_app, int p_x, int p_y, int p_w, int p_h, QWidget *p_parent); + AOEmoteButton(int id, int width, int height, AOApplication *ao_app, QWidget *parent = nullptr); - void set_image(QString p_image, QString p_emote_comment); - void set_char_image(QString p_char, int p_emote, bool on); + int id(); - void set_selected_image(QString p_image); + void setImage(QString character, int emoteId, bool enabled); - void set_id(int p_id); - int get_id(); + void setSelectedImage(QString p_image); Q_SIGNALS: - void emote_clicked(int p_id); + void emoteClicked(int p_id); private: AOApplication *ao_app; @@ -30,7 +27,4 @@ private: int m_id = 0; QLabel *ui_selected = nullptr; - -private Q_SLOTS: - void on_clicked(); }; diff --git a/src/aoevidencebutton.cpp b/src/aoevidencebutton.cpp index b026c13e..31163ca8 100644 --- a/src/aoevidencebutton.cpp +++ b/src/aoevidencebutton.cpp @@ -2,61 +2,58 @@ #include "file_functions.h" -AOEvidenceButton::AOEvidenceButton(AOApplication *p_ao_app, int p_x, int p_y, int p_w, int p_h, QWidget *p_parent) - : QPushButton(p_parent) - , ao_app(p_ao_app) +AOEvidenceButton::AOEvidenceButton(int id, int width, int height, AOApplication *ao_app, QWidget *parent) + : QPushButton(parent) + , ao_app(ao_app) + , m_id(id) { + resize(width, height); + ui_selected = new AOImage(ao_app, this); - ui_selected->resize(p_w, p_h); - // ui_selected->move(p_x, p_y); - ui_selected->set_image("evidence_selected"); + ui_selected->resize(width, height); + ui_selected->setImage("evidence_selected"); ui_selected->setAttribute(Qt::WA_TransparentForMouseEvents); ui_selected->hide(); ui_selector = new AOImage(ao_app, this); - ui_selector->resize(p_w, p_h); - // ui_selector->move(p_x - 1, p_y - 1); - ui_selector->set_image("evidence_selector"); + ui_selector->resize(width, height); + ui_selector->setImage("evidence_selector"); ui_selector->setAttribute(Qt::WA_TransparentForMouseEvents); ui_selector->hide(); - this->move(p_x, p_y); - this->resize(p_w, p_h); - // this->setAcceptDrops(true); - connect(this, &AOEvidenceButton::clicked, this, &AOEvidenceButton::on_clicked); } -void AOEvidenceButton::set_image(QString p_image) +void AOEvidenceButton::setImage(QString fileName) { - QString image_path = ao_app->get_real_path(ao_app->get_evidence_path(p_image)); - if (file_exists(p_image)) + QString image_path = ao_app->get_real_path(ao_app->get_evidence_path(fileName)); + if (file_exists(fileName)) { - this->setText(""); - this->setStyleSheet("QPushButton { border-image: url(\"" + p_image + - "\") 0 0 0 0 stretch stretch; }" - "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }"); + setText(""); + setStyleSheet("QPushButton { border-image: url(\"" + fileName + + "\") 0 0 0 0 stretch stretch; }" + "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }"); } else if (file_exists(image_path)) { - this->setText(""); - this->setStyleSheet("QPushButton { border-image: url(\"" + image_path + - "\") 0 0 0 0 stretch stretch; }" - "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }"); + setText(""); + setStyleSheet("QPushButton { border-image: url(\"" + image_path + + "\") 0 0 0 0 stretch stretch; }" + "QToolTip { color: #000000; background-color: #ffffff; border: 0px; }"); } else { - this->setText(p_image); - this->setStyleSheet("QPushButton { border-image: url(); }" - "QToolTip { background-image: url(); color: #000000; " - "background-color: #ffffff; border: 0px; }"); + setText(fileName); + setStyleSheet("QPushButton { border-image: url(); }" + "QToolTip { background-image: url(); color: #000000; " + "background-color: #ffffff; border: 0px; }"); } } -void AOEvidenceButton::set_theme_image(QString p_image) +void AOEvidenceButton::setThemeImage(QString fileName) { - QString theme_image_path = ao_app->get_real_path(ao_app->get_theme_path(p_image)); - QString default_image_path = ao_app->get_real_path(ao_app->get_theme_path(p_image, ao_app->default_theme)); + QString theme_image_path = ao_app->get_real_path(ao_app->get_theme_path(fileName)); + QString default_image_path = ao_app->get_real_path(ao_app->get_theme_path(fileName, ao_app->default_theme)); QString final_image_path; @@ -69,10 +66,10 @@ void AOEvidenceButton::set_theme_image(QString p_image) final_image_path = default_image_path; } - this->set_image(final_image_path); + setImage(final_image_path); } -void AOEvidenceButton::set_selected(bool p_selected) +void AOEvidenceButton::setSelected(bool p_selected) { if (p_selected) { @@ -86,30 +83,14 @@ void AOEvidenceButton::set_selected(bool p_selected) void AOEvidenceButton::on_clicked() { - Q_EMIT evidence_clicked(m_id); + Q_EMIT evidenceClicked(m_id); } void AOEvidenceButton::mouseDoubleClickEvent(QMouseEvent *e) { QPushButton::mouseDoubleClickEvent(e); - Q_EMIT evidence_double_clicked(m_id); -} - -/* -void AOEvidenceButton::dragLeaveEvent(QMouseEvent *e) -{ - //QWidget::dragLeaveEvent(e); - - qDebug() << "drag leave event"; -} - -void AOEvidenceButton::dragEnterEvent(QMouseEvent *e) -{ - //QWidget::dragEnterEvent(e); - - qDebug() << "drag enter event"; + Q_EMIT evidenceDoubleClicked(m_id); } -*/ #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) void AOEvidenceButton::enterEvent(QEvent *e) @@ -119,7 +100,7 @@ void AOEvidenceButton::enterEvent(QEnterEvent *e) { ui_selector->show(); - Q_EMIT on_hover(m_id, true); + Q_EMIT mouseoverUpdated(m_id, true); setFlat(false); QPushButton::enterEvent(e); @@ -129,6 +110,6 @@ void AOEvidenceButton::leaveEvent(QEvent *e) { ui_selector->hide(); - Q_EMIT on_hover(m_id, false); + Q_EMIT mouseoverUpdated(m_id, false); QPushButton::leaveEvent(e); } diff --git a/src/aoevidencebutton.h b/src/aoevidencebutton.h index adaaa17a..9830384f 100644 --- a/src/aoevidencebutton.h +++ b/src/aoevidencebutton.h @@ -13,18 +13,19 @@ class AOEvidenceButton : public QPushButton Q_OBJECT public: - AOEvidenceButton(AOApplication *p_ao_app, int p_x, int p_y, int p_w, int p_h, QWidget *p_parent = nullptr); + AOEvidenceButton(int id, int width, int height, AOApplication *ao_app, QWidget *parent = nullptr); - void set_image(QString p_image); - void set_theme_image(QString p_image); - void set_id(int p_id) { m_id = p_id; } + void setImage(QString fileName); - void set_selected(bool p_selected); + void setThemeImage(QString fileName); + + void setSelected(bool enabled); Q_SIGNALS: - void evidence_clicked(int p_id); - void evidence_double_clicked(int p_id); - void on_hover(int p_id, bool p_state); + void evidenceClicked(int id); + void evidenceDoubleClicked(int id); + + void mouseoverUpdated(int id, bool state); protected: #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) @@ -33,6 +34,7 @@ protected: void enterEvent(QEnterEvent *e) override; #endif void leaveEvent(QEvent *e) override; + void mouseDoubleClickEvent(QMouseEvent *e) override; private: diff --git a/src/aoimage.cpp b/src/aoimage.cpp index 85f127ef..062efbae 100644 --- a/src/aoimage.cpp +++ b/src/aoimage.cpp @@ -5,26 +5,23 @@ #include -AOImage::AOImage(AOApplication *p_ao_app, QWidget *parent) +AOImage::AOImage(AOApplication *ao_app, QWidget *parent) : QLabel(parent) - , ao_app(p_ao_app) + , ao_app(ao_app) {} -AOImage::~AOImage() -{} - -QString AOImage::file_name() +QString AOImage::image() { return m_file_name; } -bool AOImage::set_image(QString p_image, QString p_misc) +bool AOImage::setImage(QString fileName, QString miscellaneous) { - QString p_image_resolved = ao_app->get_image(p_image, Options::getInstance().theme(), Options::getInstance().subTheme(), ao_app->default_theme, p_misc, "", "", false); + QString p_image_resolved = ao_app->get_image(fileName, Options::getInstance().theme(), Options::getInstance().subTheme(), ao_app->default_theme, miscellaneous, "", "", false); if (!file_exists(p_image_resolved)) { - qWarning() << "could not find image" << p_image; + qWarning() << "could not find image" << fileName; return false; } @@ -35,3 +32,8 @@ bool AOImage::set_image(QString p_image, QString p_misc) return true; } + +bool AOImage::setImage(QString fileName) +{ + return setImage(fileName, QString()); +} diff --git a/src/aoimage.h b/src/aoimage.h index 5ab92e7b..5b1fd68b 100644 --- a/src/aoimage.h +++ b/src/aoimage.h @@ -13,12 +13,12 @@ class AOImage : public QLabel Q_OBJECT public: - AOImage(AOApplication *p_ao_app, QWidget *parent = nullptr); - AOImage(AOApplication *p_ao_app, bool make_static, QWidget *parent = nullptr); - ~AOImage(); + AOImage(AOApplication *ao_app, QWidget *parent = nullptr); - QString file_name(); - bool set_image(QString p_image, QString p_misc = QString()); + QString image(); + + bool setImage(QString fileName, QString miscellaneous); + bool setImage(QString fileName); private: AOApplication *ao_app; diff --git a/src/aopacket.cpp b/src/aopacket.cpp index 663edc52..705bc6a1 100644 --- a/src/aopacket.cpp +++ b/src/aopacket.cpp @@ -19,17 +19,17 @@ AOPacket::AOPacket(QString header, QStringList content) , m_content(content) {} -QString AOPacket::get_header() +QString AOPacket::header() { return m_header; } -QStringList &AOPacket::get_content() +QStringList &AOPacket::content() { return m_content; } -QString AOPacket::to_string(bool ensureEncoded) +QString AOPacket::toString(bool ensureEncoded) { QString message = m_header; if (!m_content.isEmpty()) diff --git a/src/aopacket.h b/src/aopacket.h index df7f09c2..11b1dfd0 100644 --- a/src/aopacket.h +++ b/src/aopacket.h @@ -12,9 +12,10 @@ public: AOPacket(QString header); AOPacket(QString header, QStringList content); - QString get_header(); - QStringList &get_content(); - QString to_string(bool ensureEncoded = false); + QString header(); + QStringList &content(); + + QString toString(bool ensureEncoded = false); private: QString m_header; diff --git a/src/charselect.cpp b/src/charselect.cpp index 57b4e76b..4b62cb10 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -83,7 +83,7 @@ void Courtroom::set_char_select() this->setFixedSize(f_charselect.width, f_charselect.height); } ui_char_select_background->resize(f_charselect.width, f_charselect.height); - ui_char_select_background->set_image("charselect_background"); + ui_char_select_background->setImage("charselect_background"); ui_char_search->setFocus(); set_size_and_pos(ui_char_search, "char_search"); @@ -118,7 +118,6 @@ void Courtroom::set_char_select_page() for (AOCharButton *i_button : qAsConst(ui_char_button_list)) { - i_button->reset(); i_button->hide(); i_button->move(0, 0); } @@ -265,7 +264,6 @@ void Courtroom::put_button_in_place(int starting, int chars_on_this_page) ui_char_button_list_filtered.at(n)->move(x_pos, y_pos); ui_char_button_list_filtered.at(n)->show(); - ui_char_button_list_filtered.at(n)->apply_taken_image(); ++x_mod_count; @@ -294,22 +292,24 @@ void Courtroom::character_loading_finished() // First, we'll make all the character buttons in the very beginning. // We also hide them all, so they can't be accidentally clicked. // Later on, we'll be revealing buttons as we need them. - for (int n = 0; n < char_list.size(); n++) + for (int i = 0; i < char_list.size(); i++) { - AOCharButton *char_button = new AOCharButton(ao_app, 0, 0, char_list.at(n).taken, ui_char_buttons); + const CharacterSlot &character = char_list.at(i); + + AOCharButton *char_button = new AOCharButton(ao_app, ui_char_buttons); char_button->setContextMenuPolicy(Qt::CustomContextMenu); - char_button->reset(); char_button->hide(); - char_button->set_image(char_list.at(n).name); - char_button->setToolTip(char_list.at(n).name); + char_button->setCharacter(character.name); + char_button->setTaken(character.taken); + char_button->setToolTip(character.name); ui_char_button_list.append(char_button); - QString char_category = ao_app->get_category(char_list.at(n).name); + QString char_category = ao_app->get_category(character.name); QList matching_list = ui_char_list->findItems(char_category, Qt::MatchFixedString, 0); // create the character tree item QTreeWidgetItem *treeItem = new QTreeWidgetItem(); - treeItem->setText(0, char_list.at(n).name); - treeItem->setIcon(0, QIcon(ao_app->get_image_suffix(ao_app->get_character_path(char_list.at(n).name, "char_icon"), true))); - treeItem->setText(1, QString::number(n)); + treeItem->setText(0, character.name); + treeItem->setIcon(0, QIcon(ao_app->get_image_suffix(ao_app->get_character_path(character.name, "char_icon"), true))); + treeItem->setText(1, QString::number(i)); // category logic QTreeWidgetItem *category; if (char_category == "") // no category @@ -333,7 +333,7 @@ void Courtroom::character_loading_finished() ui_char_list->sortItems(0, Qt::AscendingOrder); - connect(char_button, &AOCharButton::clicked, this, [this, n]() { this->char_clicked(n); }); + connect(char_button, &AOCharButton::clicked, this, [this, i]() { this->char_clicked(i); }); connect(char_button, &AOCharButton::customContextMenuRequested, this, &Courtroom::on_char_button_context_menu_requested); // This part here serves as a way of showing to the player that the game is @@ -374,9 +374,8 @@ void Courtroom::filter_character_list() // We only really need to update the fact that a character is taken // for the buttons that actually appear. // You'd also update the passwordedness and etc. here later. - current_char->reset(); current_char_list_item->setHidden(false); - current_char->set_taken(char_list.at(i).taken); + current_char->setTaken(char_list.at(i).taken); current_char_list_item->setText(0, char_list.at(i).name); // reset disabled current_char_list_item->setDisabled(false); diff --git a/src/chatlogpiece.cpp b/src/chatlogpiece.cpp index 662dc0d2..d8ef2949 100644 --- a/src/chatlogpiece.cpp +++ b/src/chatlogpiece.cpp @@ -1,60 +1,33 @@ #include "chatlogpiece.h" -ChatLogPiece::ChatLogPiece() -{ - name = tr("UNKNOWN"); - showname = tr("UNKNOWN"); - message = tr("UNKNOWN"); - color = 0; - datetime = QDateTime::currentDateTimeUtc(); -} - -ChatLogPiece::ChatLogPiece(QString p_name, QString p_showname, QString p_message, QString p_action, int p_color, bool p_selfname) -{ - name = p_name; - showname = p_showname; - message = p_message; - action = p_action; - color = p_color; - selfname = p_selfname; - datetime = QDateTime::currentDateTimeUtc(); -} - -ChatLogPiece::ChatLogPiece(QString p_name, QString p_showname, QString p_message, QString p_action, int p_color, bool p_selfname, QDateTime p_datetime) -{ - name = p_name; - showname = p_showname; - message = p_message; - action = p_action; - color = p_color; - selfname = p_selfname; - datetime = p_datetime.toUTC(); -} +#include -QString ChatLogPiece::get_datetime_as_string() +QString ChatLogPiece::toString() { - return datetime.toString(); -} + auto maybe_unknown = [](QString str) -> QString { + if (str.isEmpty()) + { + return tr("UNKNOWN"); + } + else + { + return str; + } + }; -QString ChatLogPiece::get_full() -{ - QString full = "["; + QString details = QString("[%1] %2").arg(timestamp.toString(), maybe_unknown(character_name)); - full.append(get_datetime_as_string()); - full.append("] "); - full.append(showname); - if (showname != name) + if (character_name != character) { - full.append(" ("); - full.append(name); - full.append(")"); + details += " (" % maybe_unknown(character) % ")"; } + if (!action.isEmpty()) { - full.append(" " + action); + details += " " % action; } - full.append(": "); - full.append(message); - return full; + details += ": " % maybe_unknown(message); + + return details; } diff --git a/src/chatlogpiece.h b/src/chatlogpiece.h index 3750ff91..d6a00339 100644 --- a/src/chatlogpiece.h +++ b/src/chatlogpiece.h @@ -1,26 +1,21 @@ #pragma once +#include #include #include -#include class ChatLogPiece { - Q_DECLARE_TR_FUNCTIONS(chatlogpiece) + Q_DECLARE_TR_FUNCTIONS(ChatLogPiece) public: - ChatLogPiece(); - ChatLogPiece(QString p_name, QString p_showname, QString p_message, QString p_action, int color, bool selfname); - ChatLogPiece(QString p_name, QString p_showname, QString p_message, QString p_action, int color, bool selfname, QDateTime p_datetime); - - QString name; - QString showname; + QString character; + QString character_name; QString message; QString action; - bool selfname = false; - QDateTime datetime; + QDateTime timestamp; + bool local_player = false; int color = 0; - QString get_datetime_as_string(); - QString get_full(); + QString toString(); }; diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 7df942bb..215bbb8f 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -563,7 +563,7 @@ void Courtroom::update_audio_volume() blip_player->set_volume(ui_blip_slider->value() * remaining_percent); } -void Courtroom::append_char(char_type p_char) +void Courtroom::append_char(CharacterSlot p_char) { char_list.append(p_char); } @@ -671,7 +671,7 @@ void Courtroom::set_courtroom_size() } ui_background->move(0, 0); ui_background->resize(m_courtroom_width, m_courtroom_height); - ui_background->set_image("courtroombackground"); + ui_background->setImage("courtroombackground"); } void Courtroom::set_mute_list() @@ -686,7 +686,7 @@ void Courtroom::set_mute_list() QStringList sorted_mute_list; - for (const char_type &i_char : qAsConst(char_list)) + for (const CharacterSlot &i_char : qAsConst(char_list)) { sorted_mute_list.append(i_char.name); } @@ -704,7 +704,7 @@ void Courtroom::set_pair_list() { QStringList sorted_pair_list; - for (const char_type &i_char : qAsConst(char_list)) + for (const CharacterSlot &i_char : qAsConst(char_list)) { sorted_pair_list.append(i_char.name); } @@ -836,7 +836,7 @@ void Courtroom::set_widgets() ui_pair_order_dropdown->setToolTip(tr("Change the order of appearance for your character.")); set_size_and_pos(ui_pair_button, "pair_button"); - ui_pair_button->set_image("pair_button"); + ui_pair_button->setImage("pair_button"); ui_pair_button->setToolTip(tr("Display the list of characters to pair with.")); set_size_and_pos(ui_area_list, "music_list"); @@ -887,7 +887,7 @@ void Courtroom::set_widgets() ui_vp_sticker->combo_resize(ui_viewport->width(), ui_viewport->height()); ui_muted->resize(ui_ic_chat_message->width(), ui_ic_chat_message->height()); - ui_muted->set_image("muted"); + ui_muted->setImage("muted"); ui_muted->setToolTip(tr("Oops, you're muted!")); set_size_and_pos(ui_ooc_chat_message, "ooc_chat_message"); @@ -907,7 +907,7 @@ void Courtroom::set_widgets() set_size_and_pos(ui_pos_remove, "pos_remove"); ui_pos_remove->setText("X"); - ui_pos_remove->set_image("evidencex"); + ui_pos_remove->setImage("evidencex"); ui_pos_remove->setToolTip(tr("Reset your character's supplementary background to its default.")); if (current_side == "") { @@ -928,7 +928,7 @@ void Courtroom::set_widgets() set_size_and_pos(ui_iniswap_remove, "iniswap_remove"); ui_iniswap_remove->setText("X"); - ui_iniswap_remove->set_image("evidencex"); + ui_iniswap_remove->setImage("evidencex"); ui_iniswap_remove->setToolTip(tr("Remove the currently selected iniswap from the list and return to " "the original character folder.")); ui_iniswap_remove->hide(); @@ -943,7 +943,7 @@ void Courtroom::set_widgets() set_size_and_pos(ui_sfx_remove, "sfx_remove"); ui_sfx_remove->setText("X"); - ui_sfx_remove->set_image("evidencex"); + ui_sfx_remove->setImage("evidencex"); ui_sfx_remove->setToolTip(tr("Remove the currently selected sound effect.")); ui_sfx_remove->hide(); @@ -964,10 +964,10 @@ void Courtroom::set_widgets() ui_effects_dropdown->setIconSize(QSize(p_point.x(), p_point.y())); set_size_and_pos(ui_defense_bar, "defense_bar"); - ui_defense_bar->set_image("defensebar" + QString::number(defense_bar_state)); + ui_defense_bar->setImage("defensebar" + QString::number(defense_bar_state)); set_size_and_pos(ui_prosecution_bar, "prosecution_bar"); - ui_prosecution_bar->set_image("prosecutionbar" + QString::number(prosecution_bar_state)); + ui_prosecution_bar->setImage("prosecutionbar" + QString::number(prosecution_bar_state)); set_size_and_pos(ui_music_label, "music_label"); ui_music_label->setText(tr("Music")); @@ -980,70 +980,70 @@ void Courtroom::set_widgets() ui_hold_it->setText(tr("Hold It!")); ui_hold_it->setToolTip(tr("When this is turned on, your next in-character " "message will be a shout!")); - ui_hold_it->set_image("holdit"); + ui_hold_it->setImage("holdit"); set_size_and_pos(ui_objection, "objection"); ui_objection->setText(tr("Objection!")); ui_objection->setToolTip(tr("When this is turned on, your next in-character " "message will be a shout!")); - ui_objection->set_image("objection"); + ui_objection->setImage("objection"); set_size_and_pos(ui_take_that, "take_that"); ui_take_that->setText(tr("Take That!")); ui_take_that->setToolTip(tr("When this is turned on, your next in-character " "message will be a shout!")); - ui_take_that->set_image("takethat"); + ui_take_that->setImage("takethat"); set_size_and_pos(ui_ooc_toggle, "ooc_toggle"); ui_ooc_toggle->setText(tr("Server")); ui_ooc_toggle->setToolTip(tr("Toggle between server chat and global AO2 chat.")); set_size_and_pos(ui_witness_testimony, "witness_testimony"); - ui_witness_testimony->set_image("witnesstestimony"); + ui_witness_testimony->setImage("witnesstestimony"); ui_witness_testimony->setToolTip(tr("This will display the animation in the " "viewport as soon as it is pressed.")); set_size_and_pos(ui_cross_examination, "cross_examination"); - ui_cross_examination->set_image("crossexamination"); + ui_cross_examination->setImage("crossexamination"); ui_cross_examination->setToolTip(tr("This will display the animation in the " "viewport as soon as it is pressed.")); set_size_and_pos(ui_guilty, "guilty"); ui_guilty->setText(tr("Guilty!")); - ui_guilty->set_image("guilty"); + ui_guilty->setImage("guilty"); ui_guilty->setToolTip(tr("This will display the animation in the viewport as " "soon as it is pressed.")); set_size_and_pos(ui_not_guilty, "not_guilty"); - ui_not_guilty->set_image("notguilty"); + ui_not_guilty->setImage("notguilty"); ui_not_guilty->setToolTip(tr("This will display the animation in the " "viewport as soon as it is pressed.")); set_size_and_pos(ui_change_character, "change_character"); ui_change_character->setText(tr("Change character")); - ui_change_character->set_image("change_character"); + ui_change_character->setImage("change_character"); ui_change_character->setToolTip(tr("Bring up the Character Select Screen and change your character.")); set_size_and_pos(ui_reload_theme, "reload_theme"); ui_reload_theme->setText(tr("Reload theme")); - ui_reload_theme->set_image("reload_theme"); + ui_reload_theme->setImage("reload_theme"); ui_reload_theme->setToolTip(tr("Refresh the theme and update all of the ui elements to match.")); set_size_and_pos(ui_call_mod, "call_mod"); ui_call_mod->setText(tr("Call mod")); - ui_call_mod->set_image("call_mod"); + ui_call_mod->setImage("call_mod"); ui_call_mod->setToolTip(tr("Request the attention of the current server's moderator.")); set_size_and_pos(ui_settings, "settings"); ui_settings->setText(tr("Settings")); - ui_settings->set_image("courtroom_settings"); + ui_settings->setImage("courtroom_settings"); if (ui_settings->icon().isNull()) { - ui_settings->set_image("settings"); // pre-2.10 filename + ui_settings->setImage("settings"); // pre-2.10 filename } ui_settings->setToolTip(tr("Allows you to change various aspects of the client.")); set_size_and_pos(ui_switch_area_music, "switch_area_music"); ui_switch_area_music->setText(tr("A/M")); - ui_switch_area_music->set_image("switch_area_music"); + ui_switch_area_music->setImage("switch_area_music"); ui_switch_area_music->setToolTip(tr("Switch between Areas and Music lists")); set_size_and_pos(ui_pre, "pre"); @@ -1082,40 +1082,40 @@ void Courtroom::set_widgets() set_size_and_pos(ui_custom_objection, "custom_objection"); ui_custom_objection->setText(tr("Custom Shout!")); - ui_custom_objection->set_image("custom"); + ui_custom_objection->setImage("custom"); ui_custom_objection->setToolTip(tr("This will display the custom character-defined animation in the " "viewport as soon as it is pressed.\n" "To make one, your character's folder must contain " "custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect")); set_size_and_pos(ui_realization, "realization"); - ui_realization->set_image("realization"); + ui_realization->setImage("realization"); ui_realization->setToolTip(tr("Play realization sound and animation in the viewport on the next " "spoken message when checked.")); set_size_and_pos(ui_screenshake, "screenshake"); - ui_screenshake->set_image("screenshake"); + ui_screenshake->setImage("screenshake"); ui_screenshake->setToolTip(tr("Shake the screen on next spoken message when checked.")); set_size_and_pos(ui_mute, "mute_button"); ui_mute->setText("Mute"); - ui_mute->set_image("mute"); + ui_mute->setImage("mute"); ui_mute->setToolTip(tr("Display the list of character folders you wish to mute.")); set_size_and_pos(ui_defense_plus, "defense_plus"); - ui_defense_plus->set_image("defplus"); + ui_defense_plus->setImage("defplus"); ui_defense_plus->setToolTip(tr("Increase the health bar.")); set_size_and_pos(ui_defense_minus, "defense_minus"); - ui_defense_minus->set_image("defminus"); + ui_defense_minus->setImage("defminus"); ui_defense_minus->setToolTip(tr("Decrease the health bar.")); set_size_and_pos(ui_prosecution_plus, "prosecution_plus"); - ui_prosecution_plus->set_image("proplus"); + ui_prosecution_plus->setImage("proplus"); ui_prosecution_plus->setToolTip(tr("Increase the health bar.")); set_size_and_pos(ui_prosecution_minus, "prosecution_minus"); - ui_prosecution_minus->set_image("prominus"); + ui_prosecution_minus->setImage("prominus"); ui_prosecution_minus->setToolTip(tr("Decrease the health bar.")); set_size_and_pos(ui_text_color, "text_color"); @@ -1137,10 +1137,10 @@ void Courtroom::set_widgets() set_size_and_pos(ui_char_buttons, "char_buttons"); set_size_and_pos(ui_char_select_left, "char_select_left"); - ui_char_select_left->set_image("arrow_left"); + ui_char_select_left->setImage("arrow_left"); set_size_and_pos(ui_char_select_right, "char_select_right"); - ui_char_select_right->set_image("arrow_right"); + ui_char_select_right->setImage("arrow_right"); set_size_and_pos(ui_spectator, "spectator"); ui_spectator->setToolTip(tr("Become a spectator. You won't be able to " @@ -1334,7 +1334,7 @@ void Courtroom::set_taken(int n_char, bool p_taken) return; } - char_type f_char; + CharacterSlot f_char; f_char.name = char_list.at(n_char).name; f_char.description = char_list.at(n_char).description; f_char.taken = p_taken; @@ -1672,16 +1672,16 @@ void Courtroom::enter_courtroom() switch (objection_state) // no need to reset these as it was done in set_widgets() { case 1: - ui_hold_it->set_image("holdit_selected"); + ui_hold_it->setImage("holdit_selected"); break; case 2: - ui_objection->set_image("objection_selected"); + ui_objection->setImage("objection_selected"); break; case 3: - ui_take_that->set_image("takethat_selected"); + ui_take_that->setImage("takethat_selected"); break; case 4: - ui_custom_objection->set_image("custom_selected"); + ui_custom_objection->setImage("custom_selected"); break; default: break; @@ -2292,13 +2292,13 @@ void Courtroom::reset_ui() realization_state = 0; screenshake_state = 0; is_presenting_evidence = false; - ui_hold_it->set_image("holdit"); - ui_objection->set_image("objection"); - ui_take_that->set_image("takethat"); - ui_custom_objection->set_image("custom"); - ui_realization->set_image("realization"); - ui_screenshake->set_image("screenshake"); - ui_evidence_present->set_image("present"); + ui_hold_it->setImage("holdit"); + ui_objection->setImage("objection"); + ui_take_that->setImage("takethat"); + ui_custom_objection->setImage("custom"); + ui_realization->setImage("realization"); + ui_screenshake->setImage("screenshake"); + ui_evidence_present->setImage("present"); // If sticky sounds is disabled and we either have SFX on Idle enabled, or our Preanim checkbox is checked if (!Options::getInstance().clearSoundsDropdownOnPlayEnabled() && (Options::getInstance().playSelectedSFXOnIdle() || ui_pre->isChecked())) @@ -3111,14 +3111,14 @@ void Courtroom::initialize_chatbox() if (ui_vp_showname->text().trimmed().isEmpty()) // Whitespace showname { - ui_vp_chatbox->set_image("chatblank", p_misc); + ui_vp_chatbox->setImage("chatblank", p_misc); } else // Aw yeah dude do some showname magic { ui_vp_showname->setVisible(true); - if (!ui_vp_chatbox->set_image("chat", p_misc)) + if (!ui_vp_chatbox->setImage("chat", p_misc)) { - ui_vp_chatbox->set_image("chatbox", p_misc); + ui_vp_chatbox->setImage("chatbox", p_misc); } // Remember to set the showname font before the font metrics check. @@ -3153,11 +3153,11 @@ void Courtroom::initialize_chatbox() #endif if (extra_width > 0) { - QString current_path = ui_vp_chatbox->file_name().left(ui_vp_chatbox->file_name().lastIndexOf('.')); - if (fm_width > default_width.width && ui_vp_chatbox->set_image(current_path + "med")) // This text be big. Let's do some shenanigans. + QString current_path = ui_vp_chatbox->image().left(ui_vp_chatbox->image().lastIndexOf('.')); + if (fm_width > default_width.width && ui_vp_chatbox->setImage(current_path + "med")) // This text be big. Let's do some shenanigans. { ui_vp_showname->resize(default_width.width + extra_width, ui_vp_showname->height()); - if (fm_width > ui_vp_showname->width() && ui_vp_chatbox->set_image(current_path + "big")) // Biggest possible size for us. + if (fm_width > ui_vp_showname->width() && ui_vp_chatbox->setImage(current_path + "big")) // Biggest possible size for us. { ui_vp_showname->resize(static_cast(default_width.width + (extra_width * 2)), ui_vp_showname->height()); } @@ -3578,11 +3578,19 @@ QString Courtroom::filter_ic_text(QString p_text, bool html, int target_pos, int void Courtroom::log_ic_text(QString p_name, QString p_showname, QString p_message, QString p_action, int p_color, bool p_selfname) { - ChatLogPiece log_entry(p_name, p_showname, p_message, p_action, p_color, p_selfname); + ChatLogPiece log_entry; + log_entry.character = p_name; + log_entry.character_name = p_showname; + log_entry.local_player = p_selfname; + log_entry.message = p_message; + log_entry.action = p_action; + log_entry.color = p_color; + log_entry.timestamp = QDateTime::currentDateTimeUtc(); ic_chatlog_history.append(log_entry); + if (Options::getInstance().logToTextFileEnabled() && !ao_app->log_filename.isEmpty()) { - ao_app->append_to_file(log_entry.get_full(), ao_app->log_filename, true); + ao_app->append_to_file(log_entry.toString(), ao_app->log_filename, true); } while (ic_chatlog_history.size() > log_maximum_blocks && log_maximum_blocks > 0) @@ -3997,8 +4005,9 @@ void Courtroom::start_chat_ticking() QString f_blips = ao_app->get_blipname(m_chatmessage[CHAR_NAME]); f_blips = ao_app->get_blips(f_blips); - if (ao_app->custom_blips_supported && !m_chatmessage[BLIPNAME].isEmpty()) { - f_blips = ao_app->get_blips(m_chatmessage[BLIPNAME]); + if (ao_app->custom_blips_supported && !m_chatmessage[BLIPNAME].isEmpty()) + { + f_blips = ao_app->get_blips(m_chatmessage[BLIPNAME]); } blip_player->set_blips(f_blips); @@ -4389,7 +4398,7 @@ void Courtroom::set_mute(bool p_muted, int p_cid) } ui_muted->resize(ui_ic_chat_message->width(), ui_ic_chat_message->height()); - ui_muted->set_image("muted"); + ui_muted->setImage("muted"); is_muted = p_muted; ui_ic_chat_message->setEnabled(!p_muted); @@ -4596,13 +4605,13 @@ void Courtroom::set_hp_bar(int p_bar, int p_state) int prev_state = p_state; if (p_bar == 1) { - ui_defense_bar->set_image("defensebar" + QString::number(p_state)); + ui_defense_bar->setImage("defensebar" + QString::number(p_state)); prev_state = defense_bar_state; defense_bar_state = p_state; } else if (p_bar == 2) { - ui_prosecution_bar->set_image("prosecutionbar" + QString::number(p_state)); + ui_prosecution_bar->setImage("prosecutionbar" + QString::number(p_state)); prev_state = prosecution_bar_state; prosecution_bar_state = p_state; } @@ -5483,7 +5492,7 @@ void Courtroom::on_pair_list_clicked(QModelIndex p_index) // Redo the character list. QStringList sorted_pair_list; - for (const char_type &i_char : qAsConst(char_list)) + for (const CharacterSlot &i_char : qAsConst(char_list)) { sorted_pair_list.append(i_char.name); } @@ -5700,16 +5709,16 @@ void Courtroom::on_hold_it_clicked() { if (objection_state == 1) { - ui_hold_it->set_image("holdit"); + ui_hold_it->setImage("holdit"); objection_state = 0; } else { - ui_objection->set_image("objection"); - ui_take_that->set_image("takethat"); - ui_custom_objection->set_image("custom"); + ui_objection->setImage("objection"); + ui_take_that->setImage("takethat"); + ui_custom_objection->setImage("custom"); - ui_hold_it->set_image("holdit_selected"); + ui_hold_it->setImage("holdit_selected"); objection_state = 1; } @@ -5720,16 +5729,16 @@ void Courtroom::on_objection_clicked() { if (objection_state == 2) { - ui_objection->set_image("objection"); + ui_objection->setImage("objection"); objection_state = 0; } else { - ui_hold_it->set_image("holdit"); - ui_take_that->set_image("takethat"); - ui_custom_objection->set_image("custom"); + ui_hold_it->setImage("holdit"); + ui_take_that->setImage("takethat"); + ui_custom_objection->setImage("custom"); - ui_objection->set_image("objection_selected"); + ui_objection->setImage("objection_selected"); objection_state = 2; } @@ -5740,16 +5749,16 @@ void Courtroom::on_take_that_clicked() { if (objection_state == 3) { - ui_take_that->set_image("takethat"); + ui_take_that->setImage("takethat"); objection_state = 0; } else { - ui_objection->set_image("objection"); - ui_hold_it->set_image("holdit"); - ui_custom_objection->set_image("custom"); + ui_objection->setImage("objection"); + ui_hold_it->setImage("holdit"); + ui_custom_objection->setImage("custom"); - ui_take_that->set_image("takethat_selected"); + ui_take_that->setImage("takethat_selected"); objection_state = 3; } @@ -5760,16 +5769,16 @@ void Courtroom::on_custom_objection_clicked() { if (objection_state == 4) { - ui_custom_objection->set_image("custom"); + ui_custom_objection->setImage("custom"); objection_state = 0; } else { - ui_objection->set_image("objection"); - ui_take_that->set_image("takethat"); - ui_hold_it->set_image("holdit"); + ui_objection->setImage("objection"); + ui_take_that->setImage("takethat"); + ui_hold_it->setImage("holdit"); - ui_custom_objection->set_image("custom_selected"); + ui_custom_objection->setImage("custom_selected"); objection_state = 4; } @@ -5782,10 +5791,10 @@ void Courtroom::show_custom_objection_menu(const QPoint &pos) QAction *selecteditem = custom_obj_menu->exec(globalPos); if (selecteditem) { - ui_objection->set_image("objection"); - ui_take_that->set_image("takethat"); - ui_hold_it->set_image("holdit"); - ui_custom_objection->set_image("custom_selected"); + ui_objection->setImage("objection"); + ui_take_that->setImage("takethat"); + ui_hold_it->setImage("holdit"); + ui_custom_objection->setImage("custom_selected"); if (selecteditem->text() == ao_app->read_char_ini(current_char, "custom_name", "Shouts") || selecteditem->text() == "Default") { objection_custom = ""; @@ -5816,14 +5825,14 @@ void Courtroom::on_realization_clicked() on_effects_dropdown_changed(ui_effects_dropdown->currentIndex()); } - ui_realization->set_image("realization_pressed"); + ui_realization->setImage("realization_pressed"); } else { realization_state = 0; ui_effects_dropdown->setCurrentIndex(0); on_effects_dropdown_changed(ui_effects_dropdown->currentIndex()); - ui_realization->set_image("realization"); + ui_realization->setImage("realization"); } ui_ic_chat_message->setFocus(); @@ -5834,12 +5843,12 @@ void Courtroom::on_screenshake_clicked() if (screenshake_state == 0) { screenshake_state = 1; - ui_screenshake->set_image("screenshake_pressed"); + ui_screenshake->setImage("screenshake_pressed"); } else { screenshake_state = 0; - ui_screenshake->set_image("screenshake"); + ui_screenshake->setImage("screenshake"); } ui_ic_chat_message->setFocus(); @@ -5854,13 +5863,13 @@ void Courtroom::on_mute_clicked() ui_pair_offset_spinbox->hide(); ui_pair_vert_offset_spinbox->hide(); ui_pair_order_dropdown->hide(); - ui_pair_button->set_image("pair_button"); - ui_mute->set_image("mute_pressed"); + ui_pair_button->setImage("pair_button"); + ui_mute->setImage("mute_pressed"); } else { ui_mute_list->hide(); - ui_mute->set_image("mute"); + ui_mute->setImage("mute"); } } @@ -5876,8 +5885,8 @@ void Courtroom::on_pair_clicked() } ui_pair_order_dropdown->show(); ui_mute_list->hide(); - ui_mute->set_image("mute"); - ui_pair_button->set_image("pair_button_pressed"); + ui_mute->setImage("mute"); + ui_pair_button->setImage("pair_button_pressed"); } else { @@ -5885,7 +5894,7 @@ void Courtroom::on_pair_clicked() ui_pair_offset_spinbox->hide(); ui_pair_vert_offset_spinbox->hide(); ui_pair_order_dropdown->hide(); - ui_pair_button->set_image("pair_button"); + ui_pair_button->setImage("pair_button"); } } @@ -6271,8 +6280,8 @@ void Courtroom::regenerate_ic_chatlog() foreach (ChatLogPiece item, ic_chatlog_history) { QString message = item.message; - QString name = ui_showname_enable->isChecked() ? item.showname : item.name; - append_ic_text(message, name, item.action, item.color, item.selfname, item.datetime.toLocalTime()); + QString name = ui_showname_enable->isChecked() ? item.character_name : item.character; + append_ic_text(message, name, item.action, item.color, item.local_player, item.timestamp.toLocalTime()); } } diff --git a/src/courtroom.h b/src/courtroom.h index e79fb40b..a42adca7 100644 --- a/src/courtroom.h +++ b/src/courtroom.h @@ -78,7 +78,7 @@ public: void update_audio_volume(); - void append_char(char_type p_char); + void append_char(CharacterSlot p_char); void append_music(QString f_music); void append_area(QString f_area); void clear_chars(); @@ -138,7 +138,7 @@ public: void set_pos_dropdown(QStringList pos_dropdowns); // sets the evidence list member variable to argument - void set_evidence_list(QVector &p_evi_list); + void set_evidence_list(QVector &p_evi_list); // called when a DONE#% from the server was received void done_received(); @@ -331,8 +331,8 @@ private: // 0 = in front, 1 = behind int pair_order = 0; - QVector char_list; - QVector evidence_list; + QVector char_list; + QVector evidence_list; QVector music_list; QVector area_list; @@ -553,9 +553,9 @@ private: int emote_rows = 2; int max_emotes_on_page = 10; - QVector local_evidence_list; - QVector private_evidence_list; - QVector global_evidence_list; + QVector local_evidence_list; + QVector private_evidence_list; + QVector global_evidence_list; // false = use private_evidence_list bool current_evidence_global = true; @@ -938,7 +938,7 @@ private Q_SLOTS: void on_evidence_load_clicked(); void evidence_save(QString filename); void evidence_load(QString filename); - bool compare_evidence_changed(evi_type evi_a, evi_type evi_b); + bool compare_evidence_changed(EvidenceItem evi_a, EvidenceItem evi_b); void on_back_to_lobby_clicked(); diff --git a/src/datatypes.h b/src/datatypes.h index 19263f84..1258136b 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -3,35 +3,24 @@ #include #include -enum connection_type +enum ServerConnectionType { - TCP, - WEBSOCKETS, + TcpServerConnection, + WebSocketServerConnection, }; -static QMap to_connection_type = {{"tcp", connection_type::TCP}, {"ws", connection_type::WEBSOCKETS}}; +static const QMap SERVER_CONNECTION_TYPE_STRING_MAP = {{"tcp", ServerConnectionType::TcpServerConnection}, {"ws", ServerConnectionType::WebSocketServerConnection}}; -struct server_type +struct ServerInfo { QString name; - QString desc; + QString description; QString ip; int port; - connection_type socket_type; -}; - -struct emote_type -{ - QString comment; - QString preanim; - QString anim; - int mod; - QString sfx_name; - int sfx_delay; - int sfx_duration; + ServerConnectionType socket_type; }; -struct char_type +struct CharacterSlot { QString name; QString description; @@ -39,44 +28,13 @@ struct char_type bool taken; }; -struct evi_type +struct EvidenceItem { QString name; QString description; QString image; }; -struct chatmessage_type -{ - QString message; - QString character; - QString side; - QString sfx_name; - QString pre_emote; - QString emote; - int emote_modifier; - int objection_modifier; - int realization; - int text_color; - int evidence; - int cid; - int sfx_delay; - int flip; -}; - -struct area_type -{ - QString name; - QString background; - bool passworded; -}; - -struct pos_type -{ - int x; - int y; -}; - struct pos_size_type { int x = 0; diff --git a/src/demoserver.cpp b/src/demoserver.cpp index c22160da..0573b84e 100644 --- a/src/demoserver.cpp +++ b/src/demoserver.cpp @@ -66,7 +66,7 @@ void DemoServer::accept_connection() { sc_packet = demo_data.dequeue(); AOPacket sc(sc_packet); - num_chars = sc.get_content().length(); + num_chars = sc.content().length(); } else { @@ -94,7 +94,7 @@ void DemoServer::recv_data() QString in_data = QString::fromUtf8(client_sock->readAll()); #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) - const QStringList packet_list = in_data.split("%", QString::SplitBehavior(QString::SkipEmptyParts)); + const QStringList packet_list = in_data.split("%", QString::SkipEmptyParts); #else const QStringList packet_list = in_data.split("%", Qt::SkipEmptyParts); #endif @@ -143,8 +143,8 @@ void DemoServer::handle_packet(AOPacket p_packet) // Also, at some point, I will make akashit // into a shared library. - QString header = p_packet.get_header(); - QStringList contents = p_packet.get_content(); + QString header = p_packet.header(); + QStringList contents = p_packet.content(); if (header == "HI") { diff --git a/src/emotes.cpp b/src/emotes.cpp index b16b9893..c12ceb69 100644 --- a/src/emotes.cpp +++ b/src/emotes.cpp @@ -44,10 +44,10 @@ void Courtroom::refresh_emotes() set_size_and_pos(ui_emotes, "emotes"); set_size_and_pos(ui_emote_left, "emote_left"); - ui_emote_left->set_image("arrow_left"); + ui_emote_left->setImage("arrow_left"); set_size_and_pos(ui_emote_right, "emote_right"); - ui_emote_right->set_image("arrow_right"); + ui_emote_right->setImage("arrow_right"); QPoint f_spacing = ao_app->get_button_spacing("emote_button_spacing", "courtroom_design.ini"); QPoint p_point = ao_app->get_button_spacing("emote_button_size", "courtroom_design.ini"); @@ -73,20 +73,18 @@ void Courtroom::refresh_emotes() QString selected_image = ao_app->get_image_suffix(ao_app->get_theme_path("emote_selected", ""), true); - for (int n = 0; n < max_emotes_on_page; ++n) + for (int i = 0; i < max_emotes_on_page; ++i) { int x_pos = (button_width + x_spacing) * x_mod_count; int y_pos = (button_height + y_spacing) * y_mod_count; - AOEmoteButton *f_emote = new AOEmoteButton(ao_app, x_pos, y_pos, button_width, button_height, ui_emotes); - f_emote->set_selected_image(selected_image); + AOEmoteButton *f_emote = new AOEmoteButton(i, button_width, button_height, ao_app, ui_emotes); + f_emote->setSelectedImage(selected_image); + f_emote->move(x_pos, y_pos); ui_emote_list.append(f_emote); - f_emote->set_id(n); - f_emote->setContextMenuPolicy(Qt::CustomContextMenu); - connect(f_emote, &AOEmoteButton::emote_clicked, this, &Courtroom::on_emote_clicked); - + connect(f_emote, &AOEmoteButton::emoteClicked, this, &Courtroom::on_emote_clicked); connect(f_emote, &AOEmoteButton::customContextMenuRequested, this, &Courtroom::show_emote_menu); ++x_mod_count; @@ -154,11 +152,11 @@ void Courtroom::set_emote_page() if (n_real_emote == current_emote) { - f_emote->set_char_image(current_char, n_real_emote, true); + f_emote->setImage(current_char, n_real_emote, true); } else { - f_emote->set_char_image(current_char, n_real_emote, false); + f_emote->setImage(current_char, n_real_emote, false); } f_emote->show(); @@ -191,7 +189,7 @@ void Courtroom::select_emote(int p_id) if (current_emote >= min && current_emote <= max) { - ui_emote_list.at(current_emote % max_emotes_on_page)->set_char_image(current_char, current_emote, false); + ui_emote_list.at(current_emote % max_emotes_on_page)->setImage(current_char, current_emote, false); } int old_emote = current_emote; @@ -200,7 +198,7 @@ void Courtroom::select_emote(int p_id) if (current_emote >= min && current_emote <= max) { - ui_emote_list.at(current_emote % max_emotes_on_page)->set_char_image(current_char, current_emote, true); + ui_emote_list.at(current_emote % max_emotes_on_page)->setImage(current_char, current_emote, true); } int emote_mod = ao_app->get_emote_mod(current_char, current_emote); @@ -257,11 +255,11 @@ void Courtroom::show_emote_menu(const QPoint &pos) if (qobject_cast(button)) { AOEmoteButton *emote_button = qobject_cast(sender()); - id = emote_button->get_id(); + id = emote_button->id(); } int emote_num = id + max_emotes_on_page * current_emote_page; emote_menu->clear(); - emote_menu->setDefaultAction(emote_menu->addAction("Preview Selected", this, [=] { + emote_menu->setDefaultAction(emote_menu->addAction("Preview Selected", this, [this] { emote_preview->show(); emote_preview->raise(); emote_preview->set_widgets(); @@ -271,19 +269,19 @@ void Courtroom::show_emote_menu(const QPoint &pos) QString f_pre = ao_app->get_pre_emote(current_char, emote_num); if (!f_pre.isEmpty() && f_pre != "-") { - emote_menu->addAction("Preview pre: " + f_pre, this, [=] { preview_emote(f_pre); }); + emote_menu->addAction("Preview pre: " + f_pre, this, [this, f_pre] { preview_emote(f_pre); }); } QString f_emote = ao_app->get_emote(current_char, emote_num); if (!f_emote.isEmpty()) { - emote_menu->addAction("Preview idle: " + f_emote, this, [=] { preview_emote("(a)" + f_emote); }); - emote_menu->addAction("Preview talk: " + f_emote, this, [=] { preview_emote("(b)" + f_emote); }); + emote_menu->addAction("Preview idle: " + f_emote, this, [this, f_emote] { preview_emote("(a)" + f_emote); }); + emote_menu->addAction("Preview talk: " + f_emote, this, [this, f_emote] { preview_emote("(b)" + f_emote); }); QStringList c_paths = {ao_app->get_image_suffix(ao_app->get_character_path(current_char, "(c)" + f_emote)), ao_app->get_image_suffix(ao_app->get_character_path(current_char, "(c)/" + f_emote))}; // if there is a (c) animation if (file_exists(ui_vp_player_char->find_image(c_paths))) { - emote_menu->addAction("Preview segway: " + f_emote, this, [=] { preview_emote("(c)" + f_emote); }); + emote_menu->addAction("Preview segway: " + f_emote, this, [this, f_emote] { preview_emote("(c)" + f_emote); }); } } emote_menu->popup(button->mapToGlobal(pos)); diff --git a/src/evidence.cpp b/src/evidence.cpp index 4377b257..322970fa 100644 --- a/src/evidence.cpp +++ b/src/evidence.cpp @@ -100,17 +100,17 @@ void Courtroom::refresh_evidence() ui_evidence_list.clear(); set_size_and_pos(ui_evidence_button, "evidence_button"); - ui_evidence_button->set_image("evidence_button"); + ui_evidence_button->setImage("evidence_button"); ui_evidence_button->setToolTip(tr("Bring up the Evidence screen.")); set_size_and_pos(ui_evidence, "evidence_background"); if (current_evidence_global) { - ui_evidence->set_image("evidence_background"); + ui_evidence->setImage("evidence_background"); } else { - ui_evidence->set_image("evidence_background_private"); + ui_evidence->setImage("evidence_background_private"); } set_size_and_pos(ui_evidence_name, "evidence_name"); @@ -118,63 +118,63 @@ void Courtroom::refresh_evidence() set_size_and_pos(ui_evidence_buttons, "evidence_buttons"); set_size_and_pos(ui_evidence_left, "evidence_left"); - ui_evidence_left->set_image("arrow_left"); + ui_evidence_left->setImage("arrow_left"); set_size_and_pos(ui_evidence_right, "evidence_right"); - ui_evidence_right->set_image("arrow_right"); + ui_evidence_right->setImage("arrow_right"); set_size_and_pos(ui_evidence_present, "evidence_present"); - ui_evidence_present->set_image("present"); + ui_evidence_present->setImage("present"); set_size_and_pos(ui_evidence_overlay, "evidence_overlay"); if (current_evidence_global) { - ui_evidence_overlay->set_image("evidence_overlay"); + ui_evidence_overlay->setImage("evidence_overlay"); } else { - ui_evidence_overlay->set_image("evidence_overlay_private"); + ui_evidence_overlay->setImage("evidence_overlay_private"); } set_size_and_pos(ui_evidence_delete, "evidence_delete"); - ui_evidence_delete->set_image("evidence_delete"); + ui_evidence_delete->setImage("evidence_delete"); set_size_and_pos(ui_evidence_image_name, "evidence_image_name"); set_size_and_pos(ui_evidence_image_button, "evidence_image_button"); set_size_and_pos(ui_evidence_x, "evidence_x"); - ui_evidence_x->set_image("evidence_x"); + ui_evidence_x->setImage("evidence_x"); set_size_and_pos(ui_evidence_ok, "evidence_ok"); - ui_evidence_ok->set_image("evidence_ok"); + ui_evidence_ok->setImage("evidence_ok"); set_size_and_pos(ui_evidence_switch, "evidence_switch"); if (current_evidence_global) { - ui_evidence_switch->set_image("evidence_global"); + ui_evidence_switch->setImage("evidence_global"); ui_evidence_switch->setToolTip(tr("Switch evidence to private inventory.")); } else { - ui_evidence_switch->set_image("evidence_private"); + ui_evidence_switch->setImage("evidence_private"); ui_evidence_switch->setToolTip(tr("Switch evidence to global inventory.")); } set_size_and_pos(ui_evidence_transfer, "evidence_transfer"); if (current_evidence_global) { - ui_evidence_transfer->set_image("evidence_transfer"); + ui_evidence_transfer->setImage("evidence_transfer"); ui_evidence_transfer->setToolTip(tr("Transfer evidence to private inventory.")); } else { - ui_evidence_transfer->set_image("evidence_transfer_private"); + ui_evidence_transfer->setImage("evidence_transfer_private"); ui_evidence_transfer->setToolTip(tr("Transfer evidence to global inventory.")); } set_size_and_pos(ui_evidence_save, "evidence_save"); - ui_evidence_save->set_image("evidence_save"); + ui_evidence_save->setImage("evidence_save"); if (current_evidence_global) { ui_evidence_save->hide(); @@ -185,7 +185,7 @@ void Courtroom::refresh_evidence() } set_size_and_pos(ui_evidence_load, "evidence_load"); - ui_evidence_load->set_image("evidence_load"); + ui_evidence_load->setImage("evidence_load"); if (current_evidence_global) { ui_evidence_load->hide(); @@ -213,20 +213,18 @@ void Courtroom::refresh_evidence() max_evidence_on_page = evidence_columns * evidence_rows; - for (int n = 0; n < max_evidence_on_page; ++n) + for (int i = 0; i < max_evidence_on_page; ++i) { int x_pos = (button_width + x_spacing) * x_mod_count; int y_pos = (button_height + y_spacing) * y_mod_count; - AOEvidenceButton *f_evidence = new AOEvidenceButton(ao_app, x_pos, y_pos, button_width, button_height, ui_evidence_buttons); - + AOEvidenceButton *f_evidence = new AOEvidenceButton(i, button_width, button_height, ao_app, ui_evidence_buttons); ui_evidence_list.append(f_evidence); + f_evidence->move(x_pos, y_pos); - f_evidence->set_id(n); - - connect(f_evidence, &AOEvidenceButton::evidence_clicked, this, &Courtroom::on_evidence_clicked); - connect(f_evidence, &AOEvidenceButton::evidence_double_clicked, this, &Courtroom::on_evidence_double_clicked); - connect(f_evidence, &AOEvidenceButton::on_hover, this, &Courtroom::on_evidence_hover); + connect(f_evidence, &AOEvidenceButton::evidenceClicked, this, &Courtroom::on_evidence_clicked); + connect(f_evidence, &AOEvidenceButton::evidenceDoubleClicked, this, &Courtroom::on_evidence_double_clicked); + connect(f_evidence, &AOEvidenceButton::mouseoverUpdated, this, &Courtroom::on_evidence_hover); ++x_mod_count; @@ -238,7 +236,7 @@ void Courtroom::refresh_evidence() } } -void Courtroom::set_evidence_list(QVector &p_evi_list) +void Courtroom::set_evidence_list(QVector &p_evi_list) { global_evidence_list = p_evi_list; if (!current_evidence_global) @@ -247,7 +245,7 @@ void Courtroom::set_evidence_list(QVector &p_evi_list) // thing } - QVector old_list = local_evidence_list; + QVector old_list = local_evidence_list; local_evidence_list.clear(); local_evidence_list = p_evi_list; @@ -351,26 +349,26 @@ void Courtroom::set_evidence_page() int n_real_evidence = n_evidence_button + current_evidence_page * max_evidence_on_page; AOEvidenceButton *f_evidence_button = ui_evidence_list.at(n_evidence_button); - f_evidence_button->set_selected(false); + f_evidence_button->setSelected(false); f_evidence_button->setToolTip(""); if (n_real_evidence == (total_evidence - 1)) { - f_evidence_button->set_theme_image("addevidence.png"); + f_evidence_button->setThemeImage("addevidence.png"); } else if (n_real_evidence < (total_evidence - 1)) { - f_evidence_button->set_image(local_evidence_list.at(n_real_evidence).image); + f_evidence_button->setImage(local_evidence_list.at(n_real_evidence).image); if (n_real_evidence == current_evidence) { - f_evidence_button->set_selected(true); + f_evidence_button->setSelected(true); } f_evidence_button->setToolTip(QString::number(n_real_evidence + 1) + ": " + local_evidence_list.at(n_real_evidence).name); } else { - f_evidence_button->set_image(""); + f_evidence_button->setImage(""); } f_evidence_button->show(); @@ -455,7 +453,7 @@ void Courtroom::on_evidence_clicked(int p_id) } else { - evi_type f_evi; + EvidenceItem f_evi; f_evi.name = ""; f_evi.description = ""; f_evi.image = "empty.png"; @@ -485,10 +483,10 @@ void Courtroom::on_evidence_clicked(int p_id) ui_evidence_name->setText(local_evidence_list.at(f_real_id).name); for (AOEvidenceButton *i_button : qAsConst(ui_evidence_list)) { - i_button->set_selected(false); + i_button->setSelected(false); } - ui_evidence_list.at(p_id)->set_selected(true); + ui_evidence_list.at(p_id)->setSelected(true); current_evidence = f_real_id; } @@ -512,18 +510,18 @@ void Courtroom::on_evidence_double_clicked(int p_id) for (AOEvidenceButton *i_button : qAsConst(ui_evidence_list)) { - i_button->set_selected(false); + i_button->setSelected(false); } // We have to check if the ID is on the currently displayed page. // This is because SOMEONE allowed the switching of pages while evidence is still being edited. if (p_id < ui_evidence_list.count()) { - ui_evidence_list.at(p_id)->set_selected(true); + ui_evidence_list.at(p_id)->setSelected(true); } current_evidence = f_real_id; - evi_type f_evi = local_evidence_list.at(f_real_id); + EvidenceItem f_evi = local_evidence_list.at(f_real_id); ui_evidence_description->clear(); ui_evidence_description->appendPlainText(f_evi.description); @@ -599,11 +597,11 @@ void Courtroom::on_evidence_present_clicked() } if (is_presenting_evidence) { - ui_evidence_present->set_image("present"); + ui_evidence_present->setImage("present"); } else { - ui_evidence_present->set_image("present_disabled"); + ui_evidence_present->setImage("present_disabled"); } is_presenting_evidence = !is_presenting_evidence; @@ -672,7 +670,7 @@ void Courtroom::on_evidence_ok_clicked() ui_evidence_ok->hide(); if (current_evidence < local_evidence_list.size()) { - evi_type f_evi = local_evidence_list.at(current_evidence); + EvidenceItem f_evi = local_evidence_list.at(current_evidence); if (current_evidence_global) { QStringList f_contents; @@ -717,7 +715,7 @@ void Courtroom::on_evidence_transfer_clicked() QString name; if (!current_evidence_global) // Transfer private evidence to global { - evi_type f_evi = local_evidence_list.at(current_evidence); + EvidenceItem f_evi = local_evidence_list.at(current_evidence); QStringList f_contents; f_contents.append(f_evi.name); @@ -729,7 +727,7 @@ void Courtroom::on_evidence_transfer_clicked() } else // Transfer global evidence to private { - evi_type f_evi = local_evidence_list.at(current_evidence); + EvidenceItem f_evi = local_evidence_list.at(current_evidence); name = f_evi.name; private_evidence_list.append(f_evi); @@ -751,7 +749,7 @@ void Courtroom::on_evidence_edited() { return; } - evi_type fake_evidence; + EvidenceItem fake_evidence; fake_evidence.name = ui_evidence_name->text(); fake_evidence.description = ui_evidence_description->toPlainText(); fake_evidence.image = ui_evidence_image_name->text(); @@ -778,7 +776,7 @@ void Courtroom::evidence_switch(bool global) evidence_close(); current_evidence_global = global; is_presenting_evidence = false; - ui_evidence_present->set_image("present"); + ui_evidence_present->setImage("present"); local_evidence_list.clear(); if (current_evidence_global) { @@ -786,10 +784,10 @@ void Courtroom::evidence_switch(bool global) ui_evidence_present->show(); ui_evidence_save->hide(); ui_evidence_load->hide(); - ui_evidence_switch->set_image("evidence_global"); - ui_evidence->set_image("evidence_background"); - ui_evidence_overlay->set_image("evidence_overlay"); - ui_evidence_transfer->set_image("evidence_transfer"); + ui_evidence_switch->setImage("evidence_global"); + ui_evidence->setImage("evidence_background"); + ui_evidence_overlay->setImage("evidence_overlay"); + ui_evidence_transfer->setImage("evidence_transfer"); ui_evidence_transfer->setToolTip(tr("Transfer evidence to private inventory.")); ui_evidence_switch->setToolTip(tr("Current evidence is global. Click to switch to private.")); } @@ -799,10 +797,10 @@ void Courtroom::evidence_switch(bool global) ui_evidence_present->hide(); ui_evidence_save->show(); ui_evidence_load->show(); - ui_evidence_switch->set_image("evidence_private"); - ui_evidence->set_image("evidence_background_private"); - ui_evidence_overlay->set_image("evidence_overlay_private"); - ui_evidence_transfer->set_image("evidence_transfer_private"); + ui_evidence_switch->setImage("evidence_private"); + ui_evidence->setImage("evidence_background_private"); + ui_evidence_overlay->setImage("evidence_overlay_private"); + ui_evidence_transfer->setImage("evidence_transfer_private"); ui_evidence_transfer->setToolTip(tr("Transfer evidence to global inventory.")); ui_evidence_switch->setToolTip(tr("Current evidence is private. Click to switch to global.")); } @@ -873,7 +871,7 @@ void Courtroom::evidence_load(QString filename) continue; } - evi_type f_evi; + EvidenceItem f_evi; f_evi.name = inventory.value(evi + "/name", "").value(); f_evi.description = inventory.value(evi + "/description", "").value(); f_evi.image = inventory.value(evi + "/image", "empty.png").value(); @@ -906,7 +904,7 @@ void Courtroom::evidence_save(QString filename) inventory.sync(); } -bool Courtroom::compare_evidence_changed(evi_type evi_a, evi_type evi_b) +bool Courtroom::compare_evidence_changed(EvidenceItem evi_a, EvidenceItem evi_b) { return evi_a.name != evi_b.name || evi_a.image != evi_b.image || evi_a.description != evi_b.description; } diff --git a/src/interfaces/server_dialog.h b/src/interfaces/server_dialog.h deleted file mode 100644 index 98c57fee..00000000 --- a/src/interfaces/server_dialog.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include - -namespace AttorneyOnline -{ -namespace UI -{ -class FavoriteServerDialog : public QDialog -{ -public: - const QString DEFAULT_UI = "favorite_server_dialog.ui"; - const int TCP_INDEX = 0; - -private Q_SLOTS: - virtual void onSavePressed() = 0; - virtual void onCancelPressed() = 0; -}; -} // namespace UI -} // namespace AttorneyOnline diff --git a/src/lobby.cpp b/src/lobby.cpp index 6c64804d..6d42485d 100644 --- a/src/lobby.cpp +++ b/src/lobby.cpp @@ -4,9 +4,8 @@ #include "demoserver.h" #include "gui_utils.h" #include "networkmanager.h" -#include "widgets/add_server_dialog.h" #include "widgets/direct_connect_dialog.h" -#include "widgets/edit_server_dialog.h" +#include "widgets/server_editor_dialog.h" #include #include @@ -234,18 +233,26 @@ void Lobby::on_add_to_fav_released() void Lobby::on_add_server_to_fave_released() { - AddServerDialog l_dialog; - l_dialog.exec(); - list_favorites(); - reset_selection(); + ServerEditorDialog dialog; + if (dialog.exec()) + { + Options::getInstance().addFavorite(dialog.currentServerInfo()); + list_favorites(); + reset_selection(); + } } void Lobby::on_edit_favorite_released() { - EditServerDialog l_dialog(get_selected_server()); - l_dialog.exec(); - list_favorites(); - reset_selection(); + const int index = get_selected_server(); + ServerEditorDialog dialog; + dialog.loadServerInfo(Options::getInstance().favorites().at(index)); + if (dialog.exec()) + { + Options::getInstance().updateFavorite(dialog.currentServerInfo(), index); + list_favorites(); + reset_selection(); + } } void Lobby::on_remove_from_fav_released() @@ -308,7 +315,7 @@ void Lobby::on_about_clicked() void Lobby::on_server_list_clicked(QTreeWidgetItem *p_item, int column) { column = 0; - server_type f_server; + ServerInfo f_server; int n_server = p_item->text(column).toInt(); if (n_server == last_index) @@ -322,7 +329,7 @@ void Lobby::on_server_list_clicked(QTreeWidgetItem *p_item, int column) return; } - QVector f_server_list = ao_app->get_server_list(); + QVector f_server_list = ao_app->get_server_list(); if (n_server >= f_server_list.size()) { @@ -331,7 +338,7 @@ void Lobby::on_server_list_clicked(QTreeWidgetItem *p_item, int column) f_server = f_server_list.at(n_server); - set_server_description(f_server.desc); + set_server_description(f_server.description); ui_server_description_text->moveCursor(QTextCursor::Start); ui_server_description_text->ensureCursorVisible(); @@ -354,7 +361,7 @@ void Lobby::on_list_doubleclicked(QTreeWidgetItem *p_item, int column) void Lobby::on_favorite_tree_clicked(QTreeWidgetItem *p_item, int column) { column = 0; - server_type f_server; + ServerInfo f_server; int n_server = p_item->text(column).toInt(); if (n_server == last_index) @@ -372,7 +379,7 @@ void Lobby::on_favorite_tree_clicked(QTreeWidgetItem *p_item, int column) ui_edit_favorite_button->setEnabled(true); ui_remove_from_favorites_button->setEnabled(true); - QVector f_server_list = Options::getInstance().favorites(); + QVector f_server_list = Options::getInstance().favorites(); if (n_server >= f_server_list.size()) { @@ -381,7 +388,7 @@ void Lobby::on_favorite_tree_clicked(QTreeWidgetItem *p_item, int column) f_server = f_server_list.at(n_server); - set_server_description(f_server.desc); + set_server_description(f_server.description); ui_server_description_text->moveCursor(QTextCursor::Start); ui_server_description_text->ensureCursorVisible(); ui_server_player_count_lbl->setText(tr("Connecting...")); @@ -427,7 +434,7 @@ void Lobby::on_demo_clicked(QTreeWidgetItem *item, int column) QString l_filepath = (QApplication::applicationDirPath() + "/logs/%1/%2").arg(item->data(0, Qt::DisplayRole).toString(), item->data(1, Qt::DisplayRole).toString()); ao_app->demo_server->start_server(); - server_type demo_server; + ServerInfo demo_server; demo_server.ip = "127.0.0.1"; demo_server.port = ao_app->demo_server->port(); ao_app->demo_server->set_demo_file(l_filepath); @@ -458,7 +465,7 @@ void Lobby::list_servers() ui_serverlist_search->setText(""); int i = 0; - for (const server_type &i_server : qAsConst(ao_app->get_server_list())) + for (const ServerInfo &i_server : qAsConst(ao_app->get_server_list())) { QTreeWidgetItem *treeItem = new QTreeWidgetItem(ui_serverlist_tree); treeItem->setData(0, Qt::DisplayRole, i); @@ -476,7 +483,7 @@ void Lobby::list_favorites() ui_favorites_tree->clear(); int i = 0; - for (const server_type &i_server : Options::getInstance().favorites()) + for (const ServerInfo &i_server : Options::getInstance().favorites()) { QTreeWidgetItem *treeItem = new QTreeWidgetItem(ui_favorites_tree); treeItem->setData(0, Qt::DisplayRole, i); diff --git a/src/networkmanager.cpp b/src/networkmanager.cpp index a0b95d8c..e53b2917 100644 --- a/src/networkmanager.cpp +++ b/src/networkmanager.cpp @@ -51,23 +51,23 @@ void NetworkManager::ms_request_finished(QNetworkReply *reply) qDebug().noquote() << "Got valid response from" << reply->url(); - QVector server_list; + QVector server_list; const auto jsonEntries = json.array(); for (const auto &entryRef : jsonEntries) { const auto entry = entryRef.toObject(); - server_type server; + ServerInfo server; server.ip = entry["ip"].toString(); server.name = entry["name"].toString(); - server.desc = entry["description"].toString(tr("No description provided.")); + server.description = entry["description"].toString(tr("No description provided.")); if (entry["ws_port"].isDouble()) { - server.socket_type = WEBSOCKETS; + server.socket_type = WebSocketServerConnection; server.port = entry["ws_port"].toInt(); } else { - server.socket_type = TCP; + server.socket_type = TcpServerConnection; server.port = entry["port"].toInt(); } if (server.port != 0) @@ -137,7 +137,7 @@ void NetworkManager::request_document(MSDocumentType document_type, const std::f }); } -void NetworkManager::connect_to_server(server_type p_server) +void NetworkManager::connect_to_server(ServerInfo p_server) { disconnect_from_server(); @@ -146,9 +146,10 @@ void NetworkManager::connect_to_server(server_type p_server) switch (p_server.socket_type) { default: - p_server.socket_type = TCP; + p_server.socket_type = TcpServerConnection; [[fallthrough]]; - case TCP: + + case TcpServerConnection: qInfo() << "using TCP backend"; server_socket.tcp = new QTcpSocket(this); @@ -165,7 +166,8 @@ void NetworkManager::connect_to_server(server_type p_server) server_socket.tcp->connectToHost(p_server.ip, p_server.port); break; - case WEBSOCKETS: + + case WebSocketServerConnection: qInfo() << "using WebSockets backend"; server_socket.ws = new QWebSocket(QString(), QWebSocketProtocol::VersionLatest, this); @@ -190,7 +192,7 @@ void NetworkManager::connect_to_server(server_type p_server) void NetworkManager::join_to_server() { - ship_server_packet(AOPacket("askchaa").to_string()); + ship_server_packet(AOPacket("askchaa").toString()); } void NetworkManager::disconnect_from_server() @@ -202,11 +204,11 @@ void NetworkManager::disconnect_from_server() switch (active_connection_type) { - case TCP: + case TcpServerConnection: server_socket.tcp->close(); server_socket.tcp->deleteLater(); break; - case WEBSOCKETS: + case WebSocketServerConnection: server_socket.ws->close(QWebSocketProtocol::CloseCodeGoingAway); server_socket.ws->deleteLater(); break; @@ -217,14 +219,14 @@ void NetworkManager::disconnect_from_server() void NetworkManager::ship_server_packet(AOPacket p_packet) { - QString message = p_packet.to_string(true); + QString message = p_packet.toString(true); switch (active_connection_type) { - case TCP: + case TcpServerConnection: server_socket.tcp->write(message.toUtf8()); break; - case WEBSOCKETS: + case WebSocketServerConnection: server_socket.ws->sendTextMessage(message); break; } diff --git a/src/networkmanager.h b/src/networkmanager.h index 984f30f8..5cd87617 100644 --- a/src/networkmanager.h +++ b/src/networkmanager.h @@ -24,9 +24,8 @@ class NetworkManager : public QObject public: explicit NetworkManager(AOApplication *parent); - ~NetworkManager() = default; - void connect_to_server(server_type p_server); + void connect_to_server(ServerInfo p_server); void disconnect_from_server(); public Q_SLOTS: @@ -53,7 +52,7 @@ private: QWebSocket *ws; QTcpSocket *tcp; } server_socket; - connection_type active_connection_type; + ServerConnectionType active_connection_type; bool connected = false; QTimer *heartbeat_timer; diff --git a/src/options.cpp b/src/options.cpp index 8aec7fd4..80060764 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -633,9 +633,9 @@ void Options::clearConfig() config.clear(); } -QVector Options::favorites() +QVector Options::favorites() { - QVector serverlist; + QVector serverlist; auto grouplist = favorite.childGroups(); { // remove all negative and non-numbers @@ -656,13 +656,13 @@ QVector Options::favorites() for (const QString &group : qAsConst(grouplist)) { - server_type f_server; + ServerInfo f_server; favorite.beginGroup(group); f_server.ip = favorite.value("address", "127.0.0.1").toString(); f_server.port = favorite.value("port", 27016).toInt(); f_server.name = favorite.value("name", "Missing Name").toString(); - f_server.desc = favorite.value("desc", "No description").toString(); - f_server.socket_type = to_connection_type.value(favorite.value("protocol", "tcp").toString()); + f_server.description = favorite.value("desc", "No description").toString(); + f_server.socket_type = SERVER_CONNECTION_TYPE_STRING_MAP.value(favorite.value("protocol", "tcp").toString()); serverlist.append(std::move(f_server)); favorite.endGroup(); } @@ -670,7 +670,7 @@ QVector Options::favorites() return serverlist; } -void Options::setFavorites(QVector value) +void Options::setFavorites(QVector value) { favorite.clear(); for (int i = 0; i < value.size(); ++i) @@ -680,9 +680,9 @@ void Options::setFavorites(QVector value) favorite.setValue("name", fav_server.name); favorite.setValue("address", fav_server.ip); favorite.setValue("port", fav_server.port); - favorite.setValue("desc", fav_server.desc); + favorite.setValue("desc", fav_server.description); - if (fav_server.socket_type == TCP) + if (fav_server.socket_type == TcpServerConnection) { favorite.setValue("protocol", "tcp"); } @@ -697,20 +697,20 @@ void Options::setFavorites(QVector value) void Options::removeFavorite(int index) { - QVector l_favorites = favorites(); + QVector l_favorites = favorites(); l_favorites.remove(index); setFavorites(l_favorites); } -void Options::addFavorite(server_type server) +void Options::addFavorite(ServerInfo server) { int index = favorites().size(); favorite.beginGroup(QString::number(index)); favorite.setValue("name", server.name); favorite.setValue("address", server.ip); favorite.setValue("port", server.port); - favorite.setValue("desc", server.desc); - if (server.socket_type == TCP) + favorite.setValue("desc", server.description); + if (server.socket_type == TcpServerConnection) { favorite.setValue("protocol", "tcp"); } @@ -722,14 +722,14 @@ void Options::addFavorite(server_type server) favorite.sync(); } -void Options::updateFavorite(server_type server, int index) +void Options::updateFavorite(ServerInfo server, int index) { favorite.beginGroup(QString::number(index)); favorite.setValue("name", server.name); favorite.setValue("address", server.ip); favorite.setValue("port", server.port); - favorite.setValue("desc", server.desc); - if (server.socket_type == TCP) + favorite.setValue("desc", server.description); + if (server.socket_type == TcpServerConnection) { favorite.setValue("protocol", "tcp"); } diff --git a/src/options.h b/src/options.h index 07075557..088e34ba 100644 --- a/src/options.h +++ b/src/options.h @@ -252,13 +252,13 @@ public: void clearConfig(); // Loads the favorite servers - QVector favorites(); - void setFavorites(QVector value); + QVector favorites(); + void setFavorites(QVector value); // Interactions with favorite servers void removeFavorite(int index); - void addFavorite(server_type server); - void updateFavorite(server_type server, int index); + void addFavorite(ServerInfo server); + void updateFavorite(ServerInfo server, int index); // Theming Nonesense! QString getUIAsset(QString f_asset_name); diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index b4576f95..cdedd5ac 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -26,12 +26,12 @@ void AOApplication::append_to_demofile(QString packet_string) void AOApplication::server_packet_received(AOPacket p_packet) { - QStringList f_contents_encoded = p_packet.get_content(); - QString f_packet_encoded = p_packet.to_string(); + QStringList f_contents_encoded = p_packet.content(); + QString f_packet_encoded = p_packet.toString(); - QString header = p_packet.get_header(); - QStringList f_contents = p_packet.get_content(); - QString f_packet = p_packet.to_string(); + QString header = p_packet.header(); + QStringList f_contents = p_packet.content(); + QString f_packet = p_packet.toString(); bool log_to_demo = true; @@ -255,7 +255,7 @@ void AOApplication::server_packet_received(AOPacket p_packet) break; case 1: { - QVector favorite_list = Options::getInstance().favorites(); + QVector favorite_list = Options::getInstance().favorites(); if (selected_server >= 0 && selected_server < favorite_list.size()) { auto info = favorite_list.at(selected_server); @@ -335,7 +335,7 @@ void AOApplication::server_packet_received(AOPacket p_packet) sub_element = AOPacket::decode(sub_element); } - char_type f_char; + CharacterSlot f_char; f_char.name = sub_elements.at(0); if (sub_elements.size() >= 2) { @@ -503,14 +503,14 @@ void AOApplication::server_packet_received(AOPacket p_packet) { if (courtroom_constructed && courtroom_loaded) { - w_courtroom->chatmessage_enqueue(p_packet.get_content()); + w_courtroom->chatmessage_enqueue(p_packet.content()); } } else if (header == "MC") { if (courtroom_constructed && courtroom_loaded) { - w_courtroom->handle_song(&p_packet.get_content()); + w_courtroom->handle_song(&p_packet.content()); } } else if (header == "RT") @@ -542,7 +542,7 @@ void AOApplication::server_packet_received(AOPacket p_packet) { if (courtroom_constructed) { - QVector f_evi_list; + QVector f_evi_list; for (QString f_string : f_contents_encoded) { @@ -559,7 +559,7 @@ void AOApplication::server_packet_received(AOPacket p_packet) data = AOPacket::decode(data); } - evi_type f_evi; + EvidenceItem f_evi; f_evi.name = sub_contents.at(0); f_evi.description = sub_contents.at(1); f_evi.image = sub_contents.at(2); @@ -805,7 +805,7 @@ void AOApplication::server_packet_received(AOPacket p_packet) void AOApplication::send_server_packet(AOPacket p_packet) { - QString f_packet = p_packet.to_string(); + QString f_packet = p_packet.toString(); #ifdef DEBUG_NETWORK qDebug() << "S:" << p_packet.to_string(); #endif diff --git a/src/scrolltext.cpp b/src/scrolltext.cpp index 25090a7a..a45d6abd 100644 --- a/src/scrolltext.cpp +++ b/src/scrolltext.cpp @@ -17,12 +17,12 @@ ScrollText::ScrollText(QWidget *parent) QString ScrollText::text() const { - return _text; + return m_text; } void ScrollText::setText(QString text) { - _text = text; + m_text = text; updateText(); update(); } @@ -43,7 +43,7 @@ void ScrollText::updateText() { timer.stop(); #if QT_VERSION > QT_VERSION_CHECK(5, 11, 0) - singleTextWidth = fontMetrics().horizontalAdvance(_text); + singleTextWidth = fontMetrics().horizontalAdvance(m_text); #else singleTextWidth = fontMetrics().boundingRect(_text).width(); #endif @@ -53,12 +53,12 @@ void ScrollText::updateText() if (scrollEnabled) { scrollPos = -64; - staticText.setText(_text + _separator); + staticText.setText(m_text + _separator); timer.start(); } else { - staticText.setText(_text); + staticText.setText(m_text); } staticText.prepare(QTransform(), font()); diff --git a/src/scrolltext.h b/src/scrolltext.h index b7dd59f8..4571e25e 100644 --- a/src/scrolltext.h +++ b/src/scrolltext.h @@ -28,8 +28,7 @@ protected: virtual void resizeEvent(QResizeEvent *); private: - void updateText(); - QString _text; + QString m_text; QString _separator; QStaticText staticText; int singleTextWidth; @@ -41,6 +40,8 @@ private: QImage buffer; QTimer timer; + void updateText(); + private Q_SLOTS: virtual void timer_timeout(); }; diff --git a/src/widgets/add_server_dialog.cpp b/src/widgets/add_server_dialog.cpp deleted file mode 100644 index dfc302f0..00000000 --- a/src/widgets/add_server_dialog.cpp +++ /dev/null @@ -1,96 +0,0 @@ -#include "add_server_dialog.h" - -#include "datatypes.h" -#include "options.h" -#include "gui_utils.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -AddServerDialog::AddServerDialog() -{ - QUiLoader l_loader(this); - QFile l_uiFile(Options::getInstance().getUIAsset(DEFAULT_UI)); - - if (!l_uiFile.open(QFile::ReadOnly)) - { - qCritical() << "Unable to open file " << l_uiFile.fileName(); - return; - } - ui_widget = l_loader.load(&l_uiFile, this); - - auto l_layout = new QVBoxLayout(this); - l_layout->addWidget(ui_widget); - - FROM_UI(QLineEdit, server_display_name_edit); - FROM_UI(QLineEdit, server_hostname_edit); - FROM_UI(QSpinBox, server_port_box); - FROM_UI(QComboBox, server_protocol_box); - FROM_UI(QPlainTextEdit, server_description_edit); - FROM_UI(QDialogButtonBox, server_dialog_button); - connect(ui_server_dialog_button, &QDialogButtonBox::accepted, this, &::AddServerDialog::onSavePressed); - connect(ui_server_dialog_button, &QDialogButtonBox::rejected, this, &AddServerDialog::onCancelPressed); - - FROM_UI(QLabel, server_legacy_lbl); - FROM_UI(QLineEdit, server_legacy_edit); - FROM_UI(QPushButton, server_legacy_load_button); - connect(ui_server_legacy_load_button, &QPushButton::released, this, &AddServerDialog::parseLegacyServerEntry); -} - -void AddServerDialog::onSavePressed() -{ - server_type server; - server.name = ui_server_display_name_edit->text(); - server.ip = ui_server_hostname_edit->text(); - server.port = ui_server_port_box->value(); - server.desc = ui_server_description_edit->toPlainText(); - server.socket_type = ui_server_protocol_box->currentIndex() == TCP_INDEX ? TCP : WEBSOCKETS; - Options::getInstance().addFavorite(server); - close(); -} - -void AddServerDialog::onCancelPressed() -{ - close(); - deleteLater(); -} - -void AddServerDialog::parseLegacyServerEntry() -{ - QStringList l_legacy_entry = ui_server_legacy_edit->text().split(":"); - server_type l_server_entry; - if (l_legacy_entry.isEmpty()) - { - qDebug() << "Legacy entry empty."; - return; - } - - int l_item_count = l_legacy_entry.size(); - - if (l_item_count >= 3) - { - ui_server_hostname_edit->setText(l_legacy_entry.at(0)); - ui_server_port_box->setValue(l_legacy_entry.at(1).toInt()); - ui_server_display_name_edit->setText(l_legacy_entry.at(2)); - if (l_item_count >= 4) - { - if (l_legacy_entry.at(3) == "ws") - { - ui_server_protocol_box->setCurrentIndex(1); - } - else - { - ui_server_protocol_box->setCurrentIndex(0); - } - } - } -} diff --git a/src/widgets/add_server_dialog.h b/src/widgets/add_server_dialog.h deleted file mode 100644 index 5df868cc..00000000 --- a/src/widgets/add_server_dialog.h +++ /dev/null @@ -1,40 +0,0 @@ -#pragma once - -#include "interfaces/server_dialog.h" - -#include -#include -#include -#include -#include -#include -#include - -class AddServerDialog : public AttorneyOnline::UI::FavoriteServerDialog -{ - Q_OBJECT - -public: - AddServerDialog(); - ~AddServerDialog() = default; - -private: - QWidget *ui_widget; - - QLineEdit *ui_server_display_name_edit; - QLineEdit *ui_server_hostname_edit; - QSpinBox *ui_server_port_box; - QComboBox *ui_server_protocol_box; - QPlainTextEdit *ui_server_description_edit; - QDialogButtonBox *ui_server_dialog_button; - - // Legacy Server UI - QLabel *ui_server_legacy_lbl; - QLineEdit *ui_server_legacy_edit; - QPushButton *ui_server_legacy_load_button; - -private Q_SLOTS: - void onSavePressed() override; - void onCancelPressed() override; - void parseLegacyServerEntry(); -}; diff --git a/src/widgets/direct_connect_dialog.cpp b/src/widgets/direct_connect_dialog.cpp index 40e75b76..db4cde62 100644 --- a/src/widgets/direct_connect_dialog.cpp +++ b/src/widgets/direct_connect_dialog.cpp @@ -9,11 +9,16 @@ #include #include -DirectConnectDialog::DirectConnectDialog(NetworkManager *p_net_manager) - : net_manager(p_net_manager) +const QString DirectConnectDialog::UI_FILE_PATH = "direct_connect_dialog.ui"; +const QRegularExpression DirectConnectDialog::SCHEME_PATTERN{"^\\w+://.+$"}; +const int DirectConnectDialog::CONNECT_TIMEOUT = 5 * 1000; + +DirectConnectDialog::DirectConnectDialog(NetworkManager *netManager, QWidget *parent) + : QDialog(parent) + , net_manager(netManager) { QUiLoader l_loader(this); - QFile l_uiFile(Options::getInstance().getUIAsset(DEFAULT_UI)); + QFile l_uiFile(Options::getInstance().getUIAsset(UI_FILE_PATH)); if (!l_uiFile.open(QFile::ReadOnly)) { @@ -36,8 +41,8 @@ DirectConnectDialog::DirectConnectDialog(NetworkManager *p_net_manager) connect(net_manager, &NetworkManager::server_connected, this, &DirectConnectDialog::onServerConnected); - connect(&connect_timeout, &QTimer::timeout, this, &DirectConnectDialog::onConnectTimeout); - connect_timeout.setSingleShot(true); + connect(&m_connect_timeout, &QTimer::timeout, this, &DirectConnectDialog::onConnectTimeout); + m_connect_timeout.setSingleShot(true); } void DirectConnectDialog::onConnectPressed() @@ -53,9 +58,9 @@ void DirectConnectDialog::onConnectPressed() call_error(tr("Invalid URL.")); return; } - if (!to_connection_type.contains(l_url.scheme())) + if (!SERVER_CONNECTION_TYPE_STRING_MAP.contains(l_url.scheme())) { - call_error(tr("Scheme not recognized. Must be either of the following: ") % QStringList::fromVector(to_connection_type.keys().toVector()).join(", ")); + call_error(tr("Scheme not recognized. Must be either of the following: ") % QStringList::fromVector(SERVER_CONNECTION_TYPE_STRING_MAP.keys().toVector()).join(", ")); return; } if (l_url.port() == -1) @@ -63,8 +68,8 @@ void DirectConnectDialog::onConnectPressed() call_error(tr("Invalid server port.")); return; } - server_type l_server; - l_server.socket_type = to_connection_type[l_url.scheme()]; + ServerInfo l_server; + l_server.socket_type = SERVER_CONNECTION_TYPE_STRING_MAP[l_url.scheme()]; l_server.ip = l_url.host(); l_server.port = l_url.port(); l_server.name = "Direct Connection"; @@ -73,7 +78,7 @@ void DirectConnectDialog::onConnectPressed() ui_direct_connect_button->setEnabled(false); ui_direct_connection_status_lbl->setText("Connecting..."); ui_direct_connection_status_lbl->setStyleSheet("color : rgb(0,64,156)"); - connect_timeout.start(CONNECT_TIMEOUT); + m_connect_timeout.start(CONNECT_TIMEOUT); } void DirectConnectDialog::onServerConnected() diff --git a/src/widgets/direct_connect_dialog.h b/src/widgets/direct_connect_dialog.h index fc34f748..b2ac9be3 100644 --- a/src/widgets/direct_connect_dialog.h +++ b/src/widgets/direct_connect_dialog.h @@ -16,16 +16,17 @@ class DirectConnectDialog : public QDialog Q_OBJECT public: - DirectConnectDialog(NetworkManager *p_net_manager); - ~DirectConnectDialog() = default; - -private Q_SLOTS: - void onConnectPressed(); - void onServerConnected(); - void onConnectTimeout(); + DirectConnectDialog(NetworkManager *netManager, QWidget *parent = nullptr); private: + static const QString UI_FILE_PATH; + static const QRegularExpression SCHEME_PATTERN; + static const int CONNECT_TIMEOUT; + NetworkManager *net_manager; + QTimer m_connect_timeout; + + QWidget *ui_widget; QLineEdit *ui_direct_hostname_edit; @@ -33,11 +34,8 @@ private: QPushButton *ui_direct_connect_button; QPushButton *ui_direct_cancel_button; - QWidget *ui_widget; - QTimer connect_timeout; - - const int TCP_INDEX = 0; - const QRegularExpression SCHEME_PATTERN{"^\\w+://.+$"}; - const int CONNECT_TIMEOUT = 5 * 1000; - const QString DEFAULT_UI = "direct_connect_dialog.ui"; +private Q_SLOTS: + void onConnectPressed(); + void onServerConnected(); + void onConnectTimeout(); }; diff --git a/src/widgets/edit_server_dialog.cpp b/src/widgets/edit_server_dialog.cpp deleted file mode 100644 index a302f372..00000000 --- a/src/widgets/edit_server_dialog.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include "edit_server_dialog.h" - -#include "datatypes.h" -#include "gui_utils.h" -#include "options.h" - -#include -#include -#include - -EditServerDialog::EditServerDialog(int index) - : index(index) // lol -{ - QUiLoader l_loader(this); - QFile l_uiFile(Options::getInstance().getUIAsset(DEFAULT_UI)); - - if (!l_uiFile.open(QFile::ReadOnly)) - { - qCritical() << "Unable to open file " << l_uiFile.fileName(); - return; - } - ui_widget = l_loader.load(&l_uiFile, this); - - auto l_layout = new QVBoxLayout(this); - l_layout->addWidget(ui_widget); - - FROM_UI(QLineEdit, server_display_name_edit); - FROM_UI(QLineEdit, server_hostname_edit); - FROM_UI(QSpinBox, server_port_box); - FROM_UI(QComboBox, server_protocol_box); - FROM_UI(QPlainTextEdit, server_description_edit); - FROM_UI(QDialogButtonBox, server_dialog_button); - connect(ui_server_dialog_button, &QDialogButtonBox::accepted, this, &::EditServerDialog::onSavePressed); - connect(ui_server_dialog_button, &QDialogButtonBox::rejected, this, &EditServerDialog::onCancelPressed); - - // We don't need you. - FROM_UI(QLabel, server_legacy_lbl); - FROM_UI(QLineEdit, server_legacy_edit); - FROM_UI(QPushButton, server_legacy_load_button); - - ui_server_legacy_lbl->setVisible(false); - ui_server_legacy_edit->setVisible(false); - ui_server_legacy_load_button->setVisible(false); - - loadEntry(); -} - -void EditServerDialog::loadEntry() -{ - server_type server = Options::getInstance().favorites().at(index); - ui_server_display_name_edit->setText(server.name); - ui_server_hostname_edit->setText(server.ip); - ui_server_port_box->setValue(server.port); - ui_server_description_edit->setPlainText(server.desc); - ui_server_protocol_box->setCurrentIndex(server.socket_type); -} - -void EditServerDialog::onSavePressed() -{ - server_type server; - server.name = ui_server_display_name_edit->text(); - server.ip = ui_server_hostname_edit->text(); - server.port = ui_server_port_box->value(); - server.desc = ui_server_description_edit->toPlainText(); - server.socket_type = ui_server_protocol_box->currentIndex() == TCP_INDEX ? TCP : WEBSOCKETS; - Options::getInstance().updateFavorite(server, index); - close(); - deleteLater(); -} - -void EditServerDialog::onCancelPressed() -{ - close(); - deleteLater(); -} diff --git a/src/widgets/edit_server_dialog.h b/src/widgets/edit_server_dialog.h deleted file mode 100644 index 628ea606..00000000 --- a/src/widgets/edit_server_dialog.h +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once - -#include "interfaces/server_dialog.h" - -#include -#include -#include -#include -#include -#include -#include - -class EditServerDialog : public AttorneyOnline::UI::FavoriteServerDialog -{ - Q_OBJECT - -public: - EditServerDialog(int index); - ~EditServerDialog() = default; - -private: - QWidget *ui_widget; - - QLineEdit *ui_server_display_name_edit; - QLineEdit *ui_server_hostname_edit; - QSpinBox *ui_server_port_box; - QComboBox *ui_server_protocol_box; - QPlainTextEdit *ui_server_description_edit; - QDialogButtonBox *ui_server_dialog_button; - - // Legacy Server UI - QLabel *ui_server_legacy_lbl; - QLineEdit *ui_server_legacy_edit; - QPushButton *ui_server_legacy_load_button; - - int index; - void loadEntry(); - -private Q_SLOTS: - void onSavePressed() override; - void onCancelPressed() override; -}; diff --git a/src/widgets/server_editor_dialog.cpp b/src/widgets/server_editor_dialog.cpp new file mode 100644 index 00000000..102e9030 --- /dev/null +++ b/src/widgets/server_editor_dialog.cpp @@ -0,0 +1,93 @@ +#include "server_editor_dialog.h" + +#include "datatypes.h" +#include "gui_utils.h" +#include "options.h" + +#include +#include +#include + +const QString ServerEditorDialog::UI_FILE_PATH = "favorite_server_dialog.ui"; + +ServerEditorDialog::ServerEditorDialog(QWidget *parent) + : QDialog(parent) +{ + QUiLoader loader(this); + QFile file(Options::getInstance().getUIAsset(UI_FILE_PATH)); + + if (!file.open(QFile::ReadOnly)) + { + qFatal("Unable to open file %s", qPrintable(file.fileName())); + return; + } + ui_body = loader.load(&file, this); + + auto layout = new QVBoxLayout(this); + layout->addWidget(ui_body); + + FROM_UI(QLineEdit, name); + FROM_UI(QLineEdit, hostname); + FROM_UI(QSpinBox, port); + FROM_UI(QComboBox, protocol); + FROM_UI(QPlainTextEdit, description); + FROM_UI(QDialogButtonBox, button_box); + + FROM_UI(QLineEdit, legacy_edit); + FROM_UI(QPushButton, parse_legacy); + + connect(ui_parse_legacy, &QPushButton::released, this, &ServerEditorDialog::parseLegacyEntry); + + connect(ui_button_box, &QDialogButtonBox::accepted, this, &ServerEditorDialog::accept); + connect(ui_button_box, &QDialogButtonBox::rejected, this, &ServerEditorDialog::reject); +} + +ServerInfo ServerEditorDialog::currentServerInfo() const +{ + ServerInfo server; + server.name = ui_name->text(); + server.ip = ui_hostname->text(); + server.port = ui_port->value(); + server.description = ui_description->toPlainText(); + server.socket_type = ServerConnectionType(ui_protocol->currentIndex()); + return server; +} + +void ServerEditorDialog::loadServerInfo(ServerInfo server) +{ + ui_name->setText(server.name); + ui_hostname->setText(server.ip); + ui_port->setValue(server.port); + ui_description->setPlainText(server.description); + ui_protocol->setCurrentIndex(server.socket_type); +} + +void ServerEditorDialog::parseLegacyEntry() +{ + QStringList entry = ui_legacy_edit->text().split(":"); + ServerInfo l_server_entry; + if (entry.isEmpty()) + { + qDebug() << "Legacy entry empty."; + return; + } + + int item_count = entry.size(); + if (item_count >= 3) + { + ui_hostname->setText(entry.at(0)); + ui_port->setValue(entry.at(1).toInt()); + ui_name->setText(entry.at(2)); + if (item_count >= 4) + { + if (entry.at(3) == "ws") + { + ui_protocol->setCurrentIndex(1); + } + else + { + ui_protocol->setCurrentIndex(0); + } + } + } +} diff --git a/src/widgets/server_editor_dialog.h b/src/widgets/server_editor_dialog.h new file mode 100644 index 00000000..1ceb3524 --- /dev/null +++ b/src/widgets/server_editor_dialog.h @@ -0,0 +1,43 @@ +#pragma once + +#include "datatypes.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +class ServerEditorDialog : public QDialog +{ + Q_OBJECT + +public: + ServerEditorDialog(QWidget *parent = nullptr); + ServerEditorDialog(const ServerInfo &server, QWidget *parent = nullptr); + + ServerInfo currentServerInfo() const; + + void loadServerInfo(ServerInfo server); + +private: + static const QString UI_FILE_PATH; + + QWidget *ui_body; + + QLineEdit *ui_name; + QLineEdit *ui_hostname; + QSpinBox *ui_port; + QComboBox *ui_protocol; + QPlainTextEdit *ui_description; + QDialogButtonBox *ui_button_box; + + QLineEdit *ui_legacy_edit; + QPushButton *ui_parse_legacy; + +private Q_SLOTS: + void parseLegacyEntry(); +}; -- cgit From 1ef96383c8f7ed136a0e028aef0835b4838b5e95 Mon Sep 17 00:00:00 2001 From: TrickyLeifa Date: Fri, 17 May 2024 16:39:30 +0200 Subject: Lightly reworked `NetworkManager`, ... * Lightly reworked `NetworkManager` * Added new modules to handle various connection types. * TCP * WebSocket * Added general string splitter alias based on Qt version. * Replaced `lobby_constructed` and `courtroom_constructed` * Refactored and partially reimplemented the following classes: * `AOBlipPlayer` * `AOEmotePreview` * `AOMusicPlayer` * `AOSfxPlayer` * `AOTextArea` --- CMakeLists.txt | 6 + src/aoapplication.cpp | 33 +++-- src/aoapplication.h | 9 +- src/aoblipplayer.cpp | 70 +++++----- src/aoblipplayer.h | 23 ++-- src/aoemotepreview.cpp | 35 ++--- src/aoemotepreview.h | 11 +- src/aoevidencedisplay.cpp | 4 +- src/aomusicplayer.cpp | 160 ++++++++++++----------- src/aomusicplayer.h | 42 +++--- src/aopacket.cpp | 3 + src/aopacket.h | 3 + src/aosfxplayer.cpp | 140 ++++++++++++-------- src/aosfxplayer.h | 37 +++--- src/aotextarea.cpp | 24 ++-- src/aotextarea.h | 6 +- src/charselect.cpp | 2 +- src/courtroom.cpp | 117 ++++++++--------- src/datatypes.h | 8 ++ src/demoserver.cpp | 9 +- src/emotes.cpp | 7 +- src/main.cpp | 2 + src/net/netconnection.cpp | 5 + src/net/netconnection.h | 28 ++++ src/net/nettcpconnection.cpp | 102 +++++++++++++++ src/net/nettcpconnection.h | 31 +++++ src/net/netwebsocketconnection.cpp | 97 ++++++++++++++ src/net/netwebsocketconnection.h | 32 +++++ src/networkmanager.cpp | 162 ++++++----------------- src/networkmanager.h | 20 +-- src/packet_distribution.cpp | 242 +++++++++++++++++------------------ src/path_functions.cpp | 2 +- src/text_file_functions.cpp | 40 +++--- src/widgets/server_editor_dialog.cpp | 1 + 34 files changed, 896 insertions(+), 617 deletions(-) create mode 100644 src/net/netconnection.cpp create mode 100644 src/net/netconnection.h create mode 100644 src/net/nettcpconnection.cpp create mode 100644 src/net/nettcpconnection.h create mode 100644 src/net/netwebsocketconnection.cpp create mode 100644 src/net/netwebsocketconnection.h diff --git a/CMakeLists.txt b/CMakeLists.txt index ba09819d..f3684f1c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -77,6 +77,12 @@ add_executable(Attorney_Online src/lobby.cpp src/lobby.h src/main.cpp + src/net/netconnection.cpp + src/net/netconnection.h + src/net/nettcpconnection.cpp + src/net/nettcpconnection.h + src/net/netwebsocketconnection.cpp + src/net/netwebsocketconnection.h src/networkmanager.cpp src/networkmanager.h src/options.cpp diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index edd241b6..b0b90e22 100644 --- a/src/aoapplication.cpp +++ b/src/aoapplication.cpp @@ -40,16 +40,20 @@ AOApplication::~AOApplication() qInstallMessageHandler(original_message_handler); } +bool AOApplication::is_lobby_constructed() +{ + return w_lobby; +} + void AOApplication::construct_lobby() { - if (lobby_constructed) + if (is_lobby_constructed()) { qWarning() << "lobby was attempted constructed when it already exists"; return; } w_lobby = new Lobby(this, net_manager); - lobby_constructed = true; QRect geometry = QGuiApplication::primaryScreen()->geometry(); int x = (geometry.width() - w_lobby->width()) / 2; @@ -71,7 +75,7 @@ void AOApplication::construct_lobby() void AOApplication::destruct_lobby() { - if (!lobby_constructed) + if (!is_lobby_constructed()) { qWarning() << "lobby was attempted destructed when it did not exist"; return; @@ -79,19 +83,22 @@ void AOApplication::destruct_lobby() delete w_lobby; w_lobby = nullptr; - lobby_constructed = false; +} + +bool AOApplication::is_courtroom_constructed() +{ + return w_courtroom; } void AOApplication::construct_courtroom() { - if (courtroom_constructed) + if (is_courtroom_constructed()) { qWarning() << "courtroom was attempted constructed when it already exists"; return; } w_courtroom = new Courtroom(this); - courtroom_constructed = true; QRect geometry = QGuiApplication::primaryScreen()->geometry(); int x = (geometry.width() - w_courtroom->width()) / 2; @@ -110,7 +117,7 @@ void AOApplication::construct_courtroom() void AOApplication::destruct_courtroom() { - if (!courtroom_constructed) + if (!is_courtroom_constructed()) { qWarning() << "courtroom was attempted destructed when it did not exist"; return; @@ -118,7 +125,6 @@ void AOApplication::destruct_courtroom() delete w_courtroom; w_courtroom = nullptr; - courtroom_constructed = false; } QString AOApplication::get_version_string() @@ -128,9 +134,12 @@ QString AOApplication::get_version_string() void AOApplication::server_disconnected() { - if (courtroom_constructed) + if (is_courtroom_constructed()) { - call_notice(tr("Disconnected from server.")); + if (w_courtroom->isVisible()) + { + call_notice(tr("Disconnected from server.")); + } construct_lobby(); destruct_courtroom(); } @@ -145,12 +154,12 @@ void AOApplication::loading_cancelled() void AOApplication::call_settings_menu() { AOOptionsDialog *l_dialog = new AOOptionsDialog(this); - if (courtroom_constructed) + if (is_courtroom_constructed()) { connect(l_dialog, &AOOptionsDialog::reloadThemeRequest, w_courtroom, &Courtroom::on_reload_theme_clicked); } - if (lobby_constructed) + if (is_lobby_constructed()) {} l_dialog->exec(); delete l_dialog; diff --git a/src/aoapplication.h b/src/aoapplication.h index 1ff059b6..c8c24441 100644 --- a/src/aoapplication.h +++ b/src/aoapplication.h @@ -61,18 +61,17 @@ public: ~AOApplication(); NetworkManager *net_manager; - Lobby *w_lobby; - Courtroom *w_courtroom; + Lobby *w_lobby = nullptr; + Courtroom *w_courtroom = nullptr; AttorneyOnline::Discord *discord; QFont default_font; - bool lobby_constructed = false; - bool courtroom_constructed = false; - + bool is_lobby_constructed(); void construct_lobby(); void destruct_lobby(); + bool is_courtroom_constructed(); void construct_courtroom(); void destruct_courtroom(); diff --git a/src/aoblipplayer.cpp b/src/aoblipplayer.cpp index cf877fd7..3a13d787 100644 --- a/src/aoblipplayer.cpp +++ b/src/aoblipplayer.cpp @@ -1,64 +1,54 @@ #include "aoblipplayer.h" -AOBlipPlayer::AOBlipPlayer(AOApplication *p_ao_app) - : ao_app(p_ao_app) +AOBlipPlayer::AOBlipPlayer(AOApplication *ao_app) + : ao_app(ao_app) {} -void AOBlipPlayer::set_blips(QString p_sfx) +void AOBlipPlayer::setVolume(int value) { - QString f_path = ao_app->get_sfx_suffix(ao_app->get_sounds_path(p_sfx)); + m_volume = value; + updateInternalVolume(); +} - for (int n_stream = 0; n_stream < 5; ++n_stream) +void AOBlipPlayer::setMuted(bool enabled) +{ + m_muted = enabled; + updateInternalVolume(); +} + +void AOBlipPlayer::setBlip(QString blip) +{ + QString path = ao_app->get_sfx_suffix(ao_app->get_sounds_path(blip)); + for (int i = 0; i < STREAM_COUNT; ++i) { - BASS_StreamFree(m_stream_list[n_stream]); + BASS_StreamFree(m_stream[i]); - if (f_path.endsWith(".opus")) + if (path.endsWith(".opus")) { - m_stream_list[n_stream] = BASS_OPUS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); + m_stream[i] = BASS_OPUS_StreamCreateFile(FALSE, path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); } else { - m_stream_list[n_stream] = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); + m_stream[i] = BASS_StreamCreateFile(FALSE, path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); } } - set_volume_internal(m_volume); + updateInternalVolume(); } -void AOBlipPlayer::blip_tick() +void AOBlipPlayer::playBlip() { - int f_cycle = m_cycle++; - - if (m_cycle == 5) - { - m_cycle = 0; - } - - HSTREAM f_stream = m_stream_list[f_cycle]; - - BASS_ChannelSetDevice(f_stream, BASS_GetDevice()); - BASS_ChannelPlay(f_stream, false); -} - -void AOBlipPlayer::set_muted(bool toggle) -{ - m_muted = toggle; - set_volume_internal(m_volume); + HSTREAM stream = m_stream[m_cycle]; + BASS_ChannelSetDevice(stream, BASS_GetDevice()); + BASS_ChannelPlay(stream, false); + m_cycle = ++m_cycle % STREAM_COUNT; } -void AOBlipPlayer::set_volume(int p_value) +void AOBlipPlayer::updateInternalVolume() { - m_volume = static_cast(p_value) / 100; - set_volume_internal(m_volume); -} - -void AOBlipPlayer::set_volume_internal(qreal p_value) -{ - // If muted, volume will always be 0 - float volume = static_cast(p_value) * !m_muted; - - for (int n_stream = 0; n_stream < 5; ++n_stream) + float volume = m_muted ? 0.0f : (m_volume * 0.01); + for (int i = 0; i < STREAM_COUNT; ++i) { - BASS_ChannelSetAttribute(m_stream_list[n_stream], BASS_ATTRIB_VOL, volume); + BASS_ChannelSetAttribute(m_stream[i], BASS_ATTRIB_VOL, volume); } } diff --git a/src/aoblipplayer.h b/src/aoblipplayer.h index bc878b80..c33e08b3 100644 --- a/src/aoblipplayer.h +++ b/src/aoblipplayer.h @@ -13,19 +13,24 @@ class AOBlipPlayer { public: - AOBlipPlayer(AOApplication *p_ao_app); + static constexpr int STREAM_COUNT = 5; - void set_blips(QString p_sfx); - void blip_tick(); - void set_volume(int p_volume); - void set_muted(bool toggle); + AOBlipPlayer(AOApplication *ao_app); + + void setVolume(int value); + void setMuted(bool enabled); + + void setBlip(QString blip); + + void playBlip(); private: AOApplication *ao_app; - qreal m_volume = 0.0; - int m_cycle = 0; + + int m_volume = 0; bool m_muted = false; - HSTREAM m_stream_list[5]; + HSTREAM m_stream[STREAM_COUNT]{}; + int m_cycle = 0; - void set_volume_internal(qreal p_volume); + void updateInternalVolume(); }; diff --git a/src/aoemotepreview.cpp b/src/aoemotepreview.cpp index 8df35dd6..e427cb89 100644 --- a/src/aoemotepreview.cpp +++ b/src/aoemotepreview.cpp @@ -1,44 +1,45 @@ #include "aoemotepreview.h" -AOEmotePreview::AOEmotePreview(AOApplication *p_ao_app, QWidget *parent) +AOEmotePreview::AOEmotePreview(AOApplication *ao_app, QWidget *parent) : QWidget(parent) - , ao_app(p_ao_app) + , ao_app(ao_app) { + setWindowFlag(Qt::Tool); + setWindowFlag(Qt::WindowMinMaxButtonsHint, false); + ui_viewport = new QWidget(this); ui_vp_player_char = new CharLayer(ao_app, ui_viewport); ui_vp_player_char->setObjectName("ui_vp_player_char"); ui_vp_player_char->masked = false; ui_size_label = new QLabel(this); ui_size_label->setObjectName("ui_size_label"); - setWindowFlag(Qt::WindowMinMaxButtonsHint, false); - setWindowFlag(Qt::Tool); - this->resize(256, 192); } -void AOEmotePreview::set_widgets() +void AOEmotePreview::updateViewportGeometry() { - ui_viewport->resize(this->width(), this->height()); + ui_viewport->resize(size()); ui_vp_player_char->move_and_center(0, 0); ui_vp_player_char->combo_resize(ui_viewport->width(), ui_viewport->height()); - ui_size_label->setText(QString::number(this->width()) + "x" + QString::number(this->height())); + ui_size_label->setText(QString::number(width()) + "x" + QString::number(height())); } -void AOEmotePreview::play(QString emote, QString char_name, bool flipped, int self_offset, int self_offset_v) +void AOEmotePreview::display(QString character, QString emote, bool flipped, int xOffset, int yOffset) { + m_character = character; + m_emote = emote; ui_vp_player_char->stop(); ui_vp_player_char->set_flipped(flipped); - ui_vp_player_char->move_and_center(ui_viewport->width() * self_offset / 100, ui_viewport->height() * self_offset_v / 100); - ui_vp_player_char->load_image(emote, char_name, 0, false); + ui_vp_player_char->move_and_center(ui_viewport->width() * xOffset / 100, ui_viewport->height() * yOffset / 100); + ui_vp_player_char->load_image(emote, character, 0, false); ui_vp_player_char->set_play_once(false); - m_emote = emote; - m_char = char_name; - setWindowTitle(char_name + ": " + emote); + setWindowTitle(character + ": " + emote); } -void AOEmotePreview::resizeEvent(QResizeEvent *) +void AOEmotePreview::resizeEvent(QResizeEvent *event) { - set_widgets(); - ui_vp_player_char->load_image(m_emote, m_char, 0, false); + QWidget::resizeEvent(event); + updateViewportGeometry(); + ui_vp_player_char->load_image(m_emote, m_character, 0, false); } diff --git a/src/aoemotepreview.h b/src/aoemotepreview.h index ac86ff00..0cf88c9e 100644 --- a/src/aoemotepreview.h +++ b/src/aoemotepreview.h @@ -8,19 +8,20 @@ class AOEmotePreview : public QWidget Q_OBJECT public: - AOEmotePreview(AOApplication *p_ao_app, QWidget *parent = nullptr); + AOEmotePreview(AOApplication *ao_app, QWidget *parent = nullptr); - void set_widgets(); - void play(QString emote, QString char_name, bool flipped = false, int self_offset = 0, int self_offset_v = 0); + void display(QString character, QString emote, bool flipped = false, int xOffset = 0, int yOffset = 0); + + void updateViewportGeometry(); protected: - void resizeEvent(QResizeEvent *); + void resizeEvent(QResizeEvent *event); private: AOApplication *ao_app; + QString m_character; QString m_emote; - QString m_char; QWidget *ui_viewport; BackgroundLayer *ui_vp_background; diff --git a/src/aoevidencedisplay.cpp b/src/aoevidencedisplay.cpp index 6a5cf95c..489699ec 100644 --- a/src/aoevidencedisplay.cpp +++ b/src/aoevidencedisplay.cpp @@ -24,7 +24,7 @@ void AOEvidenceDisplay::show_evidence(int p_index, QString p_evidence_image, boo m_last_evidence_index = p_index; - m_sfx_player->set_volume(p_volume); + m_sfx_player->setVolume(p_volume); QString gif_name; QString icon_identifier; @@ -56,7 +56,7 @@ void AOEvidenceDisplay::show_evidence(int p_index, QString p_evidence_image, boo m_evidence_movie->max_duration = 1000; m_evidence_movie->set_play_once(true); m_evidence_movie->load_image(gif_name, ""); - m_sfx_player->play(ao_app->get_court_sfx("evidence_present")); + m_sfx_player->findAndPlaySfx(ao_app->get_court_sfx("evidence_present")); } void AOEvidenceDisplay::reset() diff --git a/src/aomusicplayer.cpp b/src/aomusicplayer.cpp index b9e6ab98..4265a463 100644 --- a/src/aomusicplayer.cpp +++ b/src/aomusicplayer.cpp @@ -9,48 +9,52 @@ #include #include -AOMusicPlayer::AOMusicPlayer(AOApplication *p_ao_app) - : ao_app(p_ao_app) +AOMusicPlayer::AOMusicPlayer(AOApplication *ao_app) + : ao_app(ao_app) {} AOMusicPlayer::~AOMusicPlayer() { - for (int n_stream = 0; n_stream < CHANNEL_COUNT; ++n_stream) + for (int n_stream = 0; n_stream < STREAM_COUNT; ++n_stream) { BASS_ChannelStop(m_stream_list[n_stream]); } } -QString AOMusicPlayer::play(QString p_song, int channel, bool loop, int effect_flags) +QString AOMusicPlayer::playStream(QString song, int streamId, bool loopEnabled, int effectFlags) { - channel = channel % CHANNEL_COUNT; - if (channel < 0) // wtf? + if (!ensureValidStreamId(streamId)) { return "[ERROR] Invalid Channel"; } - unsigned int flags = BASS_STREAM_PRESCAN | BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE; - unsigned int streaming_flags = BASS_STREAM_AUTOFREE; - if (loop) + + quint32 flags = BASS_STREAM_AUTOFREE; + if (loopEnabled) { flags |= BASS_SAMPLE_LOOP; - streaming_flags |= BASS_SAMPLE_LOOP; } - QString f_path = p_song; + + QString f_path = song; DWORD newstream; if (f_path.startsWith("http")) { if (!Options::getInstance().streamingEnabled()) { - BASS_ChannelStop(m_stream_list[channel]); + BASS_ChannelStop(m_stream_list[streamId]); return QObject::tr("[MISSING] Streaming disabled."); } QUrl l_url = QUrl(f_path); - newstream = BASS_StreamCreateURL(l_url.toEncoded().toStdString().c_str(), 0, streaming_flags, nullptr, 0); + newstream = BASS_StreamCreateURL(l_url.toEncoded().toStdString().c_str(), 0, flags, nullptr, 0); } else { - f_path = ao_app->get_real_path(ao_app->get_music_path(p_song)); - if (f_path.endsWith(".mo3") || f_path.endsWith(".xm") || f_path.endsWith(".mod") || f_path.endsWith(".s3m") || f_path.endsWith(".it") || f_path.endsWith(".mtm") || f_path.endsWith(".umx")) + flags |= BASS_STREAM_PRESCAN | BASS_UNICODE | BASS_ASYNCFILE; + + f_path = ao_app->get_real_path(ao_app->get_music_path(song)); + + QString extension = f_path.split('.').last(); + static const QStringList VALID_EXTENSION_LIST{"mo3", "xm", "mod", "s3m", "it", "mtm", "umx"}; + if (VALID_EXTENSION_LIST.contains(extension, Qt::CaseInsensitive)) { newstream = BASS_MusicLoad(FALSE, f_path.utf16(), 0, 0, flags, 1); } @@ -60,18 +64,17 @@ QString AOMusicPlayer::play(QString p_song, int channel, bool loop, int effect_f } } - int error_code = BASS_ErrorGetCode(); - + int error = BASS_ErrorGetCode(); if (Options::getInstance().audioOutputDevice() != "default") { - BASS_ChannelSetDevice(m_stream_list[channel], BASS_GetDevice()); + BASS_ChannelSetDevice(m_stream_list[streamId], BASS_GetDevice()); } - QString d_path = f_path + ".txt"; + m_loop_start[streamId] = 0; + m_loop_end[streamId] = 0; - m_loop_start[channel] = 0; - m_loop_end[channel] = 0; - if (loop && file_exists(d_path)) // Contains loop/etc. information file + QString d_path = f_path + ".txt"; + if (loopEnabled && file_exists(d_path)) // Contains loop/etc. information file { QStringList lines = ao_app->read_file(d_path).split("\n"); bool seconds_mode = false; @@ -90,6 +93,7 @@ QString AOMusicPlayer::play(QString p_song, int channel, bool loop, int effect_f seconds_mode = true; // Use new epic behavior continue; } + continue; } @@ -114,25 +118,25 @@ QString AOMusicPlayer::play(QString p_song, int channel, bool loop, int effect_f } if (arg == "loop_start") { - m_loop_start[channel] = bytes; + m_loop_start[streamId] = bytes; } else if (arg == "loop_length") { - m_loop_end[channel] = m_loop_start[channel] + bytes; + m_loop_end[streamId] = m_loop_start[streamId] + bytes; } else if (arg == "loop_end") { - m_loop_end[channel] = bytes; + m_loop_end[streamId] = bytes; } } - qDebug() << "Found data file for song" << p_song << "length" << BASS_ChannelGetLength(newstream, BASS_POS_BYTE) << "loop start" << m_loop_start[channel] << "loop end" << m_loop_end[channel]; + qDebug() << "Found data file for song" << song << "length" << BASS_ChannelGetLength(newstream, BASS_POS_BYTE) << "loop start" << m_loop_start[streamId] << "loop end" << m_loop_end[streamId]; } - if (BASS_ChannelIsActive(m_stream_list[channel]) == BASS_ACTIVE_PLAYING) + if (BASS_ChannelIsActive(m_stream_list[streamId]) == BASS_ACTIVE_PLAYING) { - DWORD oldstream = m_stream_list[channel]; + DWORD oldstream = m_stream_list[streamId]; - if (effect_flags & SYNC_POS) + if (effectFlags & SYNC_POS) { BASS_ChannelLock(oldstream, true); // Sync it with the new sample @@ -140,7 +144,7 @@ QString AOMusicPlayer::play(QString p_song, int channel, bool loop, int effect_f BASS_ChannelLock(oldstream, false); } - if ((effect_flags & FADE_OUT) && m_volume[channel] > 0) + if ((effectFlags & FADE_OUT) && m_volume[streamId] > 0) { // Fade out the other sample and stop it (due to -1) BASS_ChannelSlideAttribute(oldstream, BASS_ATTRIB_VOL | BASS_SLIDE_LOG, -1, 4000); @@ -152,47 +156,47 @@ QString AOMusicPlayer::play(QString p_song, int channel, bool loop, int effect_f } else { - BASS_ChannelStop(m_stream_list[channel]); + BASS_ChannelStop(m_stream_list[streamId]); } - m_stream_list[channel] = newstream; + m_stream_list[streamId] = newstream; BASS_ChannelPlay(newstream, false); - if (effect_flags & FADE_IN) + if (effectFlags & FADE_IN) { // Fade in our sample BASS_ChannelSetAttribute(newstream, BASS_ATTRIB_VOL, 0); - BASS_ChannelSlideAttribute(newstream, BASS_ATTRIB_VOL, static_cast(m_volume[channel] / 100.0f), 1000); + BASS_ChannelSlideAttribute(newstream, BASS_ATTRIB_VOL, static_cast(m_volume[streamId] / 100.0f), 1000); } else { - this->set_volume(m_volume[channel], channel); + this->setStreamVolume(m_volume[streamId], streamId); } BASS_ChannelSetSync(newstream, BASS_SYNC_DEV_FAIL, 0, ao_app->BASSreset, 0); - this->set_looping(loop, channel); // Have to do this here due to any - // crossfading-related changes, etc. + this->setStreamLooping(loopEnabled, streamId); // Have to do this here due to any + // crossfading-related changes, etc. - bool is_stop = (p_song == "~stop.mp3"); - QString p_song_clear = QUrl(p_song).fileName(); + bool is_stop = (song == "~stop.mp3"); + QString p_song_clear = QUrl(song).fileName(); p_song_clear = p_song_clear.left(p_song_clear.lastIndexOf('.')); - if (is_stop && channel == 0) + if (is_stop && streamId == 0) { // don't send text on channels besides 0 return QObject::tr("None"); } - if (error_code == BASS_ERROR_HANDLE) + if (error == BASS_ERROR_HANDLE) { // Cheap hack to see if file missing return QObject::tr("[MISSING] %1").arg(p_song_clear); } - if (p_song.startsWith("http") && channel == 0) + if (song.startsWith("http") && streamId == 0) { return QObject::tr("[STREAM] %1").arg(p_song_clear); } - if (channel == 0) + if (streamId == 0) { return p_song_clear; } @@ -200,36 +204,37 @@ QString AOMusicPlayer::play(QString p_song, int channel, bool loop, int effect_f return ""; } -void AOMusicPlayer::stop(int channel) -{ - BASS_ChannelStop(m_stream_list[channel]); -} - -void AOMusicPlayer::set_muted(bool toggle) +void AOMusicPlayer::setMuted(bool enabled) { - m_muted = toggle; + m_muted = enabled; // Update all volume based on the mute setting - for (int n_stream = 0; n_stream < CHANNEL_COUNT; ++n_stream) + for (int n_stream = 0; n_stream < STREAM_COUNT; ++n_stream) { - set_volume(m_volume[n_stream], n_stream); + setStreamVolume(m_volume[n_stream], n_stream); } } -void AOMusicPlayer::set_volume(int p_value, int channel) +void AOMusicPlayer::setStreamVolume(int value, int streamId) { - m_volume[channel] = p_value; + if (!ensureValidStreamId(streamId)) + { + qWarning().noquote() << QObject::tr("Invalid stream ID '%2'").arg(streamId); + return; + } + + m_volume[streamId] = value; // If muted, volume will always be 0 - float volume = (m_volume[channel] / 100.0f) * !m_muted; - if (channel < 0) + float volume = (m_volume[streamId] / 100.0f) * !m_muted; + if (streamId < 0) { - for (int n_stream = 0; n_stream < CHANNEL_COUNT; ++n_stream) + for (int n_stream = 0; n_stream < STREAM_COUNT; ++n_stream) { BASS_ChannelSetAttribute(m_stream_list[n_stream], BASS_ATTRIB_VOL, volume); } } else { - BASS_ChannelSetAttribute(m_stream_list[channel], BASS_ATTRIB_VOL, volume); + BASS_ChannelSetAttribute(m_stream_list[streamId], BASS_ATTRIB_VOL, volume); } } @@ -243,37 +248,48 @@ void CALLBACK loopProc(HSYNC handle, DWORD channel, DWORD data, void *user) BASS_ChannelLock(channel, false); } -void AOMusicPlayer::set_looping(bool loop_song, int channel) +void AOMusicPlayer::setStreamLooping(bool enabled, int streamId) { - if (!loop_song) + if (!ensureValidStreamId(streamId)) { - if (BASS_ChannelFlags(m_stream_list[channel], 0, 0) & BASS_SAMPLE_LOOP) + qWarning().noquote() << QObject::tr("Invalid stream ID '%2'").arg(streamId); + return; + } + + if (!enabled) + { + if (BASS_ChannelFlags(m_stream_list[streamId], 0, 0) & BASS_SAMPLE_LOOP) { - BASS_ChannelFlags(m_stream_list[channel], 0, + BASS_ChannelFlags(m_stream_list[streamId], 0, BASS_SAMPLE_LOOP); // remove the LOOP flag } - BASS_ChannelRemoveSync(m_stream_list[channel], m_loop_sync[channel]); - m_loop_sync[channel] = 0; + BASS_ChannelRemoveSync(m_stream_list[streamId], m_loop_sync[streamId]); + m_loop_sync[streamId] = 0; return; } - BASS_ChannelFlags(m_stream_list[channel], BASS_SAMPLE_LOOP, + BASS_ChannelFlags(m_stream_list[streamId], BASS_SAMPLE_LOOP, BASS_SAMPLE_LOOP); // set the LOOP flag - if (m_loop_sync[channel] != 0) + if (m_loop_sync[streamId] != 0) { - BASS_ChannelRemoveSync(m_stream_list[channel], - m_loop_sync[channel]); // remove the sync - m_loop_sync[channel] = 0; + BASS_ChannelRemoveSync(m_stream_list[streamId], + m_loop_sync[streamId]); // remove the sync + m_loop_sync[streamId] = 0; } - if (m_loop_start[channel] < m_loop_end[channel]) + if (m_loop_start[streamId] < m_loop_end[streamId]) { // Loop when the endpoint is reached. - m_loop_sync[channel] = BASS_ChannelSetSync(m_stream_list[channel], BASS_SYNC_POS | BASS_SYNC_MIXTIME, m_loop_end[channel], loopProc, &m_loop_start[channel]); + m_loop_sync[streamId] = BASS_ChannelSetSync(m_stream_list[streamId], BASS_SYNC_POS | BASS_SYNC_MIXTIME, m_loop_end[streamId], loopProc, &m_loop_start[streamId]); } else { // Loop when the end of the file is reached. - m_loop_sync[channel] = BASS_ChannelSetSync(m_stream_list[channel], BASS_SYNC_END | BASS_SYNC_MIXTIME, 0, loopProc, &m_loop_start[channel]); + m_loop_sync[streamId] = BASS_ChannelSetSync(m_stream_list[streamId], BASS_SYNC_END | BASS_SYNC_MIXTIME, 0, loopProc, &m_loop_start[streamId]); } } + +bool AOMusicPlayer::ensureValidStreamId(int streamId) +{ + return (streamId >= 0 && streamId < STREAM_COUNT); +} diff --git a/src/aomusicplayer.h b/src/aomusicplayer.h index 248a45e3..707d64ad 100644 --- a/src/aomusicplayer.h +++ b/src/aomusicplayer.h @@ -7,38 +7,32 @@ class AOMusicPlayer { public: - // Channel 0 = music - // Channel 1 = ambience - static constexpr int CHANNEL_COUNT = 2; + // 0 = music + // 1 = ambience + static constexpr int STREAM_COUNT = 2; - AOMusicPlayer(AOApplication *p_ao_app); + explicit AOMusicPlayer(AOApplication *ao_app); virtual ~AOMusicPlayer(); - void set_volume(int p_value, int channel = -1); - void set_looping(bool loop_song, int channel = 0); - void set_muted(bool toggle); + void setMuted(bool enabled); - QFutureWatcher music_watcher; + QString playStream(QString song, int streamId, bool loopEnabled, int effectFlags); -public Q_SLOTS: - QString play(QString p_song, int channel = 0, bool loop = false, int effect_flags = 0); - void stop(int channel = 0); + void setStreamVolume(int value, int streamId); + void setStreamLooping(bool enabled, int streamId); + + QFutureWatcher m_watcher; private: AOApplication *ao_app; bool m_muted = false; - int m_volume[CHANNEL_COUNT] = {0, 0}; - HSTREAM m_stream_list[CHANNEL_COUNT]; - HSYNC m_loop_sync[CHANNEL_COUNT]; - - /** - * @brief The starting sample of the AB-Loop. - */ - unsigned int m_loop_start[CHANNEL_COUNT] = {0, 0}; - - /** - * @brief The end sample of the AB-Loop. - */ - unsigned int m_loop_end[CHANNEL_COUNT] = {0, 0}; + + int m_volume[STREAM_COUNT]{}; + HSTREAM m_stream_list[STREAM_COUNT]{}; + HSYNC m_loop_sync[STREAM_COUNT]{}; + quint32 m_loop_start[STREAM_COUNT]{}; + quint32 m_loop_end[STREAM_COUNT]{}; + + bool ensureValidStreamId(int streamId); }; diff --git a/src/aopacket.cpp b/src/aopacket.cpp index 705bc6a1..cb924cb5 100644 --- a/src/aopacket.cpp +++ b/src/aopacket.cpp @@ -10,6 +10,9 @@ QString AOPacket::decode(QString data) return data.replace("", "#").replace("", "%").replace("", "$").replace("", "&"); } +AOPacket::AOPacket() +{} + AOPacket::AOPacket(QString header) : m_header(header) {} diff --git a/src/aopacket.h b/src/aopacket.h index 11b1dfd0..91fb1f7e 100644 --- a/src/aopacket.h +++ b/src/aopacket.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include @@ -9,6 +10,7 @@ public: static QString encode(QString data); static QString decode(QString data); + AOPacket(); AOPacket(QString header); AOPacket(QString header, QStringList content); @@ -21,3 +23,4 @@ private: QString m_header; QStringList m_content; }; +Q_DECLARE_METATYPE(AOPacket) diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp index 1b9be002..96b5d454 100644 --- a/src/aosfxplayer.cpp +++ b/src/aosfxplayer.cpp @@ -2,111 +2,135 @@ #include "file_functions.h" -AOSfxPlayer::AOSfxPlayer(AOApplication *p_ao_app) - : ao_app(p_ao_app) +AOSfxPlayer::AOSfxPlayer(AOApplication *ao_app) + : ao_app(ao_app) {} -void AOSfxPlayer::clear() +int AOSfxPlayer::volume() { - for (int n_stream = 0; n_stream < CHANNEL_COUNT; ++n_stream) - { - BASS_ChannelStop(m_stream_list[n_stream]); - } - set_volume_internal(m_volume); + return m_volume * 100; } -void AOSfxPlayer::loop_clear() +void AOSfxPlayer::setVolume(int value) { - for (int n_stream = 0; n_stream < CHANNEL_COUNT; ++n_stream) - { - if ((BASS_ChannelFlags(m_stream_list[n_stream], 0, 0) & BASS_SAMPLE_LOOP)) - { - BASS_ChannelStop(m_stream_list[n_stream]); - } - } - set_volume_internal(m_volume); + m_volume = value; + updateInternalVolume(); } -void AOSfxPlayer::play(QString p_sfx, QString p_character, QString p_misc) +void AOSfxPlayer::play(QString path) { - for (int i = 0; i < CHANNEL_COUNT; ++i) + for (int i = 0; i < STREAM_COUNT; ++i) { - if (BASS_ChannelIsActive(m_stream_list[i]) == BASS_ACTIVE_PLAYING) + if (BASS_ChannelIsActive(m_stream[i]) == BASS_ACTIVE_PLAYING) { - m_channel = (i + 1) % CHANNEL_COUNT; + m_current_stream_id = (i + 1) % STREAM_COUNT; } else { - m_channel = i; + m_current_stream_id = i; break; } } - QString path = ao_app->get_sfx(p_sfx, p_misc, p_character); + if (path.endsWith(".opus")) { - m_stream_list[m_channel] = BASS_OPUS_StreamCreateFile(FALSE, path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); + m_stream[m_current_stream_id] = BASS_OPUS_StreamCreateFile(FALSE, path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); } else { - m_stream_list[m_channel] = BASS_StreamCreateFile(FALSE, path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); + m_stream[m_current_stream_id] = BASS_StreamCreateFile(FALSE, path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); } - set_volume_internal(m_volume); + updateInternalVolume(); - BASS_ChannelSetDevice(m_stream_list[m_channel], BASS_GetDevice()); - BASS_ChannelPlay(m_stream_list[m_channel], false); - BASS_ChannelSetSync(m_stream_list[m_channel], BASS_SYNC_DEV_FAIL, 0, ao_app->BASSreset, 0); + BASS_ChannelSetDevice(m_stream[m_current_stream_id], BASS_GetDevice()); + BASS_ChannelPlay(m_stream[m_current_stream_id], false); + BASS_ChannelSetSync(m_stream[m_current_stream_id], BASS_SYNC_DEV_FAIL, 0, ao_app->BASSreset, 0); } -void AOSfxPlayer::stop(int channel) +void AOSfxPlayer::findAndPlaySfx(QString sfx) { - if (channel == -1) + // TODO replace this with proper pathing tools + findAndPlayCharacterShout(sfx, QString(), QString()); +} + +void AOSfxPlayer::findAndPlayCharacterSfx(QString sfx, QString character) +{ + // TODO replace this with proper pathing tools + findAndPlayCharacterShout(sfx, character, QString()); +} + +void AOSfxPlayer::findAndPlayCharacterShout(QString shout, QString character, QString group) +{ + QString file_path = ao_app->get_sfx(shout, group, character); + if (file_exists(file_path)) { - channel = m_channel; + play(file_path); } - BASS_ChannelStop(m_stream_list[channel]); } -void AOSfxPlayer::set_muted(bool toggle) +void AOSfxPlayer::stopAll() { - m_muted = toggle; - // Update the audio volume - set_volume_internal(m_volume); + for (int i = 0; i < STREAM_COUNT; ++i) + { + stop(i); + } } -int AOSfxPlayer::get_volume() +void AOSfxPlayer::stopAllLoopingStream() { - return m_volume * 100; + for (int i = 0; i < STREAM_COUNT; ++i) + { + if (BASS_ChannelFlags(m_stream[i], 0, 0) & BASS_SAMPLE_LOOP) + { + stop(i); + } + } } -void AOSfxPlayer::set_volume(qreal p_value) +void AOSfxPlayer::stop(int streamId) { - m_volume = p_value * 0.01; - set_volume_internal(m_volume); + streamId = maybeFetchCurrentStreamId(streamId); + if (!ensureValidStreamId(streamId)) + { + qWarning().noquote() << QObject::tr("Failed to stop stream; invalid stream ID '%1'").arg(streamId); + return; + } + + BASS_ChannelStop(m_stream[streamId]); } -void AOSfxPlayer::set_volume_internal(qreal p_value) +void AOSfxPlayer::setMuted(bool toggle) { - // If muted, volume will always be 0 - float volume = static_cast(p_value) * !m_muted; - for (int n_stream = 0; n_stream < CHANNEL_COUNT; ++n_stream) + m_muted = toggle; + // Update the audio volume + updateInternalVolume(); +} + +void AOSfxPlayer::updateInternalVolume() +{ + float volume = m_muted ? 0.0f : m_volume; + for (int i = 0; i < STREAM_COUNT; ++i) { - BASS_ChannelSetAttribute(m_stream_list[n_stream], BASS_ATTRIB_VOL, volume); + BASS_ChannelSetAttribute(m_stream[i], BASS_ATTRIB_VOL, volume); } } -void AOSfxPlayer::set_looping(bool toggle, int channel) +void AOSfxPlayer::setLooping(bool toggle, int streamId) { - if (channel == -1) + streamId = maybeFetchCurrentStreamId(streamId); + if (!ensureValidStreamId(streamId)) { - channel = m_channel; + qWarning().noquote() << QObject::tr("Failed to setup stream loop; invalid stream ID '%1'").arg(streamId); + return; } + m_looping = toggle; - if (BASS_ChannelFlags(m_stream_list[channel], 0, 0) & BASS_SAMPLE_LOOP) + if (BASS_ChannelFlags(m_stream[streamId], 0, 0) & BASS_SAMPLE_LOOP) { if (m_looping == false) { - BASS_ChannelFlags(m_stream_list[channel], 0, + BASS_ChannelFlags(m_stream[streamId], 0, BASS_SAMPLE_LOOP); // remove the LOOP flag } } @@ -114,8 +138,18 @@ void AOSfxPlayer::set_looping(bool toggle, int channel) { if (m_looping == true) { - BASS_ChannelFlags(m_stream_list[channel], BASS_SAMPLE_LOOP, + BASS_ChannelFlags(m_stream[streamId], BASS_SAMPLE_LOOP, BASS_SAMPLE_LOOP); // set the LOOP flag } } } + +int AOSfxPlayer::maybeFetchCurrentStreamId(int streamId) +{ + return streamId == -1 ? m_current_stream_id : streamId; +} + +bool AOSfxPlayer::ensureValidStreamId(int streamId) +{ + return streamId >= 0 && streamId < STREAM_COUNT; +} diff --git a/src/aosfxplayer.h b/src/aosfxplayer.h index 6a71a71c..59969569 100644 --- a/src/aosfxplayer.h +++ b/src/aosfxplayer.h @@ -11,28 +11,35 @@ class AOSfxPlayer { public: - static constexpr int CHANNEL_COUNT = 5; + static constexpr int STREAM_COUNT = 5; - AOSfxPlayer(AOApplication *p_ao_app); + AOSfxPlayer(AOApplication *ao_app); - int get_volume(); + int volume(); + void setVolume(int value); - void clear(); - void loop_clear(); - void play(QString p_sfx, QString p_char = QString(), QString shout = QString()); - void stop(int channel = -1); - void set_volume(qreal p_volume); - void set_looping(bool toggle, int channel = -1); - void set_muted(bool toggle); + void play(QString path); + void stop(int streamId = -1); + void stopAll(); + void stopAllLoopingStream(); + + void findAndPlaySfx(QString sfx); + void findAndPlayCharacterSfx(QString sfx, QString character); + void findAndPlayCharacterShout(QString shout, QString character, QString group); + + void setMuted(bool toggle); + void setLooping(bool toggle, int streamId = -1); private: AOApplication *ao_app; - qreal m_volume = 0.0; - bool m_looping = true; + int m_volume = 0; bool m_muted = false; - int m_channel = 0; - HSTREAM m_stream_list[CHANNEL_COUNT]{}; + bool m_looping = true; + HSTREAM m_stream[STREAM_COUNT]{}; + int m_current_stream_id = 0; - void set_volume_internal(qreal p_volume); + int maybeFetchCurrentStreamId(int streamId); + bool ensureValidStreamId(int streamId); + void updateInternalVolume(); }; diff --git a/src/aotextarea.cpp b/src/aotextarea.cpp index cf651244..08885da8 100644 --- a/src/aotextarea.cpp +++ b/src/aotextarea.cpp @@ -1,16 +1,16 @@ #include "aotextarea.h" -AOTextArea::AOTextArea(QWidget *p_parent) - : AOTextArea(5000, p_parent) +AOTextArea::AOTextArea(QWidget *parent) + : AOTextArea(5000, parent) {} -AOTextArea::AOTextArea(int p_log_length, QWidget *p_parent) - : QTextBrowser(p_parent) +AOTextArea::AOTextArea(int maximumLogLenth, QWidget *parent) + : QTextBrowser(parent) { - this->document()->setMaximumBlockCount(p_log_length); + document()->setMaximumBlockCount(maximumLogLenth); } -void AOTextArea::append_chatmessage(QString p_name, QString p_message, QString p_name_colour, QString p_color) +void AOTextArea::addMessage(QString name, QString message, QString nameColor, QString messageColor) { const QTextCursor old_cursor = this->textCursor(); const int old_scrollbar_value = this->verticalScrollBar()->value(); @@ -19,19 +19,19 @@ void AOTextArea::append_chatmessage(QString p_name, QString p_message, QString p this->moveCursor(QTextCursor::End); this->append(""); - if (!p_name.isEmpty()) + if (!name.isEmpty()) { - this->insertHtml("" + p_name.toHtmlEscaped() + ": "); + this->insertHtml("" + name.toHtmlEscaped() + ": "); // cheap workarounds ahoy - p_message += " "; + message += " "; } - QString result = p_message.toHtmlEscaped().replace("\n", "
").replace(url_parser_regex, "\\1"); + QString result = message.toHtmlEscaped().replace("\n", "
").replace(url_parser_regex, "\\1"); - if (!p_color.isEmpty()) + if (!messageColor.isEmpty()) { - result = "" + result + ""; + result = "" + result + ""; } this->insertHtml(result); diff --git a/src/aotextarea.h b/src/aotextarea.h index b6f6ec6a..b24ab2db 100644 --- a/src/aotextarea.h +++ b/src/aotextarea.h @@ -11,10 +11,10 @@ class AOTextArea : public QTextBrowser Q_OBJECT public: - AOTextArea(QWidget *p_parent = nullptr); - AOTextArea(int p_log_length, QWidget *p_parent = nullptr); + AOTextArea(QWidget *parent = nullptr); + AOTextArea(int maximumLogLenth, QWidget *parent = nullptr); - void append_chatmessage(QString p_name, QString p_message, QString p_name_colour, QString p_color = QString()); + void addMessage(QString name, QString message, QString nameColor, QString messageColor = QString()); private: const QRegularExpression url_parser_regex = QRegularExpression("\\b(https?://\\S+\\.\\S+)\\b"); diff --git a/src/charselect.cpp b/src/charselect.cpp index 4b62cb10..bc4032fb 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -338,7 +338,7 @@ void Courtroom::character_loading_finished() // This part here serves as a way of showing to the player that the game is // still running, it is just loading the pictures of the characters. - if (ao_app->lobby_constructed) + if (ao_app->is_lobby_constructed()) { ao_app->generated_chars++; } diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 215bbb8f..1f1c3cd8 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -28,20 +28,20 @@ Courtroom::Courtroom(AOApplication *p_ao_app) sfx_delay_timer->setSingleShot(true); music_player = new AOMusicPlayer(ao_app); - music_player->set_muted(true); - connect(&music_player->music_watcher, &QFutureWatcher::finished, this, &Courtroom::update_ui_music_name, Qt::QueuedConnection); + music_player->setMuted(true); + connect(&music_player->m_watcher, &QFutureWatcher::finished, this, &Courtroom::update_ui_music_name, Qt::QueuedConnection); sfx_player = new AOSfxPlayer(ao_app); - sfx_player->set_muted(true); + sfx_player->setMuted(true); objection_player = new AOSfxPlayer(ao_app); - objection_player->set_muted(true); + objection_player->setMuted(true); blip_player = new AOBlipPlayer(ao_app); - blip_player->set_muted(true); + blip_player->setMuted(true); modcall_player = new AOSfxPlayer(ao_app); - modcall_player->set_volume(50); + modcall_player->setVolume(50); ui_background = new AOImage(ao_app, this); ui_background->setObjectName("ui_background"); @@ -552,15 +552,15 @@ void Courtroom::update_audio_volume() remaining_percent = 0; } - music_player->set_volume(ui_music_slider->value() * remaining_percent, 0); // set music + music_player->setStreamVolume(ui_music_slider->value() * remaining_percent, 0); // set music // Set the ambience and other misc. music layers - for (int i = 1; i < music_player->CHANNEL_COUNT; ++i) + for (int i = 1; i < music_player->STREAM_COUNT; ++i) { - music_player->set_volume(ui_sfx_slider->value() * remaining_percent, i); + music_player->setStreamVolume(ui_sfx_slider->value() * remaining_percent, i); } - sfx_player->set_volume(ui_sfx_slider->value() * remaining_percent); - objection_player->set_volume(ui_sfx_slider->value() * remaining_percent); - blip_player->set_volume(ui_blip_slider->value() * remaining_percent); + sfx_player->setVolume(ui_sfx_slider->value() * remaining_percent); + objection_player->setVolume(ui_sfx_slider->value() * remaining_percent); + blip_player->setVolume(ui_blip_slider->value() * remaining_percent); } void Courtroom::append_char(CharacterSlot p_char) @@ -1688,10 +1688,10 @@ void Courtroom::enter_courtroom() } // Unmute everything - music_player->set_muted(false); - objection_player->set_muted(false); - sfx_player->set_muted(false); - blip_player->set_muted(false); + music_player->setMuted(false); + objection_player->setMuted(false); + sfx_player->setMuted(false); + blip_player->setMuted(false); // Update the audio sliders update_audio_volume(); @@ -1866,7 +1866,7 @@ void Courtroom::debug_message_handler(QtMsgType type, const QMessageLogContext & Q_UNUSED(context); const QMap colors = {{QtDebugMsg, "debug"}, {QtInfoMsg, "info"}, {QtWarningMsg, "warn"}, {QtCriticalMsg, "critical"}, {QtFatalMsg, "fatal"}}; const QString color_id = QString("debug_log_%1_color").arg(colors.value(type, "info")); - ui_debug_log->append_chatmessage(colors.value(type, "info"), msg, QString(), ao_app->get_color(color_id, "courtroom_fonts.ini").name()); + ui_debug_log->addMessage(colors.value(type, "info"), msg, QString(), ao_app->get_color(color_id, "courtroom_fonts.ini").name()); } void Courtroom::append_server_chatmessage(QString p_name, QString p_message, QString p_color) @@ -1887,7 +1887,7 @@ void Courtroom::append_server_chatmessage(QString p_name, QString p_message, QSt on_authentication_state_received(1); } - ui_server_chatlog->append_chatmessage(p_name, p_message, color); + ui_server_chatlog->addMessage(p_name, p_message, color); if (Options::getInstance().logToTextFileEnabled() && !ao_app->log_filename.isEmpty()) { @@ -2666,33 +2666,33 @@ bool Courtroom::handle_objection() { case 1: filename = "holdit_bubble"; - objection_player->play("holdit", m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); + objection_player->findAndPlayCharacterShout("holdit", m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); break; case 2: filename = "objection_bubble"; - objection_player->play("objection", m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); + objection_player->findAndPlayCharacterShout("objection", m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); break; case 3: filename = "takethat_bubble"; - objection_player->play("takethat", m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); + objection_player->findAndPlayCharacterShout("takethat", m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); break; // case 4 is AO2 only case 4: if (custom_objection != "") { filename = "custom_objections/" + custom_objection.left(custom_objection.lastIndexOf(".")); - objection_player->play(filename, m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); + objection_player->findAndPlayCharacterShout(filename, m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); } else { filename = "custom"; - objection_player->play("custom", m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); + objection_player->findAndPlayCharacterShout("custom", m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); } break; m_chatmessage[EMOTE_MOD] = QChar(PREANIM); } ui_vp_objection->load_image(filename, m_chatmessage[CHAR_NAME], ao_app->get_chat(m_chatmessage[CHAR_NAME])); - sfx_player->clear(); // Objection played! Cut all sfx. + sfx_player->stopAll(); // Objection played! Cut all sfx. ui_vp_player_char->set_play_once(true); return true; } @@ -2710,7 +2710,7 @@ void Courtroom::display_character() ui_vp_player_char->stop(); ui_vp_effect->stop(); // Clear all looping sfx to prevent obnoxiousness - sfx_player->loop_clear(); + sfx_player->stopAllLoopingStream(); // Hide the message and chatbox and handle the emotes ui_vp_message->hide(); ui_vp_chatbox->setVisible(chatbox_always_show); @@ -2991,7 +2991,7 @@ void Courtroom::do_effect(QString fx_path, QString fx_sound, QString p_char, QSt if (fx_sound != "") { - sfx_player->play(fx_sound); + sfx_player->findAndPlaySfx(fx_sound); } // Only check if effects are disabled after playing the sound if it exists @@ -3073,7 +3073,7 @@ void Courtroom::do_effect(QString fx_path, QString fx_sound, QString p_char, QSt void Courtroom::play_char_sfx(QString sfx_name) { - sfx_player->play(sfx_name); + sfx_player->findAndPlaySfx(sfx_name); } void Courtroom::initialize_chatbox() @@ -3216,7 +3216,7 @@ void Courtroom::handle_callwords() if (f_message.contains(word, Qt::CaseInsensitive)) { // Play the call word sfx on the modcall_player sound container - modcall_player->play(ao_app->get_court_sfx("word_call")); + modcall_player->findAndPlaySfx(ao_app->get_court_sfx("word_call")); // Make the window flash ao_app->alert(this); // Break the loop so we don't spam sound effects @@ -3236,7 +3236,7 @@ void Courtroom::display_evidence_image() // QString f_evi_name = local_evidence_list.at(f_evi_id - 1).name; // def jud and hlp should display the evidence icon on the RIGHT side bool is_left_side = !(side == "def" || side == "hlp" || side == "jud" || side == "jur"); - ui_vp_evidence_display->show_evidence(f_evi_id, f_image, is_left_side, sfx_player->get_volume()); + ui_vp_evidence_display->show_evidence(f_evi_id, f_image, is_left_side, sfx_player->volume()); } } @@ -3930,7 +3930,7 @@ void Courtroom::start_chat_ticking() else if (m_chatmessage[REALIZATION] == "1") { this->do_flash(); - sfx_player->play(ao_app->get_custom_realization(m_chatmessage[CHAR_NAME])); + sfx_player->findAndPlaySfx(ao_app->get_custom_realization(m_chatmessage[CHAR_NAME])); } int emote_mod = m_chatmessage[EMOTE_MOD].toInt(); // text meme bonanza if ((emote_mod == IDLE || emote_mod == ZOOM) && m_chatmessage[SCREENSHAKE] == "1") @@ -4009,7 +4009,7 @@ void Courtroom::start_chat_ticking() { f_blips = ao_app->get_blips(m_chatmessage[BLIPNAME]); } - blip_player->set_blips(f_blips); + blip_player->setBlip(f_blips); // means text is currently ticking text_state = 1; @@ -4276,7 +4276,7 @@ void Courtroom::chat_tick() // ignoring white space unless blank_blip is enabled. if (!formatting_char && (f_character != ' ' || blank_blip)) { - blip_player->blip_tick(); + blip_player->playBlip(); ++blip_ticker; } } @@ -4335,10 +4335,10 @@ void Courtroom::play_sfx() return; } - sfx_player->play(sfx_name); + sfx_player->findAndPlaySfx(sfx_name); if (Options::getInstance().loopingSfx()) { - sfx_player->set_looping(ao_app->get_sfx_looping(current_char, current_emote) == "1"); + sfx_player->setLooping(ao_app->get_sfx_looping(current_char, current_emote) == "1"); } } @@ -4500,22 +4500,19 @@ void Courtroom::handle_song(QStringList *p_contents) { // Current song UI only displays the song playing, not other channels. // Any other music playing is irrelevant. - if (music_player->music_watcher.isRunning()) + if (music_player->m_watcher.isRunning()) { - music_player->music_watcher.cancel(); + music_player->m_watcher.cancel(); } ui_music_name->setText(tr("[LOADING] %1").arg(f_song_clear)); } -#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - music_player->music_watcher.setFuture(QtConcurrent::run(music_player, &AOMusicPlayer::play, f_song, channel, looping, effect_flags)); -#else - music_player->music_watcher.setFuture(QtConcurrent::run(&AOMusicPlayer::play, music_player, f_song, channel, looping, effect_flags)); -#endif + + music_player->m_watcher.setFuture(QtConcurrent::run([=, this]() -> QString { return music_player->playStream(f_song, channel, looping, effect_flags); })); } void Courtroom::update_ui_music_name() { - QString result = music_player->music_watcher.result(); + QString result = music_player->m_watcher.result(); if (result.isEmpty()) { return; @@ -4590,7 +4587,7 @@ void Courtroom::handle_wtce(QString p_wtce, int variant) filename = p_wtce; } } - sfx_player->play(sfx_name); + sfx_player->findAndPlaySfx(sfx_name); ui_vp_wtce->load_image(filename, "", bg_misc); ui_vp_wtce->set_play_once(true); } @@ -4648,7 +4645,7 @@ void Courtroom::set_hp_bar(int p_bar, int p_state) if (!sfx_name.isEmpty()) { - sfx_player->play(sfx_name); + sfx_player->findAndPlaySfx(sfx_name); } } @@ -4678,7 +4675,7 @@ void Courtroom::mod_called(QString p_ip) ui_server_chatlog->append(p_ip); if (!ui_guard->isChecked()) { - modcall_player->play(ao_app->get_court_sfx("mod_call")); + modcall_player->findAndPlaySfx(ao_app->get_court_sfx("mod_call")); ao_app->alert(this); } } @@ -4703,11 +4700,7 @@ void Courtroom::on_ooc_return_pressed() if (ooc_message.startsWith("/load_case")) { -#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) - QStringList command = ooc_message.split(" ", QString::SkipEmptyParts); -#else - QStringList command = ooc_message.split(" ", Qt::SkipEmptyParts); -#endif + QStringList command = ooc_message.split(" ", AOSplitBehaviorFlags::SkipEmptyParts); QDir casefolder(get_base_path() + "/cases"); if (!casefolder.exists()) { @@ -4803,11 +4796,7 @@ void Courtroom::on_ooc_return_pressed() } else if (ooc_message.startsWith("/save_case")) { -#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) - QStringList command = ooc_message.split(" ", QString::SkipEmptyParts); -#else - QStringList command = ooc_message.split(" ", Qt::SkipEmptyParts); -#endif + QStringList command = ooc_message.split(" ", AOSplitBehaviorFlags::SkipEmptyParts); QDir casefolder(get_base_path() + "cases"); if (!casefolder.exists()) { @@ -5265,7 +5254,7 @@ void Courtroom::on_sfx_context_menu_requested(const QPoint &pos) void Courtroom::on_sfx_play_clicked() { - sfx_player->play(get_char_sfx(), get_current_char()); + sfx_player->findAndPlayCharacterSfx(get_char_sfx(), get_current_char()); } void Courtroom::on_sfx_edit_requested() @@ -6063,25 +6052,25 @@ void Courtroom::on_text_color_changed(int p_color) void Courtroom::on_music_slider_moved(int p_value) { - music_player->set_volume(p_value, 0); // Set volume on music layer + music_player->setStreamVolume(p_value, 0); // Set volume on music layer ui_ic_chat_message->setFocus(); } void Courtroom::on_sfx_slider_moved(int p_value) { - sfx_player->set_volume(p_value); + sfx_player->setVolume(p_value); // Set the ambience and other misc. music layers - for (int i = 1; i < music_player->CHANNEL_COUNT; ++i) + for (int i = 1; i < music_player->STREAM_COUNT; ++i) { - music_player->set_volume(p_value, i); + music_player->setStreamVolume(p_value, i); } - objection_player->set_volume(p_value); + objection_player->setVolume(p_value); ui_ic_chat_message->setFocus(); } void Courtroom::on_blip_slider_moved(int p_value) { - blip_player->set_volume(p_value); + blip_player->setVolume(p_value); ui_ic_chat_message->setFocus(); } @@ -6150,8 +6139,8 @@ void Courtroom::on_guilty_clicked() void Courtroom::on_change_character_clicked() { - sfx_player->set_muted(true); - blip_player->set_muted(true); + sfx_player->setMuted(true); + blip_player->setMuted(true); set_char_select(); diff --git a/src/datatypes.h b/src/datatypes.h index 1258136b..ab92c2e5 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -3,6 +3,12 @@ #include #include +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) +using AOSplitBehaviorFlags = QString::SplitBehaviorFlags; +#else +using AOSplitBehaviorFlags = Qt::SplitBehaviorFlags; +#endif + enum ServerConnectionType { TcpServerConnection, @@ -18,6 +24,8 @@ struct ServerInfo QString ip; int port; ServerConnectionType socket_type; + + inline QString toString() { return QString("%1 (<%2>%3:%4)").arg(name, SERVER_CONNECTION_TYPE_STRING_MAP.key(socket_type), ip, QString::number(port)); } }; struct CharacterSlot diff --git a/src/demoserver.cpp b/src/demoserver.cpp index 0573b84e..22f383a1 100644 --- a/src/demoserver.cpp +++ b/src/demoserver.cpp @@ -1,5 +1,7 @@ #include "demoserver.h" +#include "datatypes.h" + DemoServer::DemoServer(QObject *parent) : QObject(parent) { @@ -93,12 +95,7 @@ void DemoServer::recv_data() { QString in_data = QString::fromUtf8(client_sock->readAll()); -#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) - const QStringList packet_list = in_data.split("%", QString::SkipEmptyParts); -#else - const QStringList packet_list = in_data.split("%", Qt::SkipEmptyParts); -#endif - + const QStringList packet_list = in_data.split("%", AOSplitBehaviorFlags::SkipEmptyParts); for (const QString &packet : packet_list) { QStringList f_contents; diff --git a/src/emotes.cpp b/src/emotes.cpp index c12ceb69..4023b521 100644 --- a/src/emotes.cpp +++ b/src/emotes.cpp @@ -22,6 +22,7 @@ void Courtroom::initialize_emotes() emote_preview = new AOEmotePreview(ao_app, this); emote_preview->setObjectName("ui_emote_preview"); + emote_preview->resize(256, 192); connect(ui_emote_left, &AOButton::clicked, this, &Courtroom::on_emote_left_clicked); connect(ui_emote_right, &AOButton::clicked, this, &Courtroom::on_emote_right_clicked); @@ -262,7 +263,7 @@ void Courtroom::show_emote_menu(const QPoint &pos) emote_menu->setDefaultAction(emote_menu->addAction("Preview Selected", this, [this] { emote_preview->show(); emote_preview->raise(); - emote_preview->set_widgets(); + emote_preview->updateViewportGeometry(); update_emote_preview(); })); QString prefix; @@ -291,8 +292,8 @@ void Courtroom::preview_emote(QString f_emote) { emote_preview->show(); emote_preview->raise(); - emote_preview->set_widgets(); - emote_preview->play(f_emote, current_char, ui_flip->isChecked(), ui_pair_offset_spinbox->value(), ui_pair_vert_offset_spinbox->value()); + emote_preview->updateViewportGeometry(); + emote_preview->display(current_char, f_emote, ui_flip->isChecked(), ui_pair_offset_spinbox->value(), ui_pair_vert_offset_spinbox->value()); } void Courtroom::on_emote_left_clicked() diff --git a/src/main.cpp b/src/main.cpp index d582eb7b..955b1fff 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -17,6 +17,8 @@ int main(int argc, char *argv[]) { qSetMessagePattern("%{type}: %{if-category}%{category}: %{endif}%{message}"); + qRegisterMetaType(); + AOApplication main_app(argc, argv); #ifdef ANDROID diff --git a/src/net/netconnection.cpp b/src/net/netconnection.cpp new file mode 100644 index 00000000..63ca7060 --- /dev/null +++ b/src/net/netconnection.cpp @@ -0,0 +1,5 @@ +#include "netconnection.h" + +NetConnection::NetConnection(QObject *parent) + : QObject(parent) +{} diff --git a/src/net/netconnection.h b/src/net/netconnection.h new file mode 100644 index 00000000..0b5d6be3 --- /dev/null +++ b/src/net/netconnection.h @@ -0,0 +1,28 @@ +#pragma once + +#include "aopacket.h" +#include "datatypes.h" + +#include + +class NetConnection : public QObject +{ + Q_OBJECT + +public: + explicit NetConnection(QObject *parent = nullptr); + + virtual bool isConnected() = 0; + + virtual void connectToServer(ServerInfo &server) = 0; + virtual void disconnectFromServer() = 0; + + virtual void sendPacket(AOPacket packet) = 0; + +Q_SIGNALS: + void connectedToServer(); + void disconnectedFromServer(); + void errorOccurred(QString error); + + void receivedPacket(AOPacket packet); +}; diff --git a/src/net/nettcpconnection.cpp b/src/net/nettcpconnection.cpp new file mode 100644 index 00000000..744eed9e --- /dev/null +++ b/src/net/nettcpconnection.cpp @@ -0,0 +1,102 @@ +#include "nettcpconnection.h" + +NetTcpConnection::NetTcpConnection(QObject *parent) + : NetConnection(parent) + , m_socket(new QTcpSocket(this)) + , m_last_state(QAbstractSocket::UnconnectedState) +{ +#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) + connect(m_socket, QOverload::of(&QAbstractSocket::error), this, &NetTcpConnection::onErrorOccurred); +#else + connect(m_socket, &QTcpSocket::errorOccurred, this, &NetTcpConnection::onErrorOccurred); +#endif + connect(m_socket, &QTcpSocket::stateChanged, this, &NetTcpConnection::onStateChanged); + connect(m_socket, &QTcpSocket::readyRead, this, &NetTcpConnection::onReadyRead); +} + +NetTcpConnection::~NetTcpConnection() +{ + m_socket->disconnect(this); + disconnectFromServer(); +} + +bool NetTcpConnection::isConnected() +{ + return m_last_state == QAbstractSocket::ConnectedState; +} + +void NetTcpConnection::connectToServer(ServerInfo &server) +{ + disconnectedFromServer(); + m_socket->connectToHost(server.ip, server.port); +} + +void NetTcpConnection::disconnectFromServer() +{ + m_socket->abort(); +} + +void NetTcpConnection::sendPacket(AOPacket packet) +{ + if (!isConnected()) + { + qWarning().noquote() << QObject::tr("Cannot send packet, not connected to server"); + return; + } + m_socket->write(packet.toString(true).toUtf8()); +} + +void NetTcpConnection::onErrorOccurred() +{ + Q_EMIT errorOccurred(m_socket->errorString()); +} + +void NetTcpConnection::onStateChanged(QAbstractSocket::SocketState state) +{ + m_last_state = state; + switch (state) + { + default: + break; + + case QAbstractSocket::ConnectedState: + m_cached_data.clear(); + Q_EMIT connectedToServer(); + break; + + case QAbstractSocket::UnconnectedState: + Q_EMIT disconnectFromServer(); + break; + } +} + +void NetTcpConnection::onReadyRead() +{ + m_cached_data += QString::fromUtf8(m_socket->readAll()); + if (!m_cached_data.endsWith('%')) + { + return; + } + + QStringList raw_packet_list = m_cached_data.split('%', AOSplitBehaviorFlags::SkipEmptyParts); + m_cached_data.clear(); + for (QString raw_packet : raw_packet_list) + { + if (!raw_packet.endsWith('#')) + { + Q_EMIT errorOccurred(QObject::tr("Malformed packet received %1").arg(raw_packet)); + continue; + } + raw_packet.chop(1); + + QStringList raw_content = raw_packet.split('#'); + + const QString header = raw_content.takeFirst(); + for (QString &data : raw_content) + { + data = AOPacket::decode(data); + } + + Q_EMIT receivedPacket(AOPacket(header, raw_content)); + } +} diff --git a/src/net/nettcpconnection.h b/src/net/nettcpconnection.h new file mode 100644 index 00000000..40dae196 --- /dev/null +++ b/src/net/nettcpconnection.h @@ -0,0 +1,31 @@ +#pragma once + +#include "aopacket.h" +#include "datatypes.h" +#include "netconnection.h" + +#include + +class NetTcpConnection : public NetConnection +{ +public: + NetTcpConnection(QObject *parent = nullptr); + virtual ~NetTcpConnection(); + + bool isConnected() override; + + void connectToServer(ServerInfo &server) override; + void disconnectFromServer() override; + + void sendPacket(AOPacket packet) override; + +private: + QTcpSocket *m_socket; + QAbstractSocket::SocketState m_last_state; + QString m_cached_data; + +private Q_SLOTS: + void onErrorOccurred(); + void onStateChanged(QAbstractSocket::SocketState state); + void onReadyRead(); +}; diff --git a/src/net/netwebsocketconnection.cpp b/src/net/netwebsocketconnection.cpp new file mode 100644 index 00000000..a9d2e10c --- /dev/null +++ b/src/net/netwebsocketconnection.cpp @@ -0,0 +1,97 @@ +#include "netwebsocketconnection.h" + +#include "networkmanager.h" + +#include +#include + +NetWebSocketConnection::NetWebSocketConnection(NetworkManager *networkManager) + : NetConnection(networkManager) + , m_network_manager(networkManager) + , m_socket(new QWebSocket(QString(), QWebSocketProtocol::VersionLatest, this)) + , m_last_state(QAbstractSocket::UnconnectedState) +{ + connect(m_socket, QOverload::of(&QWebSocket::error), this, &NetWebSocketConnection::onError); + connect(m_socket, &QWebSocket::stateChanged, this, &NetWebSocketConnection::onStateChanged); + connect(m_socket, &QWebSocket::textMessageReceived, this, &NetWebSocketConnection::onTextMessageReceived); +} + +NetWebSocketConnection::~NetWebSocketConnection() +{ + m_socket->disconnect(this); + disconnectFromServer(); +} + +bool NetWebSocketConnection::isConnected() +{ + return m_last_state == QAbstractSocket::ConnectedState; +} + +void NetWebSocketConnection::connectToServer(ServerInfo &server) +{ + disconnectFromServer(); + + QUrl url; + url.setScheme("ws"); + url.setHost(server.ip); + url.setPort(server.port); + + QNetworkRequest req(url); + req.setHeader(QNetworkRequest::UserAgentHeader, m_network_manager->get_user_agent()); + + m_socket->open(req); +} + +void NetWebSocketConnection::disconnectFromServer() +{ + if (isConnected()) + { + m_socket->close(QWebSocketProtocol::CloseCodeGoingAway); + } +} + +void NetWebSocketConnection::sendPacket(AOPacket packet) +{ + m_socket->sendTextMessage(packet.toString(true)); +} + +void NetWebSocketConnection::onError() +{ + Q_EMIT errorOccurred(m_socket->errorString()); +} + +void NetWebSocketConnection::onStateChanged(QAbstractSocket::SocketState state) +{ + m_last_state = state; + switch (state) + { + default: + break; + + case QAbstractSocket::ConnectedState: + Q_EMIT connectedToServer(); + break; + + case QAbstractSocket::UnconnectedState: + Q_EMIT disconnectFromServer(); + break; + } +} + +void NetWebSocketConnection::onTextMessageReceived(QString message) +{ + if (!message.endsWith("#%")) + { + return; + } + message.chop(2); + + QStringList raw_content = message.split('#'); + const QString header = raw_content.takeFirst(); + for (QString &data : raw_content) + { + data = AOPacket::decode(data); + } + + Q_EMIT receivedPacket(AOPacket(header, raw_content)); +} diff --git a/src/net/netwebsocketconnection.h b/src/net/netwebsocketconnection.h new file mode 100644 index 00000000..26f41a6e --- /dev/null +++ b/src/net/netwebsocketconnection.h @@ -0,0 +1,32 @@ +#pragma once + +#include "netconnection.h" + +class NetworkManager; + +#include + +class NetWebSocketConnection : public NetConnection +{ +public: + NetWebSocketConnection(NetworkManager *networkManager); + virtual ~NetWebSocketConnection(); + + bool isConnected() override; + + void connectToServer(ServerInfo &server) override; + void disconnectFromServer() override; + + void sendPacket(AOPacket packet) override; + +private: + NetworkManager *m_network_manager; + + QWebSocket *m_socket; + QAbstractSocket::SocketState m_last_state; + +private Q_SLOTS: + void onError(); + void onStateChanged(QAbstractSocket::SocketState state); + void onTextMessageReceived(QString message); +}; diff --git a/src/networkmanager.cpp b/src/networkmanager.cpp index e53b2917..69ff839c 100644 --- a/src/networkmanager.cpp +++ b/src/networkmanager.cpp @@ -3,6 +3,8 @@ #include "datatypes.h" #include "debug_functions.h" #include "lobby.h" +#include "net/nettcpconnection.h" +#include "net/netwebsocketconnection.h" #include "options.h" #include @@ -77,13 +79,18 @@ void NetworkManager::ms_request_finished(QNetworkReply *reply) } ao_app->set_server_list(server_list); - if (ao_app->lobby_constructed) + if (ao_app->is_lobby_constructed()) { ao_app->w_lobby->list_servers(); } reply->deleteLater(); } +QString NetworkManager::get_user_agent() const +{ + return QStringLiteral("AttorneyOnline/%1 (Desktop)").arg(ao_app->get_version_string()); +} + void NetworkManager::send_heartbeat() { // Ping the server periodically to tell the MS that you've been playing @@ -137,156 +144,71 @@ void NetworkManager::request_document(MSDocumentType document_type, const std::f }); } -void NetworkManager::connect_to_server(ServerInfo p_server) +void NetworkManager::connect_to_server(ServerInfo server) { disconnect_from_server(); - qInfo().nospace().noquote() << "connecting to " << p_server.ip << ":" << p_server.port; - - switch (p_server.socket_type) + qInfo().noquote() << QObject::tr("Connecting to %1").arg(server.toString()); + switch (server.socket_type) { default: - p_server.socket_type = TcpServerConnection; + server.socket_type = TcpServerConnection; [[fallthrough]]; case TcpServerConnection: - qInfo() << "using TCP backend"; - server_socket.tcp = new QTcpSocket(this); - - connect(server_socket.tcp, &QAbstractSocket::connected, this, [] { qDebug() << "established connection to server"; }); - connect(server_socket.tcp, &QIODevice::readyRead, this, [this] { handle_server_packet(QString::fromUtf8(server_socket.tcp->readAll())); }); - connect(server_socket.tcp, &QAbstractSocket::disconnected, ao_app, &AOApplication::server_disconnected); -#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) - connect(server_socket.tcp, QOverload::of(&QAbstractSocket::error), this, [this] { -#else - connect(server_socket.tcp, &QAbstractSocket::errorOccurred, this, [this] { -#endif - qCritical() << "TCP socket error:" << server_socket.tcp->errorString(); - }); - - server_socket.tcp->connectToHost(p_server.ip, p_server.port); + qInfo() << "Using TCP backend."; + m_connection = new NetTcpConnection(this); break; case WebSocketServerConnection: - qInfo() << "using WebSockets backend"; - server_socket.ws = new QWebSocket(QString(), QWebSocketProtocol::VersionLatest, this); - - connect(server_socket.ws, &QWebSocket::connected, this, [] { qDebug() << "established connection to server"; }); - connect(server_socket.ws, &QWebSocket::textMessageReceived, this, &NetworkManager::handle_server_packet); - connect(server_socket.ws, &QWebSocket::disconnected, ao_app, &AOApplication::server_disconnected); - connect(server_socket.ws, QOverload::of(&QWebSocket::error), this, [this] { qCritical() << "WebSockets error:" << server_socket.ws->errorString(); }); - - QUrl url; - url.setScheme("ws"); - url.setHost(p_server.ip); - url.setPort(p_server.port); - QNetworkRequest req(url); - req.setHeader(QNetworkRequest::UserAgentHeader, get_user_agent()); - server_socket.ws->open(req); + qInfo() << "Using WebSockets backend."; + m_connection = new NetWebSocketConnection(this); break; } - connected = true; - active_connection_type = p_server.socket_type; -} + connect(m_connection, &NetConnection::connectedToServer, this, [] { qInfo() << "Established connection to server."; }); + connect(m_connection, &NetConnection::disconnectedFromServer, ao_app, &AOApplication::server_disconnected); + connect(m_connection, &NetConnection::errorOccurred, this, [](QString error) { qCritical() << "Connection error:" << error; }); + connect(m_connection, &NetConnection::receivedPacket, this, &NetworkManager::handle_server_packet); -void NetworkManager::join_to_server() -{ - ship_server_packet(AOPacket("askchaa").toString()); + m_connection->connectToServer(server); } void NetworkManager::disconnect_from_server() { - if (!connected) - { - return; - } - - switch (active_connection_type) + if (m_connection) { - case TcpServerConnection: - server_socket.tcp->close(); - server_socket.tcp->deleteLater(); - break; - case WebSocketServerConnection: - server_socket.ws->close(QWebSocketProtocol::CloseCodeGoingAway); - server_socket.ws->deleteLater(); - break; + m_connection->disconnectFromServer(); + m_connection->deleteLater(); + m_connection = nullptr; } - - connected = false; } -void NetworkManager::ship_server_packet(AOPacket p_packet) +void NetworkManager::ship_server_packet(AOPacket packet) { - QString message = p_packet.toString(true); - switch (active_connection_type) + if (!m_connection) { - case TcpServerConnection: - server_socket.tcp->write(message.toUtf8()); - break; - - case WebSocketServerConnection: - server_socket.ws->sendTextMessage(message); - break; + qCritical() << "Failed to ship packet; no connection."; + return; } -} -void NetworkManager::handle_server_packet(const QString &p_data) -{ - QString in_data = p_data; - - if (!p_data.endsWith("%")) + if (!m_connection->isConnected()) { - partial_packet = true; - temp_packet += in_data; + qCritical() << "Failed to ship packet; not connected."; return; } - else - { - if (partial_packet) - { - in_data = temp_packet + in_data; - temp_packet = ""; - partial_packet = false; - } - } -#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) - const QStringList packet_list = in_data.split("%", QString::SkipEmptyParts); -#else - const QStringList packet_list = in_data.split("%", Qt::SkipEmptyParts); -#endif + qInfo().noquote() << "Sending packet:" << packet.toString(); + m_connection->sendPacket(packet); +} - for (const QString &packet : packet_list) - { - QStringList f_contents; - // Packet should *always* end with # - if (packet.endsWith("#")) - { - f_contents = packet.chopped(1).split("#"); - } - // But, if it somehow doesn't, we should still be able to handle it - else - { - f_contents = packet.split("#"); - } - // Empty packets are suspicious! - if (f_contents.isEmpty()) - { - qWarning() << "WARNING: Empty packet received from server, skipping..."; - continue; - } - // Take the first arg as the command - QString command = f_contents.takeFirst(); - for (QString &data : f_contents) - { - data = AOPacket::decode(data); - } +void NetworkManager::join_to_server() +{ + ship_server_packet(AOPacket("askchaa").toString()); +} - // The rest is contents of the packet - AOPacket f_packet(command, f_contents); - // Ship it to the server! - ao_app->server_packet_received(f_packet); - } +void NetworkManager::handle_server_packet(AOPacket packet) +{ + qInfo().noquote() << "Received packet:" << packet.toString(); + ao_app->server_packet_received(packet); } diff --git a/src/networkmanager.h b/src/networkmanager.h index 5cd87617..4ec539fc 100644 --- a/src/networkmanager.h +++ b/src/networkmanager.h @@ -2,6 +2,7 @@ #include "aoapplication.h" #include "aopacket.h" +#include "net/netconnection.h" #include #include @@ -28,11 +29,13 @@ public: void connect_to_server(ServerInfo p_server); void disconnect_from_server(); + QString get_user_agent() const; + public Q_SLOTS: void get_server_list(); - void ship_server_packet(AOPacket p_packet); + void ship_server_packet(AOPacket packet); void join_to_server(); - void handle_server_packet(const QString &p_data); + void handle_server_packet(AOPacket packet); void request_document(MSDocumentType document_type, const std::function &cb); void send_heartbeat(); @@ -47,13 +50,7 @@ private: AOApplication *ao_app; QNetworkAccessManager *http; - union - { - QWebSocket *ws; - QTcpSocket *tcp; - } server_socket; - ServerConnectionType active_connection_type; - bool connected = false; + NetConnection *m_connection = nullptr; QTimer *heartbeat_timer; @@ -62,10 +59,5 @@ private: const int heartbeat_interval = 60 * 5 * 1000; - bool partial_packet = false; - QString temp_packet; - unsigned int s_decryptor = 5; - - QString get_user_agent() const { return QStringLiteral("AttorneyOnline/%1 (Desktop)").arg(ao_app->get_version_string()); } }; diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index cdedd5ac..a8dc7731 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -24,14 +24,10 @@ void AOApplication::append_to_demofile(QString packet_string) } } -void AOApplication::server_packet_received(AOPacket p_packet) +void AOApplication::server_packet_received(AOPacket packet) { - QStringList f_contents_encoded = p_packet.content(); - QString f_packet_encoded = p_packet.toString(); - - QString header = p_packet.header(); - QStringList f_contents = p_packet.content(); - QString f_packet = p_packet.toString(); + QString header = packet.header(); + QStringList content = packet.content(); bool log_to_demo = true; @@ -44,7 +40,7 @@ void AOApplication::server_packet_received(AOPacket p_packet) if (header == "decryptor") { - if (f_contents.size() == 0) + if (content.size() == 0) { return; } @@ -76,13 +72,13 @@ void AOApplication::server_packet_received(AOPacket p_packet) } else if (header == "ID") { - if (f_contents.size() < 2) + if (content.size() < 2) { return; } - client_id = f_contents.at(0).toInt(); - server_software = f_contents.at(1); + client_id = content.at(0).toInt(); + server_software = content.at(1); net_manager->server_connected(true); @@ -91,18 +87,18 @@ void AOApplication::server_packet_received(AOPacket p_packet) } else if (header == "CT") { - if (!courtroom_constructed || f_contents.size() < 2) + if (!is_courtroom_constructed() || content.size() < 2) { return; } - if (f_contents.size() == 3) + if (content.size() == 3) { - w_courtroom->append_server_chatmessage(f_contents.at(0), f_contents.at(1), f_contents.at(2)); + w_courtroom->append_server_chatmessage(content.at(0), content.at(1), content.at(2)); } else { - w_courtroom->append_server_chatmessage(f_contents.at(0), f_contents.at(1), "0"); + w_courtroom->append_server_chatmessage(content.at(0), content.at(1), "0"); } } else if (header == "FL") @@ -125,104 +121,102 @@ void AOApplication::server_packet_received(AOPacket p_packet) custom_blips_supported = false; log_to_demo = false; - if (f_packet.contains("yellowtext", Qt::CaseInsensitive)) + if (content.contains("yellowtext", Qt::CaseInsensitive)) { yellow_text_supported = true; } - if (f_packet.contains("prezoom", Qt::CaseInsensitive)) + if (content.contains("prezoom", Qt::CaseInsensitive)) { prezoom_supported = true; } - if (f_packet.contains("flipping", Qt::CaseInsensitive)) + if (content.contains("flipping", Qt::CaseInsensitive)) { flipping_supported = true; } - if (f_packet.contains("customobjections", Qt::CaseInsensitive)) + if (content.contains("customobjections", Qt::CaseInsensitive)) { custom_objection_supported = true; } - if (f_packet.contains("deskmod", Qt::CaseInsensitive)) + if (content.contains("deskmod", Qt::CaseInsensitive)) { desk_mod_supported = true; } - if (f_packet.contains("evidence", Qt::CaseInsensitive)) + if (content.contains("evidence", Qt::CaseInsensitive)) { evidence_supported = true; } - if (f_packet.contains("cccc_ic_support", Qt::CaseInsensitive)) + if (content.contains("cccc_ic_support", Qt::CaseInsensitive)) { cccc_ic_supported = true; } - if (f_packet.contains("arup", Qt::CaseInsensitive)) + if (content.contains("arup", Qt::CaseInsensitive)) { arup_supported = true; } - if (f_packet.contains("casing_alerts", Qt::CaseInsensitive)) + if (content.contains("casing_alerts", Qt::CaseInsensitive)) { casing_alerts_supported = true; } - if (f_packet.contains("modcall_reason", Qt::CaseInsensitive)) + if (content.contains("modcall_reason", Qt::CaseInsensitive)) { modcall_reason_supported = true; } - if (f_packet.contains("looping_sfx", Qt::CaseInsensitive)) + if (content.contains("looping_sfx", Qt::CaseInsensitive)) { looping_sfx_supported = true; } - if (f_packet.contains("additive", Qt::CaseInsensitive)) + if (content.contains("additive", Qt::CaseInsensitive)) { additive_supported = true; } - if (f_packet.contains("effects", Qt::CaseInsensitive)) + if (content.contains("effects", Qt::CaseInsensitive)) { effects_supported = true; } - if (f_packet.contains("y_offset", Qt::CaseInsensitive)) + if (content.contains("y_offset", Qt::CaseInsensitive)) { y_offset_supported = true; } - if (f_packet.contains("expanded_desk_mods", Qt::CaseInsensitive)) + if (content.contains("expanded_desk_mods", Qt::CaseInsensitive)) { expanded_desk_mods_supported = true; } - if (f_packet.contains("auth_packet", Qt::CaseInsensitive)) + if (content.contains("auth_packet", Qt::CaseInsensitive)) { auth_packet_supported = true; } - if (f_packet.contains("custom_blips", Qt::CaseInsensitive)) + if (content.contains("custom_blips", Qt::CaseInsensitive)) { custom_blips_supported = true; } log_to_demo = false; - - } else if (header == "PN") { - if (!lobby_constructed || f_contents.size() < 2) + if (!is_lobby_constructed() || content.size() < 2) { return; } - w_lobby->set_player_count(f_contents.at(0).toInt(), f_contents.at(1).toInt()); + w_lobby->set_player_count(content.at(0).toInt(), content.at(1).toInt()); - if (f_contents.size() >= 3) + if (content.size() >= 3) { - w_lobby->set_server_description(f_contents.at(2)); + w_lobby->set_server_description(content.at(2)); } log_to_demo = false; } else if (header == "SI") { - if (!lobby_constructed || f_contents.size() != 3) + if (!is_lobby_constructed() || content.size() != 3) { return; } - char_list_size = f_contents.at(0).toInt(); - evidence_list_size = f_contents.at(1).toInt(); - music_list_size = f_contents.at(2).toInt(); + char_list_size = content.at(0).toInt(); + evidence_list_size = content.at(1).toInt(); + music_list_size = content.at(2).toInt(); if (char_list_size < 0 || evidence_list_size < 0 || music_list_size < 0) { @@ -272,7 +266,7 @@ void AOApplication::server_packet_received(AOPacket p_packet) break; } - if (courtroom_constructed) + if (is_courtroom_constructed()) { w_courtroom->set_window_title(window_title); } @@ -301,14 +295,14 @@ void AOApplication::server_packet_received(AOPacket p_packet) } else if (header == "CharsCheck") { - if (!courtroom_constructed) + if (!is_courtroom_constructed()) { return; } - for (int n_char = 0; n_char < f_contents.size(); ++n_char) + for (int n_char = 0; n_char < content.size(); ++n_char) { - if (f_contents.at(n_char) == "-1") + if (content.at(n_char) == "-1") { w_courtroom->set_taken(n_char, true); } @@ -322,14 +316,14 @@ void AOApplication::server_packet_received(AOPacket p_packet) else if (header == "SC") { - if (!courtroom_constructed) + if (!is_courtroom_constructed()) { return; } w_courtroom->clear_chars(); - for (int n_element = 0; n_element < f_contents.size(); ++n_element) + for (int n_element = 0; n_element < content.size(); ++n_element) { - QStringList sub_elements = f_contents.at(n_element).split("&"); + QStringList sub_elements = content.at(n_element).split("&"); for (QString &sub_element : sub_elements) { sub_element = AOPacket::decode(sub_element); @@ -359,7 +353,7 @@ void AOApplication::server_packet_received(AOPacket p_packet) } else if (header == "SM") { - if (!courtroom_constructed || courtroom_loaded) + if (!is_courtroom_constructed() || courtroom_loaded) { return; } @@ -367,25 +361,25 @@ void AOApplication::server_packet_received(AOPacket p_packet) bool musics_time = false; int areas = 0; - for (int n_element = 0; n_element < f_contents.size(); ++n_element) + for (int n_element = 0; n_element < content.size(); ++n_element) { ++loaded_music; if (musics_time) { - w_courtroom->append_music(f_contents.at(n_element)); + w_courtroom->append_music(content.at(n_element)); } else { - if (f_contents.at(n_element).endsWith(".wav") || f_contents.at(n_element).endsWith(".mp3") || f_contents.at(n_element).endsWith(".mp4") || f_contents.at(n_element).endsWith(".ogg") || f_contents.at(n_element).endsWith(".opus")) + if (content.at(n_element).endsWith(".wav") || content.at(n_element).endsWith(".mp3") || content.at(n_element).endsWith(".mp4") || content.at(n_element).endsWith(".ogg") || content.at(n_element).endsWith(".opus")) { musics_time = true; w_courtroom->fix_last_area(); - w_courtroom->append_music(f_contents.at(n_element)); + w_courtroom->append_music(content.at(n_element)); areas--; } else { - w_courtroom->append_area(f_contents.at(n_element)); + w_courtroom->append_area(content.at(n_element)); areas++; } } @@ -401,16 +395,16 @@ void AOApplication::server_packet_received(AOPacket p_packet) } else if (header == "FM") // Fetch music ONLY { - if (!courtroom_constructed) + if (!is_courtroom_constructed()) { return; } w_courtroom->clear_music(); - for (int n_element = 0; n_element < f_contents.size(); ++n_element) + for (int n_element = 0; n_element < content.size(); ++n_element) { - w_courtroom->append_music(f_contents.at(n_element)); + w_courtroom->append_music(content.at(n_element)); } w_courtroom->list_music(); @@ -418,7 +412,7 @@ void AOApplication::server_packet_received(AOPacket p_packet) } else if (header == "FA") // Fetch areas ONLY { - if (!courtroom_constructed) + if (!is_courtroom_constructed()) { return; } @@ -426,9 +420,9 @@ void AOApplication::server_packet_received(AOPacket p_packet) w_courtroom->clear_areas(); w_courtroom->arup_clear(); - for (int n_element = 0; n_element < f_contents.size(); ++n_element) + for (int n_element = 0; n_element < content.size(); ++n_element) { - w_courtroom->append_area(f_contents.at(n_element)); + w_courtroom->append_area(content.at(n_element)); w_courtroom->arup_append(0, "Unknown", "Unknown", "Unknown"); } @@ -437,7 +431,7 @@ void AOApplication::server_packet_received(AOPacket p_packet) } else if (header == "DONE") { - if (!courtroom_constructed) + if (!is_courtroom_constructed()) { return; } @@ -452,99 +446,99 @@ void AOApplication::server_packet_received(AOPacket p_packet) } else if (header == "BN") { - if (!courtroom_constructed || f_contents.isEmpty()) + if (!is_courtroom_constructed() || content.isEmpty()) { return; } - if (f_contents.size() >= 2) + if (content.size() >= 2) { // We have a pos included in the background packet! - if (!f_contents.at(1).isEmpty()) + if (!content.at(1).isEmpty()) { // Not touching it when its empty. - w_courtroom->set_side(f_contents.at(1)); + w_courtroom->set_side(content.at(1)); } } - w_courtroom->set_background(f_contents.at(0), f_contents.size() >= 2); + w_courtroom->set_background(content.at(0), content.size() >= 2); } else if (header == "SP") { - if (!courtroom_constructed || f_contents.isEmpty()) + if (!is_courtroom_constructed() || content.isEmpty()) { return; } // We were sent a "set position" packet - w_courtroom->set_side(f_contents.at(0)); + w_courtroom->set_side(content.at(0)); } else if (header == "SD") // Send pos dropdown { - if (!courtroom_constructed || f_contents.isEmpty()) + if (!is_courtroom_constructed() || content.isEmpty()) { return; } - w_courtroom->set_pos_dropdown(f_contents.at(0).split("*")); + w_courtroom->set_pos_dropdown(content.at(0).split("*")); } // server accepting char request(CC) packet else if (header == "PV") { - if (!courtroom_constructed || f_contents.size() < 3) + if (!is_courtroom_constructed() || content.size() < 3) { return; } // For some reason, args 0 and 1 are not used (from tsu3 they're client ID and a string "CID") w_courtroom->enter_courtroom(); w_courtroom->set_courtroom_size(); - w_courtroom->update_character(f_contents.at(2).toInt()); + w_courtroom->update_character(content.at(2).toInt()); } else if (header == "MS") { - if (courtroom_constructed && courtroom_loaded) + if (is_courtroom_constructed() && courtroom_loaded) { - w_courtroom->chatmessage_enqueue(p_packet.content()); + w_courtroom->chatmessage_enqueue(packet.content()); } } else if (header == "MC") { - if (courtroom_constructed && courtroom_loaded) + if (is_courtroom_constructed() && courtroom_loaded) { - w_courtroom->handle_song(&p_packet.content()); + w_courtroom->handle_song(&packet.content()); } } else if (header == "RT") { - if (f_contents.isEmpty()) + if (content.isEmpty()) { return; } - if (courtroom_constructed) + if (is_courtroom_constructed()) { - if (f_contents.size() == 1) + if (content.size() == 1) { - w_courtroom->handle_wtce(f_contents.at(0), 0); + w_courtroom->handle_wtce(content.at(0), 0); } - else if (f_contents.size() >= 2) + else if (content.size() >= 2) { - w_courtroom->handle_wtce(f_contents.at(0), f_contents.at(1).toInt()); + w_courtroom->handle_wtce(content.at(0), content.at(1).toInt()); } } } else if (header == "HP") { - if (courtroom_constructed && f_contents.size() >= 2) + if (is_courtroom_constructed() && content.size() >= 2) { - w_courtroom->set_hp_bar(f_contents.at(0).toInt(), f_contents.at(1).toInt()); + w_courtroom->set_hp_bar(content.at(0).toInt(), content.at(1).toInt()); } } else if (header == "LE") { - if (courtroom_constructed) + if (is_courtroom_constructed()) { QVector f_evi_list; - for (QString f_string : f_contents_encoded) + for (QString f_string : packet.content()) { QStringList sub_contents = f_string.split("&"); if (sub_contents.size() < 3) @@ -572,12 +566,12 @@ void AOApplication::server_packet_received(AOPacket p_packet) } else if (header == "ARUP") { - if (courtroom_constructed && !f_contents.isEmpty()) + if (is_courtroom_constructed() && !content.isEmpty()) { - int arup_type = f_contents.at(0).toInt(); - for (int n_element = 1; n_element < f_contents.size(); n_element++) + int arup_type = content.at(0).toInt(); + for (int n_element = 1; n_element < content.size(); n_element++) { - w_courtroom->arup_modify(arup_type, n_element - 1, f_contents.at(n_element)); + w_courtroom->arup_modify(arup_type, n_element - 1, content.at(n_element)); } w_courtroom->list_areas(); } @@ -585,41 +579,41 @@ void AOApplication::server_packet_received(AOPacket p_packet) } else if (header == "IL") { - if (courtroom_constructed && !f_contents.isEmpty()) + if (is_courtroom_constructed() && !content.isEmpty()) { - w_courtroom->set_ip_list(f_contents.at(0)); + w_courtroom->set_ip_list(content.at(0)); } log_to_demo = false; } else if (header == "MU") { - if (courtroom_constructed && !f_contents.isEmpty()) + if (is_courtroom_constructed() && !content.isEmpty()) { - w_courtroom->set_mute(true, f_contents.at(0).toInt()); + w_courtroom->set_mute(true, content.at(0).toInt()); } log_to_demo = false; } else if (header == "UM") { - if (courtroom_constructed && !f_contents.isEmpty()) + if (is_courtroom_constructed() && !content.isEmpty()) { - w_courtroom->set_mute(false, f_contents.at(0).toInt()); + w_courtroom->set_mute(false, content.at(0).toInt()); log_to_demo = false; } } else if (header == "BB") { - if (courtroom_constructed && !f_contents.isEmpty()) + if (is_courtroom_constructed() && !content.isEmpty()) { - call_notice(f_contents.at(0)); + call_notice(content.at(0)); } log_to_demo = false; } else if (header == "KK") { - if (courtroom_constructed && !f_contents.isEmpty()) + if (is_courtroom_constructed() && !content.isEmpty()) { - call_notice(tr("You have been kicked from the server.\nReason: %1").arg(f_contents.at(0))); + call_notice(tr("You have been kicked from the server.\nReason: %1").arg(content.at(0))); construct_lobby(); destruct_courtroom(); } @@ -627,9 +621,9 @@ void AOApplication::server_packet_received(AOPacket p_packet) } else if (header == "KB") { - if (courtroom_constructed && !f_contents.isEmpty()) + if (is_courtroom_constructed() && !content.isEmpty()) { - call_notice(tr("You have been banned from the server.\nReason: %1").arg(f_contents.at(0))); + call_notice(tr("You have been banned from the server.\nReason: %1").arg(content.at(0))); construct_lobby(); destruct_courtroom(); } @@ -637,46 +631,46 @@ void AOApplication::server_packet_received(AOPacket p_packet) } else if (header == "BD") { - if (f_contents.isEmpty()) + if (content.isEmpty()) { return; } - call_notice(tr("You are banned on this server.\nReason: %1").arg(f_contents.at(0))); + call_notice(tr("You are banned on this server.\nReason: %1").arg(content.at(0))); log_to_demo = false; } else if (header == "ZZ") { - if (courtroom_constructed && !f_contents.isEmpty()) + if (is_courtroom_constructed() && !content.isEmpty()) { - w_courtroom->mod_called(f_contents.at(0)); + w_courtroom->mod_called(content.at(0)); } } else if (header == "TI") { // Timer packet - if (!courtroom_constructed || f_contents.size() < 2) + if (!is_courtroom_constructed() || content.size() < 2) { return; } // Timer ID is reserved as argument 0 - int id = f_contents.at(0).toInt(); + int id = content.at(0).toInt(); // Type 0 = start/resume/sync timer at time // Type 1 = pause timer at time // Type 2 = show timer // Type 3 = hide timer - int type = f_contents.at(1).toInt(); + int type = content.at(1).toInt(); if (type == 0 || type == 1) { - if (f_contents.size() < 3) + if (content.size() < 3) { return; } // The time as displayed on the clock, in milliseconds. // If the number received is negative, stop the timer. - qint64 timer_value = f_contents.at(2).toLongLong(); + qint64 timer_value = content.at(2).toLongLong(); if (timer_value > 0) { if (type == 0) @@ -706,7 +700,7 @@ void AOApplication::server_packet_received(AOPacket p_packet) } else if (header == "CHECK") { - if (!courtroom_constructed) + if (!is_courtroom_constructed()) { return; } @@ -722,12 +716,12 @@ void AOApplication::server_packet_received(AOPacket p_packet) // Subtheme packet else if (header == "ST") { - if (!courtroom_constructed || f_contents.isEmpty()) + if (!is_courtroom_constructed() || content.isEmpty()) { return; } // Subtheme reserved as argument 0 - subtheme = f_contents.at(0); + subtheme = content.at(0); // Check if we have subthemes set to "server" if (Options::getInstance().settingsSubTheme().toLower() != "server") @@ -737,7 +731,7 @@ void AOApplication::server_packet_received(AOPacket p_packet) } // Reload theme request - if (f_contents.size() > 1 && f_contents.at(1) == "1") + if (content.size() > 1 && content.at(1) == "1") { Options::getInstance().setServerSubTheme(subtheme); w_courtroom->on_reload_theme_clicked(); @@ -746,15 +740,15 @@ void AOApplication::server_packet_received(AOPacket p_packet) // Auth packet else if (header == "AUTH") { - if (!courtroom_constructed || !auth_packet_supported || f_contents.isEmpty()) + if (!is_courtroom_constructed() || !auth_packet_supported || content.isEmpty()) { return; } bool ok; - int authenticated = f_contents.at(0).toInt(&ok); + int authenticated = content.at(0).toInt(&ok); if (!ok) { - qWarning() << "Malformed AUTH packet! Contents:" << f_contents.at(0); + qWarning() << "Malformed AUTH packet! Contents:" << content.at(0); } w_courtroom->on_authentication_state_received(authenticated); @@ -762,12 +756,12 @@ void AOApplication::server_packet_received(AOPacket p_packet) } else if (header == "JD") { - if (!courtroom_constructed || f_contents.isEmpty()) + if (!is_courtroom_constructed() || content.isEmpty()) { return; } bool ok; - Courtroom::JudgeState state = static_cast(f_contents.at(0).toInt(&ok)); + Courtroom::JudgeState state = static_cast(content.at(0).toInt(&ok)); if (!ok) { return; // ignore malformed packet @@ -786,11 +780,11 @@ void AOApplication::server_packet_received(AOPacket p_packet) // AssetURL Packet else if (header == "ASS") { - if (f_contents.size() > 1 || f_contents.isEmpty()) + if (content.size() > 1 || content.isEmpty()) { // This can never be more than one link. return; } - QUrl t_asset_url = QUrl::fromPercentEncoding(f_contents.at(0).toUtf8()); + QUrl t_asset_url = QUrl::fromPercentEncoding(content.at(0).toUtf8()); if (t_asset_url.isValid()) { asset_url = t_asset_url.toString(); @@ -799,7 +793,7 @@ void AOApplication::server_packet_received(AOPacket p_packet) if (log_to_demo) { - append_to_demofile(f_packet_encoded); + append_to_demofile(packet.toString(true)); } } diff --git a/src/path_functions.cpp b/src/path_functions.cpp index 7953d921..d68535c4 100644 --- a/src/path_functions.cpp +++ b/src/path_functions.cpp @@ -66,7 +66,7 @@ VPath AOApplication::get_music_path(QString p_song) VPath AOApplication::get_background_path(QString p_file) { - if (courtroom_constructed) + if (is_courtroom_constructed()) { return VPath("background/" + w_courtroom->get_current_background() + "/" + p_file); } diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp index 0390225f..e7c4511b 100644 --- a/src/text_file_functions.cpp +++ b/src/text_file_functions.cpp @@ -447,13 +447,15 @@ QString AOApplication::get_showname(QString p_char, int p_emote) QString f_result = read_char_ini(p_char, "showname", "Options"); QString f_needed = read_char_ini(p_char, "needs_showname", "Options"); - if (p_emote != -1) { - int override_idx = - read_char_ini(p_char, QString::number(p_emote + 1), "OptionsN").toInt(); - if (override_idx > 0) { + if (p_emote != -1) + { + int override_idx = read_char_ini(p_char, QString::number(p_emote + 1), "OptionsN").toInt(); + if (override_idx > 0) + { QString override_key = "Options" + QString::number(override_idx); QString temp_f_result = read_char_ini(p_char, "showname", override_key); - if (!temp_f_result.isEmpty()) { + if (!temp_f_result.isEmpty()) + { f_result = temp_f_result; } } @@ -485,30 +487,38 @@ QString AOApplication::get_blipname(QString p_char, int p_emote) { QString f_result = read_char_ini(p_char, "blips", "Options"); - if (p_emote != -1) { - int override_idx = - read_char_ini(p_char, QString::number(p_emote + 1), "OptionsN").toInt(); - if (override_idx > 0) { + if (p_emote != -1) + { + int override_idx = read_char_ini(p_char, QString::number(p_emote + 1), "OptionsN").toInt(); + if (override_idx > 0) + { QString override_key = "Options" + QString::number(override_idx); QString temp_f_result = read_char_ini(p_char, "blips", override_key); - if (!temp_f_result.isEmpty()) { + if (!temp_f_result.isEmpty()) + { f_result = temp_f_result; } } } - if (f_result == "") { - f_result = - read_char_ini(p_char, "gender", "Options"); // not very PC, FanatSors - if (f_result == "") f_result = "male"; + if (f_result == "") + { + f_result = read_char_ini(p_char, "gender", "Options"); // not very PC, FanatSors + if (f_result == "") + { + f_result = "male"; + } } return f_result; } QString AOApplication::get_blips(QString p_blipname) { - if (!file_exists(get_sfx_suffix(get_sounds_path(p_blipname)))) { + if (!file_exists(get_sfx_suffix(get_sounds_path(p_blipname)))) + { if (file_exists(get_sfx_suffix(get_sounds_path("../blips/" + p_blipname)))) + { return "../blips/" + p_blipname; // Return the cool kids variant + } return "sfx-blip" + p_blipname; // Return legacy variant } diff --git a/src/widgets/server_editor_dialog.cpp b/src/widgets/server_editor_dialog.cpp index 102e9030..386950e3 100644 --- a/src/widgets/server_editor_dialog.cpp +++ b/src/widgets/server_editor_dialog.cpp @@ -4,6 +4,7 @@ #include "gui_utils.h" #include "options.h" +#include #include #include #include -- cgit From b306929311f04dced4e5c0d9c55509df0553bfb1 Mon Sep 17 00:00:00 2001 From: TrickyLeifa Date: Fri, 17 May 2024 19:44:37 +0200 Subject: Resolved merge conflicts. This comment format is just tiring for the eyes. Imagine being on 1080p and not being able to read more than 5 method definitions due to comments. --- CMakeLists.txt | 2 + src/courtroom.cpp | 164 +++++++++++++++------------- src/packet_distribution.cpp | 86 ++++++++------- src/serverdata.cpp | 65 +++++------ src/serverdata.h | 255 ++++++++++++++++++++++---------------------- 5 files changed, 295 insertions(+), 277 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f3684f1c..d482a5c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,6 +91,8 @@ add_executable(Attorney_Online src/path_functions.cpp src/scrolltext.cpp src/scrolltext.h + src/serverdata.cpp + src/serverdata.h src/text_file_functions.cpp src/widgets/aooptionsdialog.cpp src/widgets/aooptionsdialog.h diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 7c766cc5..94f6af5b 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -727,8 +727,8 @@ void Courtroom::set_widgets() // If there is a point to it, show all CCCC features. // We also do this this soon so that set_size_and_pos can hide them all later, // if needed. - if (ao_app->m_serverdata.get_feature( - server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) { + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) + { ui_pair_button->show(); ui_immediate->show(); ui_showname_enable->show(); @@ -1574,8 +1574,7 @@ void Courtroom::update_character(int p_cid, QString char_name, bool reset_emote) } ui_custom_objection->hide(); - if (ao_app->m_serverdata.get_feature( - server::BASE_FEATURE_SET::CUSTOMOBJECTIONS)) // if setting is enabled + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CUSTOMOBJECTIONS)) // if setting is enabled { custom_obj_menu->clear(); custom_objections_list.clear(); @@ -1650,6 +1649,7 @@ void Courtroom::enter_courtroom() set_evidence_page(); if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::FLIPPING)) + { ui_flip->show(); } else @@ -1658,6 +1658,7 @@ void Courtroom::enter_courtroom() } if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ADDITIVE)) + { ui_additive->show(); } else @@ -1754,7 +1755,6 @@ void Courtroom::list_music() { parent = treeItem; } - ++n_listed_songs; } ui_music_list->expandAll(); // Needs to somehow remember which categories were @@ -1776,7 +1776,8 @@ void Courtroom::list_areas() QString i_area; i_area.append(area_list.at(n_area)); - if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ARUP)) { + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ARUP)) + { i_area.append("\n "); i_area.append(arup_statuses.at(n_area)); @@ -1806,7 +1807,8 @@ void Courtroom::list_areas() treeItem->setText(0, area_list.at(n_area)); treeItem->setText(1, i_area); - if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ARUP)) { + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ARUP)) + { // Coloring logic here. treeItem->setBackground(1, free_brush); if (arup_locks.at(n_area) == "LOCKED") @@ -1873,12 +1875,11 @@ void Courtroom::append_server_chatmessage(QString p_name, QString p_message, QSt color = ao_app->get_color("ms_chatlog_sender_color", "courtroom_fonts.ini").name(); } if (p_color == "1") - {color = - ao_app->get_color("server_chatlog_sender_color", "courtroom_fonts.ini") - .name();} - if (!ao_app->m_serverdata.get_feature( - server::BASE_FEATURE_SET::AUTH_PACKET) && - p_message == "Logged in as a moderator.") { + { + color = ao_app->get_color("server_chatlog_sender_color", "courtroom_fonts.ini").name(); + } + if (!ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::AUTH_PACKET) && p_message == "Logged in as a moderator.") + { // Emulate successful authentication on_authentication_state_received(1); } @@ -1974,10 +1975,12 @@ void Courtroom::on_chat_return_pressed() int f_desk_mod = DESK_SHOW; - if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::DESKMOD)) { - f_desk_mod = ao_app->get_desk_mod(current_char, current_emote);{} - if (!ao_app->m_serverdata.get_feature( - server::BASE_FEATURE_SET::EXPANDED_DESK_MODS)) { + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::DESKMOD)) + { + f_desk_mod = ao_app->get_desk_mod(current_char, current_emote); + {} + if (!ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EXPANDED_DESK_MODS)) + { if (f_desk_mod == DESK_PRE_ONLY_EX || f_desk_mod == DESK_PRE_ONLY) { f_desk_mod = DESK_HIDE; @@ -2028,8 +2031,8 @@ void Courtroom::on_chat_return_pressed() f_emote_mod = PREANIM; } // Turn zoom into preanim zoom - else if (f_emote_mod == ZOOM && ao_app->m_serverdata.get_feature( - server::BASE_FEATURE_SET::PREZOOM)) { + else if (f_emote_mod == ZOOM && ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::PREZOOM)) + { f_emote_mod = PREANIM_ZOOM; } // Play the sfx @@ -2091,10 +2094,8 @@ void Courtroom::on_chat_return_pressed() QString f_obj_state; - if ((objection_state == 4 && - !ao_app->m_serverdata.get_feature( - server::BASE_FEATURE_SET::CUSTOMOBJECTIONS)) || - (objection_state < 0)) { + if ((objection_state == 4 && !ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CUSTOMOBJECTIONS)) || (objection_state < 0)) + { f_obj_state = "0"; } else if (objection_custom != "" && objection_state == 4) @@ -2128,7 +2129,8 @@ void Courtroom::on_chat_return_pressed() QString f_flip; - if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::FLIPPING)) { + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::FLIPPING)) + { if (ui_flip->isChecked()) { f_flip = "1"; @@ -2165,11 +2167,12 @@ void Courtroom::on_chat_return_pressed() packet_contents.append(f_text_color); // If the server we're on supports CCCC stuff, we should use it! - if (ao_app->m_serverdata.get_feature( - server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) { + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) + { // If there is a showname entered, use that -- else, just send an empty // packet-part. - if (!ui_ic_chat_name->text().isEmpty()) { + if (!ui_ic_chat_name->text().isEmpty()) + { packet_contents.append(ui_ic_chat_name->text()); } else @@ -2182,11 +2185,10 @@ void Courtroom::on_chat_return_pressed() if (other_charid > -1 && other_charid != m_cid) { QString packet = QString::number(other_charid); - if (ao_app->m_serverdata.get_feature( - server::BASE_FEATURE_SET::EFFECTS)) // Only servers with effects - // enabled will support pair - // reordering - { + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) // Only servers with effects + // enabled will support pair + // reordering + { packet += "^" + QString::number(pair_order); } packet_contents.append(packet); @@ -2196,9 +2198,10 @@ void Courtroom::on_chat_return_pressed() packet_contents.append("-1"); } // Send the offset as it's gonna be used regardless - if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::Y_OFFSET)){ - packet_contents.append(QString::number(char_offset) + "&" + - QString::number(char_vert_offset));} + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::Y_OFFSET)) + { + packet_contents.append(QString::number(char_offset) + "&" + QString::number(char_vert_offset)); + } else { packet_contents.append(QString::number(char_offset)); @@ -2217,9 +2220,9 @@ void Courtroom::on_chat_return_pressed() // If the server we're on supports Looping SFX and Screenshake, use it if the // emote uses it. - if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::LOOPING_SFX)) { - packet_contents.append( - ao_app->get_sfx_looping(current_char, current_emote)); + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::LOOPING_SFX)) + { + packet_contents.append(ao_app->get_sfx_looping(current_char, current_emote)); packet_contents.append(QString::number(screenshake_state)); QString pre_emote = ao_app->get_pre_emote(current_char, current_emote); @@ -2247,14 +2250,14 @@ void Courtroom::on_chat_return_pressed() } } - if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ADDITIVE)) { + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::ADDITIVE)) + { packet_contents.append(ui_additive->isChecked() ? "1" : "0"); } - if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) { - QString p_effect_folder = - ao_app->read_char_ini(current_char, "effects", "Options"); - QString fx_sound = - ao_app->get_effect_property(effect, current_char, p_effect_folder, "sound"); + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) + { + QString p_effect_folder = ao_app->read_char_ini(current_char, "effects", "Options"); + QString fx_sound = ao_app->get_effect_property(effect, current_char, p_effect_folder, "sound"); // Don't overlap the two sfx if (!ui_pre->isChecked() && (!custom_sfx.isEmpty() || ui_sfx_dropdown->currentIndex() == 1)) @@ -2434,10 +2437,8 @@ void Courtroom::unpack_chatmessage(QStringList p_contents) // amongst the packet's content. We also have to check if the server even // supports CCCC's IC features, or if it's just japing us. Also, don't // forget! A size 15 message will have indices from 0 to 14. - if (n_string < p_contents.size() && - (n_string < MS_MINIMUM || - ao_app->m_serverdata.get_feature( - server::BASE_FEATURE_SET::CCCC_IC_SUPPORT))) { + if (n_string < p_contents.size() && (n_string < MS_MINIMUM || ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CCCC_IC_SUPPORT))) + { m_chatmessage[n_string] = p_contents.at(n_string); } else @@ -2794,9 +2795,8 @@ void Courtroom::display_pair_character(QString other_charid, QString other_offse } } // Flip the pair character - if (ao_app->m_serverdata.get_feature( - server::BASE_FEATURE_SET::FLIPPING) && - m_chatmessage[OTHER_FLIP].toInt() == 1){ + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::FLIPPING) && m_chatmessage[OTHER_FLIP].toInt() == 1) + { ui_vp_sideplayer_char->set_flipped(true); } else @@ -4004,9 +4004,8 @@ void Courtroom::start_chat_ticking() QString f_blips = ao_app->get_blipname(m_chatmessage[CHAR_NAME]); f_blips = ao_app->get_blips(f_blips); - if (ao_app->m_serverdata.get_feature( - server::BASE_FEATURE_SET::CUSTOM_BLIPS) && - !m_chatmessage[BLIPNAME].isEmpty()) { + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CUSTOM_BLIPS) && !m_chatmessage[BLIPNAME].isEmpty()) + { f_blips = ao_app->get_blips(m_chatmessage[BLIPNAME]); } blip_player->setBlip(f_blips); @@ -4463,11 +4462,9 @@ void Courtroom::handle_song(QStringList *p_contents) } } - if (!file_exists(ao_app->get_sfx_suffix(ao_app->get_music_path(f_song))) && - !f_song.startsWith("http") && f_song != "~stop.mp3" && - !ao_app->m_serverdata.get_asset_url().isEmpty()) { - f_song = (ao_app->m_serverdata.get_asset_url() + "sounds/music/" + f_song) - .toLower(); + if (!file_exists(ao_app->get_sfx_suffix(ao_app->get_music_path(f_song))) && !f_song.startsWith("http") && f_song != "~stop.mp3" && !ao_app->m_serverdata.get_asset_url().isEmpty()) + { + f_song = (ao_app->m_serverdata.get_asset_url() + "sounds/music/" + f_song).toLower(); } bool is_stop = (f_song == "~stop.mp3"); @@ -4686,11 +4683,12 @@ void Courtroom::on_ooc_return_pressed() { QString ooc_message = ui_ooc_chat_message->text(); - //We ignore it when the server is compatible with 2.8 - //Using an arbitrary 2.8 feature flag certainly won't cause issues someday. - if (ooc_message.startsWith("/pos") && - ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) { - if (ooc_message == "/pos jud") { + // We ignore it when the server is compatible with 2.8 + // Using an arbitrary 2.8 feature flag certainly won't cause issues someday. + if (ooc_message.startsWith("/pos") && ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) + { + if (ooc_message == "/pos jud") + { show_judge_controls(true); } else @@ -5514,12 +5512,12 @@ void Courtroom::on_music_list_double_clicked(QTreeWidgetItem *p_item, int column QStringList packet_contents; packet_contents.append(p_song); packet_contents.append(QString::number(m_cid)); - if ((!ui_ic_chat_name->text().isEmpty() && - ao_app->m_serverdata.get_feature( - server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) || - ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) + if ((!ui_ic_chat_name->text().isEmpty() && ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) || ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) + { packet_contents.append(ui_ic_chat_name->text()); - if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)){ + } + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) + { packet_contents.append(QString::number(music_flags)); } ao_app->send_server_packet(AOPacket("MC", packet_contents)); @@ -5628,6 +5626,7 @@ void Courtroom::music_list_expand_all() { ui_music_list->expandAll(); } + void Courtroom::music_list_collapse_all() { ui_music_list->collapseAll(); @@ -5645,6 +5644,7 @@ void Courtroom::music_stop(bool no_effects) { return; } + // Default fake song is a song present in Vanilla content, the ~stop.mp3 QString fake_song = "~stop.mp3"; // If the fake song is not present in the music list @@ -5662,21 +5662,29 @@ void Courtroom::music_stop(bool no_effects) } } } + QStringList packet_contents; // its music list packet_contents.append(fake_song); // this is our fake song, playing it triggers special code packet_contents.append(QString::number(m_cid)); - if ((!ui_ic_chat_name->text().isEmpty() && - ao_app->m_serverdata.get_feature( - server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) || - ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) + + if ((!ui_ic_chat_name->text().isEmpty() && ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::CCCC_IC_SUPPORT)) || ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) + { packet_contents.append(ui_ic_chat_name->text()); - if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) { + } + + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::EFFECTS)) + { if (no_effects) + { packet_contents.append("0"); + } else + { packet_contents.append(QString::number(music_flags)); + } - ao_app->send_server_packet(AOPacket("MC", packet_contents)); + ao_app->send_server_packet(AOPacket("MC", packet_contents)); + } } void Courtroom::on_area_list_double_clicked(QTreeWidgetItem *p_item, int column) @@ -5866,7 +5874,9 @@ void Courtroom::on_pair_clicked() ui_pair_list->show(); ui_pair_offset_spinbox->show(); if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::Y_OFFSET)) + { ui_pair_vert_offset_spinbox->show(); + } ui_pair_order_dropdown->show(); ui_mute_list->hide(); ui_mute->setImage("mute"); @@ -6179,8 +6189,8 @@ void Courtroom::on_spectator_clicked() void Courtroom::on_call_mod_clicked() { - if (ao_app->m_serverdata.get_feature( - server::BASE_FEATURE_SET::MODCALL_REASON)) { + if (ao_app->m_serverdata.get_feature(server::BASE_FEATURE_SET::MODCALL_REASON)) + { QMessageBox errorBox; QInputDialog input; diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 1a0e798c..8b86b345 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -87,7 +87,8 @@ void AOApplication::server_packet_received(AOPacket packet) w_courtroom->append_server_chatmessage(content.at(0), content.at(1), "0"); } } - else if (header == "FL") { + else if (header == "FL") + { m_serverdata.set_features(content); log_to_demo = false; } @@ -114,44 +115,40 @@ void AOApplication::server_packet_received(AOPacket packet) return; } - char_list_size = content.at(0).toInt(); - evidence_list_size = content.at(1).toInt(); - music_list_size = content.at(2).toInt(); - - if (char_list_size < 0 || evidence_list_size < 0 || music_list_size < 0) - { - return; - } - -generated_chars = 0; + generated_chars = 0; -destruct_courtroom(); -construct_courtroom(); + destruct_courtroom(); + construct_courtroom(); -courtroom_loaded = false; + courtroom_loaded = false; -int selected_server = w_lobby->get_selected_server(); -QString server_address ; -QString server_name ; -switch (w_lobby->pageSelected()) { -case 0: - if (selected_server >= 0 && selected_server < server_list.size()) { - auto info = server_list.at(selected_server); - server_name = info.name; - server_address = QString("%1:%2").arg(info.ip, QString::number(info.port)); - window_title = server_name; - } - break; + int selected_server = w_lobby->get_selected_server(); + QString server_address; + QString server_name; + switch (w_lobby->pageSelected()) + { + case 0: + if (selected_server >= 0 && selected_server < server_list.size()) + { + auto info = server_list.at(selected_server); + server_name = info.name; + server_address = QString("%1:%2").arg(info.ip, QString::number(info.port)); + window_title = server_name; + } + break; -case 1: { - QVector favorite_list = Options::getInstance().favorites(); - if (selected_server >= 0 && selected_server < favorite_list.size()) { - auto info = favorite_list.at(selected_server); - server_name = info.name; - server_address = QString("%1:%2").arg(info.ip, QString::number(info.port)); - window_title = server_name; - } -} break; + case 1: + { + QVector favorite_list = Options::getInstance().favorites(); + if (selected_server >= 0 && selected_server < favorite_list.size()) + { + auto info = favorite_list.at(selected_server); + server_name = info.name; + server_address = QString("%1:%2").arg(info.ip, QString::number(info.port)); + window_title = server_name; + } + } + break; case 2: window_title = "Local Demo Recording"; break; @@ -254,9 +251,10 @@ case 1: { bool musics_time = false; int areas = 0; - for (int n_element = 0; n_element < content.size(); ++n_element) { - ++loaded_music; - if (musics_time) { + for (int n_element = 0; n_element < content.size(); ++n_element) + { + if (musics_time) + { w_courtroom->append_music(content.at(n_element)); } else @@ -629,11 +627,11 @@ case 1: { } } // Auth packet - else if (header == "AUTH") { - if (!is_courtroom_constructed() || - !m_serverdata.get_feature(server::BASE_FEATURE_SET::AUTH_PACKET) || - contents.isEmpty()) { - return; + else if (header == "AUTH") + { + if (!is_courtroom_constructed() || !m_serverdata.get_feature(server::BASE_FEATURE_SET::AUTH_PACKET) || content.isEmpty()) + { + return; } bool ok; int authenticated = content.at(0).toInt(&ok); @@ -676,7 +674,7 @@ case 1: { return; } - m_serverdata.set_asset_url(contents.at(0)); + m_serverdata.set_asset_url(content.at(0)); } if (log_to_demo) diff --git a/src/serverdata.cpp b/src/serverdata.cpp index b8a08df8..5b3d139d 100644 --- a/src/serverdata.cpp +++ b/src/serverdata.cpp @@ -3,38 +3,43 @@ #include #include -namespace server { - bool ServerData::get_feature(const BASE_FEATURE_SET &f_feature) const +namespace server +{ +bool ServerData::get_feature(const BASE_FEATURE_SET &f_feature) const +{ + return get_feature(QVariant::fromValue(f_feature).toString()); +} + +bool ServerData::get_feature(const QString &f_feature) const +{ + return m_features.contains(f_feature, Qt::CaseInsensitive); +} + +void ServerData::set_features(const QStringList &f_feature_list) +{ + m_features = f_feature_list; +} + +void ServerData::set_server_software(const QString &newServer_software) +{ + m_server_software = newServer_software; +} + +QString ServerData::get_asset_url() const +{ + return m_asset_url; +} + +void ServerData::set_asset_url(const QString &f_asset_url) +{ + QUrl l_asset_url = QUrl::fromPercentEncoding(f_asset_url.toUtf8()); + + if (l_asset_url.isValid()) { - return get_feature(QVariant::fromValue(f_feature).toString()); + m_asset_url = l_asset_url.toString(); } - bool ServerData::get_feature(const QString &f_feature) const - { - return m_features.contains(f_feature, Qt::CaseInsensitive); - } - - void ServerData::set_features(const QStringList &f_feature_list) - { - m_features = f_feature_list; - } - - void ServerData::set_server_software(const QString &newServer_software) - { - m_server_software = newServer_software; - } - - QString ServerData::get_asset_url() const { return m_asset_url; } - - void ServerData::set_asset_url(const QString &f_asset_url) - { - QUrl l_asset_url = QUrl::fromPercentEncoding(f_asset_url.toUtf8()); - - if (l_asset_url.isValid()) { - m_asset_url = l_asset_url.toString(); - } - - m_asset_url = f_asset_url; - } + m_asset_url = f_asset_url; +} } // namespace server diff --git a/src/serverdata.h b/src/serverdata.h index 0c342660..99351852 100644 --- a/src/serverdata.h +++ b/src/serverdata.h @@ -5,149 +5,152 @@ #include #include -namespace server { - Q_NAMESPACE +namespace server +{ +Q_NAMESPACE - /// The base feature set that almost all servers are supposed to support. - enum class BASE_FEATURE_SET { - YELLOWTEXT, ///< Yellow text in in-character messages. +/// The base feature set that almost all servers are supposed to support. +enum class BASE_FEATURE_SET +{ + YELLOWTEXT, ///< Yellow text in in-character messages. ///< @since 2.1.0 - FLIPPING, ///< The ability to mirror a character in-game. + FLIPPING, ///< The ability to mirror a character in-game. ///< @since 2.1.0 - CUSTOMOBJECTIONS, ///< Enables the use of a single custom objection named + CUSTOMOBJECTIONS, ///< Enables the use of a single custom objection named ///< `custom`. ///< @since 2.1.0 - FASTLOADING, ///< Enables the use of "fast loading" instead of the legacy - ///< loading protocol. - ///< @since 2.1.0 - NOENCRYPTION, ///< Disables "FantaCrypt" for the remainder of the session. - ///< @since 2.1.0 - DESKMOD, ///< Allows forcing the appearance or disappearance of the desk. - ///< @since 2.3 to 2.5 - EVIDENCE, ///< Allows creating and presenting evidence. - ///< @since 2.3 to 2.5 - CCCC_IC_SUPPORT, ///< The ability to pair up with another user's character, - ///< the ability to change one's displayed name - ///< in-character ("showname"), and the ability to perform - ///< "immediate" preanimations (ones that happen alongside - ///< text display). - ///< @since 2.6.0 - ARUP, ///< Areas have more data about them than just their name (including - ///< their status, their "lockedness", and who is the Case Master in - ///< the area), and sets the client up to receive and send ARUP - ///< packets. - ///< @since 2.6.0 - CASING_ALERTS, ///< The client gains a new window to announce cases with, - ///< and the settings to set itself up to receive case alerts - ///< based on casing preferences. No longer used. - ///< @since 2.6.0 - MODCALL_REASON, ///< Enables entering a custom reason for calling - ///< moderators. - ///< @since 2.6.0 - LOOPING_SFX, ///< Enables looping SFX extensions for the in-character - ///< command. - ///< @since 2.8.0 - ADDITIVE, ///< Enables "additive" text that allows in-character messages to - ///< concatenate to the previous one sent by the same character. - ///< @since 2.8.0 - EFFECTS, ///< Enables effect overlays. - ///< @since 2.8.0 - Y_OFFSET, ///< Enables support for vertical offsets. - ///< @since 2.9.0 - EXPANDED_DESK_MODS, ///< Enables desk modifiers 2 through 5. - ///< @since 2.9.0 - AUTH_PACKET, ///< Enables the use of the AUTH packet. - ///< @since 2.9.1 - PREZOOM, ///< Preanim zoom. - CUSTOM_BLIPS ///< Allows the in-character messages to contain data about - ///< what blips to use for the character's current message. - }; - Q_ENUM_NS(BASE_FEATURE_SET) + FASTLOADING, ///< Enables the use of "fast loading" instead of the legacy + ///< loading protocol. + ///< @since 2.1.0 + NOENCRYPTION, ///< Disables "FantaCrypt" for the remainder of the session. + ///< @since 2.1.0 + DESKMOD, ///< Allows forcing the appearance or disappearance of the desk. + ///< @since 2.3 to 2.5 + EVIDENCE, ///< Allows creating and presenting evidence. + ///< @since 2.3 to 2.5 + CCCC_IC_SUPPORT, ///< The ability to pair up with another user's character, + ///< the ability to change one's displayed name + ///< in-character ("showname"), and the ability to perform + ///< "immediate" preanimations (ones that happen alongside + ///< text display). + ///< @since 2.6.0 + ARUP, ///< Areas have more data about them than just their name (including + ///< their status, their "lockedness", and who is the Case Master in + ///< the area), and sets the client up to receive and send ARUP + ///< packets. + ///< @since 2.6.0 + CASING_ALERTS, ///< The client gains a new window to announce cases with, + ///< and the settings to set itself up to receive case alerts + ///< based on casing preferences. No longer used. + ///< @since 2.6.0 + MODCALL_REASON, ///< Enables entering a custom reason for calling + ///< moderators. + ///< @since 2.6.0 + LOOPING_SFX, ///< Enables looping SFX extensions for the in-character + ///< command. + ///< @since 2.8.0 + ADDITIVE, ///< Enables "additive" text that allows in-character messages to + ///< concatenate to the previous one sent by the same character. + ///< @since 2.8.0 + EFFECTS, ///< Enables effect overlays. + ///< @since 2.8.0 + Y_OFFSET, ///< Enables support for vertical offsets. + ///< @since 2.9.0 + EXPANDED_DESK_MODS, ///< Enables desk modifiers 2 through 5. + ///< @since 2.9.0 + AUTH_PACKET, ///< Enables the use of the AUTH packet. + ///< @since 2.9.1 + PREZOOM, ///< Preanim zoom. + CUSTOM_BLIPS ///< Allows the in-character messages to contain data about + ///< what blips to use for the character's current message. +}; +Q_ENUM_NS(BASE_FEATURE_SET) +/** + * @brief Arranges data about the server the client is connected to. + */ +class ServerData +{ +public: /** - * @brief Arranges data about the server the client is connected to. + * @brief Returns true if one of the standard features exists on the server. + * + * @details Internally, this calls get_feature(const QString &f_feature) + * with the enum's value converted to string. + * + * @param f_feature The feature to check for. + * + * @return True if the feature exists on the server. */ - class ServerData { - public: - /** - * @brief Returns true if one of the standard features exists on the server. - * - * @details Internally, this calls get_feature(const QString &f_feature) - * with the enum's value converted to string. - * - * @param f_feature The feature to check for. - * - * @return True if the feature exists on the server. - */ - bool get_feature(const BASE_FEATURE_SET &f_feature) const; + bool get_feature(const BASE_FEATURE_SET &f_feature) const; - /** - * @brief Returns true if the feature exists on the server. - * - * @param f_feature The feature to check for. Case insensitive. - * - * @return True if the feature exists on the server. - */ - bool get_feature(const QString &f_feature) const; + /** + * @brief Returns true if the feature exists on the server. + * + * @param f_feature The feature to check for. Case insensitive. + * + * @return True if the feature exists on the server. + */ + bool get_feature(const QString &f_feature) const; - /** - * @brief Sets the feature list, overwriting the existing one. - * - * @param f_feature_list The new feature list of the server. - */ - void set_features(const QStringList &f_feature_list); + /** + * @brief Sets the feature list, overwriting the existing one. + * + * @param f_feature_list The new feature list of the server. + */ + void set_features(const QStringList &f_feature_list); - /** - * @brief Self-explanatory: gets the software the server is running on. - * - * @return As brief description. - */ - QString get_server_software() const; + /** + * @brief Self-explanatory: gets the software the server is running on. + * + * @return As brief description. + */ + QString get_server_software() const; - /** - * @brief Self-explanatory: setter for server software. - * - * @param f_software The new server software. - */ - void set_server_software(const QString &f_software); + /** + * @brief Self-explanatory: setter for server software. + * + * @param f_software The new server software. + */ + void set_server_software(const QString &f_software); - /** - * @brief Getter for the server's asset URL. - * - * @return As brief description. - * - * @see m_asset_url - */ - QString get_asset_url() const; + /** + * @brief Getter for the server's asset URL. + * + * @return As brief description. + * + * @see m_asset_url + */ + QString get_asset_url() const; - /** - * @brief Attempts to set the new asset URL for the server. - * - * @details The function converts the sole parameter into UTF-8, then - * attempts to percent decode it. The URL is only set if all these steps - * successfully happen. - * - * @param f_asset_url A QString that contains the URL. - */ - void set_asset_url(const QString &f_asset_url); + /** + * @brief Attempts to set the new asset URL for the server. + * + * @details The function converts the sole parameter into UTF-8, then + * attempts to percent decode it. The URL is only set if all these steps + * successfully happen. + * + * @param f_asset_url A QString that contains the URL. + */ + void set_asset_url(const QString &f_asset_url); - private: - /// The features available on the server. Determines what - QStringList m_features; +private: + /// The features available on the server. Determines what + QStringList m_features; - /// The software the server is running. - QString m_server_software; + /// The software the server is running. + QString m_server_software; - /** - * @brief A QString of an URL that defines the content repository - * send by the server. - * - * @details Introduced in Version 2.9.2. - * Addresses the issue of contenturl devlivery for WebAO - * without relying on someone adding the link manually. - */ - QString m_asset_url; - }; + /** + * @brief A QString of an URL that defines the content repository + * send by the server. + * + * @details Introduced in Version 2.9.2. + * Addresses the issue of contenturl devlivery for WebAO + * without relying on someone adding the link manually. + */ + QString m_asset_url; +}; } // namespace server #endif // SERVERDATA_H -- cgit From 0500a5426013e97b80cae1de0b19a117cc1bbaa7 Mon Sep 17 00:00:00 2001 From: TrickyLeifa Date: Fri, 17 May 2024 20:36:36 +0200 Subject: Changed include definitions to reflect third-party stature --- src/aoapplication.cpp | 4 ++-- src/aoapplication.h | 23 +++++++++-------------- src/aoblipplayer.h | 7 ++++--- src/aosfxplayer.h | 6 +++--- src/widgets/aooptionsdialog.cpp | 3 ++- 5 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index b0b90e22..a3ed6b95 100644 --- a/src/aoapplication.cpp +++ b/src/aoapplication.cpp @@ -1,14 +1,14 @@ #include "aoapplication.h" -#include "bassmidi.h" #include "courtroom.h" #include "debug_functions.h" #include "lobby.h" #include "networkmanager.h" #include "options.h" - #include "widgets/aooptionsdialog.h" +#include + static QtMessageHandler original_message_handler; static AOApplication *message_handler_context; void message_handler(QtMsgType type, const QMessageLogContext &context, const QString &msg) diff --git a/src/aoapplication.h b/src/aoapplication.h index cd9265b3..c2a01914 100644 --- a/src/aoapplication.h +++ b/src/aoapplication.h @@ -7,28 +7,23 @@ #include "serverdata.h" #include "widgets/aooptionsdialog.h" -#include "bass.h" +#include #include -#include -#include -#include - -#include -#include - +#include #include - +#include #include -#include - -#include +#include +#include +#include #include +#include +#include #include #include #include - -#include +#include class NetworkManager; class Lobby; diff --git a/src/aoblipplayer.h b/src/aoblipplayer.h index c33e08b3..92b43d29 100644 --- a/src/aoblipplayer.h +++ b/src/aoblipplayer.h @@ -1,13 +1,14 @@ #pragma once -#include "bass.h" -#include "bassopus.h" - #include "aoapplication.h" +#include +#include + #include #include #include + #include class AOBlipPlayer diff --git a/src/aosfxplayer.h b/src/aosfxplayer.h index 59969569..7669f0de 100644 --- a/src/aosfxplayer.h +++ b/src/aosfxplayer.h @@ -1,10 +1,10 @@ #pragma once -#include "bass.h" -#include "bassopus.h" - #include "aoapplication.h" +#include +#include + #include #include diff --git a/src/widgets/aooptionsdialog.cpp b/src/widgets/aooptionsdialog.cpp index a25bde36..beb7e55e 100644 --- a/src/widgets/aooptionsdialog.cpp +++ b/src/widgets/aooptionsdialog.cpp @@ -2,12 +2,13 @@ #include "QDesktopServices" #include "aoapplication.h" -#include "bass.h" #include "file_functions.h" #include "gui_utils.h" #include "networkmanager.h" #include "options.h" +#include + #include #include #include -- cgit From 657145035cd66c18ae777e1272fd5221dddca0ef Mon Sep 17 00:00:00 2001 From: TrickyLeifa Date: Fri, 17 May 2024 23:54:41 +0200 Subject: Reimplemented unit tests, ... * Reimplemented unit tests and simplified addition of new tests * Minimal support of Qt is now 5.15 --- CMakeLists.txt | 13 ++----- src/courtroom.cpp | 27 ++------------ src/courtroom.h | 6 +-- src/datatypes.h | 6 --- src/demoserver.cpp | 2 +- src/eventfilters.cpp | 5 +-- src/lobby.cpp | 11 +----- src/net/nettcpconnection.cpp | 2 +- src/scrolltext.cpp | 10 +---- test/CMakeLists.txt | 35 ++++++++--------- test/test_aopacket.cpp | 89 +++++++++++++++++++++++++++----------------- test/test_apng.cpp | 67 --------------------------------- test/test_bass.cpp | 46 ----------------------- test/test_caseloading.cpp | 16 -------- 14 files changed, 88 insertions(+), 247 deletions(-) delete mode 100644 test/test_apng.cpp delete mode 100644 test/test_bass.cpp delete mode 100644 test/test_caseloading.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index d482a5c1..0fa533e3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,8 +11,7 @@ set(CMAKE_AUTOUIC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) -option(AO_BUILD_TESTS "Build test programs" OFF) -option(AO_ENABLE_BASS "Enable BASS audio library" ON) +option(AO_BUILD_TESTS "Build test programs" ON) option(AO_ENABLE_DISCORD_RPC "Enable Discord Rich Presence" ON) find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) @@ -115,12 +114,7 @@ endif() target_include_directories(Attorney_Online PRIVATE src lib) target_link_directories(Attorney_Online PRIVATE lib) -target_link_libraries(Attorney_Online PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Concurrent Qt${QT_VERSION_MAJOR}::WebSockets Qt${QT_VERSION_MAJOR}::UiTools) - -if(AO_ENABLE_BASS) - target_compile_definitions(Attorney_Online PRIVATE AO_ENABLE_BASS) - target_link_libraries(Attorney_Online PRIVATE bass bassmidi bassopus) -endif() +target_link_libraries(Attorney_Online PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Concurrent Qt${QT_VERSION_MAJOR}::WebSockets Qt${QT_VERSION_MAJOR}::UiTools bass bassopus bassmidi) if(AO_ENABLE_DISCORD_RPC) target_compile_definitions(Attorney_Online PRIVATE AO_ENABLE_DISCORD_RPC) @@ -128,5 +122,6 @@ if(AO_ENABLE_DISCORD_RPC) endif() if(AO_BUILD_TESTS) - add_subdirectory(test) + # add_subdirectory(test) endif() +add_subdirectory(test) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 94f6af5b..89c5c75c 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -9,9 +9,6 @@ Courtroom::Courtroom(AOApplication *p_ao_app) this->setWindowFlags((this->windowFlags() | Qt::CustomizeWindowHint) & ~Qt::WindowMaximizeButtonHint); ao_app->initBASS(); -#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) // Needed for pre-5.10 RNG stuff - qsrand(static_cast(QDateTime::currentMSecsSinceEpoch() / 1000)); -#endif keepalive_timer = new QTimer(this); keepalive_timer->start(45000); @@ -2947,13 +2944,8 @@ void Courtroom::do_screenshake() for (int frame = 0; frame < maxframes; frame++) { double fraction = double(frame * frequency) / duration; -#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) - int rand_x = max_deviation * (2 * (qrand() / (float)RAND_MAX) - 1) + 1; - int rand_y = max_deviation * (2 * (qrand() / (float)RAND_MAX) - 1) + 1; -#else int rand_x = QRandomGenerator::system()->bounded(-max_deviation, max_deviation); int rand_y = QRandomGenerator::system()->bounded(-max_deviation, max_deviation); -#endif screenshake_animation->setKeyValueAt(fraction, QPoint(pos_default.x() + rand_x, pos_default.y() + rand_y)); } screenshake_animation->setEndValue(pos_default); @@ -3144,12 +3136,8 @@ void Courtroom::initialize_chatbox() } QFontMetrics fm(ui_vp_showname->font()); -// Gotta support the slow paced ubuntu 18 STUCK IN 5.9.5!! -#if QT_VERSION > QT_VERSION_CHECK(5, 11, 0) + int fm_width = fm.horizontalAdvance(ui_vp_showname->text()); -#else - int fm_width = fm.boundingRect((ui_vp_showname->text())).width(); -#endif if (extra_width > 0) { QString current_path = ui_vp_chatbox->image().left(ui_vp_chatbox->image().lastIndexOf('.')); @@ -4699,7 +4687,7 @@ void Courtroom::on_ooc_return_pressed() if (ooc_message.startsWith("/load_case")) { - QStringList command = ooc_message.split(" ", AOSplitBehaviorFlags::SkipEmptyParts); + QStringList command = ooc_message.split(" ", Qt::SkipEmptyParts); QDir casefolder(get_base_path() + "/cases"); if (!casefolder.exists()) { @@ -4795,7 +4783,7 @@ void Courtroom::on_ooc_return_pressed() } else if (ooc_message.startsWith("/save_case")) { - QStringList command = ooc_message.split(" ", AOSplitBehaviorFlags::SkipEmptyParts); + QStringList command = ooc_message.split(" ", Qt::SkipEmptyParts); QDir casefolder(get_base_path() + "cases"); if (!casefolder.exists()) { @@ -5615,11 +5603,8 @@ void Courtroom::music_random() { return; } -#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) - on_music_list_double_clicked(clist.at(qrand() % clist.length()), 1); -#else + on_music_list_double_clicked(clist.at(QRandomGenerator::global()->bounded(0, clist.length())), 1); -#endif } void Courtroom::music_list_expand_all() @@ -6028,11 +6013,7 @@ void Courtroom::on_text_color_changed(int p_color) markdown_end = markdown_start; } int start = ui_ic_chat_message->selectionStart(); -#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) int end = ui_ic_chat_message->selectionEnd() + 1; -#else - int end = ui_ic_chat_message->selectedText().length() + 1; -#endif ui_ic_chat_message->setCursorPosition(start); ui_ic_chat_message->insert(markdown_start); diff --git a/src/courtroom.h b/src/courtroom.h index a42adca7..0f49839c 100644 --- a/src/courtroom.h +++ b/src/courtroom.h @@ -45,6 +45,7 @@ #include #include #include +#include #include #include #include @@ -52,10 +53,7 @@ #include #include #include -#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) -#include //added in Qt 5.10 -#endif -#include +#include #include #include #include diff --git a/src/datatypes.h b/src/datatypes.h index ab92c2e5..9463a471 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -3,12 +3,6 @@ #include #include -#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) -using AOSplitBehaviorFlags = QString::SplitBehaviorFlags; -#else -using AOSplitBehaviorFlags = Qt::SplitBehaviorFlags; -#endif - enum ServerConnectionType { TcpServerConnection, diff --git a/src/demoserver.cpp b/src/demoserver.cpp index 22f383a1..bc7cc4bd 100644 --- a/src/demoserver.cpp +++ b/src/demoserver.cpp @@ -95,7 +95,7 @@ void DemoServer::recv_data() { QString in_data = QString::fromUtf8(client_sock->readAll()); - const QStringList packet_list = in_data.split("%", AOSplitBehaviorFlags::SkipEmptyParts); + const QStringList packet_list = in_data.split("%", Qt::SkipEmptyParts); for (const QString &packet : packet_list) { QStringList f_contents; diff --git a/src/eventfilters.cpp b/src/eventfilters.cpp index 2e11b587..6f0b0f12 100644 --- a/src/eventfilters.cpp +++ b/src/eventfilters.cpp @@ -6,11 +6,8 @@ bool AOLineEditFilter::eventFilter(QObject *obj, QEvent *event) if (event->type() == QEvent::FocusOut && lineEdit != nullptr && preserve_selection) { // lost focus int start = lineEdit->selectionStart(); -#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) int len = lineEdit->selectionLength(); -#else - int len = lineEdit->selectedText().length(); -#endif + if (start != -1 && len != -1) { lineEdit->setSelection(start, len); diff --git a/src/lobby.cpp b/src/lobby.cpp index 6d42485d..f853380f 100644 --- a/src/lobby.cpp +++ b/src/lobby.cpp @@ -174,19 +174,12 @@ void Lobby::loadUI() if (!l_changelog.open(QFile::ReadOnly)) { qDebug() << "Unable to locate changelog file. Does it even exist?"; -#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + ui_game_changelog_text->setMarkdown(l_changelog_text); -#else - ui_game_changelog_text->setPlainText(l_changelog_text); // imperfect solution, but implementing Markdown - // ourselves for this edge case is out of scope -#endif return; } -#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + ui_game_changelog_text->setMarkdown(l_changelog.readAll()); -#else - ui_game_changelog_text->setPlainText((l_changelog.readAll())); -#endif l_changelog.close(); QTabWidget *l_tabbar = findChild("motd_changelog_tab"); diff --git a/src/net/nettcpconnection.cpp b/src/net/nettcpconnection.cpp index 744eed9e..2bc52b71 100644 --- a/src/net/nettcpconnection.cpp +++ b/src/net/nettcpconnection.cpp @@ -78,7 +78,7 @@ void NetTcpConnection::onReadyRead() return; } - QStringList raw_packet_list = m_cached_data.split('%', AOSplitBehaviorFlags::SkipEmptyParts); + QStringList raw_packet_list = m_cached_data.split('%', Qt::SkipEmptyParts); m_cached_data.clear(); for (QString raw_packet : raw_packet_list) { diff --git a/src/scrolltext.cpp b/src/scrolltext.cpp index a45d6abd..8e25692e 100644 --- a/src/scrolltext.cpp +++ b/src/scrolltext.cpp @@ -42,12 +42,8 @@ void ScrollText::setSeparator(QString separator) void ScrollText::updateText() { timer.stop(); -#if QT_VERSION > QT_VERSION_CHECK(5, 11, 0) - singleTextWidth = fontMetrics().horizontalAdvance(m_text); -#else - singleTextWidth = fontMetrics().boundingRect(_text).width(); -#endif + singleTextWidth = fontMetrics().horizontalAdvance(m_text); scrollEnabled = (singleTextWidth > width() - leftMargin * 2); if (scrollEnabled) @@ -62,11 +58,7 @@ void ScrollText::updateText() } staticText.prepare(QTransform(), font()); -#if QT_VERSION > QT_VERSION_CHECK(5, 11, 0) wholeTextSize = QSize(fontMetrics().horizontalAdvance(staticText.text()), fontMetrics().height()); -#else - wholeTextSize = QSize(fontMetrics().boundingRect(staticText.text()).width(), fontMetrics().height()); -#endif } void ScrollText::paintEvent(QPaintEvent *) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c6b191e4..4c1d0980 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,20 +1,21 @@ -find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Gui Widgets REQUIRED) -find_package(Catch2 REQUIRED) +project(tests LANGUAGES CXX C) -target_include_directories(test PRIVATE ../src) -target_link_directories(test PRIVATE ../lib) -target_link_libraries(test PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets Catch2::Catch2) +find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Test REQUIRED) -add_executable(test - test_aopacket.cpp - test_caseloading.cpp - test_apng.cpp - ../src/aopacket.h - ../src/aopacket.cpp -) +set(CMAKE_INCLUDE_CURRENT_DIR ON) -if(AO_ENABLE_BASS) - target_compile_definitions(Attorney_Online PRIVATE AO_ENABLE_BASS) - target_link_libraries(Attorney_Online PRIVATE bass bassmidi bassopus) - target_sources(test PRIVATE test_bass.cpp) -endif() +enable_testing(true) + +set(SKIP_AUTOMOC ON) + +function(ao_declare_test test_id) + message(STATUS "FOOBAR Adding test: ${test_id}") + message(STATUS "FOOBAR Source files: ${ARGN}") + add_executable(${test_id} ${ARGN}) + target_include_directories(${test_id} PRIVATE ../src src) + target_link_directories(${test_id} PRIVATE ../lib) + target_link_libraries(${test_id} PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Test) + add_test(NAME ${test_id} COMMAND ${test_id}) +endfunction() + +ao_declare_test(test_aopacket test_aopacket.cpp ../src/aopacket.cpp) diff --git a/test/test_aopacket.cpp b/test/test_aopacket.cpp index 42ff778e..4a24dcd3 100644 --- a/test/test_aopacket.cpp +++ b/test/test_aopacket.cpp @@ -1,51 +1,70 @@ -#define CATCH_CONFIG_MAIN -#include - #include "aopacket.h" -TEST_CASE("AOPacket construct", "[aopacket]") +#include +#include + +class test_AOPacket : public QObject { - // Parameters - QString packet_string = "CT#MY_OOC_NAME#/doc https://docs.google.com/document/d/123/edit##%"; + Q_OBJECT + +private: + const QMap SYMBOL_MAP{ + {"#", ""}, + {"%", ""}, + {"$", ""}, + {"&", ""}, + }; - SECTION("Packet string") +private Q_SLOTS: + void constructPacket_data() { - AOPacket p(packet_string); - REQUIRE(p.to_string() == packet_string); + QTest::addColumn("header"); + QTest::addColumn("content"); + QTest::addColumn("result"); + + QTest::newRow("Basic Packet") << "CT" << QStringList{"MY_OOC_NAME", "/doc https://docs.google.com/document/d/123/edit"} << "CT#MY_OOC_NAME#/doc https://docs.google.com/document/d/123/edit#%"; } - SECTION("Header and contents") + + void constructPacket() { - QStringList contents = {"MY_OOC_NAME", "/doc https://docs.google.com/document/d/123/edit#"}; - AOPacket p("CT", contents); - REQUIRE(p.to_string() == packet_string); - } -} + QFETCH(QString, header); + QFETCH(QStringList, content); + QFETCH(QString, result); -TEST_CASE("AOPacket encode/decode", "[aopacket]") -{ - // Parameters - QString packet_string = "CT#MY_OOC_NAME#/doc https://docs.google.com/document/d/%$&/edit##%"; - QString good_encode = "CT#MY_OOC_NAME#/doc https://docs.google.com/document/d//edit#%"; + AOPacket packet(header, content); + QVERIFY(packet.toString(true) == result); + } - SECTION("Bad encode/decode because packet string constructor splits the '#' after 'edit'") + void encodeDecodeData_data() { - AOPacket p(packet_string); - p.net_encode(); - REQUIRE(p.to_string() != good_encode); + QTest::addColumn("what"); + QTest::addColumn("result"); + QTest::addColumn("encode"); - p.net_decode(); - REQUIRE(p.to_string() == packet_string); + for (auto it = SYMBOL_MAP.begin(); it != SYMBOL_MAP.end(); ++it) + { + QTest::newRow(QString("Encode %1").arg(it.key()).toUtf8()) << it.key() << it.value() << true; + QTest::newRow(QString("Decode %1").arg(it.value()).toUtf8()) << it.value() << it.key() << false; + } } - SECTION("Good encode/decode with header and contents constructor") + void encodeDecodeData() { - QStringList contents = {"MY_OOC_NAME", "/doc https://docs.google.com/document/d/%$&/edit#"}; - AOPacket p("CT", contents); - - p.net_encode(); - REQUIRE(p.to_string() == good_encode); + QFETCH(QString, what); + QFETCH(QString, result); + QFETCH(bool, encode); - p.net_decode(); - REQUIRE(p.to_string() == packet_string); + if (encode) + { + QVERIFY(AOPacket::encode(what) == result); + } + else + { + QVERIFY(AOPacket::decode(what) == result); + } } -} +}; + +#include "test/test_aopacket.moc" + +QTEST_MAIN(test_AOPacket) diff --git a/test/test_apng.cpp b/test/test_apng.cpp deleted file mode 100644 index c092191f..00000000 --- a/test/test_apng.cpp +++ /dev/null @@ -1,67 +0,0 @@ -#include - -#include -#include -#include -#include -#include - -TEST_CASE("Support APNG Plugin", "[apng]") -{ - // Check paths for libs - QCoreApplication::addLibraryPath("."); - QCoreApplication::addLibraryPath("lib"); - - // Either it's loaded from system or we load local - QPluginLoader apngPlugin("qapng"); - apngPlugin.load(); - - INFO(QImageReader::supportedImageFormats().join(' ').toStdString()); - REQUIRE(QImageReader::supportedImageFormats().contains("apng")); -} - -TEST_CASE("Detect png animation", "[apng]") -{ - // Required for QPixmap methods - int argc = 1; - char bin[] = "test"; - char *argv[] = {bin}; - QGuiApplication app(argc, argv); - - // Instantiate reader - QImageReader reader; - - SECTION("Decide format from content fails on apng") - { - reader.setFileName("snackoo.png"); - reader.setDecideFormatFromContent(true); - REQUIRE(!reader.supportsAnimation()); - REQUIRE(!QPixmap::fromImage(reader.read()).isNull()); - } - - SECTION("Auto detect fails on apng") - { - reader.setFileName("snackoo.png"); - reader.setAutoDetectImageFormat(true); - REQUIRE(!reader.supportsAnimation()); - REQUIRE(!QPixmap::fromImage(reader.read()).isNull()); - } - - SECTION("Detect apng supports animation") - { - reader.setFileName("snackoo.png"); - reader.setFormat("apng"); - REQUIRE(reader.supportsAnimation()); - REQUIRE(!QPixmap::fromImage(reader.read()).isNull()); - } - - SECTION("Detect png frame has no animation") - { - reader.setFileName("missle.png"); - reader.setFormat("apng"); - REQUIRE(!reader.supportsAnimation()); - reader.setFormat("png"); - REQUIRE(!reader.supportsAnimation()); - REQUIRE(!QPixmap::fromImage(reader.read()).isNull()); - } -} diff --git a/test/test_bass.cpp b/test/test_bass.cpp deleted file mode 100644 index 0e97b6a1..00000000 --- a/test/test_bass.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include - -#include -#include - -#include "bass.h" -#include "bassmidi.h" -#include "bassopus.h" - -TEST_CASE("BASS URL streaming", "[bass][noci]") -{ - // Sample - QString url = "https://raw.githubusercontent.com/skyedeving/aocharedit/master/Attorney%20Online%20Character%20Editor/Resources/about.mp3"; - - // initialize - BASS_Init(-1, 44100, 0, 0, nullptr); - - // create stream from url - HSTREAM stream; - unsigned int flags = BASS_STREAM_AUTOFREE | BASS_STREAM_STATUS; - if (url.endsWith(".opus")) - { - stream = BASS_OPUS_StreamCreateURL(url.toStdString().c_str(), 0, flags, nullptr, 0); - } - else - { - stream = BASS_StreamCreateURL(url.toStdString().c_str(), 0, flags, nullptr, 0); - } - - // Log http status - const char *tags = BASS_ChannelGetTags(stream, BASS_TAG_HTTP); - if (tags) - { - while (*tags) - { - UNSCOPED_INFO(tags); - tags += strlen(tags) + 1; - } - } - - // Test - REQUIRE(stream != 0); - REQUIRE(BASS_ChannelPlay(stream, TRUE) == TRUE); - // while (BASS_ChannelIsActive(stream) != BASS_ACTIVE_STOPPED); // block test to listen -} diff --git a/test/test_caseloading.cpp b/test/test_caseloading.cpp deleted file mode 100644 index dd82c7e5..00000000 --- a/test/test_caseloading.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include - -#include - -TEST_CASE("Sort case evidence numerically", "[case]") -{ - // Parameters - QStringList case_evidence = {"1", "10", "11", "2", "3", "4", "5", "6", "7", "8", "9"}; - QStringList case_evidence_sorted = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"}; - - // Sort - std::sort(case_evidence.begin(), case_evidence.end(), [](const QString &a, const QString &b) { return a.toInt() < b.toInt(); }); - - // Test - REQUIRE(case_evidence == case_evidence_sorted); -} -- cgit From db5ceb056955eff1018ea991e0117d6892366f2e Mon Sep 17 00:00:00 2001 From: TrickyLeifa Date: Sat, 18 May 2024 02:21:17 +0200 Subject: No longer required Discord-RPC headers when disabled --- src/discord_rich_presence.cpp | 5 ++++- src/discord_rich_presence.h | 3 --- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/discord_rich_presence.cpp b/src/discord_rich_presence.cpp index 6969334f..c22a6f66 100644 --- a/src/discord_rich_presence.cpp +++ b/src/discord_rich_presence.cpp @@ -1,8 +1,11 @@ #include "discord_rich_presence.h" +#ifdef AO_ENABLE_DISCORD_RPC +#include +#endif + namespace AttorneyOnline { - #if defined(AO_ENABLE_DISCORD_RPC) && !defined(ANDROID) Discord::Discord() { diff --git a/src/discord_rich_presence.h b/src/discord_rich_presence.h index 4d390c06..2945f292 100644 --- a/src/discord_rich_presence.h +++ b/src/discord_rich_presence.h @@ -3,15 +3,12 @@ #include #include -#include - #include #include #include namespace AttorneyOnline { - class Discord { Q_DECLARE_TR_FUNCTIONS(Discord) -- cgit From 406a4661ae88e063db0ba2c063db6ad5d1b2de25 Mon Sep 17 00:00:00 2001 From: TrickyLeifa Date: Sat, 18 May 2024 02:34:02 +0200 Subject: Tests may now be disabled --- CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0fa533e3..ee5759e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -122,6 +122,5 @@ if(AO_ENABLE_DISCORD_RPC) endif() if(AO_BUILD_TESTS) - # add_subdirectory(test) + add_subdirectory(test) endif() -add_subdirectory(test) -- cgit From f9c7205210fb9f768f583065971ece09e6b5eb03 Mon Sep 17 00:00:00 2001 From: TrickyLeifa Date: Sat, 18 May 2024 03:09:39 +0200 Subject: Clarified test message builder --- test/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 4c1d0980..c78740c1 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -9,8 +9,8 @@ enable_testing(true) set(SKIP_AUTOMOC ON) function(ao_declare_test test_id) - message(STATUS "FOOBAR Adding test: ${test_id}") - message(STATUS "FOOBAR Source files: ${ARGN}") + message(STATUS "Adding test: ${test_id}") + message(STATUS "Source files: ${ARGN}") add_executable(${test_id} ${ARGN}) target_include_directories(${test_id} PRIVATE ../src src) target_link_directories(${test_id} PRIVATE ../lib) -- cgit