musrsim/trimsp/src/TrimSPGUI/TrimSPGUI.pl

3002 lines
132 KiB
Perl

# Form implementation generated from reading ui file 'TrimSPGUI.ui'
#
# Created: Fri May 17 15:23:54 2013
# by: The PerlQt User Interface Compiler (puic)
#
# WARNING! All changes made in this file will be lost!
use strict;
use utf8;
package TrimSPGUI;
use Qt;
use Qt::isa qw(Qt::MainWindow);
use Qt::slots
ToggleScanSingle => [],
PrepLayers => [],
removeRowFromTable => [],
ProjSmartDefaults => [],
OpenHelpWindow => [],
CollectValues => [],
CreateInpFile => [],
StartSequenceOne => [],
DirectoryBrowse => [],
ConfirmQuit => [],
PlotProfiles => [],
PlotFraction => [],
OpenAboutWindow => [],
OpenFile => [],
SaveFile => [],
SaveFileAs => [],
GUIPath => [],
TrimBin => [],
findDensity => [];
use Qt::attributes qw(
Progress
tabs
LayersTab
ProjParam
textLabel1
ProjType
NLabel
z0Label
dzLabel
ELabel
SigELabel
AlbleLabel
SigAngleLabel
SeedLabel
NProj
z0
dz
E
SigE
Angle
SigAngle
Seed
groupBox15
textLabelFN
FNPre
textLabelPath
Path
Browse
Start
Quit
groupBox1
textLabel1_4
NL
layerTable
AddParTab
AddParam
textLabelEF
textLabelSHEATH
textLabelERC
textLabelRD
KDEE2
KDEE1
textLabelIRL
textLabelIPOTR
textLabelIPOT
textLabelKDEE2
textLabelKDEE1
textLabelKK0R
textLabelCA
textLabelEmpty
lineEditEmpty
KK0R
KK0
textLabelKK0
EF
SHEATH
ERC
RD
CA
ESB
IPOT
IPOTR
IRL
textLabelESB
ScansTab
ScanSeq
ScanMode
textLabel2
SFrom
textLabel2_2
STo
textLabel2_2_2_2
SStep
ScanList
dzListLabel
LoopRadio
ListRadio
ScanListdz
buttonGroup2
SigERadio
NProjRadio
dRadio
ScandL
SigAngleRadio
AngleRadio
ERadio
ConfigTab
textLabel1_2_2
TrimGUIPath
GUIPathBrowse
textLabel1_2
TRIMBIN
TrimBinBrowse
MenuBar
File
Plot
helpMenu
fileNewAction
fileOpenAction
fileSaveAction
fileSaveAsAction
fileChangeDirAction
fileQuitAction
editUndoAction
editRedoAction
editCutAction
editCopyAction
editPasteAction
plotProfilesAction
helpContentsAction
helpAboutAction
plotFractionsAction
fileStartAction
fileConfigureAction
);
our $image0;
our $image0_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1b,
0x08, 0x06, 0x00, 0x00, 0x00, 0x6b, 0xfd, 0x3f, 0x11, 0x00, 0x00, 0x03,
0x39, 0x49, 0x44, 0x41, 0x54, 0x48, 0x89, 0xbd, 0xd4, 0x5f, 0x68, 0x5b,
0x75, 0x14, 0xc0, 0xf1, 0xef, 0xef, 0xf6, 0xa6, 0x59, 0xb2, 0xfe, 0x09,
0x5d, 0x6b, 0x66, 0x4b, 0xd9, 0x8b, 0xee, 0x21, 0x73, 0xda, 0xce, 0x10,
0x43, 0x28, 0x32, 0x3b, 0x50, 0x54, 0x58, 0x27, 0xb2, 0x39, 0x36, 0xf0,
0x1f, 0x8e, 0x29, 0x54, 0x61, 0x0f, 0x63, 0x0f, 0x8a, 0x7b, 0x19, 0x58,
0x11, 0xdc, 0x50, 0xc4, 0xa0, 0x6f, 0x5a, 0x2a, 0x44, 0xf0, 0xa1, 0x58,
0x85, 0x35, 0xb2, 0xd5, 0x3e, 0x88, 0x75, 0xd8, 0x5a, 0xc7, 0x36, 0x71,
0x76, 0x23, 0xe9, 0xec, 0x52, 0xd7, 0x86, 0xa4, 0xf7, 0x26, 0xb9, 0xe9,
0xcd, 0x3d, 0x3e, 0x6c, 0x45, 0x47, 0xdb, 0xad, 0x7f, 0x92, 0x9d, 0xc7,
0x1f, 0xe7, 0x77, 0x3e, 0xe7, 0x77, 0xee, 0xef, 0x77, 0xd5, 0xf9, 0x83,
0xdb, 0x23, 0x2d, 0xfd, 0x7f, 0x3c, 0x99, 0x7b, 0xa9, 0x4d, 0x78, 0x6d,
0x07, 0x34, 0x79, 0xa9, 0x74, 0x18, 0x46, 0xd1, 0x52, 0x89, 0xe1, 0x57,
0x8e, 0xb4, 0x5e, 0x9b, 0xfb, 0x90, 0x5f, 0xae, 0xc1, 0xe8, 0x75, 0xc8,
0xdb, 0x10, 0x68, 0x84, 0x60, 0x33, 0x84, 0x5a, 0xe0, 0x61, 0x3f, 0xe8,
0x5a, 0x59, 0xe1, 0x6c, 0xd6, 0x9a, 0xd3, 0xff, 0x76, 0x85, 0x21, 0xd2,
0x08, 0x91, 0x5b, 0xab, 0x25, 0x07, 0x2e, 0xde, 0x40, 0xfb, 0x75, 0x8a,
0xba, 0x93, 0x13, 0xb8, 0xff, 0xfc, 0x16, 0x97, 0xcf, 0x20, 0xff, 0xd0,
0xfd, 0x98, 0x6d, 0x6d, 0x58, 0xed, 0xed, 0x48, 0x5d, 0xdd, 0xba, 0x60,
0xc3, 0xc8, 0xa1, 0x3b, 0xce, 0x76, 0x1c, 0xa7, 0xf9, 0xbf, 0x55, 0x05,
0x04, 0xc0, 0x09, 0xc0, 0xec, 0xc2, 0x52, 0x2e, 0x87, 0x7b, 0x7c, 0x1c,
0xf7, 0xe8, 0x28, 0x1b, 0xbf, 0xe8, 0xa3, 0x2a, 0x93, 0xa1, 0xb8, 0x6d,
0x1b, 0xf9, 0x8e, 0x0e, 0x0a, 0x91, 0x08, 0xe2, 0xf1, 0xac, 0x0a, 0x76,
0x1c, 0x03, 0x7d, 0x25, 0x89, 0xe2, 0xf5, 0x52, 0x08, 0x87, 0x29, 0x84,
0xc3, 0x37, 0x1b, 0xb1, 0x6d, 0xaa, 0xc7, 0xc6, 0xf0, 0x0c, 0x0d, 0x51,
0x1f, 0x8d, 0x62, 0xb7, 0xb6, 0x92, 0x3e, 0x76, 0x8c, 0x92, 0xdf, 0xbf,
0x62, 0x7c, 0x45, 0xf0, 0xa2, 0x46, 0x74, 0x1d, 0x2b, 0x18, 0xc4, 0x0a,
0x06, 0x01, 0x70, 0x8f, 0x8c, 0x70, 0xdf, 0xa1, 0x43, 0xa4, 0x7a, 0x7b,
0x71, 0x6e, 0x7d, 0x06, 0x65, 0x9a, 0x78, 0xe3, 0x71, 0xcc, 0xae, 0xae,
0x25, 0x6b, 0x94, 0xe5, 0xd6, 0x58, 0xa1, 0x10, 0xc6, 0xde, 0xbd, 0x78,
0xe2, 0x71, 0x00, 0x86, 0x87, 0x8f, 0x52, 0xab, 0x9f, 0xc4, 0x7c, 0x76,
0xd7, 0xb2, 0x7b, 0xca, 0x76, 0x5d, 0xb5, 0x74, 0x1a, 0xa9, 0xa9, 0x01,
0xe0, 0xf2, 0xf9, 0x14, 0x5f, 0xc5, 0xcf, 0x52, 0x52, 0xb2, 0x6c, 0xfe,
0x9a, 0x46, 0xbd, 0xa8, 0x48, 0x32, 0x89, 0xe7, 0xcc, 0x19, 0xb2, 0x87,
0x0f, 0x03, 0xf0, 0xc6, 0xa3, 0xdd, 0x14, 0x42, 0xa1, 0x3b, 0xef, 0x59,
0x0f, 0xa8, 0x65, 0x32, 0xd4, 0xf6, 0xf5, 0xe1, 0x39, 0x7d, 0x9a, 0x99,
0x9e, 0x1e, 0xc4, 0xed, 0x06, 0xb8, 0x2b, 0xba, 0x66, 0x58, 0x9f, 0x9c,
0xa4, 0x2e, 0x1a, 0xa5, 0xfa, 0xd2, 0x25, 0x8c, 0xfd, 0xfb, 0x49, 0xc5,
0x62, 0x88, 0xcb, 0xb5, 0xba, 0x1a, 0xab, 0x4a, 0x4e, 0x26, 0xf1, 0x9d,
0x3a, 0x45, 0xd5, 0xd4, 0x14, 0x99, 0xee, 0x6e, 0x66, 0x4f, 0x9c, 0x58,
0x15, 0x76, 0x5b, 0xad, 0xfe, 0x9f, 0x5d, 0xd4, 0x6f, 0xba, 0x73, 0xb7,
0xd5, 0x05, 0x93, 0xc7, 0x07, 0xde, 0xa7, 0xe5, 0xc2, 0xef, 0xc4, 0x76,
0xbf, 0x4d, 0xaa, 0x2b, 0x08, 0x36, 0xf0, 0xe3, 0xda, 0x50, 0x2b, 0xef,
0x42, 0x2f, 0x28, 0x3f, 0x6e, 0xd5, 0xbc, 0x6c, 0xd2, 0xd6, 0xb1, 0x01,
0x76, 0x7e, 0x73, 0x9c, 0x73, 0x9d, 0xaf, 0x33, 0xf0, 0xce, 0x67, 0x88,
0xb6, 0xfe, 0x87, 0x60, 0xa9, 0xec, 0xf2, 0xa3, 0xae, 0x2a, 0xcd, 0xf3,
0x54, 0xef, 0x11, 0x6a, 0xb2, 0xd3, 0xf4, 0x1e, 0xfd, 0x9e, 0x5c, 0x6d,
0xd3, 0xba, 0xc1, 0xff, 0xc7, 0x92, 0xed, 0x6f, 0x30, 0xd3, 0x1c, 0xfc,
0xe0, 0x19, 0x66, 0x36, 0x6f, 0x25, 0xf6, 0x66, 0xac, 0xec, 0x28, 0x2c,
0x71, 0xb9, 0x3c, 0xc6, 0x0c, 0x2f, 0x7c, 0xf4, 0x3c, 0x43, 0x7b, 0x8e,
0x73, 0x25, 0xf0, 0x44, 0xd9, 0xc1, 0x85, 0xb8, 0xed, 0xc4, 0x55, 0x76,
0x91, 0x7d, 0x1f, 0xef, 0x63, 0x68, 0xcf, 0xbb, 0x15, 0x45, 0x17, 0xc1,
0x4f, 0x7f, 0xf9, 0x16, 0xbf, 0x75, 0xbc, 0xc8, 0x95, 0x40, 0x67, 0x45,
0x51, 0x00, 0xdd, 0x74, 0x7d, 0x82, 0xe6, 0xaa, 0xe7, 0xc1, 0x73, 0x13,
0xb8, 0xed, 0x9f, 0x18, 0xee, 0xdc, 0x02, 0xbc, 0x57, 0x51, 0xb4, 0x68,
0x5b, 0xe8, 0x1b, 0x9b, 0x2c, 0xea, 0x1b, 0xf3, 0xec, 0xee, 0x1f, 0xa0,
0xaf, 0xe7, 0x00, 0xb5, 0x0d, 0x56, 0x45, 0x51, 0x00, 0x2b, 0x67, 0xdd,
0x1c, 0x75, 0xe0, 0xec, 0x05, 0x2e, 0x3f, 0xf6, 0x00, 0x46, 0x43, 0x4d,
0xc5, 0xd1, 0x85, 0xd0, 0x00, 0x76, 0x7c, 0x37, 0xca, 0xc8, 0x73, 0x77,
0xff, 0xb1, 0x97, 0x15, 0xf6, 0x4f, 0x4c, 0x23, 0x4a, 0xdd, 0xd3, 0xd3,
0x02, 0x68, 0xbb, 0x3e, 0xff, 0x81, 0xab, 0x8f, 0x6c, 0xb9, 0xa7, 0x28,
0x80, 0xde, 0xfe, 0x57, 0xca, 0xfb, 0xf5, 0xab, 0xe5, 0x79, 0xb3, 0xf3,
0x85, 0xf9, 0x79, 0xa7, 0xe4, 0x4c, 0x8a, 0xc8, 0x94, 0x38, 0x72, 0x43,
0x1c, 0x99, 0x11, 0x11, 0x43, 0x1c, 0x99, 0x13, 0x91, 0x02, 0x80, 0x38,
0x62, 0x14, 0xf3, 0xc5, 0xa2, 0xfe, 0xe9, 0xcb, 0x3b, 0x07, 0xff, 0xd9,
0xec, 0x73, 0xe7, 0xd3, 0xa6, 0x4f, 0x69, 0xca, 0xa7, 0x94, 0xda, 0xa4,
0x34, 0xe5, 0x03, 0x7c, 0x4a, 0xa9, 0x06, 0x14, 0x1b, 0x10, 0x4c, 0x41,
0x4c, 0x04, 0x43, 0x44, 0x66, 0x45, 0x24, 0x2d, 0x25, 0x99, 0x2e, 0xd9,
0xa5, 0x84, 0x6d, 0xd9, 0x89, 0x5c, 0x36, 0x97, 0x4c, 0x8c, 0x27, 0xae,
0x0e, 0x46, 0x07, 0xaf, 0x03, 0xa5, 0x95, 0x34, 0xf9, 0x2f, 0x1b, 0xe8,
0x45, 0x6e, 0x82, 0xce, 0x25, 0x35, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82;
our $image1;
our $image1_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x04,
0x7c, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x85, 0x95, 0xdb, 0x6f, 0x54,
0x55, 0x14, 0x87, 0xbf, 0xbd, 0xcf, 0x65, 0x6e, 0x9d, 0xe9, 0x94, 0x16,
0x4b, 0x11, 0x86, 0x02, 0x31, 0x84, 0x54, 0xa0, 0x4e, 0x45, 0x83, 0x89,
0x97, 0x60, 0xd4, 0x54, 0xa2, 0x89, 0x68, 0x8c, 0xb7, 0xf8, 0x56, 0x02,
0x0f, 0x24, 0xbc, 0x10, 0xff, 0x00, 0x25, 0xfd, 0x03, 0xd4, 0xf4, 0xe1,
0x28, 0x0f, 0xbe, 0xf4, 0x41, 0x1e, 0x4d, 0x30, 0x62, 0x7c, 0x21, 0x48,
0x08, 0x65, 0x48, 0xad, 0x88, 0x21, 0xb1, 0x40, 0xa9, 0xd2, 0xce, 0xb4,
0xd3, 0x99, 0x33, 0xcc, 0xe5, 0xdc, 0xf6, 0xf6, 0x61, 0xda, 0x42, 0x4d,
0x8b, 0x27, 0x59, 0x59, 0x67, 0x9f, 0xbd, 0xd7, 0x77, 0x7e, 0x6b, 0x65,
0x65, 0x6d, 0xc1, 0x63, 0x9e, 0xfc, 0x89, 0x49, 0x0b, 0xf4, 0x66, 0x50,
0x7d, 0x68, 0x9d, 0x04, 0x0d, 0xe8, 0x26, 0x5a, 0xcd, 0x59, 0xca, 0x2d,
0x5e, 0x71, 0x5e, 0xf3, 0x37, 0x8a, 0x15, 0x8f, 0x81, 0x1e, 0x02, 0xde,
0x07, 0x3d, 0x88, 0x20, 0x87, 0xb0, 0x52, 0x00, 0x28, 0xaf, 0x81, 0x8e,
0xee, 0x01, 0x93, 0x42, 0x85, 0xe7, 0xf2, 0xfa, 0xec, 0x25, 0xc7, 0x71,
0xa2, 0xff, 0x05, 0xe7, 0x4f, 0x4c, 0xee, 0x06, 0x71, 0x0a, 0xc3, 0xfa,
0xa8, 0x23, 0x95, 0xcc, 0x6e, 0xe9, 0xc9, 0xc8, 0xde, 0xee, 0x38, 0x7b,
0x7a, 0x6a, 0x24, 0xac, 0x88, 0xbf, 0xca, 0x1d, 0xdc, 0x29, 0x2a, 0x16,
0x4a, 0x25, 0x55, 0xae, 0x36, 0x9b, 0x2a, 0x6c, 0x5e, 0xb2, 0xf4, 0x83,
0x2f, 0xf6, 0xeb, 0xf1, 0xcb, 0x8e, 0xe3, 0x84, 0xeb, 0x82, 0xf3, 0x27,
0x26, 0x77, 0x80, 0x18, 0xc3, 0xce, 0x0c, 0x0f, 0xee, 0x4a, 0xf0, 0xe6,
0xc1, 0x34, 0xfb, 0xb6, 0x6b, 0x9e, 0xc8, 0x5a, 0x18, 0xb2, 0x7d, 0x54,
0x03, 0x4b, 0xb5, 0x90, 0xe9, 0xb9, 0x80, 0xf3, 0x85, 0x16, 0x17, 0xa7,
0x96, 0xf0, 0x9b, 0xee, 0xcd, 0x98, 0x2a, 0x7f, 0xf6, 0xb4, 0x3e, 0x77,
0x7e, 0x05, 0x6e, 0xfc, 0x47, 0xe9, 0xd7, 0x1d, 0x99, 0xcc, 0x1b, 0x6f,
0x1f, 0xea, 0x14, 0x9f, 0xbe, 0x92, 0xe0, 0xa9, 0x3e, 0x83, 0x98, 0x65,
0xf0, 0xcd, 0x4f, 0x15, 0xf6, 0x6e, 0x8f, 0xe1, 0x87, 0x1a, 0x3f, 0xd4,
0x18, 0x52, 0xd0, 0x93, 0x31, 0xd9, 0xb7, 0xc3, 0xa2, 0xb7, 0xcb, 0xe2,
0x76, 0x51, 0xf7, 0xb8, 0x2d, 0xf1, 0xec, 0xa2, 0xde, 0x59, 0x18, 0x1e,
0x4a, 0xcc, 0x16, 0x0a, 0x05, 0xbd, 0x0a, 0xee, 0x3b, 0x78, 0x7c, 0x14,
0x3b, 0xfd, 0xc1, 0x91, 0xe7, 0xb2, 0xe2, 0xad, 0x21, 0x0b, 0xdb, 0x92,
0xf8, 0xa1, 0xc6, 0x0b, 0x34, 0xef, 0xbc, 0x90, 0xe5, 0xab, 0x1f, 0x16,
0xd9, 0xb5, 0xc5, 0xc2, 0xf3, 0x15, 0x5e, 0xa0, 0xf0, 0x42, 0x8d, 0xd6,
0x9a, 0xad, 0x9b, 0x2c, 0xd2, 0x49, 0x4b, 0xfc, 0x31, 0x1b, 0x75, 0xb7,
0x7c, 0x6d, 0x6d, 0xe5, 0xfa, 0x85, 0xa1, 0xa1, 0xa1, 0xc0, 0x68, 0xab,
0xbd, 0x76, 0x48, 0x18, 0xb1, 0xd1, 0x03, 0xbb, 0x33, 0xf1, 0xe1, 0xbc,
0x85, 0x94, 0xe0, 0x07, 0x8a, 0x56, 0xd0, 0x86, 0x6c, 0xeb, 0x89, 0xf1,
0xe2, 0x40, 0x8a, 0x93, 0xdf, 0x69, 0x9e, 0xc9, 0x05, 0x78, 0x81, 0x5e,
0xde, 0x6f, 0x67, 0xb0, 0xa9, 0x43, 0x52, 0xf7, 0x4d, 0x66, 0x4a, 0x41,
0x7f, 0x29, 0xda, 0x3e, 0xd9, 0xcb, 0xcd, 0xdb, 0x46, 0xfe, 0xf8, 0x84,
0x05, 0x9c, 0x4a, 0xa7, 0xd3, 0x2f, 0xbd, 0x3a, 0x98, 0x12, 0x5d, 0x1d,
0xe0, 0x05, 0x9a, 0x56, 0xd0, 0x56, 0xeb, 0x05, 0x9a, 0xdd, 0x5b, 0xe3,
0x00, 0xbc, 0xf7, 0xbc, 0xc1, 0xe9, 0x71, 0xc1, 0xde, 0x2d, 0xfe, 0x9a,
0xfd, 0x56, 0xa0, 0xb0, 0x0d, 0x9f, 0xe9, 0x79, 0x65, 0xd7, 0x5b, 0x61,
0x60, 0x84, 0xd5, 0x8b, 0x26, 0xb0, 0x19, 0x18, 0xcc, 0x64, 0x3a, 0x65,
0x36, 0x1e, 0xe2, 0xd6, 0xe5, 0x46, 0x1d, 0x08, 0xc0, 0xf8, 0x49, 0x9b,
0x0f, 0xbf, 0x84, 0xa3, 0x07, 0x5c, 0xa2, 0x48, 0x33, 0x5b, 0x8e, 0x98,
0x9a, 0xcb, 0xe2, 0x36, 0x93, 0xd4, 0xe8, 0x90, 0x8a, 0xca, 0x80, 0x2b,
0x72, 0x39, 0x13, 0xe8, 0x43, 0xc8, 0x5c, 0x4f, 0x5a, 0xd0, 0xf4, 0x15,
0x4d, 0x5f, 0xa1, 0x97, 0xdb, 0x65, 0xc5, 0xaf, 0x0f, 0xcf, 0xb0, 0xbf,
0xb7, 0xc2, 0xe4, 0xdf, 0x29, 0x66, 0xdd, 0x76, 0x46, 0x98, 0x26, 0x08,
0xa3, 0x0f, 0xc3, 0xce, 0x49, 0x20, 0x89, 0x8c, 0xa5, 0x92, 0x56, 0x40,
0xa5, 0xae, 0x70, 0x1b, 0x0a, 0xcf, 0xd7, 0xb4, 0x7c, 0xbd, 0xea, 0x37,
0x52, 0xfe, 0xdb, 0x7c, 0x96, 0x52, 0x23, 0xb9, 0xfa, 0x4d, 0x08, 0x01,
0x32, 0x96, 0x10, 0x90, 0x5e, 0xcd, 0xdb, 0x6d, 0x59, 0xcc, 0x57, 0x25,
0x45, 0x57, 0x52, 0x6d, 0x4a, 0x2a, 0x4d, 0x83, 0x7b, 0x95, 0x18, 0x57,
0x67, 0x52, 0x8f, 0x2d, 0x8b, 0x1f, 0x19, 0x08, 0x41, 0xdb, 0x56, 0x7e,
0x80, 0x92, 0x26, 0xe8, 0x26, 0xca, 0x6b, 0xcc, 0xd7, 0x13, 0xd4, 0xa3,
0x78, 0x3b, 0x7f, 0x40, 0x23, 0xa8, 0xf9, 0x36, 0x7a, 0x7d, 0xc1, 0x00,
0xbc, 0x3e, 0xfa, 0xf0, 0x5d, 0x88, 0x76, 0x14, 0x51, 0xab, 0x25, 0x74,
0xe8, 0x99, 0x68, 0x35, 0x07, 0xdc, 0xab, 0x36, 0xd4, 0xce, 0x48, 0x24,
0xd6, 0x04, 0x6a, 0xe4, 0x86, 0xd3, 0xe4, 0xf0, 0x19, 0x08, 0x96, 0x27,
0x84, 0x69, 0x80, 0x04, 0x1e, 0x34, 0x3d, 0xd0, 0x51, 0x51, 0xaa, 0xfa,
0x9c, 0xb4, 0x94, 0x5b, 0x04, 0x26, 0xf1, 0xca, 0xca, 0x32, 0x34, 0xf6,
0x23, 0x16, 0x33, 0x22, 0xd6, 0x93, 0x7c, 0xf8, 0x0c, 0x80, 0x22, 0x69,
0x45, 0x24, 0xad, 0x88, 0xb8, 0x19, 0x61, 0x9b, 0x11, 0xc2, 0x5f, 0x54,
0x26, 0xad, 0x5b, 0x59, 0x7d, 0xf7, 0xbe, 0x79, 0xc5, 0x79, 0xcd, 0x1f,
0x3a, 0x76, 0xf9, 0x5c, 0xe4, 0x55, 0x3f, 0xb1, 0xa2, 0x44, 0x57, 0x57,
0xda, 0x5e, 0x23, 0x52, 0x69, 0x80, 0xcc, 0xea, 0x7a, 0x64, 0xac, 0xc6,
0xb6, 0x34, 0x08, 0xa1, 0x57, 0xcf, 0xb5, 0xe7, 0x87, 0x8f, 0x6a, 0x2d,
0xd5, 0x13, 0xd1, 0xfc, 0x85, 0x4e, 0x63, 0xa1, 0x6c, 0x02, 0xe4, 0xf5,
0xd9, 0x4b, 0xd7, 0xc2, 0x91, 0xef, 0x6b, 0x95, 0xd2, 0xb1, 0xfe, 0xee,
0x2e, 0x62, 0xa6, 0x78, 0xd8, 0x6f, 0x3c, 0x04, 0x9f, 0xfe, 0x76, 0x9e,
0xac, 0x0d, 0xda, 0x5e, 0xa9, 0x69, 0xfb, 0x8c, 0x17, 0x6a, 0x66, 0x2a,
0x4b, 0x28, 0xbf, 0xfa, 0xcb, 0x1e, 0xf9, 0xf3, 0xaf, 0x40, 0xcd, 0x00,
0x28, 0x14, 0x0a, 0x7a, 0x5b, 0xfe, 0xe3, 0x69, 0x2f, 0x60, 0xaf, 0x52,
0xd1, 0x8e, 0x27, 0xbb, 0x0d, 0x91, 0x8c, 0x09, 0x62, 0x96, 0x26, 0x66,
0x69, 0x5e, 0xde, 0x97, 0xe6, 0xf3, 0xf1, 0xfb, 0xc4, 0xcc, 0xf6, 0x3a,
0x6e, 0xb7, 0x7d, 0xcc, 0xd4, 0x08, 0x02, 0x6e, 0xcd, 0xb8, 0x6a, 0xb1,
0x5c, 0x9d, 0xe8, 0x8e, 0x6e, 0x8c, 0x65, 0xc5, 0x3f, 0x37, 0x56, 0xc1,
0x00, 0x47, 0xf2, 0xd6, 0xe2, 0xa2, 0xce, 0x4d, 0x54, 0x9b, 0xe6, 0x80,
0xdb, 0x08, 0xfb, 0xd3, 0x49, 0x8b, 0x4d, 0x69, 0x13, 0xdb, 0x92, 0x5c,
0xbe, 0x59, 0xc7, 0x36, 0xc5, 0x1a, 0xb3, 0x0c, 0x58, 0xa8, 0x06, 0x4c,
0x4d, 0x57, 0x99, 0x2b, 0xb9, 0x13, 0x9b, 0xc3, 0xeb, 0xa3, 0x39, 0x59,
0xb8, 0x0a, 0x2c, 0x38, 0x8e, 0x13, 0xad, 0x82, 0x0b, 0x85, 0x82, 0x1e,
0x1e, 0x4a, 0x96, 0x17, 0x75, 0xff, 0xf5, 0x6a, 0xd3, 0x48, 0x96, 0xaa,
0x41, 0x7f, 0xad, 0x11, 0xda, 0x71, 0x33, 0x14, 0xa9, 0x84, 0x89, 0x29,
0x25, 0x52, 0x80, 0xd6, 0x11, 0x8b, 0x4b, 0x75, 0x7e, 0xbf, 0xd3, 0x50,
0x7f, 0xce, 0xd4, 0x1e, 0x54, 0x2a, 0xee, 0x8f, 0xdd, 0xd1, 0x8d, 0xb1,
0x65, 0x68, 0xd1, 0x71, 0x9c, 0x00, 0xd6, 0x69, 0xa6, 0x91, 0x91, 0x11,
0x09, 0xa4, 0xa6, 0x78, 0xf7, 0x70, 0x28, 0x3b, 0x8e, 0x2a, 0xac, 0x01,
0x29, 0x45, 0x5f, 0x3a, 0x61, 0x24, 0x00, 0x6a, 0xcd, 0xa8, 0xa5, 0x22,
0x55, 0x34, 0x69, 0xdd, 0x8a, 0x47, 0xf3, 0x17, 0x96, 0x6b, 0x3a, 0x0f,
0x54, 0x36, 0xbc, 0x41, 0x1e, 0x81, 0x0b, 0xc0, 0x2e, 0x46, 0xfd, 0x59,
0x57, 0xe4, 0x72, 0x18, 0x76, 0x4e, 0x40, 0x5a, 0xa0, 0xa4, 0xd0, 0xa1,
0x27, 0x55, 0x7d, 0x2e, 0xab, 0xef, 0xde, 0xef, 0x34, 0x16, 0xca, 0x40,
0x0d, 0x68, 0x3a, 0x8e, 0xa3, 0x1e, 0x65, 0xfc, 0x0b, 0x65, 0xf3, 0x41,
0x6e, 0xc3, 0xc8, 0xf6, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
0x44, 0xae, 0x42, 0x60, 0x82;
our $image2;
our $image2_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x04,
0x57, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xa5, 0x95, 0xcd, 0x4f, 0x54,
0x57, 0x18, 0xc6, 0x7f, 0xe7, 0x9c, 0x3b, 0x77, 0x60, 0x66, 0x98, 0x96,
0xf1, 0x62, 0x43, 0x05, 0x04, 0x43, 0x94, 0x88, 0x2c, 0x2c, 0x28, 0x92,
0x58, 0xa3, 0x12, 0x35, 0x36, 0x71, 0x61, 0xe2, 0x8a, 0x85, 0xd1, 0xa5,
0x0b, 0x57, 0xa6, 0x4b, 0x57, 0xea, 0xae, 0x24, 0xea, 0xc2, 0x85, 0x5b,
0x13, 0xfa, 0x07, 0x88, 0x64, 0xec, 0xc6, 0x84, 0xb8, 0x82, 0x51, 0x3a,
0x52, 0xc5, 0x54, 0x8b, 0x16, 0xac, 0x7c, 0x88, 0xc0, 0xcc, 0xbd, 0xcc,
0x17, 0x33, 0xe7, 0x74, 0x71, 0xef, 0x8c, 0xd8, 0x36, 0xdd, 0xf8, 0x26,
0x27, 0xe7, 0x4d, 0xee, 0xb9, 0xcf, 0x79, 0xce, 0xf3, 0x7e, 0x89, 0x1f,
0xa1, 0x25, 0xa4, 0xd4, 0xb5, 0x5d, 0x8e, 0x33, 0x64, 0x29, 0x65, 0xf3,
0x05, 0x56, 0xae, 0x54, 0x4a, 0xb3, 0x2b, 0x2b, 0x23, 0x9b, 0x95, 0xca,
0x55, 0x2b, 0xa4, 0xd4, 0xb5, 0x2b, 0x27, 0x4f, 0x5e, 0xc8, 0xe7, 0xf3,
0xac, 0xb8, 0x2e, 0x18, 0xf3, 0xd9, 0x61, 0x29, 0x04, 0x52, 0x4a, 0xa4,
0x10, 0xa8, 0x60, 0x97, 0xff, 0xdc, 0x03, 0x3f, 0x5a, 0x57, 0x67, 0x97,
0xe1, 0xc2, 0x4f, 0x0f, 0x1f, 0x62, 0x75, 0x38, 0xce, 0xd0, 0x46, 0x2e,
0xc7, 0xc2, 0xee, 0xdd, 0x24, 0x7a, 0x7b, 0x3f, 0x03, 0x15, 0xd5, 0x9f,
0x84, 0x40, 0x85, 0xc3, 0x08, 0x21, 0x10, 0xe5, 0x32, 0x52, 0x08, 0xdf,
0x0f, 0xbe, 0x55, 0xfd, 0x8d, 0xe7, 0xcf, 0x89, 0xa6, 0xd3, 0x74, 0x38,
0xce, 0x90, 0x65, 0x49, 0x69, 0xaf, 0xb8, 0x2e, 0x0d, 0x9d, 0x9d, 0xe8,
0x72, 0xf9, 0x33, 0xa6, 0xd1, 0x8e, 0x0e, 0xec, 0x8e, 0x0e, 0xc2, 0x4d,
0x4d, 0x44, 0x12, 0x09, 0x00, 0x36, 0x3e, 0x7e, 0x64, 0x63, 0x69, 0x89,
0xdc, 0xab, 0x57, 0xc4, 0xd6, 0xd7, 0x61, 0x0b, 0x70, 0xb8, 0xbd, 0x9d,
0x52, 0x2a, 0x85, 0x25, 0xa5, 0x6d, 0x19, 0xc0, 0x18, 0xc3, 0x66, 0x36,
0x8b, 0xde, 0xdc, 0x04, 0xc0, 0xaa, 0xaf, 0x67, 0xdb, 0x89, 0x13, 0x34,
0xf6, 0xf4, 0xfc, 0x4b, 0xc7, 0x98, 0xe3, 0x10, 0x73, 0x1c, 0xe8, 0xee,
0xe6, 0xcf, 0x89, 0x09, 0x54, 0x2a, 0x45, 0xbd, 0x31, 0x20, 0x25, 0xa2,
0x58, 0x44, 0x08, 0x81, 0x01, 0x2c, 0x8c, 0x01, 0x63, 0x28, 0x65, 0x32,
0xa8, 0x62, 0x11, 0x3b, 0x12, 0x61, 0xe7, 0xa5, 0x4b, 0xd4, 0x05, 0x0c,
0x7f, 0x7b, 0xf4, 0x88, 0x0f, 0xcf, 0x9e, 0x51, 0x59, 0x5a, 0x22, 0x1e,
0x0e, 0x63, 0x35, 0x37, 0x93, 0xe8, 0xe9, 0xa1, 0x7d, 0x60, 0x80, 0x9d,
0x07, 0x0f, 0xe2, 0xee, 0xda, 0xc5, 0xfb, 0xbb, 0x77, 0x69, 0xb2, 0x2c,
0xd8, 0xdc, 0x44, 0x00, 0x18, 0x83, 0xa5, 0x8d, 0x41, 0x1b, 0xc3, 0xea,
0xe4, 0x24, 0x89, 0x7d, 0xfb, 0xf8, 0xe6, 0xdc, 0x39, 0xea, 0x12, 0x09,
0x72, 0x99, 0x0c, 0xbf, 0x0c, 0x0f, 0xb3, 0xfd, 0xfd, 0x7b, 0x5a, 0x62,
0x31, 0x5f, 0xeb, 0x62, 0x11, 0xe9, 0xba, 0xc8, 0xd7, 0xaf, 0x79, 0x93,
0x4e, 0xd3, 0x3c, 0x34, 0x44, 0x83, 0xe3, 0xa0, 0x0e, 0x1f, 0x66, 0x33,
0x99, 0xc4, 0x36, 0x06, 0x03, 0x68, 0x63, 0x90, 0xc6, 0x18, 0x5f, 0x8a,
0x85, 0x05, 0x42, 0xd1, 0x28, 0x4e, 0x7f, 0x3f, 0x00, 0x63, 0x37, 0x6e,
0xd0, 0x3e, 0x3b, 0x4b, 0x63, 0xa5, 0x82, 0xf1, 0x3c, 0xbe, 0x3a, 0x79,
0x12, 0x75, 0xf4, 0x28, 0x85, 0x4c, 0x06, 0x3c, 0x0f, 0x7b, 0x7a, 0x9a,
0xcc, 0xbd, 0x7b, 0x00, 0x74, 0x1e, 0x39, 0xc2, 0xbb, 0xc6, 0x46, 0xc8,
0xe5, 0x10, 0x81, 0xb4, 0xb2, 0x9a, 0x5c, 0x4a, 0x29, 0x9a, 0x4e, 0x9d,
0x02, 0xe0, 0xd7, 0xfb, 0xf7, 0x89, 0xa7, 0xd3, 0x58, 0xf9, 0x3c, 0xc6,
0x75, 0xa9, 0x6f, 0x6f, 0xc7, 0x39, 0x7d, 0x9a, 0xb6, 0x33, 0x67, 0x7c,
0x00, 0xd7, 0x05, 0xcf, 0xc3, 0xa4, 0x52, 0xac, 0x8e, 0x8f, 0x03, 0x10,
0xef, 0xeb, 0x23, 0xb7, 0xb4, 0x84, 0x01, 0x0c, 0xf8, 0x8c, 0xa5, 0x10,
0x58, 0x4a, 0x11, 0xef, 0xee, 0x06, 0x60, 0x76, 0x74, 0x94, 0x6d, 0xd9,
0x2c, 0x3a, 0x9b, 0xc5, 0xb8, 0x2e, 0x52, 0xa9, 0x5a, 0xf0, 0x74, 0x28,
0x04, 0x9e, 0x07, 0xae, 0x8b, 0xf0, 0x3c, 0x54, 0x2a, 0x05, 0xc0, 0xf6,
0xce, 0x4e, 0x56, 0x17, 0x17, 0x6b, 0x8c, 0x2d, 0x13, 0xe8, 0x12, 0x8e,
0xc7, 0x89, 0xb6, 0xb5, 0x01, 0x90, 0x7f, 0xf9, 0x12, 0x51, 0x28, 0x60,
0x4a, 0x25, 0x4c, 0x28, 0x04, 0xc5, 0xe2, 0xa7, 0xb4, 0x28, 0x95, 0xc0,
0xf3, 0xfc, 0xcb, 0x8c, 0xa1, 0x9c, 0x4e, 0xfb, 0x8c, 0x5b, 0x5a, 0xc8,
0xd8, 0x36, 0x3b, 0xaa, 0xc0, 0xda, 0x18, 0x44, 0xc0, 0xb8, 0x6a, 0xf5,
0x4a, 0xa1, 0xa4, 0xf4, 0x17, 0x20, 0xb5, 0xfe, 0x94, 0xdf, 0xc6, 0x60,
0x69, 0x8d, 0x34, 0xc6, 0xaf, 0xbc, 0x2d, 0x95, 0x5a, 0x0c, 0xfc, 0x5a,
0xf0, 0x30, 0x06, 0x91, 0xcb, 0xe1, 0xcd, 0xcf, 0x03, 0x10, 0xd9, 0xbb,
0xd7, 0x07, 0x55, 0x0a, 0x2b, 0x28, 0xdb, 0xad, 0x85, 0xb3, 0xb5, 0x9c,
0xed, 0x3d, 0x7b, 0x00, 0xc8, 0xbe, 0x7b, 0xc7, 0xd7, 0xe5, 0x32, 0x46,
0xeb, 0x20, 0x78, 0x81, 0xc6, 0x4a, 0x29, 0x72, 0x33, 0x33, 0x00, 0xb4,
0x0c, 0x0e, 0x82, 0x94, 0x58, 0x01, 0xeb, 0xad, 0x8c, 0x8d, 0xd6, 0x48,
0x29, 0x51, 0x41, 0xef, 0xb0, 0x0e, 0x1d, 0x02, 0x60, 0x65, 0x66, 0x86,
0xed, 0xe1, 0x30, 0xd5, 0x82, 0x93, 0x3a, 0xd0, 0x58, 0x49, 0x89, 0x97,
0x4c, 0x02, 0xb0, 0xef, 0xec, 0x59, 0xd6, 0x7b, 0x7b, 0x6b, 0x72, 0x94,
0xa6, 0xa6, 0xf0, 0xe6, 0xe6, 0x58, 0x7b, 0xfb, 0x96, 0xfc, 0x93, 0x27,
0xa8, 0x80, 0xb1, 0x7d, 0xe0, 0x00, 0xe1, 0xc1, 0x41, 0x00, 0xe6, 0x92,
0x49, 0x9c, 0x00, 0x58, 0x57, 0x81, 0x09, 0x80, 0x0b, 0x8f, 0x1f, 0xb3,
0x38, 0x36, 0x06, 0xc0, 0x77, 0xd7, 0xaf, 0x93, 0xef, 0xeb, 0xf3, 0x19,
0xe7, 0xf3, 0x64, 0x2f, 0x5e, 0x64, 0xfe, 0xfc, 0x79, 0x0e, 0x84, 0x42,
0x3e, 0x68, 0x7f, 0x3f, 0xf6, 0x95, 0x2b, 0x00, 0xbc, 0x1e, 0x1b, 0xe3,
0xdb, 0xe9, 0x69, 0x2c, 0x29, 0x31, 0x5a, 0xa3, 0xab, 0x59, 0x21, 0xc0,
0x7f, 0xb6, 0x52, 0x6c, 0xdc, 0xba, 0xc5, 0xc6, 0xfe, 0xfd, 0x44, 0x9b,
0x9b, 0xe9, 0xbe, 0x79, 0x93, 0xb9, 0x07, 0x0f, 0x08, 0x4d, 0x4c, 0x60,
0xbd, 0x79, 0x43, 0x1b, 0x10, 0xea, 0xea, 0x42, 0x0c, 0x0c, 0x10, 0x39,
0x76, 0x0c, 0x00, 0x6f, 0x61, 0x81, 0xb9, 0xdb, 0xb7, 0xf9, 0x3e, 0x16,
0x43, 0x08, 0x81, 0x0e, 0xa4, 0x10, 0xc3, 0xb1, 0x98, 0x39, 0xda, 0xd9,
0x49, 0x24, 0x1c, 0xae, 0x3d, 0x9d, 0x86, 0x06, 0x42, 0x97, 0x2f, 0xd3,
0xfa, 0xc3, 0x0f, 0xfc, 0x9f, 0xfd, 0x3e, 0x3a, 0xca, 0xd2, 0x9d, 0x3b,
0xf4, 0x86, 0x42, 0xd8, 0x4a, 0x21, 0x84, 0x60, 0x79, 0x6d, 0x8d, 0x9f,
0x27, 0x27, 0xfd, 0x74, 0xab, 0x6a, 0x5c, 0x5b, 0xf9, 0x3c, 0x6a, 0x78,
0x98, 0x3f, 0xc6, 0xc7, 0x91, 0xc7, 0x8f, 0x93, 0xe8, 0xea, 0x22, 0xde,
0xda, 0xea, 0x47, 0x7f, 0x7e, 0x9e, 0x95, 0x99, 0x19, 0xfe, 0x4a, 0x26,
0xd9, 0xf1, 0xe2, 0x05, 0x87, 0x22, 0x91, 0x5a, 0xdb, 0xac, 0x32, 0xd6,
0xc6, 0x60, 0x55, 0xb4, 0x2e, 0xe5, 0x0b, 0x05, 0xbb, 0x31, 0x1a, 0xad,
0xa5, 0x58, 0x75, 0x52, 0xc4, 0x9f, 0x3e, 0x45, 0x4d, 0x4d, 0x51, 0x00,
0x96, 0xc3, 0x61, 0x36, 0xca, 0x65, 0x1a, 0xca, 0x65, 0x9a, 0x6c, 0x9b,
0x56, 0xcb, 0x42, 0x6c, 0x01, 0xad, 0x36, 0xfc, 0x0f, 0xeb, 0xeb, 0x54,
0xb4, 0x2e, 0x59, 0x6b, 0x85, 0xc2, 0xc8, 0x62, 0x26, 0x73, 0x41, 0x03,
0x0d, 0xf5, 0xf5, 0xff, 0x39, 0x1d, 0xaa, 0x7b, 0x34, 0xe8, 0xb5, 0xcb,
0xd5, 0x33, 0xe0, 0x37, 0x7a, 0xfc, 0x69, 0xb3, 0x92, 0xcd, 0xf2, 0x76,
0x79, 0x99, 0xb5, 0x42, 0x61, 0xc4, 0xd2, 0xc6, 0x5c, 0x4d, 0x2d, 0x2e,
0x12, 0x5f, 0x5d, 0x1d, 0x92, 0x42, 0x7c, 0xd1, 0x30, 0xd5, 0xc6, 0x94,
0xb2, 0xa5, 0xd2, 0x88, 0x36, 0xe6, 0xea, 0xdf, 0x44, 0xcb, 0xf0, 0x2c,
0x06, 0x86, 0x58, 0x55, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
0xae, 0x42, 0x60, 0x82;
our $image3;
our $image3_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
0x74, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0xd5, 0xc1, 0x09, 0xc0,
0x20, 0x0c, 0x05, 0xd0, 0x6f, 0xe9, 0x36, 0x81, 0x2c, 0x10, 0xb2, 0xff,
0xdd, 0x85, 0xd2, 0x53, 0x85, 0xb6, 0xa9, 0x91, 0x48, 0x0f, 0x05, 0x3f,
0x08, 0x1a, 0xf0, 0x29, 0x12, 0x10, 0xf8, 0x28, 0xc5, 0xa9, 0xd9, 0xc4,
0xde, 0x96, 0xcd, 0x2b, 0x9a, 0xd9, 0xeb, 0x00, 0x00, 0x66, 0x0e, 0x2f,
0xe0, 0xc2, 0x51, 0x98, 0x39, 0xc4, 0xf7, 0x0c, 0x4c, 0x44, 0x6d, 0x5e,
0x6b, 0x35, 0x38, 0xcf, 0x92, 0x82, 0x45, 0xe4, 0xb2, 0xf6, 0xf0, 0x14,
0xac, 0xaa, 0x8f, 0xda, 0x1d, 0x4f, 0xc1, 0xa5, 0x74, 0x1b, 0x22, 0x07,
0x9f, 0x9d, 0x11, 0x1d, 0x96, 0xea, 0x8a, 0x91, 0x2c, 0x78, 0xc1, 0x0b,
0xee, 0x64, 0xe6, 0x07, 0x19, 0xf5, 0x7e, 0x92, 0x03, 0xad, 0x45, 0x2a,
0x04, 0xcc, 0x4e, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
0x44, 0xae, 0x42, 0x60, 0x82;
our $image4;
our $image4_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x03,
0xf7, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xb5, 0x95, 0x5f, 0x68, 0xd5,
0x65, 0x18, 0xc7, 0x3f, 0xe7, 0x77, 0x7e, 0xd3, 0x33, 0xdd, 0x3f, 0x67,
0xfe, 0xcb, 0x74, 0xc7, 0x22, 0xed, 0x62, 0xf9, 0x07, 0x12, 0x23, 0x33,
0x2c, 0x56, 0x20, 0x06, 0x2d, 0x09, 0x82, 0xa8, 0x8b, 0xec, 0x22, 0x88,
0x8a, 0xea, 0xc2, 0x42, 0x32, 0x2d, 0x2b, 0x28, 0x08, 0xb1, 0x2e, 0x02,
0x2f, 0xb4, 0xa0, 0xee, 0xa2, 0x16, 0x15, 0x5d, 0xe4, 0x68, 0x66, 0x64,
0x1b, 0xca, 0xcc, 0xd4, 0xe2, 0xb4, 0x64, 0x73, 0x6e, 0xce, 0xf3, 0x6f,
0x67, 0x3b, 0xe7, 0xfc, 0xfe, 0xbc, 0x7f, 0x9e, 0xb7, 0x8b, 0x6d, 0xce,
0x95, 0x12, 0x5e, 0xf8, 0xc2, 0xc3, 0xfb, 0xc0, 0xfb, 0x3c, 0x9f, 0xf7,
0xe1, 0x79, 0xbf, 0x0f, 0x6f, 0xc2, 0x39, 0xc7, 0x8d, 0x58, 0xde, 0x0d,
0xa1, 0x02, 0x89, 0xeb, 0x4d, 0x78, 0xf5, 0xcd, 0xee, 0xb4, 0x18, 0x77,
0xa8, 0x66, 0x96, 0xb7, 0xb6, 0x5c, 0xd6, 0x2b, 0x3e, 0x7a, 0x7f, 0x63,
0xe9, 0x6a, 0x71, 0xd7, 0x55, 0xf1, 0x6b, 0x6f, 0x75, 0xbf, 0xd4, 0xdc,
0x98, 0xea, 0xdd, 0xfe, 0x54, 0xeb, 0xe6, 0xed, 0x4f, 0xb6, 0x36, 0x59,
0x91, 0x43, 0xd7, 0x0c, 0x76, 0xce, 0x5d, 0xd3, 0xa6, 0xd6, 0xae, 0x77,
0x7a, 0xd6, 0xee, 0xdc, 0xdb, 0xd3, 0xdb, 0xd9, 0x35, 0xe2, 0xaa, 0x55,
0xe7, 0xb2, 0x59, 0xed, 0x46, 0x47, 0xad, 0xfb, 0xf8, 0x60, 0xc6, 0x3d,
0xf3, 0xc2, 0x4f, 0xed, 0x57, 0xe3, 0x26, 0x5a, 0x9e, 0xfe, 0xc3, 0xb5,
0x6f, 0x5e, 0x88, 0x08, 0x28, 0x0b, 0xda, 0x08, 0xca, 0xc0, 0x17, 0xdf,
0x0f, 0x95, 0xc2, 0x6f, 0xd7, 0xcc, 0xdb, 0xf3, 0xde, 0xf1, 0x3d, 0xe9,
0x5b, 0x9a, 0x76, 0x3f, 0xf8, 0x40, 0x0b, 0x8d, 0xf5, 0x35, 0x18, 0xe3,
0xd0, 0xda, 0x62, 0x8c, 0x23, 0x95, 0x4a, 0xf2, 0xfa, 0xbb, 0xdd, 0xa5,
0xb1, 0xf1, 0x78, 0xc5, 0xe7, 0x07, 0xee, 0x9f, 0xd1, 0x92, 0xc4, 0xa6,
0x1d, 0xe7, 0xdc, 0xbe, 0xdd, 0x2b, 0x50, 0x06, 0x22, 0x0b, 0xca, 0x40,
0xac, 0x61, 0xa8, 0x2f, 0x64, 0xe0, 0x58, 0x86, 0x6d, 0x6d, 0xcb, 0xb8,
0x6b, 0x5d, 0x33, 0x5a, 0x83, 0x52, 0x60, 0xed, 0x34, 0xd8, 0x39, 0xc7,
0xdf, 0x83, 0x15, 0xf6, 0x7e, 0x78, 0xaa, 0xe3, 0x87, 0xd3, 0x89, 0x97,
0x39, 0xb5, 0xb9, 0x7f, 0x0a, 0xec, 0xff, 0x5b, 0x6e, 0x46, 0xc1, 0x70,
0xcf, 0x10, 0xf5, 0x26, 0xe2, 0x8d, 0x17, 0xd7, 0x30, 0xa7, 0x16, 0xac,
0xbd, 0x7a, 0x1b, 0x45, 0x1c, 0xad, 0x2b, 0x9b, 0xd8, 0xb4, 0xae, 0xb9,
0x5d, 0xa4, 0xf0, 0x69, 0xe7, 0x29, 0xa6, 0xc1, 0x56, 0xa6, 0xc1, 0xa5,
0xf3, 0x21, 0x43, 0x27, 0xfa, 0x79, 0xb8, 0x2d, 0x4d, 0x7a, 0x79, 0xed,
0x35, 0xdf, 0x05, 0x60, 0xb4, 0x62, 0xd8, 0xdf, 0x71, 0x09, 0x9c, 0x43,
0xeb, 0xb9, 0x64, 0x8a, 0xa3, 0xfb, 0x58, 0x73, 0x64, 0x2d, 0x22, 0xe0,
0x1c, 0xfe, 0x95, 0xd5, 0x8c, 0x8f, 0x8c, 0x73, 0xcf, 0xfa, 0x25, 0xff,
0x0b, 0x2d, 0x55, 0x85, 0xad, 0xbb, 0x32, 0xb4, 0xdd, 0x7b, 0x33, 0xb7,
0x2e, 0xab, 0x43, 0x04, 0xd2, 0xab, 0x16, 0xa7, 0xcb, 0x55, 0xfb, 0x8a,
0x36, 0x94, 0xf6, 0x7f, 0x70, 0xbc, 0xde, 0xb7, 0x32, 0x9d, 0xe0, 0x2d,
0x5d, 0xc8, 0xce, 0x83, 0xa7, 0xd9, 0xb0, 0x5e, 0x70, 0x16, 0xac, 0x58,
0xac, 0x15, 0xc4, 0x38, 0xc4, 0x3a, 0xcc, 0xa4, 0xff, 0xdd, 0xaf, 0x45,
0x1e, 0xdb, 0xd2, 0xc2, 0xac, 0x05, 0x4d, 0x1c, 0x19, 0x00, 0x11, 0x98,
0x9d, 0x82, 0xdf, 0x7a, 0xc7, 0xea, 0x07, 0x3b, 0xfb, 0xb2, 0x40, 0xd7,
0x8c, 0x56, 0x7c, 0x75, 0x38, 0x47, 0xfa, 0xf6, 0x05, 0xac, 0x5e, 0xea,
0x33, 0xef, 0xa6, 0x39, 0x04, 0xe2, 0x08, 0x95, 0x23, 0x54, 0x10, 0x44,
0x8e, 0x40, 0x0b, 0x51, 0x04, 0xcf, 0xae, 0x5c, 0x4c, 0x5c, 0xe3, 0xd3,
0x73, 0x6e, 0x02, 0x9a, 0xf0, 0xa0, 0x30, 0x10, 0x92, 0x3d, 0xd6, 0x6f,
0x91, 0x4a, 0x9a, 0x84, 0x7b, 0x7b, 0x06, 0xf8, 0xf0, 0xd1, 0x2c, 0x99,
0xcf, 0x5a, 0x29, 0x64, 0x35, 0x8d, 0xf3, 0x7d, 0xa4, 0x0e, 0x72, 0x65,
0xc8, 0x97, 0x61, 0xe0, 0x22, 0x54, 0x46, 0x21, 0x1f, 0x43, 0x3e, 0x0b,
0xc5, 0x92, 0x25, 0x9f, 0x8b, 0x09, 0x0a, 0x15, 0x2e, 0x9e, 0xc9, 0x52,
0x1a, 0xae, 0x96, 0x88, 0x12, 0x83, 0xd4, 0xdb, 0x55, 0x78, 0xae, 0xcb,
0x37, 0x66, 0x02, 0xfa, 0x63, 0x4f, 0xc8, 0xa6, 0x3b, 0x1b, 0xa8, 0x4d,
0x41, 0xcd, 0xc2, 0x1a, 0x7a, 0x33, 0xe3, 0x2c, 0x58, 0xde, 0x40, 0xe6,
0x02, 0xf4, 0x0d, 0xc0, 0x48, 0xce, 0x90, 0xcb, 0x5b, 0x2e, 0xe5, 0x0d,
0xb9, 0xbc, 0x21, 0x28, 0x85, 0x84, 0xa5, 0x2a, 0xa5, 0xe1, 0x51, 0x9c,
0x72, 0x10, 0x90, 0xc5, 0xb7, 0x3e, 0xd8, 0xb3, 0x64, 0x1e, 0xea, 0xf7,
0x65, 0x52, 0x6e, 0x47, 0xba, 0x8b, 0x6c, 0xdb, 0xd8, 0x4c, 0x55, 0xe0,
0x52, 0x0c, 0x59, 0xaf, 0x81, 0x3f, 0x4f, 0x5a, 0xc4, 0x25, 0x09, 0x22,
0x87, 0x52, 0x10, 0x29, 0x21, 0x56, 0x8e, 0x28, 0x16, 0xf2, 0xb9, 0x00,
0x1d, 0x68, 0x98, 0x3b, 0x17, 0x6c, 0x0c, 0xc4, 0x90, 0x54, 0x4d, 0x38,
0x39, 0x00, 0xe0, 0x89, 0x15, 0xc6, 0xab, 0xf0, 0xfb, 0xd9, 0x12, 0x8f,
0xb7, 0xd5, 0x91, 0x29, 0xc2, 0x85, 0x22, 0x44, 0x40, 0xb1, 0x2c, 0x8c,
0x55, 0x84, 0x58, 0x3b, 0x22, 0xe5, 0x50, 0x1a, 0x4a, 0x63, 0x9a, 0x91,
0x91, 0x00, 0xeb, 0xcf, 0xc6, 0x4b, 0xcd, 0x9e, 0x29, 0x97, 0xa4, 0x69,
0xc4, 0xd2, 0x31, 0xa9, 0x63, 0x38, 0x7c, 0xac, 0xcc, 0x7d, 0xab, 0x1b,
0x19, 0xa9, 0x40, 0x9d, 0x0f, 0x4b, 0x52, 0x50, 0x67, 0xa1, 0x61, 0x89,
0xcf, 0x58, 0x51, 0x61, 0xfc, 0x04, 0xcd, 0x62, 0x68, 0xd0, 0x11, 0xf5,
0x8b, 0x14, 0xb7, 0x35, 0x25, 0x91, 0x38, 0x46, 0x82, 0x18, 0x13, 0x6b,
0xc2, 0xc0, 0x90, 0x2b, 0xc8, 0xfc, 0x81, 0x41, 0x9d, 0xa5, 0x7f, 0xcb,
0x49, 0x00, 0xdf, 0x58, 0x47, 0xd7, 0x2f, 0x05, 0x76, 0x3c, 0xba, 0x88,
0x3b, 0xea, 0x27, 0x6f, 0x9e, 0x07, 0x5a, 0x43, 0x14, 0x39, 0xb4, 0xf6,
0x88, 0x63, 0x43, 0x1c, 0x5b, 0x94, 0xf2, 0x50, 0xca, 0x27, 0x8a, 0x0c,
0x5a, 0xfb, 0x44, 0x51, 0x2d, 0x4a, 0xd5, 0xa0, 0x54, 0x8a, 0x2f, 0x8f,
0x8e, 0xcd, 0xff, 0xe4, 0xbc, 0xfb, 0xe6, 0xb2, 0x74, 0xab, 0x81, 0xa1,
0x7f, 0xa0, 0xcc, 0x23, 0x1b, 0x66, 0x0e, 0x85, 0xe7, 0x81, 0xef, 0x7b,
0x24, 0x93, 0x09, 0x3c, 0xcf, 0x9b, 0xf4, 0xbd, 0xcb, 0xbe, 0xe7, 0x4d,
0x9c, 0x4d, 0xf9, 0x3f, 0x9f, 0x09, 0x41, 0xdc, 0xd7, 0x53, 0xf9, 0x7e,
0x61, 0xb8, 0xca, 0x73, 0x4f, 0xb4, 0xfc, 0x67, 0xba, 0x92, 0xc9, 0x09,
0x73, 0x38, 0x44, 0x0c, 0xb1, 0xd2, 0x84, 0x51, 0x4c, 0x18, 0x6a, 0x82,
0x40, 0x11, 0xc5, 0x31, 0x51, 0xa8, 0xd1, 0x5a, 0x88, 0xb5, 0xa1, 0xef,
0xaf, 0x00, 0x2e, 0x6c, 0xed, 0xb8, 0x0c, 0xc6, 0x4b, 0xd0, 0x79, 0xa2,
0xc8, 0xdd, 0xcf, 0x8f, 0xe1, 0xc4, 0x21, 0x02, 0x88, 0x43, 0x44, 0xb0,
0x56, 0xb0, 0x5a, 0x30, 0xc6, 0x60, 0x8d, 0x60, 0x8d, 0xc1, 0x18, 0x8b,
0xd1, 0x16, 0x31, 0x32, 0xb1, 0x8b, 0xa5, 0x1a, 0x38, 0x08, 0x5c, 0xc7,
0x95, 0x85, 0x25, 0x6e, 0xd4, 0x67, 0xfa, 0x0f, 0x0f, 0x45, 0x7a, 0xf9,
0x30, 0x7a, 0xb8, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
0xae, 0x42, 0x60, 0x82;
our $image5;
our $image5_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x02,
0xc2, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xd5, 0x94, 0x3d, 0x8f, 0x1c,
0x45, 0x10, 0x86, 0x9f, 0xd9, 0x9d, 0x35, 0x77, 0x3e, 0xf0, 0xc7, 0x05,
0xc8, 0x32, 0x92, 0x03, 0x02, 0x10, 0x01, 0x82, 0x7f, 0x80, 0x90, 0x90,
0x08, 0x10, 0x88, 0x3f, 0x00, 0x31, 0x11, 0x22, 0x75, 0x06, 0xd1, 0x45,
0x04, 0xfc, 0x03, 0x62, 0x48, 0x40, 0x20, 0x41, 0x82, 0x21, 0x73, 0x00,
0x42, 0x32, 0x10, 0xfa, 0x64, 0x19, 0x64, 0xc9, 0xbe, 0x15, 0x77, 0xbb,
0x33, 0xbb, 0xd3, 0xdd, 0x55, 0xd5, 0xd5, 0x04, 0x33, 0x3b, 0xc7, 0xc9,
0x6b, 0x3b, 0x76, 0x4b, 0xad, 0xaa, 0xee, 0x19, 0xbd, 0xfd, 0xf4, 0xdb,
0xd5, 0x0d, 0x4f, 0x5b, 0xab, 0x36, 0xc9, 0x0f, 0x3f, 0xfe, 0xfa, 0x51,
0x5d, 0x4f, 0x0f, 0x54, 0x33, 0xb3, 0x7a, 0x42, 0xd3, 0x76, 0xc4, 0xa4,
0x64, 0xcb, 0xcc, 0xea, 0x29, 0x66, 0x19, 0x11, 0xc5, 0x2c, 0xa3, 0x6a,
0xa8, 0x6e, 0xa2, 0x71, 0xe7, 0x9f, 0x39, 0xf3, 0xa3, 0xc5, 0x77, 0xcd,
0x62, 0xf5, 0xf1, 0xcf, 0x37, 0x3e, 0x5f, 0x00, 0xd4, 0x1b, 0xe1, 0xba,
0x9e, 0x1e, 0xbc, 0xf4, 0xca, 0xb5, 0x4b, 0x50, 0x71, 0xed, 0xea, 0x3e,
0x9f, 0x7e, 0xf1, 0x0d, 0xcb, 0x26, 0x70, 0xe1, 0xb9, 0x5d, 0x3e, 0xfb,
0xe4, 0xfd, 0xc7, 0xd2, 0x7d, 0x7f, 0xe3, 0x16, 0x7f, 0xde, 0xba, 0xfd,
0xc1, 0xb7, 0x5f, 0xfd, 0x02, 0xf0, 0xe1, 0x19, 0xe1, 0x94, 0x94, 0x2e,
0x0a, 0xd5, 0xb0, 0x89, 0x9b, 0xbf, 0x1f, 0x72, 0xf9, 0xc2, 0x79, 0xea,
0x7a, 0xf2, 0xc4, 0x6d, 0x2f, 0x9a, 0x0e, 0x07, 0xdc, 0xf3, 0xbb, 0x23,
0xe8, 0x26, 0x91, 0x61, 0x7b, 0x55, 0xd5, 0x0b, 0xef, 0x5f, 0xdc, 0xe3,
0xe5, 0x17, 0xaf, 0xf0, 0xc2, 0x95, 0xcb, 0x4f, 0x14, 0x16, 0x31, 0x96,
0xcb, 0x15, 0x29, 0xc9, 0x38, 0x77, 0x2a, 0x2c, 0x8a, 0xa8, 0x31, 0xa9,
0x7a, 0xc2, 0xb7, 0xdf, 0x78, 0x95, 0xab, 0xcf, 0x5f, 0x64, 0xff, 0xd2,
0xb3, 0x8f, 0x15, 0x75, 0x2f, 0x2c, 0x9b, 0x96, 0xe5, 0xa2, 0xc1, 0x2c,
0x3f, 0x2c, 0x9c, 0xc4, 0x10, 0xcd, 0x94, 0x62, 0x9c, 0x34, 0x1d, 0xef,
0xbd, 0xf5, 0x3a, 0xa5, 0x14, 0x4a, 0x81, 0xf9, 0x71, 0x3b, 0xe4, 0xfd,
0x78, 0x13, 0xcd, 0x8c, 0x93, 0x93, 0x96, 0xa3, 0x07, 0xc7, 0x74, 0x21,
0x62, 0x66, 0xdb, 0x88, 0x7b, 0x2b, 0xba, 0x98, 0xf8, 0xed, 0x8f, 0x3b,
0xa8, 0x65, 0xcc, 0x32, 0x96, 0x7d, 0xc8, 0xbd, 0xaf, 0x88, 0x9c, 0x11,
0x31, 0x62, 0x48, 0x34, 0xcb, 0x96, 0xf5, 0x3a, 0x70, 0x7c, 0xd2, 0x12,
0xa3, 0x3c, 0x8a, 0x58, 0x11, 0x55, 0x42, 0x1c, 0x4a, 0xca, 0x72, 0x5f,
0x52, 0x96, 0x07, 0xff, 0x8d, 0x98, 0x94, 0x18, 0x85, 0xb6, 0x5d, 0x11,
0xba, 0x48, 0x4a, 0x42, 0x4a, 0x8a, 0x88, 0x10, 0x63, 0x24, 0xe7, 0x2d,
0xc2, 0x3a, 0x58, 0xe1, 0xee, 0x9c, 0xdf, 0x3d, 0x87, 0x65, 0x1f, 0x6a,
0xd7, 0xa8, 0x8a, 0xe3, 0x06, 0x93, 0x92, 0x99, 0x96, 0xcc, 0xce, 0x6c,
0xca, 0x64, 0xf7, 0x1c, 0xb3, 0x49, 0xc5, 0x6c, 0x3a, 0xe1, 0x28, 0x04,
0x52, 0x12, 0x72, 0xf6, 0x47, 0x11, 0x1b, 0x3b, 0xcf, 0xcc, 0x78, 0xe7,
0xcd, 0xd7, 0x70, 0x77, 0x42, 0x10, 0x42, 0x48, 0xa4, 0xa4, 0xa8, 0xda,
0x60, 0x97, 0xf5, 0x07, 0x2d, 0x36, 0xf6, 0x2f, 0xbf, 0xfe, 0x89, 0x79,
0x48, 0x8f, 0xf7, 0x18, 0xc0, 0x2c, 0x13, 0x42, 0x22, 0x04, 0x41, 0xd5,
0xb6, 0x08, 0x9f, 0x5d, 0x20, 0x89, 0x20, 0xa2, 0xdb, 0xad, 0x48, 0x49,
0x11, 0xcd, 0x98, 0x1a, 0x77, 0xef, 0xfe, 0xcb, 0xfd, 0xfb, 0x0d, 0xaa,
0x36, 0x5c, 0x61, 0x1d, 0xae, 0xb0, 0x8e, 0xf6, 0x98, 0xf5, 0xe2, 0x3b,
0x3b, 0x35, 0x29, 0x0a, 0x49, 0xd2, 0x76, 0x61, 0x19, 0xc8, 0x4c, 0x95,
0xaa, 0x2a, 0xec, 0xed, 0xd5, 0x88, 0x80, 0x2a, 0xd4, 0x75, 0xa1, 0xae,
0x61, 0x3a, 0x2d, 0x98, 0xc1, 0x64, 0x52, 0x50, 0x2d, 0x54, 0x55, 0x01,
0x1c, 0x19, 0x88, 0xdd, 0xb7, 0x79, 0x9c, 0x94, 0xd5, 0xba, 0x23, 0x9b,
0xb1, 0x5a, 0x45, 0x16, 0x8b, 0x6e, 0xa4, 0xea, 0x09, 0x4f, 0x1f, 0x21,
0x11, 0x1d, 0x1f, 0xa1, 0xd9, 0xac, 0x1a, 0xac, 0x90, 0xed, 0xc4, 0x31,
0x24, 0xd6, 0xeb, 0x40, 0x71, 0x47, 0xd5, 0x70, 0xcf, 0xe4, 0xfc, 0x70,
0x37, 0xeb, 0xa3, 0xbb, 0x8d, 0x42, 0xfd, 0x42, 0xb2, 0x9d, 0x38, 0xc4,
0x44, 0x08, 0x09, 0xbc, 0x60, 0x66, 0x94, 0xe2, 0xb8, 0xf7, 0xbd, 0xcf,
0xf3, 0x30, 0xee, 0x63, 0xce, 0x9b, 0xbc, 0xa0, 0x22, 0xa8, 0x28, 0xee,
0x5b, 0x88, 0xc3, 0x3a, 0xb2, 0x5e, 0xb4, 0xe4, 0x6c, 0xac, 0x56, 0xcb,
0xf1, 0xe4, 0x4f, 0xab, 0xe0, 0xec, 0x21, 0xaa, 0xe6, 0xf1, 0x9f, 0x75,
0xdb, 0x90, 0xba, 0x35, 0xbe, 0xad, 0x8e, 0x8f, 0xe7, 0x8b, 0xeb, 0xf7,
0xfe, 0x7e, 0x70, 0x10, 0x53, 0xe2, 0xf6, 0x5f, 0x87, 0xe4, 0x5c, 0x46,
0xe2, 0x9c, 0x0b, 0xa5, 0xf8, 0xff, 0xe6, 0x4e, 0xbf, 0xb9, 0x17, 0xee,
0x1d, 0xce, 0xe9, 0x82, 0xe2, 0xce, 0x75, 0x9e, 0xda, 0xf6, 0x1f, 0x12,
0x1a, 0xe0, 0xff, 0x0b, 0x36, 0xcf, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x49,
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82;
our $image6;
our $image6_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x03,
0xfe, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xd5, 0x93, 0xcb, 0x6b, 0x5d,
0x55, 0x14, 0x87, 0xbf, 0x73, 0xee, 0x39, 0x37, 0x8f, 0x9b, 0xf7, 0xa3,
0xa6, 0xe9, 0x4b, 0x69, 0x4b, 0x2b, 0xb6, 0x5a, 0x11, 0x11, 0xa1, 0x3a,
0x10, 0x2b, 0x82, 0xed, 0xc0, 0xfe, 0x0d, 0x0a, 0x82, 0xe0, 0xd0, 0x06,
0x67, 0x0e, 0x04, 0x1d, 0x8a, 0xa8, 0xd3, 0x82, 0x38, 0xd1, 0x81, 0x20,
0x52, 0x2c, 0xad, 0x52, 0x07, 0xc5, 0x96, 0xda, 0x12, 0x1f, 0x55, 0xaa,
0xd6, 0x9b, 0x3e, 0xd2, 0xa4, 0x49, 0x9a, 0x9b, 0x7b, 0xef, 0x39, 0x67,
0x9f, 0xbd, 0xd7, 0x7e, 0x38, 0x48, 0x4c, 0x93, 0xb6, 0x0a, 0x1d, 0xba,
0x26, 0x6b, 0xb3, 0xf8, 0xf1, 0xb1, 0xd6, 0x6f, 0xed, 0x15, 0x71, 0x1f,
0xb1, 0xf0, 0x3e, 0xd5, 0x64, 0x3c, 0xfd, 0xc0, 0x0d, 0xbc, 0xf9, 0x6a,
0x73, 0xaa, 0x7d, 0xb5, 0x3d, 0x75, 0xe9, 0xa3, 0xb9, 0xb3, 0xc7, 0x8f,
0x1e, 0x38, 0xc9, 0xdc, 0x9d, 0xda, 0xe4, 0x7e, 0xc0, 0x71, 0x37, 0xbb,
0xba, 0x76, 0x86, 0xfd, 0xd5, 0x91, 0xeb, 0xd1, 0xe0, 0xde, 0x57, 0xb6,
0x35, 0xeb, 0xd3, 0x6f, 0x07, 0x67, 0xfb, 0x4e, 0xf0, 0xcd, 0x3b, 0x07,
0x4e, 0xa2, 0xd6, 0x81, 0xbf, 0x3e, 0x7e, 0xee, 0x48, 0x5c, 0x89, 0x27,
0xac, 0x78, 0xd2, 0x24, 0xa6, 0xd9, 0xca, 0xd1, 0xc6, 0xe2, 0xac, 0x23,
0x4d, 0x2a, 0x58, 0x6b, 0x31, 0xc6, 0x62, 0xad, 0xe3, 0xd7, 0x8e, 0x0f,
0x93, 0xa7, 0xfb, 0x8f, 0xd7, 0xb8, 0xf6, 0x29, 0x51, 0xfb, 0x04, 0x5d,
0x0b, 0x8f, 0x76, 0xde, 0xca, 0x8b, 0x87, 0x3f, 0x0b, 0x2f, 0x77, 0xc2,
0x17, 0xeb, 0xc1, 0x69, 0x35, 0x7d, 0x77, 0xc7, 0xce, 0xcd, 0xc4, 0x95,
0x98, 0xcd, 0x63, 0x83, 0x1c, 0x79, 0xef, 0x73, 0x8c, 0xb1, 0x3c, 0x30,
0xda, 0xc7, 0xc4, 0x6b, 0x2f, 0xad, 0x0a, 0x83, 0x64, 0x98, 0x5f, 0x5e,
0x27, 0xf6, 0x31, 0x94, 0x40, 0xd3, 0xb3, 0x78, 0x75, 0x96, 0x1f, 0xd2,
0x83, 0x87, 0xcf, 0x37, 0x16, 0xa6, 0x81, 0x37, 0xd6, 0x4d, 0xa7, 0xb5,
0x50, 0x94, 0x86, 0x52, 0x1b, 0x00, 0x4e, 0x9f, 0xff, 0x83, 0xd9, 0xf9,
0x26, 0xaa, 0x34, 0x6b, 0x64, 0x01, 0x5b, 0x3f, 0x4a, 0x75, 0x64, 0x06,
0x5a, 0xdd, 0x20, 0xfd, 0xf8, 0x76, 0x2f, 0xbf, 0x15, 0xdb, 0x31, 0x1b,
0xf7, 0xe0, 0xbd, 0x3b, 0x74, 0x97, 0xc7, 0x46, 0x2c, 0x46, 0x1c, 0x61,
0xa5, 0x30, 0x32, 0xd8, 0xc3, 0xee, 0xed, 0x1b, 0x79, 0x68, 0xeb, 0xe8,
0xaa, 0xc8, 0xe7, 0x37, 0x20, 0x1c, 0x23, 0x0a, 0x03, 0xa0, 0x3b, 0xa0,
0xec, 0xa2, 0xb9, 0x50, 0xe5, 0xf7, 0xae, 0xa7, 0x68, 0xb6, 0x0a, 0x8c,
0xc8, 0x5d, 0xfb, 0x48, 0x8c, 0xb1, 0x18, 0xb1, 0x44, 0xd1, 0x72, 0xe1,
0xe0, 0x73, 0xfb, 0xd8, 0x3a, 0x3e, 0xcc, 0x86, 0xe1, 0xde, 0x95, 0x66,
0x03, 0xbe, 0x71, 0x8a, 0xb8, 0xa3, 0x0e, 0xd9, 0x10, 0xf8, 0x0a, 0x2e,
0xeb, 0xc3, 0x6e, 0x7a, 0x9c, 0xf9, 0xeb, 0x63, 0x34, 0x9b, 0x0d, 0xac,
0x75, 0xf7, 0x02, 0x0b, 0x46, 0x2c, 0xce, 0x7b, 0x1a, 0xad, 0x82, 0xc3,
0x2f, 0x3e, 0x41, 0x08, 0x81, 0x10, 0x02, 0xf3, 0x8b, 0x6d, 0x70, 0x8a,
0xfe, 0xf6, 0x57, 0x54, 0x07, 0x7b, 0x60, 0xb1, 0x02, 0xba, 0x83, 0x76,
0x5e, 0xe5, 0x72, 0x6d, 0x2f, 0x4b, 0xb9, 0x43, 0x15, 0xe5, 0xbf, 0x81,
0x2d, 0x22, 0x8e, 0x56, 0x56, 0x72, 0xee, 0xa7, 0x3a, 0xd6, 0x3a, 0xac,
0x75, 0x88, 0xf5, 0x58, 0xe7, 0x18, 0xf5, 0x17, 0x78, 0x76, 0xcf, 0x34,
0xa8, 0x41, 0x20, 0x80, 0xd4, 0xb8, 0x38, 0x2d, 0x7c, 0xa9, 0x2d, 0x8b,
0x79, 0x9b, 0x52, 0x6b, 0x9c, 0xfb, 0x8f, 0x8e, 0x55, 0x69, 0x10, 0xeb,
0x10, 0x71, 0xcb, 0xd9, 0x3a, 0x82, 0xe4, 0x3c, 0x36, 0x76, 0x86, 0xa4,
0x6f, 0x1c, 0x16, 0x04, 0x5c, 0x42, 0xd1, 0x70, 0x9c, 0xba, 0xb9, 0x91,
0x1b, 0x91, 0xc3, 0x18, 0x83, 0x52, 0x6b, 0xc1, 0xfb, 0x60, 0xf9, 0x36,
0x5c, 0x62, 0xc4, 0x61, 0xc4, 0xe1, 0x7d, 0xa0, 0xd6, 0x55, 0xc5, 0xa6,
0xcb, 0x9d, 0x6a, 0x6d, 0xe9, 0xe3, 0x47, 0x36, 0x6d, 0x0b, 0x60, 0x7a,
0x00, 0x03, 0xb6, 0x87, 0xbf, 0xae, 0xcd, 0xd0, 0xec, 0xdb, 0x4d, 0x8f,
0x4b, 0xb9, 0x99, 0x17, 0x68, 0x6d, 0x70, 0xce, 0x03, 0xfb, 0x52, 0xa0,
0x0b, 0xa8, 0x02, 0x26, 0xd1, 0x5a, 0x30, 0x22, 0xf4, 0xf6, 0x74, 0xf2,
0xc2, 0xfe, 0x47, 0x70, 0xce, 0x53, 0x96, 0x06, 0x95, 0x35, 0xe9, 0x6c,
0x9e, 0xa6, 0x36, 0x34, 0x0a, 0x6d, 0x03, 0xa1, 0x46, 0xde, 0x70, 0xc8,
0x96, 0xe7, 0x39, 0xf4, 0xe4, 0x33, 0x18, 0x71, 0x7c, 0xfc, 0xc9, 0x31,
0x8a, 0x42, 0x21, 0x62, 0x2a, 0xc0, 0xc8, 0x1a, 0x27, 0xd2, 0x58, 0x56,
0xbe, 0xdb, 0x3f, 0xde, 0xe6, 0xb9, 0x22, 0xcf, 0x4b, 0xa4, 0x5c, 0xa2,
0x23, 0xaa, 0x13, 0x45, 0x03, 0x40, 0x37, 0xf8, 0x21, 0x6e, 0x35, 0x22,
0xda, 0xe9, 0x16, 0x54, 0x69, 0x68, 0xb5, 0x32, 0xf2, 0xbc, 0x40, 0x15,
0xea, 0xde, 0x1e, 0x6b, 0x2d, 0x88, 0x38, 0x8a, 0x42, 0x53, 0xaf, 0x2f,
0x30, 0x37, 0xd7, 0x46, 0xc4, 0x52, 0xb1, 0x0d, 0x86, 0xc7, 0xc7, 0x40,
0x86, 0x21, 0xaa, 0xe2, 0x6c, 0xcc, 0xcf, 0xd7, 0x14, 0x53, 0x3d, 0x31,
0xaa, 0x9c, 0xa2, 0xb3, 0x33, 0x41, 0xa9, 0x12, 0x63, 0x0c, 0xde, 0xf9,
0x3b, 0xb9, 0x3e, 0x31, 0x62, 0x29, 0xb5, 0xc1, 0x1a, 0x43, 0x1c, 0x07,
0xba, 0xbb, 0x13, 0x44, 0x02, 0x49, 0xd6, 0xc2, 0xfb, 0xed, 0x50, 0xdd,
0x85, 0x93, 0x19, 0xea, 0x93, 0xdf, 0x32, 0xdb, 0xb1, 0x17, 0x22, 0x4f,
0x9a, 0xc6, 0x84, 0xe0, 0x11, 0x23, 0x88, 0x11, 0xbc, 0x5f, 0x05, 0x3b,
0x96, 0x0f, 0x5e, 0x27, 0x5a, 0x0b, 0xed, 0xac, 0xa0, 0x5a, 0x89, 0xc9,
0xb2, 0x92, 0x66, 0xb3, 0x40, 0xc4, 0xd2, 0xb1, 0x34, 0x4f, 0x36, 0x34,
0x40, 0x54, 0x44, 0x5c, 0x3e, 0x53, 0xe7, 0xec, 0xcc, 0x83, 0x2c, 0x25,
0xbd, 0xd8, 0x4c, 0x61, 0xad, 0x23, 0x4d, 0x63, 0x8c, 0x11, 0x8c, 0x15,
0xbc, 0xf7, 0x01, 0x68, 0xad, 0x40, 0x3d, 0x4c, 0x86, 0x44, 0x29, 0x4d,
0x91, 0x2b, 0x7c, 0x9a, 0x20, 0x62, 0x71, 0xce, 0xe1, 0xbd, 0x23, 0xcb,
0x0c, 0xdf, 0x7f, 0x77, 0x9e, 0xee, 0xca, 0x24, 0x7f, 0xb6, 0x06, 0x50,
0xdd, 0x9b, 0xf0, 0x62, 0xf1, 0xde, 0xe1, 0x9c, 0x23, 0x8a, 0x02, 0xce,
0x59, 0xbc, 0xb3, 0x04, 0x82, 0x87, 0xc9, 0x7c, 0xad, 0x17, 0xb1, 0x52,
0x1a, 0xa5, 0x0c, 0x65, 0x69, 0xb0, 0xd6, 0x12, 0x82, 0xc7, 0x7b, 0x8f,
0x37, 0x96, 0x72, 0xfa, 0x0a, 0x57, 0xcc, 0x18, 0xa6, 0x77, 0x33, 0x21,
0x84, 0xd5, 0x91, 0x93, 0xa4, 0x42, 0xb5, 0x9a, 0xe2, 0xbc, 0x47, 0xac,
0x5b, 0x6b, 0xc5, 0xed, 0xe5, 0xa9, 0xa2, 0x24, 0x5b, 0x6a, 0x61, 0x92,
0x98, 0x3c, 0x6f, 0x21, 0x62, 0x11, 0xb1, 0x98, 0xda, 0x06, 0xf4, 0x8e,
0x03, 0x84, 0x4a, 0x8d, 0x54, 0x2c, 0xb0, 0x3c, 0x49, 0x08, 0x60, 0xad,
0x43, 0x29, 0x8d, 0x6a, 0xb7, 0xd0, 0x45, 0x7e, 0xaf, 0xe5, 0x91, 0xcc,
0xcf, 0x2e, 0x4e, 0x4c, 0x5d, 0x9e, 0x9e, 0x10, 0x11, 0x2e, 0x5e, 0xb8,
0x84, 0xf7, 0xcb, 0x9d, 0x39, 0xe7, 0x57, 0xdf, 0xb7, 0xf3, 0xfa, 0xda,
0xec, 0x95, 0x06, 0x5a, 0x5b, 0xbc, 0x8f, 0xde, 0xba, 0x8b, 0xfc, 0xbf,
0x8b, 0xbf, 0x01, 0xe8, 0x70, 0xcb, 0xc9, 0xb3, 0x58, 0x58, 0xb9, 0x00,
0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82;
our $image7;
our $image7_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x03,
0x82, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xb5, 0x95, 0xcf, 0x6b, 0x5c,
0x55, 0x14, 0xc7, 0x3f, 0xef, 0x47, 0x66, 0xd2, 0x26, 0x4d, 0xa6, 0x31,
0x05, 0x0b, 0x46, 0xa2, 0x55, 0x8a, 0x22, 0x94, 0x04, 0xb1, 0x56, 0xba,
0x70, 0xe1, 0x42, 0xdd, 0x98, 0x2c, 0x44, 0x11, 0x17, 0x4a, 0x0b, 0x5d,
0x36, 0x0b, 0x85, 0x66, 0x51, 0x5c, 0x28, 0xd1, 0xaa, 0xc5, 0xa6, 0x2e,
0x14, 0x2b, 0xe4, 0x4f, 0x50, 0x2c, 0x2e, 0x24, 0x96, 0x16, 0xab, 0x06,
0x29, 0x48, 0xb4, 0x85, 0x9a, 0xa8, 0x4d, 0x69, 0x68, 0xda, 0x24, 0xf3,
0x26, 0x6f, 0x66, 0x32, 0xef, 0xcd, 0x7b, 0xe7, 0xbe, 0x7b, 0x5c, 0x4c,
0x7e, 0x27, 0x82, 0x05, 0x73, 0xe1, 0x72, 0xe0, 0x72, 0xce, 0xe7, 0x9e,
0xfb, 0xbd, 0xf7, 0x9e, 0xe3, 0xa8, 0x2a, 0xdb, 0x31, 0xdc, 0x6d, 0xa1,
0x02, 0xce, 0xbd, 0x38, 0xbf, 0xfb, 0xe1, 0x68, 0x21, 0xb3, 0x3a, 0x92,
0xcb, 0x79, 0x7d, 0x8b, 0x35, 0xe9, 0x19, 0x3a, 0xf9, 0xfc, 0xf8, 0x46,
0x9f, 0x65, 0x05, 0xfe, 0x73, 0xc6, 0xef, 0x9d, 0x1e, 0xed, 0x6b, 0xde,
0xd1, 0x34, 0xf5, 0x4a, 0x7f, 0x6f, 0xdf, 0x91, 0xd7, 0x0f, 0x21, 0xc6,
0x8e, 0xdc, 0x4b, 0x52, 0x9b, 0xc6, 0xa9, 0xe1, 0x0b, 0xdd, 0x43, 0x9f,
0x7c, 0x7f, 0xf1, 0xdb, 0xef, 0xfe, 0xd0, 0xea, 0xa2, 0x68, 0xa9, 0x94,
0x68, 0x18, 0xa6, 0x7a, 0xe1, 0x87, 0x29, 0x1d, 0x18, 0x3c, 0x3f, 0xb0,
0x55, 0xc6, 0xaa, 0x8a, 0xa3, 0xaa, 0x3c, 0x33, 0xf8, 0xdb, 0xa6, 0x1b,
0xfc, 0xf9, 0xfd, 0x03, 0xce, 0xc7, 0x9f, 0x5e, 0x1a, 0x68, 0x6b, 0x6f,
0x7e, 0xe7, 0xc5, 0xe7, 0x9e, 0x28, 0x74, 0x76, 0xb4, 0x20, 0x92, 0x61,
0x8c, 0xc5, 0x18, 0x8b, 0xdf, 0xe4, 0x72, 0xf6, 0x8b, 0x1f, 0xc3, 0xbb,
0x73, 0x8b, 0x3d, 0x9f, 0x9f, 0x7e, 0xe9, 0xe6, 0x5a, 0x30, 0x80, 0x73,
0xe8, 0xc4, 0xb8, 0xbe, 0xfd, 0xda, 0x7e, 0x52, 0x0b, 0x92, 0x41, 0x22,
0x50, 0x29, 0x55, 0x98, 0xbb, 0x3e, 0xc9, 0x0b, 0x4f, 0x3f, 0xc0, 0xc1,
0x27, 0xbb, 0x71, 0x80, 0x2c, 0x53, 0x8c, 0x59, 0x05, 0x1b, 0x63, 0x89,
0x12, 0xe1, 0xd4, 0xf0, 0xc5, 0xaf, 0xcf, 0x9d, 0xe9, 0xef, 0xdf, 0x08,
0xf6, 0x0b, 0xcd, 0x3e, 0x8f, 0x3c, 0xda, 0x8c, 0xd8, 0x06, 0xf4, 0xd6,
0xd5, 0xdb, 0xec, 0x88, 0x66, 0x79, 0xf3, 0xc8, 0x53, 0x14, 0xda, 0x73,
0xa8, 0x82, 0x48, 0x23, 0xe8, 0xc4, 0xc8, 0x9f, 0xfc, 0x7e, 0xa3, 0x42,
0x96, 0x29, 0x6a, 0x15, 0xdf, 0x77, 0x98, 0xfc, 0xcb, 0xeb, 0xe3, 0xf0,
0x37, 0x8a, 0xd8, 0x90, 0x5f, 0xfa, 0x76, 0x2f, 0x6f, 0xe0, 0xdb, 0x25,
0x11, 0xa2, 0x05, 0xc3, 0xc4, 0x4f, 0xd7, 0xe8, 0xd9, 0xbf, 0x87, 0xde,
0xc3, 0xbd, 0x9b, 0xb4, 0x3e, 0x76, 0xf6, 0x1a, 0x8b, 0x99, 0xcf, 0x07,
0x6f, 0x1d, 0xa4, 0x1a, 0x43, 0x2c, 0x50, 0x17, 0x70, 0x1c, 0xf8, 0x75,
0x6c, 0x86, 0x8f, 0x3e, 0x1b, 0x2b, 0xac, 0xf5, 0x77, 0xf6, 0xbe, 0x31,
0xa6, 0xfb, 0xba, 0xda, 0xa8, 0x04, 0x65, 0x76, 0xe6, 0x7d, 0xda, 0x77,
0xe5, 0x51, 0x0b, 0x6a, 0x2d, 0x99, 0x55, 0x34, 0x53, 0x4a, 0xd5, 0x84,
0x7d, 0x0f, 0x16, 0x38, 0xf6, 0xea, 0x63, 0x5c, 0xfe, 0x1b, 0xc2, 0x1a,
0x94, 0x23, 0xa8, 0xd5, 0x21, 0xb8, 0x59, 0x64, 0xf2, 0xf2, 0x04, 0x77,
0x8a, 0x77, 0xe0, 0xea, 0xcb, 0xce, 0x8a, 0x14, 0x07, 0x1e, 0x6e, 0xe3,
0xfc, 0xc9, 0xc7, 0x11, 0xa0, 0x58, 0x4a, 0xd8, 0xd3, 0x91, 0x27, 0x02,
0x6a, 0x06, 0x6a, 0x49, 0x23, 0xb8, 0x56, 0x87, 0x30, 0x82, 0x2b, 0xd3,
0x8d, 0x2c, 0x13, 0x03, 0x95, 0xb2, 0x30, 0x3d, 0x7e, 0x8b, 0x60, 0x6a,
0x8e, 0xe6, 0xbc, 0x07, 0x0a, 0x47, 0x8f, 0x7f, 0xf5, 0x2c, 0x70, 0x09,
0xc0, 0x57, 0xab, 0x08, 0x50, 0x03, 0x82, 0xcc, 0xa1, 0x58, 0x4c, 0x69,
0x69, 0xcf, 0x31, 0x5f, 0x81, 0xbb, 0x25, 0x98, 0x99, 0x87, 0xb0, 0xaa,
0x04, 0x65, 0x43, 0x50, 0xce, 0x28, 0x57, 0x0d, 0x33, 0x53, 0x21, 0xc1,
0xd4, 0x1c, 0x2a, 0xc9, 0xea, 0xd9, 0xad, 0x05, 0x38, 0xbe, 0x06, 0x6c,
0x51, 0xa0, 0x0e, 0x78, 0xbb, 0x73, 0x4c, 0x5c, 0x5f, 0xa4, 0xa9, 0x9c,
0x63, 0x76, 0x01, 0x4a, 0xa1, 0x12, 0x84, 0x42, 0xb1, 0x64, 0x98, 0x2f,
0x09, 0xf3, 0x81, 0x50, 0x0d, 0x63, 0x92, 0xb0, 0x06, 0x6a, 0x01, 0xc8,
0x8c, 0x12, 0x54, 0x63, 0x50, 0xe5, 0xcb, 0xe1, 0xfe, 0xfe, 0x73, 0x67,
0x96, 0x7e, 0x9e, 0xaa, 0x92, 0x02, 0xb1, 0x85, 0x99, 0x05, 0x88, 0xfc,
0x56, 0xa6, 0x6e, 0x27, 0xa4, 0x02, 0x62, 0x14, 0x91, 0xf5, 0xd3, 0x88,
0xc5, 0x5a, 0x0b, 0xaa, 0xd4, 0x22, 0x61, 0xae, 0x5c, 0xc7, 0xe4, 0x5b,
0x60, 0x43, 0x31, 0xf3, 0x33, 0x0b, 0x31, 0x30, 0x1d, 0x36, 0xb4, 0xcc,
0x1c, 0xa8, 0x5b, 0x17, 0x29, 0xa7, 0xa4, 0xe2, 0x92, 0x98, 0x86, 0xa6,
0x89, 0x40, 0x2a, 0x4a, 0x96, 0x29, 0x99, 0x08, 0x41, 0xb1, 0x8a, 0xf5,
0x72, 0x78, 0xad, 0x6d, 0x0d, 0x66, 0xb6, 0x01, 0xec, 0xa0, 0x98, 0x14,
0x3a, 0x73, 0xb0, 0x4b, 0xa1, 0xc3, 0x81, 0xfb, 0xee, 0x6f, 0x22, 0x2c,
0xc6, 0x58, 0x94, 0x4e, 0x4f, 0x08, 0x7d, 0x21, 0xcc, 0x0b, 0x95, 0x96,
0x94, 0xa8, 0x52, 0x67, 0x31, 0x88, 0x61, 0x6f, 0x33, 0x56, 0x21, 0xcb,
0x12, 0xac, 0xb5, 0x8c, 0xce, 0xae, 0x7f, 0x9e, 0xbe, 0xab, 0x4a, 0x57,
0x0e, 0xba, 0x72, 0x40, 0xeb, 0xea, 0x3d, 0xa4, 0xdd, 0x4d, 0x24, 0x89,
0x41, 0x04, 0x92, 0x04, 0x44, 0x1c, 0xd2, 0xd4, 0x25, 0x49, 0x76, 0x22,
0xd2, 0x44, 0x92, 0x08, 0x69, 0x2a, 0xa4, 0xa9, 0x41, 0xc4, 0x30, 0x7a,
0x65, 0x7d, 0xa1, 0x74, 0xed, 0x16, 0x85, 0xde, 0x75, 0xc1, 0xf3, 0x3c,
0x7c, 0xdf, 0xc5, 0xf3, 0xdc, 0x15, 0xeb, 0xba, 0x8d, 0xb5, 0x65, 0xeb,
0x79, 0xde, 0xd2, 0xba, 0x0b, 0x76, 0x3d, 0xc7, 0xe5, 0x5f, 0x1a, 0x88,
0xe7, 0x39, 0x2b, 0x41, 0x9e, 0xe7, 0xe1, 0xba, 0xee, 0x12, 0xd4, 0xc5,
0xf3, 0x9c, 0x25, 0xbb, 0x3a, 0x37, 0x82, 0x7d, 0xb5, 0x5b, 0x93, 0x5d,
0x17, 0x5c, 0xd7, 0x45, 0x35, 0x23, 0x95, 0x3a, 0x71, 0xbd, 0x4e, 0x14,
0xc5, 0xc4, 0xf5, 0x98, 0x38, 0x4a, 0x88, 0xe2, 0x98, 0x7a, 0x9c, 0x20,
0x59, 0x86, 0x11, 0xb3, 0x09, 0xec, 0xf0, 0xd0, 0xd0, 0xff, 0xd6, 0xf4,
0xf4, 0xc6, 0xe0, 0x8a, 0xd0, 0xce, 0x76, 0x35, 0xd3, 0x7f, 0x00, 0xf4,
0xb8, 0x19, 0xf9, 0xe3, 0xb0, 0xa8, 0x92, 0x00, 0x00, 0x00, 0x00, 0x49,
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82;
our $image8;
our $image8_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
0x73, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x92, 0xc1, 0x0e, 0x80,
0x20, 0x08, 0x40, 0xb1, 0xef, 0x66, 0x1d, 0x1c, 0xff, 0x4d, 0x87, 0x6a,
0xa8, 0x88, 0xa1, 0x76, 0x69, 0xf9, 0x36, 0x0f, 0x28, 0x3e, 0xd8, 0x00,
0x60, 0xf1, 0x59, 0x42, 0x5f, 0x3a, 0x71, 0xf5, 0x36, 0x02, 0xe0, 0x8e,
0x99, 0x2b, 0x09, 0x88, 0x01, 0xd0, 0x28, 0x54, 0x17, 0x6a, 0xe4, 0x7f,
0x21, 0xce, 0x1f, 0xb5, 0xb0, 0x5d, 0x38, 0xed, 0xdc, 0x90, 0x60, 0xd0,
0xf1, 0x13, 0x79, 0x63, 0x5b, 0x3b, 0xc9, 0x2b, 0xd5, 0x18, 0xe2, 0x39,
0xa9, 0x43, 0xec, 0x1d, 0x5a, 0xb7, 0x78, 0x5c, 0xee, 0x10, 0x7b, 0xe4,
0xb2, 0x15, 0xaf, 0x40, 0x91, 0xf8, 0x94, 0xde, 0x47, 0x18, 0x1e, 0xce,
0xa5, 0x9e, 0xde, 0x9e, 0xc5, 0x9f, 0x38, 0x00, 0x62, 0xac, 0x28, 0xb1,
0xe3, 0xd7, 0x01, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
0xae, 0x42, 0x60, 0x82;
our $image9;
our $image9_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
0x74, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x92, 0xc1, 0x0a, 0xc0,
0x20, 0x08, 0x40, 0x6d, 0xdf, 0x2d, 0x3b, 0x84, 0xff, 0xed, 0x0e, 0xa3,
0x58, 0x6a, 0x26, 0xd1, 0x65, 0xe0, 0x83, 0x0e, 0xa5, 0x3e, 0x85, 0x04,
0x48, 0x7e, 0x4b, 0x91, 0x0f, 0x54, 0x89, 0xf1, 0x9e, 0xa5, 0xa3, 0xca,
0x0f, 0x8a, 0x89, 0x63, 0x65, 0xb3, 0x06, 0xc4, 0x2d, 0xd6, 0x13, 0xc6,
0x49, 0xbd, 0xc2, 0x59, 0x83, 0x16, 0x13, 0x62, 0x19, 0xf0, 0xf9, 0x36,
0xc0, 0xa2, 0xef, 0x00, 0xd7, 0x5a, 0x62, 0x61, 0x4d, 0x3a, 0xb2, 0x29,
0x96, 0xf2, 0xa3, 0x62, 0xff, 0xa3, 0x37, 0xc5, 0xeb, 0xed, 0xe9, 0x62,
0xaa, 0xd1, 0xa2, 0xe8, 0x4a, 0xaa, 0xa2, 0xf7, 0x50, 0xdd, 0x12, 0x74,
0x8c, 0x0f, 0xd0, 0xab, 0x93, 0x24, 0x67, 0x78, 0x00, 0x59, 0x6e, 0x28,
0xb1, 0x74, 0x3f, 0x46, 0x86, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
0x44, 0xae, 0x42, 0x60, 0x82;
our $image10;
our $image10_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
0x82, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xcd, 0xd3, 0x41, 0x12, 0x80,
0x20, 0x08, 0x05, 0x50, 0xe8, 0xe0, 0x2e, 0xbc, 0x38, 0xad, 0x32, 0x73,
0x50, 0x3e, 0x48, 0x53, 0x7f, 0xe3, 0xe4, 0x8c, 0x4f, 0x24, 0x25, 0xfa,
0x28, 0xe2, 0x9c, 0x6f, 0x39, 0x92, 0x0b, 0xf9, 0x27, 0x6c, 0xb6, 0x01,
0x85, 0x35, 0x88, 0x77, 0x61, 0x13, 0x88, 0xc2, 0x57, 0x64, 0x18, 0xcd,
0xa0, 0x15, 0xf5, 0x20, 0xb4, 0xe6, 0xb5, 0x5b, 0xe1, 0x09, 0xdc, 0x06,
0x22, 0xb8, 0xe2, 0x2a, 0xcf, 0x31, 0x05, 0x6e, 0x18, 0xdf, 0xdf, 0xf8,
0x06, 0x06, 0xaa, 0x55, 0x1c, 0xc6, 0x35, 0x64, 0xc4, 0xdc, 0xf8, 0x0c,
0xd0, 0x20, 0x1d, 0x57, 0x7a, 0x5c, 0x85, 0xa8, 0x84, 0x5f, 0xdc, 0x02,
0x5e, 0xa5, 0x30, 0x7a, 0xfc, 0xcd, 0x07, 0xe2, 0x3a, 0x1d, 0xf2, 0x83,
0xec, 0x2b, 0x37, 0xd9, 0xad, 0x5f, 0xb4, 0xdf, 0xef, 0xd4, 0x9c, 0xfb,
0xf7, 0x2f, 0xac, 0x98, 0xc8, 0xcc, 0x89, 0x00, 0x00, 0x00, 0x00, 0x49,
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82;
our $image11;
our $image11_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
0xbf, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xd5, 0x93, 0x41, 0x0a, 0x83,
0x30, 0x10, 0x45, 0xdf, 0x48, 0x8e, 0xe5, 0x1d, 0xbc, 0x8c, 0x3b, 0xa9,
0x8b, 0xf4, 0x6a, 0x9e, 0xab, 0xd3, 0x85, 0x35, 0x0d, 0x26, 0x63, 0x62,
0x44, 0x4a, 0x3f, 0x0c, 0x42, 0x66, 0xfc, 0xf3, 0xf8, 0x24, 0xf0, 0x6f,
0x12, 0x40, 0x2b, 0x66, 0xda, 0x8c, 0x55, 0xf3, 0xde, 0x22, 0x12, 0xcf,
0x9d, 0x92, 0xcb, 0x98, 0xc0, 0xba, 0x2d, 0x7c, 0x45, 0x44, 0xcf, 0x9a,
0x07, 0x63, 0x8b, 0xba, 0xd5, 0x3c, 0x44, 0x91, 0x23, 0x5e, 0xcf, 0x7c,
0xc1, 0x62, 0x36, 0x97, 0xa9, 0x25, 0x40, 0xc1, 0x1f, 0xf4, 0xfd, 0xa7,
0x52, 0x75, 0x01, 0x5d, 0x24, 0xa9, 0x38, 0x9e, 0x7d, 0x6f, 0x53, 0xdf,
0x4f, 0xe4, 0xcc, 0xab, 0x32, 0x3e, 0xea, 0x0f, 0x03, 0xc0, 0xc4, 0xb2,
0xa0, 0x71, 0x2c, 0xe6, 0xad, 0xd8, 0x9b, 0x59, 0xb7, 0x66, 0x1c, 0x3b,
0xe0, 0x95, 0x98, 0x5f, 0x26, 0x16, 0x79, 0xee, 0x4e, 0xbc, 0xc2, 0x2c,
0x97, 0x88, 0x55, 0x1f, 0xe6, 0xa2, 0xcb, 0xc4, 0x96, 0x9a, 0x89, 0x4b,
0xcb, 0x6f, 0x23, 0xee, 0x36, 0x1a, 0xab, 0x62, 0xe2, 0x52, 0xc5, 0x72,
0x94, 0xdf, 0xbf, 0xb6, 0x10, 0xbb, 0xf2, 0xc8, 0x97, 0xb8, 0xa4, 0x6c,
0xc6, 0x67, 0x7e, 0xaa, 0x51, 0x95, 0x71, 0xfa, 0x08, 0x7e, 0xa8, 0x37,
0x62, 0xda, 0x9a, 0xba, 0xcb, 0x20, 0x23, 0x5f, 0x00, 0x00, 0x00, 0x00,
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82;
our $image12;
our $image12_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
0xd5, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xc5, 0x95, 0x5d, 0x0a, 0x84,
0x30, 0x0c, 0x84, 0x27, 0xe2, 0xa9, 0x0a, 0x9e, 0x6c, 0x8b, 0x0f, 0x4b,
0x3d, 0xd9, 0x82, 0xd7, 0xca, 0x3e, 0x58, 0xd7, 0xfe, 0x4c, 0xd0, 0xba,
0x5d, 0x76, 0x40, 0x02, 0x4d, 0xf2, 0x65, 0xda, 0x0a, 0x05, 0x7e, 0x24,
0x39, 0xc9, 0xeb, 0x8d, 0x9e, 0xaa, 0x88, 0x41, 0xa0, 0xc9, 0xaa, 0xd8,
0xc8, 0x2a, 0xb3, 0x2f, 0x9c, 0x42, 0x5b, 0xe1, 0xe3, 0x0e, 0x0d, 0xcf,
0x00, 0xc0, 0x03, 0x08, 0xf0, 0xb3, 0xa7, 0xa0, 0x74, 0x10, 0xa9, 0xd7,
0x14, 0x2e, 0x00, 0xb4, 0x2c, 0x5a, 0x5f, 0xab, 0x69, 0x6b, 0x97, 0x9b,
0x1c, 0x83, 0x7f, 0xc0, 0xc3, 0x16, 0xb6, 0xe4, 0x16, 0x5b, 0x64, 0xf7,
0x8d, 0x71, 0x63, 0x59, 0x91, 0x9b, 0xdc, 0x45, 0x70, 0xde, 0x47, 0xc0,
0x47, 0x32, 0xdd, 0x5e, 0x5b, 0xcc, 0x35, 0xf0, 0xc9, 0x77, 0x62, 0xae,
0x78, 0x79, 0x36, 0xdc, 0xcf, 0x75, 0x13, 0x57, 0x7e, 0x79, 0xf4, 0x8c,
0x4b, 0x27, 0xaa, 0x0f, 0x13, 0x27, 0xb2, 0x40, 0xf5, 0x11, 0x7f, 0xcb,
0xe3, 0x48, 0xaa, 0x33, 0xb6, 0xe0, 0x22, 0x4b, 0x05, 0x4d, 0x07, 0x46,
0xb8, 0x02, 0x5e, 0x2e, 0x3b, 0x3e, 0x73, 0xcd, 0xe0, 0xdd, 0x1c, 0x97,
0xf0, 0x2e, 0x8e, 0xd9, 0xd0, 0xaf, 0x1d, 0xb3, 0x81, 0x22, 0x4b, 0xdf,
0x33, 0xee, 0xe6, 0x98, 0xa9, 0x34, 0xa0, 0xf6, 0x17, 0xb4, 0x55, 0x40,
0xd0, 0x0b, 0xcf, 0x4c, 0xa0, 0x8f, 0xc0, 0xdf, 0xf4, 0x06, 0xe3, 0x25,
0xc1, 0x98, 0x1b, 0xc4, 0x18, 0x76, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82;
our $image13;
our $image13_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x04,
0x31, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x8d, 0x95, 0x4d, 0x6c, 0x54,
0x55, 0x14, 0xc7, 0x7f, 0xf7, 0xbe, 0xef, 0x99, 0x29, 0x53, 0xa0, 0x48,
0x29, 0x69, 0x19, 0x52, 0x40, 0x1a, 0x44, 0x89, 0x09, 0x44, 0xd2, 0xf8,
0xd5, 0x84, 0xa5, 0xa1, 0x89, 0xbb, 0x26, 0xee, 0x20, 0x2a, 0x31, 0x6e,
0xba, 0x92, 0x60, 0x08, 0x89, 0x2b, 0x62, 0x63, 0xa2, 0x0b, 0x17, 0xcc,
0xd2, 0x54, 0x37, 0x26, 0x8d, 0x6b, 0x53, 0x35, 0x41, 0x8d, 0x29, 0x21,
0xf8, 0x01, 0xa1, 0x22, 0x52, 0x5b, 0x18, 0xa1, 0x4c, 0x69, 0xa7, 0xd3,
0x99, 0x79, 0xf3, 0xde, 0xbc, 0x7b, 0x5c, 0xbc, 0x69, 0x2d, 0x20, 0xc8,
0x49, 0xce, 0xe6, 0xdc, 0xff, 0xf9, 0xdf, 0xff, 0xbd, 0xf7, 0x9c, 0x73,
0x15, 0xff, 0x63, 0x87, 0x4f, 0x8a, 0x2f, 0x42, 0x17, 0x90, 0x13, 0xc0,
0x18, 0x56, 0x12, 0xa1, 0x7c, 0xf1, 0xac, 0x0a, 0x1f, 0x97, 0xa7, 0x1e,
0xb5, 0x30, 0x78, 0x4a, 0x3a, 0x81, 0x61, 0x63, 0x18, 0x12, 0xa1, 0x0f,
0xc8, 0x1b, 0x81, 0xc4, 0x50, 0x11, 0x98, 0x15, 0x98, 0x14, 0xc3, 0xc4,
0xa5, 0x0f, 0xd5, 0xd2, 0x13, 0x11, 0x0f, 0x9e, 0x92, 0x1c, 0x30, 0xa2,
0x14, 0xa3, 0x39, 0x4f, 0x0a, 0x3d, 0x1b, 0x71, 0x0a, 0x5b, 0x8c, 0xda,
0x96, 0x4f, 0xd0, 0x1a, 0x4a, 0x4b, 0x16, 0x37, 0xe6, 0xb5, 0x94, 0xee,
0x99, 0x78, 0x7e, 0x59, 0xcf, 0x44, 0x89, 0x1a, 0x13, 0x61, 0xfc, 0xf2,
0x47, 0x6a, 0xe5, 0x91, 0xc4, 0x2f, 0xbe, 0x2f, 0x79, 0x23, 0x9c, 0xb1,
0x35, 0xc7, 0x07, 0xb6, 0x9b, 0xcc, 0x91, 0xe7, 0x60, 0x60, 0x3b, 0x6c,
0x08, 0x84, 0xe5, 0x5a, 0x8c, 0x91, 0x14, 0x1e, 0xf8, 0x2e, 0x73, 0x77,
0x5b, 0x7c, 0x75, 0x41, 0xf1, 0xc3, 0x34, 0xf5, 0xe5, 0xd0, 0x3e, 0x97,
0x18, 0x4e, 0x4f, 0x7f, 0xac, 0x2a, 0x0f, 0x11, 0xb7, 0x95, 0x7e, 0x90,
0xf5, 0xe4, 0xed, 0x23, 0xfb, 0x5b, 0xee, 0xab, 0xfb, 0x6d, 0x02, 0xc7,
0x10, 0x36, 0x63, 0xf2, 0x19, 0xcd, 0xf6, 0x2e, 0x1b, 0x69, 0x63, 0xa7,
0xe7, 0x22, 0x1c, 0xc7, 0xc2, 0x60, 0x33, 0x35, 0x1d, 0xf2, 0xd9, 0x79,
0x2b, 0x2a, 0x2d, 0xb9, 0x9f, 0x8a, 0x70, 0xea, 0xf7, 0x4f, 0x52, 0xe5,
0x7a, 0x9d, 0xe0, 0x11, 0x5b, 0x73, 0xec, 0xf0, 0x1e, 0x71, 0x5f, 0x79,
0xc6, 0x46, 0x21, 0xac, 0xd4, 0x23, 0x06, 0x7a, 0x5d, 0xfa, 0x7b, 0x5c,
0x7c, 0x57, 0x13, 0xb4, 0xfd, 0x40, 0xbf, 0xcf, 0xd6, 0x4e, 0x45, 0x14,
0xb7, 0x78, 0x7e, 0x77, 0xc0, 0xeb, 0x87, 0x12, 0x37, 0xe3, 0x26, 0xc7,
0x44, 0x18, 0x59, 0x25, 0xd3, 0xab, 0x0f, 0xa5, 0x14, 0xa3, 0x85, 0x2d,
0x26, 0x7b, 0x70, 0x97, 0xa2, 0x11, 0x2b, 0xca, 0x95, 0x88, 0x67, 0x77,
0x7a, 0x04, 0x9e, 0xa6, 0xd6, 0x84, 0xcb, 0x73, 0x70, 0xf1, 0x06, 0xcc,
0x96, 0xc1, 0x08, 0x74, 0x6d, 0xb0, 0xe9, 0xd9, 0x64, 0x51, 0x0d, 0x61,
0x77, 0xaf, 0xcf, 0xc1, 0x7e, 0xb2, 0x4a, 0x31, 0xba, 0xf3, 0x84, 0x74,
0xae, 0x57, 0x3c, 0x1c, 0x38, 0x52, 0xd8, 0xd7, 0x0b, 0xad, 0x44, 0xb1,
0x58, 0x85, 0xac, 0xa7, 0xf0, 0x5d, 0x8d, 0x11, 0xf8, 0xe3, 0x36, 0x5c,
0xbf, 0x03, 0x37, 0xcb, 0x30, 0x75, 0xad, 0x45, 0xb9, 0x12, 0x01, 0xd0,
0x11, 0x68, 0x6a, 0x21, 0xdc, 0xab, 0x42, 0xef, 0xe6, 0x84, 0x0e, 0x3f,
0x29, 0x18, 0x61, 0x18, 0xc0, 0x3e, 0x7c, 0x52, 0x7c, 0x63, 0x18, 0xca,
0x67, 0x70, 0x72, 0xbe, 0x62, 0xb9, 0x9e, 0xee, 0x94, 0xf5, 0x6c, 0x5a,
0x09, 0x34, 0x22, 0x98, 0xbe, 0x05, 0xcd, 0x38, 0x8d, 0xc7, 0xcd, 0x3a,
0x81, 0x9b, 0x01, 0xa0, 0x16, 0x0a, 0x3f, 0x5e, 0x35, 0xdc, 0xae, 0x68,
0xea, 0x91, 0x43, 0xe0, 0x29, 0x47, 0xaa, 0x0c, 0xf5, 0xbd, 0x25, 0x5f,
0xd8, 0xed, 0xe2, 0xef, 0xcb, 0x78, 0xa8, 0xa8, 0xa5, 0x58, 0xac, 0xa5,
0x04, 0x95, 0x86, 0xc5, 0xbd, 0x1a, 0xac, 0x84, 0x50, 0x6d, 0xa4, 0xb1,
0x0e, 0xa7, 0xc6, 0xe0, 0x80, 0x4d, 0x2e, 0xb0, 0x31, 0x02, 0xdf, 0x5e,
0x36, 0x5c, 0x29, 0x59, 0x6b, 0x8f, 0x94, 0xf5, 0x51, 0x22, 0xf4, 0x89,
0xd0, 0x65, 0x03, 0x39, 0x11, 0xf2, 0xbe, 0x63, 0x58, 0x0e, 0xff, 0x05,
0x01, 0x6b, 0x9b, 0x00, 0x58, 0x49, 0x85, 0xa3, 0x2f, 0xfb, 0xf4, 0x3d,
0xe5, 0x21, 0xc0, 0xd4, 0xb5, 0x84, 0xaf, 0x7f, 0xbd, 0xbf, 0x0d, 0x7c,
0x07, 0x8c, 0x90, 0x17, 0x91, 0x9c, 0x9d, 0x98, 0x34, 0xd8, 0x8c, 0x61,
0xa1, 0x0a, 0x6b, 0x35, 0xb5, 0x3e, 0xc1, 0x6a, 0xf0, 0xc6, 0x4b, 0x2e,
0x3b, 0xb6, 0x7a, 0xb4, 0x12, 0xf8, 0xe6, 0xb7, 0x84, 0xcf, 0xbf, 0x57,
0xac, 0x84, 0xfa, 0xa1, 0x0e, 0x13, 0x49, 0x09, 0x6c, 0x11, 0xaa, 0x02,
0x95, 0x6a, 0x68, 0x61, 0x59, 0x0f, 0x80, 0x00, 0x31, 0xc2, 0xd6, 0x6e,
0x4d, 0xcf, 0xa6, 0x94, 0xe2, 0xc2, 0x75, 0xc3, 0x97, 0x3f, 0x29, 0xc2,
0x58, 0xaf, 0xe1, 0x55, 0x1b, 0xdb, 0x0c, 0x01, 0x91, 0x0a, 0x8a, 0xaa,
0x6d, 0x60, 0x01, 0x98, 0xad, 0x35, 0x91, 0xac, 0x87, 0x52, 0x4a, 0x10,
0x51, 0xa9, 0x70, 0x49, 0xd3, 0xb4, 0xd2, 0x58, 0x96, 0xa2, 0xda, 0x80,
0xf3, 0x57, 0xd3, 0x4a, 0xd0, 0xff, 0x31, 0x65, 0x2a, 0x35, 0x04, 0xcc,
0x2c, 0xc2, 0x82, 0xbe, 0x78, 0x56, 0x85, 0xc6, 0x30, 0x59, 0x6b, 0x48,
0x2c, 0x22, 0x68, 0xa5, 0xb0, 0x34, 0xd8, 0x1a, 0x6c, 0x2b, 0xf5, 0xbb,
0x55, 0x8b, 0xa9, 0x3f, 0x35, 0xdf, 0x5d, 0x81, 0xb9, 0x72, 0x1a, 0x73,
0x1e, 0x70, 0x11, 0xa1, 0x52, 0x33, 0x31, 0x30, 0x59, 0x2a, 0x3a, 0xa1,
0x9d, 0xde, 0x0b, 0x13, 0xb5, 0x26, 0xef, 0xd5, 0x9b, 0xb2, 0xa7, 0x7b,
0xa3, 0x42, 0xad, 0x57, 0x23, 0x90, 0x24, 0x31, 0x95, 0x6a, 0x0b, 0xad,
0x34, 0x59, 0xdf, 0x27, 0x91, 0xfb, 0xe5, 0x8a, 0xc0, 0x9d, 0x25, 0xc3,
0x4a, 0x28, 0x33, 0xc0, 0x04, 0xb4, 0x1b, 0xe4, 0xe7, 0x31, 0xb5, 0x14,
0x27, 0x6a, 0xac, 0xb4, 0x68, 0x6a, 0xca, 0x34, 0xc9, 0x78, 0x90, 0x6d,
0x7b, 0xc6, 0x13, 0x0e, 0xf4, 0xc5, 0xbc, 0x76, 0x28, 0xe0, 0xe8, 0x0b,
0x01, 0x83, 0x7b, 0x15, 0x39, 0x7f, 0xfd, 0x3a, 0x24, 0x71, 0xc8, 0x5f,
0xf3, 0xad, 0x5a, 0x2b, 0x91, 0xb1, 0x52, 0xd1, 0x59, 0x5a, 0x23, 0x6e,
0x0b, 0x1b, 0x5f, 0x6e, 0xd8, 0xc5, 0x5f, 0x66, 0x75, 0x94, 0xc4, 0x0d,
0x7c, 0x57, 0x08, 0xda, 0x89, 0xae, 0xeb, 0xd1, 0x32, 0x9a, 0x38, 0x49,
0xef, 0x36, 0xf0, 0x52, 0xf7, 0x5d, 0x21, 0x8e, 0x1a, 0x4c, 0x5d, 0x97,
0x68, 0xa9, 0xae, 0x8a, 0x20, 0xe3, 0xab, 0x7c, 0xf7, 0x9d, 0xe9, 0xe9,
0x77, 0x25, 0x2f, 0xc2, 0x99, 0xcd, 0xd9, 0xe8, 0xf8, 0xbe, 0x5e, 0xc9,
0xf4, 0x77, 0x6b, 0x1c, 0xc7, 0xc1, 0xb6, 0x60, 0x47, 0x17, 0x38, 0x36,
0xcc, 0xcc, 0x43, 0x18, 0x43, 0x1c, 0x35, 0x99, 0x2e, 0x09, 0x97, 0x6e,
0x24, 0xf5, 0xf9, 0xaa, 0x73, 0x0e, 0x38, 0x5d, 0x2a, 0x7a, 0x0f, 0x8f,
0xcd, 0x55, 0xdb, 0xf5, 0x8e, 0xe4, 0x04, 0x46, 0x3c, 0x2b, 0x19, 0xed,
0xce, 0xb7, 0x0a, 0x7b, 0xbb, 0x1b, 0xce, 0xb6, 0x8d, 0xb6, 0xf2, 0x83,
0x00, 0x80, 0x46, 0xa3, 0xce, 0xad, 0x72, 0x2c, 0x57, 0xfe, 0xf6, 0xe3,
0x5b, 0x8b, 0xd6, 0x4c, 0x18, 0xeb, 0x31, 0x90, 0xf1, 0x52, 0xd1, 0x7b,
0xf4, 0xa0, 0x5f, 0x6f, 0x85, 0x13, 0xd2, 0x29, 0xc2, 0xb0, 0x08, 0x43,
0x26, 0x6d, 0xd3, 0xbc, 0x88, 0xa4, 0x75, 0x8a, 0x99, 0x05, 0x26, 0x41,
0x26, 0x4a, 0x45, 0xf7, 0xc9, 0xbe, 0xa6, 0x07, 0xad, 0xf7, 0x4d, 0xf1,
0x45, 0xd8, 0x6c, 0x44, 0x3a, 0x40, 0x40, 0xa4, 0x0a, 0xb2, 0x50, 0x2a,
0x3a, 0x8f, 0xfd, 0x4c, 0xff, 0x01, 0xb1, 0xe1, 0x0a, 0x72, 0x93, 0xd9,
0x9f, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82;
our $image14;
our $image14_data =
["30 23 133 2",
".b c #1f1f1f",
".d c #2f2f63",
"#9 c #4c4c4c",
"#C c #5454ff",
"#j c #5511bb",
".Q c #5555ff",
"ab c #575757",
".e c #5757fc",
"#p c #5757ff",
"#Z c #591818",
"#f c #5b5bff",
".G c #5d5dff",
"#t c #5e5eff",
"#F c #6060ff",
"#W c #6161ff",
"#7 c #6363b3",
".m c #666666",
".o c #6666ff",
".y c #6767ff",
"#8 c #6d6db3",
"#N c #6f6fff",
".2 c #7f7fff",
"#6 c #8181b3",
".9 c #8a8aff",
"#r c #8b8bff",
"#y c #8c8cff",
"#X c #9292ff",
"#S c #9797ff",
"#H c #9c9cff",
"#I c #9f9fff",
".a c #a2a2a2",
"#5 c #acacb3",
"#. c #aeaeff",
"aa c #afafaf",
"#G c #b0b0ff",
"#J c #b2b2ff",
"#1 c #b32222",
"#2 c #b37272",
"#3 c #b3b2b2",
"#4 c #b3b3b3",
"a# c #b5b5b5",
".1 c #b9b9ff",
"#0 c #ba1d1d",
"#V c #bfbfff",
".p c #c3c3ff",
".z c #c7c7ff",
"#c c #ceceff",
".f c #cfcfff",
"#R c #d9d9ff",
"ac c #dadada",
".W c #dadaff",
"#g c #dbc2e6",
".H c #dbdbff",
"#s c #ddddff",
"a. c #dedede",
"#m c #e0e0ff",
"#x c #e3e3ff",
".c c #e4e4e4",
"#k c #e7cde6",
"#w c #e8e8ff",
"#q c #e9e9ff",
"#o c #ea92a6",
"#l c #ededff",
"#i c #eeedfe",
"#O c #eeeeff",
".P c #f0f0ff",
".R c #f2f2ff",
"#T c #f3f3ff",
".n c #f5f5ff",
"#e c #f7f7ff",
".F c #fbfbff",
".# c #fcfcfc",
".x c #fcfcff",
".X c #fdfdff",
"#Y c #fefefe",
"#b c #fefeff",
"#A c #ff5454",
".4 c #ff5555",
"#D c #ff5a5a",
".r c #ff5b5b",
"#h c #ff5d5d",
"#L c #ff6060",
".j c #ff6262",
"#v c #ff6767",
".Z c #ff6b6b",
"## c #ff6c6c",
".i c #ff7070",
".B c #ff7d7d",
".k c #ff7e7e",
".I c #ff8a8a",
".T c #ff8e8e",
".A c #ff9393",
".J c #ff9595",
".O c #ff9696",
"#d c #ff9999",
"#n c #ff9c9c",
".8 c #ff9e9e",
".6 c #ffa0a0",
".s c #ffa4a4",
".S c #ffa8a8",
".V c #ffa9a9",
".L c #ffb1b1",
".7 c #ffb2b2",
".h c #ffb8b8",
".N c #ffbcbc",
".q c #ffc1c1",
".M c #ffc7c7",
"#M c #ffcaca",
"#Q c #ffcece",
".Y c #ffcfcf",
".U c #ffd2d2",
"#a c #ffd4d4",
"#u c #ffd6d6",
".K c #ffd9d9",
".E c #ffdbdb",
"#E c #ffdede",
".0 c #ffdfdf",
".v c #ffe3e3",
".l c #ffe4e4",
"#P c #ffe7e7",
".5 c #ffebeb",
".t c #ffeded",
"#U c #ffefef",
"#z c #fff0f0",
".3 c #fff3f3",
"#B c #fff4f4",
".w c #fff6f6",
".D c #fff7f7",
".C c #fff8f8",
"#K c #fff9f9",
".g c #fffbfb",
".u c #fffefe",
"Qt c #ffffff",
"QtQt.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
"Qt.a.b.cQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
"QtQt.d.e.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.g.h.i.j.k.lQtQtQtQt",
"QtQt.m.n.o.pQtQtQtQtQtQtQtQtQtQtQtQtQt.q.r.s.t.u.v.wQtQtQtQt",
"QtQt.mQt.x.y.zQtQtQtQtQtQtQtQtQtQtQt.A.B.C.gQt.D.E.uQtQtQtQt",
"QtQt.mQtQt.F.G.HQtQtQtQtQtQtQtQtQt.I.JQt.K.LQt.M.N.OQtQtQtQt",
"QtQt.mQtQtQt.P.Q.RQtQtQtQtQtQtQt.S.TQtQt.K.LQtQt.U.VQtQtQtQt",
"QtQt.mQtQtQtQt.W.G.XQtQtQtQtQt.Y.ZQtQtQt.K.LQt.0.TQtQtQtQtQt",
"QtQt.mQtQtQtQtQt.1.2QtQtQtQt.3.4.DQtQtQt.5.J.6.7.8.qQtQtQtQt",
"QtQt.mQtQtQtQtQtQt.9#.QtQtQt###aQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
"QtQt.mQtQtQtQtQtQt#b.o#cQt.S#dQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
"QtQt.mQtQtQtQtQtQtQt#e#f#g#h.uQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
"QtQt.mQtQtQtQtQtQtQtQt#i#j#kQtQtQtQtQtQtQt#lQt.X#mQtQtQtQtQt",
"QtQt.mQtQtQtQtQtQtQtQt#n#o#p#qQtQtQtQtQtQt#rQt#s#t#bQtQtQtQt",
"QtQt.mQtQtQtQtQtQtQt#u#vQt#w#p#xQtQtQtQtQt#rQtQt#y#bQtQtQtQt",
"QtQt.mQtQtQtQtQtQt#z#A#BQtQt#q#C.WQtQtQtQt#rQtQt#y#bQtQtQtQt",
"QtQt.mQtQtQtQtQt.C#D#EQtQtQtQt.R#F#GQtQtQt#H#I.W#H#JQtQtQtQt",
"QtQt.mQtQtQtQt#K#L#MQtQtQtQtQtQt.X#y#N#OQtQtQtQtQtQtQtQtQtQt",
"QtQt.mQtQtQt#P.4#QQtQtQtQtQtQtQtQtQt#R#t#S#TQtQtQtQtQtQtQtQt",
"QtQt.mQt#U#d#h#PQtQtQtQtQtQtQtQtQtQtQtQt#V.o#W#X#J.pQtQtQtQt",
"Qt#Y#Z#0#1#2#3#4#4#4#4#4#4#4#4#4#4#4#4#4#4#4#5#6#7#8#9a.QtQt",
"QtQta#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacQtQt",
"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"];
our $image15;
our $image15_data = pack 'C*',
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x03,
0xb3, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xa5, 0xd2, 0x4f, 0x4c, 0x14,
0x57, 0x1c, 0x07, 0xf0, 0xef, 0x9b, 0xd9, 0xbf, 0x2c, 0xec, 0x0e, 0xb8,
0x65, 0x41, 0xa4, 0x25, 0x36, 0x28, 0xfd, 0x13, 0x9d, 0xd4, 0x36, 0x2d,
0x5a, 0xe3, 0x6e, 0x7a, 0x70, 0x21, 0x1e, 0x9a, 0xb4, 0x34, 0xc6, 0x78,
0xe0, 0xe0, 0xb5, 0xc7, 0x46, 0x2f, 0xa6, 0x90, 0xf6, 0xb0, 0x3d, 0xb1,
0x4d, 0x63, 0x22, 0x35, 0xe9, 0x12, 0x4d, 0x88, 0x1a, 0x2b, 0x29, 0x89,
0x46, 0xea, 0x36, 0x6b, 0x0d, 0xb6, 0xa5, 0x87, 0x75, 0xaa, 0x54, 0x28,
0xa4, 0x65, 0xad, 0x82, 0x55, 0x16, 0x3b, 0xcb, 0xe2, 0xce, 0xbe, 0x37,
0x33, 0xef, 0xf5, 0xb0, 0x48, 0x81, 0x6e, 0xc2, 0xc6, 0x7e, 0x93, 0x5f,
0x32, 0xc9, 0xfc, 0x7e, 0x9f, 0x99, 0xf7, 0x9b, 0x21, 0x58, 0x97, 0x2b,
0x57, 0x7e, 0xbc, 0x19, 0x08, 0xf8, 0xd4, 0xba, 0xba, 0x00, 0x0c, 0x83,
0x62, 0x71, 0xf1, 0x09, 0x0a, 0x05, 0x63, 0x80, 0x73, 0xd1, 0xdb, 0xd9,
0xb9, 0x27, 0xb3, 0xbe, 0xbf, 0xe2, 0x0c, 0x0f, 0x5f, 0x4f, 0xa4, 0xd3,
0x93, 0x62, 0x75, 0xb2, 0x59, 0x5d, 0x5c, 0xbd, 0x3a, 0x26, 0x86, 0x86,
0xae, 0x75, 0x3f, 0x33, 0x0c, 0x00, 0xe7, 0xcf, 0x27, 0x13, 0x63, 0x63,
0xe3, 0x6b, 0x70, 0xc6, 0x4c, 0x31, 0x32, 0xf2, 0x93, 0x38, 0x7b, 0xf6,
0xdb, 0xf0, 0xff, 0xc2, 0xcf, 0x9c, 0xb9, 0x9c, 0x18, 0x1d, 0xd5, 0xd6,
0xe0, 0xb9, 0xdc, 0x92, 0x38, 0x7d, 0xfa, 0xd2, 0x4c, 0x45, 0x40, 0x7f,
0xff, 0xc5, 0xc4, 0xc9, 0x93, 0x5f, 0xab, 0xe5, 0xee, 0x9d, 0x3a, 0x35,
0x34, 0xa4, 0x69, 0x53, 0x2b, 0x30, 0xe7, 0x5c, 0x24, 0x93, 0x63, 0xa2,
0xbf, 0xff, 0x62, 0xd9, 0xfe, 0xd5, 0x91, 0x5c, 0x2e, 0x67, 0x37, 0x21,
0x24, 0x15, 0x8f, 0x0f, 0xae, 0x69, 0x8e, 0xc7, 0x07, 0xd5, 0xaa, 0x2a,
0x6f, 0x78, 0xeb, 0xd6, 0x26, 0x58, 0x96, 0x0d, 0xcb, 0xb2, 0x61, 0xdb,
0x1c, 0xb5, 0xb5, 0x7e, 0x50, 0xca, 0xc2, 0x15, 0xc0, 0x0e, 0x44, 0xa3,
0xed, 0x0a, 0x21, 0x24, 0x15, 0x8b, 0x0d, 0xa8, 0x00, 0x10, 0x8b, 0x0d,
0xa8, 0x7e, 0xbf, 0x2f, 0xb5, 0x7f, 0xff, 0x5b, 0x8a, 0x2c, 0x4b, 0x60,
0xcc, 0x04, 0xa5, 0x0c, 0x94, 0x32, 0x38, 0x1c, 0x32, 0x8a, 0x45, 0xa6,
0x6c, 0x08, 0x17, 0x8b, 0x0c, 0x7e, 0xbf, 0x0f, 0x1d, 0x1d, 0xbb, 0x15,
0x42, 0x48, 0xaa, 0xa7, 0xe7, 0xcb, 0xee, 0x12, 0xda, 0xae, 0x48, 0x92,
0x04, 0x4a, 0x4d, 0x50, 0x6a, 0x82, 0x31, 0x0b, 0x8c, 0x59, 0x98, 0x9d,
0x9d, 0x07, 0xa5, 0x2c, 0xb3, 0x21, 0x9c, 0xcd, 0xea, 0x7a, 0x09, 0xaf,
0x46, 0x47, 0xc7, 0x6e, 0xa5, 0xb1, 0x31, 0x98, 0x88, 0x46, 0xdb, 0x15,
0x59, 0x96, 0xc1, 0x98, 0xf9, 0x9f, 0x9a, 0x99, 0x99, 0x83, 0x61, 0xd0,
0x0d, 0x61, 0x79, 0xc7, 0x8e, 0x7d, 0x6d, 0x5e, 0xaf, 0x5b, 0x0d, 0x06,
0x15, 0x78, 0x3c, 0x6e, 0xb4, 0xb6, 0x36, 0x43, 0x92, 0x24, 0xd8, 0xb6,
0xbd, 0xa6, 0x28, 0x35, 0x31, 0x3b, 0xfb, 0x08, 0xf5, 0xf5, 0xb5, 0x98,
0x9e, 0xbe, 0xa7, 0x7e, 0x75, 0xf0, 0xae, 0xf7, 0xc3, 0xce, 0xfa, 0xc9,
0x2f, 0x2e, 0xcf, 0x17, 0xcb, 0xbe, 0x31, 0x63, 0x66, 0x6f, 0x32, 0xf9,
0xb3, 0x9e, 0xcd, 0xfe, 0xbd, 0x72, 0xec, 0x52, 0x59, 0x2b, 0x65, 0x18,
0x0c, 0x99, 0xcc, 0x1c, 0xf2, 0xf9, 0x02, 0x84, 0x10, 0xf8, 0xe0, 0x95,
0x71, 0xd5, 0x15, 0x72, 0xf6, 0x99, 0x16, 0x52, 0xb7, 0xfb, 0x5e, 0x5e,
0xb3, 0x6f, 0x21, 0x84, 0x02, 0x00, 0x04, 0x00, 0x8e, 0x1c, 0xf9, 0x54,
0xad, 0xaa, 0xf2, 0xa4, 0xf6, 0xee, 0x55, 0x95, 0x6d, 0xdb, 0x9e, 0x87,
0xc3, 0xe1, 0x78, 0xda, 0x06, 0x00, 0x30, 0x0c, 0x0a, 0xd3, 0xb4, 0xe0,
0x74, 0x3a, 0x40, 0x26, 0x4e, 0xc0, 0xcf, 0xbe, 0x83, 0xfb, 0xf1, 0x5f,
0x70, 0xbe, 0xba, 0x05, 0x0f, 0xc6, 0xb9, 0xc6, 0x39, 0x22, 0xaf, 0x1f,
0xbd, 0xa3, 0xaf, 0x7e, 0x00, 0x79, 0x7a, 0x71, 0xf8, 0xf0, 0x71, 0x55,
0x08, 0xd1, 0x57, 0x57, 0x17, 0x08, 0x87, 0x42, 0x75, 0xa8, 0xae, 0xf6,
0x22, 0x97, 0x5b, 0x02, 0x63, 0x16, 0x0e, 0x1c, 0x78, 0x1b, 0x81, 0x40,
0x35, 0x8c, 0x74, 0x1c, 0xbe, 0xc2, 0x08, 0x6a, 0x0b, 0x0f, 0x11, 0x94,
0x4d, 0xe4, 0xe0, 0x84, 0xd1, 0xd2, 0x84, 0x3f, 0x6f, 0x09, 0x8d, 0x73,
0x44, 0xf6, 0x1c, 0xff, 0x17, 0x27, 0x58, 0x97, 0xae, 0xae, 0x63, 0x2d,
0x00, 0x5a, 0x00, 0x84, 0x01, 0x5c, 0x03, 0xa0, 0x84, 0x42, 0x9b, 0x12,
0x07, 0xd5, 0x8c, 0xa2, 0x98, 0x49, 0x34, 0xba, 0x16, 0xa0, 0xb8, 0x00,
0x69, 0x79, 0x72, 0xd1, 0x22, 0xc8, 0x07, 0x82, 0x98, 0xd6, 0x88, 0xc6,
0xb9, 0x88, 0xbc, 0xf3, 0xc9, 0x84, 0x5e, 0x16, 0x2e, 0x97, 0x0b, 0x1f,
0xed, 0xea, 0x79, 0x61, 0x8b, 0xf1, 0x71, 0x5b, 0x93, 0x0e, 0x9f, 0x4b,
0x06, 0x59, 0x37, 0x55, 0xa0, 0x36, 0x16, 0x44, 0x0d, 0xee, 0xdc, 0x94,
0x34, 0xce, 0x11, 0xe9, 0x8c, 0x4d, 0xe8, 0x15, 0xc1, 0x97, 0x8e, 0xbe,
0xa4, 0x70, 0x8e, 0xd4, 0xce, 0x5d, 0x5c, 0x6d, 0xde, 0x2c, 0x96, 0xcf,
0xba, 0x3c, 0xca, 0x6c, 0x00, 0x02, 0xb6, 0xcd, 0xf1, 0x20, 0xeb, 0x44,
0x3a, 0x2d, 0x6b, 0x9c, 0x23, 0x22, 0x57, 0x02, 0x0f, 0xde, 0xc8, 0x16,
0xdf, 0x7f, 0xf3, 0xb9, 0x73, 0xf7, 0xef, 0x91, 0x68, 0x55, 0x8d, 0x68,
0x50, 0x9a, 0x3d, 0x80, 0xd7, 0x05, 0x50, 0x0b, 0x28, 0x30, 0x60, 0x61,
0x09, 0x52, 0xce, 0x80, 0x5f, 0x21, 0x90, 0xdc, 0xa4, 0x61, 0xee, 0xa1,
0xdc, 0x26, 0x55, 0x02, 0x03, 0xc0, 0x7b, 0x7d, 0x13, 0xba, 0x69, 0x89,
0xc8, 0x8d, 0x51, 0x49, 0xfb, 0xfd, 0x97, 0x22, 0x50, 0xed, 0x06, 0xf2,
0x45, 0x60, 0x89, 0x02, 0xf3, 0x79, 0xc0, 0xe4, 0xc0, 0xdd, 0x05, 0xb4,
0x36, 0x18, 0x70, 0x3a, 0xec, 0x77, 0x2b, 0x86, 0x01, 0xe0, 0xd0, 0x89,
0x49, 0xdd, 0xb4, 0x10, 0xf9, 0xfe, 0xba, 0xa4, 0x4d, 0xa5, 0x1e, 0x03,
0x36, 0x07, 0x7c, 0x2e, 0xa0, 0x68, 0x01, 0x05, 0x5a, 0xfa, 0x3b, 0x0d,
0x06, 0x97, 0xcc, 0x51, 0xd1, 0x2a, 0x56, 0xe7, 0x9b, 0x74, 0xb6, 0xd8,
0xb9, 0x33, 0x78, 0xee, 0x8f, 0x8c, 0x14, 0xad, 0x11, 0x46, 0x43, 0xd0,
0x4d, 0x81, 0x37, 0x5a, 0x4a, 0x6b, 0x21, 0x00, 0x65, 0xc0, 0x0f, 0x53,
0xbe, 0xca, 0x3e, 0x5e, 0xb9, 0xc4, 0x0f, 0x6d, 0x57, 0x38, 0x47, 0x6a,
0xdf, 0x8b, 0x39, 0xf5, 0xb5, 0xcd, 0xf9, 0x12, 0x6a, 0x4b, 0x18, 0xfe,
0x75, 0x13, 0xee, 0xe7, 0xdc, 0xbd, 0xcf, 0x0c, 0x03, 0xc0, 0x67, 0x5d,
0xdb, 0x15, 0xce, 0x31, 0xe4, 0x77, 0x5b, 0xe1, 0x80, 0xc7, 0xc2, 0xa3,
0x27, 0x2e, 0x9d, 0xd9, 0xd2, 0xe7, 0xc7, 0x2e, 0xfc, 0xd6, 0xf3, 0x0f,
0x73, 0xdc, 0xfe, 0x36, 0x28, 0xf8, 0xc9, 0xbd, 0x00, 0x00, 0x00, 0x00,
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82;
sub NEW
{
shift->SUPER::NEW(@_[0..2]);
statusBar();
$image0 = Qt::Pixmap();
$image0->loadFromData($image0_data, length ($image0_data), "PNG");
$image1 = Qt::Pixmap();
$image1->loadFromData($image1_data, length ($image1_data), "PNG");
$image2 = Qt::Pixmap();
$image2->loadFromData($image2_data, length ($image2_data), "PNG");
$image3 = Qt::Pixmap();
$image3->loadFromData($image3_data, length ($image3_data), "PNG");
$image4 = Qt::Pixmap();
$image4->loadFromData($image4_data, length ($image4_data), "PNG");
$image5 = Qt::Pixmap();
$image5->loadFromData($image5_data, length ($image5_data), "PNG");
$image6 = Qt::Pixmap();
$image6->loadFromData($image6_data, length ($image6_data), "PNG");
$image7 = Qt::Pixmap();
$image7->loadFromData($image7_data, length ($image7_data), "PNG");
$image8 = Qt::Pixmap();
$image8->loadFromData($image8_data, length ($image8_data), "PNG");
$image9 = Qt::Pixmap();
$image9->loadFromData($image9_data, length ($image9_data), "PNG");
$image10 = Qt::Pixmap();
$image10->loadFromData($image10_data, length ($image10_data), "PNG");
$image11 = Qt::Pixmap();
$image11->loadFromData($image11_data, length ($image11_data), "PNG");
$image12 = Qt::Pixmap();
$image12->loadFromData($image12_data, length ($image12_data), "PNG");
$image13 = Qt::Pixmap();
$image13->loadFromData($image13_data, length ($image13_data), "PNG");
$image15 = Qt::Pixmap();
$image15->loadFromData($image15_data, length ($image15_data), "PNG");
$image14 = Qt::Pixmap($image14_data);
if ( name() eq "unnamed" )
{
setName("TrimSPGUI" );
}
setIcon($image0 );
setCentralWidget(Qt::Widget(this, "qt_central_widget"));
Progress = Qt::ProgressBar(centralWidget(), "Progress");
Progress->setGeometry( Qt::Rect(11, 543, 714, 25) );
Progress->setFrameShape( &Qt::ProgressBar::WinPanel() );
tabs = Qt::TabWidget(centralWidget(), "tabs");
tabs->setGeometry( Qt::Rect(11, 11, 714, 526) );
tabs->setSizePolicy( Qt::SizePolicy(4, 4, 0, 0, tabs->sizePolicy()->hasHeightForWidth()) );
LayersTab = Qt::Widget(tabs, "LayersTab");
my $LayoutWidget = Qt::Widget(LayersTab, '$LayoutWidget');
$LayoutWidget->setGeometry( Qt::Rect(455, 0, 250, 480) );
my $layout13 = Qt::VBoxLayout($LayoutWidget, 0, 0, '$layout13');
ProjParam = Qt::GroupBox($LayoutWidget, "ProjParam");
my $LayoutWidget_2 = Qt::Widget(ProjParam, '$LayoutWidget_2');
$LayoutWidget_2->setGeometry( Qt::Rect(5, 25, 240, 260) );
my $layout8 = Qt::VBoxLayout($LayoutWidget_2, 0, 0, '$layout8');
my $layout7 = Qt::HBoxLayout(undef, 0, 6, '$layout7');
textLabel1 = Qt::Label($LayoutWidget_2, "textLabel1");
$layout7->addWidget(textLabel1);
ProjType = Qt::ComboBox(0, $LayoutWidget_2, "ProjType");
ProjType->setSizePolicy( Qt::SizePolicy(0, 0, 0, 0, ProjType->sizePolicy()->hasHeightForWidth()) );
$layout7->addWidget(ProjType);
$layout8->addLayout($layout7);
my $layout6 = Qt::HBoxLayout(undef, 0, 6, '$layout6');
my $layout5 = Qt::VBoxLayout(undef, 0, 0, '$layout5');
NLabel = Qt::Label($LayoutWidget_2, "NLabel");
NLabel->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, NLabel->sizePolicy()->hasHeightForWidth()) );
$layout5->addWidget(NLabel);
z0Label = Qt::Label($LayoutWidget_2, "z0Label");
$layout5->addWidget(z0Label);
dzLabel = Qt::Label($LayoutWidget_2, "dzLabel");
$layout5->addWidget(dzLabel);
ELabel = Qt::Label($LayoutWidget_2, "ELabel");
$layout5->addWidget(ELabel);
SigELabel = Qt::Label($LayoutWidget_2, "SigELabel");
$layout5->addWidget(SigELabel);
AlbleLabel = Qt::Label($LayoutWidget_2, "AlbleLabel");
$layout5->addWidget(AlbleLabel);
SigAngleLabel = Qt::Label($LayoutWidget_2, "SigAngleLabel");
$layout5->addWidget(SigAngleLabel);
SeedLabel = Qt::Label($LayoutWidget_2, "SeedLabel");
$layout5->addWidget(SeedLabel);
$layout6->addLayout($layout5);
my $layout4 = Qt::VBoxLayout(undef, 0, 0, '$layout4');
NProj = Qt::LineEdit($LayoutWidget_2, "NProj");
NProj->setSizePolicy( Qt::SizePolicy(7, 0, 0, 0, NProj->sizePolicy()->hasHeightForWidth()) );
NProj->setMaximumSize( Qt::Size(32767, 32767) );
$layout4->addWidget(NProj);
z0 = Qt::LineEdit($LayoutWidget_2, "z0");
z0->setMaximumSize( Qt::Size(32767, 32767) );
$layout4->addWidget(z0);
dz = Qt::LineEdit($LayoutWidget_2, "dz");
$layout4->addWidget(dz);
E = Qt::LineEdit($LayoutWidget_2, "E");
$layout4->addWidget(E);
SigE = Qt::LineEdit($LayoutWidget_2, "SigE");
$layout4->addWidget(SigE);
Angle = Qt::LineEdit($LayoutWidget_2, "Angle");
$layout4->addWidget(Angle);
SigAngle = Qt::LineEdit($LayoutWidget_2, "SigAngle");
$layout4->addWidget(SigAngle);
Seed = Qt::LineEdit($LayoutWidget_2, "Seed");
$layout4->addWidget(Seed);
$layout6->addLayout($layout4);
$layout8->addLayout($layout6);
$layout13->addWidget(ProjParam);
groupBox15 = Qt::GroupBox($LayoutWidget, "groupBox15");
my $LayoutWidget_3 = Qt::Widget(groupBox15, '$LayoutWidget_3');
$LayoutWidget_3->setGeometry( Qt::Rect(6, 23, 240, 100) );
my $layout14 = Qt::VBoxLayout($LayoutWidget_3, 0, 0, '$layout14');
textLabelFN = Qt::Label($LayoutWidget_3, "textLabelFN");
$layout14->addWidget(textLabelFN);
FNPre = Qt::LineEdit($LayoutWidget_3, "FNPre");
$layout14->addWidget(FNPre);
textLabelPath = Qt::Label($LayoutWidget_3, "textLabelPath");
$layout14->addWidget(textLabelPath);
my $layout13_2 = Qt::HBoxLayout(undef, 0, 6, '$layout13_2');
Path = Qt::LineEdit($LayoutWidget_3, "Path");
$layout13_2->addWidget(Path);
Browse = Qt::PushButton($LayoutWidget_3, "Browse");
Browse->setSizePolicy( Qt::SizePolicy(7, 0, 0, 0, Browse->sizePolicy()->hasHeightForWidth()) );
$layout13_2->addWidget(Browse);
$layout14->addLayout($layout13_2);
$layout13->addWidget(groupBox15);
my $layout12 = Qt::HBoxLayout(undef, 4, 6, '$layout12');
Start = Qt::PushButton($LayoutWidget, "Start");
Start->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, Start->sizePolicy()->hasHeightForWidth()) );
Start->setMinimumSize( Qt::Size(0, 25) );
Start->setPixmap( $image1 );
$layout12->addWidget(Start);
Quit = Qt::PushButton($LayoutWidget, "Quit");
Quit->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, Quit->sizePolicy()->hasHeightForWidth()) );
Quit->setMinimumSize( Qt::Size(0, 25) );
Quit->setPixmap( $image2 );
$layout12->addWidget(Quit);
$layout13->addLayout($layout12);
groupBox1 = Qt::GroupBox(LayersTab, "groupBox1");
groupBox1->setGeometry( Qt::Rect(5, 0, 445, 485) );
groupBox1->setFrameShape( &Qt::GroupBox::GroupBoxPanel() );
groupBox1->setFrameShadow( &Qt::GroupBox::Sunken() );
my $LayoutWidget_4 = Qt::Widget(groupBox1, '$LayoutWidget_4');
$LayoutWidget_4->setGeometry( Qt::Rect(8, 25, 432, 460) );
my $layout66 = Qt::VBoxLayout($LayoutWidget_4, 11, 6, '$layout66');
my $layout19 = Qt::HBoxLayout(undef, 0, 6, '$layout19');
textLabel1_4 = Qt::Label($LayoutWidget_4, "textLabel1_4");
$layout19->addWidget(textLabel1_4);
NL = Qt::SpinBox($LayoutWidget_4, "NL");
NL->setMaxValue( int(100) );
NL->setMinValue( int(1) );
$layout19->addWidget(NL);
my $spacer = Qt::SpacerItem(240, 20, &Qt::SizePolicy::Expanding, &Qt::SizePolicy::Minimum);
$layout19->addItem($spacer);
$layout66->addLayout($layout19);
layerTable = Qt::Table($LayoutWidget_4, "layerTable");
layerTable->setNumCols(layerTable->numCols() + 1);
layerTable->horizontalHeader()->setLabel(layerTable->numCols() - 1, trUtf8("Composition"));
layerTable->setNumCols(layerTable->numCols() + 1);
layerTable->horizontalHeader()->setLabel(layerTable->numCols() - 1, trUtf8("Density [g/cm^3]"));
layerTable->setNumCols(layerTable->numCols() + 1);
layerTable->horizontalHeader()->setLabel(layerTable->numCols() - 1, trUtf8("Thickness [Å]"));
layerTable->setNumRows(layerTable->numRows() + 1 );
layerTable->verticalHeader()->setLabel(layerTable->numRows() - 1, trUtf8("1"));
layerTable->setSizePolicy( Qt::SizePolicy(7, 7, 100, 100, layerTable->sizePolicy()->hasHeightForWidth()) );
layerTable->setMinimumSize( Qt::Size(410, 405) );
layerTable->setAcceptDrops( 1 );
layerTable->setResizePolicy( &Qt::Table::AutoOneFit() );
layerTable->setDragAutoScroll( 1 );
layerTable->setNumRows( int(1) );
layerTable->setNumCols( int(3) );
layerTable->setRowMovingEnabled( 0 );
layerTable->setReadOnly( 0 );
layerTable->setSelectionMode( &Qt::Table::NoSelection() );
layerTable->setFocusStyle( &Qt::Table::FollowStyle() );
$layout66->addWidget(layerTable);
tabs->insertTab( LayersTab, "" );
AddParTab = Qt::Widget(tabs, "AddParTab");
AddParam = Qt::GroupBox(AddParTab, "AddParam");
AddParam->setGeometry( Qt::Rect(5, 0, 245, 210) );
textLabelEF = Qt::Label(AddParam, "textLabelEF");
textLabelEF->setGeometry( Qt::Rect(12, 26, 63, 25) );
textLabelSHEATH = Qt::Label(AddParam, "textLabelSHEATH");
textLabelSHEATH->setGeometry( Qt::Rect(12, 76, 63, 25) );
textLabelERC = Qt::Label(AddParam, "textLabelERC");
textLabelERC->setGeometry( Qt::Rect(12, 101, 63, 26) );
textLabelRD = Qt::Label(AddParam, "textLabelRD");
textLabelRD->setGeometry( Qt::Rect(12, 127, 63, 25) );
KDEE2 = Qt::SpinBox(AddParam, "KDEE2");
KDEE2->setGeometry( Qt::Rect(185, 100, 52, 26) );
KDEE2->setMaxValue( int(3) );
KDEE2->setMinValue( int(1) );
KDEE2->setValue( int(3) );
KDEE1 = Qt::SpinBox(AddParam, "KDEE1");
KDEE1->setGeometry( Qt::Rect(185, 75, 52, 26) );
KDEE1->setMaxValue( int(5) );
KDEE1->setMinValue( int(1) );
KDEE1->setValue( int(4) );
textLabelIRL = Qt::Label(AddParam, "textLabelIRL");
textLabelIRL->setGeometry( Qt::Rect(131, 177, 53, 25) );
textLabelIPOTR = Qt::Label(AddParam, "textLabelIPOTR");
textLabelIPOTR->setGeometry( Qt::Rect(131, 152, 53, 25) );
textLabelIPOT = Qt::Label(AddParam, "textLabelIPOT");
textLabelIPOT->setGeometry( Qt::Rect(131, 126, 53, 26) );
textLabelKDEE2 = Qt::Label(AddParam, "textLabelKDEE2");
textLabelKDEE2->setGeometry( Qt::Rect(131, 101, 53, 25) );
textLabelKDEE1 = Qt::Label(AddParam, "textLabelKDEE1");
textLabelKDEE1->setGeometry( Qt::Rect(131, 76, 53, 25) );
textLabelKK0R = Qt::Label(AddParam, "textLabelKK0R");
textLabelKK0R->setGeometry( Qt::Rect(131, 51, 53, 25) );
textLabelCA = Qt::Label(AddParam, "textLabelCA");
textLabelCA->setGeometry( Qt::Rect(12, 152, 63, 25) );
textLabelEmpty = Qt::Label(AddParam, "textLabelEmpty");
textLabelEmpty->setEnabled( 0 );
textLabelEmpty->setGeometry( Qt::Rect(12, 175, 63, 25) );
lineEditEmpty = Qt::LineEdit(AddParam, "lineEditEmpty");
lineEditEmpty->setEnabled( 0 );
lineEditEmpty->setGeometry( Qt::Rect(77, 175, 52, 25) );
lineEditEmpty->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, lineEditEmpty->sizePolicy()->hasHeightForWidth()) );
KK0R = Qt::SpinBox(AddParam, "KK0R");
KK0R->setGeometry( Qt::Rect(185, 50, 52, 26) );
KK0R->setMaxValue( int(4) );
KK0R->setMinValue( int(0) );
KK0R->setValue( int(2) );
KK0 = Qt::SpinBox(AddParam, "KK0");
KK0->setGeometry( Qt::Rect(185, 25, 52, 26) );
KK0->setMaxValue( int(4) );
KK0->setMinValue( int(0) );
KK0->setValue( int(2) );
textLabelKK0 = Qt::Label(AddParam, "textLabelKK0");
textLabelKK0->setGeometry( Qt::Rect(131, 25, 53, 25) );
EF = Qt::LineEdit(AddParam, "EF");
EF->setGeometry( Qt::Rect(77, 26, 52, 25) );
EF->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, EF->sizePolicy()->hasHeightForWidth()) );
SHEATH = Qt::LineEdit(AddParam, "SHEATH");
SHEATH->setGeometry( Qt::Rect(77, 76, 52, 25) );
SHEATH->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, SHEATH->sizePolicy()->hasHeightForWidth()) );
ERC = Qt::LineEdit(AddParam, "ERC");
ERC->setGeometry( Qt::Rect(77, 101, 52, 26) );
ERC->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, ERC->sizePolicy()->hasHeightForWidth()) );
RD = Qt::LineEdit(AddParam, "RD");
RD->setGeometry( Qt::Rect(77, 127, 52, 25) );
RD->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, RD->sizePolicy()->hasHeightForWidth()) );
CA = Qt::LineEdit(AddParam, "CA");
CA->setGeometry( Qt::Rect(77, 152, 52, 25) );
CA->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, CA->sizePolicy()->hasHeightForWidth()) );
ESB = Qt::LineEdit(AddParam, "ESB");
ESB->setGeometry( Qt::Rect(77, 51, 52, 25) );
ESB->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, ESB->sizePolicy()->hasHeightForWidth()) );
IPOT = Qt::SpinBox(AddParam, "IPOT");
IPOT->setGeometry( Qt::Rect(185, 125, 52, 26) );
IPOT->setMaxValue( int(3) );
IPOT->setMinValue( int(1) );
IPOT->setValue( int(2) );
IPOTR = Qt::SpinBox(AddParam, "IPOTR");
IPOTR->setGeometry( Qt::Rect(185, 150, 52, 26) );
IPOTR->setMaxValue( int(3) );
IPOTR->setMinValue( int(1) );
IRL = Qt::SpinBox(AddParam, "IRL");
IRL->setGeometry( Qt::Rect(186, 176, 52, 26) );
IRL->setMaxValue( int(1) );
textLabelESB = Qt::Label(AddParam, "textLabelESB");
textLabelESB->setGeometry( Qt::Rect(12, 51, 63, 25) );
tabs->insertTab( AddParTab, "" );
ScansTab = Qt::Widget(tabs, "ScansTab");
ScanSeq = Qt::GroupBox(ScansTab, "ScanSeq");
ScanSeq->setGeometry( Qt::Rect(5, 0, 550, 250) );
ScanSeq->setCheckable( 1 );
ScanSeq->setChecked( 0 );
ScanMode = Qt::ButtonGroup(ScanSeq, "ScanMode");
ScanMode->setGeometry( Qt::Rect(230, 20, 310, 215) );
ScanMode->setCheckable( 0 );
ScanMode->setChecked( 0 );
ScanMode->setExclusive( 1 );
ScanMode->setRadioButtonExclusive( 1 );
my $LayoutWidget_5 = Qt::Widget(ScanMode, '$LayoutWidget_5');
$LayoutWidget_5->setGeometry( Qt::Rect(11, 178, 290, 27) );
my $layout3 = Qt::HBoxLayout($LayoutWidget_5, 0, 0, '$layout3');
textLabel2 = Qt::Label($LayoutWidget_5, "textLabel2");
$layout3->addWidget(textLabel2);
SFrom = Qt::LineEdit($LayoutWidget_5, "SFrom");
SFrom->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, SFrom->sizePolicy()->hasHeightForWidth()) );
$layout3->addWidget(SFrom);
textLabel2_2 = Qt::Label($LayoutWidget_5, "textLabel2_2");
$layout3->addWidget(textLabel2_2);
STo = Qt::LineEdit($LayoutWidget_5, "STo");
STo->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, STo->sizePolicy()->hasHeightForWidth()) );
$layout3->addWidget(STo);
textLabel2_2_2_2 = Qt::Label($LayoutWidget_5, "textLabel2_2_2_2");
$layout3->addWidget(textLabel2_2_2_2);
SStep = Qt::LineEdit($LayoutWidget_5, "SStep");
SStep->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, SStep->sizePolicy()->hasHeightForWidth()) );
$layout3->addWidget(SStep);
ScanList = Qt::LineEdit(ScanMode, "ScanList");
ScanList->setGeometry( Qt::Rect(11, 46, 290, 26) );
dzListLabel = Qt::Label(ScanMode, "dzListLabel");
dzListLabel->setGeometry( Qt::Rect(13, 79, 295, 19) );
LoopRadio = Qt::RadioButton(ScanMode, "LoopRadio");
LoopRadio->setGeometry( Qt::Rect(10, 150, 240, 22) );
LoopRadio->setChecked( 1 );
ListRadio = Qt::RadioButton(ScanMode, "ListRadio");
ListRadio->setGeometry( Qt::Rect(10, 20, 240, 22) );
ScanListdz = Qt::LineEdit(ScanMode, "ScanListdz");
ScanListdz->setEnabled( 0 );
ScanListdz->setGeometry( Qt::Rect(11, 108, 290, 26) );
buttonGroup2 = Qt::ButtonGroup(ScanSeq, "buttonGroup2");
buttonGroup2->setGeometry( Qt::Rect(10, 20, 216, 215) );
buttonGroup2->setExclusive( 1 );
SigERadio = Qt::RadioButton(buttonGroup2, "SigERadio");
SigERadio->setGeometry( Qt::Rect(4, 47, 211, 24) );
NProjRadio = Qt::RadioButton(buttonGroup2, "NProjRadio");
NProjRadio->setGeometry( Qt::Rect(4, 122, 211, 24) );
dRadio = Qt::RadioButton(buttonGroup2, "dRadio");
dRadio->setGeometry( Qt::Rect(5, 149, 153, 24) );
ScandL = Qt::SpinBox(buttonGroup2, "ScandL");
ScandL->setGeometry( Qt::Rect(158, 148, 56, 26) );
ScandL->setMaxValue( int(7) );
ScandL->setMinValue( int(1) );
SigAngleRadio = Qt::RadioButton(buttonGroup2, "SigAngleRadio");
SigAngleRadio->setGeometry( Qt::Rect(4, 97, 211, 24) );
AngleRadio = Qt::RadioButton(buttonGroup2, "AngleRadio");
AngleRadio->setGeometry( Qt::Rect(4, 72, 211, 24) );
AngleRadio->setChecked( 0 );
ERadio = Qt::RadioButton(buttonGroup2, "ERadio");
ERadio->setGeometry( Qt::Rect(4, 22, 211, 24) );
ERadio->setChecked( 1 );
tabs->insertTab( ScansTab, "" );
ConfigTab = Qt::Widget(tabs, "ConfigTab");
my $LayoutWidget_6 = Qt::Widget(ConfigTab, '$LayoutWidget_6');
$LayoutWidget_6->setGeometry( Qt::Rect(10, 20, 680, 80) );
my $layout27 = Qt::GridLayout($LayoutWidget_6, 1, 1, 11, 6, '$layout27');
my $layout26 = Qt::HBoxLayout(undef, 0, 6, '$layout26');
textLabel1_2_2 = Qt::Label($LayoutWidget_6, "textLabel1_2_2");
textLabel1_2_2->setSizePolicy( Qt::SizePolicy(0, 5, 0, 0, textLabel1_2_2->sizePolicy()->hasHeightForWidth()) );
textLabel1_2_2->setMinimumSize( Qt::Size(110, 0) );
textLabel1_2_2->setMaximumSize( Qt::Size(130, 32767) );
$layout26->addWidget(textLabel1_2_2);
TrimGUIPath = Qt::LineEdit($LayoutWidget_6, "TrimGUIPath");
$layout26->addWidget(TrimGUIPath);
GUIPathBrowse = Qt::PushButton($LayoutWidget_6, "GUIPathBrowse");
$layout26->addWidget(GUIPathBrowse);
$layout27->addLayout($layout26, 1, 0);
my $layout25 = Qt::HBoxLayout(undef, 0, 6, '$layout25');
textLabel1_2 = Qt::Label($LayoutWidget_6, "textLabel1_2");
textLabel1_2->setSizePolicy( Qt::SizePolicy(0, 5, 0, 0, textLabel1_2->sizePolicy()->hasHeightForWidth()) );
textLabel1_2->setMinimumSize( Qt::Size(110, 0) );
textLabel1_2->setMaximumSize( Qt::Size(130, 32767) );
$layout25->addWidget(textLabel1_2);
TRIMBIN = Qt::LineEdit($LayoutWidget_6, "TRIMBIN");
$layout25->addWidget(TRIMBIN);
TrimBinBrowse = Qt::PushButton($LayoutWidget_6, "TrimBinBrowse");
$layout25->addWidget(TrimBinBrowse);
$layout27->addLayout($layout25, 0, 0);
tabs->insertTab( ConfigTab, "" );
fileNewAction= Qt::Action(this, "fileNewAction");
fileNewAction->setIconSet( Qt::IconSet($image3) );
fileOpenAction= Qt::Action(this, "fileOpenAction");
fileOpenAction->setIconSet( Qt::IconSet($image4) );
fileSaveAction= Qt::Action(this, "fileSaveAction");
fileSaveAction->setIconSet( Qt::IconSet($image5) );
fileSaveAsAction= Qt::Action(this, "fileSaveAsAction");
fileSaveAsAction->setIconSet( Qt::IconSet($image6) );
fileChangeDirAction= Qt::Action(this, "fileChangeDirAction");
fileChangeDirAction->setIconSet( Qt::IconSet($image7) );
fileQuitAction= Qt::Action(this, "fileQuitAction");
fileQuitAction->setIconSet( Qt::IconSet($image2) );
editUndoAction= Qt::Action(this, "editUndoAction");
editUndoAction->setIconSet( Qt::IconSet($image8) );
editRedoAction= Qt::Action(this, "editRedoAction");
editRedoAction->setIconSet( Qt::IconSet($image9) );
editCutAction= Qt::Action(this, "editCutAction");
editCutAction->setIconSet( Qt::IconSet($image10) );
editCopyAction= Qt::Action(this, "editCopyAction");
editCopyAction->setIconSet( Qt::IconSet($image11) );
editPasteAction= Qt::Action(this, "editPasteAction");
editPasteAction->setIconSet( Qt::IconSet($image12) );
plotProfilesAction= Qt::Action(this, "plotProfilesAction");
plotProfilesAction->setIconSet( Qt::IconSet($image0) );
helpContentsAction= Qt::Action(this, "helpContentsAction");
helpContentsAction->setIconSet( Qt::IconSet($image13) );
helpAboutAction= Qt::Action(this, "helpAboutAction");
helpAboutAction->setIconSet( Qt::IconSet($image0) );
plotFractionsAction= Qt::Action(this, "plotFractionsAction");
plotFractionsAction->setToggleAction( 0 );
plotFractionsAction->setOn( 0 );
plotFractionsAction->setEnabled( 1 );
plotFractionsAction->setIconSet( Qt::IconSet($image14) );
fileStartAction= Qt::Action(this, "fileStartAction");
fileStartAction->setIconSet( Qt::IconSet($image1) );
fileConfigureAction= Qt::Action(this, "fileConfigureAction");
fileConfigureAction->setIconSet( Qt::IconSet($image15) );
MenuBar= Qt::MenuBar( this, "MenuBar");
File = Qt::PopupMenu( this );
fileStartAction->addTo( File );
File->insertSeparator();
fileOpenAction->addTo( File );
fileSaveAction->addTo( File );
fileSaveAsAction->addTo( File );
File->insertSeparator();
fileChangeDirAction->addTo( File );
fileQuitAction->addTo( File );
MenuBar->insertItem( "", File, 1 );
Plot = Qt::PopupMenu( this );
Plot->insertSeparator();
plotProfilesAction->addTo( Plot );
plotFractionsAction->addTo( Plot );
MenuBar->insertItem( "", Plot, 2 );
helpMenu = Qt::PopupMenu( this );
helpContentsAction->addTo( helpMenu );
helpMenu->insertSeparator();
helpAboutAction->addTo( helpMenu );
MenuBar->insertItem( "", helpMenu, 3 );
languageChange();
my $resize = Qt::Size(736, 626);
$resize = $resize->expandedTo(minimumSizeHint());
resize( $resize );
clearWState( &Qt::WState_Polished );
Qt::Object::connect(TrimBinBrowse, SIGNAL "clicked()", this, SLOT "TrimBin()");
Qt::Object::connect(GUIPathBrowse, SIGNAL "clicked()", this, SLOT "GUIPath()");
Qt::Object::connect(plotFractionsAction, SIGNAL "activated()", this, SLOT "PlotFraction()");
Qt::Object::connect(SigAngleRadio, SIGNAL "toggled(bool)", this, SLOT "ToggleScanSingle()");
Qt::Object::connect(AngleRadio, SIGNAL "toggled(bool)", this, SLOT "ToggleScanSingle()");
Qt::Object::connect(fileSaveAsAction, SIGNAL "activated()", this, SLOT "SaveFileAs()");
Qt::Object::connect(fileSaveAction, SIGNAL "activated()", this, SLOT "SaveFile()");
Qt::Object::connect(fileOpenAction, SIGNAL "activated()", this, SLOT "OpenFile()");
Qt::Object::connect(helpAboutAction, SIGNAL "activated()", this, SLOT "OpenAboutWindow()");
Qt::Object::connect(plotProfilesAction, SIGNAL "activated()", this, SLOT "PlotProfiles()");
Qt::Object::connect(fileStartAction, SIGNAL "activated()", this, SLOT "StartSequenceOne()");
Qt::Object::connect(ListRadio, SIGNAL "toggled(bool)", this, SLOT "ToggleScanSingle()");
Qt::Object::connect(Quit, SIGNAL "clicked()", this, SLOT "ConfirmQuit()");
Qt::Object::connect(Browse, SIGNAL "clicked()", this, SLOT "DirectoryBrowse()");
Qt::Object::connect(ProjType, SIGNAL "activated(int)", this, SLOT "ProjSmartDefaults()");
Qt::Object::connect(NL, SIGNAL "valueChanged(int)", this, SLOT "PrepLayers()");
Qt::Object::connect(dRadio, SIGNAL "toggled(bool)", this, SLOT "ToggleScanSingle()");
Qt::Object::connect(ScandL, SIGNAL "valueChanged(int)", this, SLOT "ToggleScanSingle()");
Qt::Object::connect(NProjRadio, SIGNAL "toggled(bool)", this, SLOT "ToggleScanSingle()");
Qt::Object::connect(SigERadio, SIGNAL "toggled(bool)", this, SLOT "ToggleScanSingle()");
Qt::Object::connect(ERadio, SIGNAL "toggled(bool)", this, SLOT "ToggleScanSingle()");
Qt::Object::connect(Start, SIGNAL "clicked()", this, SLOT "StartSequenceOne()");
Qt::Object::connect(ScanSeq, SIGNAL "toggled(bool)", this, SLOT "ToggleScanSingle()");
Qt::Object::connect(helpContentsAction, SIGNAL "activated()", this, SLOT "OpenHelpWindow()");
Qt::Object::connect(fileQuitAction, SIGNAL "activated()", this, SLOT "ConfirmQuit()");
Qt::Object::connect(fileChangeDirAction, SIGNAL "activated()", this, SLOT "DirectoryBrowse()");
Qt::Object::connect(layerTable, SIGNAL "valueChanged(int,int)", this, SLOT "findDensity()");
setTabOrder(tabs, NL);
setTabOrder(NL, ProjType);
setTabOrder(ProjType, NProj);
setTabOrder(NProj, z0);
setTabOrder(z0, dz);
setTabOrder(dz, E);
setTabOrder(E, SigE);
setTabOrder(SigE, Angle);
setTabOrder(Angle, SigAngle);
setTabOrder(SigAngle, Seed);
setTabOrder(Seed, FNPre);
setTabOrder(FNPre, Path);
setTabOrder(Path, Browse);
setTabOrder(Browse, Start);
setTabOrder(Start, Quit);
setTabOrder(Quit, EF);
setTabOrder(EF, ESB);
setTabOrder(ESB, SHEATH);
setTabOrder(SHEATH, ERC);
setTabOrder(ERC, RD);
setTabOrder(RD, CA);
setTabOrder(CA, lineEditEmpty);
setTabOrder(lineEditEmpty, KK0);
setTabOrder(KK0, KK0R);
setTabOrder(KK0R, KDEE1);
setTabOrder(KDEE1, KDEE2);
setTabOrder(KDEE2, IPOT);
setTabOrder(IPOT, IPOTR);
setTabOrder(IPOTR, IRL);
setTabOrder(IRL, ERadio);
setTabOrder(ERadio, ScandL);
setTabOrder(ScandL, ScanList);
setTabOrder(ScanList, ScanListdz);
setTabOrder(ScanListdz, LoopRadio);
setTabOrder(LoopRadio, SFrom);
setTabOrder(SFrom, STo);
setTabOrder(STo, SStep);
}
# Sets the strings of the subwidgets using the current
# language.
sub languageChange
{
setCaption(trUtf8("TrimSP GUI") );
ProjParam->setTitle( trUtf8("Projectile parameters") );
textLabel1->setText( trUtf8("Projectile") );
ProjType->clear();
ProjType->insertItem( trUtf8("Muon") );
ProjType->insertItem( trUtf8("Li8") );
ProjType->insertItem( trUtf8("B12") );
ProjType->insertItem( trUtf8("H") );
Qt::WhatsThis::add(ProjType, trUtf8("Choose the projectile type."));
NLabel->setText( trUtf8("Number of projectiles") );
z0Label->setText( trUtf8("Starting depth [Å]") );
dzLabel->setText( trUtf8("Depth increment [Å]") );
ELabel->setText( trUtf8("Energy [eV]") );
SigELabel->setText( trUtf8("Energy sigma [eV]") );
AlbleLabel->setText( trUtf8("Angle [deg]") );
SigAngleLabel->setText( trUtf8("Angle sigma [deg]") );
SeedLabel->setText( trUtf8("Random seed") );
NProj->setText( trUtf8("10000") );
Qt::WhatsThis::add(NProj, trUtf8("The number of projectiles to be implanted in the sample. Larger number better statistics."));
z0->setText( trUtf8("0.0") );
Qt::WhatsThis::add(z0, trUtf8("Consider implanted projectiles starting from this depth."));
dz->setText( trUtf8("10.0") );
Qt::WhatsThis::add(dz, trUtf8("The steps in implantation depth at which the number of stopped projectiles will be counted. Smaller number for finer implantation histogram."));
E->setText( trUtf8("2000") );
Qt::WhatsThis::add(E, trUtf8("The average implantation energy of the projectile."));
SigE->setText( trUtf8("450") );
Qt::WhatsThis::add(SigE, trUtf8("The spread in implantation energy. For muons this is typically 400-450 eV. For Li8 this is practically zero."));
Angle->setText( trUtf8("0") );
Qt::WhatsThis::add(Angle, trUtf8("The average implantation angle."));
SigAngle->setText( trUtf8("15") );
Qt::WhatsThis::add(SigAngle, trUtf8("The spread in implantation angles."));
Seed->setText( trUtf8("78741") );
Qt::WhatsThis::add(Seed, trUtf8("The random number generator seed."));
groupBox15->setTitle( trUtf8("File Names") );
textLabelFN->setText( trUtf8("File names prefix") );
FNPre->setText( trUtf8("SrTiO3") );
Qt::WhatsThis::add(FNPre, trUtf8("The names of the saved files will start with this prefix."));
textLabelPath->setText( trUtf8("Save in subdirectory") );
Path->setText( trUtf8("./") );
Qt::WhatsThis::add(Path, trUtf8("This is the path were the input/output files will be stored."));
Browse->setText( trUtf8("Browse") );
Start->setText( undef );
Qt::ToolTip::add(Start, trUtf8("Start"));
Quit->setText( undef );
Qt::ToolTip::add(Quit, trUtf8("Quit"));
Qt::WhatsThis::add(Quit, trUtf8("Quit the application."));
groupBox1->setTitle( trUtf8("Layers") );
textLabel1_4->setText( trUtf8("Number of Layers") );
Qt::WhatsThis::add(NL, trUtf8("Select the number of the layers of your structure (maximum 7 layers)."));
layerTable->horizontalHeader()->setLabel( 0, trUtf8("Composition") );
layerTable->horizontalHeader()->setLabel( 1, trUtf8("Density [g/cm^3]") );
layerTable->horizontalHeader()->setLabel( 2, trUtf8("Thickness [Å]") );
layerTable->verticalHeader()->setLabel( 0, trUtf8("1") );
tabs->changeTab( LayersTab, trUtf8("Layers") );
AddParam->setTitle( trUtf8("Additional parameters") );
textLabelEF->setText( trUtf8("EF") );
textLabelSHEATH->setText( trUtf8("SHEATH") );
textLabelERC->setText( trUtf8("ERC") );
textLabelRD->setText( trUtf8("RD") );
textLabelIRL->setText( trUtf8("IRL") );
textLabelIPOTR->setText( trUtf8("IPOTR") );
textLabelIPOT->setText( trUtf8("IPOT") );
textLabelKDEE2->setText( trUtf8("KDEE2") );
textLabelKDEE1->setText( trUtf8("KDEE1") );
textLabelKK0R->setText( trUtf8("KK0R") );
textLabelCA->setText( trUtf8("CA") );
textLabelEmpty->setText( undef );
lineEditEmpty->setText( undef );
textLabelKK0->setText( trUtf8("KK0") );
EF->setText( trUtf8("0.5") );
SHEATH->setText( trUtf8("0.0") );
ERC->setText( trUtf8("0.0") );
RD->setText( trUtf8("50.0") );
CA->setText( trUtf8("1.0") );
ESB->setText( trUtf8("0.0") );
textLabelESB->setText( trUtf8("ESB") );
tabs->changeTab( AddParTab, trUtf8("Additional Parameters") );
ScanSeq->setTitle( trUtf8("Scan sequence") );
Qt::WhatsThis::add(ScanSeq, trUtf8("Select to scan a certain parameter in the simulation and produce multiple output files for each value of this parameter."));
ScanMode->setTitle( trUtf8("Scan mode") );
textLabel2->setText( trUtf8("From") );
SFrom->setText( trUtf8("1000") );
textLabel2_2->setText( trUtf8("To") );
STo->setText( trUtf8("28000") );
textLabel2_2_2_2->setText( trUtf8("Step") );
SStep->setText( trUtf8("1000") );
ScanList->setText( trUtf8("1000,6000,10000") );
Qt::WhatsThis::add(ScanList, trUtf8("A list of values to scan (separated by commas)."));
dzListLabel->setText( trUtf8("Corresponding depth increment (optional)") );
LoopRadio->setText( trUtf8("Loop") );
Qt::WhatsThis::add(LoopRadio, trUtf8("The values of the scanned parameter are evenly spaced."));
ListRadio->setText( trUtf8("List of values") );
Qt::WhatsThis::add(ListRadio, trUtf8("The values of the scanned parameter are from a list."));
ScanListdz->setText( undef );
Qt::WhatsThis::add(ScanListdz, trUtf8("A list of values to scan (separated by commas)."));
buttonGroup2->setTitle( trUtf8("Scan Parameter") );
SigERadio->setText( trUtf8("Energy sigma") );
Qt::WhatsThis::add(SigERadio, trUtf8("Scan spread in implantation energy."));
NProjRadio->setText( trUtf8("Projectile number") );
Qt::WhatsThis::add(NProjRadio, trUtf8("Scan the number of implanted projectiles."));
dRadio->setText( trUtf8("Thickness of Layer") );
Qt::WhatsThis::add(dRadio, trUtf8("Scan the thickness of the selected layer."));
Qt::WhatsThis::add(ScandL, trUtf8("This is the layer whose thickness will be scanned"));
SigAngleRadio->setText( trUtf8("Angle sigma") );
Qt::WhatsThis::add(SigAngleRadio, trUtf8("Scan spread in implantation energy."));
AngleRadio->setText( trUtf8("Angle") );
Qt::WhatsThis::add(AngleRadio, trUtf8("Scan implantation energy."));
ERadio->setText( trUtf8("Energy") );
Qt::WhatsThis::add(ERadio, trUtf8("Scan implantation energy."));
tabs->changeTab( ScansTab, trUtf8("Scans (Disbaled)") );
textLabel1_2_2->setText( trUtf8("TrimSP GUI path") );
TrimGUIPath->setText( undef );
GUIPathBrowse->setText( trUtf8("Browse") );
textLabel1_2->setText( trUtf8("TrimSP binary") );
TRIMBIN->setText( undef );
TrimBinBrowse->setText( trUtf8("Browse") );
tabs->changeTab( ConfigTab, trUtf8("Configuration") );
fileNewAction->setText( trUtf8("New") );
fileNewAction->setMenuText( trUtf8("&New") );
fileNewAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+N") ) );
fileOpenAction->setText( trUtf8("Open") );
fileOpenAction->setMenuText( trUtf8("&Open...") );
fileOpenAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+O") ) );
fileSaveAction->setText( trUtf8("Save") );
fileSaveAction->setMenuText( trUtf8("&Save") );
fileSaveAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+S") ) );
fileSaveAsAction->setText( trUtf8("Save As") );
fileSaveAsAction->setMenuText( trUtf8("Save &As...") );
fileSaveAsAction->setAccel( Qt::KeySequence( undef ) );
fileChangeDirAction->setText( trUtf8("Change Folder") );
fileChangeDirAction->setMenuText( trUtf8("&Change Folder") );
fileChangeDirAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+C") ) );
fileQuitAction->setText( trUtf8("Quit") );
fileQuitAction->setMenuText( trUtf8("&Quit") );
fileQuitAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+Q") ) );
editUndoAction->setText( trUtf8("Undo") );
editUndoAction->setMenuText( trUtf8("&Undo") );
editUndoAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+Z") ) );
editRedoAction->setText( trUtf8("Redo") );
editRedoAction->setMenuText( trUtf8("&Redo") );
editRedoAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+Y") ) );
editCutAction->setText( trUtf8("Cut") );
editCutAction->setMenuText( trUtf8("Cu&t") );
editCutAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+X") ) );
editCopyAction->setText( trUtf8("Copy") );
editCopyAction->setMenuText( trUtf8("&Copy") );
editCopyAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+C") ) );
editPasteAction->setText( trUtf8("Paste") );
editPasteAction->setMenuText( trUtf8("&Paste") );
editPasteAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+V") ) );
plotProfilesAction->setText( trUtf8("&Plot Profiles") );
plotProfilesAction->setMenuText( trUtf8("&Plot Profiles") );
plotProfilesAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+P, Ctrl+R") ) );
helpContentsAction->setText( trUtf8("Contents") );
helpContentsAction->setMenuText( trUtf8("&Contents...") );
helpContentsAction->setAccel( Qt::KeySequence( undef ) );
helpAboutAction->setText( trUtf8("About") );
helpAboutAction->setMenuText( trUtf8("&About") );
helpAboutAction->setAccel( Qt::KeySequence( undef ) );
plotFractionsAction->setText( trUtf8("Plot Fractions") );
plotFractionsAction->setMenuText( trUtf8("Plot Fractions") );
plotFractionsAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+P, Ctrl+F") ) );
fileStartAction->setText( trUtf8("&Start") );
fileStartAction->setMenuText( trUtf8("Start") );
fileStartAction->setAccel( Qt::KeySequence( trUtf8("Alt+S") ) );
fileConfigureAction->setText( trUtf8("Configure") );
fileConfigureAction->setMenuText( trUtf8("Configure") );
MenuBar->findItem( 1 )->setText( trUtf8("&File") );
MenuBar->findItem( 2 )->setText( trUtf8("&Plot") );
MenuBar->findItem( 3 )->setText( trUtf8("&Help") );
}
sub ToggleScanSingle
{
# Toggle between scan/single run mode
# First collect some information
my %All=();
$All{"ScanSeq"}=ScanSeq->isChecked();
$All{"ERadio"}=ERadio->isChecked();
$All{"SigERadio"}=SigERadio->isChecked();
$All{"AngleRadio"}=AngleRadio->isChecked();
$All{"SigAngleRadio"}=SigAngleRadio->isChecked();
$All{"NProjRadio"}=NProjRadio->isChecked();
$All{"dRadio"}=dRadio->isChecked();
$All{"ScandL"}=ScandL->text();
$All{"ListRadio"}=ListRadio->isChecked();
$All{"LoopRadio"}=LoopRadio->isChecked();
$All{"NL"}=NL->text();
# Enable everything
E->setDisabled(0);
# E->setText("2000");
SigE->setDisabled(0);
# SigE->setText("450");
Angle->setDisabled(0);
# Angle->setText("0");
SigAngle->setDisabled(0);
# SigAngle->setText("15");
NProj->setDisabled(0);
# NProj->setText("10000");
for (my $i=1;$i<=$All{"NL"};$i++) {
my $LayerAttrib = layerTable->item($i-1,2);
$LayerAttrib->setEnabled(1);
}
# Enable depth increment for Energy scan only
if ($All{"ERadio"} & $All{"ListRadio"}) {
dzListLabel->setHidden(0);
ScanListdz->setHidden(0);
dzListLabel->setDisabled(0);
ScanListdz->setDisabled(0);
dzListLabel->setText("Corresponding depth increment (optional)");
} elsif ($All{"SigAngleRadio"} & $All{"ListRadio"}) {
dzListLabel->setHidden(0);
ScanListdz->setHidden(0);
dzListLabel->setDisabled(0);
ScanListdz->setDisabled(0);
dzListLabel->setText("Corresponding energy");
} else {
dzListLabel->setHidden(1);
ScanListdz->setHidden(1);
dzListLabel->setDisabled(1);
ScanListdz->setDisabled(1);
}
if ($All{"ScanSeq"}==1) {
# But if we are in scan mode disable the appropriate box
# Start by enabling everything
E->setDisabled(0);
SigE->setDisabled(0);
Angle->setDisabled(0);
SigAngle->setDisabled(0);
NProj->setDisabled(0);
layerTable->setColumnReadOnly(2,0);
# then disable one
if ($All{"ERadio"}) {
E->setDisabled(1);
} elsif ($All{"SigERadio"}) {
SigE->setDisabled(1);
} elsif ($All{"AngleRadio"}) {
Angle->setDisabled(1);
} elsif ($All{"SigAngleRadio"}) {
SigAngle->setDisabled(1);
} elsif ($All{"NProjRadio"}) {
NProj->setDisabled(1);
} elsif($All{"dRadio"}) {
my $LayerAttrib = layerTable->item($All{"ScandL"}-1,2);
$LayerAttrib->setEnabled(0);
}
# and change title of tab to say enabled
tabs->changeTab( ScansTab, trUtf8("Scans (Enabled)") );
} else {
# Otherwise the title of the tab says disabled
tabs->changeTab( ScansTab, trUtf8("Scans (Disabled)") );
}
}
sub PrepLayers
{
my %All=();
$All{"NL"}=NL->text();
# Prepare enough Rows in table for layers
my $OldNL=layerTable->numRows();
if ($OldNL<=$All{"NL"}) {
layerTable->setNumRows($All{"NL"});
} else {
for (my $i=$All{"NL"};$i<=$OldNL-1;$i++) {
removeRowFromTable($i);
}
}
}
sub removeRowFromTable
{
# This function is to remove rows from table
# I cannot use the standard removeRow() due to a bug in perl-qt3
# This is a good and simple workaround.
# Takes as an input the row number to be removed
my ($deadRow) = @_;
# Loop over columns and take items of the row to remove
for my $col (0..layerTable->numCols()-1) {
my $dummy=layerTable->item($deadRow, $col);
# In the items is not defined the row can be removed by simply
# reducing the number of rows in table
if ($dummy ne "") {
layerTable->takeItem(layerTable->item($deadRow, $col));
for my $row ($deadRow..layerTable->numRows()-2) {
my $item = layerTable->item($row+1, $col);
layerTable->takeItem($item);
layerTable->setItem($row, $col, $item);
}
}
}
layerTable->setNumRows(layerTable->numRows()-1);
}
sub ProjSmartDefaults
{
my %All=();
# Get typeof projectile
$All{"ProjType"}=ProjType->currentText();
if ($All{"ProjType"} eq "Muon") {
# For a muon set Sigma E=450 eV and Sigman angle=15 degrees by default
SigE->setText("450");
SigAngle->setText("15");
} elsif ( $All{"ProjType"} eq "Li8") {
# For Li8 set Sigma E=0 eV and Sigam angle=0 degrees by default
SigE->setText("0");
SigAngle->setText("0");
}
}
sub OpenHelpWindow
{
my $HelpText="
This is a GUI that uses the Trim.SP simulation binary to calculate the
implantation profiles of implanted projectiles in a multilayer thin film
structure.
Usage:
Initially define your multilayer structure in the 'Layers' tab. This
can be formed of a maximum of 7 layers. Each layer is defined by giving
its chemical formula, its density in units of g/cm^3, and its thickness
in Ångström.
Next, choose the type of projectile to be implanted in the structure from
the drop-down menu. Set the 'Number of projectiles' to be implanted, were
a higher number will give better statistics. Finally define the rest of the pro-
jectile parameters such as implantation energy, energy spread, etc.
In the 'File names prefix' give a string which will be used to construct the
input/output file names of the simulation. These files will be collected and
saved in the subdirectory provided in 'Save in subdirectory' box.
The 'Additional Parameters' tab allows you to change additional parameters
in the simulation. Change these only if you know what you are doing, and have
read the original documentation of the Trim.SP simulation.
The 'Scans' tabs provides the ability to change the value of a certain
parameter in the simulation, such as implantation energy, spread in energy,
number of implanted projectiles, and the thickness of one layer. The values of
this parameter can be changed by a regualr step size ('Loop' checkbox and
parameters), or following a set of values ('List of values' checkbox and the
comma separated values). In the second case, in addition to the scanned
parameter, the user may be given an option to change another parameter. For
example, when scanning through a list of energies, the user may give a
corresponding depth increment for each energy value.
Copyright 2009-2011 (C) by Zaher Salman and the LEM Group
Last modified 23 Sep. 2011
";
my $HelpWindow = Qt::MessageBox::information( this, "TrimSP GUI Help Window",$HelpText);
}
sub CollectValues
{
# This subroutine returns a hash with all the values collected from the GUI.
my %All=();
$All{"NL"}=NL->text();
# Collect layers parameters
for (my $i=1;$i<=$All{"NL"};$i++) {
my $LComp = "L".$i."Comp";
my $Lrho="L".$i."rho";
my $Ld="L".$i."d";
$All{"$LComp"}=layerTable->text($i-1,0);
$All{"$Lrho"}=layerTable->text($i-1,1);
$All{"$Ld"}=layerTable->text($i-1,2);
}
# Collect projectile parameters
$All{"ProjType"}=ProjType->currentText();
$All{"NProj"}=NProj->text();
if ($All{"NProj"}==0) {
$All{"NProj"}=10000;
NProj->setText("10000");
}
$All{"z0"}=z0->text();
$All{"dz"}=dz->text();
$All{"E"}=E->text();
$All{"SigE"}=SigE->text();
$All{"Angle"}=Angle->text();
$All{"SigAngle"}=SigAngle->text();
$All{"Seed"}=Seed->text();
# Format projectile parameters
$All{"NProj"}=sprintf("%8d",$All{"NProj"});
$All{"z0"}=sprintf("%6.2f",$All{"z0"});
$All{"dz"}=sprintf("%6.2f",$All{"dz"});
$All{"E"}=sprintf("%11.2f",$All{"E"});
$All{"SigE"}=sprintf("%8.2f",$All{"SigE"});
$All{"Angle"}=sprintf("%8.2f",$All{"Angle"});
$All{"SigAngle"}=sprintf("%8.2f",$All{"SigAngle"});
$All{"Seed"}=sprintf("%6.0f.",$All{"Seed"});
# Collect the additional parameters
$All{"EF"}=EF->text();
$All{"ESB"}=ESB->text();
$All{"SHEATH"}=SHEATH->text();
$All{"ERC"}=ERC->text();
$All{"RD"}=RD->text();
$All{"CA"}=CA->text();
$All{"KK0"}=KK0->text();
$All{"KK0R"}=KK0R->text();
$All{"KDEE1"}=KDEE1->text();
$All{"KDEE2"}=KDEE2->text();
$All{"IPOT"}=IPOT->text();
$All{"IPOTR"}=IPOTR->text();
$All{"IRL"}=IRL->text();
# format additional parameters
$All{"EF"}=sprintf("%8.2f",$All{"EF"});
$All{"ESB"}=sprintf("%8.2f",$All{"ESB"});
$All{"SHEATH"}=sprintf("%8.2f",$All{"SHEATH"});
$All{"ERC"}=sprintf("%8.2f",$All{"ERC"});
$All{"RD"}=sprintf("%5.0f.",$All{"RD"});
$All{"CA"}=sprintf("%6.2f",$All{"CA"});
$All{"KK0"}=sprintf("%3d",$All{"KK0"});
$All{"KK0R"}=sprintf("%3d",$All{"KK0R"});
$All{"KDEE1"}=sprintf("%3d",$All{"KDEE1"});
$All{"KDEE2"}=sprintf("%3d",$All{"KDEE2"});
$All{"IPOT"}=sprintf("%3d",$All{"IPOT"});
$All{"IPOTR"}=sprintf("%3d",$All{"IPOTR"});
$All{"IRL"}=sprintf("%2d",$All{"IRL"});
# Filenames etc. The filename should not have white spaces
$All{"FNPre"}=FNPre->text();
$All{"FNPre"}=~ s/\s+//g;
$All{"Path"}=Path->text();
# Scan parameters only if selected
$All{"ScanSeq"}=ScanSeq->isChecked();
# if ($All{"ScanSeq"}) {
$All{"ERadio"}=ERadio->isChecked();
$All{"SigERadio"}=SigERadio->isChecked();
$All{"AngleRadio"}=AngleRadio->isChecked();
$All{"SigAngleRadio"}=SigAngleRadio->isChecked();
$All{"NProjRadio"}=NProjRadio->isChecked();
$All{"dRadio"}=dRadio->isChecked();
$All{"ScandL"}=ScandL->text();
# Remove any white spaces
$All{"ScandL"} =~ s/\s+//g;
$All{"ListRadio"}=ListRadio->isChecked();
$All{"LoopRadio"}=LoopRadio->isChecked();
$All{"ScanList"}=ScanList->text();
# Remove any white spaces
$All{"ScanList"} =~ s/\s+//g;
$All{"ScanListdz"}=ScanListdz->text();
# Remove any white spaces
$All{"ScanListdz"} =~ s/\s+//g;
# These should be numeric
$All{"SFrom"}=1*SFrom->text();
$All{"STo"}=1*STo->text();
$All{"SStep"}=1*SStep->text();
# }
# Return values to caller
return %All;
}
sub CreateInpFile
{
use Chem;
# The proper way I think is not to have scan sequences implimented here
# but rather call this multiple times to generate the scan
# To resolve this, the function CreateInpFile will expect a unique thickness for each layer,
# one energy value, one energy sigma and one projectile number.
# These will be stored in keys L1/2/3/4/5/6/7d, E, SigE and NProj, respectively.
# Chemical formulas will be parsed on the fly for each layer. However, we will check if
# all the layers have inputs for composition, thickness and density. If not fail and crash :)
# Values of Z,A as well as other needed parameters are obtained from Chem.pm.
# This is the form of the begining of the input file:
my $TemplateFile=
" ProjZ ProjAM E SigE Angle SigAngle EF ESB SHEATH ERC
NProj Seed Seed Seed z0 RD dz CA KK0 KK0R KDEE1 KDEE2 IPOT IPOTR IRL";
# Then comes the number of layers (new format) for example 4 layers:
# N_Layers=4
$TemplateFile=$TemplateFile."\n"."N_Layers=NL"."\n";
# Then loop over the layers and for each give the following structure
my $TemplateLayer=
"L1d L1rho L1CK
L1ELZ1 L1ELZ2 L1ELZ3 L1ELZ4 L1ELZ5
L1ELW1 L1ELW2 L1ELW3 L1ELW4 L1ELW5
L1ELC1 L1ELC2 L1ELC3 L1ELC4 L1ELC5
L1ELE1 L1ELE2 L1ELE3 L1ELE4 L1ELE5
L10301 L10302 L10303 L10304 L10305
0.0000 0.0000 0.0000 0.0000 0.0000
L1ELST11 L1ELST21 L1ELST31 L1ELST41 L1ELST51
L1ELST12 L1ELST22 L1ELST32 L1ELST42 L1ELST52
L1ELST13 L1ELST23 L1ELST33 L1ELST43 L1ELST53
L1ELST14 L1ELST24 L1ELST34 L1ELST44 L1ELST54
L1ELST15 L1ELST25 L1ELST35 L1ELST45 L1ELST55
";
# Get values from form
my %All = CollectValues();
my $ProjType=$All{"ProjType"};
$All{"ProjZ"}=sprintf("%6.2f",Chem::Zof($ProjType));
$All{"ProjAM"}=sprintf("%6.2f",Chem::Massof($ProjType));
my $Check=0;
my $Layer="";
my $Li="";
# Loop over layers an create appropriate values
for (my $i=1;$i<=$All{"NL"};$i++){
$Li = "L".$i;
$Layer = $TemplateLayer;
$Layer =~ s/L1/$Li/g;
$TemplateFile=$TemplateFile.$Layer;
$Check=0;
# Composition of layers
my $LComp="L".$i."Comp";
my $Comp = layerTable->text($i-1,0);
$All{$LComp} = $Comp;
my %LElComp=Chem::parse_formula($Comp);
if ($Comp eq "") {$Check++;}
# Densities of layers
my $Lrho="L".$i."rho";
my $rho = layerTable->text($i-1,1);
$All{$Lrho}=sprintf("%6.2f",$rho);
if ($rho eq "") {$Check++;}
# Thickness of layers
my $Ld ="L".$i."d";
my $d = layerTable->text($i-1,2);
$All{$Ld}=sprintf("%8.2f",$d);
if ($d eq "") {$Check++;}
# Sanity check, is the layer supposed to have value? are they all there?
if ($Check!=0) {
my $ErrMsg="Error: Layer $i is empty. Expecting it to be defined!\n";
print STDERR $ErrMsg;
my $HelpWindow = Qt::MessageBox::information( this, "Error!",$ErrMsg);
return "ERROR";
}
my $tmp = "L".$i."CK";
$All{$tmp}=sprintf("%6.2f",1.0);
my $Sum = 0;
foreach (keys %LElComp) {
$Sum=$Sum+$LElComp{$_};
}
if ($Sum==0) {$Sum=1;}
my @Els = keys %LElComp;
for (my $NEl=1;$NEl<=5;$NEl++) {
my $El = $Els[$NEl-1];
my $LEkey = "L".$i."EL";
my $ElZ = Chem::Zof($El);
my $ElW = Chem::Massof($El);
my $ElC = $LElComp{$El}/$Sum;
my $ElE = Chem::Elastof($El);
my $El030 = 30;
if ($El eq "") { $El030 = 0.0;}
$All{$LEkey."Z".$NEl}=sprintf("%8.4f",$ElZ);
$All{$LEkey."W".$NEl}=sprintf("%8.4f",$ElW);
$All{$LEkey."C".$NEl}=sprintf("%8.4f",$ElC);
$All{$LEkey."E".$NEl}=sprintf("%8.4f",$ElE);
$All{"L".$i."030".$NEl}=sprintf("%8.4f",$El030);
my $ElST = Chem::Stopicru($El);
my @ElSTs = split (/,/,$ElST);
my $j=1;
foreach (@ElSTs) {
$LEkey = "L".$i."ELST".$NEl.$j;
$j++;
$All{$LEkey}=sprintf("%11.6f",$_);
}
}
}
foreach my $key (keys %All) {
if ($All{$key} ne ""){
$TemplateFile =~ s/$key/$All{$key}/;
# Seed repeats three times
if ($key eq "Seed") { $TemplateFile =~ s/$key/$All{$key}/g;}
}
}
return $TemplateFile;
}
sub StartSequenceOne
{
my %All = CollectValues();
my @SValues=();
my @SdzValues=();
my $cmd="";
if (!$ENV{'TRIMBIN'}) {
# If trim.sp binary is not defined give warning and return
my $Warning = Qt::MessageBox::information( this, "Warning",
"Warning:\n TrimSP binary is not found.\n Define using the Configuration tab.");
return(0);
}
# Cleanup from old files
if (-e "ausgabe1.inp") {
system("rm -f ausgabe*");
}
my $Progress=0;
if ($All{"ScanSeq"}) {
# For a scan
$All{"ERadio"}=ERadio->isChecked();
$All{"SigERadio"}=SigERadio->isChecked();
$All{"AngleRadio"}=AngleRadio->isChecked();
$All{"SigAngleRadio"}=SigAngleRadio->isChecked();
$All{"NProjRadio"}=NProjRadio->isChecked();
$All{"dRadio"}=dRadio->isChecked();
$All{"ScandL"}=ScandL->text();
# Remove any white spaces
$All{"ScandL"} =~ s/\s+//g;
$All{"ListRadio"}=ListRadio->isChecked();
$All{"LoopRadio"}=LoopRadio->isChecked();
$All{"ScanList"}=ScanList->text();
# Remove any white spaces
$All{"ScanList"} =~ s/\s+//g;
$All{"ScanListdz"}=ScanListdz->text();
# Remove any white spaces
$All{"ScanListdz"} =~ s/\s+//g;
# These should be numeric
$All{"SFrom"}=1*SFrom->text();
$All{"STo"}=1*STo->text();
$All{"SStep"}=1*SStep->text();
if ($All{"ListRadio"}) {
@SValues=split(/,/,$All{"ScanList"});
@SdzValues=split(/,/,$All{"ScanListdz"});
if ($#SValues == $#SdzValues) {$All{"SdzFlag"}=1;}
} elsif ($All{"LoopRadio"}) {
for (my $Val=$All{"SFrom"};$Val<=$All{"STo"};$Val=$Val+$All{"SStep"}) {
@SValues=(@SValues,$Val);
}
}
my $ScanName = "";
if ($All{"ERadio"}) {
$ScanName = "E";
} elsif ($All{"SigERadio"}) {
$ScanName = "SigE";
} elsif ($All{"AngleRadio"}) {
$ScanName = "Angle";
} elsif ($All{"SigAngleRadio"}) {
$ScanName = "SigAngle";
} elsif ($All{"NProjRadio"}) {
$ScanName = "NProj";
} elsif ($All{"dRadio"}) {
$ScanName = "Ld".$All{"ScandL"};
}
my $ScanAttrib = child($ScanName);
my $iScan=0;
foreach (@SValues) {
if ($All{"dRadio"}) {
layerTable->setText($All{"ScandL"}-1,2,$_);
} else {
$ScanAttrib->setText($_);
}
if ( $All{"SdzFlag"} == 1) {
if ($All{"ERadio"}==1) {
dz->setText($SdzValues[$iScan]);
} elsif ($All{"SigAngleRadio"}==1) {
E->setText($SdzValues[$iScan]);
}
}
my $eingabe1=CreateInpFile();
if ($eingabe1 eq "ERROR") {return 0;}
my $FILENAME=$All{"FNPre"}."_".$ScanName.$_;
open (INPF,q{>}, "$FILENAME.inp" );
print INPF $eingabe1;
close(INPF);
# Use windoz version
# system("cp $FILENAME.inp eingabe1.inp; wine TrimSP7L.exe");
# Use Linux version
$Progress=$Progress+90/$#SValues;
Progress->setProgress($Progress);
Progress->update();
# qApp->processEvents();
$cmd = "cp $FILENAME.inp eingabe1.inp; ".$ENV{'TRIMBIN'};
system($cmd);
foreach ("err","out","rge") {
system("mv -f ausgabe1.$_ $FILENAME.$_");
}
# Not needed if work path is changed
# $cmd="mv -f $FILENAME.* ".$All{"Path"};
# system($cmd);
$iScan++;
}
} else {
# For a single run
my $eingabe1=CreateInpFile();
if ($eingabe1 eq "ERROR") {return 0;}
my $FILENAME=$All{"FNPre"};
open (INPF,q{>}, "$FILENAME.inp" );
print INPF $eingabe1;
close(INPF);
$Progress=20;
Progress->setProgress($Progress);
# Use windoz version
# system("cp $FILENAME.inp eingabe1.inp; wine TrimSP7L.exe");
# Use Linux version
$cmd = "cp $FILENAME.inp eingabe1.inp; ".$ENV{'TRIMBIN'};
system($cmd);
foreach ("err","out","rge") {
system("mv -f ausgabe1.$_ $FILENAME.$_");
}
$Progress=90;
Progress->setProgress($Progress);
# If we change work directory this is not needed
# $cmd="mv -f $FILENAME.* ".$All{"Path"};
# system($cmd);
}
# Move the fort.33 file into the subdirectory and change its name
$cmd="rm -f eingabe1.inp; mv -f fort.33 ".$All{"Path"}."/".$All{"FNPre"}."_Seq_Results.dat";
system($cmd);
$Progress=100;
Progress->setProgress($Progress);
return 1;
}
sub DirectoryBrowse
{
my $FileBrowser = Qt::FileDialog::getExistingDirectory("./",this,"get existing directory","Choose a directory",1);
if ($FileBrowser eq "") {$FileBrowser="./";}
Path->setText($FileBrowser);
# Create a subdirectory where all input/output files are saved
my $cmd="";
if (-d $FileBrowser) {
# Directory exists, do nothing
} else {
$cmd="mkdir $FileBrowser";
system($cmd);
}
# Change work directory accordingly
chdir ("$FileBrowser");
# Return a string with the directory name
return $FileBrowser ;
}
sub ConfirmQuit
{
my $Ans = Qt::MessageBox::question( this, "Quit?","Are you sure you want to quit?","&Yes","&No","",0,1);
if ($Ans==0) {
# Then quit
Qt::Application::exit( 0 );
}
# Otherwize go back
# print STDOUT $ENV{'TRIMBIN'}."\n";
}
sub PlotProfiles
{
my $files_ref=Qt::FileDialog::getOpenFileNames(
"RGE Files (*.rge)",
"./",
this,
"Select RGE files dialog",
"Choose RGE file to plot");
my @files_tmp = @$files_ref;
# Do "natural" sorting on the file name list
# This will produce (hopefully) a plot with largest needed depth scale
my @files = grep {s/(^|\D)0+(\d)/$1$2/g,1} sort grep {s/(\d+)/sprintf"%06.6d",$1/ge,1} @files_tmp;
my $filenames=join(",",@files);
if ($filenames ne "" ) {
# my $Warning = Qt::MessageBox::information( this, "Big Fat Warning",
# "Warning:\nClose the plot using the menu FILE -> Quit ROOT\nDO NOT CLOSE USING X.");
my $TrimPath = $ENV{'PERLLIB'};
# Now that we have the file list send it to root macro for plotting.
my $cmd='root -n -l "'.$TrimPath.'/plotRge.C(\"'.$filenames.'\")"&';
# my $pid = open(FTO,"$cmd");
# my $pid = open(FTO,"$cmd 2>&1 |");
# print "PID=$pid\n";
# while (<FTO>) {
# print "$_";
# }
# close(FTO);
my $pid=system($cmd);
}
}
sub PlotFraction
{
my $file=Qt::FileDialog::getOpenFileName(
".",
"Implantation sequence file (*.dat)",
this,
"open sequence data file dialog",
"Choose a sequence data file");
if ($file ne "" ) {
my $TrimPath = $ENV{'PERLLIB'};
# Now that we have the file name send it to root macro for plotting.
my $cmd='root -n -l "'.$TrimPath.'/plotFrc.C(\"'.$file.'\")"&';
my $pid=system($cmd);
}
}
sub OpenAboutWindow
{
my $HelpText="TrimSPGUI is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
TrimSPGUI is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with TrimSPGUI. If not, see <http://www.gnu.org/licenses/>.
Copyright 2009 by Zaher Salman and the LEM Group.
<zaher.salman\@psi.ch>
";
my $HelpWindow = Qt::MessageBox::about( this, "About TrimSP GUI",$HelpText);
}
sub OpenFile
{
# Types of different input
my %Types = ();
# 0 - text (this is default), 1 - spin box, 2 - radio button, 3 - combo box
$Types{"NL"}=1 ;
$Types{"ProjType"}= 3;
$Types{"ScanSeq"}= 2;
$Types{"ERadio"}= 2;
$Types{"SigERadio"}= 2;
$Types{"AngleRadio"}= 2;
$Types{"SigAngleRadio"}= 2;
$Types{"NProjRadio"}= 2;
$Types{"dRadio"}= 2;
$Types{"ScandL"}= 1;
$Types{"ListRadio"}= 2;
$Types{"ScanListdz"}= 0;
$Types{"LoopRadio"}= 2;
my $file=Qt::FileDialog::getOpenFileName(
".",
"Initialization file (.* *.*)",
this,
"open file dialog",
"Choose an initialization file");
# If the user gave a valid filename try to read it
if ($file ne "") {
open (INF,q{<},"$file" );
my @lines = <INF>;
close(INF);
my $Attrib="";
foreach my $line (@lines) {
# Remove white spaces
$line =~ s/\s+//g;
my @InitPar = split (/=/,$line);
# Check it is not empty or title line
if ($InitPar[0] ne "" && $InitPar[1] ne "") {
# First take care of the layers, with patters L?Comp, L?rho, L?d
my $CRow=$InitPar[0];
if ($InitPar[0] =~ m/L.*Comp$/ ) {
$CRow =~ s/\D//g;
layerTable->setText($CRow-1,0,$InitPar[1]);
} elsif ($InitPar[0] =~ m/L.*rho$/ ) {
$CRow =~ s/\D//g;
layerTable->setText($CRow-1,1,$InitPar[1]);
} elsif ($InitPar[0] =~ m/L.*d$/ ) {
$CRow =~ s/\D//g;
layerTable->setText($CRow-1,2,$InitPar[1]);
} else {
$Attrib = child($InitPar[0]);
if ($Types{$InitPar[0]} == 1) {
$Attrib->setValue($InitPar[1]);
# Create enough rows in layerTable
if ($InitPar[0] eq "NL") {
layerTable->setNumRows($InitPar[1]);
}
} elsif ($Types{$InitPar[0]} == 2 ) {
if($InitPar[1] == 1) {
$Attrib->setChecked(1);
} else {
$Attrib->setChecked(0);
}
} elsif ($Types{$InitPar[0]} == 3) {
$Attrib-> setCurrentText($InitPar[1]);
} else {
$Attrib->setText($InitPar[1]);
}
}
}
}
}
}
sub SaveFile
{
my %All = CollectValues();
my $InitFile="
[Layers]
NL=$All{'NL'}";
for (my $i=1;$i<=$All{"NL"};$i++){
my $Li="L".$i;
my $LComp=$Li."Comp";
my $Lrho=$Li."rho";
my $Ld=$Li."d";
$InitFile=$InitFile."
$LComp=$All{$LComp}
$Lrho=$All{$Lrho}
$Ld=$All{$Ld}
";
}
$InitFile=$InitFile."
[ProjectileParameters]
ProjType=$All{'ProjType'}
NProj=$All{'NProj'}
z0=$All{'z0'}
dz=$All{'dz'}
E=$All{'E'}
SigE=$All{'SigE'}
Angle=$All{'Angle'}
SigAngle=$All{'SigAngle'}
Seed=$All{'Seed'}
[Files]
FNPre=$All{'FNPre'}
Path=$All{'Path'}
[ScanSequence]
ScanSeq=$All{'ScanSeq'}
ERadio=$All{'ERadio'}
SigERadio=$All{'SigERadio'}
AngleRadio=$All{'AngleRadio'}
SigAngleRadio=$All{'SigAngleRadio'}
NProjRadio=$All{'NProjRadio'}
dRadio=$All{'dRadio'}
ListRadio=$All{'ListRadio'}
ScanList=$All{'ScanList'}
ScanListdz=$All{'ScanListdz'}
LoopRadio=$All{'LoopRadio'}
SFrom=$All{'SFrom'}
STo=$All{'STo'}
SStep=$All{'SStep'}
";
# Save to default file name "TriumSP.cfg"
my $file = "TrimSP.cfg";
open (OUTF,q{>},"$file" );
print OUTF (" $InitFile");
close(OUTF);
}
sub SaveFileAs
{
my %All = CollectValues();
my $InitFile="
[Layers]
NL=$All{'NL'}";
for (my $i=1;$i<=$All{"NL"};$i++){
my $Li="L".$i;
my $LComp=$Li."Comp";
my $Lrho=$Li."rho";
my $Ld=$Li."d";
$InitFile=$InitFile."
$LComp=$All{$LComp}
$Lrho=$All{$Lrho}
$Ld=$All{$Ld}
";
}
$InitFile=$InitFile."
[ProjectileParameters]
ProjType=$All{'ProjType'}
NProj=$All{'NProj'}
z0=$All{'z0'}
dz=$All{'dz'}
E=$All{'E'}
SigE=$All{'SigE'}
Angle=$All{'Angle'}
SigAngle=$All{'SigAngle'}
Seed=$All{'Seed'}
[Files]
FNPre=$All{'FNPre'}
Path=$All{'Path'}
[ScanSequence]
ScanSeq=$All{'ScanSeq'}
ERadio=$All{'ERadio'}
SigERadio=$All{'SigERadio'}
AngleRadio=$All{'AngleRadio'}
SigAngleRadio=$All{'SigAngleRadio'}
NProjRadio=$All{'NProjRadio'}
dRadio=$All{'dRadio'}
ListRadio=$All{'ListRadio'}
ScanList=$All{'ScanList'}
ScanListdz=$All{'ScanListdz'}
LoopRadio=$All{'LoopRadio'}
SFrom=$All{'SFrom'}
STo=$All{'STo'}
SStep=$All{'SStep'}
";
my $file=Qt::FileDialog::getSaveFileName(
"TrimSP.cfg",
"TrimSP GUI Initialization file (*.cfg)",
this,
"save file dialog",
"Choose a filename to save under");
# If the user gave a filename the copy to it
if ($file ne "") {
open (OUTF,q{>},"$file" );
print OUTF (" $InitFile");
close(OUTF);
}
}
sub GUIPath
{
# This subroutine is used to define diffirent variables
my $FileBrowser = Qt::FileDialog::getExistingDirectory("./",this,"get existing directory","Choose the directory where the TrimSP GUI is.",1);
# If nothing is returned keep as is
if ($FileBrowser eq "") {
$FileBrowser=$ENV{'PERLLIB'};
} else {
$ENV{'PERLLIB'}=$FileBrowser;
}
TrimGUIPath->setText($FileBrowser);
# Return a string with the directory name
return $FileBrowser ;
}
sub TrimBin
{
my $file=Qt::FileDialog::getOpenFileName(
"$ENV{'TRIMBIN'}",
"Trim.SP binary (.* *.* *)",
this,
"open file dialog",
"Select the Trim.SP binary file");
# If the user gave a valid filename try to read it
if ($file eq "") {
$file=$ENV{'TRIMBIN'};
} else {
$ENV{'TRIMBIN'}=$file;
}
TRIMBIN->setText($file);
return $file;
}
sub findDensity
{
use Chem;
# Get sender name to know which layer
my $sender = sender()->name();
my $CCol=sender()->currentColumn();
if ($CCol==0) {
# The composition changed, find density
my $CRow=sender()->currentRow();
my $Compound=sender()->text($CRow,$CCol);
# See if you have the density
my $Density=Chem::Densities($Compound);
# If the density is in the database submit it
sender()->setText($CRow,1,$Density);
}
}
1;
package main;
use Qt;
use TrimSPGUI;
my $a = Qt::Application(\@ARGV);
my $w = TrimSPGUI;
$a->setMainWidget($w);
$w->show;
exit $a->exec;