# 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 () { # 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 . Copyright 2009 by Zaher Salman and the LEM Group. "; 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 = ; 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;