From 76908ad0ed82f19207ce8ca1000827939428644a Mon Sep 17 00:00:00 2001 From: Zaher Salman Date: Wed, 18 Nov 2009 13:05:38 +0000 Subject: [PATCH] Implement ability to change depth increment in an energy scan (not for E loop). --- trimsp/TrimSPGUI/TrimSPGUI.pl | 480 ++++++++++++++++++++++++---- trimsp/TrimSPGUI/TrimSPGUItabs.ui | 341 ++++++++++++-------- trimsp/TrimSPGUI/TrimSPGUItabs.ui.h | 44 ++- 3 files changed, 662 insertions(+), 203 deletions(-) diff --git a/trimsp/TrimSPGUI/TrimSPGUI.pl b/trimsp/TrimSPGUI/TrimSPGUI.pl index e723edc..7f3e04f 100644 --- a/trimsp/TrimSPGUI/TrimSPGUI.pl +++ b/trimsp/TrimSPGUI/TrimSPGUI.pl @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'TrimSPGUItabs.ui' # -# Created: Mon Sep 14 16:58:39 2009 +# Created: Wed Nov 18 14:00:11 2009 # by: The PerlQt User Interface Compiler (puic) # # WARNING! All changes made in this file will be lost! @@ -121,6 +121,12 @@ use Qt::attributes qw( textLabelESB ScansTab ScanSeq + buttonGroup2 + SigERadio + NProjRadio + dRadio + ScandL + ERadio ScanMode textLabel2 SFrom @@ -128,15 +134,11 @@ use Qt::attributes qw( STo textLabel2_2_2_2 SStep + ScanList + dzListLabel LoopRadio ListRadio - ScanList - buttonGroup2 - ERadio - SigERadio - NProjRadio - dRadio - ScandL + ScanListdz TrimSPGUIHelp ); @@ -776,6 +778,309 @@ our $image0_data = pack 'C*', 0x19, 0xa9, 0xf2, 0xfe, 0xf9, 0x14, 0xa9, 0x9c, 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, + 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 $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, + 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 $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, 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; + sub NEW { @@ -783,6 +1088,12 @@ sub NEW $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"); if ( name() eq "unnamed" ) { @@ -1054,14 +1365,17 @@ sub NEW Help = Qt::PushButton($LayoutWidget_2, "Help"); Help->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, Help->sizePolicy()->hasHeightForWidth()) ); + Help->setPixmap( $image1 ); $layout12->addWidget(Help); Start = Qt::PushButton($LayoutWidget_2, "Start"); Start->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, Start->sizePolicy()->hasHeightForWidth()) ); + Start->setPixmap( $image2 ); $layout12->addWidget(Start); Quit = Qt::PushButton($LayoutWidget_2, "Quit"); Quit->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, Quit->sizePolicy()->hasHeightForWidth()) ); + Quit->setPixmap( $image3 ); $layout12->addWidget(Quit); $layout13->addLayout($layout12); tabs->insertTab( LayersTab, "" ); @@ -1186,19 +1500,41 @@ sub NEW ScansTab = Qt::Widget(tabs, "ScansTab"); ScanSeq = Qt::GroupBox(ScansTab, "ScanSeq"); - ScanSeq->setGeometry( Qt::Rect(5, 0, 495, 165) ); + ScanSeq->setGeometry( Qt::Rect(5, 0, 550, 250) ); ScanSeq->setCheckable( 1 ); ScanSeq->setChecked( 0 ); + 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, 72, 211, 24) ); + + dRadio = Qt::RadioButton(buttonGroup2, "dRadio"); + dRadio->setGeometry( Qt::Rect(5, 99, 153, 24) ); + + ScandL = Qt::SpinBox(buttonGroup2, "ScandL"); + ScandL->setGeometry( Qt::Rect(158, 98, 56, 26) ); + ScandL->setMaxValue( int(7) ); + ScandL->setMinValue( int(1) ); + + ERadio = Qt::RadioButton(buttonGroup2, "ERadio"); + ERadio->setGeometry( Qt::Rect(4, 22, 211, 24) ); + ERadio->setChecked( 1 ); + ScanMode = Qt::ButtonGroup(ScanSeq, "ScanMode"); - ScanMode->setGeometry( Qt::Rect(230, 20, 265, 140) ); + 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, 103, 240, 23) ); + $LayoutWidget_5->setGeometry( Qt::Rect(11, 178, 290, 27) ); my $layout3 = Qt::HBoxLayout($LayoutWidget_5, 0, 0, '$layout3'); textLabel2 = Qt::Label($LayoutWidget_5, "textLabel2"); @@ -1222,37 +1558,22 @@ sub NEW 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, 75, 240, 22) ); + LoopRadio->setGeometry( Qt::Rect(10, 150, 240, 22) ); LoopRadio->setChecked( 1 ); ListRadio = Qt::RadioButton(ScanMode, "ListRadio"); ListRadio->setGeometry( Qt::Rect(10, 20, 240, 22) ); - ScanList = Qt::LineEdit(ScanMode, "ScanList"); - ScanList->setGeometry( Qt::Rect(10, 45, 240, 23) ); - - buttonGroup2 = Qt::ButtonGroup(ScanSeq, "buttonGroup2"); - buttonGroup2->setGeometry( Qt::Rect(10, 20, 216, 140) ); - buttonGroup2->setExclusive( 1 ); - - ERadio = Qt::RadioButton(buttonGroup2, "ERadio"); - ERadio->setGeometry( Qt::Rect(4, 22, 211, 24) ); - ERadio->setChecked( 1 ); - - SigERadio = Qt::RadioButton(buttonGroup2, "SigERadio"); - SigERadio->setGeometry( Qt::Rect(4, 47, 211, 24) ); - - NProjRadio = Qt::RadioButton(buttonGroup2, "NProjRadio"); - NProjRadio->setGeometry( Qt::Rect(4, 72, 211, 24) ); - - dRadio = Qt::RadioButton(buttonGroup2, "dRadio"); - dRadio->setGeometry( Qt::Rect(5, 99, 153, 24) ); - - ScandL = Qt::SpinBox(buttonGroup2, "ScandL"); - ScandL->setGeometry( Qt::Rect(158, 98, 56, 26) ); - ScandL->setMaxValue( int(7) ); - ScandL->setMinValue( int(1) ); + ScanListdz = Qt::LineEdit(ScanMode, "ScanListdz"); + ScanListdz->setEnabled( 0 ); + ScanListdz->setGeometry( Qt::Rect(11, 108, 290, 26) ); tabs->insertTab( ScansTab, "" ); languageChange(); my $resize = Qt::Size(713, 547); @@ -1272,6 +1593,7 @@ sub NEW Qt::Object::connect(ProjType, SIGNAL "activated(int)", this, SLOT "ProjSmartDefaults()"); Qt::Object::connect(Browse, SIGNAL "clicked()", this, SLOT "DirectoryBrowse()"); Qt::Object::connect(Quit, SIGNAL "clicked()", this, SLOT "ConfirmQuit()"); + Qt::Object::connect(ListRadio, SIGNAL "toggled(bool)", this, SLOT "ToggleScanSingle()"); } @@ -1342,9 +1664,12 @@ sub languageChange Path->setText( trUtf8("./") ); Qt::WhatsThis::add(Path, trUtf8("This is the path were the input/output files will be stored.")); Browse->setText( trUtf8("Browse") ); - Help->setText( trUtf8("Help") ); - Start->setText( trUtf8("Start") ); - Quit->setText( trUtf8("Quit") ); + Help->setText( undef ); + Qt::ToolTip::add(Help, trUtf8("Help")); + 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.")); tabs->changeTab( LayersTab, trUtf8("Layers") ); AddParam->setTitle( trUtf8("Additional parameters") ); @@ -1372,22 +1697,7 @@ sub languageChange 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") ); - 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.")); - ScanList->setText( trUtf8("1000,6000,10000") ); - Qt::WhatsThis::add(ScanList, trUtf8("A list of values to scan (separated by commas).")); buttonGroup2->setTitle( trUtf8("Scan Parameter") ); - ERadio->setText( trUtf8("Energy") ); - Qt::WhatsThis::add(ERadio, trUtf8("Scan implantation energy.")); SigERadio->setText( trUtf8("Energy sigma") ); Qt::WhatsThis::add(SigERadio, trUtf8("Scan spread in implantation energy.")); NProjRadio->setText( trUtf8("Projectile number") ); @@ -1395,6 +1705,24 @@ sub languageChange 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")); + ERadio->setText( trUtf8("Energy") ); + Qt::WhatsThis::add(ERadio, trUtf8("Scan implantation energy.")); + 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).")); tabs->changeTab( ScansTab, trUtf8("Scans (Disbaled)") ); } @@ -1412,36 +1740,51 @@ sub ToggleScanSingle $All{"NProjRadio"}=NProjRadio->isChecked(); $All{"dRadio"}=dRadio->isChecked(); $All{"ScandL"}=ScandL->text(); + $All{"ListRadio"}=ListRadio->isChecked(); + $All{"LoopRadio"}=LoopRadio->isChecked(); # Enable everything E->setDisabled(0); - E->setText("2000"); +# E->setText("2000"); SigE->setDisabled(0); - SigE->setText("450"); +# SigE->setText("450"); NProj->setDisabled(0); - NProj->setText("10000"); +# NProj->setText("10000"); for (my $i=1;$i<=7;$i++) { my $LayerName = "L".$i."d"; my $LayerAttrib = child($LayerName); $LayerAttrib->setDisabled(0); } +# Enable depth increment for Energy scan only + if ($All{"ERadio"} & $All{"ListRadio"}) { + dzListLabel->setHidden(0); + ScanListdz->setHidden(0); + dzListLabel->setDisabled(0); + ScanListdz->setDisabled(0); + } 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 if ($All{"ERadio"}) { E->setDisabled(1); - E->setText(""); +# E->setText(""); } elsif ($All{"SigERadio"}) { SigE->setDisabled(1); - SigE->setText(""); +# SigE->setText(""); } elsif ($All{"NProjRadio"}) { NProj->setDisabled(1); - NProj->setText(""); +# NProj->setText(""); } elsif($All{"dRadio"}) { my $LayerName = "L".$All{"ScandL"}."d"; my $LayerAttrib = child($LayerName); $LayerAttrib->setDisabled(1); - $LayerAttrib->setText(""); +# $LayerAttrib->setText(""); } # and change title of tab to say enabled tabs->changeTab( ScansTab, trUtf8("Scans (Enabled)") ); @@ -1556,6 +1899,10 @@ sub CollectValues # 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(); @@ -1618,6 +1965,7 @@ sub CollectValues $All{"ListRadio"}=ListRadio->isChecked(); $All{"LoopRadio"}=LoopRadio->isChecked(); $All{"ScanList"}=ScanList->text(); + $All{"ScanListdz"}=ScanListdz->text(); $All{"SFrom"}=SFrom->text(); $All{"STo"}=STo->text(); $All{"SStep"}=SStep->text(); @@ -1828,6 +2176,7 @@ sub StartSequenceOne my %All = CollectValues(); my @SValues=(); + my @SdzValues=(); my $cmd=""; # Cleanup from old files @@ -1846,11 +2195,15 @@ sub StartSequenceOne $All{"ListRadio"}=ListRadio->isChecked(); $All{"LoopRadio"}=LoopRadio->isChecked(); $All{"ScanList"}=ScanList->text(); + $All{"ScanListdz"}=ScanListdz->text(); $All{"SFrom"}=SFrom->text(); $All{"STo"}=STo->text(); $All{"SStep"}=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); @@ -1869,8 +2222,12 @@ sub StartSequenceOne } my $ScanAttrib = child($ScanName); + my $iScan=0; foreach (@SValues) { $ScanAttrib->setText($_); + if ( $All{"SdzFlag"} == 1) { + dz->setText($SdzValues[$iScan]); + } my $eingabe1=CreateInpFile(); if ($eingabe1 eq "ERROR") {return 0;} my $FILENAME=$All{"FNPre"}."_".$ScanName.$_; @@ -1892,6 +2249,7 @@ sub StartSequenceOne # Not needed if work path is changed # $cmd="mv -f $FILENAME.* ".$All{"Path"}; # system($cmd); + $iScan++; } } else { # For a single run diff --git a/trimsp/TrimSPGUI/TrimSPGUItabs.ui b/trimsp/TrimSPGUI/TrimSPGUItabs.ui index 618febc..f846dcc 100755 --- a/trimsp/TrimSPGUI/TrimSPGUItabs.ui +++ b/trimsp/TrimSPGUI/TrimSPGUItabs.ui @@ -1142,6 +1142,12 @@ + + + + image1 + + Help @@ -1158,6 +1164,12 @@ + + + + image2 + + Start @@ -1174,6 +1186,12 @@ + + + + image3 + + Quit @@ -1767,8 +1785,8 @@ 5 0 - 495 - 165 + 550 + 250 @@ -1783,6 +1801,126 @@ Select to scan a certain parameter in the simulation and produce multiple output files for each value of this parameter. + + + buttonGroup2 + + + + 10 + 20 + 216 + 215 + + + + Scan Parameter + + + true + + + + SigERadio + + + + 4 + 47 + 211 + 24 + + + + Energy sigma + + + Scan spread in implantation energy. + + + + + NProjRadio + + + + 4 + 72 + 211 + 24 + + + + Projectile number + + + Scan the number of implanted projectiles. + + + + + dRadio + + + + 5 + 99 + 153 + 24 + + + + Thickness of Layer + + + Scan the thickness of the selected layer. + + + + + ScandL + + + + 158 + 98 + 56 + 26 + + + + 7 + + + 1 + + + This is the layer whose thickness will be scanned + + + + + ERadio + + + + 4 + 22 + 211 + 24 + + + + Energy + + + true + + + Scan implantation energy. + + + ScanMode @@ -1791,8 +1929,8 @@ 230 20 - 265 - 140 + 310 + 215 @@ -1817,9 +1955,9 @@ 11 - 103 - 240 - 23 + 178 + 290 + 27 @@ -1906,6 +2044,41 @@ + + + ScanList + + + + 11 + 46 + 290 + 26 + + + + 1000,6000,10000 + + + A list of values to scan (separated by commas). + + + + + dzListLabel + + + + 13 + 79 + 295 + 19 + + + + Corresponding depth increment (optional) + + LoopRadio @@ -1913,7 +2086,7 @@ 10 - 75 + 150 240 22 @@ -1949,141 +2122,24 @@ - ScanList + ScanListdz + + + false - 10 - 45 - 240 - 23 - - - - 1000,6000,10000 - - - A list of values to scan (separated by commas). - - - - - - buttonGroup2 - - - - 10 - 20 - 216 - 140 - - - - Scan Parameter - - - true - - - - ERadio - - - - 4 - 22 - 211 - 24 - - - - Energy - - - true - - - Scan implantation energy. - - - - - SigERadio - - - - 4 - 47 - 211 - 24 - - - - Energy sigma - - - Scan spread in implantation energy. - - - - - NProjRadio - - - - 4 - 72 - 211 - 24 - - - - Projectile number - - - Scan the number of implanted projectiles. - - - - - dRadio - - - - 5 - 99 - 153 - 24 - - - - Thickness of Layer - - - Scan the thickness of the selected layer. - - - - - ScandL - - - - 158 - 98 - 56 + 11 + 108 + 290 26 - - 7 - - - 1 + + - This is the layer whose thickness will be scanned + A list of values to scan (separated by commas). @@ -2095,6 +2151,15 @@ 89504e470d0a1a0a0000000d494844520000025000000219080600000069b501e100001d6349444154789ceddd4f6f24f97ddff16f7537ff8f4663fd59014600312b20b91809e247a09bfc206c5f17f2cd37df76f7ec9300c3b000df72f7d9bef91124e71cb4e0228ee40d02afbcbb3324fb5fe5502c7693c321bbbaabbb7ebfaad70b687076c4e5748f309ab73ebfea625196650000b0b951d74f00002037020a00a021010500d09080020068484001003424a000001a125000000d092800808626ad7c95a278ff6e9c6559b4f2b50100125334b91379f1542845c4a65f41510100b92bcbb268bc4095e5a7efff64f1f966ffee933ff9c4d70300485071d73cbb1fe16d184f8dfe7d51050024ac9d6ba0daf638aa04150090903403ea312b15009090dd026ad7e3bbb67f6d5105001c401e0bd4a64415007000fd0aa8a7b89e0a006859ff03ea312b1500b0a3e105d453441500d08080fa105105007c80806a4254010021a076e7227500189ced03aacb7b40a5cc4a0500bdb77d40edf04d850747540140afb47b8427aa3627aa00205bfbbf064a546dcef5540090856e2e2217559bb152014092d27917dee33010544f135500d0b97402ea312bd5e64415001c54ba01f51451b5395105007b9357403d45546dce45ea00d08afc03ea29aea7da8c950a00b6d2cf807acc4ab5395105002f1a46403d45546d4e5401c003c30da8a788aacdb99e0a800113502f11559bb152013020026a1b2e52df8c950a809e12506db0526d465001d013026a5f44d5cb1cfb019029017548a2ea65562a003220a0bae67aaae7092a001224a05263a57a9e633f001220a07220aa9e67a502e0c00454ae44d587092a00f64c40f589a87a9a633f005a26a0face45ea4fb35201b00301353456aaa7092a001a28cab2dcfc938b62f34f266bfe8b7e5fd1f5130020096559168d03eaeaea6a7fcf88a4fdf4f2b2eba790942ffd5900189ccbcbcb28cbb27084c7c61e07c3d083eaf1eb175400c321a0d8da53c130e4a87aeab58b2a807e1250b44a543d64a502e82701c5de39fa5b115400fd20a038382bd58a633f803c09289260a55ab15201a44f4091242bd58aa002488f80221b56aa8a633f80ee0928b265a55ab152011c9680a257ac54154105b05f028a5eb352551cfb01b44b40313856aa8a950a607b028ac1b352550415c0e604143cc14a25a8009e23a06003562a4105b04e40c19686be52092a60c80414b464e82b95a002864440c11e0d79a51254409f092838a021af54820ae81301051d1bea4a25a8809c092848cc50572a4105e44440410686b852092a2065020a3234c4956afdf58929a06b020a7a623d2a86145311820a383c01053d34b4233feb147068020a0660484125a680431050304043092a477dc0be08286030d74f59a780b60828e001eb14c0cb0414f0ac21069598025e22a08046861054d629e025020ad8c910ae9fb24e018f0928a035435ba7c4140c978002f6a6ef4155bf1e2105c323a08083e96b5059a560780414d0993e5e3f6595826110504012fab64e0929e837010524a92feb9490827e125040f2fab04e0929e81701056427e7754a48413f0828206bb9c6949082bc0928a037723ceafbe9e5a588820c0928a0b77259a7ac51901f01050c420eeb94350af221a080414a759db246411e041430781f8a952ec3ca1a05691b75fd040052f5e5d555a711f3d3cbcba4d63160454001bca00ea9ae624a44417a041440035d8594350ad222a000b6608d82611350005beaea684f4441f70414400bbabee09cc372a48a800268d1a142ca5fdedd104ed4dc070a600fea88dae75fb6ee1575188289a758a000f668df816311d91fbfb73c474001ecd9218ef5fc45df1ee1c4261ce1011cc8be8ff51ce96d4f30d194050ae0c0444e7abc8b92a604144007f6f517b6256537428a4d0928809e1151bb1351bc44400174c8129526bf7fbc44400124c0e2017911500089105169b03eb1090105909036234a0834f7dcef990bcc5927a0001223a2d226a48810500049f217f4e1bdb43e6df2730c8780024894bfa00fa7693c818002e839c778d03e010590b0b6d60f11f561d627b621a00012e72ff1fd114f6c6bd2f51300e0655f5e5d59911ef9877fb88c376f228e8f238e8eaac7e969c4785c3d6e6e22fee88faeba7e9af4545196e5e69f5c14e5952207e8ccae1195fbaaf2f77f7f19171711af5e459c9f479c9c548fa3a322269388b3b322c6e3eac7a351445144dcdc2ca22c233efef8eac1d7b23eb18dcbcbcb28cbb2b040016462c80bd4af7e7519af5f475c5c54c1747616319914311a55a134998ce2e4641ca7a7e3188d562bd4785c855651447cf5d57f8cc5a28c3ffcc3e7d73cf1c42604144026867a8cf7b77f5bc5d3d9d9ea311e177781544451444c2693383e3e8a376f2ee2ecec38e6f3db98cd6eef02ab8cd128e2e46414cbe532debefd4f5dbf247a40400164646811f5ab5f554776c7c7ab6b9d46a3222693511c1d15717c5cc4d9d9519c9f1fc5d9d9519c9e9ec6d9d9719c9dbd8eb3b3e3288a328a621911d5c77ff997ff1365b98c2f7e731cdf7df72efecb7f5d3ef8f5ac4f6cca35500019da25a2728884bffaabcbf8d18faa23bbf3f32a9e4e4eaa8fa7a7d551ddc94915506fde5cc4f7bf7f11676747f1ead5eb188dce623c3ebb0ba9e3885844c4e23ea6168bff1d5f7df5af7173731bd7d737319b95f1dffeb8cce2f785eeb9060a8024fde55f5ec6471f55d72dcde7d5e3f8b8ba9ee9e8681cc7c7e3383eaeae797af5ea2ccecf4fe3e4e4242e2e4ee3f5eb37311e5f3c78d40115318f88458c468bf8e8a345bc7dfb36befefaf7717d7d1bfff37f2ce207ddbe6c3223a00048c65ffcc565fce427f585e1ab702a8a88e532623c1e4551548f885114c55114c5798c46afe2e8e82226931fc672f9bd28cb5711f1bd8878155538d58f598c4693188ddec4f7bef7559c9fff6b7cfdf5bfc7d75fffbec3574d8e04140049f8e52f2fe3e4246236abeee7349954f154c7d464328ee5b288c522623e2fe2e4a488d168124747c77172721a2727afe2f8f8c751963f88e5f20fa228ce22e22c22661131bdfbb88c881f47c417311e7f1ba3d14fe2473fba88a228e2abaf7e16af5fffa6c3df017222a00006e6a79797495eef5396ab6b9d4e4e56f7711a8daaf5a9be6477341ac5785c2d5011e3a8fe2a3b8a88e3188d2e22e2758cc7af22e24d447c3faa709a45bd40ad7e3c89a2f85d8cc7bf8db3b31fc40f7f388ad9ecc02f9a6c0928003af7c92797717c5c5def349b558ffa1e4ff50a359bd53f2e633289fb356a3a2de3f6b68cf97c1c11c7117112d5f1dd0fa23ac2bb88889bbb477d94f75144bcbefbfce328cbdf4759465c5fffe7383bfb5f5dfc169019010590a13edecea028aaa3bbd3d3553cad226a1c93c938c6e3ea5114a3582e8b8898c4787c12c7c7e7311e9f46154fc7b10aa937511dd94d23e2f6d1c7b711f15d44bc8dd7afff4314c5714444fcee771fc78f7ffcc5a15f3e99f1cd8401e8d4279f5cc66854ad4f8b45f528cbead86eb95cfddc7c5ec67c5ec66251deff783e9fc76c7613f3f93496cb7944941f784444146bbf6a1911e751c5d559442c63b128a22c277171717cb8174fb62c5000746eb98cfb889acf23a6d3eae78ba23ab62bcbeadaa7c964f578f5eaf5fde3ecec2c8e8e26f13098d603aabe8dc13caa0bc9cb88b88e88afa3beb0fccd9bea73e7f3cdef8fc87059a000e8cc279f5cdeffb8bacbf8c315aa2cebf52962362b633a2d63365b5fa096f73f5e2e9751c5d0fa633da822aa15aafeb95154477da7515d8cbefaf77efbdb9fedffc593350b14004998cf57df00f8f8f8e1f1dd6c5646512cee16a922c6e32266b3694ca7d7319b1ddf3d8e62b9fc2646a3fa9d79eb1feb77e0ddde3f96cb692c97e3a8a26a1111d3582cca582c228e8fed0b3c4f4001d0b9fa9e4f93c96a85aa6f2950dd813cee6ea059c472196b0b5419b3d92c66b3eb984e8f633abd8ef1f83446a37fbfbbd5c138aaa5697523cdd50d352396cbaf633effbf11f16d444c633e9fde7ddd882fbef8383efed8c5e43c4d4001d0b9fa1e4ff3f9ead605f5cfad1fe18dc7d5f7b3ab6e6bb07cf498c66c761d8bc5698cc727b15c9ec668f44d8cc7eb0bd4c3902a8adb188d46b1582c62b1a803aa5aa2e039020a80ce2d16d505e311ab8ff53bf1ea23bc88e5fd8d35c7e38877efa6ef7d9df3f37f8bf3f3fa9e4fb7b1baffd3321e5e485e05d4dbb7bf8fc5e2db582edfc56271fbe05d7e6559bcf7f5a126a00048c27c5e45d3ed6df5b128aa6ba146a3228aa288d128a22cabc099cdca98cd96319f2fe3fafa368aa28ca228e3e2e22ce6f332cecfcb383fbf89a2a843aa0ea8f5909ac564f24dcc66b378f7ee28e6f3dbb8be9ec66c563d97ebeb6587bf1ba44e4001908cc5a20aa8f9bcfae7f1b85ea1cafb3b8f2f97cbbba5681ad3e93c6e6fe7717bbb88dbdb45cce78b383999c4f9f9799c9f5fc4f9f9ff8bf3f3f3bbc0aadf65b70aa99b9beb78f7ee9bb8befe26debdfb2ee6f3455c5fdfc4cdcd32168bee7e1f489f8002c850dfee42beaebef7d36211717353c5537d3d545194778b54c4785cc668147173338fe5b28cb25cc6c9c938e6f3492c168b984eaf633a3d8fe9f4fc7ea18aa83f5601359d4eefae9d1ac5f5f52ce6f3c5ddba55fddaf021020a80e4ac5fff545ff75414abeba322ca188dea0bca8b188dcab8be9ec577dfddc46c36b90ba1eae3ededf57d40d5f154ff783abd8de9f4366e6f6f633aad036a7e775fa90e7f03489e800218982fafaeba7e0acfaa8ee9aa5b1ad48aa2bafe69fd9f2316b15c2ea32ccb582ecb582e47311edfc6cdcd346e6f8fe2e46472ffb10ab072ed5145d472b988e9741eb3d922a6d3e5dd2d128a98cd56774387a708280092527ddb96d55dc823aa7f9e4c56cbd47cbebe462d62b158c67239bebb9754118bc5226e6f8b984e5701351a95f7211551de055915606559c474ba88e5b27e175ec4cf7f7ed5c9eb270f020a80e4ac7f1b973aa856b737281f7cdeeadbb32cee036a3e1fdd7d5cc6cdcdf43ea0aae3c0f22ed096778ff2fec7754039bee325020a80cefcfad7570fbe1f5ead0e983a9aea5b1cd43f371a45449477178f175196c5dd3724ae226a1550d5c72aa0e2c112551dfdad0754154e6519f18b5f5cedffc59335010590993ebf036f5d1d51f53da18aa2faf62ef532359954dfe2a55aabcafba56a32a96f7550bd836f1550e57d441545797fed54bd3cd5c783a59b90b301010540a73eb442d596cb87efc8abaf818aa817aaf26e81aa2e105f2c8a984ccabb5b21541f1faf4ff535567578ad3faeaf0ff1aac99d80022079f5115e1d53f50d3657ab5115517524cd66d5e7ac3fd6d7a7f5db22d4eb53fdb5fefccfafba7eb96460d4f513006073bb1edfa57a0b835ffffaeac5cfa923a7fac6c2d51dcba7d3b83baa8b98cfeb6ff152deff783a5dc6eded326e6e568fdbdb326e6eaac7f57519d369dc3ffef44f5f7e1e10618102188c54e36953f5fab43a7e5b05d47c1e7172b2bac07cb1582d4e93c9ea5d7c0fdfcdb7be42b9f689662c5000246193152ae2e13551f56d0ee6f32aa6ea556a3aad56aa7aa95a5fabd617a79b9b8877efaac72f7fb9d9af0f11020a201b4378f75d9388aa03aa5ea0ea805a7fac87d4fae75c5fafc2e9eddb886fbfddefeba27f0414400686104fb54d232aa20aa8e9b40aa29b9bf703eae6a6facfd61f7534adc7d3a79f6efe6b42846ba0000621b7eb9fea887aeef6068fd5efd49b4cde7fe75dfd583ffefbebbfbedacb736718041440e286b43e3df68fff14f127bfd8fcf3eb63bd5a7d9178fda87fee6ffee6aad5e7c9f038c20320497538fee33f6dff35d66f90595f2b259e6883050a20616dac4fb91ddf45bcffbad723aac9221551c5d3dffdddd5cecf09d6092800b2d2e42273d817477800891aeab54fcfbdee1cd734fa494001f4586ec1219ec885800248d050d727c8858002e8a9dc161beb13391150008919e2fa249ec88d800248485bf1243a60bf04144022861a4fd6277224a000e88c782257020a2001435d9f2057020aa06343bc683cc2fa44de04144087da8ca79ca2433c913b0105d091a12e4f112289fc092880cc7d79759565903cf59c737c1d0c938002e8c090d7a775ebc1249ec8c9a4eb2700303443bdeee943faf01a181e0b14c0018927e807010570208eeda03f0414c001b41d4fd627e8968002d833f104fd23a000f6c8b11df49377e101ecc1bec2c9fa0469b04001b44c3c41ff59a0005ab2cfe33af104691150003bdaf7754ee209d223a000b674880bc4c513a449400134e49d75808002d8d0a1c3c9fa04e91250002fe86271124f90360105f0015d1dd58927489f8002784438012f11500077babc385c3c415e041430785dbfab4e3c417e041430485d47538470829c092860505208a708f104b91350c020a4124e11e209fa404001bd259a807d115040efa4144e11e209fa484001bd219c8043115040f684137068020ac8526ad114219c604804149015e104a440400159104e404a041490ac14a329423801020a489070025227a0806408272017020ae854aad114219c800f13504027520d27d1046c42400107259c803e1050c0410827a04f0414b05729869368027625a080bd104e409f0928a055c20918020105b44238014322a0809da4164ea209380401056c4538014326a080468413808002369452388926a06b020a78967002789f8002de935234450827203d020ab897523889262065020a104e000d09281830e104b01d010503249c007623a060408413403b04140c807002689780821e134e00fb21a0a0878413c07e0928e811e1047018020a7a4038011c9680828c0927806e0828c84c4ad114219c80611250909194e24938014326a02003c209202d020a12269c00d224a02051a9c4937002789f8082c4082780f4092848847002c887808204a4104fc2096073020a3a249c00f224a0a003c209206f020a0e483801f483808203e93a9e8413407b0414ec997002e89fa22ccbcd3fb92836ff6418b8aeffb0141dfffa007d559665d17c81fad967ed3f13e899f2379f75f66b17fe8c02eccfddffbe375ea03efdef5dffff6a48d7677fd6edeef3993f9f007bf5f99f155b2e50c07b8413c0b00828d8817002182601055bea329e841340b70414346475024040c1868413003501051b705c07c03a0105cf104e003c4540c1131cd701f01c01058f589d00788980823bc209804d0928064f3801d0948062b05ce704c0b60414836475026017028a41114e00b441403108c20980368dba7e02b06fe20980b659a0e82de104c0be08287a473801b06f028ade104e001c8a6ba0e805f104c02159a0c85e57f1249c00864b40912de1044057041459ea229e84130035014556ac4e00a44040910dab1300a91050244f3801901a0145d20e1d4fc209804d0828926475022065028ae4589d00489d802229878c27e104c0b6041449104e00e4c4f7c2a373e20980dc58a0e88c6b9d00c895058a4e882700726681e2a08413007d6081e260c413007d618162ef8413007d638162afc413007d6481622f8413007d6681a275e20980beb340d12a37c50460082c50b4463c013014028a5688270086c4111e3b3b543c0927005221a0d89ad50980a112506cc5ea04c090b9068ac6c41300436781a29143c49370022075162836269e00a06281e245c209001eb240f12cf10400efb340f141fb8e27e10440ae2c503c493c01c08759a078c0911d00bccc02c53df104009b11504484780280261ce1e17a270068c8023570e209009ab3400d94233b00d89e056a80c41300ec46400d8c780280dd39c21b10d73b01403b04d400589d00a05d8ef07a4e3c0140fb04548f892700d80f47783de57a2700d81f0b540f892700d82f01d533e20900f64f40f588780280c310503d219e00e0705c44de03fb8c27e10400efb340654e3c01c0e109a88c892700e88680ca94780280eeb8062a43fb8827d104009bb34065463c0140f7045446c41300a4414065423c01403a045406c41300a44540254e3c01407a0454c2c41300a44940254a3c0140ba045482c41300a44d4025463c0140fa045442c41300e4414025423c01403e045402c41300e44540754c3c01407e265d3f81a1da47384588270038040b5407c41300e44d40f584780280c3115007e69a2700c89f803a20f10400fd20a00e443c01407f08a803104f00d02f022a43e20900ba25a0f6acedf5493c0140f704d41e892700e82701b527e20900fa4b40ed817802807e13502ddbd7b7690100d221a012677d0280f408a81639ba03806110502d114f00301c02aa05e20900864540ed483c01c0f008a81d8827001826010500d09080da92f50900864b406d413c01c0b009a886c4130020a01a104f00408480da987802006a02aa03e20900f226a036d0f6fa0400e44d40bdc0d11d00f098807a867802009e22a03e403c01001f22a09e209e0080e708a847c41300f01201b547e20900fa4940ad71bb02006013026a4fac4f00d05f02ea4e9beb937802807e1350219e00806604548bc413000cc3e003aaadf5493c01c0700c3aa0c41300b08d41071400c036061b50d62700605b830c2837cc04007631c8806a8bf5090086697001e5e80e00d8d5a002cad11d00d0864105545bac4f00306c45596e1e034551645b0e6d3d711b16000c5b5996c52016a86cab0f0048d2a4e9bff0e93f7fba8fe7b15f3fffbc952ff3d93f7f1a19be7a00a0259fdf3545ef17a8cf5a8c270080889e07545bf10400b0aed701d516eb1300b0aeb701657d0200f6a59701d5663c599f0080c77a19506d114f00c0537a17508eee00807deb554039ba03000ea15701d516f104003ca73701e5e80e0038945e0494a33b00e0907a11506d114f00c026b20f28477700c0a1651d508eee00802e641b50962700a02bd906549bac4f004013830f28f104003495654039be0300ba946540b5c5fa04006c23bb806a6b7d124f00c0b6b20b280080ae651550d6270020055905541bc41300b0ab6c02ca3bef0080546413506db03e01006dc822a0ac4f00404ab208a836589f0080b6241f50d627002035c907541bac4f00409b920e28eb130090a2a403aa0dd62700a06dc90694f509004855b201d506eb1300b00fbd0e2800807d4832a0da38beb33e0100fb9264400100a42cb980b23e0100a94b2ea0000052975440599f00801c2415500000394826a0ac4f00402e92092800805c241150d62700202749041400404e3a0f28eb1300909bce030a0020379d0694f50900c891050a00a0a1ce02cafa0400e4ca020500d0502701657d02007276f0806a239e0000ba94e5119ef50900e85296010500d0a5ec02cafa040074eda001e5fa2700a00fb25aa0ac4f00400ab20a280080141c2ca01cdf01007d91cd02e5f80e00484536010500908a830494e33b00a04fb258a01cdf010029c922a0000052b2f780727c0700f44df20b94e33b002035c9071400406a04140040437b0da85daf7f727c0700a4c8020500d09080020068686f01e5f80e00e82b0b14004043020a00a0a1bd0494e33b00a0cf2c5000000d09280080865a0f28c7770040df59a000001a125000000d2515508eef00801cb41a50bb5eff04009083a4162800801c2413508eef00805cb416508eef0080a14866810200c8451201e5f80e00c8492b01e5f80e00189224162800809c741e508eef0080dcec1c508eef0080a1d929a0c4130030449d1ee139be030072d4f935500000b9115000000d7516508eef00805c59a000001a125000000d6d1d506e6100000c95050a00a021010500d0502701e51d780040ce2c5000000d0928008086b60a28efc0030086cc020500d09080020068e8e001e51d780040ee2c5000000d09280080861a079477e00100436781020068484001003474d080f20e3c00a00f2c5000000d09280080861a0554b9af67010090110b14004043020a00a0a183059477e001007d618102006868d2f513000078cae7097ffbb8cd03aa28bc090f00329272806ca22ccba2ebe7f0211628004844dbc1937280e44e4001c09604cf701d24a0bc030f8054ed12418267b82c5000f44ad32012416c434001903441448a360b28efc003a02582883eb04001d08a4dc34810d107020a808dbc1448c28821d97b4079071e401e04126cce020530100209da23a0007a4220c1e1bc1c50de8107d0b94d2ed0164870382f07d4da1fc8a228ca4fd7ae69fa2cf36f5208900aeb11e465a723bcc717880b2a80a70924e89756af81f28e3b60881cafc1f0b8881ce005d623e03101050c9af508d88680027acd7a04ec4351969bdfa5a078e196069fba060a3830810474a15140bdf8c576b86794f8021e73bc06a4aad580da85f882e1b11e01b94a26a07621be201d9bac46358104e4aa1701b50bf1051fd624866aa2081882c107d42ec417b9d8268422c410c08708a88e882fb6651502e89e80ca90f8cad3b62bd0636208a07b026a60c4d7f3da8a9ca7081f80fe10506c2c95f8123900744d407110bbc4d763220780ae0928008086fe3f19a9f2fef914a99c0000000049454e44ae426082 + + 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000043149444154388d8d954d6c545514c77ff7beef992953a04829691952401a44890944d2f8d584a5a189bb26ee202a316eba926008892b6263a20b17ccd25437268d6b5335418d2921f801a122525b18a14c69a7d39979f3debc7b5cbc692d20c849cee6dcfff9dfffbdf79c7315ff63874f8a2f42179013c0185612a17cf1ac0a1f97a71eb530784a3a8161631812a10fc81b81c4501198159814c3c4a50fd5d213110f9e921c30a214a3394f0a3d1b710a5b8cda964fd01a4a4b1637e6b594ee99787e59cf44891a1361fcf2476ae591c42fbe2f79239cb135c707b69bcc91e760603b6c0884e55a8c91141ef82e73775b7c7541f1c334f5e5d03e97184e4f7fac2a0f11b7957e90f5e4ed23fb5beeabfb6d02c7103663f219cdf62e1b6963a7e7221cc7c26033351df2d9792b2a2db99f8a70eaf74f52e57a9de0115b73ecf01e715f79c64621acd423067a5dfa7b5c7c5713b4fd40bfcfd64e4514b7787e77c0eb871237e326c744185925d3ab0fa514a3852d267b7097a2112bca958867777a049ea6d684cb7370f106cc96c108746db0e9d964510d6177afcfc17eb24a31baf38474ae573c1c3852d8d70bad44b15885aca7f05d8d11f8e3365cbf0337cb3075ad45b91201d011686a21dcab42efe6840e3f29186118c03e7c527c6318ca677072be62b99eee94f56c5a09342298be05cd388dc7cd3a819b01a0160a3f5e35dcae68ea9143e02947aa0cf5bd255fd8ede2efcb78a8a8a558aca5049586c5bd1aac84506da4b10ea7c6e0804d2eb03102df5e365c29596b8f94f55122f489d065033911f2be63580eff05016b9b00584985a32ffbf43de521c0d4b584af7fbdbf0d7c078c9017919c9d9834d88c61a10a6b35b53ec16af0c64b2e3bb67ab412f8e6b784cfbf57ac84faa10e1349096c11aa02956a6861590f800031c2d66e4dcfa694e2c275c3973f29c258afe1551bdb0c01910a8aaa6d600198ad3591ac87524a1051a97049d3b4d25896a2da80f357d34ad0ff31652a3504cc2cc282be785685c630596b482c2268a5b034d81a6c2bf5bb558ba93f35df5d81b9721a731e7011a152333130592a3aa19dde0b13b526efd59bb2a77ba342ad5723902431956a0bad3459df2791fbe58ac09d25c34a2833c004b41be4e731b514276aacb4686aca34c978906d7bc6130ef4c5bc7628e0e80b01837b15397ffd3a2471c85ff3ad5a2b91b152d1595a236e0b1b5f6ed8c55f667594c40d7c5708da89aeebd1329a3849ef36f052f75d218e1a4c5d9768a9ae8a20e3ab7cf79de9e977252fc299cdd9e8f8be5ec9f4776b1cc7c1b66047173836cccc4318431c35992e09976e24f5f9aa730e385d2a7a0f8fcd55dbf58ee404463c2b19edceb70a7bbb1bceb68db6f283008046a3cead722c57fef6e35b8bd64c18eb3190f152d17bf4a05f6f8513d229c2b00843266dd3bc88a4758a99052641264a45f7c9bea607adf74df145d86c443a4040a40ab2502a3a8ffd4cff01b1e10a7293d99fd30000000049454e44ae426082 + + + 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000047c49444154388d8595db6f54551487bfbdcf656e9de994164b118602318454a04e4583899760d454a289688cb7f856020f24bc10ff0025fd03d4f4e1280fbef4411e4d30627c2148086548ad8821b140a9d2ceb4d39933cce5dcf6f661da424d8b275959679fbdd7777e6b65656dc1639efc89490bf466507d689d040de8265acd59ca2d5e715ef3378a158f811e02de073d882087b0520028af818eee01934285e7f2faec25c771a2ff05e74f4cee06710ac3faa82395cc6ee9c9c8deee387b7a6a24ac88bfca1ddc292a164a2555ae369b2a6c5eb2f4832ff6ebf1cb8ee384eb82f32726778018c3ce0c0fee4af0e6c134fbb66b9ec85a18b27d54034bb590e9b980f3851617a796f09beecd982a7ff6b43e777e056efc47e9d71d99cc1b6f1fea149fbe92e0a93e839865f0cd4f15f66e8fe1871a3fd41852d09331d9b7c3a2b7cbe27651f7b82df1eca2de59181e4acc160a05bd0aee3b787c143bfdc191e7b2e2ad210bdb92f8a1c60b34efbc90e5ab1f16d9b5c5c2f3155ea0f0428dd69aad9b2cd2494bfc311b75b77c6d6de5fa85a1a1a1c068abbd764818b1d103bb33f1e1bc8594e0078a56d0866ceb89f1e2408a93df699ec90578815ede6f67b0a94352f74d664a417f29da3ed9cbcddb46fef884059c4aa7d32fbd3a98125d1de0059a56d056eb059add5be300bcf7bcc1e971c1de2dfe9afd56a0b00d9fe97965d75b616084d58b26b01918cc643a65361ee2d6e5461d08c0f8499b0fbf84a3075ca248335b8e989acbe23693d4e8908aca802b723913e843c85c4f5ad0f4154d5fa197db65c5af0fcfb0bfb7c2e4df2966dd7646982608a30fc3ce4920898ca5925640a5ae701b0acfd7b47cbdea3752fedb7c965223b9fa4d0801329610905ecddb6d59cc57254557526d4a2a4d837b95185767528f2d8b1f190841db567e809226e826ca6bccd713d4a3783b7f4023a8f9367a7dc100bc3efaf05d88761451ab2574e899683507dcab36d4ce4824d6046ae486d3e4f019089627846980041e343dd05151aafa9cb4945b0426f1caca3234f623163322d6937cf80c8022694524ad88b819619b11c25f5426ad5b597df7be79c579cd1f3a76f95ce4553fb1a2445757da5e23526980ccea7a64acc6b63408a157cfb5e7878f6a2dd513d1fc854e63a16c02e4f5d94bd7c291ef6b95d2b1feee2e62a678d86f3c049ffe769eac0dda5ea969fb8c176a662a4b28bffacb1ef9f3af40cd0028140a7a5bfee3692f60af52d18e27bb0d918c0962962666695ede97e6f3f1fbc4ccf63a6eb77dccd408026ecdb86ab15c9de88e6e8c65c53f3756c10047f2d6e2a2ce4d549be680db08fbd3498b4d6913db925cbe59c736c51ab30c58a8064c4d57992bb9139bc3eba33959b80a2c388e13ad820b85821e1e4a961775fff56ad34896aa417fad11da713314a9848929255280d6118b4b757ebfd3507fced41e542aee8fddd18db16568d1719c00d669a691911109a4a678f770283b8e2aac0129455f3a6124006acda8a522553469dd8a47f317966b3a0f5436bc411e810bc02e46fd5957e47218764e405aa0a4d0a127557d2eabefdeef3416ca400d683a8ea31e65fc0b65f3416ec3c8f69a0000000049454e44ae426082 + + + 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000045749444154388da595cd4f545718c67fe79c3b7760669896f1624305044394882c2c289258a31235367161e28a85d1a50b57a64b57eaae24eac2855b13fa078864ecc684b882513a52c5548b16ac7c88c0ccbdcc1733e77471ef8cd836ddf82627e74deeb9cf79cef37e891fa125a4d4b55d8e33642965f30556ae544ab32b2b239b95ca552ba4d4b52b274f5ec8e7f3acb82e18f3d9612904524aa410a86097ffdc033f5a576797e1c24f0f1f627538ced0462ec7c2eedd247a7b3f0315d59f844085c3082110e5325208df0fbe55fd8de7cf89a6d37438ce90654969afb82e0d9d9de872f933a6d18e0eec8e0ec24d4d44120900363e7e64636989dcab57c4d6d7610b70b8bd9d522a8525a56d19c018c366368bdedc04c0aaaf67db891334f6f4fc4bc798e310731ce8eee6cf8909542a45bd312025a258440881012c8c0163286532a862113b1261e7a54bd4050c7f7bf4880fcf9e51595a221e0e63353793e8e9a17d60809d070fe2eedac5fbbb7769b22cd8dc44001883a58d411bc3eae424897dfbf8e6dc39ea120972990cbf0c0fb3fdfd7b5a62315feb6211e9bac8d7af79934ed33c344483e3a00e1f663399c4360603686390c6185f8a850542d1284e7f3f0063376ed03e3b4b63a582f13cbe3a791275f428854c063c0f7b7a9accbd7b00741e39c2bbc646c8e51081b4b29a5c4a299a4e9d02e0d7fbf789a7d358f93cc675a96f6fc7397d9ab633677c00d705cfc3a452ac8e8f0310efeb23b7b484010cf88ca510584a11efee06607674946dd92c3a9bc5b82e52a95af07428049e07ae8bf03c542a05c0f6ce4e5617176b8c2d13e8128ec789b6b501907ff9125128604a254c2804c5e2a7b42895c0f3fccb8ca19c4efb8c5b5ac8d8363baac0da1844c0b86af54aa1a4f41720b5fe94dfc660698d34c6afbc2d955a0cfc5af0300691cbe1cdcf0310d9bbd707550a2b28dbad85b3b59ced3d7b00c8be7bc7d7e53246eb207881c64a2972333300b40c0e82945801ebad8c8dd648295141efb00e1d0260656686ede130d582933ad0584989974c02b0efec59d67b7b6b7294a6a6f0e6e6587bfb96fc9327a880b17de000e1c14100e692499c0058578109800b8f1fb3383606c077d7af93efebf319e7f3642f5e64fefc790e84423e687f3ff6952b00bc1e1be3dbe9692c29315aa3ab5921c07fb6526cdcbac5c6fefd449b9be9be7993b9070f084d4c60bd79431b10eaea420c0c1039760c006f6181b9dbb7f93e164308810ea410c3b19839dad949241cae3d9d860642972fd3fac30ffc9ffd3e3acad29d3bf48642d84a218460796d8d9f2727fd74ab6a5c5bf93c6a78983fc6c791c78f93e8ea22dedaea477f7e9e959919fe4a26d9f1e2058722915adbac32d6c66055b42ee50b05bb311aada5587552c49f3e454d4d510096c36136ca651aca659a6c9b56cb426c01ad36fc0febeb54b42e596b85c2c862267341030df5f5ff391daa7b34e8b5cbd533e0377afc69b392cdf2767999b54261c4d2c65c4d2d2e125f5d1d92427cd130d5c694b2a5d28836e6eadf44cbf02c068658550000000049454e44ae426082 + @@ -2169,6 +2234,12 @@ TrimSPGUI ConfirmQuit() + + ListRadio + toggled(bool) + TrimSPGUI + ToggleScanSingle() + TrimSPGUItabs.ui.h diff --git a/trimsp/TrimSPGUI/TrimSPGUItabs.ui.h b/trimsp/TrimSPGUI/TrimSPGUItabs.ui.h index 771db9f..4b753e8 100755 --- a/trimsp/TrimSPGUI/TrimSPGUItabs.ui.h +++ b/trimsp/TrimSPGUI/TrimSPGUItabs.ui.h @@ -40,36 +40,51 @@ void TrimSPGUI::ToggleScanSingle() $All{"NProjRadio"}=NProjRadio->isChecked(); $All{"dRadio"}=dRadio->isChecked(); $All{"ScandL"}=ScandL->text(); + $All{"ListRadio"}=ListRadio->isChecked(); + $All{"LoopRadio"}=LoopRadio->isChecked(); # Enable everything E->setDisabled(0); - E->setText("2000"); +# E->setText("2000"); SigE->setDisabled(0); - SigE->setText("450"); +# SigE->setText("450"); NProj->setDisabled(0); - NProj->setText("10000"); +# NProj->setText("10000"); for (my $i=1;$i<=7;$i++) { my $LayerName = "L".$i."d"; my $LayerAttrib = child($LayerName); $LayerAttrib->setDisabled(0); } +# Enable depth increment for Energy scan only + if ($All{"ERadio"} & $All{"ListRadio"}) { + dzListLabel->setHidden(0); + ScanListdz->setHidden(0); + dzListLabel->setDisabled(0); + ScanListdz->setDisabled(0); + } 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 if ($All{"ERadio"}) { E->setDisabled(1); - E->setText(""); +# E->setText(""); } elsif ($All{"SigERadio"}) { SigE->setDisabled(1); - SigE->setText(""); +# SigE->setText(""); } elsif ($All{"NProjRadio"}) { NProj->setDisabled(1); - NProj->setText(""); +# NProj->setText(""); } elsif($All{"dRadio"}) { my $LayerName = "L".$All{"ScandL"}."d"; my $LayerAttrib = child($LayerName); $LayerAttrib->setDisabled(1); - $LayerAttrib->setText(""); +# $LayerAttrib->setText(""); } # and change title of tab to say enabled tabs->changeTab( ScansTab, trUtf8("Scans (Enabled)") ); @@ -179,6 +194,10 @@ void TrimSPGUI::CollectValues() # 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(); @@ -241,6 +260,7 @@ void TrimSPGUI::CollectValues() $All{"ListRadio"}=ListRadio->isChecked(); $All{"LoopRadio"}=LoopRadio->isChecked(); $All{"ScanList"}=ScanList->text(); + $All{"ScanListdz"}=ScanListdz->text(); $All{"SFrom"}=SFrom->text(); $All{"STo"}=STo->text(); $All{"SStep"}=SStep->text(); @@ -449,6 +469,7 @@ void TrimSPGUI::StartSequenceOne() { my %All = CollectValues(); my @SValues=(); + my @SdzValues=(); my $cmd=""; # Cleanup from old files @@ -467,11 +488,15 @@ void TrimSPGUI::StartSequenceOne() $All{"ListRadio"}=ListRadio->isChecked(); $All{"LoopRadio"}=LoopRadio->isChecked(); $All{"ScanList"}=ScanList->text(); + $All{"ScanListdz"}=ScanListdz->text(); $All{"SFrom"}=SFrom->text(); $All{"STo"}=STo->text(); $All{"SStep"}=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); @@ -490,8 +515,12 @@ void TrimSPGUI::StartSequenceOne() } my $ScanAttrib = child($ScanName); + my $iScan=0; foreach (@SValues) { $ScanAttrib->setText($_); + if ( $All{"SdzFlag"} == 1) { + dz->setText($SdzValues[$iScan]); + } my $eingabe1=CreateInpFile(); if ($eingabe1 eq "ERROR") {return 0;} my $FILENAME=$All{"FNPre"}."_".$ScanName.$_; @@ -513,6 +542,7 @@ void TrimSPGUI::StartSequenceOne() # Not needed if work path is changed # $cmd="mv -f $FILENAME.* ".$All{"Path"}; # system($cmd); + $iScan++; } } else { # For a single run