From 61202be058cc135f938a131207f47f9546efff26 Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Sat, 9 Nov 2013 06:34:09 +0000 Subject: [PATCH] Convert main menu and toolbars from TControlBar to TCoolBar, to be able to place an "Update available" link right aligned on the menu. * Also, convert the donate button to a second label on the menu, so it's less intrusive than before. See http://www.heidisql.com/forum.php?t=13446 * With the "Update available" label visible all the time, we check for updates also for builds, but only show the update check dialog if the user has activated "Check for builds also" option. --- out/locale/en/LC_MESSAGES/default.po | 6 +- source/about.pas | 5 +- source/helpers.pas | 12 +- source/main.dfm | 895 +++++++++------------ source/main.pas | 123 +-- source/updatecheck.dfm | 1092 +++++++++++++++++++++++++- source/updatecheck.pas | 74 +- 7 files changed, 1550 insertions(+), 657 deletions(-) diff --git a/out/locale/en/LC_MESSAGES/default.po b/out/locale/en/LC_MESSAGES/default.po index 17a6c09ce..0aeb5ed39 100644 --- a/out/locale/en/LC_MESSAGES/default.po +++ b/out/locale/en/LC_MESSAGES/default.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: HeidiSQL\n" "POT-Creation-Date: 2012-11-05 21:40\n" -"PO-Revision-Date: 2013-10-13 21:22+0100\n" +"PO-Revision-Date: 2013-11-09 07:28+0100\n" "Last-Translator: Ansgar Becker \n" "Language-Team: English (http://www.transifex.com/projects/p/heidisql/" "language/en/)\n" @@ -5678,3 +5678,7 @@ msgstr "" #. InitConnection, JumpList msgid "Recent sessions" msgstr "Recent sessions" + +# GetParentFormOrFrame +msgid "Could not determine parent form of this %s" +msgstr "Could not determine parent form of this %s" diff --git a/source/about.pas b/source/about.pas index a4169ca2d..8466e2bf7 100644 --- a/source/about.pas +++ b/source/about.pas @@ -78,8 +78,7 @@ procedure TAboutBox.btnDonatedOKClick(Sender: TObject); MessageDialog(_('Thanks for donating!'), mtInformation, [mbOK]); end; imgDonate.Visible := Check <> nbTrue; - MainForm.imgDonate.Width := 122; - MainForm.imgDonate.Visible := imgDonate.Visible; + MainForm.lblDonate.Visible := imgDonate.Visible; end; @@ -110,7 +109,7 @@ procedure TAboutBox.FormShow(Sender: TObject); lblAppName.Font.Size := 14; InheritFont(lblAppWebpage.Font); imgDonate.Visible := MainForm.HasDonated(False) <> nbTrue; - imgDonate.OnClick := MainForm.imgDonate.OnClick; + imgDonate.OnClick := MainForm.lblDonate.OnClick; editDonated.Text := AppSettings.ReadString(asDonatedEmail); // Assign text diff --git a/source/helpers.pas b/source/helpers.pas index f0310a708..caa1deabb 100644 --- a/source/helpers.pas +++ b/source/helpers.pas @@ -132,8 +132,7 @@ TQueryThread = class(TThread) asLogsqlnum, asLogsqlwidth, asSessionLogsDirectory, asLogHorizontalScrollbar, asSQLColActiveLine, asMaxColWidth, asDatagridMaximumRows, asDatagridRowsPerStep, asGridRowLineCount, asRememberFilters, asLogToFile, asMainWinMaximized, asMainWinLeft, asMainWinTop, asMainWinWidth, - asMainWinHeight, asMainWinOnMonitor, asToolBar2Left, asToolBar2Top, asToolBarDataLeft, - asToolBarDataTop, asToolBarQueryLeft, asToolBarQueryTop, asQuerymemoheight, asDbtreewidth, + asMainWinHeight, asMainWinOnMonitor, asCoolBandIndex, asCoolBandBreak, asCoolBandWidth, asQuerymemoheight, asDbtreewidth, asDataPreviewHeight, asDataPreviewEnabled, asLogHeight, asQueryhelperswidth, asStopOnErrorsInBatchMode, asWrapLongLines, asDisplayBLOBsAsText, asSingleQueries, asMemoEditorWidth, asMemoEditorHeight, asMemoEditorWrap, asDelimiter, asSQLHelpWindowLeft, asSQLHelpWindowTop, asSQLHelpWindowWidth, @@ -3053,12 +3052,9 @@ constructor TAppSettings.Create; InitSetting(asMainWinWidth, 'MainWinWidth', 800); InitSetting(asMainWinHeight, 'MainWinHeight', 600); InitSetting(asMainWinOnMonitor, 'MainWinOnMonitor', 1); - InitSetting(asToolBar2Left, 'ToolBar2Left', 11); - InitSetting(asToolBar2Top, 'ToolBar2Top', 2); - InitSetting(asToolBarDataLeft, 'ToolBarDataLeft', 343); - InitSetting(asToolBarDataTop, 'ToolBarDataTop', 2); - InitSetting(asToolBarQueryLeft, 'ToolBarQueryLeft', 494); - InitSetting(asToolBarQueryTop, 'ToolBarQueryTop', 2); + InitSetting(asCoolBandIndex, 'CoolBand%sIndex', -1); + InitSetting(asCoolBandBreak, 'CoolBand%sBreak', 0, True); + InitSetting(asCoolBandWidth, 'CoolBand%sWidth', 0); InitSetting(asQuerymemoheight, 'querymemoheight', 100); InitSetting(asDbtreewidth, 'dbtreewidth', 170); InitSetting(asDataPreviewHeight, 'DataPreviewHeight', 100); diff --git a/source/main.dfm b/source/main.dfm index 5ff6338ca..35b5f4cea 100644 --- a/source/main.dfm +++ b/source/main.dfm @@ -9,7 +9,6 @@ object MainForm: TMainForm Font.Height = -11 Font.Name = 'Default' Font.Style = [] - Menu = MainMenu1 OldCreateOrder = True OnCloseQuery = FormCloseQuery OnCreate = FormCreate @@ -96,521 +95,11 @@ object MainForm: TMainForm OnMouseMove = StatusBarMouseMove OnDrawPanel = StatusBarDrawPanel end - object ControlBar1: TControlBar - Left = 0 - Top = 0 - Width = 824 - Height = 26 - Align = alTop - AutoSize = True - BevelKind = bkNone - Color = clBtnFace - ParentBackground = False - ParentColor = False - ParentShowHint = False - ShowHint = True - TabOrder = 3 - object imgDonate: TImage - Left = 813 - Top = 2 - Width = 9 - Height = 22 - Cursor = crHandPoint - Hint = - 'Send an arbitrary amount as donation to the author - per PayPal ' + - '(also supports credit cards)' - Picture.Data = { - 07544269746D6170D61F0000424DD61F00000000000036000000280000007A00 - 0000160000000100180000000000A01F0000C40E0000C40E0000000000000000 - 00009FAFA50C1D12030D06030D06030D06030D06030D06030D06030D06030D06 - 030D06030D06030D06030D06030D06030D06030D06030D06030D06030D06030D - 06030D06030D06030D06030D06030D06030D06030D06030D06030D06030D0603 - 0D06030D06030D06030D06030D06030D06030D06030D06030D06030D06030D06 - 030D06030D06030D06030D06030D06030D06030D06030D06030D06030D06030D - 06030D06030D06030D06030D06030D06030D06030D06030D06030D06030D0603 - 0D06030D06030D06030D06030D06030D06030D06030D06030D06030D06030D06 - 030D06030D06030D06030D06030D06030D06030D06030D06030D06030D06030D - 06030D06030D06030D06030D06030D06030D06030D06030D06030D06030D0603 - 0D06030D06030D06030D06030D06030D06030D06030D06030D06030D06030D06 - 030D06030D06030D06030D06030D06030D06030D06030D06030D06030D06030D - 06030D06030D06030D060F2015AEBBB3D5FF07140B0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000F2116 - 43FF000000000100003916005B24005B24005B24005B24005B24005B24005B24 - 005B24005B24005B24005B24005B24005B24005B24005B24005B24005B24005B - 24005B24005B24005B24005B24005B24005B24005B24005B24005B24005B2400 - 5B24005B24005B24005B24005B24005B24005B24005B24005B24005B24005B24 - 005B24005B24005B24005B24005B24005B24005B24005B24005B24005B24005B - 24005B24005B24005B24005B24005B24005B24005B24005B24005B24005B2400 - 5B24005B24005B24005B24005B24005B24005B24005B24005B24005B24005B24 - 005B24005B24005B24005B24005B24005B24005B24005B24005B24005B24005B - 24005B24005B24005B24005B24005B24005B24005B24005B24005B24005B2400 - 5B24005B24005B24005B24005B24005B24005B24005B24005B24005B24005B24 - 005B24005B24005B24005B24005B24005B24005B24005B24005B24005B24005B - 24005B24005B24003214000000030D0643FF00000000010000662900A44200A4 - 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 - A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A442 - 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 - 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 - A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A442 - 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 - 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 - A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A442 - 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 - 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 - A44200A44200A44200A44200A44200A44200A44200A442005A24000000030D06 - F9FF00000000010000672900A64200A64200A64200A64200A64200A64200A642 - 00A64200A64200A64200A64200A64200A64200A64200A64200A64200A64200A6 - 4200A64200A64200A64200A64200A64200A64200A64200A64200A6420FAB4D1C - AF571CAF571CAF571CAF5718AE540FAB4D03A74400A64200A64200A64200A642 - 00A64200A64200A6420AA94A19AE541CAF5718AE530BA94A01A64200A64200A6 - 4200A6420FAB4D1CAF5715AD5101A64300A64200A64209A9491CAF5719AE5502 - A64300A64200A64207A84817AE531CAF5714AD5104A74513AC501CAF5709A948 - 00A64200A64200A64209A9491AAE551CAF5710AB4E00A64200A64200A64205A7 - 4513AC501CAF561CAF5716AD520DAA4C01A64300A64200A64200A64200A64200 - A64200A64200A64200A64200A64200A64200A64200A64200A64200A64200A642 - 00A64200A64200A64200A64200A64200A64200A64200A64200A64200A64200A6 - 4200A64200A642005B24000000030D0669FF00000000010000682900A64300A6 - 4300A64300A64300A64300A64300A64300A64300A64300A64300A64300A64300 - A64300A64300A64300A64300A64300A64300A64300A64300A64300A64300A643 - 00A64300A64300A64300A643AAE1C0FFFFFFFFFFFFFFFFFFFFFFFFF2FAF5D2EF - DD9EDDB736B96A02A74400A64300A64300A64306A8475BC686C2EAD2F2FAF5FF - FFFFEFF9F3C1E9D158C48305A84600A64300A643A0DEB9FEFFFED4F0DF0FAB4D - 00A64300A6436CCC93FFFFFFEFF9F316AD5300A6431FB15AABE2C1EDF9F2FEFF - FEE2F5EA8AD6A8C7EBD5FDFEFE61C88A00A64300A64320B15AB6E5C9F5FBF8FF - FFFFD4F0DF0EAB4D00A6432AB461A3DFBBDFF4E7FDFEFDFEFFFEEAF7EFCBEDD9 - 5DC68700A64300A64300A64300A64300A64300A64300A64300A64300A64300A6 - 4300A64300A64300A64300A64300A64300A64300A64300A64300A64300A64300 - A64300A64300A64300A64300A64300A64300A64300A643005C24000000030D06 - 56FF00000000010000682900A74300A74300A74300A74300A74300A74300A743 - 00A74300A74300A74300A74300A74300A74300A74300A74300A74300A74300A7 - 4300A74300A74300A74300A74300A74300A74300A74300A74300A743BEE9CFFF - FFFFF9FDFADBF3E4D7F1E2E0F4E8F7FCF9FFFFFFF4FBF764C98C02A84500A743 - 01A84468CB8FFDFEFDFEFFFEEBF8F0D9F2E3E6F7EDFEFFFEF6FCF86ACB9102A8 - 4400A743B2E4C6FFFFFFE3F5EA12AD5000A74300A7437CD29FFFFFFFF6FCF81A - B05606A948A9E1BFFFFFFFF9FDFBDBF3E4DFF4E8F8FDFAFEFEFEFFFFFF6DCC93 - 00A74300A74396DAB1FFFFFFFEFFFEDEF4E7E2F5E91BB0561BB057E1F4E8FFFF - FFF8FDFADDF3E6D7F1E2DEF4E7EEF9F29EDEB700A74300A74300A74300A74300 - A74300A74300A74300A74300A74300A74300A74300A74300A74300A74300A743 - 00A74300A74300A74300A74300A74300A74300A74300A74300A74300A74300A7 - 4300A74300A743005C25000000030D0644FF00000000010000692A00A94400A9 - 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 - A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 - 00A94400A94400A94400A944BEE9CFFFFFFFD5F1E016B05300A94413AF5152C4 - 80DDF3E6FFFFFFF7FCF940BE7200A9440EAD4EE4F6EBFFFFFFD8F2E22DB86503 - AA4622B45CBDE8CEFFFFFFE2F5E922B45C00A944B2E5C6FFFFFFE3F5EA12AF51 - 00A94400A9447CD39FFFFFFFF6FCF81AB15711AE50DFF4E7FFFFFFA2DFBA08AB - 4911AF507ED3A0FFFFFFFFFFFF6DCD9300A94400A944CFEEDBFFFFFFD1EFDD12 - AF5116B05401A94481D4A2FFFFFFF8FDFA69CC910CAD4D00A9440FAE4F31B967 - 30B96700A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 - 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 - A94400A94400A94400A94400A94400A94400A94400A944005D25000000030D06 - 45FF00000000010000692A00A94400A94400A94400A94400A94400A94400A944 - 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 - 4400A94400A94400A94400A94400A94400A94400A94400A94400A944BEE9CFFF - FFFFD5F1E016B05400A94400A94400A94443BF75F8FDFAFFFFFFB6E6C900A944 - 31B967FFFFFFFFFFFF7AD29D00A94400A94400A9444AC27AFEFFFEFFFFFF57C6 - 8400A944B2E5C6FFFFFFE3F6EA12AF5100A94400A9447CD39FFFFFFFF6FCF81A - B2570CAD4DCEEEDBFFFFFFD3F0DF56C68333BA6964CB8DFFFFFFFFFFFF6DCD93 - 01A94402AA45DFF4E7FFFFFFACE3C209AC4A06AB4808AC4AC0E9D0FFFFFFD8F2 - E20BAD4C07AB4906AB4906AB4805AB4804AB4704AA4703AA4601AA4500A94400 - A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 - 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 - 4400A94400A944005D25000000030D0676FF000000000100006A2A00AA4400AA - 4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400 - AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA44 - 00AA4400AA4400AA4400AA44BEE9CFFFFFFFD5F1E016B15400AA4400AA4400AA - 4402AB46CBEED9FFFFFFF6FCF80BAE4C48C278FFFFFFFFFFFF62CB8C00AA4400 - AA4400AA442DB965F0FAF4FFFFFF71CF9600AA44B2E5C6FFFFFFE3F6EA12B051 - 00AA4400AA447CD49FFFFFFFF6FCF81DB45A07AD4960CA8AF0FAF4FFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFF86D7A62FB96631BA68E5F6ECFFFFFFBCE9CE3A - BD6E38BD6D3ABD6EE3F5EAFFFFFFF1FAF4BFEAD0BFE9D0BFE9D0BEE9CFBDE9CE - A6E1BD42C07433BB6931BA672EB9652BB86328B76123B55D1EB45A19B25614B0 - 520FAF4E0BAE4C08AD4A06AC4802AB4600AA4400AA4400AA4400AA4400AA4400 - AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA44005E25000000030D06 - 75FF000000000100006A2B00AB4500AB4500AB4500AB4500AB4500AB4500AB45 - 00AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB - 4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB45BEEACFFF - FFFFD5F1E116B25500AB4500AB4500AB4500AB4597DDB3FFFFFFFEFFFE2AB963 - 3DBF71FFFFFFFFFFFF68CD9000AB4500AB4500AB4535BD6BF8FDFAFFFFFF6FCF - 9600AB45B2E5C6FFFFFFE4F6EB1BB4580FB04F17B2558CD9ABFFFFFFF7FCFA49 - C37A38BD6D3EBF7166CC8F9DDFB8C2EBD3D1F0DDDCF3E5FFFFFFFFFFFF92DBAF - 42C07542C075E7F7EDFFFFFFC0EAD144C17742C07544C176D6F1E1FFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FAF563CB8D42C07542C07542C07542 - C07542C07542C07542C07542C07542C07541C0743EBF723ABE6F37BD6D33BB6A - 2DB96525B75F1DB45A14B1530DAF4E08AE4B04AC4700AB4500AB4500AB4500AB - 4500AB4500AB45005E26000000030D0646FF000000000100006B2B00AC4500AC - 4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500 - AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC45 - 00AC4500AC4500AC4500AC45BEEACFFFFFFFD5F1E116B35500AC4500AC4500AC - 4500AC4590DBADFFFFFFFEFFFE39BE6E14B353F3FBF6FFFFFFA4E1BD05AE4800 - AC4501AD466ED095FFFFFFFEFFFE5CCA881CB559BCE9CEFFFFFFF4FBF765CC8E - 40C17442C175B5E7C9FFFFFFF7FDFA50C67F42C17550C67F5FCB8A43C27642C1 - 7542C17573D198FFFFFFFFFFFF82D6A442C17542C175E7F7EDFFFFFFC0EAD144 - C27742C17543C175B3E6C8FFFFFFE7F7ED74D29970D09770D097ADE4C3FFFFFF - E7F7EE58C88542C17542C17542C17542C17542C17542C17542C17542C17542C1 - 7542C17542C17542C17542C17542C17542C17542C17542C17542C1753FC0733A - BF6F35BD6C2EBB6623B75E18B4560FB15008AF4B01AD46005F26000000030D06 - 46FF000000000100006C2B00AD4600AD4600AD4600AD4600AD4600AD4600AD46 - 00AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD - 4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD46BEEAD0FF - FFFFD5F1E116B45500AD4600AD4600AD4600AD4696DDB2FFFFFFFEFFFE33BD6A - 03AE4896DDB3FFFFFFF6FCF88EDAAC4FC67F7BD49FE8F7EEFFFFFFDFF5E854C8 - 8242C275C5ECD5FFFFFFFFFFFFE5F6EC8BDAAB90DBAEF4FBF7FFFFFFDEF4E742 - C27542C27590DBAEECF9F1B2E6C77FD6A27ED5A1C7EDD6FFFFFFFBFEFC6DD094 - 4FC67F76D39BEEF9F2FFFFFFD2F1DE7AD49E77D39B44C3776ACF92FAFDFBFBFE - FCAFE5C47DD5A08AD9AAE0F5E8FFFFFFC3EBD345C37742C27542C27542C27542 - C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C275 - 42C27542C27542C27542C27542C27542C27542C27542C27542C27542C2753FC1 - 733ABF6F34BD6B186737000000030E0776FF000000000100006C2C00AE4600AE - 4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600 - AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE46 - 00AE4600AE4600AE4600AE46BEEAD0FFFFFFD5F2E116B55600AE4600AE4600AE - 4603AF48C9EED7FFFFFFFBFEFC14B4540BB14E2BBB65BFEAD0FDFEFEFFFFFFFF - FFFFFFFFFFFFFFFFE9F8EF7AD49E43C27542C275C5ECD5FFFFFFC4ECD4E3F6EA - FFFFFFFFFFFFFFFFFFF7FDF986D8A742C27542C2756DD095E6F7EDFFFFFFFFFF - FFFFFFFFFFFFFFFEFFFEBEEAD04BC57B7ED5A1FDFEFEFFFFFFFFFFFFFFFFFFFF - FFFFFEFFFE56C88443C27695DDB2F5FCF7FFFFFFFFFFFFFFFFFFFFFFFFDBF3E5 - 63CD8D42C27542C27542C27542C27542C27542C27542C27542C27542C27542C2 - 7542C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542 - C27542C27542C27542C27542C27542C27542C27542C275246B41000000060E09 - 76FF000000000100006D2C00AF4600AF4600AF4600AF4600AF4600AF4600AF46 - 00AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF - 4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF46BEEBD0FF - FFFFD5F2E116B65600AF4600AF4600AF4646C578F7FCF9FFFFFFCDEFDB35BF6C - 3DC27141C3754AC67B79D59DA9E4C0C0EBD1B8E9CB92DDAF5CCC8843C37642C3 - 7542C37589DAA9BFEBD077D49C58CA8593DDB0BFEBD0B3E7C872D29845C47742 - C37542C37543C37657CA8488D9A8B5E8C9C0EBD1AFE6C483D8A44EC77E42C375 - 64CE8EBCEACEF7FCF9FFFFFFEAF8F0C1ECD2BDEACF4AC67B42C37544C47768CF - 91A2E2BBC0EBD1B9E9CC8EDBAC57CA8542C37542C37542C37542C37542C37542 - C37542C37542C37542C37542C37542C37542C37542C37542C37542C37542C375 - 42C37542C37542C37542C37542C37542C37542C37542C37542C37542C37542C3 - 7542C37542C375246B41000000060F0947FF000000000100006E2C00B04700B0 - 4700B04700B04700B04700B04700B04700B04700B04700B04700B04700B04700 - B04700B04700B04700B04700B04700B04700B04700B04700B04700B04700B047 - 00B04700B04700B04700B047BEEBD0FFFFFFD5F2E116B75601B0471CB95B60CE - 8CE2F6EAFFFFFFFDFEFD76D49C42C47642C47642C47642C47642C47642C47642 - C47642C47642C47642C47642C47642C47642C47642C47642C47642C47642C476 - 42C47642C47642C47642C47642C47642C47642C47642C47642C47642C47642C4 - 7642C47642C47642C47642C47642C47642C47642C476E7F7EDFFFFFFC0EBD244 - C57842C47642C47642C47642C47642C47642C47642C47642C47642C47642C476 - 42C47642C47642C47642C47642C47642C47642C47642C47642C47642C47642C4 - 7642C47642C47642C47642C47642C47642C47642C47642C47642C47642C47642 - C47642C47642C47642C47642C47642C47642C47642C476246C41000000060F09 - E9FF000000000100006E2C00B14700B14700B14700B14700B14700B14700B147 - 00B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700B1 - 4700B14700B14700B14700B14700B14700B14700B14700B14700B147BEEBD0FF - FFFFF9FDFBE0F5E9DDF5E7E7F8EEF9FDFBFFFFFFF8FDFA97DFB344C57742C576 - 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 - 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 - C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 - 42C57642C576DBF4E5FFFFFFB8E9CC44C67742C57642C57642C57642C57642C5 - 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 - C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 - 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 - 7642C57642C576246C41000000060F0976FF000000000100006F2C00B24700B2 - 4700B24700B24700B24700B24700B24700B24700B24700B24700B24700B24700 - B24700B24700B24700B24700B24700B24700B24700B24700B24700B24700B247 - 00B24700B24700B24706B44BB2E8C7FFFFFFFFFFFFFFFFFFFFFFFFF9FDFBE3F6 - EAB8E9CC6AD29344C67842C57642C57642C57642C57642C57642C57642C57642 - C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 - 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 - 7642C57642C57642C57642C57642C57642C57642C57651CA8157CC864EC97F42 - C57742C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 - 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 - 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 - C57642C57642C57642C57642C57642C57642C57642C576246D41000000060F09 - 77FF000000000100006F2D00B34800B34800B34800B34800B34800B34800B348 - 00B34800B34800B34800B34800B34800B34800B34800B34800B34800B34800B3 - 4800B34800B34800B34800B34800B34801B3490FB75227BE643CC4724AC97D53 - CB8353CB8353CB8353CB8351CB824CC97F44C77942C67742C67742C67742C677 - 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 - 7742C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742 - C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 - 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 - 7742C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742 - C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 - 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 - 7742C67742C677246D42000000060F0A00FF00000000010000461C00702D0070 - 2D00702D00702D00702D00702D00702D00702D00702D00702D00702D00702D00 - 702D00702D00702D00702D00702D00702D00702D00702D00702D00712D057231 - 19783F277C49297C4A297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C - 4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B29 - 7C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B - 297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C - 4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B29 - 7C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B - 297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C - 4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B29 - 7C4B297C4B297C4B297C4B297C4B297C4B297C4B297C4B164529000000060F0A - 4BFF051209000000000100000100000100000100000100000100000100000100 - 0001000001000001000001000001000001000001000001000001000001000001 - 0000010000010000010000010100010100010100010100010100010100010100 - 0101000101000101000101000101000101000101000101000101000101000101 - 0001010001010001010001010001010001010001010001010001010001010001 - 0100010100010100010100010100010100010100010100010100010100010100 - 0101000101000101000101000101000101000101000101000101000101000101 - 0001010001010001010001010001010001010001010001010001010001010001 - 0100010100010100010100010100010100010100010100010100010100010100 - 0101000101000101000101000101000101000101000101000101000101000101 - 0001010001010001010001010001010001010001010001010001010001010001 - 0100010100010100010000000013221901FF95A79C06130A0000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000D1912A8B4AE - 00FF} - OnClick = imgDonateClick - end - object ToolBarStandard: TToolBar - Left = 11 - Top = 2 - Width = 319 - Height = 22 - Align = alNone - AutoSize = True - Caption = 'Main' - EdgeInner = esNone - EdgeOuter = esNone - Images = ImageListMain - TabOrder = 0 - Wrapable = False - object ToolButton9: TToolButton - Left = 0 - Top = 0 - Action = actSessionManager - AutoSize = True - DropdownMenu = menuConnections - Style = tbsDropDown - end - object btnExit: TToolButton - Left = 44 - Top = 0 - Action = actDisconnect - end - object tlbSep1: TToolButton - Left = 67 - Top = 0 - Width = 8 - Caption = 'tlbSep1' - ImageIndex = 2 - Style = tbsSeparator - end - object ToolButton5: TToolButton - Left = 75 - Top = 0 - Action = actCopy - AutoSize = True - end - object ToolButton6: TToolButton - Left = 98 - Top = 0 - Action = actPaste - AutoSize = True - end - object ToolButton14: TToolButton - Left = 121 - Top = 0 - Hint = 'Undo' - Action = actUndo - end - object ToolButton12: TToolButton - Left = 144 - Top = 0 - Action = actPrintList - end - object tlbSep2: TToolButton - Left = 167 - Top = 0 - Width = 8 - Caption = 'tlbSep2' - ImageIndex = 3 - Style = tbsSeparator - end - object ButtonRefresh: TToolButton - Left = 175 - Top = 0 - Action = actRefresh - AutoSize = True - DropdownMenu = popupRefresh - Style = tbsDropDown - end - object ButtonUserManager: TToolButton - Left = 219 - Top = 0 - Action = actUserManager - AutoSize = True - end - object ButtonImportTextfile: TToolButton - Left = 242 - Top = 0 - Action = actImportCSV - AutoSize = True - end - object ButtonExport: TToolButton - Left = 265 - Top = 0 - Action = actExportTables - AutoSize = True - end - object tlbSep6: TToolButton - Left = 288 - Top = 0 - Width = 8 - Caption = 'tlbSep6' - ImageIndex = 97 - Style = tbsSeparator - end - object btnSQLHelp: TToolButton - Left = 296 - Top = 0 - Action = actSQLhelp - end - end - object ToolBarData: TToolBar - Left = 343 - Top = 2 - Width = 138 - Height = 22 - Align = alNone - AutoSize = True - Caption = 'Data' - EdgeInner = esNone - EdgeOuter = esNone - Images = ImageListMain - TabOrder = 1 - Wrapable = False - object ToolButton3: TToolButton - Left = 0 - Top = 0 - Action = actDataFirst - end - object ToolButton4: TToolButton - Left = 23 - Top = 0 - Action = actDataLast - end - object ToolButton7: TToolButton - Left = 46 - Top = 0 - Action = actDataInsert - end - object ToolButton8: TToolButton - Left = 69 - Top = 0 - Action = actDataDelete - end - object ToolButton10: TToolButton - Left = 92 - Top = 0 - Action = actDataPostChanges - end - object ToolButton1: TToolButton - Left = 115 - Top = 0 - Action = actDataCancelChanges - end - end - object ToolBarQuery: TToolBar - Left = 494 - Top = 2 - Width = 306 - Height = 22 - Align = alNone - AutoSize = True - Caption = 'ToolBarQuery' - EdgeInner = esNone - EdgeOuter = esNone - Images = ImageListMain - TabOrder = 2 - Wrapable = False - object btnExecuteQuery: TToolButton - Left = 0 - Top = 0 - Action = actExecuteQuery - DropdownMenu = popupExecuteQuery - Style = tbsDropDown - end - object btnLoadSQL: TToolButton - Left = 38 - Top = 0 - Action = actLoadSQL - DropdownMenu = PopupQueryLoad - Style = tbsDropDown - end - object btnSaveSQL: TToolButton - Left = 76 - Top = 0 - Action = actSaveSQL - end - object btnSaveSQLSnippet: TToolButton - Left = 99 - Top = 0 - Action = actSaveSQLSnippet - end - object btnQueryFind: TToolButton - Left = 122 - Top = 0 - Action = actQueryFind - end - object btnQueryReplace: TToolButton - Left = 145 - Top = 0 - Action = actQueryReplace - end - object btnReformatSQL: TToolButton - Left = 168 - Top = 0 - Action = actReformatSQL - end - object btnStopOnErrors: TToolButton - Left = 191 - Top = 0 - Action = actQueryStopOnErrors - end - object btnBlobAsText: TToolButton - Left = 214 - Top = 0 - Action = actBlobAsText - end - object btnQueryWordwrap: TToolButton - Left = 237 - Top = 0 - Action = actQueryWordWrap - end - object btnSetDelimiter: TToolButton - Left = 260 - Top = 0 - Action = actSetDelimiter - end - object btnCancelOperation: TToolButton - Left = 283 - Top = 0 - Action = actCancelOperation - end - end - end object panelTop: TPanel Left = 0 - Top = 26 + Top = 54 Width = 824 - Height = 357 + Height = 329 Align = alClient AutoSize = True BevelOuter = bvNone @@ -620,7 +109,7 @@ object MainForm: TMainForm Left = 169 Top = 0 Width = 4 - Height = 357 + Height = 329 Cursor = crSizeWE ResizeStyle = rsUpdate end @@ -628,14 +117,14 @@ object MainForm: TMainForm Left = 0 Top = 0 Width = 169 - Height = 357 + Height = 329 Align = alLeft BevelOuter = bvNone TabOrder = 0 OnResize = pnlLeftResize object spltPreview: TSplitter Left = 0 - Top = 253 + Top = 225 Width = 169 Height = 4 Cursor = crSizeNS @@ -648,7 +137,7 @@ object MainForm: TMainForm Left = 0 Top = 22 Width = 169 - Height = 231 + Height = 203 Align = alClient Constraints.MinWidth = 40 DragMode = dmAutomatic @@ -706,7 +195,7 @@ object MainForm: TMainForm end object pnlPreview: TPanel Left = 0 - Top = 257 + Top = 229 Width = 169 Height = 100 Align = alBottom @@ -830,13 +319,13 @@ object MainForm: TMainForm Left = 173 Top = 0 Width = 651 - Height = 357 + Height = 329 Align = alClient BevelOuter = bvNone TabOrder = 1 object pnlFilterVT: TPanel Left = 0 - Top = 331 + Top = 303 Width = 651 Height = 26 Align = alBottom @@ -884,7 +373,7 @@ object MainForm: TMainForm Left = 0 Top = 0 Width = 651 - Height = 331 + Height = 303 ActivePage = tabHost Align = alClient HotTrack = True @@ -903,7 +392,7 @@ object MainForm: TMainForm Left = 0 Top = 0 Width = 643 - Height = 302 + Height = 274 ActivePage = tabDatabases Align = alClient HotTrack = True @@ -917,7 +406,7 @@ object MainForm: TMainForm Left = 0 Top = 0 Width = 635 - Height = 273 + Height = 245 Align = alClient Header.AutoSizeIndex = 0 Header.Options = [hoColumnResize, hoDblClickResize, hoDrag, hoHotTrack, hoShowSortGlyphs, hoVisible] @@ -999,7 +488,7 @@ object MainForm: TMainForm Left = 0 Top = 0 Width = 635 - Height = 273 + Height = 245 Align = alClient DragOperations = [] Header.AutoSizeIndex = 2 @@ -1057,7 +546,7 @@ object MainForm: TMainForm Left = 0 Top = 0 Width = 635 - Height = 273 + Height = 245 Align = alClient DragOperations = [] Header.AutoSizeIndex = 1 @@ -1118,7 +607,7 @@ object MainForm: TMainForm ImageIndex = 57 object spltProcessList: TSplitter Left = 0 - Top = 200 + Top = 172 Width = 635 Height = 4 Cursor = crSizeNS @@ -1129,7 +618,7 @@ object MainForm: TMainForm Left = 0 Top = 0 Width = 635 - Height = 200 + Height = 172 Align = alClient Header.AutoSizeIndex = 7 Header.Height = 20 @@ -1204,7 +693,7 @@ object MainForm: TMainForm end object pnlProcessViewBox: TPanel Left = 0 - Top = 204 + Top = 176 Width = 635 Height = 69 Align = alBottom @@ -1293,7 +782,7 @@ object MainForm: TMainForm Left = 0 Top = 0 Width = 635 - Height = 273 + Height = 245 Align = alClient Header.AutoSizeIndex = 4 Header.Height = 20 @@ -1364,7 +853,7 @@ object MainForm: TMainForm Left = 0 Top = 0 Width = 643 - Height = 302 + Height = 274 Align = alClient EditDelay = 500 Header.AutoSizeIndex = -1 @@ -1523,7 +1012,7 @@ object MainForm: TMainForm Left = 0 Top = 91 Width = 643 - Height = 211 + Height = 183 Align = alClient Alignment = taCenter Caption = 'No data available for this item.' @@ -1718,7 +1207,7 @@ object MainForm: TMainForm Left = 0 Top = 91 Width = 643 - Height = 211 + Height = 183 Align = alClient AutoScrollDelay = 50 EditDelay = 0 @@ -1894,7 +1383,7 @@ object MainForm: TMainForm Left = 0 Top = 124 Width = 643 - Height = 178 + Height = 150 Align = alClient AutoScrollDelay = 50 EditDelay = 0 @@ -1973,16 +1462,342 @@ object MainForm: TMainForm Width = 81 Height = 17 Step = 1 - TabOrder = 4 + TabOrder = 3 + end + object CoolBarMainMenu: TCoolBar + Left = 0 + Top = 0 + Width = 824 + Height = 54 + AutoSize = True + Bands = < + item + Control = pnlMainMenu + HorizontalOnly = True + ImageIndex = -1 + MinHeight = 23 + MinWidth = 430 + Width = 818 + end + item + Control = ToolBarMainButtons + HorizontalOnly = True + ImageIndex = -1 + Width = 818 + end> + object pnlMainMenu: TPanel + Left = 11 + Top = 0 + Width = 809 + Height = 23 + Align = alClient + BevelOuter = bvNone + Caption = 'pnlMainMenu' + ShowCaption = False + TabOrder = 0 + object lblDonate: TLabel + AlignWithMargins = True + Left = 671 + Top = 3 + Width = 35 + Height = 17 + Cursor = crHandPoint + Hint = + 'Send an arbitrary amount as donation to the author - per PayPal ' + + '(also supports credit cards)' + Margins.Right = 10 + Align = alRight + Caption = 'Donate' + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlue + Font.Height = -11 + Font.Name = 'Default' + Font.Style = [] + ParentFont = False + Layout = tlCenter + OnClick = DonateClick + end + object lblUpdateAvailable: TLabel + AlignWithMargins = True + Left = 719 + Top = 3 + Width = 80 + Height = 17 + Cursor = crHandPoint + Margins.Right = 10 + Align = alRight + Caption = 'Update available' + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlue + Font.Height = -11 + Font.Name = 'Default' + Font.Style = [] + ParentFont = False + Layout = tlCenter + Visible = False + OnClick = actUpdateCheckExecute + end + object ToolBarMainMenu: TToolBar + Left = 0 + Top = 0 + Width = 168 + Height = 23 + Align = alLeft + AutoSize = True + ButtonHeight = 21 + ButtonWidth = 40 + Caption = 'ToolBarMainMenu' + ShowCaptions = True + TabOrder = 0 + object btnFile: TToolButton + Left = 0 + Top = 0 + Hint = 'File related commands' + AutoSize = True + Caption = '&File' + Grouped = True + MenuItem = MainMenuFile + end + object btnEdit: TToolButton + Left = 27 + Top = 0 + Hint = 'Edit commands' + AutoSize = True + Caption = '&Edit' + Grouped = True + MenuItem = MainMenuEdit + end + object btnSearch: TToolButton + Left = 56 + Top = 0 + AutoSize = True + Caption = 'Search' + Grouped = True + MenuItem = MainMenuSearch + end + object btnTools: TToolButton + Left = 100 + Top = 0 + AutoSize = True + Caption = '&Tools' + Grouped = True + MenuItem = MainMenuTools + end + object btnHelp: TToolButton + Left = 136 + Top = 0 + Hint = 'Help topics' + AutoSize = True + Caption = '&Help' + Grouped = True + MenuItem = MainMenuHelp + end + end + end + object ToolBarMainButtons: TToolBar + Left = 11 + Top = 25 + Width = 809 + Height = 25 + Caption = 'ToolBarMainButtons' + Images = ImageListMain + TabOrder = 1 + Wrapable = False + object ToolButton9: TToolButton + Left = 0 + Top = 0 + Action = actSessionManager + AutoSize = True + DropdownMenu = menuConnections + Style = tbsDropDown + end + object btnExit: TToolButton + Left = 44 + Top = 0 + Action = actDisconnect + end + object tlbSep1: TToolButton + Left = 67 + Top = 0 + Width = 8 + Caption = 'tlbSep1' + ImageIndex = 2 + Style = tbsSeparator + end + object ToolButton5: TToolButton + Left = 75 + Top = 0 + Action = actCopy + AutoSize = True + end + object ToolButton6: TToolButton + Left = 98 + Top = 0 + Action = actPaste + AutoSize = True + end + object ToolButton14: TToolButton + Left = 121 + Top = 0 + Hint = 'Undo' + Action = actUndo + end + object ToolButton12: TToolButton + Left = 144 + Top = 0 + Action = actPrintList + end + object tlbSep2: TToolButton + Left = 167 + Top = 0 + Width = 8 + Caption = 'tlbSep2' + ImageIndex = 3 + Style = tbsSeparator + end + object ButtonRefresh: TToolButton + Left = 175 + Top = 0 + Action = actRefresh + AutoSize = True + DropdownMenu = popupRefresh + Style = tbsDropDown + end + object ButtonUserManager: TToolButton + Left = 219 + Top = 0 + Action = actUserManager + AutoSize = True + end + object ButtonImportTextfile: TToolButton + Left = 242 + Top = 0 + Action = actImportCSV + AutoSize = True + end + object ButtonExport: TToolButton + Left = 265 + Top = 0 + Action = actExportTables + AutoSize = True + end + object tlbSep6: TToolButton + Left = 288 + Top = 0 + Width = 8 + Caption = 'tlbSep6' + ImageIndex = 97 + Style = tbsSeparator + end + object btnSQLHelp: TToolButton + Left = 296 + Top = 0 + Action = actSQLhelp + end + object ToolButton3: TToolButton + Left = 319 + Top = 0 + Action = actDataFirst + end + object ToolButton4: TToolButton + Left = 342 + Top = 0 + Action = actDataLast + end + object ToolButton7: TToolButton + Left = 365 + Top = 0 + Action = actDataInsert + end + object ToolButton8: TToolButton + Left = 388 + Top = 0 + Action = actDataDelete + end + object ToolButton10: TToolButton + Left = 411 + Top = 0 + Action = actDataPostChanges + end + object ToolButton1: TToolButton + Left = 434 + Top = 0 + Action = actDataCancelChanges + end + object btnExecuteQuery: TToolButton + Left = 457 + Top = 0 + Action = actExecuteQuery + DropdownMenu = popupExecuteQuery + Style = tbsDropDown + end + object btnLoadSQL: TToolButton + Left = 495 + Top = 0 + Action = actLoadSQL + DropdownMenu = PopupQueryLoad + Style = tbsDropDown + end + object btnSaveSQL: TToolButton + Left = 533 + Top = 0 + Action = actSaveSQL + end + object btnSaveSQLSnippet: TToolButton + Left = 556 + Top = 0 + Action = actSaveSQLSnippet + end + object btnQueryFind: TToolButton + Left = 579 + Top = 0 + Action = actQueryFind + end + object btnQueryReplace: TToolButton + Left = 602 + Top = 0 + Action = actQueryReplace + end + object btnReformatSQL: TToolButton + Left = 625 + Top = 0 + Action = actReformatSQL + end + object btnStopOnErrors: TToolButton + Left = 648 + Top = 0 + Action = actQueryStopOnErrors + end + object btnBlobAsText: TToolButton + Left = 671 + Top = 0 + Action = actBlobAsText + end + object btnQueryWordwrap: TToolButton + Left = 694 + Top = 0 + Action = actQueryWordWrap + end + object btnSetDelimiter: TToolButton + Left = 717 + Top = 0 + Action = actSetDelimiter + end + object btnCancelOperation: TToolButton + Left = 740 + Top = 0 + Action = actCancelOperation + end + end end object MainMenu1: TMainMenu AutoHotkeys = maManual Left = 424 Top = 152 - object File1: TMenuItem + object MainMenuFile: TMenuItem Caption = '&File' Hint = 'File related commands' - OnClick = File1Click + OnClick = MainMenuFileClick object Sessionmanager1: TMenuItem Action = actSessionManager end @@ -2030,7 +1845,7 @@ object MainForm: TMainForm ShortCut = 32883 end end - object Edit1: TMenuItem + object MainMenuEdit: TMenuItem Caption = '&Edit' Hint = 'Edit commands' object CopyItem: TMenuItem @@ -2059,7 +1874,7 @@ object MainForm: TMainForm Action = actReformatSQL end end - object Search1: TMenuItem + object MainMenuSearch: TMenuItem Caption = 'Search' object Findtext1: TMenuItem Action = actQueryFind @@ -2074,7 +1889,7 @@ object MainForm: TMainForm Action = actFindTextOnServer end end - object Extra1: TMenuItem + object MainMenuTools: TMenuItem Caption = '&Tools' object Nexttab1: TMenuItem Action = actNextTab @@ -2143,7 +1958,7 @@ object MainForm: TMainForm Action = actPreferences end end - object Help1: TMenuItem + object MainMenuHelp: TMenuItem Caption = '&Help' Hint = 'Help topics' object menuSQLHelp1: TMenuItem diff --git a/source/main.pas b/source/main.pas index b159d8c5c..abfe4d73f 100644 --- a/source/main.pas +++ b/source/main.pas @@ -120,13 +120,13 @@ TQueryHistoryItemComparer = class(TComparer) TMainForm = class(TForm) MainMenu1: TMainMenu; - File1: TMenuItem; + MainMenuFile: TMenuItem; FileNewItem: TMenuItem; - Help1: TMenuItem; + MainMenuHelp: TMenuItem; N1: TMenuItem; FileExitItem: TMenuItem; menuAbout: TMenuItem; - Edit1: TMenuItem; + MainMenuEdit: TMenuItem; CopyItem: TMenuItem; PasteItem: TMenuItem; StatusBar: TStatusBar; @@ -135,7 +135,7 @@ TMainForm = class(TForm) actPaste: TAction; actNewWindow: TAction; actExitApplication: TAction; - Extra1: TMenuItem; + MainMenuTools: TMenuItem; FlushUserPrivileges1: TMenuItem; N5: TMenuItem; Flush1: TMenuItem; @@ -155,8 +155,6 @@ TMainForm = class(TForm) menuMaintenance: TMenuItem; actPrintList: TAction; actCopyTable: TAction; - ControlBar1: TControlBar; - ToolBarStandard: TToolBar; ToolButton9: TToolButton; tlbSep1: TToolButton; ToolButton5: TToolButton; @@ -167,7 +165,6 @@ TMainForm = class(TForm) ButtonImportTextfile: TToolButton; ButtonExport: TToolButton; ButtonUserManager: TToolButton; - ToolBarData: TToolBar; actUndo: TEditUndo; ToolButton14: TToolButton; actExecuteQuery: TAction; @@ -237,7 +234,6 @@ TMainForm = class(TForm) actQueryWordWrap: TAction; actQueryFind: TAction; actQueryReplace: TAction; - ToolBarQuery: TToolBar; btnExecuteQuery: TToolButton; btnLoadSQL: TToolButton; btnSaveSQL: TToolButton; @@ -481,7 +477,7 @@ TMainForm = class(TForm) actBlobAsText: TAction; btnBlobAsText: TToolButton; actQueryFindAgain: TAction; - Search1: TMenuItem; + MainMenuSearch: TMenuItem; Findtext1: TMenuItem; actQueryFindAgain1: TMenuItem; Replacetext1: TMenuItem; @@ -566,12 +562,22 @@ TMainForm = class(TForm) N2: TMenuItem; Save1: TMenuItem; Saveassnippet1: TMenuItem; - imgDonate: TImage; ToolBarTree: TToolBar; editDatabaseFilter: TButtonedEdit; editTableFilter: TButtonedEdit; btnTreeFavorites: TToolButton; actFavoriteObjectsOnly: TAction; + CoolBarMainMenu: TCoolBar; + ToolBarMainMenu: TToolBar; + ToolBarMainButtons: TToolBar; + pnlMainMenu: TPanel; + btnFile: TToolButton; + btnEdit: TToolButton; + btnSearch: TToolButton; + btnTools: TToolButton; + btnHelp: TToolButton; + lblDonate: TLabel; + lblUpdateAvailable: TLabel; procedure actCreateDBObjectExecute(Sender: TObject); procedure menuConnectionsPopup(Sender: TObject); procedure actExitApplicationExecute(Sender: TObject); @@ -742,7 +748,7 @@ TMainForm = class(TForm) NewHeight: Integer; var Resize: Boolean); procedure AnyGridMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); - procedure File1Click(Sender: TObject); + procedure MainMenuFileClick(Sender: TObject); procedure HostListGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string); procedure HostListGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; @@ -906,7 +912,7 @@ TMainForm = class(TForm) CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect); procedure actUnixTimestampColumnExecute(Sender: TObject); procedure PopupQueryLoadPopup(Sender: TObject); - procedure imgDonateClick(Sender: TObject); + procedure DonateClick(Sender: TObject); procedure DBtreeExpanded(Sender: TBaseVirtualTree; Node: PVirtualNode); procedure ApplicationDeActivate(Sender: TObject); procedure DBtreeAfterCellPaint(Sender: TBaseVirtualTree; @@ -1319,6 +1325,9 @@ procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); end; procedure TMainForm.FormDestroy(Sender: TObject); +var + i: Integer; + BandId: String; begin // Destroy dialogs FreeAndNil(FSearchReplaceDialog); @@ -1336,12 +1345,13 @@ procedure TMainForm.FormDestroy(Sender: TObject); Connections.Clear; // Save various settings - AppSettings.WriteInt(asToolbar2Left, ToolBarStandard.Left); - AppSettings.WriteInt(asToolBar2Top, ToolBarStandard.Top); - AppSettings.WriteInt(asToolBarDataLeft, ToolBarData.Left); - AppSettings.WriteInt(asToolBarDataTop, ToolBarData.Top); - AppSettings.WriteInt(asToolBarQueryLeft, ToolBarQuery.Left); - AppSettings.WriteInt(asToolBarQueryTop, ToolBarQuery.Top); + for i:=0 to CoolBarMainMenu.Bands.Count-1 do begin + BandId := IntToStr(CoolBarMainMenu.Bands[i].Id); + logsql('BandId: '+BandId); + AppSettings.WriteInt(asCoolBandIndex, CoolBarMainMenu.Bands[i].Index, BandId); + AppSettings.WriteBool(asCoolBandBreak, CoolBarMainMenu.Bands[i].Break, BandId); + AppSettings.WriteInt(asCoolBandWidth, CoolBarMainMenu.Bands[i].Width, BandId); + end; AppSettings.WriteBool(asStopOnErrorsInBatchMode, actQueryStopOnErrors.Checked); AppSettings.WriteBool(asDisplayBLOBsAsText, actBlobAsText.Checked); AppSettings.WriteString(asDelimiter, FDelimiter); @@ -1387,7 +1397,6 @@ procedure TMainForm.FormDestroy(Sender: TObject); procedure TMainForm.FormCreate(Sender: TObject); var i, j, MonitorIndex: Integer; - Bar: TControl; ToolButton: TToolButton; QueryTab: TQueryTab; Action: TAction; @@ -1402,6 +1411,7 @@ procedure TMainForm.FormCreate(Sender: TObject); NTHandle: THandle; TZI: TTimeZoneInformation; wine_nt_to_unix_file_name: procedure(p1:pointer; p2:pointer); stdcall; + CoolBand: TCoolBand; begin caption := APPNAME; @@ -1420,16 +1430,11 @@ procedure TMainForm.FormCreate(Sender: TObject); // Fix drop down buttons on main toolbar. Same as r4304. // Caused by missing Application.MainFormOnTaskBar - for i:=0 to ControlBar1.ControlCount-1 do begin - Bar := ControlBar1.Controls[i]; - if Bar is TToolBar then begin - for j:=0 to (Bar as TToolBar).ButtonCount-1 do begin - ToolButton := (Bar as TToolBar).Buttons[j]; - if ToolButton.Style = tbsDropDown then begin - ToolButton.Style := tbsButton; - ToolButton.Style := tbsDropDown; - end; - end; + for i:=0 to ToolBarMainButtons.ButtonCount-1 do begin + ToolButton := ToolBarMainButtons.Buttons[i]; + if ToolButton.Style = tbsDropDown then begin + ToolButton.Style := tbsButton; + ToolButton.Style := tbsDropDown; end; end; @@ -1521,6 +1526,8 @@ procedure TMainForm.FormCreate(Sender: TObject); // Simulated link label, has non inherited blue font color InheritFont(lblExplainProcess.Font); InheritFont(lblExplainProcessAnalyzer.Font); + InheritFont(lblUpdateAvailable.Font); + InheritFont(lblDonate.Font); StatusBar.Height := GetTextHeight(StatusBar.Font)+4; // Upscale panels in non-96-DPI mode @@ -1581,13 +1588,16 @@ procedure TMainForm.FormCreate(Sender: TObject); MonitorIndex := Min(Screen.MonitorCount-1, MonitorIndex); MakeFullyVisible(Screen.Monitors[MonitorIndex]); - // Position of Toolbars - ToolBarStandard.Left := AppSettings.ReadInt(asToolbar2Left); - ToolBarStandard.Top := AppSettings.ReadInt(asToolbar2Top); - ToolBarData.Left := AppSettings.ReadInt(asToolbarDataLeft); - ToolBarData.Top := AppSettings.ReadInt(asToolbarDataTop); - ToolBarQuery.Left := AppSettings.ReadInt(asToolBarQueryLeft); - ToolBarQuery.Top := AppSettings.ReadInt(asToolBarQueryTop); + // Configure toolbars + for i:=0 to CoolBarMainMenu.Bands.Count-1 do begin + CoolBand := TCoolBand(CoolBarMainMenu.Bands.FindItemID(i)); + CoolBand.Index := AppSettings.ReadInt(asCoolBandIndex, IntToStr(CoolBand.ID), CoolBand.Index); + CoolBand.Break := AppSettings.ReadBool(asCoolBandBreak, IntToStr(CoolBand.ID), CoolBand.Break); + CoolBand.Width := AppSettings.ReadInt(asCoolBandWidth, IntToStr(CoolBand.ID), CoolBand.Width); + end; + FHasDonatedDatabaseCheck := nbUnset; + lblDonate.Visible := HasDonated(True) <> nbTrue; + actQueryStopOnErrors.Checked := AppSettings.ReadBool(asStopOnErrorsInBatchMode); actBlobAsText.Checked := AppSettings.ReadBool(asDisplayBLOBsAsText); actQueryWordWrap.Checked := AppSettings.ReadBool(asWrapLongLines); @@ -1688,11 +1698,6 @@ procedure TMainForm.FormCreate(Sender: TObject); FGridCopying := False; FGridPasting := False; - FHasDonatedDatabaseCheck := nbUnset; - imgDonate.Width := 122; - imgDonate.Height := 22; - imgDonate.Visible := HasDonated(True) <> nbTrue; - FileEncodings := Explode(',', _('Auto detect (may fail)')+',ANSI,ASCII,Unicode,Unicode Big Endian,UTF-8,UTF-7'); // Detect timezone offset in seconds, once @@ -1740,10 +1745,21 @@ procedure TMainForm.AfterFormCreate; UpdatecheckInterval := AppSettings.ReadInt(asUpdatecheckInterval); if DaysBetween(Now, LastUpdatecheck) >= UpdatecheckInterval then begin frm := TfrmUpdateCheck.Create(Self); - frm.AutoClose := True; - frm.CheckForBuildsInAutoMode := AppSettings.ReadBool(asUpdatecheckBuilds); - frm.ShowModal; - FreeAndNil(frm); + try + frm.ReadCheckFile; + lblUpdateAvailable.Visible := frm.btnBuild.Enabled or frm.btnRelease.Enabled; + if frm.btnRelease.Enabled then + lblUpdateAvailable.Font.Color := clRed; + // Show the dialog if release is available, or - when wanted - build checks are activated + if (AppSettings.ReadBool(asUpdatecheckBuilds) and frm.btnBuild.Enabled) + or frm.btnRelease.Enabled then begin + frm.ShowModal; + end; + except + on E:Exception do + LogSQL(E.Message); + end; + frm.Free; end; end; @@ -2218,7 +2234,7 @@ procedure TMainForm.menuConnectionsPopup(Sender: TObject); end; -procedure TMainForm.File1Click(Sender: TObject); +procedure TMainForm.MainMenuFileClick(Sender: TObject); var Item: TMenuItem; i: Integer; @@ -2251,18 +2267,19 @@ procedure TMainForm.actWebbrowse(Sender: TObject); end; -procedure TMainForm.imgDonateClick(Sender: TObject); +procedure TMainForm.DonateClick(Sender: TObject); var Dialog: TWinControl; place: String; begin // Click on one of the various donate buttons - Dialog := (Sender as TImage).Parent; - if Dialog is TAboutBox then - place := 'about' - else - place := 'main'; - ShellExec(APPDOMAIN + 'donatebutton.php?place=' + EncodeURLParam(place)); + Dialog := GetParentFormOrFrame(TWinControl(Sender)); + if Dialog = nil then + ErrorDialog(f_('Could not determine parent form of this %s', [Sender.ClassName])) + else begin + place := LowerCase(Dialog.UnitName); + ShellExec(APPDOMAIN + 'donatebutton.php?place=' + EncodeURLParam(place)); + end; end; diff --git a/source/updatecheck.dfm b/source/updatecheck.dfm index 49de26346..23a88f9ec 100644 --- a/source/updatecheck.dfm +++ b/source/updatecheck.dfm @@ -3,7 +3,7 @@ object frmUpdateCheck: TfrmUpdateCheck Top = 0 BorderStyle = bsDialog Caption = 'Check for updates ...' - ClientHeight = 399 + ClientHeight = 425 ClientWidth = 384 Color = clBtnFace Font.Charset = DEFAULT_CHARSET @@ -17,12 +17,12 @@ object frmUpdateCheck: TfrmUpdateCheck OnShow = FormShow DesignSize = ( 384 - 399) + 425) PixelsPerInch = 96 TextHeight = 13 object lblStatus: TLabel Left = 8 - Top = 359 + Top = 385 Width = 256 Height = 38 Anchors = [akLeft, akRight, akBottom] @@ -31,9 +31,1081 @@ object frmUpdateCheck: TfrmUpdateCheck Layout = tlCenter WordWrap = True end + object imgDonate: TImage + Left = 64 + Top = 15 + Width = 250 + Height = 45 + Cursor = crHandPoint + Hint = + 'Send an arbitrary amount as donation to the author - per PayPal ' + + '(also supports credit cards)' + AutoSize = True + Picture.Data = { + 07544269746D617066840000424D66840000000000003600000028000000FA00 + 00002D000000010018000000000030840000C40E0000C40E0000000000000000 + 0000FFFFFFD2E4D92B583D082111071C0E071C0E071C0E071C0E071C0E071C0E + 071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C + 0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E07 + 1C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E + 071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C + 0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E07 + 1C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E + 071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C + 0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E07 + 1C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E + 071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C + 0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E07 + 1C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E + 071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C + 0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E07 + 1C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E + 071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C + 0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E07 + 1C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E + 071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C + 0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E07 + 1C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E + 071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C0E071C + 0E071C0E092413376649E8F1EBFFFFFF70FFC6DDCF0216090000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000072612E8F1EB + 43FF1E4B2F000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000003666484EFF000D050000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000092614 + B4FF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000071C0EB5FF0000000000000000000000000017 + 0900A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100 + A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100A441 + 00A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100A4 + 4100A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100 + A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100A441 + 00A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100A4 + 4100A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100 + A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100A441 + 00A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100A4 + 4100A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100 + A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100A441 + 00A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100A4 + 4100A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100 + A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100A441 + 00A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100A4 + 4100A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100 + A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100A441 + 00A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100A4 + 4100A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100 + A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100A441 + 00A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100A4 + 4100A44100A44100A44100A44100A44100A44100A44100A44100A44100A44100 + A44100A44100A44100A44100A44100A13F000000000000000000000000071C0E + 43FF00000000000000000000000000170900A44200A44200A44200A44200A442 + 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 + 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 + A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A442 + 00A44200A4429EDCB73AB86C00A44200A44200A44236B76AA3DEBA00A44200A4 + 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 + A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A442 + 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 + 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 + A44214AB508CD5A9B3E3C69BDBB42EB46400A44200A44200A44200A44200A442 + 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 + 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 + A44200A44200A44200A44200A44200A44200A44200A44200A44200A44207A647 + 01A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 + 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 + A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A442 + 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 + 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 + A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A442 + 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 + 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 + A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A442 + 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A1 + 40000000000000000000000000071C0F44FF0000000000000000000000000017 + 0900A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 + A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A442 + 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 + 4200A44200A44200A44200A44200A44200A44200A442E6F6EC58C38300A44200 + A44200A44253C17FECF8F000A44200A44200A44200A44200A44200A44200A442 + 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 + 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 + A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A442 + 00A44200A44200A44200A44200A44200A44276CE99D3EFDE20AF5979CF9BE2F4 + E902A44300A44200A44200A44200A44200A44200A44200A44200A44200A44200 + A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A442 + 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 + 4200A44200A44201A4426DCA92EBF7F017AC5300A44200A44200A44200A44200 + A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A442 + 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 + 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 + A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A442 + 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 + 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 + A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A442 + 00A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200A4 + 4200A44200A44200A44200A44200A44200A44200A44200A44200A44200A44200 + A44200A44200A44200A44200A44200A140000000000000000000000000071C0F + 44FF00000000000000000000000000170900A54200A54200A54200A54200A542 + 00A54200A54200A54200A54200A54200A54200A54200A54200A54200A54200A5 + 4200A54200A54200A54200A54200A54200A54200A54200A54200A54200A54200 + A54200A54255C381D7F0E1E7F6EDA2DEBA0DA94B18AD53CAECD7DEF3E67ED19F + A1DDB900A542E6F6ECB7E5C9E6F6ECB5E4C80EA94C53C27FF3FAF6B5E4C8E5F5 + EB69CA8F00A54245BD75D2EFDDEAF7EFA9E0BF11AB4E24B15CC0E8D00BA84A00 + A54211AB4EC9EBD6E3F5EA19AD5400A54200A54275CE987AD09C00A5427DD19E + 71CC9500A54286D4A568C98F1DAF57CAECD7E0F4E897DAB184D3A30AA849C2E9 + D122B15B4DC07BBDE7CE17AD53C3E9D21EAF5865C88C8AD5A800A5425FC68890 + D7AC2AB361F1FAF4A1DDB9CCEDD9D6F0E001A54200A54200A5427FD1A07DD19E + 00A54200A542AFE2C34EC07B02A54391D8ADE5F5EBE3F5EA80D2A000A542BDE7 + CE31B6661CAE56C7EBD5E2F4E988D5A6A5DFBC00A542ACE1C143BC7354C280D7 + F0E1E8F6EDA2DEBA0EA94C01A54275CE98D9F1E2EBF7F0CEEDDAE7F6ED49BE78 + 2AB361C5EAD4C5EAD4C5EAD440BB7100A54200A54275CE9893D8AED7F0E1D5F0 + DF33B76700A54279CF9BE0F4E8E7F6ED9BDBB400A54257C382E6F6EC98DAB22F + B564DCF2E5C7EBD506A7469ADBB4E7F6EDE1F4E874CD9707A747C2E9D126B25E + 00A54200A54200A5420CA94AB9E6CBE6F6EC97DAB1A0DDB801A542AFE2C33EBA + 6F00A542A9E0BF46BD7510AA4DBBE7CCE6F6EC89D5A7B8E5CA00A54200A54200 + A54254C2809BDBB4C8EBD6E0F4E851C17E00A5425AC484D8F1E2EBF7F0B9E6CB + 06A74636B86ADEF3E6C0E8D016AC52CDEDD9DFF3E710AA4D7DD19EE1F4E8E6F6 + EC97DAB100A542A7DFBD47BE7600A54200A54200A54200A54200A54200A54200 + A54200A54200A54200A54200A54200A54200A54200A54200A54200A54200A542 + 00A54200A54200A54200A54200A54200A54200A54200A54200A54200A54200A2 + 40000000000000000000000000071C0F44FF0000000000000000000000000018 + 0900A64200A64200A64200A64200A64200A64200A64200A64200A64200A64200 + A64200A64200A64200A64200A64200A64200A64200A64200A64200A64200A642 + 00A64200A64200A64200A64200A64200A64200A64264C88C4BC07940BC71E8F6 + ED7ED19F6DCC92ECF8F043BD73C6EBD4D5F0DF00A642E6F6ECB4E4C744BD74EE + F9F272CD9653C27FFCFDFC64C88C86D4A5F6FBF811AB4EE3F5EA8BD6A915AD51 + CDEDD98DD7AA32B767FBFDFC10AB4D00A6424ABF78FBFDFC42BD720AA94900A6 + 4200A6429CDCB5A3DEBA00A642A7E0BD98DBB200A642B2E4C58BD6A96ACA90DE + F3E614AC50B6E5C8AFE3C30FAB4DFFFFFF42BD72E5F5EB7FD2A014AC50FFFFFF + 2BB56187D5A6B7E5C900A64280D2A0BFE8CF43BD73E9F7EE7BD09D56C48110AB + 4D00A64200A64200A642ABE1C0A9E0BF00A64200A642E8F6ED6CCB924FC17CF2 + FAF52AB46113AC5033B76700A642FAFDFB45BE758BD6A9DDF3E53EBB6FC2E9D1 + DAF2E300A642E3F5EA5CC68663C88B4BC07940BC71E8F6ED7ED19F54C380FEFE + FE70CD9536B86A9EDDB7F1FAF419AE543DBB6FFEFEFE6ACA905AC5841BAF5600 + A64200A6429ADBB4E1F4E845BE75BEE8CEBDE7CE2EB664FBFDFC41BC720FAB4D + 38B96B00A642B3E4C6B2E4C52AB4617ED19FDBF2E436B86A5EC687EAF7EF24B2 + 5C15AD5130B6650AA949FFFFFF36B86A00A64200A64200A64245BE75F5FBF71D + B05797DAB1D4EFDF02A643E6F6EC55C38100A642DFF3E75FC78872CD96ECF8F0 + 42BD72B1E3C5F3FAF600A64200A64200A64271CD95F4FBF653C27F9DDCB6E3F5 + EA13AC50F4FBF667C98E0CAA4A39B96C04A74488D5A6D3EFDE34B86853C27FF5 + FBF741BC723ABA6CFCFDFC3BBA6D0FAB4D37B96A00A642DCF2E561C78900A642 + 00A64200A64200A64200A64200A64200A64200A64200A64200A64200A64200A6 + 4200A64200A64200A64200A64200A64200A64200A64200A64200A64200A64200 + A64200A64200A64200A64200A64200A340000000000000000000000000071C0F + 44FF00000000000000000000000000180900A64200A64200A64200A64200A642 + 00A64200A64200A64200A64200A64200A64200A64200A64200A64200A64200A6 + 4200A64200A64200A64200A64200A64200A64200A64200A64200A64200A64200 + A64200A64200A64201A64239B96CECF8F08ED7AB7DD19ECDEDD900A64273CE97 + D5F0DF00A642E6F6EC58C48300A642B7E5C99BDCB453C27FECF8F000A64223B2 + 5BFFFFFF42BD72FDFEFD45BE7500A6428DD7AABDE7CE32B767FBFDFC10AB4D00 + A64250C17DF5FBF704A74400A64200A64200A6429CDCB5A3DEBA00A642A7E0BD + 98DBB200A642B2E4C58BD6A926B35EDCF2E5B9E6CBDBF2E4AFE3C30FAB4DFFFF + FFCAECD7CFEEDB07A84714AC50FFFFFF2BB56187D5A6B7E5C900A64280D2A0BF + E8CF0EAA4CF3FAF6B7E5C9E5F5EB39B96C00A64200A64200A642ABE1C0ACE2C1 + 08A84708A847E9F7EE6CCB9276CF99F1FAF4ADE2C2ADE2C29CDCB502A643FAFD + FB45BE75ABE1C09FDDB700A6426FCC94DAF2E300A642E3F5EA5CC68600A64201 + A64238B96BECF8F08FD7AB9DDCB6CDEDD900A64200A6420CAA4AF4FBF666C98D + 3DBB6FFDFEFD18AE5300A64200A64200A64200A6429ADBB4A3DEBA00A6426BCB + 91E7F6ED55C381FBFDFCAEE2C2ADE2C2AAE1C00AA949B9E6CB8FD7AB00A64287 + D5A6C0E9D000A64285D4A4ECF8F0ADE2C2ADE2C294D9AF0AA949FFFFFF36B86A + 00A64200A64200A64212AC4FCDEDD9C3EAD2CFEEDBD4EFDF02A643E6F6EC55C3 + 8100A642DFF3E75FC78892D8AEB8E6CA00A64256C481F3FAF600A64200A64200 + A64271CD95CEEDDA00A64240BC71FEFEFE3FBB70FFFFFFB7E5C9ADE2C2ACE2C1 + 26B35E8ED7ABBAE6CB00A6425DC686EDF8F100A6425AC584F9FCFAADE2C2ADE2 + C2A8E0BE0AA949DCF2E561C78900A64200A64200A64200A64200A64200A64200 + A64200A64200A64200A64200A64200A64200A64200A64200A64200A64200A642 + 00A64200A64200A64200A64200A64200A64200A64200A64200A64200A64200A3 + 40000000000000000000000000071C0F5CFF0000000000000000000000000018 + 0900A64300A64300A64300A64300A64300A64300A64300A64300A64300A64300 + A64300A64300A64300A64300A64300A64300A64300A64300A64300A64300A643 + 00A64300A64300A64300A64300A64300A64300A64311AB4FB5E5C8FEFEFECCED + D91DB0587DD19FCDEDDA00A64373CE97D5F0E000A643E6F6EC86D4A508A848D7 + F1E18CD6AA53C280F6FBF824B25D49BF78FFFFFF24B25DEDF8F166C98E00A643 + ADE2C2ADE2C232B767FEFEFE49BF7804A74550C17DF5FBF704A74500A64300A6 + 4300A6439CDCB6C7EBD509A949BFE8CFBDE7CE09A949CAECD789D5A806A84716 + AD531CAF57A4DFBBADE2C20FAB4EFFFFFFA8E0BED1EEDD11AB4F14AC51FFFFFF + 2BB56287D5A6D6F0E00EAA4D9ADBB4BBE7CC2EB664EBF8F004A74599DBB382D3 + A200A64300A64300A643ABE1C1FFFFFFFFFFFFFFFFFFFFFFFF6CCB9259C584E9 + F7EE25B25E6DCC93E4F5EB02A644FAFDFB45BE7597DAB2C5EAD406A84796DAB1 + DAF2E300A643E3F5EA5CC68611AB4FB4E4C7FEFEFECCEDD91DB058ADE2C2B9E6 + CB00A64300A64300A643E2F4E97ED19F3DBB6FFDFEFD18AE5400A64300A64300 + A64300A6439ADBB4C7EBD50AA94A93D9AFD6F0E038B96CF9FCFA32B76751C27E + FBFDFC0CAA4BB9E6CB8FD7AC00A64387D5A6C0E9D000A64368CA8FDEF3E624B2 + 5D7AD09CD7F1E10AA94AFFFFFF71CD9604A74500A64300A64301A64319AE5518 + AE5484D4A4D2EFDD02A644E6F6EC82D3A20CAA4BEFF9F35CC6867ED19FDAF2E3 + 0AA94A7DD19FF3FAF600A64300A64300A64371CD96E6F6EC16AD5368CA8FF5FB + F71FB059F9FCFA51C27E2FB665FBFDFC33B7688ED7ABBAE6CC00A6435DC687ED + F8F100A6433EBB70F9FCFA2DB56455C381F6FBF80CAA4BDCF2E59BDCB505A746 + 00A64300A64300A64300A64300A64300A64300A64300A64300A64300A64300A6 + 4300A64300A64300A64300A64300A64300A64300A64300A64300A64300A64300 + A64300A64300A64300A64300A64300A341000000000000000000000000071C0F + A5FF00000000000000000000000000180900A74300A74300A74300A74300A743 + 00A74300A74300A74300A74300A74300A74300A74300A74300A74300A74300A7 + 4300A74300A74300A74300A74300A74300A74300A74300A74300A74300A74300 + A74300A7437AD19CF2FAF550C27D03A84500A74379D09CCAECD700A74370CD95 + D2EFDD00A743E3F5EAC5EAD4EEF9F2F3FAF630B76650C27DDBF2E4DFF3E7F7FC + F9B7E6C902A74467CA8EEEF9F2C8ECD6EFF9F33FBC7130B766ECF8F0DCF2E5AA + E1C0E6F6ECFEFEFEE6F6EC1DB15800A74300A7439ADCB4CCEDD9EBF8F0FBFDFC + A8E0BEECF8F0FBFDFC46BF761DB158DFF3E7C2E9D2F3FAF668CA8F0FAC4EFFFF + FF33B868B1E4C5B6E5C914AD51FDFEFD29B56185D4A5D0EEDCE8F7EEFCFDFC73 + CE9709AA49D1EFDDA8E0BEEBF8F0EBF8F00BAA4B00A74300A743ABE2C1B1E4C5 + 19AF5519AF55EAF7EF6CCC920AAA4AC9ECD7D2EFDDE9F7EE7AD19C00A743F7FC + F942BD7333B868F2FAF5EEF9F2E9F7EEDAF2E300A743E0F4E859C5847AD19CF3 + FAF64FC27D03A84500A74390D8ADD7F1E101A74300A7430DAB4CF5FBF76BCB91 + 3DBC6FFDFEFD18AF5400A74300A74300A74300A7439ADCB4E6F6ECEAF7EFFCFD + FC70CD9502A744AFE3C4DAF2E3E2F4E999DBB363C98BF8FCF9F4FBF6E6F6ECF3 + FAF6F9FCFAD1EFDD10AC4ED1EFDDCFEEDBEBF8F06CCC9209AA49F8FCF9D1EFDD + C5EAD400A74300A74307A948D5F0E0C4EAD3ECF8F08CD7AA02A744E4F5EBC6EB + D4EFF9F3F1FAF421B25B21B25BEAF7EFEFF9F3E8F7EEF3FAF600A74300A74300 + A74371CD96EEF9F2E6F6ECFAFDFB9ADCB400A74388D5A7E4F5EBD7F1E1BFE8CF + 41BD72F4FBF6F8FCF9E6F6ECEFF9F3FDFEFDE5F6EB16AE53B3E4C6D9F1E2E3F5 + EA94DAB000A743DAF2E3CFEEDBE7F6ED07A94800A74300A74300A74300A74300 + A74300A74300A74300A74300A74300A74300A74300A74300A74300A74300A743 + 00A74300A74300A74300A74300A74300A74300A74300A74300A74300A74300A4 + 41000000000000000000000000071C0F74FF0000000000000000000000000018 + 0900A74300A74300A74300A74300A74300A74300A74300A74300A74300A74300 + A74300A74300A74300A74300A74300A74300A74300A74300A74300A74300A743 + 00A74300A74300A74300A74300A74300A74300A74374CF98E6F6EC2DB66458C5 + 8320B25A06A9470BAA4B00A74305A8460CAB4B00A7430DAB4C03A8452DB66419 + AF5500A74304A8450BAA4B0FAC4E33B86806A94700A74300A74319AF5537B96B + 11AC4F00A74302A7440DAB4C15AE5220B25A5AC685F6FBF814AD5101A74300A7 + 4300A74308A94806A94720B25A24B35D00A74323B35C22B25C00A74300A7430C + AB4B35B96A22B25C00A7430FAC4EFFFFFF30B76604A8450EAB4D05A84653C380 + 09AA4907A94807A9481BB0562BB56201A74300A74308A94834B86919AF5510AC + 4E00A74300A74300A743ABE2C1A9E1BF00A74300A743E8F7EE6CCC9200A74305 + A84630B76622B25C00A74301A7434FC27D11AC4F00A74316AE532FB76571CD96 + DAF2E300A74348BF7818AF5473CE97E6F6EC2CB66357C58320B25A31B767F9FC + FA95DAB04EC17CA9E1BFF4FBF61FB1593DBC6FFDFEFD18AF5400A74300A74300 + A74300A7439ADCB4A3DFBB20B25A29B56101A74300A74302A7442BB56229B561 + 02A74406A947BEE8CF96DAB110AC4E8ED8ABC4EAD30EAB4D00A74306A94732B8 + 671FB15900A74300A7430EAB4D0CAB4B28B46000A74300A74300A74307A94831 + B76729B56102A74400A7430DAB4C03A8452EB66416AE5300A74300A74311AC4F + 32B8675AC685F3FAF600A74300A74300A74371CD96CEEEDA16AE5330B76603A8 + 4500A74301A74323B35C30B76605A84604A84595DAB0BFE8CF10AC4E68CA8FEE + F9F210AC4E01A74303A8452CB66328B46001A74300A7430DAB4C07A9482FB765 + 00A74300A74300A74300A74300A74300A74300A74300A74300A74300A74300A7 + 4300A74300A74300A74300A74300A74300A74300A74300A74300A74300A74300 + A74300A74300A74300A74300A74300A441000000000000000000000000071C0F + 44FF00000000000000000000000000180900A84300A84300A84300A84300A843 + 00A84300A84300A84300A84300A84300A84300A84300A84300A84300A84300A8 + 4300A84300A84300A84300A84300A84300A84300A84300A84300A84300A84300 + A84300A8430BAB4B96DBB1D1EFDDB0E4C416AF5300A84300A84300A84300A843 + 00A84300A84300A84300A84300A84300A84300A84300A84300A84300A84300A8 + 4300A84300A84300A84300A84300A84300A84300A84300A84300A84300A84300 + A84317AF5352C37F01A84300A84300A84300A84300A84300A84300A84300A843 + 00A84300A84300A84300A84300A84300A84300A84300A84300A8430FAD4EFFFF + FF30B86600A84300A84324B45DF8FCF933B96800A84300A84300A84300A84300 + A84300A84300A84300A84300A84300A84300A84300A84300A8436FCD946DCD93 + 00A84300A84398DBB344BF7500A84300A84300A84300A84300A8430FAD4EF4FB + F64DC27B00A84300A84300A8436ECD94DAF2E306AA47E7F6ED63C98B0BAB4B95 + DAB0D2EFDDB0E4C416AF5300A84341BE72B5E5C8D4F0DFB3E5C63DBC6F00A843 + 25B45EA8E1BE0EAC4D00A84300A84300A84300A8439ADCB4A3DFBB00A84300A8 + 4300A84300A84300A84300A84300A84300A84300A8433CBC6F2DB76400A84354 + C4807DD29F00A84300A84300A84300A84300A84300A84300A84300A84300A843 + 00A84300A84300A84300A84300A84300A84300A84300A84300A84300A84300A8 + 4300A84300A84300A84300A84300A84300A84355C581F3FAF600A84300A84300 + A84371CE96CEEEDA00A84300A84300A84300A84300A84300A84300A84300A843 + 00A8432DB7643CBC6F00A84338BB6C9BDCB500A84300A84300A84300A84300A8 + 4300A84300A84300A84300A84300A84300A84300A84300A84300A84300A84300 + A84300A84300A84300A84300A84300A84300A84300A84300A84300A84300A843 + 00A84300A84300A84300A84300A84300A84300A84300A84300A84300A84300A5 + 41000000000000000000000000071D0FD3FF0000000000000000000000000018 + 0900A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94401A94425B55F04AA4600A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A9440CAD4C + 1DB25900A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94414AF5216B05400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94408AB4921B45C00A94400A94400A9440DAD4D1CB25800A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A642000000000000000000000000071D0F + FFFF00000000000000000000000000180900A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A6 + 42000000000000000000000000071D0F75FF0000000000000000000000000018 + 0900A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A944 + 00A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400A9 + 4400A94400A94400A94400A94400A94400A94400A94400A94400A94400A94400 + A94400A94400A94400A94400A94400A642000000000000000000000000071D0F + 45FF00000000000000000000000000180900AA4400AA4400AA4400AA4400AA44 + 00AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA + 4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400 + AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA44 + 00AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA + 4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400 + AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA44 + 00AA4400AA4400AA4403AB461FB45A21B55C21B55C21B55C21B55C21B55C16B1 + 5406AC4800AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400 + AA4400AA4400AA4400AA4402AA4531BA675EC98872D0976DCE9351C57F1BB357 + 00AA4400AA4400AA4400AA4400AA4400AA4400AA4415B15344C07549C2792CB8 + 6400AA4400AA4400AA4400AA4400AA440FAF4F41BF734AC27A32BA6801AA4400 + AA4400AA4400AA4400AA4409AD4A46C1776DCE936ECE9448C2780AAD4B00AA44 + 1BB35748C27844C0750EAE4E00AA4400AA4400AA4400AA4400AA4406AC4844C0 + 756DCE936FCF954EC47D10AF5004AB4708AC490CAE4C0EAE4E10AF4F16B15447 + C1776DCE937FD4A17ED4A06ACD9248C27925B55E20B45B20B45B21B55C23B55D + 23B55D23B55D23B55D23B55D23B55D23B55D22B55C20B45B20B45B20B45B1FB4 + 5A1EB45A1CB3581AB25718B25516B15414B05212B05110AF4F0EAE4E0AAD4B06 + AC4905AB4702AA4500AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA44 + 00AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA + 4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400 + AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA44 + 00AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400A7 + 42000000000000000000000000071D0F45FF0000000000000000000000000018 + 0900AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400 + AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA44 + 00AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA + 4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400 + AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA44 + 00AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA + 4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA449ADDB4FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFEFCF6FCF8D3F0DE95DBB13CBE7000AA44 + 00AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4458C784DAF2E3FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFCFEFCB3E5C729B76200AA4400AA4400AA4400 + AA4400AA44B5E6C8FFFFFFFFFFFFFDFEFD18B25500AA4400AA4400AA4400AA44 + 99DDB4FFFFFFFFFFFFFFFFFF32BA6800AA4400AA4400AA4452C580E7F7EDFFFF + FFFFFFFFFFFFFFFFFFFFE9F7EE5FC989AEE3C3FFFFFFFFFFFF85D6A519B2561E + B45A23B55D28B7614DC37CE0F4E8FFFFFFFFFFFFFFFFFFFFFFFFDDF3E642BF74 + 42C07442C07444C07698DCB3EDF9F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF2FAF5B4E6C847C17742C07442C07442C07442C07442C07442C07442C07442 + C07442C07442C07442C07442C07442C07442C07442C07442C07442C07442C074 + 42C07442C07442C07442C07442C07442C07441BF7340BF723EBE713BBD6F37BC + 6C34BB6A30BA672BB86326B65F21B55C1CB35817B15412B0510DAE4D07AC4902 + AA4500AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA44 + 00AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA + 4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400AA4400 + AA4400AA4400AA4400AA4400AA4400A742000000000000000000000000071D0F + EEFF00000000000000000000000000180900AB4400AB4400AB4400AB4400AB44 + 00AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB + 4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400 + AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB44 + 00AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB + 4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400 + AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB44 + 00AB4400AB4400AB44C4EBD3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFBCE8CD21B55C00AB4400AB4400AB4400AB4400 + AB4400AB4481D5A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF3FBF644C17500AB4400AB4400AB4400AB44BBE8CDFFFFFFFFFFFFFEFE + FE1CB45800AB4400AB4400AB4400AB449FDFB8FFFFFFFFFFFFFFFFFF36BC6B01 + AB4403AB4641C073FAFDFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F4FBF7FFFFFFFFFFFFA0DFB942C07442C07442C07443C075D6F1E1FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF6FCF848C27842C07444C075C2EAD2FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6ACD9142C07442C074 + 42C07442C07442C07442C07442C07442C07442C07442C07442C07442C07442C0 + 7442C07442C07442C07442C07442C07442C07442C07442C07442C07442C07442 + C07442C07442C07442C07442C07442C07442C07442C07442C07442C07442C074 + 42C07442C07442C07442C07442C07442C0743DBF7037BD6C30BA672AB86223B6 + 5D1DB45917B2540FAF4F07AD4901AB4500AB4400AB4400AB4400AB4400AB4400 + AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB44 + 00AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400AB4400A8 + 42000000000000000000000000071D0F75FF0000000000000000000000000018 + 0A00AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500 + AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB45 + 00AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB + 4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500 + AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB45 + 00AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB + 4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB45C4EBD3FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + E8F7EE2DB96500AB4500AB4500AB4500AB453FBF72FDFEFDFFFFFFFFFFFFFFFF + FFE1F5E9A4E1BCA6E1BEE6F6ECFFFFFFFFFFFFFFFFFFECF8F11AB35700AB4500 + AB4500AB45BBE8CDFFFFFFFFFFFFFEFEFE1CB45900AB4500AB4502AB4709AD4B + A6E1BDFFFFFFFFFFFFFFFFFF5ECA893BBE7041C074C2EAD2FFFFFFFFFFFFFFFF + FFC7ECD67FD4A187D7A7D4F0E0FFFFFFFFFFFFFFFFFFFFFFFFA0DFB942C07542 + C07542C0755EC989FFFFFFFFFFFFFFFFFFFFFFFFE4F6EBDCF3E6EDF9F245C177 + 42C07592DAAFFFFFFFFFFFFFFFFFFFFCFEFDC9EDD89EDEB897DCB3A6E1BECBED + D9F6FCF9FFFFFF6CCE9342C07542C07542C07542C07542C07542C07542C07542 + C07542C07542C07542C07542C07542C07542C07542C07542C07542C07542C075 + 42C07542C07542C07542C07542C07542C07542C07542C07542C07542C07542C0 + 7542C07542C07542C07542C07542C07542C07542C07542C07542C07542C07542 + C07542C07542C07542C07542C07542C07542C07542C07542C07542C0753FBF72 + 39BD6E31BB6829B86221B55D19B35710B05006AC4901AB4500AB4500AB4500AB + 4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500AB4500 + AB4500AB4500AB4500AB4500AB4500A843000000000000000000000000071D0F + 46FF00000000000000000000000000180A00AC4500AC4500AC4500AC4500AC45 + 00AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC + 4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500 + AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC45 + 00AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC + 4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500 + AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC45 + 00AC4500AC4500AC45C4EBD3FFFFFFFFFFFFFFFFFF43C17519B45719B4572BB9 + 645AC986B8E7CBFEFEFEFFFFFFFFFFFFFFFFFFDAF2E40CAF4D00AC4500AC4500 + AC45B3E6C7FFFFFFFFFFFFFFFFFFAFE4C409AE4B00AC4500AC450CAF4DB8E7CB + FFFFFFFFFFFFFFFFFF8EDAAC00AC4500AC4500AC45BBE8CDFFFFFFFFFFFFFEFE + FE3DBF712FBB6738BE6D3FC07242C175B7E7CBFFFFFFFFFFFFFFFFFF6ACE9242 + C17542C175E3F6EAFFFFFFFFFFFFF0FAF447C27842C17542C17545C277BAE8CC + FFFFFFFFFFFFFFFFFFA0DFB942C17542C17542C1757BD39EFFFFFFFFFFFFFFFF + FFCEEFDB44C17642C1754DC47D42C17542C175E6F6EDFFFFFFFFFFFFFDFEFD81 + D5A342C17542C17542C17542C17542C1754DC47D83D6A44AC37B42C17542C175 + 42C17542C17542C17542C17542C17542C17542C17542C17542C17542C17542C1 + 7542C17542C17542C17542C17542C17542C17542C17542C17542C17542C17542 + C17542C17542C17542C17542C17542C17542C17542C17542C17542C17542C175 + 42C17542C17542C17542C17542C17542C17542C17542C17542C17542C17542C1 + 7542C17542C17542C17542C17542C17542C17542C17542C17542C17542C17542 + C17542C1753DBF7135BD6B2CBA6522B75D19B4570FB04F05AD4800AC4500AC45 + 00AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500A9 + 43000000000000000000000000071D0F46FF0000000000000000000000000018 + 0A00AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500 + AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC45 + 00AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC + 4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500 + AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC45 + 00AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC + 4500AC4500AC4500AC4500AC4500AC4500AC4500AC4500AC45C4EBD3FFFFFFFF + FFFFFFFFFF2FBB6700AC4500AC4500AC4500AC4501AC4565CC8EFDFEFDFFFFFF + FFFFFFFFFFFF79D39D00AC4500AC4509AE4BF4FBF6FFFFFFFFFFFFFCFEFC1DB5 + 5A00AC4500AC4500AC4500AC4520B65CFCFEFCFFFFFFFFFFFFE5F6EC20B55B29 + B96234BC6ACBEED9FFFFFFFFFFFFFEFEFE56C78442C17542C17542C17542C175 + B7E7CBFFFFFFFFFFFFFFFFFF6ACE9242C17542C175E2F5E9FFFFFFFFFFFFEBF8 + F043C17642C17542C17542C17571D097FFFFFFFFFFFFFFFFFFA0DFB942C17542 + C17542C17584D6A5FFFFFFFFFFFFFFFFFF9EDFB842C17542C17542C17542C175 + 5FCA8AFEFEFEFFFFFFFFFFFFCEEEDB42C17542C17542C17542C17542C17542C1 + 7542C17542C17542C17542C17542C17542C17542C17542C17542C17542C17542 + C17542C17542C17542C17542C17542C17542C17542C17542C17542C17542C175 + 42C17542C17542C17542C17542C17542C17542C17542C17542C17542C17542C1 + 7542C17542C17542C17542C17542C17542C17542C17542C17542C17542C17542 + C17542C17542C17542C17542C17542C17542C17542C17542C17542C17542C175 + 42C17542C17542C17542C17542C17542C17542C17542C17542C17542C17542C1 + 7542C17542C17541C1743BBF7030BB6825B85F1AB4570FB04F04AD4800AC4500 + AC4500AC4500AC4500AC4500AC4500A943000000000000000000000000071D0F + 75FF00000000000000000000000000190A00AD4500AD4500AD4500AD4500AD45 + 00AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD + 4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500 + AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD45 + 00AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD + 4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500 + AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD4500AD45 + 00AD4500AD4500AD45C4ECD3FFFFFFFFFFFFFFFFFF2FBC6700AD4500AD4500AD + 4500AD4500AD4500AD4593DCB0FFFFFFFFFFFFFFFFFFDFF4E703AD4700AD4528 + B962FFFFFFFFFFFFFFFFFFD2F0DE00AD4500AD4501AD450CB04D18B45625B85F + D9F2E3FFFFFFFFFFFFFFFFFF58C98542C27542C275CCEEDAFFFFFFFFFFFFFEFE + FE56C88442C27542C27542C27542C275B7E8CBFFFFFFFFFFFFFFFFFF6ACE9242 + C27542C275B9E8CCFFFFFFFFFFFFFFFFFFA3E1BC4AC47B42C27542C27571D197 + FFFFFFFFFFFFFFFFFFA0E0B942C27542C27542C27587D8A7FFFFFFFFFFFFFFFF + FF9ADEB542C27542C27542C27542C2757DD5A0FFFFFFFFFFFFFFFFFFA4E1BC42 + C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C275 + 42C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C2 + 7542C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542 + C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C275 + 42C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C2 + 7542C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542 + C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C275 + 42C27542C27542C27541C1743ABF6F2DBB6521B75D14B35307AF4A00AD4500AA + 43000000000000000000000000071D0F75FF0000000000000000000000000019 + 0A00AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600 + AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD46 + 00AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD + 4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600 + AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD46 + 00AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD + 4600AD4600AD4600AD4600AD4600AD4600AD4600AD4600AD46C4ECD4FFFFFFFF + FFFFFFFFFF2FBC6800AD4600AD4600AD4600AD4600AD4600AD461BB559FCFEFC + FFFFFFFFFFFFFFFFFF2DBB6600AD463CC071FFFFFFFFFFFFFFFFFFBBE9CD28B9 + 6335BE6C40C17442C27542C27542C275C6ECD5FFFFFFFFFFFFFFFFFF6CCF9342 + C27542C275CCEEDAFFFFFFFFFFFFFEFEFE56C88442C27542C27542C27542C275 + B7E8CBFFFFFFFFFFFFFFFFFF6ACE9242C27542C2755ECB8AF2FAF5FFFFFFFFFF + FFFFFFFFFBFDFCE5F6ECE0F5E8E8F7EEFFFFFFFFFFFFFFFFFFA0E0B942C27542 + C27542C27587D8A7FFFFFFFFFFFFFFFFFF9ADEB542C27542C27542C27542C275 + 89D9A9FFFFFFFFFFFFFFFFFFEFF9F3E0F5E8E0F5E8E0F5E8E0F5E8E0F5E8E0F5 + E8E0F5E8E0F5E89DDFB842C27542C27542C27542C27542C27542C27542C27542 + C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C275 + 42C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C2 + 7542C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542 + C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C275 + 42C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C2 + 7542C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542 + C27542C27542C27542C2753DC0722FB966000000000000000000000000071D0F + 46FF00000000000000000000000000190A00AE4600AE4600AE4600AE4600AE46 + 00AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE + 4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600 + AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE46 + 00AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE + 4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600 + AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE46 + 00AE4600AE4600AE46C4ECD4FFFFFFFFFFFFFFFFFF2FBC6800AE4600AE4600AE + 4600AE4600AE4600AE4600AE46CEEFDBFFFFFFFFFFFFFFFFFF61CC8C14B45456 + C984FFFFFFFFFFFFFFFFFFC4ECD442C27542C27542C27542C27542C27542C275 + C4ECD4FFFFFFFFFFFFFFFFFF6DD09442C27542C275CCEEDAFFFFFFFFFFFFFEFE + FE56C88442C27542C27542C27542C275B7E8CBFFFFFFFFFFFFFFFFFF6ACE9242 + C27542C27542C27562CC8CCDEEDAFCFEFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFA0E0B942C27542C27542C27587D8A7FFFFFFFFFFFFFFFF + FF9ADEB542C27542C27542C27542C27589D8A8FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6F7ED42C27542C275 + 42C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C2 + 7542C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542 + C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C275 + 42C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C2 + 7542C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542 + C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C275 + 42C27542C27542C27542C27542C27542C27542C27542C27542C27542C27540BE + 730000000000000000000000000B1F1346FF0000000000000000000000000019 + 0A00AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600 + AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE46 + 00AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE + 4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600 + AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE46 + 00AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE + 4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE46C4ECD4FFFFFFFF + FFFFFFFFFF2FBC6800AE4600AE4600AE4600AE4600AE4600AE4600AE46ABE4C1 + FFFFFFFFFFFFFFFFFF9BDFB742C2755DCA89FFFFFFFFFFFFFFFFFFD6F1E142C2 + 7542C27542C27542C27542C27542C275D4F1DFFFFFFFFFFFFFFFFFFF67CD9042 + C27542C275CCEEDAFFFFFFFFFFFFFEFEFE56C88442C27542C27542C27542C275 + B8E8CBFFFFFFFFFFFFFFFFFF6ACE9242C27542C27542C27542C27542C2755AC9 + 8683D7A59DDFB8ABE4C2AFE5C5C3EBD3FFFFFFFFFFFFFFFFFFA0E0B942C27542 + C27542C27587D8A7FFFFFFFFFFFFFFFFFF9ADEB542C27542C27542C27542C275 + 7AD49EFFFFFFFFFFFFFFFFFFD6F2E1AFE5C5AFE5C5AFE5C5AFE5C5AFE5C5EEF9 + F3FFFFFFFFFFFFE6F7ED42C27542C27542C27542C27542C27542C27542C27542 + C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C275 + 42C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C2 + 7542C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542 + C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C275 + 42C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C2 + 7542C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542 + C27542C27542C27542C27542C27540BE730000000000000000000000000E2015 + FFFF00000000000000000000000000190A00AE4600AE4600AE4600AE4600AE46 + 00AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE + 4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600 + AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE46 + 00AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE + 4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600 + AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE4600AE46 + 00AE4600AE4600AE46C4ECD4FFFFFFFFFFFFFFFFFF2FBC6800AE4600AE4600AE + 4609B04C1AB6582ABB643AC070B1E6C6FFFFFFFFFFFFFFFFFFA6E2BE42C27546 + C378F2FAF5FFFFFFFFFFFFF9FDFB4EC67E42C27542C27542C27542C2754AC47A + F6FCF8FFFFFFFFFFFFFCFEFD4DC57D42C27542C275CCEEDAFFFFFFFFFFFFFFFF + FF81D6A342C27542C27542C27542C275D1F0DDFFFFFFFFFFFFFFFFFF63CC8D42 + C27542C27542C27542C27542C27542C27542C27542C27542C27542C27574D299 + FFFFFFFFFFFFFFFFFF9BDEB642C27542C27542C27587D8A7FFFFFFFFFFFFFFFF + FF9ADEB542C27542C27542C27542C27558C985FEFEFEFFFFFFFFFFFFB4E7C842 + C27542C27542C27542C27542C275E4F6EBFFFFFFFFFFFFD7F2E242C27542C275 + 42C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C2 + 7542C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542 + C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C275 + 42C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C2 + 7542C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542 + C27542C27542C27542C27542C27542C27542C27542C27542C27542C27542C275 + 42C27542C27542C27542C27542C27542C27542C27542C27542C27542C27540BE + 730000000000000000000000000E201576FF0000000000000000000000000019 + 0A00AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600 + AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF46 + 00AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF + 4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600 + AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF46 + 00AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF + 4600AF4600AF4600AF4600AF4600AF4600AF4600AF4600AF46C4ECD4FFFFFFFF + FFFFFFFFFF32BE6915B55527BB6239C06F41C37542C37542C37542C375B4E7C8 + FFFFFFFFFFFFFFFFFFA4E2BC42C37542C375BCE9CEFFFFFFFFFFFFFFFFFFACE4 + C242C37542C37542C37542C375A0E0B9FFFFFFFFFFFFFFFFFFD9F3E342C37542 + C37542C375CCEFDAFFFFFFFFFFFFFFFFFFF7FCF980D6A242C37542C3756CD094 + FCFEFDFFFFFFFFFFFFFDFEFD51C78042C37542C37542C3758ADAAA5CCB8842C3 + 7542C37542C37542C37542C37593DCB0FFFFFFFFFFFFFFFFFF90DBAE42C37542 + C37542C37587D9A7FFFFFFFFFFFFFFFFFF9ADFB542C37542C37542C37542C375 + 42C375DCF4E6FFFFFFFFFFFFEDF9F24DC67D42C37542C37542C3755ECC8AFCFE + FCFFFFFFFFFFFFB1E6C642C37542C37542C37542C37542C37542C37542C37542 + C37542C37542C37542C37542C37542C37542C37542C37542C37542C37542C375 + 42C37542C37542C37542C37542C37542C37542C37542C37542C37542C37542C3 + 7542C37542C37542C37542C37542C37542C37542C37542C37542C37542C37542 + C37542C37542C37542C37542C37542C37542C37542C37542C37542C37542C375 + 42C37542C37542C37542C37542C37542C37542C37542C37542C37542C37542C3 + 7542C37542C37542C37542C37542C37542C37542C37542C37542C37542C37542 + C37542C37542C37542C37542C37540BF730000000000000000000000000E2015 + 47FF00000000000000000000000000190A00B04600B04600B04600B04600B046 + 00B04600B04600B04600B04600B04600B04600B04600B04600B04600B04600B0 + 4600B04600B04600B04600B04600B04600B04600B04600B04600B04600B04600 + B04600B04600B04600B04600B04600B04600B04600B04600B04600B04600B046 + 00B04600B04600B04600B04600B04600B04600B04600B04600B04600B04600B0 + 4600B04600B04600B04600B04600B04600B04600B04600B04600B04600B04600 + B04600B04600B04600B04600B04600B04600B04600B04600B04600B04600B046 + 00B04600B04600B046C4ECD4FFFFFFFFFFFFFFFFFF64CE8E42C47542C47542C4 + 7542C47542C47542C47542C475C9EED8FFFFFFFFFFFFFFFFFF96DEB242C47542 + C47565CF8EFBFDFCFFFFFFFFFFFFFFFFFFC7EDD68CDBAB8ADAAABEEACFFEFEFE + FFFFFFFFFFFFFFFFFF8CDBAB42C47542C47542C475CCEFDAFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFD7F2E2CAEED8F9FDFBFFFFFFFFFFFFFFFFFFE1F5E942C47542 + C47542C47554C982FEFEFEFCFEFCC6EDD58BDAAA6CD19369D0918CDBABF0FAF4 + FFFFFFFFFFFFFFFFFF6CD19342C47571D297C2ECD2D8F2E2FFFFFFFFFFFFFFFF + FFDEF4E7C2ECD2C2ECD2ABE4C142C47542C47586D9A6FFFFFFFFFFFFFFFFFFCE + EFDB63CE8D4AC67A6AD092D9F3E3FFFFFFFFFFFFFEFEFE6DD19442C47542C475 + 42C47542C47542C47542C47542C47542C47542C47542C47542C47542C47542C4 + 7542C47542C47542C47542C47542C47542C47542C47542C47542C47542C47542 + C47542C47542C47542C47542C47542C47542C47542C47542C47542C47542C475 + 42C47542C47542C47542C47542C47542C47542C47542C47542C47542C47542C4 + 7542C47542C47542C47542C47542C47542C47542C47542C47542C47542C47542 + C47542C47542C47542C47542C47542C47542C47542C47542C47542C47542C475 + 42C47542C47542C47542C47542C47542C47542C47542C47542C47542C47540C0 + 730000000000000000000000000E201559FF0000000000000000000000000019 + 0A00B04700B04700B04700B04700B04700B04700B04700B04700B04700B04700 + B04700B04700B04700B04700B04700B04700B04700B04700B04700B04700B047 + 00B04700B04700B04700B04700B04700B04700B04700B04700B04700B04700B0 + 4700B04700B04700B04700B04700B04700B04700B04700B04700B04700B04700 + B04700B04700B04700B04700B04700B04700B04700B04700B04700B04700B047 + 00B04700B04700B04700B04700B04700B04700B04700B04700B04700B04700B0 + 4700B04700B04700B04700B04700B04702B04914B65528BC63D1F0DEFFFFFFFF + FFFFFFFFFF64CE8F42C47642C47642C47642C47642C47642C47644C478F0FAF4 + FFFFFFFFFFFFFFFFFF79D59E42C47642C47642C47697DEB3FEFEFEFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDEFDB45C57842C47642 + C47642C476CCEFDAFFFFFFFFFFFFDCF4E6FAFDFBFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF91DCAF42C47642C47642C47653C982FCFEFDFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDAF3E444C47742C476A8 + E3C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5FBF847C57A + 42C47643C477C0EBD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFBAE9CD42C47642C47642C47642C47642C47642C47642C47642C47642 + C47642C47642C47642C47642C47642C47642C47642C47642C47642C47642C476 + 42C47642C47642C47642C47642C47642C47642C47642C47642C47642C47642C4 + 7642C47642C47642C47642C47642C47642C47642C47642C47642C47642C47642 + C47642C47642C47642C47642C47642C47642C47642C47642C47642C47642C476 + 42C47642C47642C47642C47642C47642C47642C47642C47642C47642C47642C4 + 7642C47642C47642C47642C47642C47642C47642C47642C47642C47642C47642 + C47642C47642C47642C47642C47640C0740000000000000000000000000E2015 + 76FF00000000000000000000000000190A00B14700B14700B14700B14700B147 + 00B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700B1 + 4700B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700 + B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700B147 + 00B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700B1 + 4700B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700 + B14700B14700B14700B14700B14700B14700B14700B14705B24A1AB8592EBF68 + 3FC47442C57642C576D3F1DFFFFFFFFFFFFFFFFFFF64CF8F42C57642C57642C5 + 7642C57642C57642C57681D8A4FFFFFFFFFFFFFFFFFFF9FDFB50C98042C57642 + C57642C57642C57686DAA7EDF9F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FCFEFDB8E9CB4BC77C42C57642C57642C57642C576CBEFD9FFFFFFFFFFFFA8E4 + C074D49AE9F8EFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEB7E9CB44C57842C57642 + C57642C57642C5768CDBABEAF8EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFDFF5E75CCD8942C57642C576A3E3BCFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF3FBF646C67942C57642C57647C679ADE5C3FBFDFCFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFEFDB4E8C947C67942C57642C57642C576 + 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 + 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 + C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 + 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 + 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 + C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 + 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57640C1 + 740000000000000000000000000E201576FF0000000000000000000000000019 + 0A00B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700 + B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700B147 + 00B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700B1 + 4700B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700 + B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700B147 + 00B14700B14700B14700B14700B14700B14700B14700B14700B14700B14705B2 + 4A19B8592FBF6840C47542C57642C57642C57642C57642C576D3F1DFFFFFFFFF + FFFFFFFFFF64CF8F42C57642C57642C57642C57642C57656CB85EAF8EFFFFFFF + FFFFFFFFFFFFC2ECD242C57642C57642C57642C57642C57642C5764AC77C83D9 + A5AEE6C4C3ECD4C7EDD6B8E9CB98DFB45ECD8A42C57642C57642C57642C57642 + C57642C57673D499A6E3BFA4E3BD64CF8E42C5764BC77C8DDCACBCEACEC6EDD6 + B1E7C675D49B42C57642C57642C57642C57642C57642C57642C57647C67974D4 + 9AA1E2BBBDEACFC8EED7C0EBD1AAE5C17BD69F46C67942C57642C57642C57658 + CC868BDBABB5E8C9FFFFFFFFFFFFFFFFFFC1ECD28BDBAB8BDBAB79D69E42C576 + 42C57642C57642C57642C5765CCD8999DFB5BCEACEC8EED7BDEACF9EE1B962CF + 8D42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 + C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 + 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 + 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 + C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 + 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 + 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 + C57642C57642C57642C57642C57640C1740000000000000000000000000E2015 + 47FF00000000000000000000000000190A00B14700B14700B14700B14700B147 + 00B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700B1 + 4700B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700 + B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700B147 + 00B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700B1 + 4700B14700B14700B14700B14700B14700B14700B14700B14700B14700B14700 + B14700B14703B24919B85930BF6940C47542C57642C57642C57642C57642C576 + 42C57642C57642C576D3F1DFFFFFFFFFFFFFFFFFFF64CF8F42C57642C57642C5 + 7644C5777ED7A2E9F8EFFFFFFFFFFFFFFFFFFFF9FDFB64CF8E42C57642C57642 + C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 + 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 + 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 + C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 + 42C57642C57642C57642C57642C57642C57642C57687DAA8FFFFFFFFFFFFFFFF + FF9AE0B642C57642C57642C57642C57642C57642C57642C57642C57642C57642 + C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 + 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 + 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 + C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 + 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 + 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 + C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 + 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57640C1 + 740000000000000000000000000E201577FF0000000000000000000000000019 + 0A00B24700B24700B24700B24700B24700B24700B24700B24700B24700B24700 + B24700B24700B24700B24700B24700B24700B24700B24700B24700B24700B247 + 00B24700B24700B24700B24700B24700B24700B24700B24700B24700B24700B2 + 4700B24700B24700B24700B24700B24700B24700B24700B24700B24700B24700 + B24700B24700B24700B24700B24700B24700B24700B24700B24700B24700B247 + 00B24700B24700B24700B24701B24815B8562DBF6740C57542C57642C57642C5 + 7642C57642C57642C57642C57642C57642C57642C57642C576D3F1DFFFFFFFFF + FFFFFFFFFFCDEFDBC2ECD2C2ECD2CFF0DCF0FAF4FFFFFFFFFFFFFFFFFFFFFFFF + FDFEFD90DDAE42C57642C57642C57642C57642C57642C57642C57642C57642C5 + 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 + C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 + 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 + 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 + C57642C57687DAA8FFFFFFFFFFFFFFFFFF9AE0B642C57642C57642C57642C576 + 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 + 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 + C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 + 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 + 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 + C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C576 + 42C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642C5 + 7642C57642C57642C57642C57642C57642C57642C57642C57642C57642C57642 + C57642C57642C57642C57642C57640C1740000000000000000000000000E2015 + 77FF00000000000000000000000000190A00B34800B34800B34800B34800B348 + 00B34800B34800B34800B34800B34800B34800B34800B34800B34800B34800B3 + 4800B34800B34800B34800B34800B34800B34800B34800B34800B34800B34800 + B34800B34800B34800B34800B34800B34800B34800B34800B34800B34800B348 + 00B34800B34800B34800B34800B34800B34800B34800B34800B34800B34800B3 + 4800B34800B34800B34800B34800B34800B34800B3480CB65025BE623CC47342 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C677D3F1DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFF4FBF789DBAA42C67742C67742C67742C67742 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 + 7742C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C67742C67742C67742C67742C67777D69DF9FDFAFFFFFFFBFD + FC8ADBAB42C67742C67742C67742C67742C67742C67742C67742C67742C67742 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 + 7742C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 + 7742C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67740C2 + 750000000000000000000000000E201677FF0000000000000000000000000019 + 0A00B34800B34800B34800B34800B34800B34800B34800B34800B34800B34800 + B34800B34800B34800B34800B34800B34800B34800B34800B34800B34800B348 + 00B34800B34800B34800B34800B34800B34800B34800B34800B34800B34800B3 + 4800B34800B34800B34800B34800B34800B34800B34800B34800B34800B34800 + B34800B34800B34800B34800B34800B34800B34800B34800B34800B34804B44A + 1ABA5A34C26D42C67742C67742C67742C67742C67742C67742C67742C67742C6 + 7742C67742C67742C67742C67742C67742C67742C67742C677C7EED7FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE8F8EEA9E5C156CC85 + 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 + 7742C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 + 7742C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742 + C67742C67742C6774CC97E54CB844EC98042C67742C67742C67742C67742C677 + 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 + 7742C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 + 7742C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 + 7742C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742 + C67742C67742C67742C67742C67740C2750000000000000000000000000E2016 + 00FF00000000000000000000000000190A00B34800B34800B34800B34800B348 + 00B34800B34800B34800B34800B34800B34800B34800B34800B34800B34800B3 + 4800B34800B34800B34800B34800B34800B34800B34800B34800B34800B34800 + B34800B34800B34800B34800B34800B34800B34800B34800B34800B34800B348 + 00B34800B34800B34800B34800B34800B34800B34800B34800B34800B34800B3 + 4800B34800B3480CB65027BE633EC57442C67742C67742C67742C67742C67742 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C67756CC8589DBAA8BDCAB8BDCAB8BDCAB8BDCAB8BDCAB85DA + A775D59C5ACD8844C67842C67742C67742C67742C67742C67742C67742C67742 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 + 7742C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 + 7742C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 + 7742C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C6 + 7742C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742 + C67742C67742C67742C67742C67742C67742C67742C67742C67742C67742C677 + 42C67742C67742C67742C67742C67742C67742C67742C67742C67742C67740C2 + 750000000000000000000000000E201677FF000000000000000000000000001A + 0A00B44800B44800B44800B44800B44800B44800B44800B44800B44800B44800 + B44800B44800B44800B44800B44800B44800B44800B44800B44800B44800B448 + 00B44800B44800B44800B44800B44800B44800B44800B44800B44800B44800B4 + 4800B44800B44800B44800B44800B44800B44800B44800B44800B44800B44800 + B44800B44800B44800B44800B44800B44815BA5732C26B41C77642C77742C777 + 42C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742C7 + 7742C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742 + C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742C777 + 42C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742C7 + 7742C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742 + C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742C777 + 42C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742C7 + 7742C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742 + C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742C777 + 42C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742C7 + 7742C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742 + C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742C777 + 42C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742C7 + 7742C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742 + C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742C777 + 42C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742C7 + 7742C77742C77742C77742C77742C77742C77742C77742C77742C77742C77742 + C77742C77742C77742C77742C77740C3750000000000000000000000000E2116 + 13FF000000000000000000000000000401001C0B001C0B001C0B001C0B001C0B + 001C0B001C0B001C0B001C0B001C0B001C0B001C0B001C0B001C0B001C0B001C + 0B001C0B001C0B001C0B001C0B001C0B001C0B001C0B001C0B001C0B001C0B00 + 1C0B001C0B001C0B001C0B001C0B001C0B001C0B001C0B001C0B001C0B001C0B + 001C0B001C0B001C0B001C0B001C0B001C0B001C0B001C0B001D0C041E0F091F + 120A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A + 1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F13 + 0A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F + 130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A + 1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F13 + 0A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F + 130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A + 1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F13 + 0A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F + 130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A + 1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F13 + 0A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F + 130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A + 1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F13 + 0A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F + 130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A + 1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F13 + 0A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F130A1F + 120000000000000000000000000E211600FF000B040000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000012291B + 00FF144327000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000003E654E00FFB7D4C2000D050000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000A1C12DCEBE2 + 00FFFFFFFFB7D4C219472B000C05000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000006120B345A43D7E6DDFFFFFF00FF} + end object btnCancel: TButton Left = 270 - Top = 366 + Top = 392 Width = 106 Height = 25 Anchors = [akRight, akBottom] @@ -45,18 +1117,18 @@ object frmUpdateCheck: TfrmUpdateCheck end object groupBuild: TGroupBox Left = 8 - Top = 124 + Top = 192 Width = 368 - Height = 235 + Height = 193 Anchors = [akLeft, akTop, akRight, akBottom] Caption = 'Nightly build' TabOrder = 1 DesignSize = ( 368 - 235) + 193) object btnBuild: TButton Left = 6 - Top = 203 + Top = 161 Width = 355 Height = 25 Anchors = [akLeft, akRight, akBottom] @@ -70,7 +1142,7 @@ object frmUpdateCheck: TfrmUpdateCheck Left = 6 Top = 16 Width = 355 - Height = 185 + Height = 143 Anchors = [akLeft, akTop, akRight, akBottom] BorderStyle = bsNone Color = clBtnFace @@ -83,7 +1155,7 @@ object frmUpdateCheck: TfrmUpdateCheck end object groupRelease: TGroupBox Left = 8 - Top = 8 + Top = 76 Width = 368 Height = 110 Anchors = [akLeft, akTop, akRight] diff --git a/source/updatecheck.pas b/source/updatecheck.pas index 1dc40ab4d..3c5411127 100644 --- a/source/updatecheck.pas +++ b/source/updatecheck.pas @@ -16,25 +16,21 @@ TfrmUpdateCheck = class(TForm) lblStatus: TLabel; memoRelease: TMemo; memoBuild: TMemo; + imgDonate: TImage; procedure FormCreate(Sender: TObject); procedure btnBuildClick(Sender: TObject); procedure btnReleaseClick(Sender: TObject); procedure FormShow(Sender: TObject); private { Private declarations } - CheckfileDownload: THttpDownLoad; ReleaseURL, BuildURL : String; FLastStatusUpdate: Cardinal; - FCheckFilename: String; procedure Status(txt: String); - procedure ReadCheckFile; procedure DownloadProgress(Sender: TObject); public { Public declarations } - AutoClose: Boolean; // Automatically close dialog after detecting no available downloads BuildRevision: Integer; - CheckForBuildsInAutoMode: Boolean; - BuildSize: Integer; + procedure ReadCheckFile; end; implementation @@ -53,9 +49,10 @@ implementation procedure TfrmUpdateCheck.FormCreate(Sender: TObject); begin // Should be false by default. Callers can set this to True after Create() - AutoClose := False; InheritFont(Font); TranslateComponent(Self); + imgDonate.OnClick := MainForm.DonateClick; + imgDonate.Visible := MainForm.HasDonated(False) = nbFalse; end; {** @@ -73,26 +70,10 @@ procedure TfrmUpdateCheck.Status(txt: String); } procedure TfrmUpdateCheck.FormShow(Sender: TObject); begin - Status(_('Initializing')+' ...'); Caption := f_('Check for %s updates', [APPNAME]) + ' ...'; - - // Init GUI controls - btnRelease.Enabled := False; - btnBuild.Enabled := False; - memoRelease.Clear; - memoBuild.Clear; - - // Prepare download - CheckfileDownload := THttpDownload.Create(Self); - CheckfileDownload.URL := APPDOMAIN+'updatecheck.php?r='+IntToStr(Mainform.AppVerRevision)+'&t='+DateTimeToStr(Now); - FCheckFilename := GetTempDir + APPNAME + '_updatecheck.ini'; - - // Download the check file Screen.Cursor := crHourglass; try Status(_('Downloading check file')+' ...'); - CheckfileDownload.SendRequest(FCheckFilename); - Status(_('Reading check file')+' ...'); ReadCheckFile; // Developer versions probably have "unknown" (0) as revision, // which makes it impossible to compare the revisions. @@ -102,25 +83,12 @@ procedure TfrmUpdateCheck.FormShow(Sender: TObject); Status(f_('Your %s is up-to-date (no update available).', [APPNAME])) else if groupRelease.Enabled or btnBuild.Enabled then Status(_('Updates available.')); - // Remember when we did the updatecheck to enable the automatic interval - AppSettings.WriteString(asUpdatecheckLastrun, DateTimeToStr(Now)); except // Do not popup errors, just display them in the status label on E:Exception do Status(E.Message); end; - if FileExists(FCheckFilename) then - DeleteFile(FCheckFilename); - FreeAndNil(CheckfileDownload); Screen.Cursor := crDefault; - - // For automatic updatechecks this dialog should close if no updates are available. - // Using PostMessage, as Self.Close or ModalResult := mrCancel does not work - // as expected in FormShow - if AutoClose - and (not groupRelease.Enabled) - and ((not CheckForBuildsInAutoMode) or (not btnBuild.Enabled)) then - PostMessage(Self.Handle, WM_CLOSE, 0, 0); end; @@ -129,17 +97,36 @@ procedure TfrmUpdateCheck.FormShow(Sender: TObject); } procedure TfrmUpdateCheck.ReadCheckFile; var - Ini : TIniFile; - ReleaseVersion : String; + CheckfileDownload: THttpDownLoad; + CheckFilename: String; + Ini: TIniFile; + ReleaseVersion: String; ReleaseRevision: Integer; - Note : String; - Compiled : TDateTime; + Note: String; + Compiled: TDateTime; const INISECT_RELEASE = 'Release'; INISECT_BUILD = 'Build'; begin + // Init GUI controls + btnRelease.Enabled := False; + btnBuild.Enabled := False; + memoRelease.Clear; + memoBuild.Clear; + + // Prepare download + CheckfileDownload := THttpDownload.Create(Self); + CheckfileDownload.TimeOut := 5; + CheckfileDownload.URL := APPDOMAIN+'updatecheck.php?r='+IntToStr(Mainform.AppVerRevision)+'&t='+DateTimeToStr(Now); + CheckFilename := GetTempDir + APPNAME + '_updatecheck.ini'; + + // Download the check file + CheckfileDownload.SendRequest(CheckFilename); + // Remember when we did the updatecheck to enable the automatic interval + AppSettings.WriteString(asUpdatecheckLastrun, DateTimeToStr(Now)); + // Read [Release] section of check file - Ini := TIniFile.Create(FCheckFilename); + Ini := TIniFile.Create(CheckFilename); if Ini.SectionExists(INISECT_RELEASE) then begin ReleaseVersion := Ini.ReadString(INISECT_RELEASE, 'Version', 'unknown'); ReleaseRevision := Ini.ReadInteger(INISECT_RELEASE, 'Revision', 0); @@ -164,7 +151,6 @@ procedure TfrmUpdateCheck.ReadCheckFile; if Ini.SectionExists(INISECT_BUILD) then begin BuildRevision := Ini.ReadInteger(INISECT_BUILD, 'Revision', 0); BuildURL := Ini.ReadString(INISECT_BUILD, 'URL', ''); - BuildSize := Ini.ReadInteger(INISECT_BUILD, 'Size', 0); memoBuild.Lines.Add(f_('Revision %d (yours: %d)', [BuildRevision, Mainform.AppVerRevision])); FileAge(ParamStr(0), Compiled); memoBuild.Lines.Add(f_('Compiled: %s (yours: %s)', [Ini.ReadString(INISECT_BUILD, 'Date', ''), DateToStr(Compiled)])); @@ -177,6 +163,10 @@ procedure TfrmUpdateCheck.ReadCheckFile; // before having installed the new release. btnBuild.Enabled := (Mainform.AppVerRevision = 0) or ((BuildRevision > Mainform.AppVerRevision) and (not btnRelease.Enabled)); end; + + if FileExists(CheckFilename) then + DeleteFile(CheckFilename); + FreeAndNil(CheckfileDownload); end;