diff --git a/src/external/MuSRFitGUI/devel/MSR.pm b/src/external/MuSRFitGUI/devel/MSR.pm deleted file mode 100755 index 99233d8c..00000000 --- a/src/external/MuSRFitGUI/devel/MSR.pm +++ /dev/null @@ -1,1833 +0,0 @@ -#use strict; -package MSR; - -# This module provides some tools to create, manipulate and extract information from MSR files - -my $EMPTY=""; -my $SPACE=" "; - -my %DATADIRS = ( - "LEM", "/mnt/data/nemu/his", - "GPS", "/afs/psi.ch/project/bulkmusr/data/gps", - "LTF", "/afs/psi.ch/project/bulkmusr/data/ltf", - "Dolly", "/afs/psi.ch/project/bulkmusr/data/dolly", - "GPD", "/afs/psi.ch/project/bulkmusr/data/gpd" - ); - -my %BeamLines = ( "LEM", "MUE4", "LEM (PPC)", "MUE4", "GPS", "PIM3", "LTF", "PIM3", "Dolly", "PIE1", "GPD", "PIE1" ); - -my %Def_Format = - ( "LEM", "ROOT-NPP", "LEM (PPC)", "ROOT-PPC", "GPS", "PSI-BIN", "LTF", "PSI-BIN", "Dolly", "PSI-BIN" , "GPD", "PSI-BIN"); - -# Additional information to extract run properties from database -# For LEM use summary files -$SUMM_DIR="/afs/psi.ch/project/nemu/data/summ/"; -# For Bulok use list files -%DBDIR=("LEM","/afs/psi.ch/project/nemu/data/log/", - "GPS","/afs/psi.ch/project/bulkmusr/olddata/list/", - "Dolly","/afs/psi.ch/project/bulkmusr/olddata/list/", - "GPD","/afs/psi.ch/project/bulkmusr/olddata/list/", - "ALC","/afs/psi.ch/project/bulkmusr/olddata/list/", - "LTF","/afs/psi.ch/project/bulkmusr/olddata/list/"); - -# Information available since -%MinYears=("LEM","2001", - "GPS","1993", - "Dolly","1998", - "GPD","1993", - "ALC","1993", - "LTF","1995"); - -# And to deal with old names of bulk muons -%AltArea=("GPS","PIM3","LTF","PIM3","ALC","PIE3","Dolly","PIE1","GPD","MUE1"); - - -# Additions to paremeters' names -my $erradd = "d"; -my $minadd = "_min"; -my $maxadd = "_max"; - - - -########################################################################## -# CreateMSR -# -# Input in %All -# Required: -# $All{"FitType1/2/3"} - Function types, 3 components -# $All{"LRBF"} - Histograms, comma separated -# $All{"Tis"} -# $All{"Tfs"} -# $All{"BINS"} -# $All{"FILENAME"} -# $All{"go"} -# $All{"TITLE"} -# $All{"RunNumbers"} -# $All{"FitAsyType"} -# $All{"BeamLine"} -# $All{"YEAR"} -# -# Optional: -# $All{"Sh_$Param"} -# $All{"ltc"} -# $All{"$Param"} value, error, min, and max -# $All{"logx/y"} -# $All{"Xi/f"} -# -# Output -# $Full_T_Block - Full theory block -# @Paramcomp - Space separated list of parameters for each component -# FILENAME.msr - MSR file saved -# -########################################################################## -sub CreateMSR { - my %All = %{$_[0]}; - - # Start with empty array - my @FitTypes = (); - - foreach ($All{"FitType1"},$All{"FitType2"},$All{"FitType3"}) { - if ($_ ne "None") { - @FitTypes=(@FitTypes,$_); - } - } - - my @Hists = split( /,/, $All{"LRBF"} ); - # TODO - # Check the number of histograms - # should be 2 or 4 histograms - # should be checked in GUI - # for 2 simple asymmetry fit - # for 4 two run blocks with different geometric parameters: - # Alpha, No, NBg, Phi, Asy - - my @TiVals = split( /,/, $All{"Tis"} ); - my @TfVals = split( /,/, $All{"Tfs"} ); - my @BINVals = split( /,/, $All{"BINS"} ); - my $FILENAME = $All{"FILENAME"}; - my $BeamLine = $All{"BeamLine"}; - my $YEAR = $All{"YEAR"}; - - my $Step = $All{"go"}; - if ( $Step eq "PLOT" ) { - $FITMINTYPE = $EMPTY; - } - elsif ( $Step eq "MIGRAD" ) { - $FITMINTYPE = "MINIMIZE\nMIGRAD\nHESSE"; - } - elsif ( $Step eq "MINOS" ) { - $FITMINTYPE = "MIGRAD\nMINOS"; - } - elsif ( $Step eq "SIMPLEX" ) { - $FITMINTYPE = "SCAN\nSIMPLEX"; - } - - # Proper way - if ( $All{"Minimization"} ne $EMPTY && $All{"ErrorCalc"} ne $EMPTY && $Step ne "PLOT" ) { - $FITMINTYPE = $All{"Minimization"}."\n".$All{"ErrorCalc"}; - } - - - # First create the THEORY Block - my ($Full_T_Block,$Paramcomp_ref)=MSR::CreateTheory(@FitTypes); - my @Paramcomp = @$Paramcomp_ref; - - - # If we have a FUNCTIONS Block the Full_T_Block should be - # replaced by Func_T_Block - $FUNCTIONS_Block = $EMPTY; - if ($All{"FunctionsBlock"} ne $EMPTY) { - $FUNCTIONS_Block = " -############################################################### -FUNCTIONS -############################################################### -".$All{"FunctionsBlock"}."\n"; - $Full_T_Block=$All{"Func_T_Block"}; - # remove all _N to end (may fail with large number of parameters) - $Full_T_Block =~ s/_\d\b//g; - } - - # Counter for RUNS - my $iRun = 1; - - # Counter of Params - my $PCount = 1; - - # Need to select here RUNSAuto or RUNSManual - # $RUNSType = 0 (Auto) or 1 (Manual) - my $RUNSType = 0; - my @RUNS=(); - if ($All{"RunNumbers"} ne $EMPTY) { - @RUNS=split( /,/, $All{"RunNumbers"}); - $RUNSType = 0; - } - elsif ($All{"RunFiles"} ne $EMPTY) { - @RUNS=split( /,/, $All{"RunFiles"}); - $RUNSType = 1; - } - - # $shcount is a counter for shared parameters - # msr2data \[1363 1365 1366\] _Dolly_2010 msr-1363 global - if ( $#RUNS == 0 ) { - my $shcount = 1; - } else { - if ( $All{"Sh_Alpha"} == 1 ) { - my $shcount = 1; - } else { - my $shcount = 0; - } - } - - $shcount = 1; - my $RUN_Block = $EMPTY; - my $RUNS_Line = $EMPTY; - - # range order - my $Range_Order = 1; - foreach my $RUN (@RUNS) { -####################################################################### - # Prepare the Parameters and initial values block - my $component = 0; - my $Single_RUN = $EMPTY; - - # Prepare map line for each run - my $MAP_Line = "map "; - - # How many non-shared parameter for this RUN? - my $nonsh = 0; - - # Prepeare Alpha line for the RUN block. Empty initially. - my $Alpha_Line = $EMPTY; - - # Loop over all components in the fit - foreach my $FitType (@FitTypes) { - ++$component; - my $Parameters = $Paramcomp[ $component - 1 ]; - my @Params = split( /\s+/, $Parameters ); - - # For the first component we need Alpha for Asymmetry fits - if ($component == 1) { - unshift( @Params, "Alpha" ); - } - - foreach $Param (@Params) { - $Param_ORG = $Param; - if ( ($#FitTypes != 0) && ($Param ne "Alpha") ) { - $Param = join( $EMPTY, $Param, "_", "$component" ); - } - - # If we have only one RUN then everything is shared - if ( $#RUNS == 0 ) { - $Shared = 1; - } - # Otherwise check input if it was marked as shared - else { - $Shared = $All{"Sh_$Param"}; - } - - # Alpha Line - # - # If you encounter alpha in the parameters list make sure - # to fill this line for the RUN block. - if ( $Param_ORG eq "Alpha" ) { - if ($Shared) { - # If alpha is shared use always the same line - $Alpha_Line = "alpha 1\n"; - } - else { - # Otherwise modify alpha line accordingly - $Alpha_Line = "alpha $PCount\n"; - } - } - - # End of Alpha Line -#################################################################################################### - - # Start preparing the parameters block - if ($Shared) { - - # Parameter is shared enough to keep order from first run - if ( $iRun == 1 ) { - $Full_T_Block =~ s/$Param_ORG/$PCount/; - ++$shcount; - ++$PCount; - } - } else { - # Parameter is not shared, use map unless it is a single RUN fit - # Skip adding to map line in these cases - if ( $Param ne "Alpha" && $#RUNS != 0 ) - { - ++$nonsh; - $Full_T_Block =~ s/$Param_ORG/map$nonsh/; - $MAP_Line = join( ' ', $MAP_Line, $PCount ); - } - ++$PCount; - } - $NtotPar = $PCount; - } - } - - # Finished preparing the FITPARAMETERS block -####################################################################### - - # For each defined range we need a block in the RUN-Block - # Also for each histogram in Single Histograms fits - # Also for Imaginaryand and Real for RRF fits - - $RUN = $RUNS[ $iRun - 1 ]; - - if ($All{"RUNSType"}) { - $RUN_Line = MSR::RUNFileNameMan($RUN); - } else { - $RUN_Line = MSR::RUNFileNameAuto($RUN,$YEAR,$BeamLine); - } - - $Type_Line = "fittype 2"; - $PLT = 2; - $Hist_Lines = - "forward $Hists[0]\nbackward $Hists[1]"; - - $Bg_Line = "background"; - $Data_Line = "data"; - $T0_Line = "t0"; - $NHist=1; - foreach $Hist (@Hists) { - foreach ("t0","Bg1","Bg2","Data1","Data2") { - $Name = "$_$NHist"; -# If empty fill with defaults -# if ($All{$Name} eq $EMPTY) { -# $All{$Name}=MSR::T0BgData($_,$Hist,$BeamLine); -# } - } -# If empty skip lines - if ($All{"Bg1$NHist"} ne $EMPTY && $All{"Bg2$NHist"} ne $EMPTY) { - $Bg_Line = $Bg_Line." ".$All{"Bg1$NHist"}." ".$All{"Bg2$NHist"}; - } - if ($All{"Data1$NHist"} ne $EMPTY && $All{"Data2$NHist"} ne $EMPTY) { - $Data_Line =$Data_Line." ".$All{"Data1$NHist"}." ".$All{"Data2$NHist"}; - } - if ($All{"t0$NHist"} ne $EMPTY) { - $T0_Line=$T0_Line." ".$All{"t0$NHist"}; - } - $NHist++; - } - -# Put T0_Line Bg_Line and Data_Line together if not empty - my $T0DataBg=$EMPTY; - if ($T0_Line ne "t0") { - $T0DataBg = $T0DataBg."\n".$T0_Line; - } - if ($Bg_Line ne "background") { - $T0DataBg = $T0DataBg."\n".$Bg_Line; - } - if ($Data_Line ne "data") { - $T0DataBg = $T0DataBg."\n".$Data_Line; - } - - $FRANGE_Line = "fit TINI TFIN"; - $PAC_Line = "packing BINNING"; - - $Single_RUN = -"$RUN_Line\n$Type_Line\n$Alpha_Line$Hist_Lines\n$T0DataBg\n$MAP_Line\n$FRANGE_Line\n$PAC_Line\n\n"; - - # Now add the appropriate values of fit range and packing - my $Range_Min = 8; - my $Range_Max = 0; - my $k = 0; - foreach my $Ti (@TiVals) { - my $Tf = $TfVals[$k]; - my $BIN = $BINVals[$k]; - $RUN_Block = $RUN_Block . $Single_RUN; - $RUN_Block =~ s/TINI/$Ti/g; - $RUN_Block =~ s/TFIN/$Tf/g; - $RUN_Block =~ s/BINNING/$BIN/g; - - # For multiple ranges use this - if ( $Ti < $Range_Min ) { $Range_Min = $Ti; } - if ( $Tf > $Range_Max ) { $Range_Max = $Tf; } - - $RUNS_Line = "$RUNS_Line " . $Range_Order; - ++$k; - ++$Range_Order; - } - ++$iRun; - } - - # The number of runs is - $NRUNS = $iRun - 1; - -# Start constructing all blocks - my $TitleLine = $All{"TITLE"}."\n# Run Numbers: ".$All{"RunNumbers"}; -# $TitleLine =~ s/,/:/g; - - # Get parameter block from MSR::PrepParamTable(\%All); - my $FitParaBlk = " -############################################################### -FITPARAMETER -############################################################### -# No Name Value Err Min Max "; - my %PTable=MSR::PrepParamTable(\%All); - my $NParam=scalar keys( %PTable ); -# Fill the table with labels and values of parametr - for (my $iP=0;$iP<$NParam;$iP++) { - my ($Param,$value,$error,$minvalue,$maxvalue,$RUNtmp) = split(/,/,$PTable{$iP}); - if ( $minvalue == $maxvalue ) { - $minvalue = $EMPTY; - $maxvalue = $EMPTY; - } - $PCount=$iP+1; - $FitParaBlk = $FitParaBlk." - $PCount $Param $value $error $error $minvalue $maxvalue"; - } - - $Full_T_Block = " -############################################################### -THEORY -############################################################### -$Full_T_Block -"; - - - $RUN_Block = - "############################################################### -$RUN_Block"; - - $COMMANDS_Block = - "############################################################### -COMMANDS -FITMINTYPE -SAVE -"; - $COMMANDS_Block =~ s/FITMINTYPE/$FITMINTYPE/g; - - # Check if log x and log y are selected - my $logxy = $EMPTY; - if ( $All{"logx"} eq "y" ) { $logxy = $logxy . "logx\n"; } - if ( $All{"logy"} eq "y" ) { $logxy = $logxy . "logy\n"; } - - # Check if a plot range is defined (i.e. different from fit) - $PRANGE_Line = "use_fit_ranges"; - if ( $All{"Xi"} != $All{"Xf"} ) { - - # if ($Yi != $Yf) { - $PRANGE_Line = "range ".$All{"Xi"}." ".$All{"Xf"}." ".$All{"Yi"}." ".$All{"Yf"}; - - # } else { - # $PRANGE_Line = "range $Xi $Xf"; - # } - } - - $VIEWBIN_Line =""; - if ( $All{"ViewBin"}!=0 ) { $VIEWBIN_Line = "view_packing ".$All{"ViewBin"};} - - my $RRFBlock=MSR::CreateRRFBlock(\%All); - $PLOT_Block = - "############################################################### -PLOT $PLT -runs $RUNS_Line -$PRANGE_Line -$VIEWBIN_Line -$RRFBlock -$logxy"; - - if ($All{"FUNITS"} eq $EMPTY) {$All{"FUNITS"}="MHz";} - if ($All{"FAPODIZATION"} eq $EMPTY) {$All{"FAPODIZATION"}="STRONG";} - if ($All{"FPLOT"} eq $EMPTY) {$All{"FPLOT"}="POWER";} - if ($All{"FPHASE"} eq $EMPTY) {$All{"FPHASE"}="8.5";} - - - $FOURIER_Block= - "############################################################### -FOURIER -units FUNITS # units either 'Gauss', 'MHz', or 'Mc/s' -fourier_power 12 -apodization FAPODIZATION # NONE, WEAK, MEDIUM, STRONG -plot FPLOT # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE -phase FPHASE -#range FRQMIN FRQMAX"; - - $FOURIER_Block=~ s/FUNITS/$All{"FUNITS"}/g; - $FOURIER_Block=~ s/FAPODIZATION/$All{"FAPODIZATION"}/g; - $FOURIER_Block=~ s/FPLOT/$All{"FPLOT"}/g; - $FOURIER_Block=~ s/FPHASE/$All{"FPHASE"}/g; - - # Don't know why but it is needed initially - $STAT_Block = - "############################################################### -STATISTIC --- 0000-00-00 00:00:00 -*** FIT DID NOT CONVERGE ***"; - - - # Empty line at the end of each block - my $FullMSRFile = "$TitleLine$FitParaBlk\n$Full_T_Block\n$FUNCTIONS_Block\n$RUN_Block\n$COMMANDS_Block\n$PLOT_Block\n$FOURIER_Block\n$STAT_Block\n"; - -# Open output file FILENAME.msr - open( OUTF,q{>},"$FILENAME.msr" ); - print OUTF ("$FullMSRFile"); - close(OUTF); - return($Full_T_Block,\@Paramcomp); -} - -########################################################################## -# CreateMSRSingleHist -########################################################################## -sub CreateMSRSingleHist { - my %All = %{$_[0]}; - - # Start with empty array - my @FitTypes = (); - - foreach ($All{"FitType1"},$All{"FitType2"},$All{"FitType3"}) { - if ($_ ne "None") { - @FitTypes=(@FitTypes,$_); - } - } - - my @Hists = split( /,/, $All{"LRBF"} ); - my @TiVals = split( /,/, $All{"Tis"} ); - my @TfVals = split( /,/, $All{"Tfs"} ); - my @BINVals = split( /,/, $All{"BINS"} ); - my $FILENAME = $All{"FILENAME"}; - my $BeamLine = $All{"BeamLine"}; - my $YEAR = $All{"YEAR"}; - - my $Step = $All{"go"}; - if ( $Step eq "PLOT" ) { - $FITMINTYPE = $EMPTY; - } elsif ( $Step eq "MIGRAD" ) { - $FITMINTYPE = "MINIMIZE\nMIGRAD\nHESSE"; - } elsif ( $Step eq "MINOS" ) { - $FITMINTYPE = "MIGRAD\nMINOS"; - } elsif ( $Step eq "SIMPLEX" ) { - $FITMINTYPE = "SCAN\nSIMPLEX"; - } - - # Proper way - if ( $All{"Minimization"} ne $EMPTY && $All{"ErrorCalc"} ne $EMPTY && $Step ne "PLOT" ) { - $FITMINTYPE = $All{"Minimization"}."\n".$All{"ErrorCalc"}; - } - - - # First create the THEORY Block - my ($Full_T_Block,$Paramcomp_ref)=MSR::CreateTheory(@FitTypes); - my @Paramcomp = @$Paramcomp_ref; - - # If we have a FUNCTIONS Block the Full_T_Block should be - # replaced by Func_T_Block - $FUNCTIONS_Block = $EMPTY; - if ($All{"FunctionsBlock"} ne $EMPTY) { - $FUNCTIONS_Block = " -############################################################### -FUNCTIONS -############################################################### -".$All{"FunctionsBlock"}."\n"; - $Full_T_Block=$All{"Func_T_Block"}; - # remove all _N to end - $Full_T_Block =~ s/_\d\b//g; - } - - # Counter for RUNS - my $iRun = 1; - - # Counter of Params - my $PCount = 1; - - # Need to select here RUNSAuto or RUNSManual - # $RUNSType = 0 (Auto) or 1 (Manual) - my $RUNSType = 0; - my @RUNS=(); - if ($All{"RunNumbers"} ne $EMPTY) { - @RUNS=split( /,/, $All{"RunNumbers"}); - $RUNSType = 0; - } - elsif ($All{"RunFiles"} ne $EMPTY) { - @RUNS=split( /,/, $All{"RunFiles"}); - $RUNSType = 1; - } - - # Until here identical to sub CreateMSR - # $shcount is a counter for shared parameters - if ( $#RUNS == 0 && $#Hists == 0) { - my $shcount = 1; - } else { - if ( $All{"Sh_No"} == 1 ) { - my $shcount = 1; - } elsif ( $All{"Sh_NBg"} == 1 ) { - my $shcount = 1; - } else { - my $shcount = 0; - } - } - - $shcount = 1; - my $RUN_Block = $EMPTY; - my $RUNS_Line = $EMPTY; - - # range order - my $Range_Order = 1; - my $iHist = 0; - foreach my $RUN (@RUNS) { -####################################################################### -# For a single histogram fit we basically need to repeat this for each hist -# However, "physical" parameters such as Asymmetry, relaxation etc. should -# be the same for all histograms -# We distinguich between sharing among different runs to common parameters -# for different histograms. The first is done in the usual "Sharing" schame, -# while the second has to be done in the functions block. This can be done -# in a consistent, non-confusing algorithm - foreach my $Hist (@Hists) { - - # Prepare the Parameters and initial values block - my $component = 0; - my $Single_RUN = $EMPTY; - - # Prepare map line for each run - my $MAP_Line = "map "; - - # How many non-shared parameter for this RUN? - my $nonsh = 0; - - # Prepeare No/NBg line for the RUN block. Empty initially. - my $NoBg_Line = $EMPTY; - - # Loop over all components in the fit - foreach my $FitType (@FitTypes) { - ++$component; - my $Parameters = $Paramcomp[ $component - 1 ]; - my @Params = split( /\s+/, $Parameters ); - # Only the first histiograms has new physical parameters - # the others keep only Phi if they have it - - # For the first component we need No and NBg for SingleHist fits - if ( $component == 1 ) { - unshift( @Params, ( "No", "NBg" ) ); - } - - foreach $Param (@Params) { - $Param_ORG = $Param; - $Param=$Param.$Hist; - if ( ($#FitTypes != 0) && !( $Param_ORG =~ m/^(No|NBg)/ ) ) { - $Param = join( $EMPTY, $Param, "_", "$component" ); - } - - # If we have only one RUN with one Histogram then everything is shared - if ( $#RUNS == 0 && $#Hists == 0 ) { - $Shared = 1; - } - # Otherwise check input if it was marked as shared - else { - $Shared = $All{"Sh_$Param"}; - } - - # No and NBg Lines - # - # If you encounter No in the parameters list make sure - # to fill this line for the RUN block. - if ( $Param_ORG eq "No" ) { - if ($Shared) { - $NoBg_Line = "norm 1\n"; - } - else { - $NoBg_Line = "norm $PCount\n"; - } - - # Optional - add lifetime correction for SingleHist fits - if ( $All{"ltc"} eq "y" ) { - $NoBg_Line = $NoBg_Line . "lifetimecorrection\n"; - } - } - # If you encounter NBg in the parameters list make sure - # to fill this line for the RUN block. - elsif ( $Param_ORG eq "NBg" ) { - if ($Shared) { - $NoBg_Line = $NoBg_Line . "backgr.fit 2\n"; - } - else { - $NoBg_Line = $NoBg_Line . "backgr.fit $PCount\n"; - } - } - - # End of No and NBg Lines -#################################################################################################### - - # Start preparing the parameters block - if ($Shared) { - # Parameter is shared enough to keep order from first run - if ( $iRun == 1 ) { - $Full_T_Block =~ s/$Param_ORG/$PCount/; - ++$shcount; - ++$PCount; - } - } else { - # Parameter is not shared, use map unless it is a single RUN fit - # Skip adding to map line in these cases - if ( !( $Param_ORG =~ m/^(No|NBg)/ ) && ($#RUNS != 0 || $#Hist != 0)) { - ++$nonsh; - $Full_T_Block =~ s/$Param_ORG/map$nonsh/; - $MAP_Line = join( ' ', $MAP_Line, $PCount ); - } - ++$PCount; - } - $NtotPar = $PCount; - } - } - - # Finished preparing the FITPARAMETERS block -####################################################################### - - # For each defined range we need a block in the RUN-Block - # Also for each histogram in Single Histograms fits - # Also for Imaginary and and Real for RRF fits - - $RUN = $RUNS[ $iRun - 1 ]; - - if ($All{"RUNSType"}) { - $RUN_Line = MSR::RUNFileNameMan($RUN); - } else { - $RUN_Line = MSR::RUNFileNameAuto($RUN,$YEAR,$BeamLine); - } - - $Type_Line = "fittype 0"; - $PLT = 0; - $Hist_Lines = "forward HIST"; - $Bg_Line = $EMPTY; - $Data_Line = "data"; - - foreach ("t0","Bg1","Bg2","Data1","Data2") { - $Name = "$_$Hist"; -# If empty fill with defaults - if ($All{$Name} eq $EMPTY) { - $All{$Name}=MSR::T0BgData($_,$Hist,$BeamLine); - } - } - $Bg_Line = $Bg_Line." ".$All{"Bg1$Hist"}." ".$All{"Bg2$Hist"}; - $Data_Line =$Data_Line." ".$All{"Data1$Hist"}." ".$All{"Data2$Hist"}; - if ($All{"t0$Hist"} ne $EMPTY) { - $Data_Line=$Data_Line."\nt0 ".$All{"t0$Hist"}; - } - - # $MAP_Line = "map 0 0 0 0 0 0 0 0 0 0"; - $FRANGE_Line = "fit TINI TFIN"; - $PAC_Line = "packing BINNING"; - - $Single_RUN = $EMPTY; - $Tmp_Hist_Line = $Hist_Lines; - $Tmp_Hist_Line =~ s/HIST/$Hist/g; - $Single_RUN = $Single_RUN - . "$RUN_Line\n$Type_Line\n$NoBg_Line$Tmp_Hist_Line\n$Data_Line\n$MAP_Line\n$FRANGE_Line\n$PAC_Line\n\n"; - - # Now add the appropriate values of fit range and packing - my $Range_Min = 8; - my $Range_Max = 0; - my $k = 0; - foreach my $Ti (@TiVals) { - my $Tf = $TfVals[$k]; - my $BIN = $BINVals[$k]; - $RUN_Block = $RUN_Block . $Single_RUN; - $RUN_Block =~ s/TINI/$Ti/g; - $RUN_Block =~ s/TFIN/$Tf/g; - $RUN_Block =~ s/BINNING/$BIN/g; - - # For multiple ranges use this - if ( $Ti < $Range_Min ) { $Range_Min = $Ti; } - if ( $Tf > $Range_Max ) { $Range_Max = $Tf; } - $RUNS_Line = "$RUNS_Line " . $Range_Order; - ++$k; - ++$Range_Order; - } - ++$iHist; - } - ++$iRun; - } - - # The number of runs is - $NRUNS = $iRun - 1; - -# Start constructing all block - my $TitleLine = $All{"TITLE"}."\n# Run Numbers: ".$All{"RunNumbers"}; - $TitleLine =~ s/,/:/g; - - # Get parameter block from MSR::PrepParamTable(\%All); - my $FitParaBlk = " -############################################################### -FITPARAMETER -############################################################### -# No Name Value Err Min Max "; - my %PTable=MSR::PrepParamTable(\%All); - my $NParam=scalar keys( %PTable ); -# Fill the table with labels and values of parametr - for (my $iP=0;$iP<$NParam;$iP++) { - my ($Param,$value,$error,$minvalue,$maxvalue,$RUNtmp) = split(/,/,$PTable{$iP}); - if ( $minvalue == $maxvalue ) { - $minvalue = $EMPTY; - $maxvalue = $EMPTY; - } - $PCount=$iP+1; - $FitParaBlk = $FitParaBlk." - $PCount $Param $value $error $error $minvalue $maxvalue"; - } - - $Full_T_Block = " -############################################################### -THEORY -############################################################### -$Full_T_Block -"; - - $RUN_Block = - "############################################################### -$RUN_Block"; - - $COMMANDS_Block = - "############################################################### -COMMANDS -FITMINTYPE -SAVE -"; - $COMMANDS_Block =~ s/FITMINTYPE/$FITMINTYPE/g; - - # Check if log x and log y are selected - my $logxy = $EMPTY; - if ( $All{"logx"} eq "y" ) { $logxy = $logxy . "logx\n"; } - if ( $All{"logy"} eq "y" ) { $logxy = $logxy . "logy\n"; } - - # Check if a plot range is defined (i.e. different from fit) - $PRANGE_Line = "use_fit_ranges"; - if ( $All{"Xi"} != $All{"Xf"} ) { - - # if ($Yi != $Yf) { - $PRANGE_Line = "range ".$All{"Xi"}." ".$All{"Xf"}." ".$All{"Yi"}." ".$All{"Yf"}; - - # } else { - # $PRANGE_Line = "range $Xi $Xf"; - # } - } - - my $RRFBlock=MSR::CreateRRFBlock(\%All); - $PLOT_Block = - "############################################################### -PLOT $PLT -runs $RUNS_Line -$PRANGE_Line -$RRFBlock -$logxy"; - - if ($All{"FUNITS"} eq $EMPTY) {$All{"FUNITS"}="MHz";} - if ($All{"FAPODIZATION"} eq $EMPTY) {$All{"FAPODIZATION"}="STRONG";} - if ($All{"FPLOT"} eq $EMPTY) {$All{"FPLOT"}="POWER";} - if ($All{"FPHASE"} eq $EMPTY) {$All{"FPHASE"}="8.5";} - - - $FOURIER_Block= - "############################################################### -FOURIER -units FUNITS # units either 'Gauss', 'MHz', or 'Mc/s' -fourier_power 12 -apodization FAPODIZATION # NONE, WEAK, MEDIUM, STRONG -plot FPLOT # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE -phase FPHASE -#range FRQMIN FRQMAX"; - - $FOURIER_Block=~ s/FUNITS/$All{"FUNITS"}/g; - $FOURIER_Block=~ s/FAPODIZATION/$All{"FAPODIZATION"}/g; - $FOURIER_Block=~ s/FPLOT/$All{"FPLOT"}/g; - $FOURIER_Block=~ s/FPHASE/$All{"FPHASE"}/g; - - # Don't know why but it is needed initially - $STAT_Block = - "############################################################### -STATISTIC --- 0000-00-00 00:00:00 -*** FIT DID NOT CONVERGE ***"; - - - # Empty line at the end of each block - my $FullMSRFile = "$TitleLine$FitParaBlk\n$Full_T_Block\n$FUNCTIONS_Block\n$RUN_Block\n$COMMANDS_Block\n$PLOT_Block\n$FOURIER_Block\n$STAT_Block\n"; - -# Open output file FILENAME.msr - open( OUTF,q{>},"$FILENAME.msr" ); - print OUTF ("$FullMSRFile"); - close(OUTF); - return($Full_T_Block,\@Paramcomp); -} - -########################################################################## -# CreateMSRGLB -# -# Uses CreateMSR to produce a template and then msr2data to globalize it -# -# Input in %All -# -# Output -# $Full_T_Block - Full theory block -# @Paramcomp - Space separated list of parameters for each component -# FILENAME.msr - MSR file saved -# -########################################################################## -sub CreateMSRGLB { - my %All = %{$_[0]}; - - my @RUNS = (); - if ($All{"RUNSType"}) { -# Make sure this globalization is disabled if RunFiles are used - @RUNS = split( /,/, $All{"RunFiles"} ); - } else { - @RUNS = split( /,/, $All{"RunNumbers"} ); - } - -# Make example from first run - $All{"RunNumbers"}=$RUNS[0]; - my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSR(\%All); - -# TODO: create global file from example file - - -# Return as usual - my @Paramcomp = @$Paramcomp_ref; - return($Full_T_Block,\@Paramcomp); -} - -######################## -# Createheory -######################## -sub CreateTheory { - # This subroutine requires: - # @FitTypes - the array of the types of components (summed) - - # It will return: - # $Full_T_Block - the full theory block with names of parameters - # @Paramcomp - an array of space separated list of parameters - # each member of the array is one component - - my (@FitTypes) = @_; - - # Start from this theory line for the different fitting functions - my %THEORY = ( - "asymmetry", "Asy", - "simplExpo", "Lam", - "generExpo", "Lam Bet", - "simpleGss", "Sgm", - "statGssKT", "Sgm", - "statGssKTLF", "Frqg Sgm", - "dynGssKTLF", "Frql Sgm Lam", - "statExpKT", "Lam", - "statExpKTLF", "Frq Aa", - "dynExpKTLF", "Frq Aa Lam", - "combiLGKT", "Lam Sgm", - "spinGlass", "Lam gam q", - "rdAnisoHf", "Frq Lam", - "TFieldCos", "Phi Frq", - "internFld", "Alp Phi Frq LamT LamL", - "Bessel", "Phi Frq", - "internBsl", "Alp Phi Frq LamT LamL", - "abragam", "Sgm gam", - "Meissner", "Phi Energy Field DeadLayer Lambda", - "skewedGss", "Phi Frq Sgmm Sgmp" - ); - -####################################################################### - # Generate the full THEORY block - my $Full_T_Block = $EMPTY; - my $component = 0; - foreach my $FitType (@FitTypes) { - ++$component; - # Add components - if ( $component > 1 ) { - $Full_T_Block = $Full_T_Block . "\n+\n"; - } - - # For each component there is a THEORY block starting with "asymmetry" - my $T_Block = "asymmetry " . $THEORY{'asymmetry'}; - my $Parameters = $THEORY{'asymmetry'}; - - # Compose the THEORY block - # The duplicate names are changed for multiplied signals or just - # change names to match parameters list declared for the function - - # Stretch exponential - if ( $FitType eq "Stretch" ) { - $T_Block = $T_Block . "\n" . "generExpo " . $THEORY{'generExpo'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'generExpo'} ); - } - - # Exponential - elsif ( $FitType eq "Exponential" ) { - $T_Block = $T_Block . "\n" . "simplExpo " . $THEORY{'simplExpo'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'simplExpo'} ); - } - - # Gaussian - elsif ( $FitType eq "Gaussian" ) { - $T_Block = $T_Block . "\n" . "simpleGss " . $THEORY{'simpleGss'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'simpleGss'} ); - } - - # Exponential with 0 relaxation - elsif ( $FitType eq "Background" ) { - - # Do nothing - } - - # Oscillationg exponential - elsif ( $FitType eq "ExponentialCos" ) { - $T_Block = $T_Block . "\n" . "simplExpo " . $THEORY{'simplExpo'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'simplExpo'} ); - $T_Block = $T_Block . "\n" . "TFieldCos " . $THEORY{'TFieldCos'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'TFieldCos'} ); - } - - # Oscillationg gaussian - elsif ( $FitType eq "GaussianCos" ) { - $T_Block = $T_Block . "\n" . "simpleGss " . $THEORY{'simpleGss'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'simpleGss'} ); - $T_Block = $T_Block . "\n" . "TFieldCos " . $THEORY{'TFieldCos'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'TFieldCos'} ); - } - - # Oscillationg stretch exponential - elsif ( $FitType eq "StretchCos" ) { - $T_Block = $T_Block . "\n" . "generExpo " . $THEORY{'generExpo'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'generExpo'} ); - $T_Block = $T_Block . "\n" . "TFieldCos " . $THEORY{'TFieldCos'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'TFieldCos'} ); - } - - # Oscillationg Gaussian - elsif ( $FitType eq "GaussianCos" ) { - $T_Block = $T_Block . "\n" . "simpelGss " . $THEORY{'simpelGss'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'simpleGss'} ); - $T_Block = $T_Block . "\n" . "TFieldCos " . $THEORY{'TFieldCos'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'TFieldCos'} ); - } - - # Static Lorentzian KT - elsif ( $FitType eq "SLKT" ) { - $T_Block = $T_Block . "\n" . "statExpKT " . $THEORY{'statExpKT'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'statExpKT'} ); - } - - # Static Lorentzian KT LF - elsif ( $FitType eq "SLKTLF" ) { - $T_Block = - $T_Block . "\n" . "statExpKTLF " . $THEORY{'statExpKTLF'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'statExpKTLF'} ); - } - - # Dynamic Lorentzian KT LF - elsif ( $FitType eq "LDKTLF" ) { - $T_Block = $T_Block . "\n" . "dynExpKTLF " . $THEORY{'dynExpKTLF'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'dynExpKTLF'} ); - } - - # Static Gaussian KT - elsif ( $FitType eq "SGKT" ) { - $T_Block = $T_Block . "\n" . "statGssKT " . $THEORY{'statGssKT'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'statGssKT'} ); - } - - # Static Gaussian KT LF - elsif ( $FitType eq "SGKTLF" ) { - $T_Block = - $T_Block . "\n" . "statGssKTLF " . $THEORY{'statGssKTLF'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'statGssKTLF'} ); - } - - # Dynamic Gaussian KT LF - elsif ( $FitType eq "GDKTLF" ) { - $T_Block = $T_Block . "\n" . "dynGssKTLF " . $THEORY{'dynGssKTLF'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'dynGssKTLF'} ); - } - - # Now some more combined functions (multiplication). - - # Lorentzian KT LF multiplied by exponential - elsif ( $FitType eq "LLFExp" ) { - $T_Block = $T_Block . "\n" . "simplExpo " . $THEORY{'simplExpo'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'simplExpo'} ); - $T_Block = - $T_Block . "\n" . "statExpKTLF " . $THEORY{'statExpKTLF'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'statExpKTLF'} ); - } - - # Lorentzian KT LF multiplied by stretched exponential - elsif ( $FitType eq "LLFSExp" ) { - $T_Block = $T_Block . "\n" . "generExpo " . $THEORY{'generExpo'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'generExpo'} ); - $T_Block = - $T_Block . "\n" . "statExpKTLF " . $THEORY{'statExpKTLF'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'statExpKTLF'} ); - } - - # Gaussian KT LF multiplied by exponential - elsif ( $FitType eq "GLFExp" ) { - $T_Block = $T_Block . "\n" . "simplExpo " . $THEORY{'simplExpo'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'simplExpo'} ); - $T_Block = - $T_Block . "\n" . "statGssKTLF " . $THEORY{'statGssKTLF'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'statGssKTLF'} ); - } - - # Gaussian KT LF multiplied by stretched exponential - elsif ( $FitType eq "GLFSExp" ) { - $T_Block = $T_Block . "\n" . "generExpo " . $THEORY{'generExpo'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'generExpo'} ); - $T_Block = - $T_Block . "\n" . "statGssKTLF " . $THEORY{'statGssKTLF'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'statGssKTLF'} ); - } - - # Lorentzian or Gaussian KT LF multiplied by stretched exponential - elsif ( $FitType eq "MolMag" ) { - $T_Block = $T_Block . "\n" . "generExpo " . $THEORY{'generExpo'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'generExpo'} ); - $T_Block = - $T_Block . "\n" . "statExpKTLF " . $THEORY{'statExpKTLF'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'statExpKTLF'} ); - $T_Block = - $T_Block . "\n" . "statGssKTLF " . $THEORY{'statGssKTLF'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'statGssKTLF'} ); - } - - # Meissner state model - elsif ( $FitType eq "Meissner" ) { - $T_Block = $T_Block . "\n" . "simpleGss " . $THEORY{'simpleGss'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'simpleGss'} ); - $T_Block = - $T_Block . "\n" - . "userFcn libTFitPofB.so TLondon1DHS " - . $THEORY{'Meissner'}; - $Parameters = join( $SPACE, $Parameters, $THEORY{'Meissner'} ); - } - - $Paramcomp[ $component - 1 ] = $Parameters; - $Full_T_Block = $Full_T_Block . $T_Block; - - # Finished preparing the THEORY block -####################################################################### - } - return($Full_T_Block,\@Paramcomp); -} # End CreateTheory - -######################## -# ExtractBlks -######################## -sub ExtractBlks { -# This subroutine takes the MSR file as input and extracts the parameters -# with the corresponding values, errors etc... - -# Take the msr file as input array of lines - my @file=@_; - - my $NFITPARAMETERS=0; - my $NTHEORY=0; - my $NRUN=0; - -# Remove comment lines - @file = grep {!/^\#/} @file; -# Remove empty lines - @file = grep {/\S/} @file; - -# Identify different blocks - my $i=0; - my $line =$EMPTY; - foreach $line (@file) - { - if (grep {/FITPARAMETER/} $line) {$NFITPARAMETERS=$i;} - if (grep {/THEORY/} $line) { $NTHEORY=$i;} - if ((grep {/RUN/} $line) & $NRUN==0) { $NRUN=$i;} - $i++; - } - my @FPBlock=@file[$NFITPARAMETERS+1..$NTHEORY-1]; - my @TBlock=@file[$NTHEORY+1..$NRUN-1]; - -# Split parameter's line to extract values and errors - foreach $line (@FPBlock) { - my @Param=split(/\s+/,$line); - } - - return(\@TBlock,\@FPBlock); -} - - -######################## -# T0BgData -# Function return the defaul value of t0, Bg and Data bin -# input should be -# $Name is t0,Bg1,Bg2,Data1,Data2 -# $Hist is the histogram number -# $BeamLine in the name of beamline -######################## -sub T0BgData { -# Take this information as input arguments - (my $Name, my $Hist, my $BeamLine) = @_; - -# These are the default values, ordered by beamline -# Comma at the beginning means take default t0 from file -# The order is pairs of "HistNumber","t0,Bg1,Bg2,Data1,Data2" - my %LEM=("1",",66000,66500,3419,63000", - "2",",66000,66500,3419,63000", - "3",",66000,66500,3419,63000", - "4",",66000,66500,3419,63000"); - -# my %GPS=("1",",40,120,135,8000", -# "2",",40,120,135,8000", -# "3",",40,120,135,8000", -# "4",",40,120,135,8000"); - -# my %Dolly=("1",",50,250,297,8000", -# "2",",50,250,297,8000", -# "3",",50,250,297,8000", -# "4",",50,250,297,8000"); - - my %RV=(); - -# If multiple histograms (sum or difference) take the first histogram only - my @Hists=split(/ /,$Hist); - - if ($BeamLine eq "LEM") { - my $HistParams=$LEM{$Hists[0]}; - ($RV{"t0"},$RV{"Bg1"},$RV{"Bg2"},$RV{"Data1"},$RV{"Data2"})=split(/,/,$HistParams); - } - elsif ($BeamLine eq "Dolly") { - my $HistParams=$Dolly{$Hists[0]}; - ($RV{"t0"},$RV{"Bg1"},$RV{"Bg2"},$RV{"Data1"},$RV{"Data2"})=split(/,/,$HistParams); - } - elsif ($BeamLine eq "GPS") { - my $HistParams=$GPS{$Hists[0]}; - ($RV{"t0"},$RV{"Bg1"},$RV{"Bg2"},$RV{"Data1"},$RV{"Data2"})=split(/,/,$HistParams); - } - return $RV{$Name}; - -} - -######################## -# PrepParamTable -# Function return a Hash with a table of parameters for the fit -# input should be -# %All -######################## -sub PrepParamTable { -# Take this information as input arguments -# "Smart" default value of the fit parameters. - my %Defaults = ( - "Asy", "0.15", "dAsy", "0.01", - "Asy_min", "0", "Asy_max", "0", - "Alpha", "1.0", "dAlpha", "0.01", - "Alpha_min", "0", "Alpha_max", "0", - "No", "300.0", "dNo", "0.01", - "No_min", "0", "No_max", "0", - "NBg", "30.0", "dNBg", "0.01", - "NBg_min", "0", "NBg_max", "0", - "Lam", "1.0", "dLam", "0.01", - "Lam_min", "0", "Lam_max", "0", - "Gam", "1.0", "dGam", "0.01", - "Gam_min", "0", "Gam_max", "0", - "Bet", "0.5", "dBet", "0.01", - "Bet_min", "0", "Bet_max", "0", - "Two", "2.0", "dTwo", "0.0", - "Two_min", "0", "Two_max", "0", - "Del", "0.1", "dDel", "0.01", - "Del_min", "0", "Del_max", "0", - "Sgm", "0.1", "dSgm", "0.01", - "Sgm_min", "0", "Sgm_max", "0", - "Aa", "60.", "dAa", "0.01", - "Aa_min", "0", "Aa_max", "0", - "q", "0.1", "dq", "0.01", - "q_min", "0", "q_max", "0", - "Bg", "0.036", "dBg", "0.01", - "Bg_min", "0", "Bg_max", "0", - "bgrlx", "0.", "dbgrlx", "0.0", - "bgrlx_min", "0", "bgrlx_max", "0", - "Frq", "1.0", "dFrq", "1.", - "Frq_min", "0", "Frq_max", "0", - "Field", "100.0", "dField", "1.", - "Field_min", "0", "Field_max", "0", - "Energy", "14.1", "dEnergy", "0.", - "Energy_min", "0", "Energy_max", "0", - "DeadLayer", "10.", "dDeadLayer", "0.1", - "DeadLayer_min", "0", "DeadLayer_max", "0", - "Lambda", "128.1", "dLambda", "0.1", - "Lambda_min", "0", "Lambda_max", "0", - "Phi", "1.", "dPhi", "0.01", - "Phi_min", "0", "Phi_max", "0" - ); - - my $erradd = "d"; - my $minadd = "_min"; - my $maxadd = "_max"; - -# First assume nothing is shared - my $Shared = 0; - -# Reset output Hash - %ParTable = (); - - my %All = %{$_[0]}; - my @RUNS = (); - if ($All{"RUNSType"}) { - @RUNS = split( /,/, $All{"RunFiles"} ); - } else { - @RUNS = split( /,/, $All{"RunNumbers"} ); - } - my @Hists = split( /,/, $All{"LRBF"} ); - - my @FitTypes =(); - foreach my $FitType ($All{"FitType1"}, $All{"FitType2"}, $All{"FitType3"}) { - if ( $FitType ne "None" ) { push( @FitTypes, $FitType ); } - } -# Get theory block to determine the size of the table - my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateTheory(@FitTypes); -# For now the line below does not work. Why? -# my $Paramcomp_ref=$All{"Paramcomp_ref"}; - my @Paramcomp = @$Paramcomp_ref; - my $Full_T_Block= $All{"Full_T_Block"}; - my $PCount =0; - my $iRun =0; - my $value =0; - my $error = 0; - my $minvalue = 0; - my $maxvalue = 0; - my $Component=1; - - foreach my $RUN (@RUNS) { - $iRun++; - $Component=1; - if ($All{"FitAsyType"} eq "Asymmetry") { - foreach my $FitType (@FitTypes) { - my $Parameters=$Paramcomp[$Component-1]; - my @Params = split( /\s+/, $Parameters ); - if ( $Component == 1 ) { - unshift( @Params, "Alpha" ); - } - -# This is the counter for parameters of this component - my $NP=1; - $Shared = 0; -# Change state/label of parameters - foreach my $Param (@Params) { - my $Param_ORG = $Param; - if ( $#FitTypes != 0 && ( $Param ne "Alpha" ) ){ - $Param = join( $EMPTY, $Param, "_", "$Component" ); - } - - $Shared = $All{"Sh_$Param"}; - if ( $Shared!=1 || $iRun == 1 ) { -# It there are multiple runs index the parameters accordingly - my $RUNtmp=sprintf("%04d",$RUN); - if ($Shared!=1) {$Param=$Param."_".$RUNtmp;} -# Check if this parameter has been initialized befor. If not take from defaults - $value = $All{"$Param"}; - if ( $value ne $EMPTY ) { - $error = $All{"$erradd$Param"}; - $minvalue = $All{"$Param$minadd"}; - $maxvalue = $All{"$Param$maxadd"}; - } else { -# I need this although it is already in the MSR.pm module, just for this table -# We can remove it from the MSR module later... -# Or keep in the MSR as function ?? - - -# We have two options here, either take default values or take values of previous -# run if available -# $ParamPrev =~ s/$iRun-1/$iRun/g; - $value = $Defaults{$Param_ORG}; - $error = $Defaults{ join( $EMPTY, $erradd, $Param_ORG ) }; - $minvalue = $Defaults{ join($EMPTY, $Param_ORG, $minadd ) }; - $maxvalue = $Defaults{ join($EMPTY, $Param_ORG, $maxadd ) }; - } - $values=join(",",$Param,$value,$error,$minvalue,$maxvalue,$RUN); - $ParTable{$PCount}=$values; - $PCount++; - } - $NP++; - } - $Component++; - } - } - elsif ($All{"FitAsyType"} eq "SingleHist") { -# For a single histogram fit we basically need to repeat this for each hist - foreach my $Hist (@Hists) { - $Component=1; - foreach my $FitType (@FitTypes) { - my $Parameters=$Paramcomp[$Component-1]; - my @Params = split( /\s+/, $Parameters ); - if ( $Component == 1 ) { - unshift( @Params, ( "No", "NBg" ) ); - } - -# This is the counter for parameters of this component - my $NP=1; - $Shared = 0; -# Change state/label of parameters - foreach my $Param (@Params) { - my $Param_ORG = $Param; - # If multiple histograms (sum or difference) take the first histogram only - ($Hist,$tmp) = split(/ /,$Hist); - $Param=$Param.$Hist; - if ( $#FitTypes != 0 && ( $Param_ORG ne "No" && $Param_ORG ne "NBg" ) ){ - $Param = join( $EMPTY, $Param, "_", "$Component" ); - } - - $Shared = $All{"Sh_$Param"}; - if ( $Shared!=1 || $iRun == 1 ) { -# It there are multiple runs index the parameters accordingly - my $RUNtmp=sprintf("%04d",$RUN); - if ($Shared!=1) {$Param=$Param."_".$RUNtmp;} -# Check if this parameter has been initialized befor. If not take from defaults - $value = $All{"$Param"}; - if ( $value ne $EMPTY ) { - $error = $All{"$erradd$Param"}; - $minvalue = $All{"$Param$minadd"}; - $maxvalue = $All{"$Param$maxadd"}; - } else { -# I need this although it is already in the MSR.pm module, just for this table -# We can remove it from the MSR module later... -# Or keep in the MSR as function ?? - $value = $Defaults{$Param_ORG}; - $error = $Defaults{ join( $EMPTY, $erradd, $Param_ORG ) }; - $minvalue = $Defaults{ join($EMPTY, $Param_ORG, $minadd ) }; - $maxvalue = $Defaults{ join($EMPTY, $Param_ORG, $maxadd ) }; - } - $values=join(",",$Param,$value,$error,$minvalue,$maxvalue,$RUN); - $ParTable{$PCount}=$values; - $PCount++; - } - $NP++; - } - $Component++; - } - } - } - - } - return %ParTable; -} - - -######################## -# ExportParams -# Function return a tab separated table of parameters for the fit -# input should be -# %All -######################## -sub ExportParams { - my $erradd = "d"; - my $minadd = "_min"; - my $maxadd = "_max"; - -# First assume nothing is shared - my $Shared = 0; - - my $TABLE=$EMPTY; - my $HEADER="RUN"; - - my %All = %{$_[0]}; - my @RUNS = (); - if ($All{"RUNSType"}) { - @RUNS = split( /,/, $All{"RunFiles"} ); - } else { - @RUNS = split( /,/, $All{"RunNumbers"} ); - } - my @Hists = split( /,/, $All{"LRBF"} ); - - my @FitTypes =(); - foreach my $FitType ($All{"FitType1"}, $All{"FitType2"}, $All{"FitType3"}) { - if ( $FitType ne "None" ) { push( @FitTypes, $FitType ); } - } -# Get theory block to determine the size of the table - my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateTheory(@FitTypes); -# For now the line below does not work. Why? -# my $Paramcomp_ref=$All{"Paramcomp_ref"}; - my @Paramcomp = @$Paramcomp_ref; - my $Full_T_Block= $All{"Full_T_Block"}; - -# Extract parameter block form the MSR file -# my $FILENAME=$All{"FILENAME"}; -# open (MSRF,q{<},"$FILENAME.msr" ); -# my @lines = ; -# close(IFILE); -# my $FPBlock_ref=MSR::ExtractBlks(@lines); -# my @FPBloc = @$FPBlock_ref; - -# Then loop over expected parameters and extract their values and error bar - my $PCount =0; - my $iRun =0; - my $value =0; - my $error = 0; - my $minvalue = 0; - my $maxvalue = 0; - my $Component=1; - - foreach my $RUN (@RUNS) { - my $line="$RUN"; - $iRun++; - $Component=1; - if ($All{"FitAsyType"} eq "Asymmetry") { - foreach my $FitType (@FitTypes) { - my $Parameters=$Paramcomp[$Component-1]; - my @Params = split( /\s+/, $Parameters ); - if ( $Component == 1 ) { - unshift( @Params, "Alpha" ); - } - -# This is the counter for parameters of this component - my $NP=1; - $Shared = 0; -# Change state/label of parameters - foreach my $Param (@Params) { - my $Param_ORG = $Param; - if ( $#FitTypes != 0 && ( $Param ne "Alpha" ) ){ - $Param = join( $EMPTY, $Param, "_", "$Component" ); - } - # $All{"Header"} - 0/1 for with/without header - if ($All{"Header"} && $iRun == 1) { - $HEADER=join("\t",$HEADER,$Param,"$erradd$Param"); - } - - $Shared = $All{"Sh_$Param"}; - if ( $Shared!=1 || $iRun == 1 ) { -# If there are multiple runs index the parameters accordingly - my $RUNtmp=sprintf("%04d",$RUN); - if ($Shared!=1) {$Param=$Param."_".$RUNtmp;} -# Check if this parameter has been initialized befor. (should be) - $value = $All{"$Param"}; - $error = $All{"$erradd$Param"}; - - $line=join("\t",$line,$value,$error); - $PCount++; - } - elsif ($Shared==1) { -# The parameter is shared, take the value from the first run - $Param=$Param; - $value = $All{"$Param"}; - $error = $All{"$erradd$Param"}; - $line=join("\t",$line,$value,$error); - } - $NP++; - } - $Component++; - } - } - elsif ($All{"FitAsyType"} eq "SingleHist") { -# For a single histogram fit we basically need to repeat this for each hist - foreach my $Hist (@Hists) { - $Component=1; - foreach my $FitType (@FitTypes) { - my $Parameters=$Paramcomp[$Component-1]; - my @Params = split( /\s+/, $Parameters ); - if ( $Component == 1 ) { - unshift( @Params, ( "No", "NBg" ) ); - } - -# This is the counter for parameters of this component - my $NP=1; - $Shared = 0; -# Change state/label of parameters - foreach my $Param (@Params) { - my $Param_ORG = $Param; - $Param=$Param.$Hist; - if ( $#FitTypes != 0 && ( $Param_ORG ne "No" && $Param_ORG ne "NBg" ) ){ - $Param = join( $EMPTY, $Param, "_", "$Component" ); - } - - $Shared = $All{"Sh_$Param"}; - if ( $Shared!=1 || $iRun == 1 ) { -# If there are multiple runs index the parameters accordingly - my $RUNtmp=sprintf("%04d",$RUN); - if ($Shared!=1) {$Param=$Param."_".$RUNtmp;} -# Check if this parameter has been initialized befor. (should be) - $value = $All{"$Param"}; - $error = $All{"$erradd$Param"}; - $minvalue = $All{"$Param$minadd"}; - $maxvalue = $All{"$Param$maxadd"}; - - $values=join("\t",$Param,$value,$error,$minvalue,$maxvalue,$RUN); - $ParTable{$PCount}=$values; - $PCount++; - } - $NP++; - } - $Component++; - } - } - } - $TABLE=$TABLE."$line\n" - } - if ($All{"Header"}) { - $TABLE=$HEADER."\n".$TABLE; - } - - return $TABLE; -} - -######################## -# MSR2Dat -# Function return a tab separated table of parameters from an MSR file -# input should be -# @msrfile -######################## -sub MSR2Dat { - # Take the msr file as input array of lines - my @file=@_; - - # Extract PRAMETERS and THEORY Blocks - (my $TBlock_ref, my $FPBlock_ref)=MSR::ExtractBlks(@file); - my @FPBlock = @$FPBlock_ref; - my @TBlock = @$TBlock_ref; - -# Get shared parameters - foreach $TLine (@TBlock) { - # Then split it to find numbers of shared parameters - @tmp=split(/\s+/,$TLine); - foreach (@tmp) { - if ($_ eq $_+0 ) { - # This is a number, keep it in the Shared arry - @Shared=(@Shared,$_); - } - } - } - -# Nice trick, make a hash for unique RUN lines -# Find spectrum lines - my @MAPS = grep {/map /} @file; - my @RUNS = grep {/RUN/} @file; - my $counter=0; - foreach $key (@RUNS){ - # This gets rid of duplicates - $RUN{$key}=$counter; - $MAP{$key}=$MAPS[$counter]; - $counter++; - } - -# Number of runs (or independent sets of parameters) in this file - my $NRuns=1; - foreach (sort { $RUN{$a} <=> $RUN{$b}} keys %RUN ) { - @RunParams=(); - $NP=0; - @tmp=split(/\s+/,$MAP{$_}); - # Remove first element (map) - shift(@tmp); - foreach (@tmp) { - if ($_ ne $EMPTY && $_>0 ) { - @RunParams=(@RunParams,$_); - $NP++; - } - } - if ($NP>0) { - $orders=join(",",@RunParams); - $RUNParams[$NRuns]=$orders; - $NRuns++; - } - } - -# Split parameter's line to extract values and errors - foreach $line (@FPBlock) { - @Param=split(/\s+/,$line); - # Create a hash with the parameter order as a key - # and the value and error as value - $P{$Param[1]}=$Param[3].",".$Param[4]; - $PName{$Param[1]}=$Param[2]; - } - -# Now we have everything. Lets start ordering - # First lines is names - @Pnum=split(/,/,$RUNParams[1]); - foreach (@Pnum,@Shared) { - $DatFile=join("\t",$DatFile,$PName{$_},"d".$PName{$_}); - } - $DatFile=$DatFile."\n"; - - # For the values from all the files. - # I am not checking if all the files have the same theory function - for ($i=1;$i<=$NRuns-1;$i++) { - @Pnum=split(/,/,$RUNParams[$i]); - # First go for the shared parameters - foreach (@Pnum,@Shared) { - ($value,$err)=split(/,/,$P{$_}); - $DatFile=join("\t",$DatFile,$value,$err); - } - $DatFile=$DatFile."\n"; - } - return $DatFile; -} - - -######################## -# RUNFileNameAuto -# Function return the RUN_Line for a given RUN -# input should be -# $RUN is the run number -# $YEAR is the year -# $BeamLine in the name of beamline -######################## -sub RUNFileNameAuto { -# Take this information as input arguments - (my $RUN, my $YEAR, my $BeamLine) = @_; - - my $DATADIR = $DATADIRS{$BeamLine}; - my $RUNtmp=sprintf("%04d",$RUN); - - # Get current year - my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = - localtime( time() ); - my $current_year = $year + 1900; - - if ( $BeamLine eq "LEM" || $BeamLine eq "LEM (PPC)") { - $RUN_File_Name = "lem" . substr( $YEAR, 2 ) . "_his_" . $RUNtmp; - $RUNFILE = "$DATADIR/$YEAR/$RUN_File_Name"; - } - elsif ( $BeamLine eq "GPS" ) { - $RUN_File_Name = "deltat_tdc_gps_" . $RUNtmp; - $RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name"; - } - elsif ( $BeamLine eq "LTF" ) { - $RUN_File_Name = "deltat_tdc_ltf_" . $RUNtmp; - $RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name"; - } - elsif ( $BeamLine eq "Dolly" ) { - $RUN_File_Name = "deltat_tdc_dolly_" . $RUNtmp; - $RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name"; - } - elsif ( $BeamLine eq "GPD" ) { - $RUN_File_Name = "deltat_tdc_gpd_" . $RUNtmp; - $RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name"; - } - my $RUN_Line = join( $SPACE, - "RUN", $RUNFILE, $BeamLines{$BeamLine}, "PSI", - $Def_Format{$BeamLine} ); - return $RUN_Line; -} - -######################## -# RUNFileNameMan -# Function return the RUN_Line for a given RUN -# input should be -# $RUN is the run number -# $YEAR is the year -# $BeamLine in the name of beamline -######################## -sub RUNFileNameMan { - my %EXTs = ("root","ROOT-NPP", - "bin","PSI-BIN", - "msr","MUD"); - -# Take this information as input arguments - (my $RUN) = @_; - my @tmp = split(/\./,$RUN); - my $EXT = @tmp[$#tmp]; - - $RUN =~ s/\.[^.]+$//; - - my $RUN_Line = join( $SPACE, - "RUN", $RUN, "MUE4", "PSI",$EXTs{$EXT}); - - return $RUN_Line; -} - -######################## -# ExtractInfoLEM -######################## -# This creates the RRF related lines, these are the same always -sub CreateRRFBlock { - - my %All = %{$_[0]}; - - $RRFBlock=""; - if ($All{"RRFFrq"}!= 0) { - if ($All{"RRFPhase"} eq $EMPTY) {$All{"RRFPhase"}=0;} - if ($All{"RRFPack"} eq $EMPTY) {$All{"RRFPack"}=1;} - $RRFBlock="rrf_freq ".$All{"RRFFrq"}." ".$All{"RRFUnits"}."\n"; - $RRFBlock=$RRFBlock."rrf_phase ".$All{"RRFPhase"}."\n"; - $RRFBlock=$RRFBlock."rrf_packing ".$All{"RRFPack"}."\n"; - } - return $RRFBlock; -} - - - - -######################## -# ExtractInfoLEM -######################## -# Uset to extract information from summary files -sub ExtractInfoLEM { - my ($RUN,$YEAR,$Arg) = @_; - my $Summ_File_Name = "lem" . substr( $YEAR, 2 ) . "_" . $RUN . ".summ"; - my $SummFile = "$SUMM_DIR/$YEAR/$Summ_File_Name"; - - open( SFILE,q{<}, "$SummFile" ); - my @lines = ; - close(SFILE); - - if ( $Arg eq "TITLE" ) { - $RTRN_Val = $lines[3]; - $RTRN_Val =~ s/\n//g; - } - elsif ( $Arg eq "Temp" ) { - foreach my $line (@lines) { - if ( $line =~ /Mean Sample_CF1/ ) { - ( my $tmp, my $T ) = split( /=/, $line ); - ( $T, $tmp ) = split( /\(/, $T ); - $RTRN_Val = $T; - } - } - - } - elsif ( $Arg eq "Field" ) { - foreach my $line (@lines) { - if ( $line =~ /Mean B field/ ) { - ( $tmp, my $B ) = split( /=/, $line ); - ( $B, $tmp ) = split( /\(/, $B ); - $RTRN_Val = $B; - } - } - } - elsif ( $Arg eq "Energy" ) { - foreach my $line (@lines) { - if ( $line =~ /implantation energy/ ) { - ( my $tmp1, my $tmp2, my $E ) = split( /=/, $line ); - ( $E, $tmp ) = split( /keV/, $E ); - $RTRN_Val = $E; - } - } - - } - # $RTRN_Val =~ s/[\.\~\/\&\*\[\;\>\<\^\$\(\)\`\|\]\'\@]//g; - return $RTRN_Val; -} - -# Uset to extract information from log files -sub ExtractInfoBulk { - my ($RUN,$AREA,$YEAR,$Arg) = @_; - my $RUNtmp=sprintf("%04d",$RUN); - $RUN=$RUNtmp; - -# Information may be found in these file - my $DBFILE=$DBDIR{$AREA}.$YEAR."/*.runs"; - my @Lines =`cat $DBFILE`; - -# Select intries with the right area - my $area=lc $AREA; - my @Lines1 = grep { /$area/ } @Lines; - my @Lines2 = grep { /$AltArea{$AREA}/ } @Lines; - @Lines=(@Lines1,@Lines2); -# Select intries with the right run number - @Lines = grep { /$RUN/ } @Lines; - @Words=split(/\s+/,$Lines[0]); - - if ( $Arg eq "TITLE" ) { - $RTRN_Val = substr($Lines[0],104); - } - elsif ( $Arg eq "Temp" ) { - $RTRN_Val = $Words[6]; - } - elsif ( $Arg eq "Field" ) { - $RTRN_Val = $Words[7]; - } - - return $RTRN_Val; -} - - - - -1; diff --git a/src/external/MuSRFitGUI/devel/MuSRFit.pl b/src/external/MuSRFitGUI/devel/MuSRFit.pl deleted file mode 100755 index fff4ab13..00000000 --- a/src/external/MuSRFitGUI/devel/MuSRFit.pl +++ /dev/null @@ -1,4492 +0,0 @@ -# Form implementation generated from reading ui file 'MuSRFit.ui' -# -# Created: Mon Aug 29 15:52:41 2011 -# by: The PerlQt User Interface Compiler (puic) -# -# WARNING! All changes made in this file will be lost! - - -use strict; -use utf8; - - -package MuSRFitform; -use Qt; -use Qt::isa qw(Qt::MainWindow); -use Qt::slots - fileOpen => [], - fileSave => [], - fileChangeDir => [], - filePrint => [], - fileExit => [], - parametersExport => [], - parametersAppend => [], - editUndo => [], - editRedo => [], - editCut => [], - editCopy => [], - editPaste => [], - helpIndex => [], - helpContents => [], - helpAbout => [], - CreateAllInput => [], - CallMSRCreate => [], - UpdateMSRFileInitTable => [], - ActivateT0Hists => [], - ActivateShComp => [], - InitializeTab => [], - TabChanged => [], - GoFit => [], - GoPlot => [], - ShowMuSRT0 => [], - T0Update => [], - RunSelectionToggle => [], - fileBrowse => [], - AppendToFunctions => [], - InitializeFunctions => [], - optionConfigure => [], - t0UpdateClicked => []; -use Qt::attributes qw( - musrfit_tabs - RUNSPage - RUNSAuto - RunNumbers - BeamLine - BeamLineLabel - YEAR - YEARLabel - RUNSMan - RunFiles - Browse - groupBox7 - FitType2 - TfsLabel - FitType1 - BINS - Comp3Label - Tis - Tfs - Comp1Label - BINSLabel - TisLabel - FitType3 - Comp2Label - FitAsyTypeLabel - FitAsyType - LRBFLabel - LRBF - FittingPage - Yi - Minimization - Xi - textLabel1_4_2_2 - Xf - textLabel1_5 - textLabel1_4_2 - ViewBin - Yf - ErrorCalc - ltc - textLabel1_5_2 - textLabel1_4 - FitTextOutput - SharingPage - buttonGroupSharing - SharingComp2 - Comp2ShLabel - ShParam_2_1 - ShParam_2_2 - ShParam_2_3 - ShParam_2_4 - ShParam_2_5 - ShParam_2_6 - ShParam_2_7 - ShParam_2_8 - ShParam_2_9 - SharingComp3 - Comp3ShLabel - ShParam_3_1 - ShParam_3_2 - ShParam_3_3 - ShParam_3_4 - ShParam_3_5 - ShParam_3_6 - ShParam_3_7 - ShParam_3_8 - ShParam_3_9 - SharingComp1 - ShParam_1_1 - ShParam_1_2 - ShParam_1_3 - ShParam_1_4 - ShParam_1_5 - ShParam_1_6 - ShParam_1_7 - ShParam_1_8 - ShParam_1_9 - Comp1ShLabel - InitializationPage - InitParamTable - MSRPage - groupTitle - TITLELabel - TITLE - FILENAMELabel - FILENAME - textMSROutput - FourierPage - FourierBox - FrqMin - textLabel1_3_4 - textLabel1_7 - textLabel1_3_5 - FUnits - textLabel1_3_6 - FApodization - FrqMax - FPlot - FUnitsLabel - textLabel1_3_8 - textLabel1_3_7 - FPlotLabel - textLabel1_2 - FApodizationLabel - textLabel1_3_3 - FPHASE - textLabel1 - RRFBox - textLabel1_6_2_2 - textLabel1_6 - textLabel1_6_2_4 - RRFFrq - textLabel1_6_2_3 - RRFPack - textLabel1_6_2 - RRFUnits - RRFPhase - T0Page - groupHist0 - textLabel2 - textLabel2_2_2_3 - textLabel2_2_2 - textLabel2_2_2_2 - textLabel2_2_2_2_2 - groupHist1 - t01 - Bg11 - Bg21 - Data11 - Data21 - groupHist2 - t02 - Bg12 - Bg22 - Data12 - Data22 - groupHist3 - t03 - Bg13 - Bg23 - Data13 - Data23 - groupHist4 - t04 - Bg14 - Bg24 - Data14 - Data24 - t0Update - TabPage - TheoryBlock_Label - TheoryBlock - ParametersList_Label - ParametersList - CParamsCombo - textLabel1_4_6 - ConstraintLine - AddConstraint - textLabel2_2_3_4 - FunctionsBlock - textLabel1_6_3 - ResetFunc - MenuBar - fileMenu - Edit - Actions - Parameters - Options - helpMenu - FileToolBar - ActionsToolBar - fileNewAction - fileOpenAction - fileSaveAction - fileSaveAsAction - filePrintAction - fileExitAction - editUndoAction - editRedoAction - editCutAction - editCopyAction - editPasteAction - editFindAction - helpContentsAction - helpIndexAction - helpAboutAction - separatorAction - FileExistCheck - ManualFile - fileChangeDirAction - optionsnew_itemAction - parametersExport_AsAction - parametersAppend_ToAction - Fit - Plot - T0 - optionsFourier - optionsT0 - optionsConfigure -); - - -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, 0x16, 0x00, 0x00, 0x00, 0x16, - 0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x01, - 0x11, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xa5, 0x54, 0xcb, 0x12, 0xc2, - 0x20, 0x0c, 0xdc, 0xe0, 0x63, 0xc6, 0xbb, 0x07, 0x3c, 0xfa, 0xff, 0x3f, - 0xe6, 0x57, 0xb8, 0x1e, 0x5a, 0x68, 0x58, 0x42, 0x8b, 0x9a, 0x19, 0xa6, - 0x34, 0x24, 0x9b, 0xcd, 0x03, 0x0c, 0x81, 0xd0, 0xed, 0x2d, 0x32, 0x98, - 0x92, 0x4c, 0x1e, 0x1b, 0x81, 0xb2, 0x20, 0xdf, 0xee, 0x3c, 0x45, 0x2c, - 0x01, 0x24, 0xf6, 0xba, 0xfb, 0x6a, 0x7f, 0x95, 0xa0, 0x09, 0xc0, 0xd3, - 0xed, 0x6f, 0x95, 0x31, 0x01, 0x2a, 0x90, 0xd0, 0x8a, 0xd2, 0x52, 0x55, - 0xf3, 0x6f, 0x94, 0x92, 0x6a, 0x4d, 0x09, 0xc0, 0xe2, 0xb2, 0x13, 0x6d, - 0x0b, 0x9a, 0xff, 0x84, 0xb1, 0x98, 0x47, 0x01, 0x70, 0x02, 0x70, 0x01, - 0x70, 0xde, 0xf1, 0xa9, 0xd2, 0x18, 0x09, 0x5b, 0x4d, 0xf5, 0xbd, 0xae, - 0x29, 0x49, 0xb6, 0x31, 0xfb, 0x7d, 0xb2, 0x86, 0xbe, 0x7d, 0x03, 0xb5, - 0x44, 0x06, 0xf4, 0x93, 0x73, 0x18, 0x6e, 0x05, 0xad, 0xe0, 0x00, 0x1e, - 0x81, 0x4d, 0x57, 0x1b, 0x27, 0x77, 0x55, 0x14, 0x26, 0xbb, 0x93, 0xe1, - 0xd9, 0x8e, 0xea, 0xa5, 0x23, 0xd2, 0xa5, 0xe3, 0x67, 0x29, 0x62, 0x39, - 0x73, 0x4d, 0x2b, 0xf0, 0x64, 0x03, 0xe9, 0x03, 0x47, 0xc1, 0xe2, 0x37, - 0x66, 0x7d, 0x33, 0xf8, 0x32, 0xd8, 0x72, 0x71, 0x46, 0x44, 0x4d, 0x37, - 0xd1, 0x61, 0x43, 0xc0, 0xd7, 0xda, 0xb3, 0xd7, 0x1e, 0x78, 0x17, 0x25, - 0x51, 0x0e, 0x8f, 0x47, 0x46, 0xc4, 0x32, 0x69, 0x79, 0x9b, 0x4c, 0x2e, - 0xe0, 0x15, 0xb4, 0x90, 0xd8, 0x05, 0x2e, 0x46, 0x96, 0xb7, 0x44, 0xf8, - 0xea, 0x87, 0x46, 0x27, 0xa2, 0x03, 0xf6, 0x4d, 0xa4, 0x63, 0x54, 0x74, - 0x56, 0x00, 0x04, 0xdc, 0x32, 0x59, 0x2e, 0x99, 0xf7, 0x69, 0xc5, 0x19, - 0x95, 0xb5, 0x97, 0x51, 0xad, 0xc9, 0x94, 0xcf, 0x24, 0xf0, 0x20, 0xd0, - 0xb1, 0xcf, 0x37, 0xa0, 0xff, 0xf8, 0x7c, 0x05, 0xfc, 0x01, 0x1a, 0xec, - 0x94, 0x3b, 0x34, 0xe2, 0x89, 0xc2, 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, 0x00, - 0xce, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xd5, 0x53, 0xc9, 0x11, 0xc3, - 0x20, 0x0c, 0x5c, 0x31, 0xf9, 0xb8, 0x24, 0x28, 0xc5, 0x8d, 0xb8, 0x06, - 0x37, 0xe2, 0x52, 0xe4, 0x92, 0xfc, 0x54, 0x1e, 0x19, 0x65, 0x98, 0x8d, - 0x15, 0x98, 0xd8, 0x3c, 0xb2, 0x2f, 0x21, 0xc1, 0x6a, 0xd1, 0x21, 0xaa, - 0x8a, 0x11, 0x48, 0x6e, 0x2c, 0xf3, 0x64, 0x1c, 0x5c, 0xe6, 0xc9, 0x6a, - 0x3f, 0xdf, 0xf1, 0xf3, 0x99, 0x3f, 0xb9, 0xb1, 0x6e, 0x87, 0x30, 0xc9, - 0xba, 0x1d, 0xc2, 0xfe, 0x08, 0x9c, 0x24, 0x39, 0x01, 0x00, 0x44, 0x24, - 0x67, 0xf1, 0xfa, 0x5d, 0x1d, 0x73, 0x5f, 0x62, 0x12, 0xbe, 0xc8, 0x89, - 0x98, 0x20, 0xc2, 0xa3, 0x96, 0x1f, 0x29, 0xed, 0x21, 0xaa, 0xef, 0xbf, - 0x15, 0x7b, 0x2d, 0xeb, 0x40, 0x4f, 0x5d, 0x9b, 0x8a, 0xa3, 0xec, 0x4e, - 0xde, 0xa3, 0x96, 0x21, 0x43, 0xe7, 0x38, 0x97, 0x62, 0xb9, 0x94, 0x4b, - 0x5f, 0x67, 0x88, 0x01, 0xb6, 0xab, 0x8a, 0x27, 0x70, 0xfb, 0x32, 0x31, - 0x97, 0xe2, 0x2e, 0xf2, 0x8f, 0x39, 0xde, 0x55, 0xe5, 0x8e, 0xb2, 0x84, - 0x0b, 0x32, 0x84, 0xb8, 0x47, 0x75, 0xab, 0xe1, 0x3f, 0x29, 0xf6, 0x3e, - 0x44, 0x02, 0x72, 0x29, 0x26, 0x00, 0xc2, 0xac, 0x06, 0x80, 0xbb, 0xd8, - 0xf2, 0x19, 0x5e, 0x3f, 0x6e, 0x2e, 0x48, 0x3d, 0x25, 0xdf, 0x26, 0xc6, - 0x95, 0x7b, 0xbc, 0x6b, 0xf3, 0xf8, 0x51, 0x0f, 0xc6, 0xae, 0xf4, 0x5f, - 0x11, 0x3f, 0x01, 0xc3, 0xec, 0xa5, 0x79, 0xcd, 0xbc, 0x94, 0xf7, 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, 0x00, - 0xd7, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xbd, 0x54, 0xc1, 0x0d, 0x83, - 0x30, 0x0c, 0x3c, 0x47, 0x7c, 0xba, 0x05, 0x6b, 0xc4, 0x52, 0x3b, 0x08, - 0x8b, 0x74, 0x06, 0x16, 0x61, 0x14, 0xf3, 0xcc, 0x38, 0x3c, 0xd3, 0x47, - 0xe5, 0x2a, 0x4a, 0x13, 0x48, 0x2c, 0xe0, 0x3e, 0x90, 0x93, 0x7c, 0x9c, - 0xcf, 0xc1, 0x24, 0x22, 0xb8, 0x02, 0xf4, 0x1c, 0x43, 0x9c, 0x97, 0x8d, - 0x94, 0x78, 0x4f, 0x8f, 0x38, 0x2f, 0x1b, 0xe9, 0x53, 0x39, 0x00, 0x50, - 0x3e, 0x17, 0xc9, 0xf9, 0x79, 0xd9, 0x68, 0x00, 0x00, 0xcf, 0x1c, 0x01, - 0x60, 0x15, 0xa1, 0xbc, 0x28, 0xff, 0xc0, 0xd1, 0xbb, 0x9e, 0x5d, 0x4d, - 0xb0, 0x84, 0xb4, 0xf8, 0x08, 0xc3, 0xaf, 0xd5, 0x31, 0x00, 0x13, 0x76, - 0xdb, 0xec, 0x16, 0xd6, 0x02, 0xcf, 0x1c, 0x5f, 0x63, 0xa8, 0x3a, 0xcd, - 0x5b, 0xde, 0x83, 0x4b, 0x0f, 0xb5, 0x8c, 0x5b, 0x5d, 0xa6, 0x18, 0x4a, - 0xa4, 0x67, 0xfe, 0x46, 0x83, 0xb6, 0x28, 0x4a, 0xb7, 0x82, 0x00, 0x44, - 0xc9, 0x9c, 0x7a, 0xe6, 0xd8, 0x3a, 0xd0, 0x1a, 0x5c, 0x89, 0x5c, 0x45, - 0x48, 0xaf, 0xe0, 0xa9, 0xc2, 0x67, 0xa0, 0x2a, 0xac, 0xae, 0xad, 0xce, - 0x77, 0x1d, 0xaf, 0x22, 0x64, 0x8d, 0xa5, 0x29, 0x0a, 0x8b, 0xf8, 0xfd, - 0x19, 0xdf, 0x26, 0xdc, 0x3b, 0xcc, 0x2e, 0xc7, 0x3d, 0xc3, 0x34, 0x45, - 0xd1, 0xe2, 0xde, 0x9c, 0xb1, 0xfe, 0xf2, 0x35, 0xf1, 0xe2, 0x12, 0xb2, - 0x8a, 0xa7, 0xfb, 0x85, 0x80, 0xff, 0xe5, 0x6e, 0x45, 0x2a, 0xf4, 0x01, - 0x19, 0x04, 0x97, 0x00, 0x1e, 0x10, 0xdf, 0x32, 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, 0x02, - 0xc9, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xb5, 0x93, 0x4b, 0x48, 0x54, - 0x51, 0x1c, 0xc6, 0x7f, 0xe7, 0xdc, 0x73, 0xc7, 0x99, 0x9c, 0xb4, 0x1a, - 0xcb, 0x6a, 0x2a, 0x22, 0xd2, 0x8a, 0xa2, 0x27, 0xf6, 0x44, 0x88, 0x08, - 0xa3, 0x82, 0x48, 0x90, 0x5a, 0xb8, 0x0a, 0x5a, 0xb4, 0x6a, 0x51, 0x54, - 0xeb, 0x20, 0xda, 0xb4, 0x69, 0x15, 0x91, 0x46, 0x08, 0x15, 0xd4, 0x22, - 0x83, 0xa0, 0x50, 0x8a, 0x08, 0x83, 0x28, 0x91, 0x1e, 0x58, 0x49, 0x32, - 0xa5, 0xe3, 0x18, 0x44, 0x8e, 0x36, 0x33, 0x77, 0x66, 0x1c, 0xef, 0xcc, - 0x3d, 0x2d, 0x46, 0xf1, 0x75, 0x29, 0x1d, 0xea, 0x83, 0x03, 0xf7, 0x7e, - 0x17, 0x7e, 0xf7, 0x3b, 0xff, 0x87, 0xd0, 0x5a, 0x33, 0xa6, 0xfb, 0x0f, - 0x9e, 0x8c, 0xbf, 0xcc, 0x40, 0xa6, 0xbf, 0x6c, 0x45, 0x6d, 0x4d, 0x55, - 0x9f, 0xdb, 0x37, 0x35, 0xd5, 0x38, 0x74, 0x70, 0x3f, 0x7e, 0x9f, 0x39, - 0xc9, 0xb3, 0x6d, 0x48, 0xa7, 0x21, 0x95, 0x82, 0x54, 0x1a, 0x52, 0x29, - 0x4d, 0x2c, 0xf9, 0x89, 0xfe, 0x48, 0x38, 0xdc, 0xdc, 0xda, 0x5e, 0x59, - 0x5b, 0x53, 0xd5, 0x3d, 0x95, 0x23, 0x67, 0x94, 0xcc, 0x04, 0xaf, 0x77, - 0xc2, 0x29, 0xca, 0xfb, 0x6b, 0x2a, 0xf7, 0x62, 0x5b, 0x03, 0x5f, 0x9a, - 0x5b, 0xdb, 0x37, 0x16, 0x04, 0x06, 0xf0, 0x78, 0xc6, 0xa1, 0x45, 0xde, - 0xbc, 0x57, 0xb6, 0xc0, 0xc7, 0xaa, 0x95, 0xfb, 0xb0, 0xad, 0x81, 0xf7, - 0xcd, 0xad, 0xed, 0x3b, 0x0b, 0x02, 0xc3, 0x78, 0xe2, 0x31, 0xb0, 0x96, - 0x69, 0x3c, 0x45, 0x0e, 0x81, 0xb2, 0x3d, 0xd8, 0xd6, 0xc0, 0xab, 0xbb, - 0x8f, 0xde, 0xd4, 0x17, 0x04, 0x1e, 0x83, 0xfb, 0x46, 0x4b, 0xd1, 0x1b, - 0xfe, 0x4a, 0x22, 0xf9, 0x15, 0xaf, 0xb7, 0x8f, 0xe0, 0xb2, 0x15, 0x28, - 0x3b, 0x7a, 0xbb, 0xa9, 0xa9, 0x69, 0x2d, 0xb8, 0x34, 0xef, 0x6f, 0x92, - 0x12, 0x7c, 0x3e, 0xc1, 0x8e, 0xad, 0xeb, 0x49, 0xa5, 0x20, 0x14, 0xd2, - 0xda, 0xd1, 0x42, 0x68, 0x0d, 0xdf, 0x87, 0xfa, 0xa2, 0xf3, 0x15, 0x6b, - 0x81, 0xae, 0x59, 0x27, 0x06, 0x50, 0x0a, 0x86, 0x87, 0x21, 0x12, 0x81, - 0xa2, 0xd0, 0x7d, 0x61, 0x76, 0x5e, 0x43, 0x29, 0x10, 0x62, 0x42, 0x80, - 0x42, 0xc0, 0xbf, 0x42, 0xdd, 0x44, 0xda, 0x5a, 0x31, 0x14, 0x2c, 0x2f, - 0x7b, 0x44, 0xc5, 0xba, 0x0e, 0x0c, 0xc3, 0x61, 0xfe, 0xe0, 0x07, 0xb5, - 0xe0, 0xdb, 0xd3, 0x95, 0xae, 0xe0, 0x91, 0x4c, 0xd6, 0xd6, 0x7f, 0x58, - 0x93, 0x78, 0x1c, 0x92, 0xaf, 0x2f, 0x52, 0xb9, 0xeb, 0x25, 0x74, 0x5c, - 0x46, 0x2a, 0x89, 0x30, 0x15, 0x9e, 0xcf, 0x37, 0xa9, 0x3f, 0xfe, 0xab, - 0x74, 0xdb, 0xe2, 0x9e, 0xf3, 0xee, 0x60, 0x5b, 0x99, 0xb1, 0x18, 0xc4, - 0x62, 0x10, 0x4f, 0x80, 0x65, 0x41, 0x32, 0x09, 0x09, 0x0b, 0x86, 0x86, - 0xc0, 0x4a, 0xc2, 0xc8, 0xea, 0x73, 0x64, 0x7a, 0xc2, 0x54, 0x1c, 0xce, - 0x61, 0xf8, 0x34, 0xd2, 0x14, 0x54, 0x54, 0x87, 0xc9, 0x46, 0x87, 0x68, - 0xeb, 0x2e, 0xb9, 0x01, 0x2e, 0xcd, 0x53, 0x2a, 0xbf, 0x10, 0x8e, 0x03, - 0x5a, 0x43, 0xce, 0x19, 0x7f, 0x76, 0x34, 0x38, 0x5d, 0x0f, 0xf1, 0x44, - 0xdb, 0x88, 0x46, 0xe3, 0x94, 0x17, 0x87, 0xf1, 0x6e, 0xaa, 0x02, 0x04, - 0xb9, 0xde, 0x10, 0x5f, 0x9a, 0xdf, 0x66, 0x37, 0x95, 0xd8, 0xd5, 0x9d, - 0x27, 0xe6, 0x9e, 0x74, 0x05, 0x2b, 0x95, 0x07, 0x69, 0x3d, 0x19, 0xaa, - 0x1d, 0x30, 0x12, 0x8d, 0xcc, 0x3b, 0x52, 0x0d, 0x7a, 0x11, 0x68, 0x01, - 0x46, 0x7e, 0xf6, 0xe4, 0xe2, 0x20, 0x1b, 0xce, 0xd4, 0x2a, 0x34, 0xfb, - 0xac, 0x96, 0xe7, 0xbb, 0xa7, 0x83, 0x8d, 0xc9, 0x89, 0x27, 0xc2, 0xb5, - 0x86, 0xd4, 0xe6, 0x06, 0xc2, 0xaf, 0x3f, 0x20, 0x3e, 0xde, 0x23, 0x58, - 0xb7, 0x14, 0xa9, 0x35, 0x38, 0xa0, 0x33, 0x23, 0xbc, 0xb9, 0xd2, 0x92, - 0x8d, 0xa4, 0xfd, 0x97, 0x7f, 0x76, 0xb4, 0xdc, 0x9e, 0x3e, 0xc7, 0x22, - 0x3f, 0xab, 0x72, 0xb4, 0xfa, 0x53, 0x13, 0xcf, 0x2d, 0x5f, 0x82, 0xec, - 0x7d, 0x4a, 0xe9, 0xb1, 0xa5, 0xe4, 0x06, 0x06, 0xc9, 0x74, 0x85, 0x30, - 0xfc, 0x7e, 0x74, 0x26, 0xc7, 0xf6, 0xb3, 0x07, 0x94, 0xbc, 0xfa, 0xa4, - 0xa2, 0xae, 0x4d, 0x77, 0xff, 0x75, 0xdc, 0xa4, 0x04, 0xc3, 0x00, 0x73, - 0xb4, 0xf6, 0x4a, 0x41, 0xb6, 0xff, 0x19, 0x23, 0x3d, 0x7d, 0xfc, 0x18, - 0x3c, 0x0a, 0xd2, 0x44, 0x0b, 0x49, 0xcc, 0x7f, 0x9a, 0xe4, 0xbb, 0xcf, - 0xba, 0x7c, 0xa1, 0xde, 0xed, 0xda, 0xbc, 0x3f, 0x49, 0x88, 0xfc, 0x4f, - 0x02, 0x75, 0x8d, 0x64, 0xac, 0x18, 0xc1, 0x92, 0x00, 0x89, 0xc7, 0x0d, - 0xc8, 0x64, 0x86, 0xd2, 0xea, 0x8d, 0x5c, 0x7f, 0x51, 0x23, 0xbc, 0x62, - 0xf0, 0xc2, 0xa9, 0xd9, 0x82, 0xc7, 0x64, 0x28, 0xc5, 0x9c, 0x79, 0x01, - 0x00, 0xd4, 0x96, 0x4b, 0x0c, 0x5b, 0x71, 0x8a, 0x3d, 0xf9, 0xcb, 0xfb, - 0x4a, 0x03, 0x99, 0x59, 0x27, 0x76, 0x53, 0x71, 0x70, 0x0d, 0xc5, 0x2e, - 0x7e, 0x41, 0x2b, 0x3d, 0x13, 0xfd, 0x37, 0xf0, 0xb4, 0x52, 0x34, 0xde, - 0xba, 0xf3, 0x4f, 0xc0, 0xbf, 0x01, 0xfe, 0x53, 0x21, 0x19, 0xee, 0x8d, - 0x4b, 0x59, 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, - 0xb2, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x95, 0x94, 0xdb, 0x6f, 0xd4, - 0x45, 0x14, 0xc7, 0x3f, 0xf3, 0xbb, 0x75, 0xdb, 0xdd, 0xa5, 0x5d, 0x8c, - 0xdb, 0xb4, 0x20, 0x0a, 0x4d, 0x4b, 0x5b, 0xd3, 0x28, 0x44, 0x14, 0xa3, - 0x08, 0x45, 0x68, 0xda, 0xd8, 0x10, 0x62, 0xa4, 0x12, 0x0d, 0xbe, 0xf2, - 0x37, 0xc0, 0x83, 0xc4, 0x57, 0x5f, 0x89, 0xa4, 0x0f, 0x3e, 0x61, 0xa2, - 0x31, 0xa2, 0x4f, 0x3e, 0xd9, 0x12, 0xde, 0x08, 0xac, 0xb4, 0x84, 0xb2, - 0x81, 0xa4, 0x2c, 0x50, 0xed, 0x65, 0xd3, 0xd2, 0xad, 0x2c, 0xdd, 0xcb, - 0xef, 0xd7, 0xdf, 0x5c, 0x7c, 0xe8, 0x05, 0xb6, 0xed, 0x72, 0xf9, 0x26, - 0x93, 0xc9, 0x9c, 0x73, 0xe6, 0x33, 0x27, 0x33, 0x67, 0x8e, 0xa0, 0x8a, - 0x86, 0x87, 0x53, 0xd9, 0x64, 0x32, 0x91, 0xa8, 0xe6, 0x07, 0xb8, 0x73, - 0x27, 0x93, 0x3a, 0x79, 0xb2, 0xef, 0x93, 0xcd, 0x7c, 0x4e, 0xb5, 0x4d, - 0xdb, 0xb6, 0x25, 0x93, 0xed, 0xed, 0x6f, 0x5a, 0xeb, 0xed, 0x4a, 0x1b, - 0xb4, 0x31, 0x18, 0x03, 0x73, 0x73, 0xb9, 0x9d, 0x80, 0x00, 0xcc, 0x4b, - 0x83, 0x8d, 0xd9, 0x10, 0x8b, 0xd2, 0x06, 0xa5, 0x0d, 0x52, 0x69, 0x84, - 0x10, 0x68, 0xad, 0xaa, 0x6d, 0xaf, 0x0e, 0x56, 0x4a, 0x56, 0x85, 0x2a, - 0x6d, 0x10, 0x16, 0x84, 0x61, 0xf8, 0xea, 0x60, 0x29, 0x9f, 0x82, 0xd7, - 0x43, 0xa5, 0x32, 0xd8, 0xa6, 0x32, 0xe6, 0x15, 0x32, 0x56, 0x55, 0xa1, - 0x4a, 0x6b, 0xb4, 0x36, 0x48, 0xb9, 0x54, 0x15, 0xbc, 0xe1, 0x71, 0x00, - 0x7a, 0x7a, 0x7a, 0xda, 0xa5, 0x0c, 0xab, 0x42, 0x7d, 0x3f, 0x44, 0x4b, - 0x85, 0xef, 0xfb, 0xd1, 0xce, 0xce, 0xce, 0xba, 0xe7, 0x66, 0xdc, 0xdb, - 0xdb, 0xfb, 0x99, 0x52, 0xea, 0xc3, 0xe3, 0xc7, 0x4f, 0x7c, 0xde, 0xdc, - 0xdc, 0xdc, 0xa6, 0xb5, 0xb6, 0x56, 0xa1, 0xf2, 0x19, 0x68, 0xe0, 0x87, - 0x28, 0x29, 0x51, 0xc2, 0xc6, 0xf3, 0xdc, 0xc4, 0xd9, 0xb3, 0xe7, 0xe6, - 0x6f, 0xdd, 0x1a, 0xbd, 0x31, 0x32, 0xf2, 0xf7, 0x5f, 0x96, 0x65, 0xfd, - 0x3e, 0x3c, 0x3c, 0x7c, 0x07, 0x40, 0xf4, 0xf7, 0xf7, 0xdb, 0xfb, 0xf7, - 0x7f, 0x34, 0x3e, 0x30, 0xf0, 0xf5, 0x2e, 0xcf, 0xf3, 0x00, 0x98, 0x99, - 0xf9, 0x87, 0xa2, 0x0f, 0x7b, 0xde, 0x7b, 0x87, 0x50, 0xad, 0x42, 0x0d, - 0x7e, 0xb0, 0x02, 0x0d, 0x15, 0xb5, 0x9e, 0xc3, 0x95, 0xcb, 0x43, 0x1c, - 0x3d, 0x7c, 0x00, 0x21, 0x6c, 0x8c, 0x31, 0xe4, 0xf3, 0x79, 0x06, 0x07, - 0xcf, 0xff, 0x32, 0x38, 0xf8, 0xc3, 0x57, 0x76, 0x4b, 0x4b, 0xcb, 0xe9, - 0x33, 0x67, 0xbe, 0x3d, 0x15, 0x89, 0xd4, 0x60, 0x59, 0x16, 0x96, 0x65, - 0x71, 0xef, 0xe1, 0x04, 0xbb, 0x3a, 0xde, 0xa5, 0xbc, 0xa4, 0x09, 0x42, - 0x4d, 0x28, 0x35, 0x4a, 0x19, 0x84, 0x10, 0x58, 0xb6, 0x8d, 0xe3, 0xba, - 0x28, 0x2c, 0x88, 0x37, 0xa3, 0x0b, 0xb3, 0x04, 0x81, 0x61, 0xb1, 0x54, - 0xc2, 0xb5, 0x3d, 0xda, 0xda, 0x3a, 0xba, 0xc6, 0xc6, 0x46, 0x86, 0x9c, - 0x03, 0x07, 0xba, 0x4f, 0x47, 0x22, 0x35, 0x15, 0xf7, 0xf3, 0xb0, 0x10, - 0xa1, 0xd1, 0x8d, 0xae, 0xad, 0xa5, 0x86, 0x62, 0x68, 0x28, 0x49, 0xf0, - 0x95, 0x41, 0xea, 0x65, 0x7b, 0xe0, 0x7a, 0x88, 0xff, 0xee, 0xd3, 0xf8, - 0xfa, 0x16, 0xae, 0x67, 0xef, 0xf1, 0x7e, 0x63, 0x07, 0x0d, 0x0d, 0x0d, - 0x44, 0xa3, 0xd1, 0x2f, 0x9c, 0xae, 0xae, 0xae, 0xb7, 0x1c, 0xc7, 0x5e, - 0xa9, 0x04, 0x4d, 0xb9, 0xec, 0x93, 0x09, 0x13, 0x38, 0xf3, 0x16, 0xc5, - 0x10, 0xc6, 0xf3, 0x86, 0xd9, 0x12, 0x2c, 0x7f, 0xb0, 0xf5, 0xb2, 0xd9, - 0xbf, 0x60, 0x38, 0xf1, 0x86, 0xc7, 0xe1, 0x9d, 0x7b, 0xd6, 0xac, 0xdb, - 0xb7, 0xef, 0xd8, 0xed, 0x04, 0xc1, 0x92, 0xe7, 0xba, 0x0e, 0x52, 0x4a, - 0x82, 0x60, 0x09, 0xcf, 0x73, 0x99, 0xd0, 0xaf, 0x71, 0xe3, 0x9e, 0xe0, - 0xfa, 0x5c, 0x35, 0xe0, 0x53, 0x15, 0x0a, 0x31, 0x4e, 0x45, 0xdc, 0xb5, - 0xb5, 0xeb, 0xda, 0x24, 0x93, 0xc9, 0x46, 0x27, 0x95, 0x1a, 0x09, 0x23, - 0x91, 0x24, 0x4d, 0x4d, 0x09, 0x92, 0xc9, 0x04, 0x8e, 0x03, 0xff, 0xce, - 0xd7, 0x71, 0xfb, 0xfe, 0x73, 0x79, 0x6b, 0x9a, 0xb7, 0xb7, 0x10, 0x8d, - 0x46, 0x28, 0x14, 0xca, 0xcc, 0xcc, 0x2c, 0x90, 0xcb, 0x3d, 0x61, 0x6e, - 0x6e, 0x5e, 0x39, 0x42, 0x50, 0x54, 0x4a, 0xd7, 0x4f, 0x4d, 0xe5, 0x98, - 0x9a, 0xca, 0x21, 0x84, 0xe0, 0xfc, 0xbe, 0x38, 0x81, 0x3d, 0x4f, 0x51, - 0x3a, 0x3c, 0xf6, 0x05, 0xb9, 0x92, 0x21, 0xf3, 0x48, 0x13, 0xab, 0x11, - 0xec, 0x48, 0x08, 0x12, 0xb5, 0x50, 0x1f, 0x81, 0x5a, 0x11, 0xe2, 0xa9, - 0x12, 0x57, 0xaf, 0xce, 0x56, 0x1c, 0xa6, 0xb5, 0x7a, 0xec, 0x04, 0x41, - 0x39, 0x17, 0x8d, 0x46, 0x9a, 0x97, 0x4d, 0x86, 0xa1, 0xa1, 0x3f, 0x37, - 0xcd, 0xac, 0x61, 0x65, 0x9e, 0x59, 0x19, 0x15, 0xbe, 0x86, 0x04, 0xfb, - 0xf6, 0x7d, 0xbc, 0x4c, 0x30, 0x9a, 0x7c, 0x7e, 0x61, 0xc6, 0x29, 0x16, - 0x9f, 0x4c, 0x45, 0xa3, 0xb5, 0x5d, 0x00, 0x4b, 0x4b, 0x3e, 0xd7, 0xae, - 0x5d, 0xa1, 0xb5, 0xb5, 0x95, 0xd6, 0xd6, 0xd6, 0x97, 0xba, 0x8a, 0x54, - 0x2a, 0x45, 0x5d, 0x5d, 0x9c, 0x43, 0x87, 0x8e, 0x02, 0xb0, 0xb8, 0xf8, - 0x04, 0xdf, 0xf7, 0x27, 0x9d, 0x5c, 0xee, 0xd1, 0xcf, 0x42, 0xa8, 0xbe, - 0x58, 0x2c, 0x8e, 0xef, 0x1b, 0xfa, 0xfa, 0xfa, 0x39, 0x72, 0xe4, 0x53, - 0xb6, 0x6e, 0x6d, 0x78, 0x01, 0x72, 0x59, 0x1d, 0x1d, 0x5d, 0x64, 0xb3, - 0x59, 0xe2, 0xf1, 0x08, 0x60, 0x31, 0x3d, 0xfd, 0xc0, 0x4c, 0x4e, 0x4e, - 0xfe, 0xe1, 0xc4, 0x62, 0xb1, 0x5f, 0xc7, 0xc7, 0x6f, 0xff, 0xd8, 0xdd, - 0x7d, 0xb4, 0xa6, 0xbe, 0x3e, 0xca, 0xc1, 0x83, 0x7d, 0xec, 0xdd, 0xfb, - 0x36, 0xe2, 0xf9, 0xc5, 0x00, 0x80, 0x94, 0x8a, 0x64, 0xb2, 0x89, 0xbb, - 0x77, 0x27, 0xa8, 0xaf, 0x8f, 0x03, 0x90, 0x4e, 0x8f, 0x66, 0x32, 0x99, - 0x4c, 0xda, 0xb9, 0x78, 0xf1, 0x62, 0x98, 0x4e, 0xa7, 0xdb, 0x6e, 0xde, - 0x1c, 0xfd, 0x2e, 0x16, 0x8b, 0xed, 0x3e, 0x76, 0x6c, 0xe0, 0x03, 0x21, - 0x36, 0x6f, 0x4e, 0xeb, 0xa1, 0x52, 0x2a, 0x1c, 0xc7, 0xe6, 0xc1, 0x83, - 0xfb, 0xfe, 0xa5, 0x4b, 0x3f, 0x5d, 0xcf, 0x66, 0xa7, 0xc7, 0x2e, 0x5f, - 0x1e, 0xfe, 0x1e, 0xa8, 0xec, 0xa7, 0x17, 0x2e, 0xfc, 0xd6, 0xbb, 0xb8, - 0x58, 0x32, 0x2f, 0x52, 0x18, 0x4a, 0x53, 0x2e, 0x07, 0xa6, 0x50, 0x28, - 0x9b, 0x7c, 0xbe, 0x68, 0xd2, 0xe9, 0x71, 0xd3, 0xdd, 0xdd, 0xdf, 0xf9, - 0x2c, 0xab, 0xa2, 0x1f, 0xd7, 0xd5, 0x79, 0xdf, 0xcc, 0xce, 0x2e, 0x30, - 0x5b, 0x59, 0x3d, 0x1b, 0x64, 0x8c, 0x41, 0x4a, 0x89, 0x52, 0xcb, 0x23, - 0x0c, 0x43, 0x5c, 0xd7, 0xfd, 0x12, 0x38, 0xb7, 0x1a, 0xf3, 0x3f, 0x85, - 0xd7, 0x1e, 0x86, 0xe2, 0x2f, 0xe4, 0xea, 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, 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 $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, 0x02, - 0x3b, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0xd5, 0x4f, 0x68, 0xd3, - 0x00, 0x14, 0xc7, 0xf1, 0x6f, 0xd2, 0xac, 0x71, 0xeb, 0x56, 0x2b, 0x1b, - 0x76, 0xb0, 0x21, 0xab, 0x0c, 0x64, 0x0c, 0x59, 0x87, 0x20, 0x88, 0x1e, - 0x36, 0xf0, 0x22, 0x44, 0xd8, 0x40, 0x3d, 0x88, 0x48, 0x7a, 0xf5, 0xe0, - 0x9f, 0xb1, 0x83, 0xf7, 0x1d, 0x15, 0xc7, 0x44, 0xc4, 0x83, 0x90, 0x9d, - 0x77, 0xb1, 0xd0, 0xc0, 0xf0, 0x30, 0xea, 0xc5, 0x9b, 0x87, 0xce, 0x8b, - 0x30, 0xd0, 0x66, 0x9b, 0x75, 0xd3, 0x55, 0x17, 0xd7, 0xd4, 0xa6, 0x6d, - 0xfe, 0x78, 0xa8, 0x74, 0x1b, 0x5d, 0xd5, 0x29, 0x3b, 0x08, 0x06, 0xde, - 0xe5, 0xc7, 0xcb, 0x87, 0xe4, 0xe5, 0x25, 0x11, 0x7c, 0xdf, 0xe7, 0x20, - 0x0e, 0xf1, 0x40, 0xd4, 0x7f, 0x12, 0x16, 0x14, 0x45, 0x69, 0x08, 0x5f, - 0x0e, 0xa5, 0x54, 0x51, 0x46, 0xf3, 0xca, 0xcc, 0x9e, 0x5d, 0xbc, 0x98, - 0xf8, 0x13, 0xb8, 0xe1, 0x8a, 0x17, 0xba, 0x52, 0xaa, 0x9d, 0x43, 0x9b, - 0x3a, 0x99, 0x25, 0x5a, 0xd8, 0x54, 0x17, 0xba, 0x52, 0xea, 0x5f, 0xc3, - 0xf3, 0x91, 0xd4, 0x88, 0xe3, 0xa2, 0xdd, 0x1b, 0xcb, 0x31, 0x34, 0x18, - 0x63, 0xea, 0x4a, 0x80, 0x4e, 0xb9, 0xa0, 0xcd, 0x47, 0xf6, 0x8f, 0xd7, - 0x61, 0xbd, 0x23, 0x19, 0x77, 0x3d, 0xff, 0xd9, 0xdd, 0xf3, 0xef, 0x09, - 0x1d, 0xe9, 0x61, 0x69, 0x0d, 0x2c, 0x37, 0xcc, 0x9d, 0x0b, 0x3e, 0x87, - 0xe5, 0x92, 0xa6, 0x77, 0x24, 0xf7, 0x85, 0x8b, 0x00, 0x7a, 0x68, 0x2e, - 0x8e, 0xef, 0xa4, 0x13, 0xa7, 0xd7, 0x22, 0x8e, 0xdc, 0xcb, 0xd2, 0x1a, - 0xf5, 0xca, 0xdb, 0x61, 0xae, 0x9d, 0xa9, 0x10, 0x0c, 0x78, 0x9a, 0x1e, - 0x9a, 0xfb, 0x6d, 0x5c, 0xe0, 0xf2, 0x56, 0x1c, 0x41, 0x4c, 0x9f, 0xea, - 0x97, 0x23, 0xc7, 0xa3, 0x52, 0xd3, 0xc6, 0xad, 0x62, 0x85, 0xe7, 0xaf, - 0x05, 0x70, 0xed, 0x84, 0x52, 0xba, 0x3a, 0xfb, 0x6b, 0xf8, 0xd2, 0x97, - 0x4d, 0xc4, 0x60, 0xa4, 0x45, 0x0e, 0x01, 0x20, 0x05, 0xe0, 0xdc, 0x89, - 0xed, 0x06, 0x63, 0xa3, 0x56, 0x00, 0xd5, 0x6a, 0x15, 0x1c, 0x0b, 0x60, - 0x58, 0xb1, 0xaf, 0x67, 0x7e, 0x06, 0x4b, 0xf8, 0xde, 0x38, 0xae, 0x4d, - 0xf5, 0x9b, 0x5d, 0x3b, 0xd9, 0x77, 0xa6, 0x3f, 0x7d, 0x8d, 0xc6, 0xc3, - 0xad, 0xb5, 0x06, 0xcf, 0x87, 0x6a, 0xf1, 0xa3, 0x89, 0x20, 0x26, 0x40, - 0x34, 0x01, 0x94, 0xb2, 0xda, 0x14, 0xd5, 0x83, 0x4f, 0xe3, 0x40, 0xba, - 0x61, 0x8f, 0x75, 0xe9, 0x89, 0xd6, 0x79, 0xb4, 0x47, 0xed, 0xef, 0xde, - 0xce, 0x5e, 0xbd, 0x03, 0xd7, 0x5a, 0xcd, 0x00, 0xa3, 0x8a, 0x73, 0xc3, - 0x6c, 0x8a, 0x4a, 0x8f, 0x6f, 0x83, 0x38, 0x0d, 0x24, 0x1b, 0xe1, 0xc0, - 0xa3, 0x11, 0x02, 0x87, 0xd2, 0x83, 0xfd, 0x51, 0xa4, 0x1d, 0xcb, 0xb8, - 0xb8, 0xec, 0x42, 0x71, 0xc5, 0x04, 0x66, 0x80, 0x59, 0xc5, 0xbb, 0x69, - 0x00, 0xe8, 0xe2, 0xc3, 0x3e, 0x60, 0x0c, 0xb8, 0x05, 0xf4, 0x01, 0x26, - 0x82, 0x18, 0xdb, 0xf3, 0xcd, 0xd3, 0x85, 0x07, 0x69, 0xda, 0x7a, 0x47, - 0x06, 0x8e, 0xb5, 0xee, 0xca, 0xf3, 0x05, 0xd8, 0xd8, 0x2c, 0x41, 0x69, - 0x1d, 0xbc, 0x4a, 0x2d, 0x94, 0xda, 0xa0, 0x25, 0x0c, 0x88, 0x50, 0xfa, - 0x60, 0x22, 0x88, 0xa3, 0x8a, 0x3f, 0x91, 0xd9, 0x7b, 0x0d, 0x7c, 0x6f, - 0x9c, 0xe2, 0x4a, 0xf6, 0xcd, 0x6a, 0x5f, 0x24, 0x16, 0x95, 0xeb, 0x71, - 0xbb, 0x0c, 0xed, 0xdd, 0xad, 0x40, 0xac, 0x9e, 0x55, 0x1c, 0xc8, 0x7d, - 0x2e, 0x83, 0x65, 0x98, 0xc0, 0xa8, 0xe2, 0x4f, 0x64, 0xa0, 0xc9, 0x47, - 0x48, 0x61, 0xd2, 0x04, 0x86, 0xb1, 0x8c, 0x4c, 0x76, 0x39, 0x87, 0x91, - 0x07, 0xab, 0x0c, 0x76, 0x75, 0xbb, 0xf2, 0x05, 0xc8, 0xae, 0x97, 0xc8, - 0xad, 0xbe, 0x05, 0xcb, 0x48, 0x02, 0x31, 0x85, 0xc9, 0xfa, 0x43, 0xdd, - 0x73, 0x14, 0xbb, 0xc6, 0xc2, 0x7d, 0xf5, 0xc7, 0xfc, 0xe2, 0x88, 0xc1, - 0xda, 0xad, 0x57, 0x4c, 0x00, 0x03, 0x78, 0x01, 0xcc, 0xec, 0x04, 0xeb, - 0xf0, 0xff, 0x3f, 0xc8, 0x81, 0xc3, 0xdf, 0x01, 0x22, 0xe6, 0xe0, 0xf1, - 0x6d, 0x71, 0x21, 0x14, 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, 0x02, - 0x72, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x95, 0xdf, 0x4b, 0x93, - 0x61, 0x14, 0xc7, 0x3f, 0xef, 0xeb, 0xfc, 0x91, 0xad, 0x7c, 0xd7, 0x2f, - 0x35, 0xa2, 0xe6, 0xaf, 0x69, 0x76, 0xb3, 0x82, 0x10, 0x02, 0xc9, 0x5d, - 0x54, 0x17, 0x3d, 0x92, 0x8a, 0x65, 0x17, 0x11, 0x2d, 0x22, 0x08, 0x04, - 0x51, 0xbc, 0xe8, 0x4f, 0xe8, 0x32, 0xaf, 0x03, 0xdd, 0x45, 0x57, 0x51, - 0x29, 0x4c, 0x08, 0xea, 0x62, 0x0b, 0xaa, 0x9b, 0x88, 0xd6, 0x8d, 0x69, - 0x39, 0xb7, 0xa0, 0x5a, 0x3a, 0xe7, 0x5e, 0xdd, 0x66, 0x73, 0x7b, 0xf7, - 0xbe, 0x5d, 0xcc, 0xa6, 0x53, 0x34, 0x0d, 0xbc, 0x08, 0x7a, 0xe0, 0xc0, - 0xc3, 0x39, 0xe7, 0xfb, 0xe1, 0x1c, 0x78, 0xce, 0x79, 0x24, 0xc3, 0x30, - 0xd8, 0x89, 0x23, 0xef, 0x08, 0xf5, 0x9f, 0x04, 0x4b, 0x42, 0x88, 0x75, - 0xce, 0x97, 0xf5, 0x6e, 0xbb, 0xa9, 0x84, 0x1e, 0xb9, 0x98, 0x16, 0xc0, - 0x7a, 0xbb, 0x76, 0x8c, 0xb1, 0x79, 0x33, 0xaf, 0xc2, 0x47, 0x01, 0x7c, - 0x5a, 0x8c, 0x81, 0xe6, 0x8f, 0xad, 0xae, 0x2d, 0x83, 0x5f, 0xec, 0x77, - 0x2b, 0xb2, 0xc4, 0xd0, 0xb1, 0xbd, 0xd1, 0xb6, 0x5b, 0x67, 0x66, 0x69, - 0x3e, 0x59, 0x49, 0x75, 0xa5, 0x39, 0x4f, 0xe0, 0x79, 0x17, 0xe2, 0xf1, - 0x9b, 0x38, 0xee, 0xcf, 0x75, 0x3e, 0xdd, 0xa0, 0xfd, 0x5c, 0xa4, 0x35, - 0xb8, 0x29, 0xf8, 0x99, 0xe2, 0xb6, 0xcb, 0x12, 0x9e, 0xbb, 0x2d, 0xe3, - 0xca, 0xd9, 0xd3, 0x35, 0x14, 0x17, 0x15, 0x6e, 0xda, 0xea, 0xf3, 0xd7, - 0xe3, 0xdc, 0xf3, 0x36, 0xa8, 0x9a, 0x4e, 0xd5, 0xc5, 0xf9, 0x56, 0x75, - 0x6d, 0xdc, 0x04, 0x30, 0xba, 0x67, 0xc4, 0x8e, 0x6e, 0x78, 0x3a, 0x1a, - 0xfd, 0x8a, 0x7f, 0x5a, 0xe2, 0xc9, 0x83, 0x39, 0xc6, 0x22, 0x87, 0x00, - 0x28, 0x2f, 0x8d, 0x71, 0xa9, 0xf1, 0x1b, 0xf5, 0xd6, 0x83, 0x28, 0xfb, - 0x0e, 0xe4, 0x84, 0xd6, 0x9a, 0x06, 0xba, 0x66, 0xfd, 0xca, 0xc3, 0x0f, - 0xd5, 0xc3, 0x80, 0x63, 0x5d, 0xc5, 0x74, 0x2d, 0x2a, 0x48, 0x72, 0x00, - 0x50, 0x80, 0x20, 0xc8, 0x03, 0xc0, 0x88, 0x88, 0x77, 0x04, 0x01, 0x46, - 0xcd, 0x4f, 0xad, 0xc0, 0x0d, 0xd0, 0x7b, 0x2e, 0xd8, 0xc2, 0x8a, 0xfd, - 0xf8, 0x91, 0x9c, 0x38, 0xa3, 0xa5, 0x19, 0xf4, 0x6a, 0xcc, 0x25, 0x64, - 0x87, 0x88, 0x77, 0x7a, 0xf3, 0xc1, 0x97, 0x17, 0x86, 0x91, 0xe4, 0x36, - 0x24, 0xb9, 0x57, 0x24, 0xae, 0xdc, 0xdf, 0xa8, 0xf5, 0xd1, 0xdd, 0x8f, - 0x14, 0x0c, 0xdd, 0x53, 0x57, 0x21, 0xd9, 0xed, 0x35, 0xa5, 0x39, 0xff, - 0x64, 0x28, 0xc5, 0xfb, 0xa9, 0xb4, 0x4b, 0x2c, 0x5e, 0x75, 0xe6, 0x83, - 0x3b, 0xe7, 0xa2, 0x48, 0xb2, 0x43, 0xfc, 0xbc, 0xe6, 0xdb, 0x10, 0x5a, - 0xec, 0x6a, 0x59, 0xbe, 0x2a, 0x48, 0xf2, 0xd0, 0x89, 0x6a, 0x8b, 0x72, - 0xd8, 0x92, 0x75, 0xa8, 0x09, 0x78, 0x3b, 0x1e, 0xf5, 0x61, 0xe8, 0xbd, - 0xab, 0x35, 0x26, 0x91, 0xbc, 0x6e, 0xd9, 0x08, 0x98, 0x85, 0x0e, 0xda, - 0x31, 0x34, 0x0f, 0x26, 0x33, 0x98, 0xb2, 0x95, 0xc6, 0x93, 0x90, 0x4c, - 0x65, 0xe3, 0x25, 0x85, 0x50, 0xb8, 0xcb, 0x62, 0x4f, 0x67, 0x0c, 0x0f, - 0x00, 0x29, 0x15, 0xf4, 0x94, 0xfa, 0xc7, 0x01, 0x11, 0x4b, 0x37, 0x7d, - 0x18, 0xba, 0x13, 0x2d, 0x4e, 0x7d, 0xa5, 0x44, 0x53, 0xad, 0x44, 0x85, - 0x02, 0xa9, 0xcc, 0x8a, 0x9d, 0xaa, 0x82, 0xa6, 0x5a, 0x89, 0xf2, 0x32, - 0x09, 0xb4, 0x45, 0x15, 0x43, 0x77, 0x14, 0xd8, 0x6c, 0xb6, 0x3f, 0xb1, - 0xb1, 0xe9, 0x6e, 0xdf, 0x27, 0xce, 0x7f, 0x89, 0x44, 0x63, 0x6d, 0x45, - 0x25, 0x65, 0x14, 0xc8, 0xa0, 0x65, 0xf2, 0x2d, 0x18, 0x86, 0x70, 0x28, - 0xa0, 0x82, 0xe1, 0x10, 0xda, 0x1d, 0xdf, 0x96, 0x47, 0x5a, 0x64, 0xba, - 0x5d, 0x64, 0x92, 0xce, 0x40, 0x20, 0xc0, 0xcc, 0x02, 0x24, 0xd3, 0x2b, - 0x36, 0x39, 0x0d, 0x91, 0xef, 0x13, 0x2a, 0x86, 0xe6, 0x10, 0x99, 0x6e, - 0x1f, 0x6c, 0x73, 0x57, 0x08, 0xa3, 0xcf, 0x85, 0x9e, 0x72, 0x86, 0xbe, - 0xfa, 0x99, 0x8d, 0x41, 0x4a, 0x83, 0xa9, 0x19, 0x48, 0x84, 0x27, 0x00, - 0xda, 0x85, 0xd1, 0x97, 0x7b, 0x00, 0xdb, 0x5e, 0x42, 0x82, 0x7e, 0x17, - 0xba, 0xe6, 0x8c, 0xfc, 0xf0, 0x13, 0x98, 0x5e, 0x22, 0x1d, 0x9d, 0x00, - 0x70, 0x0a, 0xfa, 0xbd, 0xab, 0xf3, 0xfe, 0x6a, 0xbb, 0x2d, 0xc3, 0x5d, - 0xc4, 0x83, 0xbf, 0xa1, 0xae, 0xb5, 0x39, 0xd2, 0xff, 0x1f, 0x64, 0xc7, - 0xc1, 0xbf, 0x00, 0x24, 0x91, 0x01, 0xa1, 0xf6, 0x94, 0xe3, 0xca, 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, 0x03, - 0xd0, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x9d, 0x95, 0x5b, 0x48, 0x5b, - 0x77, 0x1c, 0xc7, 0xbf, 0xe7, 0xe4, 0xe4, 0x66, 0x6d, 0x76, 0xcc, 0x6c, - 0x35, 0x31, 0x6a, 0x64, 0x93, 0xd4, 0x3a, 0xf1, 0x34, 0xba, 0xd9, 0xd5, - 0x87, 0x1a, 0x68, 0x67, 0x65, 0x94, 0x5a, 0x3a, 0x18, 0x65, 0x83, 0x45, - 0x28, 0x7b, 0xf0, 0x65, 0x4b, 0x61, 0x4c, 0xf6, 0x52, 0x2a, 0xac, 0x0f, - 0x9b, 0xad, 0xb5, 0xb0, 0xbe, 0x6c, 0x6b, 0xf2, 0x30, 0xf2, 0xd2, 0x32, - 0x53, 0xac, 0x50, 0x68, 0x69, 0xed, 0x98, 0x2d, 0xbd, 0xe1, 0xd9, 0xc6, - 0xd8, 0x4a, 0xcd, 0x92, 0x9a, 0xe8, 0xb4, 0x71, 0xe6, 0xe4, 0x5c, 0x73, - 0x39, 0xc9, 0xd9, 0xc3, 0x16, 0xeb, 0xad, 0x78, 0xf9, 0xc1, 0x1f, 0xfe, - 0xfc, 0xfe, 0xdf, 0xff, 0x87, 0xdf, 0xe5, 0x7f, 0x21, 0x34, 0x4d, 0x03, - 0x00, 0x10, 0x04, 0x81, 0xf5, 0x6c, 0x74, 0xf4, 0x2e, 0x6d, 0xb5, 0x5a, - 0x6e, 0x17, 0x0a, 0x1a, 0xd3, 0xde, 0xde, 0xb4, 0xe6, 0x86, 0x22, 0x8f, - 0x5c, 0x97, 0xb6, 0xdc, 0xfc, 0x6d, 0x6d, 0x8d, 0x4c, 0xa1, 0xa0, 0xad, - 0x2b, 0xa4, 0x36, 0x43, 0xb5, 0x5a, 0x2d, 0xdd, 0x04, 0x01, 0x48, 0x92, - 0xb2, 0x6a, 0xed, 0xda, 0xb5, 0x71, 0xaf, 0xc9, 0x64, 0x3c, 0x05, 0xa0, - 0x6e, 0xd3, 0x60, 0x92, 0xfc, 0x2f, 0x41, 0x51, 0x5c, 0x0e, 0xf6, 0xfb, - 0x47, 0xbd, 0x36, 0xdb, 0x0e, 0xbf, 0xd5, 0x6a, 0x79, 0xa1, 0xdd, 0x0c, - 0x58, 0x14, 0x65, 0x64, 0xb3, 0x79, 0x08, 0x82, 0xb4, 0xe8, 0x1b, 0x18, - 0x08, 0x7a, 0xeb, 0xea, 0xec, 0x7e, 0xb7, 0xbb, 0x1e, 0x1c, 0x27, 0x6c, - 0x15, 0xac, 0x40, 0x96, 0x15, 0x88, 0xa2, 0x0c, 0x00, 0xe8, 0xeb, 0xbb, - 0xe8, 0xdd, 0xb3, 0xc7, 0xe5, 0xdf, 0xbf, 0x9f, 0x01, 0xcf, 0x2b, 0x98, - 0x98, 0x78, 0x12, 0x28, 0x6a, 0x37, 0x55, 0x0a, 0x41, 0x50, 0x20, 0x49, - 0x69, 0xf0, 0xbc, 0x84, 0x13, 0x27, 0xce, 0x78, 0x0f, 0x1c, 0x78, 0xd3, - 0xdf, 0xda, 0xba, 0x0b, 0xf1, 0x78, 0x02, 0x57, 0xaf, 0xfe, 0xc4, 0x92, - 0x24, 0xe1, 0xdb, 0x62, 0xc4, 0x32, 0x64, 0x39, 0x03, 0x9e, 0x97, 0xd0, - 0xd9, 0xf9, 0xb6, 0xdf, 0xe5, 0xaa, 0xc5, 0xd4, 0xd4, 0x1c, 0x2e, 0x5d, - 0x1a, 0x61, 0x17, 0x16, 0x78, 0x4f, 0x6f, 0xef, 0x31, 0x6e, 0x4b, 0x11, - 0xcb, 0x72, 0x1a, 0xe3, 0xe3, 0xbf, 0xc0, 0xe5, 0xaa, 0xc5, 0xee, 0xdd, - 0x4e, 0x44, 0xa3, 0xb3, 0xb8, 0x7c, 0xf9, 0x26, 0x0b, 0xc0, 0x73, 0xe1, - 0xc2, 0x49, 0x6e, 0xa9, 0x76, 0x4d, 0xf0, 0xad, 0x3e, 0x47, 0xb7, 0x51, - 0x4f, 0x30, 0x06, 0x3d, 0x60, 0xa0, 0x10, 0x6d, 0xfe, 0x22, 0x16, 0x00, - 0x80, 0xe9, 0xc8, 0x24, 0x52, 0xa9, 0x4a, 0x1c, 0x3a, 0xb4, 0x17, 0xd1, - 0xe8, 0x2c, 0x82, 0xc1, 0xeb, 0xac, 0xa6, 0xc1, 0x13, 0x0c, 0x9e, 0xe6, - 0x56, 0x32, 0x96, 0x81, 0xaf, 0xf4, 0x3a, 0x9c, 0x96, 0x52, 0x0c, 0x37, - 0xed, 0x03, 0x53, 0xbe, 0x4b, 0x0f, 0xbc, 0x42, 0x41, 0x8c, 0x00, 0x7f, - 0x9c, 0xaf, 0xf9, 0x44, 0x97, 0xc7, 0xd0, 0x03, 0x33, 0x89, 0xfa, 0x96, - 0x7d, 0x08, 0x85, 0xee, 0x20, 0x1c, 0x8e, 0xb3, 0x8a, 0x92, 0xf1, 0x8c, - 0x8c, 0x0c, 0xac, 0x82, 0x02, 0x00, 0x51, 0xbc, 0x82, 0x81, 0x1e, 0x07, - 0x5d, 0xb5, 0xb3, 0x10, 0x39, 0xd8, 0x95, 0xa3, 0x13, 0x09, 0x03, 0x64, - 0x5e, 0x87, 0x32, 0x9b, 0x0e, 0x96, 0x66, 0x03, 0xc4, 0x38, 0x40, 0x9a, - 0x74, 0xb8, 0x33, 0xd5, 0x82, 0x47, 0x0f, 0xdf, 0x42, 0x32, 0xfa, 0x18, - 0x93, 0xdc, 0x8e, 0xb2, 0xb5, 0xa0, 0x8b, 0x4f, 0x44, 0x71, 0xf2, 0xed, - 0x87, 0x0e, 0xff, 0x07, 0x9d, 0xbc, 0xf7, 0xcf, 0x78, 0x09, 0x9e, 0xff, - 0xa3, 0xef, 0xe9, 0x3a, 0x1b, 0x0f, 0x3c, 0x3d, 0x57, 0xd3, 0x51, 0xc5, - 0x90, 0xb7, 0xcd, 0x8d, 0x06, 0xc0, 0x6c, 0x00, 0x44, 0x02, 0x7f, 0xff, - 0x2c, 0x23, 0xab, 0x68, 0x10, 0x67, 0x73, 0x3e, 0x00, 0x9c, 0x06, 0x84, - 0x9a, 0x3e, 0x8f, 0x71, 0x2b, 0xc1, 0x8b, 0xa7, 0xa2, 0xda, 0xaa, 0x78, - 0xf5, 0x6a, 0x16, 0x8f, 0x7e, 0xa7, 0xce, 0x77, 0x9d, 0x8d, 0x07, 0x00, - 0x20, 0xc1, 0x69, 0xac, 0xc2, 0xe7, 0x01, 0x59, 0x45, 0x21, 0x96, 0x41, - 0xf8, 0xba, 0x00, 0x9b, 0xc7, 0x88, 0xca, 0x66, 0x0a, 0xae, 0xc3, 0x25, - 0x83, 0xaf, 0x77, 0x9a, 0xfd, 0x46, 0x9a, 0x8c, 0x3c, 0xec, 0xaf, 0x66, - 0x56, 0x46, 0xbe, 0x08, 0x7e, 0xd5, 0x98, 0xc1, 0xc2, 0xbc, 0x06, 0x4e, - 0xd0, 0x9e, 0x15, 0x7d, 0x29, 0x49, 0x1b, 0xdc, 0x56, 0xa2, 0x22, 0x17, - 0xcf, 0xe1, 0xfe, 0x95, 0x34, 0xbb, 0xad, 0x1c, 0x40, 0x2e, 0x07, 0xe3, - 0x4e, 0x0d, 0x54, 0x3e, 0x0f, 0x63, 0xa9, 0x86, 0xfa, 0x77, 0xf4, 0x34, - 0x65, 0x26, 0x86, 0x5f, 0xda, 0x3c, 0x51, 0x06, 0x2a, 0xb6, 0x67, 0x51, - 0x5d, 0x96, 0x3e, 0xf5, 0xd5, 0x11, 0x7b, 0xad, 0xbd, 0x1c, 0x4c, 0x73, - 0x83, 0xd2, 0x81, 0x2c, 0x89, 0xb1, 0x9b, 0x3a, 0x16, 0x1a, 0x3c, 0xaa, - 0x9c, 0x4f, 0x42, 0x2c, 0x60, 0xe6, 0x1e, 0xb8, 0x74, 0x12, 0xbe, 0x7c, - 0x01, 0x47, 0x6a, 0x5b, 0xd0, 0x5d, 0xd3, 0xa0, 0x39, 0x6f, 0x7c, 0xe6, - 0xe8, 0x3e, 0xf8, 0x75, 0x3c, 0xb4, 0x0a, 0xfc, 0x38, 0x56, 0x3a, 0xe6, - 0xae, 0x94, 0x3a, 0x8e, 0xef, 0x5d, 0xa0, 0x61, 0xc6, 0xa7, 0x30, 0xeb, - 0x31, 0x39, 0x5d, 0x8a, 0x07, 0xbf, 0x1a, 0x03, 0xaa, 0x0a, 0xdf, 0x7b, - 0x17, 0xe3, 0xdc, 0x5f, 0xdf, 0xdb, 0x91, 0x8f, 0x69, 0x88, 0x86, 0xa9, - 0xd3, 0xed, 0xfd, 0xb1, 0x00, 0x80, 0xc0, 0x6f, 0xe7, 0x1c, 0x91, 0x46, - 0xb7, 0xea, 0x54, 0x32, 0x14, 0x03, 0x60, 0x35, 0x58, 0x48, 0xeb, 0x8e, - 0x0e, 0x8d, 0xdb, 0x07, 0x19, 0x87, 0xd4, 0x5d, 0x62, 0x02, 0x3d, 0xa7, - 0x98, 0x58, 0x39, 0x4b, 0x0d, 0x7d, 0xfc, 0xc3, 0x74, 0xa0, 0xa8, 0x91, - 0x52, 0x79, 0x28, 0x0b, 0x2a, 0x12, 0x49, 0x1d, 0x5b, 0xf4, 0x85, 0x23, - 0x88, 0xbe, 0xe1, 0xce, 0x38, 0x95, 0x8c, 0x6e, 0xed, 0x52, 0xf4, 0xdf, - 0x98, 0xe1, 0x00, 0xf4, 0xfc, 0x3f, 0x00, 0xa4, 0x56, 0x96, 0x0d, 0x89, - 0xe7, 0x88, 0x36, 0xd8, 0xd3, 0xce, 0xf9, 0xa4, 0xe9, 0x23, 0x00, 0x63, - 0xdf, 0xbc, 0x5f, 0x45, 0xd3, 0xa5, 0x19, 0x46, 0x8e, 0xa9, 0x50, 0x32, - 0x2f, 0x69, 0xde, 0x46, 0xec, 0xc9, 0x33, 0x6a, 0x4c, 0x13, 0x73, 0x68, - 0x7b, 0x8d, 0xf7, 0x7e, 0xf9, 0xae, 0x7d, 0x58, 0x4f, 0xaa, 0x13, 0x6e, - 0x07, 0x4f, 0x3f, 0x9d, 0x24, 0xa1, 0x64, 0x5f, 0x94, 0x01, 0x58, 0x72, - 0x8e, 0x37, 0xf2, 0xe7, 0x0d, 0x1e, 0xb3, 0x3b, 0x2b, 0x2c, 0xd9, 0x89, - 0xe3, 0xad, 0xf3, 0x74, 0x31, 0x57, 0x41, 0x20, 0xf0, 0xdd, 0x5d, 0x5b, - 0xe8, 0xe4, 0x8f, 0x33, 0x47, 0x81, 0x35, 0x2e, 0xc8, 0x46, 0xc0, 0x00, - 0x70, 0xe6, 0xb0, 0x9d, 0x29, 0x33, 0xe5, 0x86, 0x9b, 0x2b, 0x04, 0x67, - 0x52, 0xd1, 0x83, 0x9d, 0xdb, 0x1e, 0xd0, 0x11, 0xf0, 0xf5, 0x8d, 0xcc, - 0x70, 0x4b, 0xc1, 0xff, 0x02, 0x75, 0x5c, 0xb4, 0x48, 0xa1, 0x80, 0x33, - 0xc4, 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, 0x01, - 0x95, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xa5, 0x94, 0xcd, 0x6e, 0x82, - 0x40, 0x14, 0x85, 0xcf, 0x1d, 0xc6, 0xf8, 0x20, 0x5d, 0x1a, 0x9b, 0x98, - 0xb8, 0xee, 0xd2, 0x75, 0x1f, 0xc0, 0xb7, 0xd3, 0x7d, 0x7d, 0x10, 0x13, - 0x92, 0x8a, 0x8b, 0x26, 0xf6, 0x0d, 0x8c, 0x69, 0xb4, 0x48, 0xc9, 0x0c, - 0x73, 0xba, 0xa0, 0xa0, 0xc0, 0xf0, 0x63, 0x7a, 0x12, 0x02, 0x84, 0xe1, - 0xdc, 0x73, 0xef, 0x7c, 0x20, 0x24, 0xb1, 0xdf, 0x7f, 0x12, 0x1d, 0x0a, - 0xc3, 0x1d, 0x96, 0xcb, 0x57, 0xe9, 0x5a, 0xd3, 0x10, 0x49, 0x44, 0xd1, - 0x81, 0xf7, 0x32, 0x26, 0x63, 0x92, 0x18, 0x1e, 0x8f, 0x5f, 0x3c, 0x9d, - 0xce, 0x8c, 0xa2, 0x03, 0x57, 0xab, 0x37, 0x92, 0xc4, 0xd0, 0x43, 0xf9, - 0x8a, 0x05, 0x81, 0x20, 0x08, 0x04, 0x4a, 0xdd, 0x1e, 0xcf, 0xe7, 0xcf, - 0x58, 0xaf, 0x37, 0x9d, 0x9d, 0xdd, 0xcb, 0x6b, 0x0c, 0x00, 0x22, 0x82, - 0x20, 0x08, 0x00, 0xe4, 0xa3, 0xd8, 0x6e, 0xdf, 0x01, 0x60, 0xb0, 0xb9, - 0xee, 0xac, 0xaa, 0x14, 0xb2, 0x2c, 0xc3, 0x62, 0xf1, 0x82, 0xf3, 0xf9, - 0x1b, 0x97, 0x4b, 0x8c, 0xfd, 0xfe, 0x63, 0x50, 0x62, 0xaf, 0x71, 0x9e, - 0x36, 0x3f, 0x2b, 0xa5, 0x10, 0xc7, 0x09, 0x92, 0x24, 0xad, 0x8c, 0xe6, - 0x5f, 0x89, 0x45, 0x08, 0xe7, 0x1c, 0xae, 0xd7, 0x1f, 0x28, 0xa5, 0xa0, - 0x94, 0xc2, 0x6c, 0x36, 0x6d, 0x50, 0xe4, 0xa3, 0xc6, 0x6b, 0x6c, 0xad, - 0x83, 0xb5, 0x0e, 0x71, 0x9c, 0x20, 0x4d, 0x0d, 0x00, 0x60, 0x32, 0x79, - 0xf2, 0x3c, 0x8f, 0xff, 0xba, 0x98, 0x62, 0xbd, 0xde, 0xf0, 0xde, 0xbc, - 0xd1, 0x1b, 0x99, 0xa7, 0x4c, 0xd3, 0x14, 0x24, 0x31, 0x1a, 0x05, 0x8d, - 0xc2, 0x43, 0xa8, 0x69, 0x18, 0x67, 0x19, 0xcb, 0x94, 0x5a, 0xeb, 0x92, - 0x8c, 0xba, 0xfa, 0xa8, 0xa9, 0x8c, 0x82, 0x24, 0x8c, 0x31, 0x10, 0x91, - 0xf2, 0xe8, 0xda, 0xb0, 0x2e, 0x6a, 0x2a, 0xc6, 0xce, 0xe5, 0xe6, 0x7d, - 0x1a, 0x42, 0x4d, 0x25, 0x8e, 0x31, 0x59, 0xe5, 0xe5, 0x3e, 0xbc, 0x0a, - 0x6a, 0x8c, 0xc9, 0xa0, 0xb5, 0x82, 0xd6, 0xb7, 0x9c, 0xb5, 0xc4, 0x16, - 0xa4, 0x80, 0x74, 0xe5, 0x26, 0xfa, 0x54, 0xa7, 0x66, 0x3c, 0x1e, 0x81, - 0xd4, 0xb0, 0xf6, 0xb6, 0xbe, 0x34, 0x2e, 0x46, 0x20, 0x42, 0x88, 0x48, - 0xeb, 0x48, 0xda, 0xa8, 0x21, 0xf3, 0xf7, 0x2a, 0xc6, 0x61, 0xb8, 0x43, - 0x18, 0xee, 0x5a, 0x5b, 0x9e, 0xcd, 0xa6, 0xe5, 0x75, 0x9d, 0x9a, 0xa2, - 0x2b, 0x6b, 0x5d, 0xd3, 0xb8, 0xef, 0x5f, 0x5b, 0x7c, 0x69, 0x6d, 0xd4, - 0x38, 0xe7, 0x4a, 0x42, 0x0a, 0x0d, 0xff, 0xf8, 0xd1, 0x4e, 0x4d, 0x5e, - 0x00, 0x95, 0xc4, 0x0f, 0x19, 0x3f, 0x42, 0xcd, 0x83, 0x89, 0x0b, 0x6a, - 0x58, 0xa1, 0xc6, 0xd7, 0xc5, 0x60, 0xe3, 0x3a, 0x35, 0xf7, 0xaa, 0xdf, - 0x03, 0x3d, 0xbf, 0xcd, 0x42, 0x7d, 0xd4, 0xf8, 0xf4, 0x0b, 0xcc, 0x2c, - 0x55, 0x03, 0x46, 0xd4, 0xfe, 0x54, 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, 0x02, - 0xab, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x8d, 0x95, 0x3b, 0x68, 0x54, - 0x41, 0x14, 0x86, 0xbf, 0xb9, 0xf7, 0x86, 0x80, 0xc6, 0x20, 0x42, 0x02, - 0xe2, 0x83, 0x58, 0x88, 0x45, 0x44, 0x57, 0x04, 0x25, 0x4a, 0xcc, 0x8a, - 0x36, 0xa6, 0xb2, 0xb7, 0xb0, 0x48, 0x6d, 0x21, 0x04, 0xb1, 0x30, 0xb1, - 0xb1, 0x51, 0x10, 0xb1, 0x4a, 0x9a, 0x28, 0x82, 0xa5, 0x16, 0x5a, 0x24, - 0x85, 0x88, 0x2f, 0x10, 0x84, 0x55, 0x22, 0x1a, 0xe3, 0xab, 0x30, 0x18, - 0x11, 0x82, 0x1a, 0x13, 0xb3, 0x77, 0xef, 0x6b, 0xce, 0xb1, 0xb8, 0xfb, - 0xca, 0x66, 0x77, 0xb3, 0x3f, 0x1c, 0xb8, 0xcc, 0x9c, 0xfb, 0xcd, 0x7f, - 0xce, 0x0c, 0x33, 0x86, 0x3a, 0xba, 0x7a, 0xf5, 0xce, 0x0d, 0x20, 0x53, - 0x3d, 0xa6, 0xca, 0xf4, 0xc5, 0x8b, 0x67, 0xcf, 0xd7, 0xe6, 0xaa, 0x6a, - 0x3d, 0xc4, 0x5a, 0x8d, 0x8e, 0x8e, 0xdf, 0x1e, 0x1f, 0xbf, 0xaf, 0xb5, - 0x1a, 0x1b, 0xbb, 0xa7, 0x23, 0x23, 0x63, 0xb7, 0x6b, 0xa1, 0x8d, 0xc2, - 0x7c, 0xb8, 0xd9, 0xbb, 0xd9, 0x31, 0x5c, 0x36, 0x86, 0xcc, 0xb3, 0x5f, - 0xc7, 0x36, 0x2f, 0x75, 0x1c, 0xcd, 0x0c, 0x0f, 0x9f, 0xc1, 0xf7, 0x83, - 0x55, 0x0b, 0x06, 0x41, 0xc8, 0xad, 0x5b, 0x0f, 0xe9, 0xfc, 0xf7, 0x72, - 0x3a, 0xdb, 0xf5, 0xe2, 0xaf, 0x2a, 0xd3, 0x7b, 0xce, 0xbd, 0x5f, 0x53, - 0x41, 0x49, 0x9e, 0x1f, 0xe8, 0x93, 0xed, 0xfd, 0xc7, 0x33, 0x1d, 0x3b, - 0x76, 0xb2, 0x74, 0x57, 0xe9, 0xeb, 0xdb, 0xcb, 0xfc, 0xfc, 0x42, 0xdd, - 0xe4, 0xbe, 0xbe, 0x7d, 0xbc, 0x7c, 0xfe, 0x23, 0xb3, 0xed, 0xf4, 0x2e, - 0x56, 0xbe, 0x7f, 0xca, 0xbe, 0xbe, 0xd6, 0x9b, 0x3d, 0x78, 0x61, 0xe6, - 0x40, 0x5d, 0x30, 0x9d, 0x5b, 0x32, 0xdd, 0x87, 0x7a, 0x00, 0x88, 0xac, - 0x0f, 0xc0, 0xdc, 0xdc, 0xcf, 0x86, 0xad, 0x8a, 0x6c, 0xc8, 0x86, 0xad, - 0x1b, 0xd9, 0xd0, 0xbd, 0x87, 0xf9, 0x37, 0x1f, 0x33, 0x8d, 0xf2, 0xbc, - 0x48, 0x3d, 0x34, 0x4a, 0xcb, 0x3e, 0x31, 0x20, 0x3c, 0x7e, 0xfa, 0xa0, - 0x21, 0x14, 0xe0, 0x64, 0x56, 0xd3, 0xfc, 0x30, 0x26, 0x4a, 0x9c, 0x86, - 0x79, 0xe6, 0xd1, 0xf5, 0x7e, 0xcd, 0x0e, 0x0d, 0x34, 0x85, 0xcd, 0x7c, - 0x1b, 0x6a, 0x3a, 0x9f, 0xcb, 0xcd, 0x32, 0x34, 0x74, 0xca, 0xac, 0x72, - 0xec, 0xfb, 0x82, 0xc4, 0x41, 0xa3, 0x7f, 0xca, 0xda, 0xbf, 0xbf, 0xa7, - 0xfc, 0x1d, 0x45, 0x4a, 0x92, 0x08, 0x2b, 0x2b, 0x3e, 0x8e, 0x93, 0xba, - 0x9e, 0x98, 0x98, 0xd2, 0x6a, 0xb8, 0xe3, 0x17, 0x2c, 0x1a, 0x05, 0x4d, - 0xa3, 0x56, 0xae, 0x6b, 0x70, 0x5d, 0x07, 0xd7, 0xad, 0xb4, 0xe2, 0xf0, - 0xe1, 0x5e, 0x26, 0x26, 0xa6, 0xb4, 0x0a, 0x2c, 0x48, 0x14, 0x34, 0x8d, - 0x7a, 0x32, 0x86, 0x32, 0x38, 0x97, 0x9b, 0xe5, 0xd5, 0xab, 0x99, 0xb2, - 0x73, 0x00, 0x2f, 0x08, 0x5b, 0x6b, 0x45, 0x2d, 0x14, 0x28, 0xb6, 0x41, - 0x18, 0x1c, 0x3c, 0xc2, 0xd2, 0x52, 0x9e, 0xe5, 0xe5, 0x3c, 0xef, 0xde, - 0x7d, 0x05, 0xc0, 0x53, 0x91, 0x55, 0xe5, 0x6a, 0x21, 0x06, 0x3f, 0x86, - 0xc4, 0x82, 0x14, 0x2b, 0xeb, 0xaa, 0xe7, 0xd6, 0x60, 0x8c, 0xc1, 0x75, - 0x0d, 0x8b, 0x8b, 0x05, 0x0a, 0x85, 0x00, 0xd7, 0xad, 0xec, 0x9f, 0xa7, - 0x2a, 0x48, 0x14, 0x82, 0x28, 0xfa, 0x27, 0x0f, 0xb1, 0xb4, 0xec, 0xd8, - 0x18, 0xb0, 0x56, 0x89, 0x63, 0x8b, 0xe7, 0xb9, 0x88, 0x54, 0x7a, 0xee, - 0x21, 0x82, 0x84, 0x05, 0xf4, 0xb7, 0x0f, 0xb1, 0x5d, 0x17, 0xaa, 0x0a, - 0x71, 0x5c, 0x3a, 0x15, 0x05, 0xc2, 0x30, 0xa1, 0xbd, 0xbd, 0x0d, 0x55, - 0x0f, 0x6b, 0x2b, 0xa6, 0x52, 0xc7, 0x8b, 0xcb, 0x68, 0x3e, 0x6c, 0x09, - 0xaa, 0x9a, 0xba, 0x0c, 0xc3, 0x10, 0x55, 0x68, 0x6b, 0x73, 0x01, 0x10, - 0x51, 0x8c, 0xa9, 0x6a, 0x05, 0xd6, 0x22, 0xbf, 0x97, 0xd7, 0x85, 0x96, - 0x4a, 0x8f, 0x63, 0x25, 0x8a, 0xa2, 0xf4, 0x67, 0xcf, 0x45, 0x24, 0x75, - 0x99, 0x24, 0x82, 0xe3, 0x54, 0xf7, 0x38, 0x4c, 0x90, 0x28, 0x6e, 0x09, - 0x2c, 0x02, 0x71, 0x9c, 0x60, 0x8c, 0x29, 0x87, 0xe3, 0x38, 0x88, 0x28, - 0xae, 0x6b, 0x48, 0x92, 0xca, 0xdd, 0xec, 0x51, 0xda, 0xbc, 0x16, 0x64, - 0x6d, 0xfd, 0x8b, 0xdd, 0x18, 0xca, 0x0b, 0x95, 0xc1, 0x0b, 0x7f, 0x1d, - 0x0a, 0xf9, 0x88, 0xf6, 0xb6, 0xf5, 0x4f, 0x43, 0x5c, 0xb5, 0xb9, 0xa5, - 0xa3, 0x56, 0xed, 0xb2, 0x5a, 0xde, 0x95, 0xc9, 0xcf, 0xe6, 0xd2, 0xe0, - 0x6e, 0xed, 0xda, 0x94, 0x34, 0x04, 0x66, 0x8b, 0x77, 0x94, 0x88, 0x2d, - 0x6e, 0x60, 0xfa, 0x4a, 0x48, 0xf1, 0x9c, 0xd7, 0x7b, 0x9d, 0x3c, 0x80, - 0x2b, 0x93, 0x5f, 0xcc, 0xda, 0xa9, 0x8a, 0xde, 0xbe, 0xfd, 0xa6, 0xd6, - 0x96, 0x9c, 0xa6, 0x6e, 0x53, 0x78, 0x65, 0xac, 0x16, 0xee, 0x35, 0x03, - 0x96, 0x94, 0xcb, 0xcd, 0x92, 0xcb, 0xcd, 0xb6, 0x92, 0x5a, 0xd6, 0x7f, - 0x25, 0x79, 0xad, 0xb1, 0x85, 0x0a, 0xbe, 0x46, 0x00, 0x00, 0x00, 0x00, - 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82; - -our $image14; -our $image14_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, - 0x91, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x95, 0x95, 0x5b, 0x6c, 0x94, - 0x45, 0x18, 0x86, 0x9f, 0x99, 0xff, 0xb4, 0x87, 0xee, 0xf6, 0x6f, 0x69, - 0xcb, 0x96, 0x7a, 0xd1, 0x0a, 0x36, 0xf1, 0x80, 0x16, 0x14, 0x88, 0x31, - 0x26, 0x60, 0x82, 0x31, 0x31, 0x20, 0x6a, 0x88, 0x88, 0x44, 0xb6, 0x95, - 0x3b, 0x1b, 0x09, 0x91, 0x18, 0x2f, 0x38, 0x08, 0x5c, 0x34, 0x48, 0x4c, - 0x41, 0x89, 0x18, 0x0e, 0x6d, 0x49, 0x40, 0xb8, 0x30, 0x42, 0xd1, 0x10, - 0xa0, 0x31, 0x56, 0x08, 0x34, 0x48, 0xa2, 0xe5, 0x86, 0x82, 0x94, 0x16, - 0x6a, 0x0b, 0x2d, 0x14, 0xda, 0x6e, 0x77, 0x97, 0x3d, 0xfc, 0xff, 0x3f, - 0x5e, 0xd0, 0x36, 0xb4, 0x84, 0xaa, 0x6f, 0x32, 0x37, 0x33, 0x93, 0x27, - 0xef, 0x7c, 0xdf, 0x97, 0x77, 0x04, 0x0f, 0xe9, 0xd0, 0xa1, 0x13, 0xa5, - 0x86, 0xe1, 0x6d, 0xcc, 0x22, 0x96, 0x08, 0xa9, 0x6c, 0x81, 0x42, 0xd7, - 0x04, 0xca, 0xa5, 0x55, 0xb9, 0x6a, 0xff, 0xd2, 0xa5, 0x6f, 0x6e, 0xe7, - 0x31, 0xda, 0x5c, 0xd7, 0xa2, 0xce, 0x9c, 0x6b, 0xa3, 0x69, 0x6f, 0x95, - 0x00, 0x10, 0xa3, 0x07, 0x0d, 0x0d, 0x3f, 0x46, 0x5d, 0x5d, 0xd4, 0x06, - 0x82, 0x3e, 0x3b, 0x90, 0x93, 0x83, 0xdf, 0x6f, 0x21, 0xa5, 0x04, 0xc0, - 0x71, 0x1c, 0x52, 0xf1, 0x38, 0x89, 0x58, 0xac, 0x35, 0x9d, 0xa4, 0xb2, - 0xaa, 0xea, 0x9d, 0xd6, 0x89, 0xe0, 0x85, 0xab, 0xea, 0x54, 0x77, 0x57, - 0x0f, 0x6d, 0xa7, 0xd6, 0x8b, 0xcd, 0x75, 0x2d, 0x4a, 0x00, 0xec, 0xdc, - 0x79, 0x30, 0x6a, 0x04, 0x64, 0x7d, 0x41, 0x71, 0x84, 0x50, 0x28, 0x88, - 0x69, 0xea, 0x68, 0x9a, 0x06, 0x80, 0xeb, 0xb8, 0x18, 0xa6, 0x81, 0xa6, - 0x69, 0x24, 0xe2, 0x09, 0x6e, 0x76, 0x76, 0x0c, 0x0e, 0x0d, 0x38, 0xb3, - 0xaa, 0xab, 0x3f, 0xb8, 0xfe, 0x38, 0xf7, 0x0b, 0x57, 0xd5, 0x29, 0x59, - 0x53, 0x53, 0x5f, 0xea, 0x48, 0xb7, 0xb6, 0xa0, 0x38, 0x82, 0x6d, 0x87, - 0xb1, 0x73, 0x73, 0xc8, 0xcf, 0x0b, 0x93, 0x67, 0x87, 0x08, 0x85, 0x82, - 0x18, 0xa6, 0x81, 0x93, 0x75, 0x00, 0x98, 0x52, 0x90, 0x47, 0x49, 0x59, - 0x99, 0x2d, 0xb4, 0x4c, 0xfd, 0x44, 0xd8, 0xda, 0x1d, 0xcd, 0x2a, 0xba, - 0xf1, 0x98, 0x02, 0x68, 0xda, 0x5b, 0x25, 0xa4, 0xeb, 0x26, 0x56, 0xdb, - 0xf9, 0x61, 0x3b, 0x18, 0xf4, 0x13, 0x0c, 0xfa, 0x09, 0x87, 0x73, 0xc8, - 0x0d, 0x87, 0xb0, 0x43, 0x39, 0xb8, 0x8e, 0x4b, 0x61, 0x41, 0x1e, 0x81, - 0x80, 0x0f, 0xd3, 0xd4, 0x01, 0x88, 0x14, 0x17, 0x91, 0x5f, 0x60, 0xcf, - 0xdf, 0xb2, 0xe5, 0x9b, 0x8a, 0x51, 0xe8, 0xc7, 0x5b, 0x4f, 0xaa, 0xae, - 0xee, 0x3b, 0xf4, 0xf4, 0xf4, 0xf3, 0xd2, 0xbb, 0xb5, 0x0a, 0x40, 0xa6, - 0xdd, 0xcc, 0x12, 0x7b, 0x4a, 0x3e, 0x86, 0x61, 0xe0, 0xf3, 0x99, 0xf8, - 0x7d, 0x16, 0x21, 0xbf, 0x9f, 0xdc, 0x60, 0x10, 0xcf, 0xf3, 0x30, 0x75, - 0x9d, 0x40, 0xc0, 0x47, 0x30, 0xe0, 0xc7, 0xef, 0xb3, 0x30, 0x0d, 0x9d, - 0xd2, 0xe9, 0xa5, 0x64, 0xb3, 0xc3, 0x2b, 0x47, 0xc1, 0x43, 0xb1, 0x24, - 0x03, 0x03, 0xc3, 0xa4, 0x52, 0x69, 0x94, 0x52, 0x00, 0xe8, 0x52, 0xaa, - 0x52, 0xcb, 0x34, 0xd0, 0x75, 0x89, 0x14, 0x20, 0x10, 0x68, 0x9a, 0x46, - 0x2c, 0x91, 0xc4, 0xf2, 0x59, 0x58, 0xa6, 0x81, 0xa7, 0x3c, 0xa4, 0x94, - 0x08, 0x21, 0x50, 0x4a, 0x11, 0x29, 0x8e, 0x90, 0x4a, 0x25, 0xc7, 0x1c, - 0x5f, 0xbb, 0xd6, 0x83, 0xe3, 0x38, 0x64, 0xd3, 0x59, 0xe2, 0xb1, 0x18, - 0x00, 0xd2, 0x30, 0x35, 0x34, 0x4d, 0x43, 0x08, 0xc1, 0x50, 0x2c, 0x41, - 0xf7, 0xad, 0xdb, 0x74, 0xfc, 0x7d, 0x93, 0xbb, 0x43, 0x43, 0x84, 0x73, - 0x02, 0x18, 0x9a, 0x86, 0xa9, 0xeb, 0x63, 0xcb, 0x32, 0x0c, 0x4c, 0x5d, - 0x27, 0x9d, 0xbe, 0x3f, 0x56, 0xdf, 0x96, 0xc3, 0xd5, 0x65, 0x4e, 0xd6, - 0x21, 0x1e, 0x8b, 0xd1, 0xfe, 0xdb, 0x16, 0x01, 0xa0, 0x0f, 0xc7, 0x12, - 0x08, 0xf1, 0x60, 0xea, 0xfc, 0x3e, 0x0b, 0xdd, 0xd0, 0x91, 0x40, 0x38, - 0x27, 0x87, 0xa0, 0x65, 0x91, 0xca, 0x64, 0xd0, 0x75, 0x1d, 0x5d, 0x4a, - 0xa4, 0x94, 0x28, 0xa5, 0x70, 0x3c, 0x8f, 0x64, 0x32, 0xf5, 0x70, 0xef, - 0xae, 0xff, 0xd9, 0xb8, 0x56, 0x3c, 0xbc, 0x21, 0xfb, 0xfa, 0xee, 0x5e, - 0x77, 0x5d, 0x17, 0x29, 0x25, 0x03, 0x83, 0xc3, 0x64, 0x33, 0x59, 0x34, - 0x5d, 0xc3, 0xf5, 0x5c, 0x92, 0x99, 0x0c, 0x9a, 0xa6, 0x61, 0x68, 0x1a, - 0xc6, 0x88, 0x53, 0x53, 0xd7, 0xe9, 0xed, 0xb9, 0x49, 0x3c, 0x9e, 0x79, - 0x64, 0x96, 0xc7, 0x81, 0xfb, 0x7b, 0x07, 0x8f, 0xde, 0xe8, 0xe8, 0x04, - 0xc0, 0xb2, 0x0c, 0x1c, 0xd7, 0xc3, 0xf5, 0x1e, 0x34, 0x40, 0x20, 0x90, - 0x23, 0x4e, 0x0d, 0x4d, 0xc3, 0x32, 0x0c, 0x74, 0x5d, 0xa7, 0xe9, 0x64, - 0x13, 0xc3, 0xc3, 0xee, 0xfe, 0x49, 0xc1, 0xf1, 0xb8, 0xd8, 0x74, 0xfa, - 0xd7, 0xb3, 0x83, 0xe9, 0x74, 0x16, 0xbf, 0xcf, 0x42, 0x93, 0x62, 0xb2, - 0xfb, 0x74, 0x76, 0x74, 0x72, 0xb1, 0xb5, 0x8d, 0x92, 0x92, 0x27, 0x07, - 0x27, 0x05, 0x37, 0x37, 0xef, 0x1b, 0xec, 0xed, 0x8e, 0x57, 0xfe, 0x7c, - 0xe4, 0x18, 0xe9, 0x4c, 0x16, 0x9f, 0xcf, 0x04, 0xc0, 0xf5, 0x14, 0x0a, - 0x85, 0xe7, 0x79, 0x78, 0x9e, 0x47, 0xd6, 0x75, 0xb9, 0xfc, 0x57, 0x3b, - 0x5f, 0xef, 0xf8, 0x96, 0xf2, 0xf2, 0x0a, 0xc2, 0xe1, 0x60, 0xc5, 0x64, - 0x60, 0x0d, 0xa0, 0xb3, 0xb3, 0xf5, 0x72, 0xd0, 0x57, 0x76, 0xb1, 0xfd, - 0xea, 0xa5, 0x37, 0xec, 0xdc, 0x90, 0xaf, 0x70, 0x6a, 0x11, 0xba, 0xae, - 0x21, 0x85, 0x78, 0x10, 0x26, 0x42, 0x70, 0xf2, 0xf8, 0x09, 0xbe, 0x3f, - 0xf0, 0x03, 0x33, 0x66, 0xbc, 0x40, 0x49, 0xc9, 0x34, 0x0a, 0xad, 0x7b, - 0xcb, 0x3e, 0x99, 0x79, 0xe5, 0x8b, 0xf7, 0x66, 0x07, 0x4a, 0x0f, 0xfe, - 0x3e, 0xdc, 0x38, 0x11, 0x3c, 0xee, 0xdd, 0xf3, 0xe7, 0x7f, 0x64, 0x9b, - 0x66, 0x76, 0x63, 0x61, 0x24, 0xb4, 0x24, 0x3f, 0x2f, 0x50, 0xaa, 0x69, - 0x02, 0x90, 0x5c, 0xbd, 0x72, 0xa3, 0x39, 0x9b, 0x35, 0xf6, 0xcf, 0x99, - 0x33, 0xaf, 0x35, 0x9d, 0x4e, 0xdb, 0xb6, 0xbc, 0x5d, 0x5f, 0x9e, 0x3c, - 0x52, 0x3a, 0xb7, 0x22, 0xc4, 0x40, 0x67, 0x3b, 0x6d, 0xb7, 0xfc, 0x0d, - 0xcb, 0xeb, 0x6e, 0x55, 0x3e, 0x62, 0x7b, 0xc3, 0x9e, 0xb3, 0xea, 0xd5, - 0x15, 0xbb, 0x14, 0xe0, 0x9b, 0xb4, 0xc0, 0x23, 0xfa, 0xee, 0xfd, 0xe2, - 0x81, 0x3b, 0x17, 0xd6, 0xa9, 0x64, 0xdb, 0x36, 0xd5, 0x7f, 0xf8, 0x65, - 0x75, 0xfe, 0x33, 0x5b, 0xed, 0x5a, 0x56, 0x3c, 0x2e, 0x3f, 0x24, 0x40, - 0xcb, 0xf9, 0x2b, 0xdc, 0xee, 0xbd, 0x0d, 0x90, 0xaa, 0xfe, 0xf2, 0x94, - 0xaa, 0x58, 0xb4, 0x4d, 0x4d, 0x06, 0x4e, 0xdc, 0x67, 0x4d, 0xcb, 0x91, - 0x46, 0xac, 0x3c, 0x9b, 0xc0, 0xf3, 0x6f, 0x31, 0x7d, 0xf6, 0xd3, 0x3c, - 0x37, 0x2d, 0x19, 0xad, 0x59, 0x54, 0xfc, 0x48, 0x38, 0x8d, 0xea, 0x89, - 0x05, 0xd1, 0xdd, 0xaa, 0x7c, 0xc1, 0xc6, 0x49, 0xc1, 0x00, 0xeb, 0x5f, - 0x8f, 0x44, 0x0f, 0x7f, 0x3a, 0x53, 0xb9, 0x7d, 0x75, 0x2a, 0x79, 0xa9, - 0x46, 0xf5, 0x1f, 0x9a, 0xa7, 0x7e, 0xa9, 0x0e, 0xab, 0xcf, 0x5f, 0x8b, - 0xd4, 0x03, 0x88, 0xad, 0x07, 0x2e, 0xa8, 0x3b, 0x77, 0x13, 0xf4, 0xdf, - 0x8b, 0xd1, 0xb0, 0x69, 0xf1, 0xe4, 0xb3, 0x36, 0x41, 0xab, 0x5f, 0x89, - 0x44, 0x2b, 0x66, 0x15, 0xd5, 0x7f, 0xb8, 0x7e, 0x0d, 0xe9, 0xfe, 0x9b, - 0x24, 0x2f, 0x36, 0x72, 0xe1, 0x74, 0x1b, 0x3f, 0xb5, 0x06, 0x1b, 0x64, - 0x57, 0xcf, 0x3d, 0x46, 0x23, 0xef, 0xc5, 0xb7, 0xbf, 0x52, 0xf0, 0xe0, - 0x9b, 0x59, 0xb8, 0xaa, 0xee, 0x5f, 0x5d, 0xef, 0x38, 0xdb, 0xdb, 0x70, - 0xfa, 0x5c, 0x5f, 0xe5, 0x9e, 0x0d, 0xdb, 0xb1, 0x8a, 0x4a, 0x08, 0xcc, - 0x5c, 0xcc, 0xb3, 0x73, 0x9f, 0x42, 0x49, 0x23, 0x2a, 0x13, 0xc9, 0xf4, - 0x58, 0xe4, 0x31, 0x92, 0x19, 0x67, 0xce, 0xb5, 0xd1, 0xdd, 0xd5, 0xf3, - 0x9f, 0x5c, 0xd7, 0xff, 0xd1, 0xd7, 0xd0, 0x72, 0xbe, 0xb7, 0x72, 0xf7, - 0xba, 0x5a, 0x1c, 0x7f, 0x3e, 0xfb, 0x8e, 0x43, 0xb0, 0x62, 0x05, 0x62, - 0x41, 0x74, 0xb7, 0x4a, 0x26, 0x53, 0xa4, 0xef, 0xa7, 0xc7, 0xa5, 0xd3, - 0xff, 0xd5, 0xca, 0x8a, 0xa9, 0xf5, 0x7e, 0xbf, 0x8c, 0xea, 0xcf, 0x2c, - 0xa7, 0xb3, 0x37, 0x75, 0xf4, 0x1f, 0x56, 0x87, 0xe4, 0x18, 0x1c, 0x28, - 0xb9, 0x61, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, - 0x60, 0x82; - -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, 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 $image16; -our $image16_data = pack 'C*', -0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, - 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, - 0x08, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x77, 0x3d, 0xf8, 0x00, 0x00, 0x02, - 0x30, 0x49, 0x44, 0x41, 0x54, 0x48, 0x89, 0x9d, 0xd5, 0xcb, 0x4e, 0x54, - 0x41, 0x10, 0x06, 0xe0, 0x6f, 0x86, 0x51, 0x14, 0xaf, 0x31, 0x31, 0x02, - 0x1a, 0x16, 0x06, 0x71, 0xe3, 0x65, 0xa1, 0x6f, 0x60, 0x74, 0xe9, 0xd2, - 0xb8, 0xd5, 0x20, 0x89, 0xf1, 0x25, 0xe6, 0x39, 0x7c, 0x09, 0x9f, 0xc1, - 0x57, 0xd0, 0x95, 0x18, 0x13, 0x15, 0x50, 0x8c, 0x17, 0x08, 0xa0, 0x03, - 0x83, 0x30, 0x2e, 0xba, 0x8e, 0xf4, 0xf4, 0x1c, 0x06, 0xb4, 0x92, 0x93, - 0x99, 0xae, 0xae, 0xfa, 0xeb, 0xef, 0xfa, 0xeb, 0xf4, 0xe1, 0xf0, 0xd6, - 0x44, 0x6f, 0xc8, 0x33, 0x8e, 0x13, 0x68, 0xa1, 0x91, 0x27, 0x36, 0x22, - 0xb9, 0xcf, 0x59, 0x0f, 0xde, 0x8e, 0x27, 0x07, 0x1e, 0xf0, 0x4d, 0x60, - 0x2c, 0x72, 0x34, 0xc2, 0x79, 0x16, 0x5d, 0x6c, 0x61, 0xb7, 0x00, 0x6f, - 0x24, 0x5f, 0x3b, 0x96, 0x6d, 0x78, 0x8c, 0x0d, 0x6c, 0xe3, 0xc5, 0xde, - 0xde, 0xdf, 0xfd, 0x19, 0x2c, 0xa1, 0xd3, 0x0c, 0xef, 0x6a, 0x59, 0xb9, - 0x60, 0x9f, 0x27, 0xcf, 0xe1, 0x3b, 0xe6, 0xf1, 0x1a, 0x37, 0xfb, 0x0b, - 0x80, 0x29, 0x9c, 0x46, 0x33, 0x07, 0x7b, 0x87, 0xc9, 0x9a, 0x22, 0x59, - 0xeb, 0xda, 0xf0, 0x3c, 0x08, 0x7d, 0x09, 0x96, 0x1f, 0x4a, 0x74, 0x9c, - 0xc2, 0x51, 0x34, 0x4a, 0xb6, 0x6f, 0x6a, 0x8a, 0x44, 0x5f, 0x2b, 0x96, - 0x6d, 0x78, 0x19, 0x20, 0x4d, 0x6c, 0xd6, 0x14, 0xe8, 0xb3, 0xba, 0x89, - 0x98, 0xc1, 0x49, 0x7b, 0xe2, 0x8f, 0x85, 0xaf, 0xda, 0x7f, 0x88, 0xdb, - 0x38, 0x67, 0x50, 0xe8, 0x59, 0xdc, 0x91, 0xa6, 0x6a, 0xa4, 0x12, 0xb9, - 0xce, 0xae, 0xe2, 0x13, 0x7e, 0xc5, 0x7a, 0x2c, 0x4e, 0x77, 0x31, 0x72, - 0x96, 0x30, 0x5f, 0x9c, 0xec, 0x09, 0x3e, 0xe3, 0x2d, 0x16, 0xd1, 0x19, - 0x56, 0xa0, 0xae, 0xc8, 0xb1, 0x38, 0xd9, 0x48, 0xf2, 0xf7, 0x81, 0xcf, - 0x62, 0x39, 0xc0, 0xab, 0x9c, 0xdd, 0x83, 0x0a, 0x94, 0x45, 0x7a, 0x01, - 0xbe, 0x5d, 0x80, 0xcf, 0x65, 0xcc, 0x97, 0x2a, 0x70, 0x06, 0x47, 0xb2, - 0xce, 0x72, 0xe1, 0xf7, 0x23, 0xb4, 0x81, 0x8f, 0x39, 0xf3, 0x6a, 0xe3, - 0x30, 0x05, 0xca, 0x22, 0x23, 0x35, 0xfb, 0x9b, 0x58, 0x8b, 0xdf, 0xf2, - 0x45, 0x1d, 0x7a, 0xbf, 0x94, 0xcf, 0x65, 0x69, 0x3c, 0x27, 0x32, 0xdf, - 0x23, 0xd9, 0xd4, 0x94, 0xe0, 0xad, 0x21, 0xac, 0x9f, 0x61, 0x1d, 0x1d, - 0xfc, 0xc6, 0xcf, 0xec, 0x04, 0x1b, 0x92, 0x36, 0x53, 0x11, 0xbb, 0x10, - 0xb1, 0x03, 0xec, 0x0f, 0x12, 0xf9, 0xae, 0xbd, 0xbe, 0xee, 0x48, 0x2d, - 0x58, 0x8f, 0xff, 0xdd, 0x88, 0xb9, 0x21, 0x4d, 0xcf, 0x4a, 0x10, 0xe9, - 0xb3, 0x52, 0x83, 0xa7, 0xc5, 0xba, 0x15, 0x6c, 0x97, 0xa5, 0x29, 0xf9, - 0x11, 0xc0, 0xdd, 0x34, 0x3d, 0x6d, 0x78, 0x85, 0x33, 0xe2, 0x6a, 0xa8, - 0x63, 0x99, 0xf7, 0xf2, 0xbe, 0xc1, 0xbe, 0x5f, 0x93, 0x66, 0xbf, 0x4a, - 0x6e, 0x4a, 0xb7, 0x6f, 0xb5, 0xff, 0x00, 0xb7, 0xc2, 0x37, 0x30, 0x34, - 0x95, 0x06, 0xf7, 0x02, 0x60, 0x11, 0x57, 0xa4, 0x79, 0xae, 0x6c, 0x42, - 0xba, 0x3d, 0x37, 0xa5, 0x16, 0xf4, 0xa4, 0x6b, 0x7d, 0x1a, 0x97, 0x22, - 0x66, 0x35, 0x7c, 0x03, 0xed, 0x6e, 0xe0, 0x3c, 0x2e, 0x48, 0x7d, 0xfe, - 0x1a, 0xfe, 0xb5, 0x22, 0xee, 0x3a, 0xde, 0x4b, 0x42, 0xf7, 0x82, 0x69, - 0xf5, 0x56, 0x93, 0xda, 0x58, 0x3b, 0xa2, 0x2d, 0x49, 0xb4, 0xe8, 0xab, - 0xad, 0x48, 0x9e, 0x94, 0xc4, 0xad, 0x6c, 0x1c, 0xdf, 0xa4, 0x89, 0xda, - 0x09, 0xa0, 0x4e, 0xc4, 0x8b, 0x75, 0xed, 0xb0, 0xb4, 0x22, 0xa8, 0xab, - 0xbf, 0xef, 0xe5, 0x09, 0x8e, 0xe3, 0x88, 0x7e, 0x11, 0x7b, 0x51, 0x6c, - 0xa8, 0xb5, 0x32, 0xd0, 0x3c, 0x71, 0x4b, 0xea, 0xfd, 0xb4, 0x24, 0xde, - 0x4a, 0x46, 0xe2, 0x9f, 0x6c, 0xbf, 0x0f, 0x7d, 0x03, 0xa3, 0xd2, 0x67, - 0x6f, 0x34, 0x0a, 0xae, 0xd9, 0x47, 0xc8, 0xff, 0x29, 0x50, 0xed, 0x55, - 0x1f, 0x9c, 0x9e, 0x21, 0x7d, 0x1e, 0x66, 0x7f, 0x00, 0x45, 0xac, 0xd1, - 0xdd, 0x3e, 0xbd, 0xd4, 0x13, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, - 0x44, 0xae, 0x42, 0x60, 0x82; - -our $image17; -our $image17_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 $image18; -our $image18_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, - 0xdd, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xbd, 0x55, 0xed, 0x0e, 0x84, - 0x30, 0x08, 0x2b, 0x89, 0x2f, 0x35, 0xde, 0x3f, 0xf5, 0xb1, 0xb8, 0x1f, - 0x8a, 0xc1, 0xc9, 0x3e, 0xd4, 0xbb, 0x6b, 0x62, 0xdc, 0x26, 0x94, 0x52, - 0x49, 0x26, 0x24, 0xd1, 0x83, 0xaa, 0x5a, 0xdc, 0x93, 0x14, 0x55, 0x35, - 0x7f, 0xd7, 0xf1, 0x24, 0x05, 0x00, 0x96, 0x2c, 0xb1, 0x15, 0xdc, 0x3a, - 0xf7, 0x42, 0xf1, 0xdb, 0xd2, 0x4a, 0x7a, 0x8b, 0x29, 0xc5, 0x1e, 0x73, - 0x47, 0xc4, 0x94, 0xe2, 0x27, 0x5d, 0x5d, 0x14, 0xbf, 0x25, 0x3c, 0x88, - 0x7f, 0xe5, 0xb1, 0x00, 0x18, 0x7a, 0xfc, 0x88, 0x78, 0x34, 0xc7, 0x19, - 0x8a, 0xaa, 0xad, 0x03, 0x01, 0x27, 0x8f, 0xbf, 0x69, 0xcb, 0xff, 0xe6, - 0xd8, 0x91, 0x15, 0xac, 0x2d, 0xe8, 0x59, 0x72, 0xdb, 0xe3, 0x12, 0x84, - 0xf4, 0x7c, 0x7e, 0x34, 0x15, 0x33, 0x3f, 0xaf, 0xa9, 0xb8, 0x54, 0x16, - 0xd5, 0x44, 0x45, 0xd5, 0x64, 0xcf, 0xaf, 0x63, 0x1d, 0x16, 0x1f, 0x92, - 0x20, 0x09, 0xdb, 0xd7, 0x7b, 0x80, 0x59, 0xe8, 0xcc, 0xd7, 0x56, 0x75, - 0x6b, 0x21, 0x7f, 0x6a, 0x2a, 0x04, 0x90, 0x48, 0x26, 0x9b, 0x85, 0xc7, - 0xb9, 0xef, 0x23, 0xd2, 0xa9, 0x88, 0xc5, 0x48, 0x42, 0x55, 0xbb, 0x85, - 0xb3, 0x98, 0xa1, 0xe2, 0x8c, 0xb4, 0xb6, 0x20, 0x8b, 0xb9, 0x4c, 0x45, - 0x48, 0x86, 0xb7, 0xe8, 0x44, 0x59, 0xeb, 0x06, 0xd8, 0xba, 0x5d, 0x53, - 0xc7, 0xba, 0xaf, 0x58, 0xf5, 0xf4, 0xc3, 0x32, 0x1f, 0x6f, 0x29, 0x0e, - 0xf7, 0x58, 0x8b, 0x67, 0x0a, 0x1f, 0xe9, 0x23, 0xb3, 0x6c, 0x6e, 0x54, - 0xb0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, - 0x60, 0x82; - -our $image19; -our $image19_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, - 0xf0, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xbd, 0x92, 0x6b, 0x12, 0x83, - 0x30, 0x08, 0x84, 0x97, 0x8e, 0x97, 0x0a, 0xf7, 0x9f, 0xf5, 0x58, 0xf4, - 0x87, 0xa2, 0x48, 0x13, 0x13, 0xb5, 0x2d, 0x33, 0x4e, 0x1e, 0xc2, 0x02, - 0x5f, 0x10, 0x92, 0x38, 0x33, 0x55, 0xb5, 0x78, 0x26, 0x29, 0xaa, 0x6a, - 0xbe, 0x66, 0x7f, 0x92, 0x02, 0x00, 0x53, 0x2d, 0xb0, 0xe5, 0xdc, 0xba, - 0xf7, 0x44, 0xf1, 0xdf, 0xd4, 0x0a, 0x7a, 0x6a, 0x43, 0x15, 0xbb, 0xcf, - 0x95, 0x22, 0x86, 0x2a, 0xbe, 0xd3, 0xd5, 0x47, 0xc5, 0x4f, 0x05, 0x37, - 0xe1, 0x5f, 0x31, 0x16, 0x00, 0x5d, 0xc6, 0xb7, 0x84, 0x7b, 0x73, 0x5c, - 0xb3, 0xa2, 0x6a, 0x73, 0xa7, 0x80, 0x03, 0xe3, 0x6f, 0x62, 0xf9, 0xdf, - 0x1c, 0xbb, 0xd5, 0x12, 0x66, 0x04, 0x67, 0x48, 0x2e, 0x33, 0x2e, 0xa1, - 0x90, 0x33, 0xce, 0xb7, 0xa6, 0x62, 0xe4, 0xf1, 0x9a, 0x15, 0x97, 0x84, - 0x28, 0x0b, 0x15, 0x55, 0x93, 0x35, 0x3e, 0xfb, 0xba, 0x59, 0xfc, 0x48, - 0x82, 0x24, 0x6c, 0xdd, 0xaf, 0x0e, 0x66, 0xa1, 0x33, 0xdf, 0x5b, 0xea, - 0xd6, 0x42, 0xfc, 0xd0, 0x54, 0x08, 0x20, 0x51, 0x4c, 0x16, 0x84, 0xdb, - 0xbd, 0x9f, 0xa3, 0x4d, 0xaa, 0xea, 0xf9, 0x0c, 0x10, 0x01, 0x80, 0x88, - 0x87, 0x24, 0x76, 0x9f, 0xba, 0xd5, 0x7c, 0x5e, 0x8b, 0x88, 0x99, 0x8b, - 0x67, 0xe6, 0x35, 0x51, 0x47, 0xe3, 0x5d, 0x34, 0x12, 0xef, 0xa2, 0x71, - 0xcd, 0x4c, 0x7b, 0x5c, 0xe3, 0x9e, 0xe4, 0x3e, 0x15, 0xaa, 0xc5, 0xc8, - 0xf9, 0x30, 0xfc, 0x51, 0xc0, 0x39, 0xee, 0x4c, 0x17, 0x74, 0x91, 0xb1, - 0x01, 0xdb, 0x18, 0x06, 0xe8, 0x76, 0x10, 0x1a, 0x33, 0x69, 0x3e, 0xfc, - 0x1b, 0x78, 0x58, 0xd2, 0x1f, 0x6a, 0x6c, 0x70, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82; - -our $image20; -our $image20_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, 0x01, - 0x09, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xa5, 0x54, 0x41, 0x0e, 0xc3, - 0x20, 0x0c, 0xb3, 0xd1, 0xf6, 0x83, 0x1d, 0xd8, 0xff, 0x3f, 0xb7, 0x57, - 0xcc, 0x3b, 0x8c, 0xd0, 0x34, 0xa4, 0x94, 0x6e, 0x91, 0x90, 0x20, 0xc4, - 0x8e, 0x49, 0x00, 0x22, 0x31, 0xb9, 0x39, 0xb3, 0x80, 0x25, 0xab, 0xd2, - 0x79, 0xd0, 0x25, 0x23, 0x00, 0xdc, 0x6c, 0x25, 0xec, 0xd4, 0x15, 0x01, - 0x6f, 0x6c, 0xbe, 0x98, 0x9c, 0x0e, 0x92, 0x09, 0x63, 0x69, 0x28, 0x05, - 0x74, 0x27, 0x35, 0x9f, 0xbe, 0x4b, 0x1b, 0x31, 0x09, 0x87, 0xb9, 0x00, - 0xb9, 0x31, 0x58, 0xf3, 0x65, 0x7b, 0xd1, 0xb5, 0x5b, 0x97, 0x84, 0xcb, - 0x2b, 0xf1, 0x52, 0xd4, 0xc0, 0xf7, 0x09, 0xa6, 0xdb, 0xcd, 0x2f, 0xc2, - 0x19, 0xb3, 0xba, 0x2e, 0x5b, 0xe1, 0xa6, 0xec, 0xf7, 0x9b, 0x95, 0x60, - 0x0b, 0x00, 0xb0, 0xca, 0x6a, 0x6d, 0x32, 0xd3, 0x12, 0x4d, 0xee, 0x65, - 0xbe, 0x95, 0x34, 0xf0, 0x99, 0x21, 0x27, 0xc4, 0x8f, 0xe8, 0xa0, 0x11, - 0x7b, 0x5f, 0x56, 0x13, 0x0b, 0x38, 0xaa, 0x57, 0x78, 0x07, 0xe3, 0x91, - 0xe9, 0x02, 0x33, 0x95, 0xab, 0xcf, 0xb4, 0x34, 0xb2, 0x95, 0x06, 0xca, - 0x27, 0xce, 0x92, 0xe5, 0x7f, 0x4c, 0xfb, 0x33, 0xf4, 0x22, 0x08, 0x30, - 0x28, 0x4b, 0x31, 0x9c, 0x6c, 0xee, 0x04, 0xf8, 0x5a, 0x7b, 0xf5, 0xb1, - 0x07, 0x1e, 0x12, 0x45, 0xd8, 0xe6, 0xec, 0xe5, 0xa5, 0xc6, 0x2a, 0xb1, - 0x6e, 0x37, 0x53, 0x5f, 0xf2, 0x4e, 0x6a, 0x22, 0xa6, 0xc4, 0x16, 0xc4, - 0xba, 0x1d, 0x44, 0xaf, 0xf1, 0xd2, 0xc4, 0x1b, 0x31, 0x10, 0xfb, 0x26, - 0xba, 0x1f, 0xcf, 0x9a, 0xc6, 0xfe, 0x75, 0x05, 0x72, 0x56, 0x09, 0x55, - 0x8a, 0x98, 0xbd, 0xb9, 0x20, 0x1b, 0xb3, 0x13, 0xf5, 0x9a, 0x2c, 0x61, - 0x16, 0x89, 0x0f, 0x12, 0x9d, 0x63, 0xae, 0x90, 0xfe, 0x83, 0xb9, 0x44, - 0xfc, 0x01, 0x52, 0x03, 0x8c, 0xe6, 0xe0, 0x98, 0x60, 0xab, 0x00, 0x00, - 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82; - -our $image21; -our $image21_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, 0x01, - 0x41, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xa5, 0x54, 0x41, 0x4e, 0xc4, - 0x30, 0x0c, 0x9c, 0xa9, 0x58, 0xa4, 0x15, 0x12, 0x02, 0xb1, 0x08, 0x1f, - 0xf7, 0x77, 0xbc, 0x83, 0xe7, 0xf0, 0x2a, 0xae, 0x3d, 0x70, 0x42, 0xe2, - 0x80, 0x84, 0x34, 0x1c, 0x1a, 0xb7, 0x8e, 0x9b, 0xb6, 0xdb, 0xc5, 0x52, - 0xd4, 0xc4, 0x71, 0xc6, 0x33, 0x8e, 0x53, 0xa2, 0x61, 0x0a, 0x73, 0xb6, - 0x02, 0x2e, 0x32, 0x53, 0x17, 0xf0, 0x7c, 0xb4, 0x72, 0xe4, 0xdc, 0x39, - 0xae, 0x1a, 0x1d, 0x80, 0xbb, 0x44, 0x90, 0x65, 0xf3, 0xb0, 0x02, 0x4a, - 0x00, 0x5d, 0x00, 0x67, 0xc0, 0xb9, 0x1d, 0xd6, 0x26, 0xa9, 0x64, 0x29, - 0x51, 0x87, 0x70, 0x40, 0x0a, 0x68, 0x0d, 0x15, 0x59, 0x91, 0xe2, 0x6c, - 0x04, 0x6e, 0x49, 0xbc, 0x16, 0xb8, 0x4b, 0x5e, 0x02, 0x38, 0x46, 0x1f, - 0xd3, 0x77, 0xc5, 0x6e, 0xe2, 0xa2, 0x02, 0x66, 0xc3, 0xb7, 0xc3, 0x7e, - 0xab, 0x2c, 0x04, 0x28, 0x97, 0x60, 0x45, 0x79, 0xcf, 0x48, 0x30, 0x77, - 0x1f, 0x51, 0x5f, 0x9a, 0xdb, 0x69, 0x9e, 0xcb, 0xe4, 0xb5, 0x1e, 0xc0, - 0x4d, 0xb9, 0x76, 0xbb, 0xdb, 0x99, 0x85, 0x52, 0xc5, 0x8a, 0x11, 0xb8, - 0xb0, 0x6f, 0x51, 0x4c, 0x6c, 0x3f, 0xb7, 0x81, 0x9d, 0x79, 0x32, 0xf5, - 0xe4, 0x12, 0x75, 0x6f, 0xee, 0x45, 0x60, 0x4e, 0xbe, 0x61, 0x6d, 0x7a, - 0x01, 0xf0, 0x06, 0xe0, 0xb5, 0x89, 0x18, 0x14, 0x35, 0x93, 0x0a, 0x78, - 0xcf, 0x0c, 0xc6, 0xa6, 0x36, 0x3d, 0x29, 0xf4, 0xf4, 0x68, 0x7e, 0x1f, - 0x79, 0x54, 0x49, 0x4c, 0x00, 0x70, 0x56, 0xcf, 0x8f, 0xd2, 0x29, 0x39, - 0x4f, 0xa5, 0x32, 0x4e, 0xaa, 0xcd, 0x46, 0x09, 0xc7, 0x57, 0x98, 0x6a, - 0x5e, 0xfb, 0x4d, 0xf7, 0x41, 0x8d, 0x66, 0xea, 0x8a, 0x5d, 0xf3, 0x18, - 0xbe, 0x68, 0x7a, 0xc6, 0x04, 0xaa, 0xf8, 0x3a, 0x3d, 0xd9, 0x2a, 0xb0, - 0x07, 0x71, 0xfa, 0xb5, 0x52, 0x3d, 0x01, 0xe0, 0x3b, 0xc5, 0x6d, 0x37, - 0x7a, 0x90, 0xe7, 0xf2, 0x7f, 0x60, 0x9a, 0x9d, 0x4b, 0xe5, 0x01, 0x4c, - 0xc7, 0xa5, 0x52, 0x0e, 0x66, 0xea, 0x60, 0x7a, 0x5c, 0x0f, 0xaa, 0xc0, - 0xbd, 0x73, 0x4e, 0xdb, 0x67, 0x4c, 0x0f, 0x97, 0x00, 0xaf, 0xaa, 0xd8, - 0x0a, 0xbc, 0x14, 0xf4, 0x3f, 0x67, 0x76, 0x01, 0xff, 0x01, 0x44, 0x83, - 0xce, 0xde, 0x45, 0xa9, 0xc1, 0x38, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, - 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82; - -our $image22; -our $image22_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, 0x01, - 0x5b, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x8d, 0x55, 0x41, 0x72, 0xc3, - 0x30, 0x08, 0x5c, 0x14, 0x27, 0x39, 0xf4, 0x9a, 0x83, 0x7a, 0xeb, 0xff, - 0x3f, 0xd6, 0x7c, 0xa0, 0x97, 0xb6, 0xd3, 0xed, 0xc1, 0x20, 0x23, 0x40, - 0x49, 0x98, 0xd1, 0xc8, 0xb6, 0x60, 0x59, 0x2f, 0x48, 0x02, 0x0a, 0xa3, - 0x0e, 0x74, 0xb2, 0x5a, 0x7f, 0xc5, 0x1a, 0x3a, 0x5b, 0xf8, 0x26, 0x72, - 0xe0, 0x57, 0x39, 0x01, 0x40, 0x9e, 0xe0, 0xbe, 0x37, 0x00, 0x7f, 0x31, - 0x98, 0x35, 0xa8, 0xd9, 0x69, 0x91, 0xf4, 0x02, 0xe0, 0xac, 0x49, 0x3f, - 0x9b, 0xa3, 0xd1, 0x1c, 0x9d, 0xc1, 0x88, 0xc7, 0x64, 0xcb, 0xbf, 0x0b, - 0xe0, 0x6f, 0x00, 0xd7, 0xb1, 0xa6, 0x11, 0xe7, 0xe8, 0x45, 0x80, 0xe8, - 0x1c, 0x22, 0x73, 0x9a, 0x86, 0x5d, 0xeb, 0x9f, 0x02, 0x9a, 0x52, 0xff, - 0xf1, 0x8c, 0xbd, 0x49, 0x98, 0x83, 0x9d, 0xdc, 0xf3, 0xa6, 0x63, 0x50, - 0x90, 0x45, 0x95, 0xc8, 0xac, 0xf7, 0xea, 0xd9, 0x13, 0x2d, 0x3c, 0x3a, - 0x05, 0x7d, 0x48, 0x64, 0x52, 0x44, 0x00, 0xd3, 0x5b, 0xc2, 0xfb, 0xe4, - 0xd7, 0x00, 0x40, 0x3a, 0xf7, 0x95, 0xbb, 0x92, 0xef, 0x65, 0x53, 0x7c, - 0xe8, 0x2c, 0x3a, 0xbc, 0x53, 0xad, 0x14, 0xc3, 0xc0, 0x9e, 0x68, 0x30, - 0x36, 0xd6, 0x8b, 0x1e, 0x2c, 0x19, 0x6f, 0xa5, 0xeb, 0xfd, 0x59, 0xff, - 0x4f, 0x26, 0x86, 0xee, 0xa3, 0x0c, 0x78, 0x6c, 0x94, 0x47, 0x90, 0x02, - 0x64, 0x99, 0x16, 0x24, 0xa6, 0x8d, 0xe0, 0x5d, 0x08, 0x50, 0x3a, 0x41, - 0x17, 0x28, 0x31, 0x6f, 0xae, 0xc5, 0xae, 0xfd, 0x94, 0xac, 0xd3, 0xb4, - 0x1d, 0xc0, 0xbe, 0x2b, 0x5c, 0xfb, 0x25, 0x8b, 0xf5, 0x49, 0x09, 0x43, - 0x11, 0xe9, 0x4e, 0x37, 0xd3, 0x91, 0x21, 0x79, 0x06, 0x56, 0x8b, 0x27, - 0x5b, 0xf9, 0xcd, 0xf7, 0x32, 0xef, 0x42, 0x6b, 0xcf, 0xb8, 0x2b, 0x7d, - 0x0f, 0x46, 0x90, 0x37, 0xe4, 0xd3, 0x0e, 0x0e, 0x68, 0xc7, 0x50, 0x0d, - 0x3d, 0xe3, 0x58, 0x42, 0x03, 0xbe, 0x69, 0xc6, 0x2f, 0x01, 0x6e, 0xa1, - 0x88, 0x13, 0x2b, 0xfb, 0x03, 0x41, 0x66, 0x1c, 0x25, 0xea, 0x3a, 0x5f, - 0xa0, 0xed, 0x37, 0x36, 0x85, 0x3b, 0xdd, 0xbc, 0x15, 0x67, 0x48, 0x6d, - 0x93, 0x86, 0x47, 0x81, 0xf6, 0xe2, 0xe5, 0x1b, 0x66, 0x02, 0x0f, 0xb1, - 0x47, 0x11, 0xbd, 0x43, 0x1c, 0xaf, 0xdc, 0x79, 0x45, 0x1c, 0x00, 0x60, - 0x4b, 0x4d, 0x9f, 0xe2, 0x1e, 0x5b, 0xb8, 0x6d, 0x08, 0x05, 0xff, 0x07, - 0x3e, 0x4c, 0xd2, 0xff, 0x1f, 0x38, 0x0e, 0x92, 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"); - $image14 = Qt::Pixmap(); - $image14->loadFromData($image14_data, length ($image14_data), "PNG"); - $image15 = Qt::Pixmap(); - $image15->loadFromData($image15_data, length ($image15_data), "PNG"); - $image16 = Qt::Pixmap(); - $image16->loadFromData($image16_data, length ($image16_data), "PNG"); - $image17 = Qt::Pixmap(); - $image17->loadFromData($image17_data, length ($image17_data), "PNG"); - $image18 = Qt::Pixmap(); - $image18->loadFromData($image18_data, length ($image18_data), "PNG"); - $image19 = Qt::Pixmap(); - $image19->loadFromData($image19_data, length ($image19_data), "PNG"); - $image20 = Qt::Pixmap(); - $image20->loadFromData($image20_data, length ($image20_data), "PNG"); - $image21 = Qt::Pixmap(); - $image21->loadFromData($image21_data, length ($image21_data), "PNG"); - $image22 = Qt::Pixmap(); - $image22->loadFromData($image22_data, length ($image22_data), "PNG"); - - if ( name() eq "unnamed" ) - { - setName("MuSRFitform" ); - } - setSizePolicy(Qt::SizePolicy(7, 7, 1, 1, this->sizePolicy()->hasHeightForWidth()) ); - setMinimumSize(Qt::Size(582, 502) ); - setIcon($image0 ); - - setCentralWidget(Qt::Widget(this, "qt_central_widget")); - my $MuSRFitformLayout = Qt::GridLayout(centralWidget(), 1, 1, 11, 6, '$MuSRFitformLayout'); - - musrfit_tabs = Qt::TabWidget(centralWidget(), "musrfit_tabs"); - musrfit_tabs->setEnabled( 1 ); - musrfit_tabs->setSizePolicy( Qt::SizePolicy(7, 7, 1, 1, musrfit_tabs->sizePolicy()->hasHeightForWidth()) ); - musrfit_tabs->setMinimumSize( Qt::Size(560, 400) ); - musrfit_tabs->setMaximumSize( Qt::Size(32767, 32767) ); - - RUNSPage = Qt::Widget(musrfit_tabs, "RUNSPage"); - my $RUNSPageLayout = Qt::GridLayout(RUNSPage, 1, 1, 11, 6, '$RUNSPageLayout'); - - my $layout37 = Qt::VBoxLayout(undef, 0, 6, '$layout37'); - - RUNSAuto = Qt::GroupBox(RUNSPage, "RUNSAuto"); - RUNSAuto->setSizePolicy( Qt::SizePolicy(7, 7, 1, 1, RUNSAuto->sizePolicy()->hasHeightForWidth()) ); - RUNSAuto->setMargin( int(5) ); - RUNSAuto->setColumnLayout( 0, &Vertical ); - RUNSAuto->layout()->setSpacing(6); - RUNSAuto->layout()->setMargin(11); - my $RUNSAutoLayout = Qt::GridLayout(RUNSAuto->layout() ); - $RUNSAutoLayout->setAlignment( &AlignTop ); - - my $layout32 = Qt::GridLayout(undef, 1, 1, 0, 6, '$layout32'); - - RunNumbers = Qt::LineEdit(RUNSAuto, "RunNumbers"); - RunNumbers->setSizePolicy( Qt::SizePolicy(7, 0, 0, 0, RunNumbers->sizePolicy()->hasHeightForWidth()) ); - RunNumbers->setMinimumSize( Qt::Size(0, 23) ); - - $layout32->addMultiCellWidget(RunNumbers, 0, 0, 0, 4); - - BeamLine = Qt::ComboBox(0, RUNSAuto, "BeamLine"); - BeamLine->setSizePolicy( Qt::SizePolicy(0, 5, 0, 0, BeamLine->sizePolicy()->hasHeightForWidth()) ); - BeamLine->setMinimumSize( Qt::Size(0, 20) ); - - $layout32->addWidget(BeamLine, 1, 2); - - BeamLineLabel = Qt::Label(RUNSAuto, "BeamLineLabel"); - BeamLineLabel->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, BeamLineLabel->sizePolicy()->hasHeightForWidth()) ); - BeamLineLabel->setMinimumSize( Qt::Size(0, 20) ); - - $layout32->addWidget(BeamLineLabel, 1, 1); - my $spacer = Qt::SpacerItem(181, 21, &Qt::SizePolicy::Expanding, &Qt::SizePolicy::Minimum); - $layout32->addItem($spacer, 1, 0); - - YEAR = Qt::ComboBox(0, RUNSAuto, "YEAR"); - YEAR->setSizePolicy( Qt::SizePolicy(0, 5, 0, 0, YEAR->sizePolicy()->hasHeightForWidth()) ); - YEAR->setMinimumSize( Qt::Size(0, 20) ); - YEAR->setEditable( 0 ); - YEAR->setSizeLimit( int(16) ); - YEAR->setInsertionPolicy( &Qt::ComboBox::AtTop() ); - YEAR->setAutoCompletion( 1 ); - YEAR->setDuplicatesEnabled( 0 ); - - $layout32->addWidget(YEAR, 1, 4); - - YEARLabel = Qt::Label(RUNSAuto, "YEARLabel"); - YEARLabel->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, YEARLabel->sizePolicy()->hasHeightForWidth()) ); - YEARLabel->setMinimumSize( Qt::Size(0, 20) ); - - $layout32->addWidget(YEARLabel, 1, 3); - - $RUNSAutoLayout->addLayout($layout32, 0, 0); - $layout37->addWidget(RUNSAuto); - - RUNSMan = Qt::GroupBox(RUNSPage, "RUNSMan"); - RUNSMan->setEnabled( 1 ); - RUNSMan->setSizePolicy( Qt::SizePolicy(7, 7, 1, 1, RUNSMan->sizePolicy()->hasHeightForWidth()) ); - RUNSMan->setMargin( int(5) ); - RUNSMan->setColumnLayout( 0, &Vertical ); - RUNSMan->layout()->setSpacing(6); - RUNSMan->layout()->setMargin(11); - my $RUNSManLayout = Qt::GridLayout(RUNSMan->layout() ); - $RUNSManLayout->setAlignment( &AlignTop ); - - my $layout33 = Qt::GridLayout(undef, 1, 1, 0, 6, '$layout33'); - my $spacer_2 = Qt::SpacerItem(411, 21, &Qt::SizePolicy::Expanding, &Qt::SizePolicy::Minimum); - $layout33->addItem($spacer_2, 1, 0); - - RunFiles = Qt::LineEdit(RUNSMan, "RunFiles"); - RunFiles->setEnabled( 1 ); - RunFiles->setSizePolicy( Qt::SizePolicy(7, 0, 0, 0, RunFiles->sizePolicy()->hasHeightForWidth()) ); - RunFiles->setMinimumSize( Qt::Size(0, 23) ); - - $layout33->addMultiCellWidget(RunFiles, 0, 0, 0, 1); - - Browse = Qt::PushButton(RUNSMan, "Browse"); - Browse->setEnabled( 1 ); - Browse->setSizePolicy( Qt::SizePolicy(0, 5, 0, 0, Browse->sizePolicy()->hasHeightForWidth()) ); - Browse->setMinimumSize( Qt::Size(0, 20) ); - - $layout33->addWidget(Browse, 1, 1); - - $RUNSManLayout->addLayout($layout33, 0, 0); - $layout37->addWidget(RUNSMan); - - groupBox7 = Qt::GroupBox(RUNSPage, "groupBox7"); - groupBox7->setSizePolicy( Qt::SizePolicy(7, 7, 1, 1, groupBox7->sizePolicy()->hasHeightForWidth()) ); - my $pal = Qt::Palette(); - my $cg = Qt::ColorGroup(); - $cg->setColor(&Qt::ColorGroup::Foreground, &black); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(239,243,247)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, Qt::Color(247,249,251)); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(119,121,123)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(159,161,164)); - $cg->setColor(&Qt::ColorGroup::Text, &black); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, &black); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(173,176,179)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, &black); - $cg->setColor(&Qt::ColorGroup::LinkVisited, &black); - $pal->setActive($cg); - $cg->setColor(&Qt::ColorGroup::Foreground, &black); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(239,243,247)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, &white); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(119,121,123)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(159,161,164)); - $cg->setColor(&Qt::ColorGroup::Text, &black); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, &black); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(173,176,179)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,192)); - $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(128,0,128)); - $pal->setInactive($cg); - $cg->setColor(&Qt::ColorGroup::Foreground, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(239,243,247)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, &white); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(119,121,123)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(159,161,164)); - $cg->setColor(&Qt::ColorGroup::Text, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(173,176,179)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,192)); - $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(128,0,128)); - $pal->setDisabled($cg); - groupBox7->setPalette( $pal ); - groupBox7->setBackgroundOrigin( &Qt::GroupBox::AncestorOrigin() ); - groupBox7->setFrameShape( &Qt::GroupBox::GroupBoxPanel() ); - groupBox7->setFrameShadow( &Qt::GroupBox::Sunken() ); - groupBox7->setLineWidth( int(1) ); - groupBox7->setMargin( int(3) ); - groupBox7->setAlignment( int(&Qt::GroupBox::AlignTop) ); - groupBox7->setColumnLayout( 0, &Vertical ); - groupBox7->layout()->setSpacing(6); - groupBox7->layout()->setMargin(11); - my $groupBox7Layout = Qt::GridLayout(groupBox7->layout() ); - $groupBox7Layout->setAlignment( &AlignTop ); - - my $layout42 = Qt::GridLayout(undef, 1, 1, 5, 6, '$layout42'); - - FitType2 = Qt::ComboBox(0, groupBox7, "FitType2"); - FitType2->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, FitType2->sizePolicy()->hasHeightForWidth()) ); - - $layout42->addWidget(FitType2, 1, 1); - - TfsLabel = Qt::Label(groupBox7, "TfsLabel"); - TfsLabel->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, TfsLabel->sizePolicy()->hasHeightForWidth()) ); - - $layout42->addWidget(TfsLabel, 2, 1); - - FitType1 = Qt::ComboBox(0, groupBox7, "FitType1"); - FitType1->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, FitType1->sizePolicy()->hasHeightForWidth()) ); - FitType1->setSizeLimit( int(20) ); - FitType1->setAutoCompletion( 0 ); - FitType1->setDuplicatesEnabled( 0 ); - - $layout42->addWidget(FitType1, 1, 0); - - BINS = Qt::LineEdit(groupBox7, "BINS"); - BINS->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, BINS->sizePolicy()->hasHeightForWidth()) ); - - $layout42->addWidget(BINS, 3, 2); - - Comp3Label = Qt::Label(groupBox7, "Comp3Label"); - $cg->setColor(&Qt::ColorGroup::Foreground, &black); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, Qt::Color(242,247,252)); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, &black); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, &black); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, &black); - $cg->setColor(&Qt::ColorGroup::LinkVisited, &black); - $pal->setActive($cg); - $cg->setColor(&Qt::ColorGroup::Foreground, &black); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, &white); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, &black); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, &black); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238)); - $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139)); - $pal->setInactive($cg); - $cg->setColor(&Qt::ColorGroup::Foreground, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, &white); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238)); - $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139)); - $pal->setDisabled($cg); - Comp3Label->setPalette( $pal ); - - $layout42->addWidget(Comp3Label, 0, 2); - - Tis = Qt::LineEdit(groupBox7, "Tis"); - Tis->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, Tis->sizePolicy()->hasHeightForWidth()) ); - - $layout42->addWidget(Tis, 3, 0); - - Tfs = Qt::LineEdit(groupBox7, "Tfs"); - Tfs->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, Tfs->sizePolicy()->hasHeightForWidth()) ); - - $layout42->addWidget(Tfs, 3, 1); - - Comp1Label = Qt::Label(groupBox7, "Comp1Label"); - $cg->setColor(&Qt::ColorGroup::Foreground, &black); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, Qt::Color(242,247,252)); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, &black); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, &black); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, &black); - $cg->setColor(&Qt::ColorGroup::LinkVisited, &black); - $pal->setActive($cg); - $cg->setColor(&Qt::ColorGroup::Foreground, &black); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, &white); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, &black); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, &black); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238)); - $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139)); - $pal->setInactive($cg); - $cg->setColor(&Qt::ColorGroup::Foreground, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, &white); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238)); - $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139)); - $pal->setDisabled($cg); - Comp1Label->setPalette( $pal ); - - $layout42->addWidget(Comp1Label, 0, 0); - - BINSLabel = Qt::Label(groupBox7, "BINSLabel"); - BINSLabel->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, BINSLabel->sizePolicy()->hasHeightForWidth()) ); - - $layout42->addWidget(BINSLabel, 2, 2); - - TisLabel = Qt::Label(groupBox7, "TisLabel"); - TisLabel->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, TisLabel->sizePolicy()->hasHeightForWidth()) ); - - $layout42->addWidget(TisLabel, 2, 0); - - FitType3 = Qt::ComboBox(0, groupBox7, "FitType3"); - FitType3->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, FitType3->sizePolicy()->hasHeightForWidth()) ); - - $layout42->addWidget(FitType3, 1, 2); - - Comp2Label = Qt::Label(groupBox7, "Comp2Label"); - $cg->setColor(&Qt::ColorGroup::Foreground, &black); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, Qt::Color(242,247,252)); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, &black); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, &black); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, &black); - $cg->setColor(&Qt::ColorGroup::LinkVisited, &black); - $pal->setActive($cg); - $cg->setColor(&Qt::ColorGroup::Foreground, &black); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, &white); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, &black); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, &black); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238)); - $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139)); - $pal->setInactive($cg); - $cg->setColor(&Qt::ColorGroup::Foreground, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, &white); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238)); - $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139)); - $pal->setDisabled($cg); - Comp2Label->setPalette( $pal ); - - $layout42->addWidget(Comp2Label, 0, 1); - - $groupBox7Layout->addLayout($layout42, 0, 0); - $layout37->addWidget(groupBox7); - - my $layout34 = Qt::HBoxLayout(undef, 0, 6, '$layout34'); - my $spacer_3 = Qt::SpacerItem(81, 21, &Qt::SizePolicy::Expanding, &Qt::SizePolicy::Minimum); - $layout34->addItem($spacer_3); - - FitAsyTypeLabel = Qt::Label(RUNSPage, "FitAsyTypeLabel"); - FitAsyTypeLabel->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, FitAsyTypeLabel->sizePolicy()->hasHeightForWidth()) ); - $layout34->addWidget(FitAsyTypeLabel); - - FitAsyType = Qt::ComboBox(0, RUNSPage, "FitAsyType"); - FitAsyType->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, FitAsyType->sizePolicy()->hasHeightForWidth()) ); - $layout34->addWidget(FitAsyType); - - LRBFLabel = Qt::Label(RUNSPage, "LRBFLabel"); - LRBFLabel->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, LRBFLabel->sizePolicy()->hasHeightForWidth()) ); - $layout34->addWidget(LRBFLabel); - - LRBF = Qt::LineEdit(RUNSPage, "LRBF"); - LRBF->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, LRBF->sizePolicy()->hasHeightForWidth()) ); - $layout34->addWidget(LRBF); - $layout37->addLayout($layout34); - - $RUNSPageLayout->addLayout($layout37, 0, 0); - musrfit_tabs->insertTab( RUNSPage, "" ); - - FittingPage = Qt::Widget(musrfit_tabs, "FittingPage"); - my $FittingPageLayout = Qt::GridLayout(FittingPage, 1, 1, 11, 6, '$FittingPageLayout'); - - my $layout28 = Qt::VBoxLayout(undef, 0, 6, '$layout28'); - - my $layout27 = Qt::GridLayout(undef, 1, 1, 0, 6, '$layout27'); - - Yi = Qt::LineEdit(FittingPage, "Yi"); - - $layout27->addWidget(Yi, 1, 3); - - Minimization = Qt::ComboBox(0, FittingPage, "Minimization"); - - $layout27->addWidget(Minimization, 0, 1); - - Xi = Qt::LineEdit(FittingPage, "Xi"); - - $layout27->addWidget(Xi, 0, 3); - - textLabel1_4_2_2 = Qt::Label(FittingPage, "textLabel1_4_2_2"); - - $layout27->addWidget(textLabel1_4_2_2, 2, 3); - - Xf = Qt::LineEdit(FittingPage, "Xf"); - - $layout27->addWidget(Xf, 0, 4); - - textLabel1_5 = Qt::Label(FittingPage, "textLabel1_5"); - - $layout27->addWidget(textLabel1_5, 0, 0); - - textLabel1_4_2 = Qt::Label(FittingPage, "textLabel1_4_2"); - - $layout27->addWidget(textLabel1_4_2, 1, 2); - - ViewBin = Qt::LineEdit(FittingPage, "ViewBin"); - - $layout27->addWidget(ViewBin, 2, 4); - - Yf = Qt::LineEdit(FittingPage, "Yf"); - - $layout27->addWidget(Yf, 1, 4); - - ErrorCalc = Qt::ComboBox(0, FittingPage, "ErrorCalc"); - - $layout27->addWidget(ErrorCalc, 1, 1); - - ltc = Qt::CheckBox(FittingPage, "ltc"); - ltc->setChecked( 1 ); - - $layout27->addMultiCellWidget(ltc, 2, 2, 0, 1); - - textLabel1_5_2 = Qt::Label(FittingPage, "textLabel1_5_2"); - - $layout27->addWidget(textLabel1_5_2, 1, 0); - - textLabel1_4 = Qt::Label(FittingPage, "textLabel1_4"); - - $layout27->addWidget(textLabel1_4, 0, 2); - $layout28->addLayout($layout27); - - FitTextOutput = Qt::TextEdit(FittingPage, "FitTextOutput"); - FitTextOutput->setOverwriteMode( 1 ); - $layout28->addWidget(FitTextOutput); - - $FittingPageLayout->addLayout($layout28, 0, 0); - musrfit_tabs->insertTab( FittingPage, "" ); - - SharingPage = Qt::Widget(musrfit_tabs, "SharingPage"); - my $SharingPageLayout = Qt::GridLayout(SharingPage, 1, 1, 11, 6, '$SharingPageLayout'); - - buttonGroupSharing = Qt::ButtonGroup(SharingPage, "buttonGroupSharing"); - buttonGroupSharing->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, buttonGroupSharing->sizePolicy()->hasHeightForWidth()) ); - buttonGroupSharing->setAlignment( int(&Qt::ButtonGroup::AlignLeft) ); - buttonGroupSharing->setCheckable( 1 ); - buttonGroupSharing->setChecked( 0 ); - - SharingComp2 = Qt::ButtonGroup(buttonGroupSharing, "SharingComp2"); - SharingComp2->setEnabled( 0 ); - SharingComp2->setGeometry( Qt::Rect(199, 20, 162, 330) ); - SharingComp2->setSizePolicy( Qt::SizePolicy(5, 3, 0, 0, SharingComp2->sizePolicy()->hasHeightForWidth()) ); - - Comp2ShLabel = Qt::Label(SharingComp2, "Comp2ShLabel"); - Comp2ShLabel->setGeometry( Qt::Rect(2, 30, 185, 20) ); - Comp2ShLabel->setPaletteBackgroundColor( Qt::Color(255, 255, 127) ); - - my $LayoutWidget = Qt::Widget(SharingComp2, '$LayoutWidget'); - $LayoutWidget->setGeometry( Qt::Rect(40, 60, 81, 266) ); - my $layout13 = Qt::VBoxLayout($LayoutWidget, 0, 0, '$layout13'); - - ShParam_2_1 = Qt::CheckBox($LayoutWidget, "ShParam_2_1"); - $layout13->addWidget(ShParam_2_1); - - ShParam_2_2 = Qt::CheckBox($LayoutWidget, "ShParam_2_2"); - $layout13->addWidget(ShParam_2_2); - - ShParam_2_3 = Qt::CheckBox($LayoutWidget, "ShParam_2_3"); - $layout13->addWidget(ShParam_2_3); - - ShParam_2_4 = Qt::CheckBox($LayoutWidget, "ShParam_2_4"); - $layout13->addWidget(ShParam_2_4); - - ShParam_2_5 = Qt::CheckBox($LayoutWidget, "ShParam_2_5"); - $layout13->addWidget(ShParam_2_5); - - ShParam_2_6 = Qt::CheckBox($LayoutWidget, "ShParam_2_6"); - ShParam_2_6->setEnabled( 0 ); - ShParam_2_6->setPaletteBackgroundColor( Qt::Color(234, 233, 232) ); - ShParam_2_6->setTristate( 0 ); - $layout13->addWidget(ShParam_2_6); - - ShParam_2_7 = Qt::CheckBox($LayoutWidget, "ShParam_2_7"); - ShParam_2_7->setEnabled( 0 ); - ShParam_2_7->setPaletteBackgroundColor( Qt::Color(234, 233, 232) ); - ShParam_2_7->setTristate( 0 ); - $layout13->addWidget(ShParam_2_7); - - ShParam_2_8 = Qt::CheckBox($LayoutWidget, "ShParam_2_8"); - ShParam_2_8->setEnabled( 0 ); - ShParam_2_8->setPaletteBackgroundColor( Qt::Color(234, 233, 232) ); - ShParam_2_8->setTristate( 0 ); - $layout13->addWidget(ShParam_2_8); - - ShParam_2_9 = Qt::CheckBox($LayoutWidget, "ShParam_2_9"); - ShParam_2_9->setEnabled( 0 ); - ShParam_2_9->setPaletteBackgroundColor( Qt::Color(234, 233, 232) ); - ShParam_2_9->setTristate( 0 ); - $layout13->addWidget(ShParam_2_9); - - SharingComp3 = Qt::ButtonGroup(buttonGroupSharing, "SharingComp3"); - SharingComp3->setEnabled( 0 ); - SharingComp3->setGeometry( Qt::Rect(367, 20, 162, 330) ); - SharingComp3->setSizePolicy( Qt::SizePolicy(5, 3, 0, 0, SharingComp3->sizePolicy()->hasHeightForWidth()) ); - SharingComp3->setAlignment( int(&Qt::ButtonGroup::AlignJustify | &Qt::ButtonGroup::AlignVCenter) ); - - Comp3ShLabel = Qt::Label(SharingComp3, "Comp3ShLabel"); - Comp3ShLabel->setGeometry( Qt::Rect(2, 30, 185, 20) ); - Comp3ShLabel->setPaletteBackgroundColor( Qt::Color(255, 255, 127) ); - - my $LayoutWidget_2 = Qt::Widget(SharingComp3, '$LayoutWidget_2'); - $LayoutWidget_2->setGeometry( Qt::Rect(41, 58, 81, 266) ); - my $layout15 = Qt::VBoxLayout($LayoutWidget_2, 11, 6, '$layout15'); - - ShParam_3_1 = Qt::CheckBox($LayoutWidget_2, "ShParam_3_1"); - $layout15->addWidget(ShParam_3_1); - - ShParam_3_2 = Qt::CheckBox($LayoutWidget_2, "ShParam_3_2"); - $layout15->addWidget(ShParam_3_2); - - ShParam_3_3 = Qt::CheckBox($LayoutWidget_2, "ShParam_3_3"); - $layout15->addWidget(ShParam_3_3); - - ShParam_3_4 = Qt::CheckBox($LayoutWidget_2, "ShParam_3_4"); - $layout15->addWidget(ShParam_3_4); - - ShParam_3_5 = Qt::CheckBox($LayoutWidget_2, "ShParam_3_5"); - $layout15->addWidget(ShParam_3_5); - - ShParam_3_6 = Qt::CheckBox($LayoutWidget_2, "ShParam_3_6"); - ShParam_3_6->setEnabled( 0 ); - ShParam_3_6->setPaletteBackgroundColor( Qt::Color(234, 233, 232) ); - ShParam_3_6->setTristate( 0 ); - $layout15->addWidget(ShParam_3_6); - - ShParam_3_7 = Qt::CheckBox($LayoutWidget_2, "ShParam_3_7"); - ShParam_3_7->setEnabled( 0 ); - ShParam_3_7->setPaletteBackgroundColor( Qt::Color(234, 233, 232) ); - ShParam_3_7->setTristate( 0 ); - $layout15->addWidget(ShParam_3_7); - - ShParam_3_8 = Qt::CheckBox($LayoutWidget_2, "ShParam_3_8"); - ShParam_3_8->setEnabled( 0 ); - ShParam_3_8->setPaletteBackgroundColor( Qt::Color(234, 233, 232) ); - ShParam_3_8->setTristate( 0 ); - $layout15->addWidget(ShParam_3_8); - - ShParam_3_9 = Qt::CheckBox($LayoutWidget_2, "ShParam_3_9"); - ShParam_3_9->setEnabled( 0 ); - ShParam_3_9->setPaletteBackgroundColor( Qt::Color(234, 233, 232) ); - ShParam_3_9->setTristate( 0 ); - $layout15->addWidget(ShParam_3_9); - - SharingComp1 = Qt::ButtonGroup(buttonGroupSharing, "SharingComp1"); - SharingComp1->setEnabled( 0 ); - SharingComp1->setGeometry( Qt::Rect(31, 20, 162, 330) ); - SharingComp1->setSizePolicy( Qt::SizePolicy(5, 3, 0, 0, SharingComp1->sizePolicy()->hasHeightForWidth()) ); - SharingComp1->setAlignment( int(&Qt::ButtonGroup::AlignLeft) ); - - my $LayoutWidget_3 = Qt::Widget(SharingComp1, '$LayoutWidget_3'); - $LayoutWidget_3->setGeometry( Qt::Rect(40, 60, 81, 266) ); - my $layout14 = Qt::VBoxLayout($LayoutWidget_3, 0, 0, '$layout14'); - - ShParam_1_1 = Qt::CheckBox($LayoutWidget_3, "ShParam_1_1"); - $layout14->addWidget(ShParam_1_1); - - ShParam_1_2 = Qt::CheckBox($LayoutWidget_3, "ShParam_1_2"); - $layout14->addWidget(ShParam_1_2); - - ShParam_1_3 = Qt::CheckBox($LayoutWidget_3, "ShParam_1_3"); - $layout14->addWidget(ShParam_1_3); - - ShParam_1_4 = Qt::CheckBox($LayoutWidget_3, "ShParam_1_4"); - $layout14->addWidget(ShParam_1_4); - - ShParam_1_5 = Qt::CheckBox($LayoutWidget_3, "ShParam_1_5"); - ShParam_1_5->setEnabled( 0 ); - ShParam_1_5->setPaletteBackgroundColor( Qt::Color(234, 233, 232) ); - ShParam_1_5->setTristate( 0 ); - $layout14->addWidget(ShParam_1_5); - - ShParam_1_6 = Qt::CheckBox($LayoutWidget_3, "ShParam_1_6"); - ShParam_1_6->setEnabled( 0 ); - ShParam_1_6->setPaletteBackgroundColor( Qt::Color(234, 233, 232) ); - ShParam_1_6->setTristate( 0 ); - $layout14->addWidget(ShParam_1_6); - - ShParam_1_7 = Qt::CheckBox($LayoutWidget_3, "ShParam_1_7"); - ShParam_1_7->setEnabled( 0 ); - ShParam_1_7->setPaletteBackgroundColor( Qt::Color(234, 233, 232) ); - ShParam_1_7->setTristate( 0 ); - $layout14->addWidget(ShParam_1_7); - - ShParam_1_8 = Qt::CheckBox($LayoutWidget_3, "ShParam_1_8"); - ShParam_1_8->setEnabled( 0 ); - ShParam_1_8->setPaletteBackgroundColor( Qt::Color(234, 233, 232) ); - ShParam_1_8->setTristate( 0 ); - $layout14->addWidget(ShParam_1_8); - - ShParam_1_9 = Qt::CheckBox($LayoutWidget_3, "ShParam_1_9"); - ShParam_1_9->setEnabled( 0 ); - ShParam_1_9->setPaletteBackgroundColor( Qt::Color(234, 233, 232) ); - ShParam_1_9->setTristate( 0 ); - $layout14->addWidget(ShParam_1_9); - - Comp1ShLabel = Qt::Label(SharingComp1, "Comp1ShLabel"); - Comp1ShLabel->setGeometry( Qt::Rect(2, 30, 185, 20) ); - Comp1ShLabel->setPaletteBackgroundColor( Qt::Color(255, 255, 127) ); - - $SharingPageLayout->addWidget(buttonGroupSharing, 0, 0); - musrfit_tabs->insertTab( SharingPage, "" ); - - InitializationPage = Qt::Widget(musrfit_tabs, "InitializationPage"); - my $InitializationPageLayout = Qt::GridLayout(InitializationPage, 1, 1, 11, 6, '$InitializationPageLayout'); - - InitParamTable = Qt::Table(InitializationPage, "InitParamTable"); - InitParamTable->setNumCols(InitParamTable->numCols() + 1); - InitParamTable->horizontalHeader()->setLabel(InitParamTable->numCols() - 1, trUtf8("Value")); - InitParamTable->setNumCols(InitParamTable->numCols() + 1); - InitParamTable->horizontalHeader()->setLabel(InitParamTable->numCols() - 1, trUtf8("Error")); - InitParamTable->setNumCols(InitParamTable->numCols() + 1); - InitParamTable->horizontalHeader()->setLabel(InitParamTable->numCols() - 1, trUtf8("Min")); - InitParamTable->setNumCols(InitParamTable->numCols() + 1); - InitParamTable->horizontalHeader()->setLabel(InitParamTable->numCols() - 1, trUtf8("Max")); - InitParamTable->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, InitParamTable->sizePolicy()->hasHeightForWidth()) ); - InitParamTable->setMaximumSize( Qt::Size(32767, 32767) ); - InitParamTable->setFocusPolicy( &Qt::Table::TabFocus() ); - InitParamTable->setFrameShape( &Qt::Table::PopupPanel() ); - InitParamTable->setLineWidth( int(2) ); - InitParamTable->setMargin( int(0) ); - InitParamTable->setMidLineWidth( int(0) ); - InitParamTable->setResizePolicy( &Qt::Table::Default() ); - InitParamTable->setVScrollBarMode( &Qt::Table::Auto() ); - InitParamTable->setDragAutoScroll( 0 ); - InitParamTable->setNumRows( int(0) ); - InitParamTable->setNumCols( int(4) ); - InitParamTable->setShowGrid( 1 ); - InitParamTable->setRowMovingEnabled( 0 ); - InitParamTable->setFocusStyle( &Qt::Table::SpreadSheet() ); - - $InitializationPageLayout->addWidget(InitParamTable, 0, 0); - musrfit_tabs->insertTab( InitializationPage, "" ); - - MSRPage = Qt::Widget(musrfit_tabs, "MSRPage"); - my $MSRPageLayout = Qt::GridLayout(MSRPage, 1, 1, 11, 6, '$MSRPageLayout'); - - my $layout25 = Qt::VBoxLayout(undef, 0, 6, '$layout25'); - - groupTitle = Qt::GroupBox(MSRPage, "groupTitle"); - groupTitle->setSizePolicy( Qt::SizePolicy(7, 0, 0, 0, groupTitle->sizePolicy()->hasHeightForWidth()) ); - groupTitle->setMargin( int(5) ); - groupTitle->setColumnLayout( 0, &Vertical ); - groupTitle->layout()->setSpacing(6); - groupTitle->layout()->setMargin(11); - my $groupTitleLayout = Qt::GridLayout(groupTitle->layout() ); - $groupTitleLayout->setAlignment( &AlignTop ); - - my $layout25_2 = Qt::VBoxLayout(undef, 0, 6, '$layout25_2'); - - TITLELabel = Qt::Label(groupTitle, "TITLELabel"); - TITLELabel->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, TITLELabel->sizePolicy()->hasHeightForWidth()) ); - $layout25_2->addWidget(TITLELabel); - - TITLE = Qt::LineEdit(groupTitle, "TITLE"); - TITLE->setSizePolicy( Qt::SizePolicy(7, 0, 1, 1, TITLE->sizePolicy()->hasHeightForWidth()) ); - $layout25_2->addWidget(TITLE); - - my $layout17 = Qt::HBoxLayout(undef, 0, 6, '$layout17'); - - FILENAMELabel = Qt::Label(groupTitle, "FILENAMELabel"); - $layout17->addWidget(FILENAMELabel); - - FILENAME = Qt::LineEdit(groupTitle, "FILENAME"); - FILENAME->setSizePolicy( Qt::SizePolicy(7, 0, 0, 0, FILENAME->sizePolicy()->hasHeightForWidth()) ); - $layout17->addWidget(FILENAME); - $layout25_2->addLayout($layout17); - - $groupTitleLayout->addLayout($layout25_2, 0, 0); - $layout25->addWidget(groupTitle); - - textMSROutput = Qt::TextEdit(MSRPage, "textMSROutput"); - textMSROutput->setOverwriteMode( 1 ); - $layout25->addWidget(textMSROutput); - - $MSRPageLayout->addLayout($layout25, 0, 0); - musrfit_tabs->insertTab( MSRPage, "" ); - - FourierPage = Qt::Widget(musrfit_tabs, "FourierPage"); - my $FourierPageLayout = Qt::GridLayout(FourierPage, 1, 1, 11, 6, '$FourierPageLayout'); - - FourierBox = Qt::GroupBox(FourierPage, "FourierBox"); - FourierBox->setSizePolicy( Qt::SizePolicy(7, 0, 0, 0, FourierBox->sizePolicy()->hasHeightForWidth()) ); - - my $LayoutWidget_4 = Qt::Widget(FourierBox, '$LayoutWidget_4'); - $LayoutWidget_4->setGeometry( Qt::Rect(12, 19, 510, 100) ); - my $layout34_2 = Qt::GridLayout($LayoutWidget_4, 1, 1, 5, 5, '$layout34_2'); - - FrqMin = Qt::LineEdit($LayoutWidget_4, "FrqMin"); - FrqMin->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, FrqMin->sizePolicy()->hasHeightForWidth()) ); - - $layout34_2->addWidget(FrqMin, 0, 3); - - textLabel1_3_4 = Qt::Label($LayoutWidget_4, "textLabel1_3_4"); - - $layout34_2->addWidget(textLabel1_3_4, 1, 5); - - textLabel1_7 = Qt::Label($LayoutWidget_4, "textLabel1_7"); - - $layout34_2->addWidget(textLabel1_7, 1, 2); - - textLabel1_3_5 = Qt::Label($LayoutWidget_4, "textLabel1_3_5"); - - $layout34_2->addWidget(textLabel1_3_5, 2, 2); - - FUnits = Qt::ComboBox(0, $LayoutWidget_4, "FUnits"); - FUnits->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, FUnits->sizePolicy()->hasHeightForWidth()) ); - - $layout34_2->addWidget(FUnits, 0, 1); - - textLabel1_3_6 = Qt::Label($LayoutWidget_4, "textLabel1_3_6"); - - $layout34_2->addWidget(textLabel1_3_6, 2, 3); - - FApodization = Qt::ComboBox(0, $LayoutWidget_4, "FApodization"); - FApodization->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, FApodization->sizePolicy()->hasHeightForWidth()) ); - - $layout34_2->addWidget(FApodization, 1, 1); - - FrqMax = Qt::LineEdit($LayoutWidget_4, "FrqMax"); - FrqMax->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, FrqMax->sizePolicy()->hasHeightForWidth()) ); - - $layout34_2->addWidget(FrqMax, 0, 5); - - FPlot = Qt::ComboBox(0, $LayoutWidget_4, "FPlot"); - FPlot->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, FPlot->sizePolicy()->hasHeightForWidth()) ); - - $layout34_2->addWidget(FPlot, 2, 1); - - FUnitsLabel = Qt::Label($LayoutWidget_4, "FUnitsLabel"); - - $layout34_2->addWidget(FUnitsLabel, 0, 0); - - textLabel1_3_8 = Qt::Label($LayoutWidget_4, "textLabel1_3_8"); - - $layout34_2->addWidget(textLabel1_3_8, 2, 5); - - textLabel1_3_7 = Qt::Label($LayoutWidget_4, "textLabel1_3_7"); - - $layout34_2->addWidget(textLabel1_3_7, 2, 4); - - FPlotLabel = Qt::Label($LayoutWidget_4, "FPlotLabel"); - - $layout34_2->addWidget(FPlotLabel, 2, 0); - - textLabel1_2 = Qt::Label($LayoutWidget_4, "textLabel1_2"); - - $layout34_2->addWidget(textLabel1_2, 0, 4); - - FApodizationLabel = Qt::Label($LayoutWidget_4, "FApodizationLabel"); - - $layout34_2->addWidget(FApodizationLabel, 1, 0); - - textLabel1_3_3 = Qt::Label($LayoutWidget_4, "textLabel1_3_3"); - - $layout34_2->addWidget(textLabel1_3_3, 1, 4); - - FPHASE = Qt::LineEdit($LayoutWidget_4, "FPHASE"); - FPHASE->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, FPHASE->sizePolicy()->hasHeightForWidth()) ); - - $layout34_2->addWidget(FPHASE, 1, 3); - - textLabel1 = Qt::Label($LayoutWidget_4, "textLabel1"); - - $layout34_2->addWidget(textLabel1, 0, 2); - - $FourierPageLayout->addWidget(FourierBox, 0, 0); - - RRFBox = Qt::GroupBox(FourierPage, "RRFBox"); - RRFBox->setSizePolicy( Qt::SizePolicy(7, 0, 0, 0, RRFBox->sizePolicy()->hasHeightForWidth()) ); - - my $LayoutWidget_5 = Qt::Widget(RRFBox, '$LayoutWidget_5'); - $LayoutWidget_5->setGeometry( Qt::Rect(10, 18, 265, 100) ); - my $layout35 = Qt::GridLayout($LayoutWidget_5, 1, 1, 5, 5, '$layout35'); - - textLabel1_6_2_2 = Qt::Label($LayoutWidget_5, "textLabel1_6_2_2"); - - $layout35->addWidget(textLabel1_6_2_2, 2, 0); - - textLabel1_6 = Qt::Label($LayoutWidget_5, "textLabel1_6"); - - $layout35->addWidget(textLabel1_6, 0, 0); - - textLabel1_6_2_4 = Qt::Label($LayoutWidget_5, "textLabel1_6_2_4"); - - $layout35->addWidget(textLabel1_6_2_4, 2, 2); - - RRFFrq = Qt::LineEdit($LayoutWidget_5, "RRFFrq"); - - $layout35->addWidget(RRFFrq, 0, 1); - - textLabel1_6_2_3 = Qt::Label($LayoutWidget_5, "textLabel1_6_2_3"); - - $layout35->addWidget(textLabel1_6_2_3, 1, 2); - - RRFPack = Qt::LineEdit($LayoutWidget_5, "RRFPack"); - - $layout35->addWidget(RRFPack, 1, 1); - - textLabel1_6_2 = Qt::Label($LayoutWidget_5, "textLabel1_6_2"); - - $layout35->addWidget(textLabel1_6_2, 1, 0); - - RRFUnits = Qt::ComboBox(0, $LayoutWidget_5, "RRFUnits"); - - $layout35->addWidget(RRFUnits, 0, 2); - - RRFPhase = Qt::LineEdit($LayoutWidget_5, "RRFPhase"); - - $layout35->addWidget(RRFPhase, 2, 1); - - $FourierPageLayout->addWidget(RRFBox, 1, 0); - musrfit_tabs->insertTab( FourierPage, "" ); - - T0Page = Qt::Widget(musrfit_tabs, "T0Page"); - my $T0PageLayout = Qt::GridLayout(T0Page, 1, 1, 11, 6, '$T0PageLayout'); - - my $layout25_3 = Qt::HBoxLayout(undef, 0, 6, '$layout25_3'); - - groupHist0 = Qt::GroupBox(T0Page, "groupHist0"); - groupHist0->setSizePolicy( Qt::SizePolicy(7, 7, 1, 1, groupHist0->sizePolicy()->hasHeightForWidth()) ); - groupHist0->setMinimumSize( Qt::Size(0, 0) ); - - my $LayoutWidget_6 = Qt::Widget(groupHist0, '$LayoutWidget_6'); - $LayoutWidget_6->setGeometry( Qt::Rect(5, 18, 100, 150) ); - my $layout16_2 = Qt::VBoxLayout($LayoutWidget_6, 11, 6, '$layout16_2'); - - textLabel2 = Qt::Label($LayoutWidget_6, "textLabel2"); - $layout16_2->addWidget(textLabel2); - - textLabel2_2_2_3 = Qt::Label($LayoutWidget_6, "textLabel2_2_2_3"); - $layout16_2->addWidget(textLabel2_2_2_3); - - textLabel2_2_2 = Qt::Label($LayoutWidget_6, "textLabel2_2_2"); - $layout16_2->addWidget(textLabel2_2_2); - - textLabel2_2_2_2 = Qt::Label($LayoutWidget_6, "textLabel2_2_2_2"); - $layout16_2->addWidget(textLabel2_2_2_2); - - textLabel2_2_2_2_2 = Qt::Label($LayoutWidget_6, "textLabel2_2_2_2_2"); - $layout16_2->addWidget(textLabel2_2_2_2_2); - $layout25_3->addWidget(groupHist0); - - groupHist1 = Qt::GroupBox(T0Page, "groupHist1"); - groupHist1->setSizePolicy( Qt::SizePolicy(7, 7, 1, 1, groupHist1->sizePolicy()->hasHeightForWidth()) ); - groupHist1->setMinimumSize( Qt::Size(0, 0) ); - groupHist1->setFrameShadow( &Qt::GroupBox::Plain() ); - - my $LayoutWidget_7 = Qt::Widget(groupHist1, '$LayoutWidget_7'); - $LayoutWidget_7->setGeometry( Qt::Rect(8, 17, 75, 150) ); - my $layout18 = Qt::VBoxLayout($LayoutWidget_7, 0, 0, '$layout18'); - - t01 = Qt::LineEdit($LayoutWidget_7, "t01"); - $layout18->addWidget(t01); - - Bg11 = Qt::LineEdit($LayoutWidget_7, "Bg11"); - $layout18->addWidget(Bg11); - - Bg21 = Qt::LineEdit($LayoutWidget_7, "Bg21"); - $layout18->addWidget(Bg21); - - Data11 = Qt::LineEdit($LayoutWidget_7, "Data11"); - $layout18->addWidget(Data11); - - Data21 = Qt::LineEdit($LayoutWidget_7, "Data21"); - $layout18->addWidget(Data21); - $layout25_3->addWidget(groupHist1); - - groupHist2 = Qt::GroupBox(T0Page, "groupHist2"); - groupHist2->setEnabled( 1 ); - groupHist2->setSizePolicy( Qt::SizePolicy(7, 7, 1, 1, groupHist2->sizePolicy()->hasHeightForWidth()) ); - groupHist2->setFrameShadow( &Qt::GroupBox::Plain() ); - - my $LayoutWidget_8 = Qt::Widget(groupHist2, '$LayoutWidget_8'); - $LayoutWidget_8->setGeometry( Qt::Rect(8, 17, 75, 150) ); - my $layout18_2 = Qt::VBoxLayout($LayoutWidget_8, 0, 0, '$layout18_2'); - - t02 = Qt::LineEdit($LayoutWidget_8, "t02"); - $layout18_2->addWidget(t02); - - Bg12 = Qt::LineEdit($LayoutWidget_8, "Bg12"); - $layout18_2->addWidget(Bg12); - - Bg22 = Qt::LineEdit($LayoutWidget_8, "Bg22"); - $layout18_2->addWidget(Bg22); - - Data12 = Qt::LineEdit($LayoutWidget_8, "Data12"); - $layout18_2->addWidget(Data12); - - Data22 = Qt::LineEdit($LayoutWidget_8, "Data22"); - $layout18_2->addWidget(Data22); - $layout25_3->addWidget(groupHist2); - - groupHist3 = Qt::GroupBox(T0Page, "groupHist3"); - groupHist3->setEnabled( 1 ); - groupHist3->setSizePolicy( Qt::SizePolicy(7, 7, 1, 1, groupHist3->sizePolicy()->hasHeightForWidth()) ); - groupHist3->setFrameShadow( &Qt::GroupBox::Plain() ); - - my $LayoutWidget_9 = Qt::Widget(groupHist3, '$LayoutWidget_9'); - $LayoutWidget_9->setGeometry( Qt::Rect(8, 17, 75, 150) ); - my $layout18_3 = Qt::VBoxLayout($LayoutWidget_9, 0, 0, '$layout18_3'); - - t03 = Qt::LineEdit($LayoutWidget_9, "t03"); - $layout18_3->addWidget(t03); - - Bg13 = Qt::LineEdit($LayoutWidget_9, "Bg13"); - $layout18_3->addWidget(Bg13); - - Bg23 = Qt::LineEdit($LayoutWidget_9, "Bg23"); - $layout18_3->addWidget(Bg23); - - Data13 = Qt::LineEdit($LayoutWidget_9, "Data13"); - $layout18_3->addWidget(Data13); - - Data23 = Qt::LineEdit($LayoutWidget_9, "Data23"); - $layout18_3->addWidget(Data23); - $layout25_3->addWidget(groupHist3); - - groupHist4 = Qt::GroupBox(T0Page, "groupHist4"); - groupHist4->setEnabled( 1 ); - groupHist4->setSizePolicy( Qt::SizePolicy(7, 7, 1, 1, groupHist4->sizePolicy()->hasHeightForWidth()) ); - groupHist4->setFrameShadow( &Qt::GroupBox::Plain() ); - - my $LayoutWidget_10 = Qt::Widget(groupHist4, '$LayoutWidget_10'); - $LayoutWidget_10->setGeometry( Qt::Rect(8, 17, 75, 150) ); - my $layout18_4 = Qt::VBoxLayout($LayoutWidget_10, 0, 0, '$layout18_4'); - - t04 = Qt::LineEdit($LayoutWidget_10, "t04"); - $layout18_4->addWidget(t04); - - Bg14 = Qt::LineEdit($LayoutWidget_10, "Bg14"); - $layout18_4->addWidget(Bg14); - - Bg24 = Qt::LineEdit($LayoutWidget_10, "Bg24"); - $layout18_4->addWidget(Bg24); - - Data14 = Qt::LineEdit($LayoutWidget_10, "Data14"); - $layout18_4->addWidget(Data14); - - Data24 = Qt::LineEdit($LayoutWidget_10, "Data24"); - $layout18_4->addWidget(Data24); - $layout25_3->addWidget(groupHist4); - - $T0PageLayout->addLayout($layout25_3, 0, 0); - - my $layout29 = Qt::HBoxLayout(undef, 0, 6, '$layout29'); - my $spacer_4 = Qt::SpacerItem(461, 20, &Qt::SizePolicy::Expanding, &Qt::SizePolicy::Minimum); - $layout29->addItem($spacer_4); - - t0Update = Qt::PushButton(T0Page, "t0Update"); - t0Update->setEnabled( 0 ); - t0Update->setSizePolicy( Qt::SizePolicy(0, 0, 0, 0, t0Update->sizePolicy()->hasHeightForWidth()) ); - $layout29->addWidget(t0Update); - - $T0PageLayout->addLayout($layout29, 1, 0); - musrfit_tabs->insertTab( T0Page, "" ); - - TabPage = Qt::Widget(musrfit_tabs, "TabPage"); - my $TabPageLayout = Qt::GridLayout(TabPage, 1, 1, 11, 6, '$TabPageLayout'); - - my $layout34_2_2 = Qt::VBoxLayout(undef, 0, 6, '$layout34_2_2'); - - my $layout33_2 = Qt::GridLayout(undef, 1, 1, 0, 6, '$layout33_2'); - - TheoryBlock_Label = Qt::Label(TabPage, "TheoryBlock_Label"); - $cg->setColor(&Qt::ColorGroup::Foreground, &black); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, Qt::Color(242,247,252)); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, &black); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, &black); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, &black); - $cg->setColor(&Qt::ColorGroup::LinkVisited, &black); - $pal->setActive($cg); - $cg->setColor(&Qt::ColorGroup::Foreground, &black); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, &white); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, &black); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, &black); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238)); - $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139)); - $pal->setInactive($cg); - $cg->setColor(&Qt::ColorGroup::Foreground, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, &white); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238)); - $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139)); - $pal->setDisabled($cg); - TheoryBlock_Label->setPalette( $pal ); - - $layout33_2->addWidget(TheoryBlock_Label, 0, 0); - - TheoryBlock = Qt::TextEdit(TabPage, "TheoryBlock"); - TheoryBlock->setEnabled( 1 ); - - $layout33_2->addWidget(TheoryBlock, 1, 0); - - ParametersList_Label = Qt::Label(TabPage, "ParametersList_Label"); - $cg->setColor(&Qt::ColorGroup::Foreground, &black); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, Qt::Color(242,247,252)); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, &black); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, &black); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, &black); - $cg->setColor(&Qt::ColorGroup::LinkVisited, &black); - $pal->setActive($cg); - $cg->setColor(&Qt::ColorGroup::Foreground, &black); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, &white); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, &black); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, &black); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238)); - $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139)); - $pal->setInactive($cg); - $cg->setColor(&Qt::ColorGroup::Foreground, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, &white); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238)); - $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139)); - $pal->setDisabled($cg); - ParametersList_Label->setPalette( $pal ); - - $layout33_2->addWidget(ParametersList_Label, 0, 1); - - ParametersList = Qt::TextEdit(TabPage, "ParametersList"); - ParametersList->setEnabled( 1 ); - - $layout33_2->addWidget(ParametersList, 1, 1); - $layout34_2_2->addLayout($layout33_2); - - my $layout25_6 = Qt::HBoxLayout(undef, 0, 6, '$layout25_6'); - - CParamsCombo = Qt::ComboBox(0, TabPage, "CParamsCombo"); - CParamsCombo->setSizePolicy( Qt::SizePolicy(0, 0, 0, 0, CParamsCombo->sizePolicy()->hasHeightForWidth()) ); - $layout25_6->addWidget(CParamsCombo); - - textLabel1_4_6 = Qt::Label(TabPage, "textLabel1_4_6"); - textLabel1_4_6->setSizePolicy( Qt::SizePolicy(0, 0, 0, 0, textLabel1_4_6->sizePolicy()->hasHeightForWidth()) ); - $layout25_6->addWidget(textLabel1_4_6); - - ConstraintLine = Qt::LineEdit(TabPage, "ConstraintLine"); - ConstraintLine->setSizePolicy( Qt::SizePolicy(7, 0, 0, 0, ConstraintLine->sizePolicy()->hasHeightForWidth()) ); - ConstraintLine->setMinimumSize( Qt::Size(0, 25) ); - $layout25_6->addWidget(ConstraintLine); - - AddConstraint = Qt::PushButton(TabPage, "AddConstraint"); - AddConstraint->setSizePolicy( Qt::SizePolicy(0, 0, 0, 0, AddConstraint->sizePolicy()->hasHeightForWidth()) ); - $layout25_6->addWidget(AddConstraint); - $layout34_2_2->addLayout($layout25_6); - - textLabel2_2_3_4 = Qt::Label(TabPage, "textLabel2_2_3_4"); - $cg->setColor(&Qt::ColorGroup::Foreground, &black); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, Qt::Color(242,247,252)); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, &black); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, &black); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, &black); - $cg->setColor(&Qt::ColorGroup::LinkVisited, &black); - $pal->setActive($cg); - $cg->setColor(&Qt::ColorGroup::Foreground, &black); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, &white); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, &black); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, &black); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238)); - $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139)); - $pal->setInactive($cg); - $cg->setColor(&Qt::ColorGroup::Foreground, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249)); - $cg->setColor(&Qt::ColorGroup::Light, &white); - $cg->setColor(&Qt::ColorGroup::Midlight, &white); - $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124)); - $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166)); - $cg->setColor(&Qt::ColorGroup::Text, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::BrightText, &white); - $cg->setColor(&Qt::ColorGroup::ButtonText, Qt::Color(128,128,128)); - $cg->setColor(&Qt::ColorGroup::Base, &white); - $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127)); - $cg->setColor(&Qt::ColorGroup::Shadow, &black); - $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128)); - $cg->setColor(&Qt::ColorGroup::HighlightedText, &white); - $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238)); - $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139)); - $pal->setDisabled($cg); - textLabel2_2_3_4->setPalette( $pal ); - $layout34_2_2->addWidget(textLabel2_2_3_4); - - FunctionsBlock = Qt::TextEdit(TabPage, "FunctionsBlock"); - $layout34_2_2->addWidget(FunctionsBlock); - - my $layout30 = Qt::HBoxLayout(undef, 0, 6, '$layout30'); - - textLabel1_6_3 = Qt::Label(TabPage, "textLabel1_6_3"); - $layout30->addWidget(textLabel1_6_3); - - ResetFunc = Qt::PushButton(TabPage, "ResetFunc"); - ResetFunc->setMaximumSize( Qt::Size(100, 32767) ); - $layout30->addWidget(ResetFunc); - $layout34_2_2->addLayout($layout30); - - $TabPageLayout->addLayout($layout34_2_2, 0, 0); - musrfit_tabs->insertTab( TabPage, "" ); - - $MuSRFitformLayout->addWidget(musrfit_tabs, 0, 0); - - fileNewAction= Qt::Action(this, "fileNewAction"); - fileNewAction->setIconSet( Qt::IconSet($image3) ); - fileOpenAction= Qt::Action(this, "fileOpenAction"); - fileOpenAction->setEnabled( 0 ); - fileOpenAction->setIconSet( Qt::IconSet($image4) ); - fileOpenAction->setVisible( 0 ); - fileSaveAction= Qt::Action(this, "fileSaveAction"); - fileSaveAction->setIconSet( Qt::IconSet($image5) ); - fileSaveAsAction= Qt::Action(this, "fileSaveAsAction"); - fileSaveAsAction->setIconSet( Qt::IconSet($image6) ); - filePrintAction= Qt::Action(this, "filePrintAction"); - filePrintAction->setEnabled( 0 ); - filePrintAction->setIconSet( Qt::IconSet($image7) ); - fileExitAction= Qt::Action(this, "fileExitAction"); - fileExitAction->setIconSet( Qt::IconSet($image8) ); - editUndoAction= Qt::Action(this, "editUndoAction"); - editUndoAction->setEnabled( 0 ); - editUndoAction->setIconSet( Qt::IconSet($image9) ); - editRedoAction= Qt::Action(this, "editRedoAction"); - editRedoAction->setEnabled( 0 ); - editRedoAction->setIconSet( Qt::IconSet($image10) ); - editCutAction= Qt::Action(this, "editCutAction"); - editCutAction->setEnabled( 0 ); - editCutAction->setIconSet( Qt::IconSet($image11) ); - editCopyAction= Qt::Action(this, "editCopyAction"); - editCopyAction->setEnabled( 0 ); - editCopyAction->setIconSet( Qt::IconSet($image12) ); - editPasteAction= Qt::Action(this, "editPasteAction"); - editPasteAction->setEnabled( 0 ); - editPasteAction->setIconSet( Qt::IconSet($image13) ); - editFindAction= Qt::Action(this, "editFindAction"); - editFindAction->setIconSet( Qt::IconSet($image14) ); - helpContentsAction= Qt::Action(this, "helpContentsAction"); - helpContentsAction->setEnabled( 0 ); - helpContentsAction->setIconSet( Qt::IconSet($image15) ); - helpIndexAction= Qt::Action(this, "helpIndexAction"); - helpIndexAction->setEnabled( 0 ); - helpIndexAction->setIconSet( Qt::IconSet($image16) ); - helpAboutAction= Qt::Action(this, "helpAboutAction"); - separatorAction= Qt::Action(this, "separatorAction"); - FileExistCheck= Qt::Action(this, "FileExistCheck"); - FileExistCheck->setToggleAction( 1 ); - FileExistCheck->setOn( 0 ); - ManualFile= Qt::Action(this, "ManualFile"); - ManualFile->setToggleAction( 1 ); - fileChangeDirAction= Qt::Action(this, "fileChangeDirAction"); - fileChangeDirAction->setIconSet( Qt::IconSet($image17) ); - optionsnew_itemAction= Qt::Action(this, "optionsnew_itemAction"); - parametersExport_AsAction= Qt::Action(this, "parametersExport_AsAction"); - parametersExport_AsAction->setIconSet( Qt::IconSet($image18) ); - parametersAppend_ToAction= Qt::Action(this, "parametersAppend_ToAction"); - parametersAppend_ToAction->setIconSet( Qt::IconSet($image19) ); - Fit= Qt::Action(this, "Fit"); - Fit->setIconSet( Qt::IconSet($image20) ); - Plot= Qt::Action(this, "Plot"); - Plot->setToggleAction( 0 ); - Plot->setIconSet( Qt::IconSet($image21) ); - T0= Qt::Action(this, "T0"); - T0->setIconSet( Qt::IconSet($image22) ); - optionsFourier= Qt::Action(this, "optionsFourier"); - optionsFourier->setToggleAction( 1 ); - optionsT0= Qt::Action(this, "optionsT0"); - optionsT0->setToggleAction( 1 ); - optionsConfigure= Qt::Action(this, "optionsConfigure"); - - - FileToolBar = Qt::ToolBar("", this, &DockTop); - - fileOpenAction->addTo(FileToolBar); - fileExitAction->addTo(FileToolBar); - fileChangeDirAction->addTo(FileToolBar); - fileSaveAction->addTo(FileToolBar); - filePrintAction->addTo(FileToolBar); - ActionsToolBar = Qt::ToolBar("", this, &DockTop); - - Fit->addTo(ActionsToolBar); - Plot->addTo(ActionsToolBar); - T0->addTo(ActionsToolBar); - parametersExport_AsAction->addTo(ActionsToolBar); - parametersAppend_ToAction->addTo(ActionsToolBar); - - - MenuBar= Qt::MenuBar( this, "MenuBar"); - - MenuBar->setEnabled( 1 ); - - fileMenu = Qt::PopupMenu( this ); - fileOpenAction->addTo( fileMenu ); - fileSaveAction->addTo( fileMenu ); - fileChangeDirAction->addTo( fileMenu ); - fileMenu->insertSeparator(); - filePrintAction->addTo( fileMenu ); - fileMenu->insertSeparator(); - fileExitAction->addTo( fileMenu ); - MenuBar->insertItem( "", fileMenu, 2 ); - - Edit = Qt::PopupMenu( this ); - editUndoAction->addTo( Edit ); - editRedoAction->addTo( Edit ); - Edit->insertSeparator(); - editCutAction->addTo( Edit ); - editCopyAction->addTo( Edit ); - editPasteAction->addTo( Edit ); - MenuBar->insertItem( "", Edit, 3 ); - - Actions = Qt::PopupMenu( this ); - Fit->addTo( Actions ); - Plot->addTo( Actions ); - T0->addTo( Actions ); - MenuBar->insertItem( "", Actions, 4 ); - - Parameters = Qt::PopupMenu( this ); - parametersExport_AsAction->addTo( Parameters ); - parametersAppend_ToAction->addTo( Parameters ); - MenuBar->insertItem( "", Parameters, 5 ); - - Options = Qt::PopupMenu( this ); - FileExistCheck->addTo( Options ); - ManualFile->addTo( Options ); - optionsFourier->addTo( Options ); - optionsT0->addTo( Options ); - optionsConfigure->addTo( Options ); - MenuBar->insertItem( "", Options, 6 ); - - helpMenu = Qt::PopupMenu( this ); - helpContentsAction->addTo( helpMenu ); - helpIndexAction->addTo( helpMenu ); - helpMenu->insertSeparator(); - helpAboutAction->addTo( helpMenu ); - MenuBar->insertItem( "", helpMenu, 7 ); - - MenuBar->insertSeparator( 8 ); - - languageChange(); - my $resize = Qt::Size(582, 502); - $resize = $resize->expandedTo(minimumSizeHint()); - resize( $resize ); - clearWState( &Qt::WState_Polished ); - - Qt::Object::connect(Fit, SIGNAL "activated()", this, SLOT "GoFit()"); - Qt::Object::connect(parametersAppend_ToAction, SIGNAL "activated()", this, SLOT "parametersAppend()"); - Qt::Object::connect(parametersExport_AsAction, SIGNAL "activated()", this, SLOT "parametersExport()"); - Qt::Object::connect(fileChangeDirAction, SIGNAL "activated()", this, SLOT "fileChangeDir()"); - Qt::Object::connect(fileOpenAction, SIGNAL "activated()", this, SLOT "fileOpen()"); - Qt::Object::connect(fileSaveAction, SIGNAL "activated()", this, SLOT "fileSave()"); - Qt::Object::connect(filePrintAction, SIGNAL "activated()", this, SLOT "filePrint()"); - Qt::Object::connect(fileExitAction, SIGNAL "activated()", this, SLOT "fileExit()"); - Qt::Object::connect(editUndoAction, SIGNAL "activated()", this, SLOT "editUndo()"); - Qt::Object::connect(editRedoAction, SIGNAL "activated()", this, SLOT "editRedo()"); - Qt::Object::connect(editCutAction, SIGNAL "activated()", this, SLOT "editCut()"); - Qt::Object::connect(editCopyAction, SIGNAL "activated()", this, SLOT "editCopy()"); - Qt::Object::connect(editPasteAction, SIGNAL "activated()", this, SLOT "editPaste()"); - Qt::Object::connect(helpIndexAction, SIGNAL "activated()", this, SLOT "helpIndex()"); - Qt::Object::connect(helpContentsAction, SIGNAL "activated()", this, SLOT "helpContents()"); - Qt::Object::connect(helpAboutAction, SIGNAL "activated()", this, SLOT "helpAbout()"); - Qt::Object::connect(T0, SIGNAL "activated()", this, SLOT "ShowMuSRT0()"); - Qt::Object::connect(Plot, SIGNAL "activated()", this, SLOT "GoPlot()"); - Qt::Object::connect(ManualFile, SIGNAL "toggled(bool)", this, SLOT "RunSelectionToggle()"); - Qt::Object::connect(ResetFunc, SIGNAL "clicked()", this, SLOT "InitializeFunctions()"); - Qt::Object::connect(AddConstraint, SIGNAL "clicked()", this, SLOT "AppendToFunctions()"); - Qt::Object::connect(InitParamTable, SIGNAL "valueChanged(int,int)", this, SLOT "CallMSRCreate()"); - Qt::Object::connect(buttonGroupSharing, SIGNAL "toggled(bool)", this, SLOT "ActivateShComp()"); - Qt::Object::connect(Browse, SIGNAL "clicked()", this, SLOT "fileBrowse()"); - Qt::Object::connect(BeamLine, SIGNAL "activated(int)", this, SLOT "T0Update()"); - Qt::Object::connect(FitType3, SIGNAL "activated(const QString&)", this, SLOT "InitializeFunctions()"); - Qt::Object::connect(FitType1, SIGNAL "activated(const QString&)", this, SLOT "InitializeFunctions()"); - Qt::Object::connect(FitType2, SIGNAL "activated(const QString&)", this, SLOT "InitializeFunctions()"); - Qt::Object::connect(musrfit_tabs, SIGNAL "selected(const QString&)", this, SLOT "TabChanged()"); - Qt::Object::connect(t0Update, SIGNAL "clicked()", this, SLOT "t0UpdateClicked()"); - Qt::Object::connect(buttonGroupSharing, SIGNAL "toggled(bool)", this, SLOT "ActivateShComp()"); - - setTabOrder(musrfit_tabs, RunNumbers); - setTabOrder(RunNumbers, BeamLine); - setTabOrder(BeamLine, YEAR); - setTabOrder(YEAR, RunFiles); - setTabOrder(RunFiles, Browse); - setTabOrder(Browse, FitType1); - setTabOrder(FitType1, FitType2); - setTabOrder(FitType2, FitType3); - setTabOrder(FitType3, Tis); - setTabOrder(Tis, Tfs); - setTabOrder(Tfs, BINS); - setTabOrder(BINS, FitAsyType); - setTabOrder(FitAsyType, LRBF); - setTabOrder(LRBF, FitTextOutput); - setTabOrder(FitTextOutput, ShParam_1_1); - setTabOrder(ShParam_1_1, ShParam_1_2); - setTabOrder(ShParam_1_2, ShParam_1_3); - setTabOrder(ShParam_1_3, ShParam_1_4); - setTabOrder(ShParam_1_4, ShParam_1_5); - setTabOrder(ShParam_1_5, ShParam_1_6); - setTabOrder(ShParam_1_6, ShParam_1_7); - setTabOrder(ShParam_1_7, ShParam_1_8); - setTabOrder(ShParam_1_8, ShParam_1_9); - setTabOrder(ShParam_1_9, ShParam_2_1); - setTabOrder(ShParam_2_1, ShParam_2_2); - setTabOrder(ShParam_2_2, ShParam_2_3); - setTabOrder(ShParam_2_3, ShParam_2_4); - setTabOrder(ShParam_2_4, ShParam_2_5); - setTabOrder(ShParam_2_5, ShParam_2_6); - setTabOrder(ShParam_2_6, ShParam_2_7); - setTabOrder(ShParam_2_7, ShParam_2_8); - setTabOrder(ShParam_2_8, ShParam_2_9); - setTabOrder(ShParam_2_9, ShParam_3_1); - setTabOrder(ShParam_3_1, ShParam_3_2); - setTabOrder(ShParam_3_2, ShParam_3_3); - setTabOrder(ShParam_3_3, ShParam_3_4); - setTabOrder(ShParam_3_4, ShParam_3_5); - setTabOrder(ShParam_3_5, ShParam_3_6); - setTabOrder(ShParam_3_6, ShParam_3_7); - setTabOrder(ShParam_3_7, ShParam_3_8); - setTabOrder(ShParam_3_8, ShParam_3_9); - setTabOrder(ShParam_3_9, InitParamTable); - setTabOrder(InitParamTable, TITLE); - setTabOrder(TITLE, FILENAME); - setTabOrder(FILENAME, textMSROutput); - setTabOrder(textMSROutput, FUnits); - setTabOrder(FUnits, FApodization); - setTabOrder(FApodization, FPlot); - setTabOrder(FPlot, FrqMin); - setTabOrder(FrqMin, FrqMax); - setTabOrder(FrqMax, t01); - setTabOrder(t01, Bg11); - setTabOrder(Bg11, Bg21); - setTabOrder(Bg21, Data11); - setTabOrder(Data11, Data21); - setTabOrder(Data21, t02); - setTabOrder(t02, Bg12); - setTabOrder(Bg12, Bg22); - setTabOrder(Bg22, Data12); - setTabOrder(Data12, Data22); - setTabOrder(Data22, t03); - setTabOrder(t03, Bg13); - setTabOrder(Bg13, Bg23); - setTabOrder(Bg23, Data13); - setTabOrder(Data13, Data23); - setTabOrder(Data23, t04); - setTabOrder(t04, Bg14); - setTabOrder(Bg14, Bg24); - setTabOrder(Bg24, Data14); - setTabOrder(Data14, Data24); - - TfsLabel->setBuddy(this->Tfs); - Comp1Label->setBuddy(this->FitType1); - BINSLabel->setBuddy(this->BINS); - TisLabel->setBuddy(this->Tis); - TITLELabel->setBuddy(this->TITLE); - FILENAMELabel->setBuddy(this->FILENAME); -} - - -# Sets the strings of the subwidgets using the current -# language. - -sub languageChange -{ - setCaption(trUtf8("MuSRFit GUI") ); - setIconText(trUtf8("MuSRFitGUI") ); - RUNSAuto->setTitle( trUtf8("RUN Numbers") ); - Qt::ToolTip::add(RunNumbers, trUtf8("Numbers of RUNs to fit. Multiple runs are comma separated.")); - Qt::WhatsThis::add(RunNumbers, trUtf8("Numbers of RUNs to fit. Multiple runs are comma separated.")); - BeamLine->clear(); - BeamLine->insertItem( trUtf8("LEM") ); - BeamLine->insertItem( trUtf8("GPS") ); - BeamLine->insertItem( trUtf8("Dolly") ); - BeamLine->insertItem( trUtf8("LTF") ); - BeamLine->insertItem( trUtf8("LEM (PPC)") ); - BeamLineLabel->setText( trUtf8("On beam line") ); - YEARLabel->setText( trUtf8("Year") ); - RUNSMan->setTitle( trUtf8("RUN Files") ); - Qt::ToolTip::add(RunFiles, trUtf8("Names of data files to be fit. Multiple data files are comma separated.")); - Qt::WhatsThis::add(RunFiles, trUtf8("Names of data files to be fit. Multiple data files are comma separated.")); - Browse->setText( trUtf8("Browse") ); - Qt::ToolTip::add(Browse, trUtf8("Browse to select data files for fitting.")); - Qt::WhatsThis::add(Browse, trUtf8("Browse to select data files for fitting.")); - groupBox7->setTitle( trUtf8("Theory Function") ); - FitType2->clear(); - FitType2->insertItem( trUtf8("Exponential") ); - FitType2->insertItem( trUtf8("Gaussian") ); - FitType2->insertItem( trUtf8("Stretch Exp.") ); - FitType2->insertItem( trUtf8("Exponential Cos") ); - FitType2->insertItem( trUtf8("Gaussian Cos") ); - FitType2->insertItem( trUtf8("Stretch Cos") ); - FitType2->insertItem( trUtf8("Lorentzian Dynamic KT") ); - FitType2->insertItem( trUtf8("Gaussian Dynamic KT") ); - FitType2->insertItem( trUtf8("Background") ); - FitType2->insertItem( trUtf8("Lorentzian Kubo-Toyabe LF x Exp") ); - FitType2->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Exp") ); - FitType2->insertItem( trUtf8("Lorentzian Kubo-Toyabe LF x Str Exp") ); - FitType2->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Str Exp") ); - FitType2->insertItem( trUtf8("MolMag") ); - FitType2->insertItem( trUtf8("Meissner State Model") ); - FitType2->insertItem( trUtf8("None") ); - FitType2->setCurrentItem( int(15) ); - TfsLabel->setText( trUtf8("Final Time") ); - FitType1->clear(); - FitType1->insertItem( trUtf8("Exponential") ); - FitType1->insertItem( trUtf8("Gaussian") ); - FitType1->insertItem( trUtf8("Stretch Exp.") ); - FitType1->insertItem( trUtf8("Exponential Cos") ); - FitType1->insertItem( trUtf8("Gaussian Cos") ); - FitType1->insertItem( trUtf8("Stretch Cos") ); - FitType1->insertItem( trUtf8("Lorentzian Dynamic KT") ); - FitType1->insertItem( trUtf8("Gaussian Dynamic KT") ); - FitType1->insertItem( trUtf8("Background") ); - FitType1->insertItem( trUtf8("Lorentzian Kubo-Toyabe LF x Exp") ); - FitType1->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Exp") ); - FitType1->insertItem( trUtf8("Lorentzian Kubo-Toyabe LF x Str Exp") ); - FitType1->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Str Exp") ); - FitType1->insertItem( trUtf8("MolMag") ); - FitType1->insertItem( trUtf8("Meissner State Model") ); - BINS->setText( trUtf8("100") ); - Comp3Label->setText( trUtf8("Third Component") ); - Tis->setText( trUtf8("0") ); - Tfs->setText( trUtf8("8") ); - Comp1Label->setText( trUtf8("First Component") ); - BINSLabel->setText( trUtf8("Binning Factor") ); - TisLabel->setText( trUtf8("Initial Time") ); - FitType3->clear(); - FitType3->insertItem( trUtf8("Exponential") ); - FitType3->insertItem( trUtf8("Gaussian") ); - FitType3->insertItem( trUtf8("Stretch Exp.") ); - FitType3->insertItem( trUtf8("Exponential Cos") ); - FitType3->insertItem( trUtf8("Gaussian Cos") ); - FitType3->insertItem( trUtf8("Stretch Cos") ); - FitType3->insertItem( trUtf8("Lorentzian Dynamic KT") ); - FitType3->insertItem( trUtf8("Gaussian Dynamic KT") ); - FitType3->insertItem( trUtf8("Background") ); - FitType3->insertItem( trUtf8("Lorentzian Kubo-Toyabe LF x Exp") ); - FitType3->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Exp") ); - FitType3->insertItem( trUtf8("Lorentzian Kubo-Toyabe LF x Str Exp") ); - FitType3->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Str Exp") ); - FitType3->insertItem( trUtf8("MolMag") ); - FitType3->insertItem( trUtf8("Meissner State Model") ); - FitType3->insertItem( trUtf8("None") ); - FitType3->setCurrentItem( int(15) ); - Comp2Label->setText( trUtf8("Second Component") ); - FitAsyTypeLabel->setText( trUtf8("Fit type") ); - FitAsyType->clear(); - FitAsyType->insertItem( $image1, trUtf8("Asymmetry") ); - FitAsyType->insertItem( $image2, trUtf8("SingleHist") ); - LRBFLabel->setText( trUtf8("Histograms list") ); - LRBF->setText( trUtf8("1,3") ); - musrfit_tabs->changeTab( RUNSPage, trUtf8("RUNS") ); - Minimization->clear(); - Minimization->insertItem( trUtf8("MINIMIZE") ); - Minimization->insertItem( trUtf8("MIGRAD") ); - Minimization->insertItem( trUtf8("SIMPLEX") ); - textLabel1_4_2_2->setText( trUtf8("View Binning") ); - textLabel1_5->setText( trUtf8("Minimization type") ); - textLabel1_4_2->setText( trUtf8("Y Range") ); - ErrorCalc->clear(); - ErrorCalc->insertItem( trUtf8("HESSE") ); - ErrorCalc->insertItem( trUtf8("MINOS") ); - ltc->setText( trUtf8("Life time correction") ); - textLabel1_5_2->setText( trUtf8("Error estimation") ); - textLabel1_4->setText( trUtf8("X Range") ); - musrfit_tabs->changeTab( FittingPage, trUtf8("Fitting") ); - buttonGroupSharing->setTitle( trUtf8("Shared parameters among different runs") ); - SharingComp2->setTitle( trUtf8("2nd Component") ); - Comp2ShLabel->setText( trUtf8("FitType2") ); - ShParam_2_1->setText( trUtf8("Param1") ); - ShParam_2_2->setText( trUtf8("Param2") ); - ShParam_2_3->setText( trUtf8("Param3") ); - ShParam_2_4->setText( trUtf8("Param4") ); - ShParam_2_5->setText( trUtf8("Param5") ); - ShParam_2_6->setText( trUtf8("Param6") ); - ShParam_2_7->setText( trUtf8("Param7") ); - ShParam_2_8->setText( trUtf8("Param8") ); - ShParam_2_9->setText( trUtf8("Param9") ); - SharingComp3->setTitle( trUtf8("3rd Component") ); - Comp3ShLabel->setText( trUtf8("FitType3") ); - ShParam_3_1->setText( trUtf8("Param1") ); - ShParam_3_2->setText( trUtf8("Param2") ); - ShParam_3_3->setText( trUtf8("Param3") ); - ShParam_3_4->setText( trUtf8("Param4") ); - ShParam_3_5->setText( trUtf8("Param5") ); - ShParam_3_6->setText( trUtf8("Param6") ); - ShParam_3_7->setText( trUtf8("Param7") ); - ShParam_3_8->setText( trUtf8("Param8") ); - ShParam_3_9->setText( trUtf8("Param9") ); - SharingComp1->setTitle( trUtf8("1st Component") ); - ShParam_1_1->setText( trUtf8("Param1") ); - ShParam_1_2->setText( trUtf8("Param2") ); - ShParam_1_3->setText( trUtf8("Param3") ); - ShParam_1_4->setText( trUtf8("Param4") ); - ShParam_1_5->setText( trUtf8("Param5") ); - ShParam_1_6->setText( trUtf8("Param6") ); - ShParam_1_7->setText( trUtf8("Param7") ); - ShParam_1_8->setText( trUtf8("Param8") ); - ShParam_1_9->setText( trUtf8("Param9") ); - Comp1ShLabel->setText( trUtf8("FitType1") ); - musrfit_tabs->changeTab( SharingPage, trUtf8("Sharing") ); - InitParamTable->horizontalHeader()->setLabel( 0, trUtf8("Value") ); - InitParamTable->horizontalHeader()->setLabel( 1, trUtf8("Error") ); - InitParamTable->horizontalHeader()->setLabel( 2, trUtf8("Min") ); - InitParamTable->horizontalHeader()->setLabel( 3, trUtf8("Max") ); - musrfit_tabs->changeTab( InitializationPage, trUtf8("Initialization") ); - groupTitle->setTitle( undef ); - TITLELabel->setText( trUtf8("Enter the label (defaul is run title from the first run)") ); - TITLE->setText( trUtf8("","Title line for MSR file (optional)") ); - Qt::ToolTip::add(TITLE, trUtf8("Title line for MSR file (optional)")); - Qt::WhatsThis::add(TITLE, trUtf8("Title line for MSR file (optional)")); - FILENAMELabel->setText( trUtf8("Enter [name] for output [name].msr file (optional)") ); - Qt::ToolTip::add(FILENAME, trUtf8("Name of the produced MSR file (optional)")); - Qt::WhatsThis::add(FILENAME, trUtf8("Name of the produced MSR file (optional)")); - musrfit_tabs->changeTab( MSRPage, trUtf8("MSR File") ); - FourierBox->setTitle( trUtf8("Fourier transform parameters") ); - textLabel1_3_4->setText( undef ); - textLabel1_7->setText( trUtf8("Phase:") ); - textLabel1_3_5->setText( undef ); - FUnits->clear(); - FUnits->insertItem( trUtf8("MHz") ); - FUnits->insertItem( trUtf8("Gauss") ); - FUnits->insertItem( trUtf8("Mc/s") ); - textLabel1_3_6->setText( undef ); - FApodization->clear(); - FApodization->insertItem( trUtf8("STRONG") ); - FApodization->insertItem( trUtf8("MEDIUM") ); - FApodization->insertItem( trUtf8("WEAK") ); - FApodization->insertItem( trUtf8("NONE") ); - FPlot->clear(); - FPlot->insertItem( trUtf8("power") ); - FPlot->insertItem( trUtf8("real") ); - FPlot->insertItem( trUtf8("imag") ); - FPlot->insertItem( trUtf8("real_and_imag") ); - FPlot->insertItem( trUtf8("phase") ); - FUnitsLabel->setText( trUtf8("Units") ); - textLabel1_3_8->setText( undef ); - textLabel1_3_7->setText( undef ); - FPlotLabel->setText( trUtf8("Plot") ); - textLabel1_2->setText( trUtf8("to") ); - FApodizationLabel->setText( trUtf8("Apodization") ); - textLabel1_3_3->setText( undef ); - textLabel1->setText( trUtf8("Range: from") ); - RRFBox->setTitle( trUtf8("Rotatting reference frame (RRF) parameters") ); - textLabel1_6_2_2->setText( trUtf8("Phase") ); - textLabel1_6->setText( trUtf8("Frequency") ); - textLabel1_6_2_4->setText( undef ); - RRFFrq->setText( undef ); - textLabel1_6_2_3->setText( undef ); - textLabel1_6_2->setText( trUtf8("Packing") ); - RRFUnits->clear(); - RRFUnits->insertItem( trUtf8("MHz") ); - RRFUnits->insertItem( trUtf8("kHz") ); - RRFUnits->insertItem( trUtf8("Mc/s") ); - RRFUnits->insertItem( trUtf8("G") ); - RRFUnits->insertItem( trUtf8("T") ); - musrfit_tabs->changeTab( FourierPage, trUtf8("FFT/RRF") ); - groupHist0->setTitle( undef ); - textLabel2->setText( trUtf8("t0") ); - textLabel2_2_2_3->setText( trUtf8("Bg1") ); - textLabel2_2_2->setText( trUtf8("Bg2") ); - textLabel2_2_2_2->setText( trUtf8("Data 1") ); - textLabel2_2_2_2_2->setText( trUtf8("Data 2") ); - groupHist1->setTitle( trUtf8("Hist1") ); - groupHist2->setTitle( trUtf8("Hist2") ); - groupHist3->setTitle( trUtf8("Hist3") ); - groupHist4->setTitle( trUtf8("Hist4") ); - t0Update->setText( trUtf8("Update") ); - Qt::ToolTip::add(t0Update, trUtf8("Use musrt0 to set values")); - musrfit_tabs->changeTab( T0Page, trUtf8("t0/Bg") ); - TheoryBlock_Label->setText( trUtf8("THEORY Block") ); - ParametersList_Label->setText( trUtf8("Parameters List") ); - textLabel1_4_6->setText( trUtf8("=") ); - AddConstraint->setText( trUtf8("Add") ); - textLabel2_2_3_4->setText( trUtf8("FUNCTIONS Block") ); - textLabel1_6_3->setText( undef ); - ResetFunc->setText( trUtf8("Reset") ); - musrfit_tabs->changeTab( TabPage, trUtf8("Constraints") ); - fileNewAction->setText( trUtf8("&New") ); - fileNewAction->setMenuText( trUtf8("&New") ); - fileNewAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+N") ) ); - fileOpenAction->setText( trUtf8("&Open MSR...") ); - fileOpenAction->setMenuText( trUtf8("&Open MSR...") ); - fileOpenAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+O") ) ); - fileSaveAction->setText( trUtf8("&Save MSR...") ); - fileSaveAction->setMenuText( trUtf8("&Save MSR...") ); - fileSaveAction->setStatusTip( trUtf8("&Save MSR") ); - fileSaveAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+S") ) ); - fileSaveAsAction->setText( trUtf8("Save MSR &As...") ); - fileSaveAsAction->setMenuText( trUtf8("Save MSR &As...") ); - fileSaveAsAction->setAccel( Qt::KeySequence( undef ) ); - filePrintAction->setText( trUtf8("Print") ); - filePrintAction->setMenuText( trUtf8("&Print...") ); - filePrintAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+P") ) ); - fileExitAction->setText( trUtf8("Exit") ); - fileExitAction->setMenuText( trUtf8("E&xit") ); - fileExitAction->setAccel( Qt::KeySequence( undef ) ); - 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") ) ); - editFindAction->setText( trUtf8("Find") ); - editFindAction->setMenuText( trUtf8("&Find...") ); - editFindAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+F") ) ); - helpContentsAction->setText( trUtf8("Contents") ); - helpContentsAction->setMenuText( trUtf8("&Contents...") ); - helpContentsAction->setAccel( Qt::KeySequence( undef ) ); - helpIndexAction->setText( trUtf8("Index") ); - helpIndexAction->setMenuText( trUtf8("&Index...") ); - helpIndexAction->setAccel( Qt::KeySequence( undef ) ); - helpAboutAction->setText( trUtf8("About") ); - helpAboutAction->setMenuText( trUtf8("&About") ); - helpAboutAction->setAccel( Qt::KeySequence( undef ) ); - separatorAction->setText( undef ); - separatorAction->setMenuText( undef ); - FileExistCheck->setText( trUtf8("Overwrite MSR File") ); - FileExistCheck->setMenuText( trUtf8("Overwrite MSR File") ); - FileExistCheck->setToolTip( trUtf8("Enable overwriting MSR files") ); - FileExistCheck->setWhatsThis( trUtf8("Enable/Disable checking for MSR files.") ); - ManualFile->setText( trUtf8("Maual file selection") ); - ManualFile->setMenuText( trUtf8("Maual file selection") ); - fileChangeDirAction->setText( trUtf8("&Change dir") ); - fileChangeDirAction->setMenuText( trUtf8("&Change dir") ); - fileChangeDirAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+C") ) ); - optionsnew_itemAction->setText( trUtf8("new item") ); - optionsnew_itemAction->setMenuText( trUtf8("new item") ); - parametersExport_AsAction->setText( trUtf8("Export As...") ); - parametersExport_AsAction->setMenuText( trUtf8("&Export As...") ); - parametersExport_AsAction->setAccel( Qt::KeySequence( trUtf8("Alt+E") ) ); - parametersAppend_ToAction->setText( trUtf8("Append To...") ); - parametersAppend_ToAction->setMenuText( trUtf8("&Append To...") ); - parametersAppend_ToAction->setAccel( Qt::KeySequence( trUtf8("Alt+A") ) ); - Fit->setText( trUtf8("Fit and Plot") ); - Fit->setAccel( Qt::KeySequence( trUtf8("Ctrl+F") ) ); - Plot->setText( trUtf8("Plot") ); - Plot->setAccel( Qt::KeySequence( trUtf8("Ctrl+P") ) ); - T0->setText( trUtf8("Show t0 and Bg Bins") ); - T0->setAccel( Qt::KeySequence( trUtf8("Ctrl+T") ) ); - optionsFourier->setText( trUtf8("Fourier") ); - optionsFourier->setMenuText( trUtf8("Fourier") ); - optionsT0->setText( trUtf8("T0 and Bg bins") ); - optionsT0->setMenuText( trUtf8("T0 and Bg bins") ); - optionsConfigure->setText( trUtf8("Configure") ); - optionsConfigure->setMenuText( trUtf8("Configure") ); - FileToolBar->setLabel( trUtf8("File Menu") ); - ActionsToolBar->setLabel( trUtf8("Actions Menu") ); - MenuBar->findItem( 2 )->setText( trUtf8("&File") ); - MenuBar->findItem( 3 )->setText( trUtf8("Edit") ); - MenuBar->findItem( 4 )->setText( trUtf8("Actions") ); - MenuBar->findItem( 5 )->setText( trUtf8("Parameters") ); - MenuBar->findItem( 6 )->setText( trUtf8("Options") ); - MenuBar->findItem( 7 )->setText( trUtf8("&Help") ); -} - - -sub fileOpen -{ - - my $file=Qt::FileDialog::getOpenFileName( - ".", - "MSR Files (*.msr *.mlog)", - this, - "open file dialog", - "Choose a MSR file"); - print "Selected file: $file\n"; -# TODO: Possibly decipher the MSR file and setup the GUI accordingly -# Find run numbers, beamlines etc. -# Get theory block and understand it -# Get parameters list and update table - - -} - -sub fileSave -{ - - my %All=CreateAllInput(); - my $FILENAME=$All{"FILENAME"}.".msr"; - my $file=Qt::FileDialog::getSaveFileName( - "$FILENAME", - "MSR Files (*.msr *.mlog)", - this, - "save file dialog", - "Choose a filename to save under"); - -# If the user gave a filename the copy to it - if ($file ne "") { -# TODO: check if the extension is correct, or add it. - if (-e $FILENAME) { - my $cmd="cp $FILENAME $file"; - my $pid=system($cmd); - } else { - if ($file ne "") { - my $Warning = "Warning: No MSR file found yet!"; - my $WarningWindow = Qt::MessageBox::information( this, "Warning",$Warning); - } - } - } - -} - -sub fileChangeDir -{ - - my $newdir=Qt::FileDialog::getExistingDirectory( - "", - this, - "get existing directory", - "Choose a directory", - 1); - chdir ("$newdir"); - -} - -sub filePrint -{ - print "MuSRFitform->filePrint(): Not implemented yet.\n"; -} - -sub fileExit -{ - - 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 - -} - -sub parametersExport -{ - - my %All=CreateAllInput(); -# Add also a flag for header - $All{"Header"}=1; - my $FILENAME=$All{"FILENAME"}.".dat"; - my $file=Qt::FileDialog::getSaveFileName( - "$FILENAME", - "Data Files (*.dat)", - this, - "export file dialog", - "Choose a filename to export to"); - -# If the user gave a filename the copy to it - if ($file ne "") { - my $Text = MSR::ExportParams(\%All); - open( DATF,q{>},"$file" ); - print DATF $Text; - close(DATF); - } - -} - -sub parametersAppend -{ - - my %All=CreateAllInput(); -# Add also a flag for header - $All{"Header"}=0; - my $FILENAME=$All{"FILENAME"}.".dat"; - my $file=Qt::FileDialog::getOpenFileName( - "./", - "Data Files (*.dat)", - this, - "append file dialog", - "Choose a filename to append to"); - -# If the user gave a filename the copy to it - if ($file ne "") { - my $Text = MSR::ExportParams(\%All); - open( DATF,q{>>},"$file" ); - print DATF $Text; - close(DATF); - } - -} - -sub editUndo -{ - print "MuSRFitform->editUndo(): Not implemented yet.\n"; -} - -sub editRedo -{ - print "MuSRFitform->editRedo(): Not implemented yet.\n"; -} - -sub editCut -{ - print "MuSRFitform->editCut(): Not implemented yet.\n"; -} - -sub editCopy -{ - print "MuSRFitform->editCopy(): Not implemented yet.\n"; -} - -sub editPaste -{ - print "MuSRFitform->editPaste(): Not implemented yet.\n"; -} - -sub helpIndex -{ - print "MuSRFitform->helpIndex(): Not implemented yet.\n"; -} - -sub helpContents -{ - print "MuSRFitform->helpContents(): Not implemented yet.\n"; -} - -sub helpAbout -{ - - my $AboutText=" - This is a GUI that uses the musrfit binary, developed by Andreas Suter, - to fit muSR spectra. - - MuSRFitGUI 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. - - MuSRFitGUI 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 MuSRFitGUI. If not, see . - - Copyright 2009 by Zaher Salman and the LEM Group. - - "; - my $AboutWindow = Qt::MessageBox::information( this, "About MuSRFit GUI",$AboutText); - -} - -sub CreateAllInput -{ - - my %All=(); - -# From RUNS Tab -# Run data file - $All{"RunNumbers"} = RunNumbers->text; - $All{"RunFiles"} = RunFiles->text; - $All{"BeamLine"} = BeamLine->currentText; - $All{"RUNSType"} = ManualFile->isOn(); - $All{"optionsFourier"} = optionsFourier->isOn(); - $All{"optionsT0"} = optionsT0->isOn(); - $All{"YEAR"} =YEAR->currentText; - if ($All{"YEAR"} eq "") { -# If year combobox is empty fill it up from 2004 up to current year - my ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime(); - my $current_year = 1900 + $yearOffset; - for (my $i=$current_year;$i>=2004;$i--) { - YEAR->insertItem($i,-1); - } - } -# Time range and BINS - $All{"Tis"} = Tis->text; - $All{"Tfs"} = Tfs->text; - $All{"BINS"} = BINS->text; - $All{"FitAsyType"} = FitAsyType->currentText; - $All{"LRBF"} = LRBF->text; - my @Hists = split(/,/, $All{"LRBF"} ); -# Lifetime corrections in enabled/visible only for SingleHis fits - if ( $All{"FitAsyType"} eq "Asymmetry" ) { - ltc->setHidden(1); - } - elsif ( $All{"FitAsyType"} eq "SingleHist" ) { - ltc->setHidden(0); - } - -# From Fitting Tab -# Plot range - $All{"Xi"}=Xi->text; - $All{"Xf"}=Xf->text; - $All{"Yi"}=Yi->text; - $All{"Yf"}=Yf->text; - $All{"ViewBin"}=ViewBin->text; -# Life time correction - if (ltc->isChecked()) { - $All{"ltc"}="y"; - } else { - $All{"ltc"}="n"; - } -# Minuit commands - if ( $All{"go"} eq "" ) { - $All{"go"}="PLOT"; - } -# Get minimization process - $All{"Minimization"} = Minimization->currentText(); - $All{"go"}=$All{"Minimization"}; - -# Get Error calculation process - $All{"ErrorCalc"} = ErrorCalc->currentText(); - $All{"go"}=$All{"ErrorCalc"}; - - RunSelectionToggle(); - my @RUNS = (); - if ($All{"RUNSType"} ) { - @RUNS = split( /,/, $All{"RunFiles"}); - } else { - $All{"RunNumbers"} =~ s/[\ \.\~\/\&\*\[\;\>\<\^\$\(\)\`\|\]\'\@]/,/g; - @RUNS = split( /,/, $All{"RunNumbers"} ); - } - -# From MSR File Tab - $All{"TITLE"}= TITLE->text; - $All{"FILENAME"}= FILENAME->text; - -# From Fourier Tab - $All{"FUNITS"}= FUnits->currentText; - $All{"FAPODIZATION"}= FApodization->currentText; - $All{"FPLOT"}= FPlot->currentText; - $All{"FPHASE"}=FPHASE->text; -# Fourier range - $All{"FrqMin"}=FrqMin->text; - $All{"FrqMax"}=FrqMax->text; - -# Rotating reference frame parameters - $All{"RRFFrq"}=RRFFrq->text; - $All{"RRFPack"}=RRFPack->text; - $All{"RRFPhase"}=RRFPhase->text; - $All{"RRFUnits"}=RRFUnits->currentText; - -# Get values of t0 and Bg/Data bins if given - my $NHist = 1; - foreach my $Hist (@Hists) { - foreach ("t0","Bg1","Bg2","Data1","Data2") { - my $Name = "$_$NHist"; - $All{$Name}=child($Name)->text; -# TODO: If empty fill with defaults - if ($All{$Name} eq "") { - $All{$Name}=MSR::T0BgData($_,$Hist,$All{"BeamLine"}); - child($Name)->setText($All{$Name}); - } - } - $NHist++; - } - -# Construct fittypes that can be understood by MSR.pm - my %FTs=(0,"Exponential", - 1,"Gaussian", - 2,"Stretch", - 3,"ExponentialCos", - 4,"GaussianCos", - 5,"StretchCos", - 6,"LDKTLF", - 7,"GDKTLF", - 8,"Background", - 9,"LLFExp", - 10,"GLFExp", - 11,"LLFSExp", - 12,"GLFSExp", - 13,"MolMag", - 14,"Meissner", - 15,"None" - ); - - my $FT1=FitType1->currentItem; - my $FT2=FitType2->currentItem; - my $FT3=FitType3->currentItem; - $All{"FitType1"} = $FTs{$FT1}; - $All{"FitType2"} = $FTs{$FT2}; - $All{"FitType3"} = $FTs{$FT3}; - my @FitTypes =(); - my $FitType=""; - foreach $FitType ($All{"FitType1"}, $All{"FitType2"}, $All{"FitType3"}) { - if ( $FitType ne "None" ) { - push( @FitTypes, $FitType ); - } - } - -# Also theory block and paramets list - my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateTheory(@FitTypes); - $All{"Full_T_Block"}=$Full_T_Block; - $All{"Paramcomp_ref"}=$Paramcomp_ref; - my @Paramcomp = @$Paramcomp_ref; - -# Functions block - $All{"FunctionsBlock"}=FunctionsBlock->text; -# and the associated theory block - $All{"Func_T_Block"}=TheoryBlock->text; - -# Shared settings are detected here - $All{"EnableSharing"} = buttonGroupSharing->isChecked(); - - my $Shared = 0; - my $PCount =0; - my $Component=1; - foreach $FitType (@FitTypes) { - my $Parameters=$Paramcomp[$Component-1]; - my @Params = split( /\s+/, $Parameters ); - - if ( $Component == 1 && $All{"FitAsyType"} eq "Asymmetry" ) { - unshift( @Params, "Alpha" ); - } - elsif ( $Component == 1 && $All{"FitAsyType"} eq "SingleHist" ) { - unshift( @Params, ( "No", "NBg" ) ); - } - -# This is the counter for parameters of this component - my $NP=1; - $Shared = 0; -# Change state/label of parameters - foreach my $Param (@Params) { - my $Param_ORG = $Param; -# TODO: I need to take care of single hist fits here - if ( $All{"FitAsyType"} eq "SingleHist" ) { - $Param=$Param.$Hists[0]; - } - if ( $#FitTypes != 0 && ( $Param ne "Alpha" && $Param ne "No" && $Param ne "NBg" ) ){ - $Param = join( "", $Param, "_", $Component); - } - -# Is there any point of sharing, multiple runs? - if ( $#RUNS == 0 && $All{"FitAsyType"} eq "Asymmetry") { - $Shared = 1; - } - elsif ( $#RUNS == 0 && $#Hists == 0 && $All{"FitAsyType"} eq "SingleHist" ) { - $Shared = 1; - } else { -# Check if shared or not, construct name of checkbox, find its handle and then -# check if it is checked - my $ChkName="ShParam_".$Component."_".$NP; - my $ChkBx = child($ChkName); - $Shared = $ChkBx->isChecked(); - } - $All{"Sh_$Param"}=$Shared; - $NP++; - } -#Loop on parameters - $Component++; - } -# Loop on components -# Done with shared parameters detecting - -# Construct a default filename if empty - if ( $All{"FILENAME"} eq "" && !$All{"RUNSType"}) { - $All{"FILENAME"}=$RUNS[0]."_".$All{"BeamLine"}."_".$All{"YEAR"}; - if ($All{"BeamLine"} eq "LEM (PPC)") { - $All{"FILENAME"}=$RUNS[0]."_LEM_".$All{"YEAR"}; - } - } else { - $All{"FILENAME"}="TMP"; - } - - -# This has to be at the end of CreateAll - my %PTable=MSR::PrepParamTable(\%All); - -# Setup the table with the right size - my $NParam=scalar keys( %PTable ); - -# Read initial values of paramets from tabel - my $erradd = "d"; - my $minadd = "_min"; - my $maxadd = "_max"; - my $Header=InitParamTable->verticalHeader(); -# TODO: Should not go over all rows, only on parameters. - if ($NParam > 0) { - for (my $i=0;$i<$NParam;$i++) { -# Take label of row, i.e. name of parameter - my $Param=$Header->label($i); -# Then take the value, error, max and min (as numbers) - $All{"$Param"}=1.0*InitParamTable->text($i,0); - $All{"$erradd$Param"}=1.0*InitParamTable->text($i,1); - $All{"$Param$minadd"}=1.0*InitParamTable->text($i,2); - $All{"$Param$maxadd"}=1.0*InitParamTable->text($i,3); - } - } - - -# Return Hash with all important values - return %All; - -} - -sub CallMSRCreate -{ - - use MSR; - my %All=CreateAllInput(); - -# Check if the option for checking for existing files is selected - my $FileExistCheck= FileExistCheck->isOn(); - my $FILENAME=$All{"FILENAME"}.".msr"; - my $Answer=0; - if ($All{"RunNumbers"} ne "" || $All{"RunFiles"} ne "") { - if ( $FileExistCheck==1 ) { - if (-e $FILENAME) { -# Warning: MSR file exists -# my $Warning = "Warning: MSR file $FILENAME Already exists!\nIf you continue it will overwriten."; - my $Warning = "Warning: MSR file $FILENAME Already exists!\nDo you want to overwrite it?"; -# my $WarningWindow = Qt::MessageBox::information( this, "Warning",$Warning); -# $Answer =1,0 for yes and no - $Answer= Qt::MessageBox::warning( this, "Warning",$Warning, "&No", "&Yes", undef, 1,1); - } - } else { -# Just overwrite file - $Answer=1; - } - - if ($Answer) { - if ( $All{"FitAsyType"} eq "Asymmetry" ) { - my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSR(\%All); - } - elsif ( $All{"FitAsyType"} eq "SingleHist" ) { - my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSRSingleHist(\%All); - } - UpdateMSRFileInitTable(); - } - } - return $Answer; - -} - -sub UpdateMSRFileInitTable -{ - - my %All=CreateAllInput(); - my $FILENAME=$All{"FILENAME"}; - open (MSRF,q{<},"$FILENAME.msr" ); - my @lines = ; - close(IFILE); - textMSROutput->setText(""); - foreach my $line (@lines) { - textMSROutput->append("$line"); - } - - (my $TBlock_ref, my $FPBlock_ref)=MSR::ExtractBlks(@lines); - my @FPBloc = @$FPBlock_ref; - - my $PCount=0; - foreach my $line (@FPBloc) { - $PCount++; - my @Param=split(/\s+/,$line); - -# Depending on how many elements in @Param determine what they mean -# 0th element is empty (always) -# 1st element is the order (always) -# 2nd element is the name (always) -# 3rd element is the value (always) -# 4th element can be taken as step/error (always) -# 5th element can be -# if it is last element or there are two more = positive error, check $#Param=5/7 -# if there is only one more = minimum, check $#Param=6 - -# To summarize, check the value of $#Param - my $value=1.0*$Param[3]; - my $error = 1.0*$Param[4]; - my $minvalue=0.0; - my $maxvalue=0.0; - if ($#Param == 4) { - $minvalue=0.0; - $maxvalue=0.0; - } - elsif ($#Param == 6) { - $minvalue=1.0*$Param[5]; - $maxvalue=1.0*$Param[6]; - } - elsif ($#Param == 5 || $#Param == 7) { - $minvalue=1.0*$Param[6]; - $maxvalue=1.0*$Param[7]; - } -# Now update the initialization tabel - InitParamTable->setText($PCount-1,0,$value); - InitParamTable->setText($PCount-1,1,$error); - InitParamTable->setText($PCount-1,2,$minvalue); - InitParamTable->setText($PCount-1,3,$maxvalue); -# Set bg color to mark different runs - } - return; - -} - -sub ActivateT0Hists -{ - - my %All=CreateAllInput(); - my @Hists = split(/,/, $All{"LRBF"} ); - my $HistBox = ""; - for (my $iHist=1; $iHist<=4; $iHist++) { - $HistBox="groupHist$iHist"; - my $HistBoxHandle = child($HistBox); - if ($iHist<=$#Hists+1) { -# Activate this histogram box - $HistBoxHandle->setHidden(0); - $HistBoxHandle->setEnabled(1); - $HistBoxHandle->setTitle("Hist # $Hists[$iHist-1]"); - } else { -# Deactivate this histogram box - $HistBoxHandle->setHidden(1); - $HistBoxHandle->setEnabled(0); - } - } - -# TODO: Set default values - - -} - -sub ActivateShComp -{ - - my %All=CreateAllInput(); - my @RUNS = split( /,/, $All{"RunNumbers"} ); - -# Hide all sharing components - SharingComp1->setHidden(1); - SharingComp2->setHidden(1); - SharingComp3->setHidden(1); - SharingComp1->setEnabled(0); - SharingComp2->setEnabled(0); - SharingComp3->setEnabled(0); - - my @FitTypes =(); - foreach my $FitType ($All{"FitType1"}, $All{"FitType2"}, $All{"FitType3"}) { - if ( $FitType ne "None" ) { - push( @FitTypes, $FitType ); - } - } - -# Get number of parameters to determine the size of the table - my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateTheory(@FitTypes); -# For now the line below does not work. Why? -# my $Paramcomp_ref=$All{"Paramcomp_ref"}; - my @Paramcomp = @$Paramcomp_ref; - my $Full_T_Block= $All{"Full_T_Block"}; - -# Possible to share only if sharing is enabled altogether - my $EnableSharing = $All{"EnableSharing"}; - if ($EnableSharing) { - my $Component=1; - foreach my $FitType (@FitTypes) { - my $Parameters=$Paramcomp[$Component-1]; - my @Params = split( /\s+/, $Parameters ); - - if ( $Component == 1 && $All{"FitAsyType"} eq "Asymmetry" ) { - unshift( @Params, "Alpha" ); - } - elsif ( $Component == 1 && $All{"FitAsyType"} eq "SingleHist" ) { - unshift( @Params, ( "No", "NBg" ) ); - } - - -# Make the component appear first (only if we have multiple runs) - my $ShCompG="SharingComp".$Component; - my $ShCG = child($ShCompG); - if ($#RUNS>0) { - $ShCG->setHidden(0); - $ShCG->setEnabled(1); - } - my $CompShLabel = "Comp".$Component."ShLabel"; - my $CompShL = child($CompShLabel); - $CompShL->setText($All{"FitType$Component"}); - -# Change state/label of parameters - for (my $i=1; $i<=9;$i++) { - my $ParamChkBx="ShParam_".$Component."_".$i; - my $ChkBx = child($ParamChkBx); - if ($Params[$i-1] ne "") { - $ChkBx->setHidden(0); - $ChkBx->setEnabled(1); - $ChkBx ->setText($Params[$i-1]); - } else { - $ChkBx->setHidden(1); - } - } - $Component++; - } - } - -} - -sub InitializeTab -{ - - my %All=CreateAllInput(); - InitParamTable->setLeftMargin(100); - my $NRows = InitParamTable->numRows(); - -# Remove any rows in table - if ($NRows > 0) { - for (my $i=0;$i<$NRows;$i++) { -# TODO: Better remove the row rather than hide it. - InitParamTable->hideRow($i); -# InitParamTable->removeRow($i); - } - } - - my %PTable=MSR::PrepParamTable(\%All); - -# Setup the table with the right size - my $NParam=scalar keys( %PTable ); - if ($NParam>$NRows) { - InitParamTable->setNumRows($NParam); - } - -# Fill the table with labels and values of parametr - for (my $PCount=0;$PCount<$NParam;$PCount++) { - my ($Param,$value,$error,$minvalue,$maxvalue,$RUN) = split(/,/,$PTable{$PCount}); -# Now make sure we have no nans - if ($error eq "nan") { $error=0.1;} -# If you use this then reading the parameters from the table is a problem -# You need to extract the correct parameter name from the row label -# InitParamTable->verticalHeader()->setLabel( $PCount,"$RUN: $Param"); - InitParamTable->verticalHeader()->setLabel( $PCount,"$Param"); - InitParamTable->showRow($PCount); - InitParamTable->setText($PCount,0,$value); - InitParamTable->setText($PCount,1,$error); - InitParamTable->setText($PCount,2,$minvalue); - InitParamTable->setText($PCount,3,$maxvalue); - } - -} - -sub TabChanged -{ - -# TODO: First check if there are some runs given, otherwise disbale - my %All=CreateAllInput(); - -# First make sure we have sharing initialized - ActivateShComp(); -# Here we need to apply sharing if selected... - InitializeTab(); - UpdateMSRFileInitTable(); -# And also setup T0 and Bg bins - ActivateT0Hists(); - -# Initialize FUNCTIONS block only if it has not been initialized yet - if ($All{"Func_T_Block"} eq "" ) { - InitializeFunctions(); - } - -} - -sub GoFit -{ - - my %All=CreateAllInput(); - musrfit_tabs->setCurrentPage(1); - my $Answer=CallMSRCreate(); - if ($Answer) { - my $FILENAME=$All{"FILENAME"}.".msr"; - if (-e $FILENAME) { - my $cmd="musrfit -t $FILENAME"; - my $pid = open(FTO,"$cmd 2>&1 |"); - while () { - FitTextOutput->append("$_"); - } - close(FTO); - $cmd="musrview $FILENAME &"; - $pid = system($cmd); - } else { - FitTextOutput->append("Cannot find MSR file!"); - } - FitTextOutput->append("-----------------------------------------------------------------------------------------------------------------------------"); -# update MSR File tab and initialization table - UpdateMSRFileInitTable(); - } - - return; - -} - -sub GoPlot -{ - - my %All=CreateAllInput(); - my $Answer=CallMSRCreate(); - my $FILENAME=$All{"FILENAME"}.".msr"; - - if ($Answer) { - if (-e $FILENAME) { - my $cmd="musrview $FILENAME &"; - my $pid = system($cmd); - } else { - FitTextOutput->append("Cannot find MSR file!"); - FitTextOutput->append("-----------------------------------------------------------------------------------------------------------------------------"); - } - } - return; - -} - -sub ShowMuSRT0 -{ - - my %All=CreateAllInput(); - musrfit_tabs->setCurrentPage(6); -# Create MSR file and then run musrt0 - my $Answer=CallMSRCreate(); - - if ($Answer) { - my $FILENAME=$All{"FILENAME"}.".msr"; - if (-e $FILENAME) { - my $cmd="musrt0 $FILENAME &"; - my $pid = system($cmd); - t0Update->setEnabled(1) - } else { - print STDERR "Cannot find MSR file!\n"; - } - } - return; - -} - -sub T0Update -{ - - my %All = CreateAllInput(); - my @Hists = split(/,/, $All{"LRBF"} ); - -# Get values of t0 and Bg/Data bins if given - my $NHist = 1; - foreach my $Hist (@Hists) { - foreach ("t0","Bg1","Bg2","Data1","Data2") { - my $Name = "$_$NHist"; - my $tmp=MSR::T0BgData($_,$Hist,$All{"BeamLine"}); - child($Name)->setText($tmp); - } - $NHist++ - } - - -} - -sub RunSelectionToggle -{ - - my $ManualFile= ManualFile->isOn(); - if ($ManualFile) { -# Manual RUN selection - RUNSMan->setEnabled(1); - RUNSMan->setHidden(0); - RunNumbers->setText(""); - RUNSAuto->setEnabled(0); - RUNSAuto->setHidden(1); - } else { -# Auto RUN selection - RUNSMan->setEnabled(0); - RUNSMan->setHidden(1); - RunFiles->setText(""); - RUNSAuto->setEnabled(1); - RUNSAuto->setHidden(0); - } - -# Also use this for other options -# Fourier toggle - my $Fourier=optionsFourier->isOn(); - if ($Fourier) { -# Fourier tab visible -# musrfit_tabs->addTab(FourierPage,"Fourier"); -# musrfit_tabs->showPage(FourierPage); -# FourierPage->hide(); - } else { -# Fourier tab invisible -# musrfit_tabs->removePage(FourierPage); -# FourierPage->show(); - } - -} - -sub fileBrowse -{ - - my $RunFiles=RunFiles->text(); - print "Runs:$RunFiles\n"; - my $files_ref=Qt::FileDialog::getOpenFileNames( - "Data files (*.root *.bin)", - "./", - this, - "open files dialog", - "Select one or more files to fit"); - my @files = @$files_ref; - if ($RunFiles eq "") { -# We started with an empty list - $RunFiles=join(",",@files); - } else { -# Add files to existing list - $RunFiles=join(",",$RunFiles,@files); - } - RunFiles->setText($RunFiles); - -} - -sub AppendToFunctions -{ - - my $ParName=CParamsCombo->currentText(); - my $Full_T_Block=TheoryBlock->text; - my $Constraint=ConstraintLine->text; -# Then clear the text - ConstraintLine->setText(""); - -# Check how many constraints (lines) in FUNCTIONS Block - my $i=FunctionsBlock->lines(); - my $ConstLine="fun$i = $Constraint\n"; - FunctionsBlock->append($ConstLine); - -# Replace parameter in theory block with fun$i - $Full_T_Block=~ s/$ParName/fun$i/; - TheoryBlock->setText($Full_T_Block); - -} - -sub InitializeFunctions -{ - - my %All=CreateAllInput(); - my @RUNS = split( /,/, $All{"RunNumbers"} ); - - my @FitTypes =(); - foreach my $FitType ($All{"FitType1"}, $All{"FitType2"}, $All{"FitType3"}) { - if ( $FitType ne "None" ) { - push( @FitTypes, $FitType ); - } - } - -# Get number of parameters to determine the size of the table - my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateTheory(@FitTypes); - my @Paramcomp = @$Paramcomp_ref; - my $Full_T_Block= $All{"Full_T_Block"}; - -# Initialize Parameters List in function block (constraints). - my $ParametersList=""; - ParametersList->setText(""); -# Counter for function block (with out Alpha etc.) - my $ParCount=0; - CParamsCombo->clear(); - -# Possibly use the parameters block to axtract names for the dropdown menu -# this makes sense if we can use fun in map line. Check! - my $Component=1; - foreach my $FitType (@FitTypes) { - my $Parameters=$Paramcomp[$Component-1]; - my @Params = split( /\s+/, $Parameters ); - -# Alpha, No and NBg are counted in the parameters - if ( $Component == 1 && $All{"FitAsyType"} eq "Asymmetry" ) { - unshift( @Params, "Alpha" ); - } - elsif ( $Component == 1 && $All{"FitAsyType"} eq "SingleHist" ) { - unshift( @Params, ( "No", "NBg" ) ); - } - -# Add list to the constraints drop down menu - for (my $i=1; $i<=9;$i++) { - my $CParam = $Params[$i-1]."_".$Component; - if ($Params[$i-1] ne "" ) { - if ($Params[$i-1] ne "Alpha" && $Params[$i-1] ne "No" && $Params[$i-1] ne "NBg") { - CParamsCombo->insertItem($CParam,-1); - $Full_T_Block=~ s/\b$Params[$i-1]\b/$CParam/; - } -# also enumerate the parameters as should be used in the FUNCTIONS Block - $ParCount++; - $ParametersList=$ParametersList."$CParam \t is \t par$ParCount\n"; - ParametersList->setText($ParametersList); - } - } - $Component++; - } -# Set theory block in Constraints - TheoryBlock->setText($Full_T_Block); -# Then clear the text - ConstraintLine->setText(""); - FunctionsBlock->setText(""); - -} - -sub optionConfigure -{ - - use Customize; - - my $Customize = Qt::Dialog(this); - my $w = Customize; - $w->setModal(1); - $w->exec(); -# $Customize->setMainWidget($w); -# $w->show; -# exit $Customize->exec; - - -} - -sub t0UpdateClicked -{ - -# Read MSR file and get new values of t0,Bg and Data - my %All=CreateAllInput(); - my $FILENAME=$All{"FILENAME"}; - open (MSRF,q{<},"$FILENAME.msr" ); - my @lines = ; - close(IFILE); - - my @T0s = grep {/t0 /} @lines; - my @Bgs = grep {/background /} @lines; - my @Datas = grep {/data /} @lines; - - my @Hists = split(/,/, $All{"LRBF"} ); - my $NHist = $#Hists+1; - print "Histograms: $NHist\n"; - - my $FinHist = 1; -# First T0s - while ($FinHist) { - my $counter=0; - (my $tmp,my @SplitT0) = split( /\s+/, $T0s[$counter]); - (my $tmp,my @SplitBg) = split( /\s+/, $Bgs[$counter]); - (my $tmp,my @SplitData) = split( /\s+/, $Datas[$counter]); - if ($#SplitBg>0) { - foreach (@SplitBg) { - print $_."\n"; - } - } - $counter++; - if ($counter>=$#Bgs) {$FinHist=0;} - } - -# Finally, disable the update button - t0Update->setEnabled(0); -# t0Update->setText("musrt0") - -} - -1; - - -package main; - -use Qt; -use MuSRFitform; - -my $a = Qt::Application(\@ARGV); -my $w = MuSRFitform; -$a->setMainWidget($w); -$w->show; -exit $a->exec; diff --git a/src/external/MuSRFitGUI/devel/MuSRFit.ui b/src/external/MuSRFitGUI/devel/MuSRFit.ui deleted file mode 100755 index f54bd379..00000000 --- a/src/external/MuSRFitGUI/devel/MuSRFit.ui +++ /dev/null @@ -1,5742 +0,0 @@ - -MuSRFitform - - - MuSRFitform - - - - 0 - 0 - 582 - 502 - - - - - 7 - 7 - 1 - 1 - - - - - 582 - 502 - - - - MuSRFit GUI - - - image0 - - - MuSRFitGUI - - - - unnamed - - - - musrfit_tabs - - - true - - - - 7 - 7 - 1 - 1 - - - - - 560 - 400 - - - - - 32767 - 32767 - - - - - RUNSPage - - - RUNS - - - - unnamed - - - - layout37 - - - - unnamed - - - - RUNSAuto - - - - 7 - 7 - 1 - 1 - - - - 5 - - - RUN Numbers - - - - unnamed - - - - layout32 - - - - unnamed - - - - RunNumbers - - - - 7 - 0 - 0 - 0 - - - - - 0 - 23 - - - - Numbers of RUNs to fit. Multiple runs are comma separated. - - - Numbers of RUNs to fit. Multiple runs are comma separated. - - - - - - LEM - - - - - GPS - - - - - Dolly - - - - - LTF - - - - - LEM (PPC) - - - - BeamLine - - - - 0 - 5 - 0 - 0 - - - - - 0 - 20 - - - - - - BeamLineLabel - - - - 5 - 5 - 0 - 0 - - - - - 0 - 20 - - - - On beam line - - - - - spacer2 - - - Horizontal - - - Expanding - - - - 181 - 21 - - - - - - YEAR - - - - 0 - 5 - 0 - 0 - - - - - 0 - 20 - - - - false - - - 16 - - - AtTop - - - true - - - false - - - - - YEARLabel - - - - 5 - 5 - 0 - 0 - - - - - 0 - 20 - - - - Year - - - - - - - - - RUNSMan - - - true - - - - 7 - 7 - 1 - 1 - - - - 5 - - - RUN Files - - - - unnamed - - - - layout33 - - - - unnamed - - - - spacer3 - - - Horizontal - - - Expanding - - - - 411 - 21 - - - - - - RunFiles - - - true - - - - 7 - 0 - 0 - 0 - - - - - 0 - 23 - - - - Names of data files to be fit. Multiple data files are comma separated. - - - Names of data files to be fit. Multiple data files are comma separated. - - - - - Browse - - - true - - - - 0 - 5 - 0 - 0 - - - - - 0 - 20 - - - - Browse - - - Browse to select data files for fitting. - - - Browse to select data files for fitting. - - - - - - - - - groupBox7 - - - - 7 - 7 - 1 - 1 - - - - - - - 0 - 0 - 0 - - - 239 - 243 - 247 - - - 255 - 255 - 255 - - - 247 - 249 - 251 - - - 119 - 121 - 123 - - - 159 - 161 - 164 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 173 - 176 - 179 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 0 - 0 - 0 - - - - - 128 - 128 - 128 - - - 239 - 243 - 247 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 119 - 121 - 123 - - - 159 - 161 - 164 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 173 - 176 - 179 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 192 - - - 128 - 0 - 128 - - - - - 0 - 0 - 0 - - - 239 - 243 - 247 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 119 - 121 - 123 - - - 159 - 161 - 164 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 173 - 176 - 179 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 192 - - - 128 - 0 - 128 - - - - - - AncestorOrigin - - - GroupBoxPanel - - - Sunken - - - 1 - - - 3 - - - Theory Function - - - AlignTop - - - - unnamed - - - - layout42 - - - - unnamed - - - 5 - - - - - Exponential - - - - - Gaussian - - - - - Stretch Exp. - - - - - Exponential Cos - - - - - Gaussian Cos - - - - - Stretch Cos - - - - - Lorentzian Dynamic KT - - - - - Gaussian Dynamic KT - - - - - Background - - - - - Lorentzian Kubo-Toyabe LF x Exp - - - - - Gaussian Kubo-Toyabe LF x Exp - - - - - Lorentzian Kubo-Toyabe LF x Str Exp - - - - - Gaussian Kubo-Toyabe LF x Str Exp - - - - - MolMag - - - - - Meissner State Model - - - - - None - - - - FitType2 - - - - 5 - 0 - 0 - 0 - - - - 15 - - - - - TfsLabel - - - - 5 - 0 - 0 - 0 - - - - Final Time - - - Tfs - - - - - - Exponential - - - - - Gaussian - - - - - Stretch Exp. - - - - - Exponential Cos - - - - - Gaussian Cos - - - - - Stretch Cos - - - - - Lorentzian Dynamic KT - - - - - Gaussian Dynamic KT - - - - - Background - - - - - Lorentzian Kubo-Toyabe LF x Exp - - - - - Gaussian Kubo-Toyabe LF x Exp - - - - - Lorentzian Kubo-Toyabe LF x Str Exp - - - - - Gaussian Kubo-Toyabe LF x Str Exp - - - - - MolMag - - - - - Meissner State Model - - - - FitType1 - - - - 5 - 0 - 0 - 0 - - - - 20 - - - false - - - false - - - - - BINS - - - - 5 - 0 - 0 - 0 - - - - 100 - - - - - Comp3Label - - - - - - 0 - 0 - 0 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 242 - 247 - 252 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 0 - 0 - 0 - - - - - 128 - 128 - 128 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - - - 0 - 0 - 0 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - - - - Third Component - - - FitType1_2_2 - - - - - Tis - - - - 5 - 0 - 0 - 0 - - - - 0 - - - - - Tfs - - - - 5 - 0 - 0 - 0 - - - - 8 - - - - - Comp1Label - - - - - - 0 - 0 - 0 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 242 - 247 - 252 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 0 - 0 - 0 - - - - - 128 - 128 - 128 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - - - 0 - 0 - 0 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - - - - First Component - - - FitType1 - - - - - BINSLabel - - - - 5 - 0 - 0 - 0 - - - - Binning Factor - - - BINS - - - - - TisLabel - - - - 5 - 0 - 0 - 0 - - - - Initial Time - - - Tis - - - - - - Exponential - - - - - Gaussian - - - - - Stretch Exp. - - - - - Exponential Cos - - - - - Gaussian Cos - - - - - Stretch Cos - - - - - Lorentzian Dynamic KT - - - - - Gaussian Dynamic KT - - - - - Background - - - - - Lorentzian Kubo-Toyabe LF x Exp - - - - - Gaussian Kubo-Toyabe LF x Exp - - - - - Lorentzian Kubo-Toyabe LF x Str Exp - - - - - Gaussian Kubo-Toyabe LF x Str Exp - - - - - MolMag - - - - - Meissner State Model - - - - - None - - - - FitType3 - - - - 5 - 0 - 0 - 0 - - - - 15 - - - - - Comp2Label - - - - - - 0 - 0 - 0 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 242 - 247 - 252 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 0 - 0 - 0 - - - - - 128 - 128 - 128 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - - - 0 - 0 - 0 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - - - - Second Component - - - FitType1_2 - - - - - - - - - layout34 - - - - unnamed - - - - spacer4 - - - Horizontal - - - Expanding - - - - 81 - 21 - - - - - - FitAsyTypeLabel - - - - 5 - 0 - 0 - 0 - - - - Fit type - - - - - - Asymmetry - - - image1 - - - - - SingleHist - - - image2 - - - - FitAsyType - - - - 5 - 0 - 0 - 0 - - - - - - LRBFLabel - - - - 5 - 0 - 0 - 0 - - - - Histograms list - - - - - LRBF - - - - 5 - 0 - 0 - 0 - - - - 1,3 - - - - - - - - - - - FittingPage - - - Fitting - - - - unnamed - - - - layout28 - - - - unnamed - - - - layout27 - - - - unnamed - - - - Yi - - - - - - MINIMIZE - - - - - MIGRAD - - - - - SIMPLEX - - - - Minimization - - - - - Xi - - - - - textLabel1_4_2_2 - - - View Binning - - - - - Xf - - - - - textLabel1_5 - - - Minimization type - - - - - textLabel1_4_2 - - - Y Range - - - - - ViewBin - - - - - Yf - - - - - - HESSE - - - - - MINOS - - - - ErrorCalc - - - - - ltc - - - Life time correction - - - true - - - - - textLabel1_5_2 - - - Error estimation - - - - - textLabel1_4 - - - X Range - - - - - - - FitTextOutput - - - true - - - - - - - - - SharingPage - - - Sharing - - - - unnamed - - - - buttonGroupSharing - - - - 7 - 7 - 0 - 0 - - - - Shared parameters among different runs - - - AlignLeft - - - true - - - false - - - - SharingComp2 - - - false - - - - 199 - 20 - 162 - 330 - - - - - 5 - 3 - 0 - 0 - - - - 2nd Component - - - - Comp2ShLabel - - - - 2 - 30 - 185 - 20 - - - - - 255 - 255 - 127 - - - - FitType2 - - - - - layout13 - - - - 40 - 60 - 81 - 266 - - - - - unnamed - - - 0 - - - 0 - - - - ShParam_2_1 - - - Param1 - - - - - ShParam_2_2 - - - Param2 - - - - - ShParam_2_3 - - - Param3 - - - - - ShParam_2_4 - - - Param4 - - - - - ShParam_2_5 - - - Param5 - - - - - ShParam_2_6 - - - false - - - - 234 - 233 - 232 - - - - Param6 - - - false - - - - - ShParam_2_7 - - - false - - - - 234 - 233 - 232 - - - - Param7 - - - false - - - - - ShParam_2_8 - - - false - - - - 234 - 233 - 232 - - - - Param8 - - - false - - - - - ShParam_2_9 - - - false - - - - 234 - 233 - 232 - - - - Param9 - - - false - - - - - - - - SharingComp3 - - - false - - - - 367 - 20 - 162 - 330 - - - - - 5 - 3 - 0 - 0 - - - - 3rd Component - - - AlignJustify|AlignVCenter - - - - Comp3ShLabel - - - - 2 - 30 - 185 - 20 - - - - - 255 - 255 - 127 - - - - FitType3 - - - - - layout15 - - - - 41 - 58 - 81 - 266 - - - - - unnamed - - - - ShParam_3_1 - - - Param1 - - - - - ShParam_3_2 - - - Param2 - - - - - ShParam_3_3 - - - Param3 - - - - - ShParam_3_4 - - - Param4 - - - - - ShParam_3_5 - - - Param5 - - - - - ShParam_3_6 - - - false - - - - 234 - 233 - 232 - - - - Param6 - - - false - - - - - ShParam_3_7 - - - false - - - - 234 - 233 - 232 - - - - Param7 - - - false - - - - - ShParam_3_8 - - - false - - - - 234 - 233 - 232 - - - - Param8 - - - false - - - - - ShParam_3_9 - - - false - - - - 234 - 233 - 232 - - - - Param9 - - - false - - - - - - - - SharingComp1 - - - false - - - - 31 - 20 - 162 - 330 - - - - - 5 - 3 - 0 - 0 - - - - 1st Component - - - AlignLeft - - - - layout14 - - - - 40 - 60 - 81 - 266 - - - - - unnamed - - - 0 - - - 0 - - - - ShParam_1_1 - - - Param1 - - - - - ShParam_1_2 - - - Param2 - - - - - ShParam_1_3 - - - Param3 - - - - - ShParam_1_4 - - - Param4 - - - - - ShParam_1_5 - - - false - - - - 234 - 233 - 232 - - - - Param5 - - - false - - - - - ShParam_1_6 - - - false - - - - 234 - 233 - 232 - - - - Param6 - - - false - - - - - ShParam_1_7 - - - false - - - - 234 - 233 - 232 - - - - Param7 - - - false - - - - - ShParam_1_8 - - - false - - - - 234 - 233 - 232 - - - - Param8 - - - false - - - - - ShParam_1_9 - - - false - - - - 234 - 233 - 232 - - - - Param9 - - - false - - - - - - - Comp1ShLabel - - - - 2 - 30 - 185 - 20 - - - - - 255 - 255 - 127 - - - - FitType1 - - - - - - - - - InitializationPage - - - Initialization - - - - unnamed - - - - - Value - - - - - Error - - - - - Min - - - - - Max - - - - InitParamTable - - - - 5 - 5 - 0 - 0 - - - - - 32767 - 32767 - - - - TabFocus - - - PopupPanel - - - 2 - - - 0 - - - 0 - - - Default - - - Auto - - - false - - - 0 - - - 4 - - - true - - - false - - - SpreadSheet - - - - - - - MSRPage - - - MSR File - - - - unnamed - - - - layout25 - - - - unnamed - - - 0 - - - - groupTitle - - - - 7 - 0 - 0 - 0 - - - - 5 - - - - - - - unnamed - - - - layout25 - - - - unnamed_2 - - - - TITLELabel - - - - 5 - 5 - 0 - 0 - - - - Enter the label (defaul is run title from the first run) - - - TITLE - - - - - TITLE - - - - 7 - 0 - 1 - 1 - - - - - Title line for MSR file (optional) - - - Title line for MSR file (optional) - - - Title line for MSR file (optional) - - - - - layout17 - - - - unnamed_2 - - - - FILENAMELabel - - - Enter [name] for output [name].msr file (optional) - - - FILENAME - - - - - FILENAME - - - - 7 - 0 - 0 - 0 - - - - Name of the produced MSR file (optional) - - - Name of the produced MSR file (optional) - - - - - - - - - - - textMSROutput - - - true - - - - - - - - - FourierPage - - - FFT/RRF - - - - unnamed - - - - FourierBox - - - - 7 - 0 - 0 - 0 - - - - Fourier transform parameters - - - - layout34 - - - - 12 - 19 - 510 - 100 - - - - - unnamed - - - 5 - - - 5 - - - - FrqMin - - - - 5 - 5 - 0 - 0 - - - - - - textLabel1_3_4 - - - - - - - - textLabel1_7 - - - Phase: - - - - - textLabel1_3_5 - - - - - - - - - MHz - - - - - Gauss - - - - - Mc/s - - - - FUnits - - - - 5 - 5 - 0 - 0 - - - - - - textLabel1_3_6 - - - - - - - - - STRONG - - - - - MEDIUM - - - - - WEAK - - - - - NONE - - - - FApodization - - - - 5 - 5 - 0 - 0 - - - - - - FrqMax - - - - 5 - 5 - 0 - 0 - - - - - - - power - - - - - real - - - - - imag - - - - - real_and_imag - - - - - phase - - - - FPlot - - - - 5 - 5 - 0 - 0 - - - - - - FUnitsLabel - - - Units - - - - - textLabel1_3_8 - - - - - - - - textLabel1_3_7 - - - - - - - - FPlotLabel - - - Plot - - - - - textLabel1_2 - - - to - - - - - FApodizationLabel - - - Apodization - - - - - textLabel1_3_3 - - - - - - - - FPHASE - - - - 5 - 5 - 0 - 0 - - - - - - textLabel1 - - - Range: from - - - - - - - - RRFBox - - - - 7 - 0 - 0 - 0 - - - - Rotatting reference frame (RRF) parameters - - - - layout35 - - - - 10 - 18 - 265 - 100 - - - - - unnamed - - - 5 - - - 5 - - - - textLabel1_6_2_2 - - - Phase - - - - - textLabel1_6 - - - Frequency - - - - - textLabel1_6_2_4 - - - - - - - - RRFFrq - - - - - - - - textLabel1_6_2_3 - - - - - - - - RRFPack - - - - - textLabel1_6_2 - - - Packing - - - - - - MHz - - - - - kHz - - - - - Mc/s - - - - - G - - - - - T - - - - RRFUnits - - - - - RRFPhase - - - - - - - - - - T0Page - - - t0/Bg - - - - unnamed - - - - layout25 - - - - unnamed - - - - groupHist0 - - - - 7 - 7 - 1 - 1 - - - - - 0 - 0 - - - - - - - - layout16_2 - - - - 5 - 18 - 100 - 150 - - - - - unnamed_2 - - - - textLabel2 - - - t0 - - - - - textLabel2_2_2_3 - - - Bg1 - - - - - textLabel2_2_2 - - - Bg2 - - - - - textLabel2_2_2_2 - - - Data 1 - - - - - textLabel2_2_2_2_2 - - - Data 2 - - - - - - - - groupHist1 - - - - 7 - 7 - 1 - 1 - - - - - 0 - 0 - - - - Plain - - - Hist1 - - - - layout18 - - - - 8 - 17 - 75 - 150 - - - - - unnamed - - - 0 - - - 0 - - - - t01 - - - - - Bg11 - - - - - Bg21 - - - - - Data11 - - - - - Data21 - - - - - - - - groupHist2 - - - true - - - - 7 - 7 - 1 - 1 - - - - Plain - - - Hist2 - - - - layout18_2 - - - - 8 - 17 - 75 - 150 - - - - - unnamed_2 - - - 0 - - - 0 - - - - t02 - - - - - Bg12 - - - - - Bg22 - - - - - Data12 - - - - - Data22 - - - - - - - - groupHist3 - - - true - - - - 7 - 7 - 1 - 1 - - - - Plain - - - Hist3 - - - - layout18_3 - - - - 8 - 17 - 75 - 150 - - - - - unnamed_2 - - - 0 - - - 0 - - - - t03 - - - - - Bg13 - - - - - Bg23 - - - - - Data13 - - - - - Data23 - - - - - - - - groupHist4 - - - true - - - - 7 - 7 - 1 - 1 - - - - Plain - - - Hist4 - - - - layout18_4 - - - - 8 - 17 - 75 - 150 - - - - - unnamed_2 - - - 0 - - - 0 - - - - t04 - - - - - Bg14 - - - - - Bg24 - - - - - Data14 - - - - - Data24 - - - - - - - - - - layout29 - - - - unnamed - - - - spacer1 - - - Horizontal - - - Expanding - - - - 461 - 20 - - - - - - t0Update - - - false - - - - 0 - 0 - 0 - 0 - - - - Update - - - Use musrt0 to set values - - - - - - - - - TabPage - - - Constraints - - - - unnamed - - - - layout34_2 - - - - unnamed_2 - - - - layout33_2 - - - - unnamed_2 - - - - TheoryBlock_Label - - - - - - 0 - 0 - 0 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 242 - 247 - 252 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 0 - 0 - 0 - - - - - 128 - 128 - 128 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - - - 0 - 0 - 0 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - - - - THEORY Block - - - - - TheoryBlock - - - true - - - - - ParametersList_Label - - - - - - 0 - 0 - 0 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 242 - 247 - 252 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 0 - 0 - 0 - - - - - 128 - 128 - 128 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - - - 0 - 0 - 0 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - - - - Parameters List - - - - - ParametersList - - - true - - - - - - - layout25_6 - - - - unnamed_2 - - - - CParamsCombo - - - - 0 - 0 - 0 - 0 - - - - - - textLabel1_4_6 - - - - 0 - 0 - 0 - 0 - - - - = - - - - - ConstraintLine - - - - 7 - 0 - 0 - 0 - - - - - 0 - 25 - - - - - - AddConstraint - - - - 0 - 0 - 0 - 0 - - - - Add - - - - - - - textLabel2_2_3_4 - - - - - - 0 - 0 - 0 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 242 - 247 - 252 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 0 - 0 - 0 - - - - - 128 - 128 - 128 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 128 - 128 - 128 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - - - 0 - 0 - 0 - - - 230 - 240 - 249 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 115 - 120 - 124 - - - 154 - 160 - 166 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 255 - 255 - 127 - - - 0 - 0 - 0 - - - 0 - 0 - 128 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - - - - FUNCTIONS Block - - - - - FunctionsBlock - - - - - layout30 - - - - unnamed_2 - - - - textLabel1_6_3 - - - - - - - - ResetFunc - - - - 100 - 32767 - - - - Reset - - - - - - - - - - - - - - MenuBar - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FileToolBar - - - File Menu - - - - - - - - - - ActionsToolBar - - - Actions Menu - - - - - - - - - - - - fileNewAction - - - image3 - - - &New - - - &New - - - Ctrl+N - - - - - fileOpenAction - - - false - - - image4 - - - &Open MSR... - - - &Open MSR... - - - Ctrl+O - - - false - - - - - fileSaveAction - - - image5 - - - &Save MSR... - - - &Save MSR... - - - &Save MSR - - - Ctrl+S - - - - - fileSaveAsAction - - - image6 - - - Save MSR &As... - - - Save MSR &As... - - - - - - - - filePrintAction - - - false - - - image7 - - - Print - - - &Print... - - - Ctrl+P - - - - - fileExitAction - - - image8 - - - Exit - - - E&xit - - - - - - - - editUndoAction - - - false - - - image9 - - - Undo - - - &Undo - - - Ctrl+Z - - - - - editRedoAction - - - false - - - image10 - - - Redo - - - &Redo - - - Ctrl+Y - - - - - editCutAction - - - false - - - image11 - - - Cut - - - Cu&t - - - Ctrl+X - - - - - editCopyAction - - - false - - - image12 - - - Copy - - - &Copy - - - Ctrl+C - - - - - editPasteAction - - - false - - - image13 - - - Paste - - - &Paste - - - Ctrl+V - - - - - editFindAction - - - image14 - - - Find - - - &Find... - - - Ctrl+F - - - - - helpContentsAction - - - false - - - image15 - - - Contents - - - &Contents... - - - - - - - - helpIndexAction - - - false - - - image16 - - - Index - - - &Index... - - - - - - - - helpAboutAction - - - About - - - &About - - - - - - - - separatorAction - - - - - - - - - - - FileExistCheck - - - true - - - false - - - Overwrite MSR File - - - Overwrite MSR File - - - Enable overwriting MSR files - - - Enable/Disable checking for MSR files. - - - - - ManualFile - - - true - - - Maual file selection - - - Maual file selection - - - - - fileChangeDirAction - - - image17 - - - &Change dir - - - &Change dir - - - Ctrl+C - - - - - optionsnew_itemAction - - - new item - - - new item - - - - - parametersExport_AsAction - - - image18 - - - Export As... - - - &Export As... - - - Alt+E - - - - - parametersAppend_ToAction - - - image19 - - - Append To... - - - &Append To... - - - Alt+A - - - - - Fit - - - image20 - - - Fit and Plot - - - Ctrl+F - - - - - Plot - - - false - - - image21 - - - Plot - - - Ctrl+P - - - - - T0 - - - image22 - - - Show t0 and Bg Bins - - - Ctrl+T - - - - - optionsFourier - - - true - - - Fourier - - - Fourier - - - - - optionsT0 - - - true - - - T0 and Bg bins - - - T0 and Bg bins - - - - - optionsConfigure - - - Configure - - - Configure - - - - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000011149444154388da554cb12c2200cdce063c6bb073cfaff3fe657b81e5a6858428b9a19a634249bcd030c81d0ed2d3298924c1e1b81b220dfee3c452c0124f6bafb6a7f95a009c0d3ed6f9531012a90d08ad25255f36f94926a4d09c0e2b2136d0b9aff84b19847017002700170def1a9d218095b4df5bdae2949b631fb7db286be7d03b54406f49373186e05ade0001e814d571b2777551426bb93e1d98eeaa523d2a5e367296239734d2bf06403e90347c1e237667d33f832d8727146444d37d16143c0d7dab3d71e781725510e8f4746c43269799b4c2ee015b490d8052e4696b744f8ea874627a203f64da4635474560004dc32592e99f769c51995b59751adc994cf24f020d0b1cf37a0fff87c05fc011aec943b34e289c20000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000000ce49444154388dd553c911c3200c5c31f9b82428c58db80637e252e492fc541e1965988d1598d83cb22f21c16ad121aa8a11486e2cf3641c5ce6c96a3fdff1f3993fb9b16e8730c9ba1dc2fe089c24390100442467f1fa5d1d735f6212bec8899820c2a3961f29ed21aaefbf157b2deb404f5d9b8aa3ec4edea3962143e7389762b9944b5f678801b6ab8a2770fb323197e22ef28f39de55e58eb2840b3284b84775abe13f29f63e440272292600c2ac0680bbd8f2195e3f6e2e483d25df26c6957bbc6bf3f8510fc6aef45f113f01c3eca579cdbc94f70000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000000d749444154388dbd54c10d83300c3c477cba056bc4523b088b7406166114f3cc383cd347e52a4a13482ce03e90937c9ccfc12422b802f41c439c978d94784f8f382f1be9533900503e17c9f979d9680000cf1c016015a1bc28ffc0d1bb9e5d4db084b4f808c3afd531001376dbec16d602cf1c5f63a83acd5bde834b0fb58c5b5da6184aa467fe4683b6284ab7820044c99c7ae6d83ad01a5c895c4548afe0a9c267a02aacaeadce771daf22648da5290a8bf8fd19df26dc3bcc2ec73dc33445d1e2de9cb1fef235f1e212b28aa7fb8580ffe56e452af401190497001e10df320000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000002c949444154388db5934b4854511cc67fe7dc73c7999cb41acb6a2a22d28aa227f6448808a38248905ab80a5ab46a5154eb20dab4691591460815d42283a0508a088328911e584932a5e318448e363377661cefcc3d2d46f175291dea8303f77e177ef73bff87d05a33a6fb0f9e8cbfcc40a6bf6c456d4d559fdb3735d53874703f7e9f39c9b36d48a7219582541a52294d2cf989fe4838dcdcda5e595b53d53d95236794cc04af77c229cafb6b2af7625b035f9a5bdb37160406f078c6a145debc57b6c0c7aa95fbb0ad81f7cdaded3b0b02c378e231b096693c450e81b23dd8d6c0abbb8fded417041e83fb464bd11bfe4a22f915afb78fe0b215283b7abba9a9692db834ef6f92127c3ec18eadeb49a52014d2dad142680ddf87faa2f3156b81ae592706500a8687211281a2d07d61765e43291062428042c0bf42dd44da5a31142c2f7b44c5ba0e0cc361fee007b5e0dbd395aee0914cd6d67f5893781c92af2f52b9eb25745c462a8930159ecf37a93ffeab74dbe29ef3ee605b99b118c462104f8065413209090b8686c04ac2c8ea73647ac2541cce61f834d214545487c9468768eb2eb9012ecd532abf108e035a43ce197f7634385d0ff144db8846e3941787f16eaa0204b9de105f9adf663795d8d59d27e69e74052b9507693d19aa1d30128dcc3b520d7a116801467ef6e4e2201bced42a34fbac96e7bba7838dc98927c2b586d4e606c2af3f203ede2358b714a93538a03323bcb9d2928da4fd977f76b4dc9e3ec7223fab72b4fa5313cf2d5f82ec7d4ae9b1a5e40606c9748530fc7e7426c7f6b30794bcfaa4a2ae4d77ff75dca404c30073b4f64a41b6ff19233d7dfc183c0ad2440b49cc7f9ae4bbcfba7ca1deeddabc3f4988fc4f02758d64ac18c1920089c70dc86486d2ea8d5c7f5123bc62f0c2a9d982c76428c59c790100d4964b0c5b718a3df9cbfb4a03995927765371700dc52e7e412b3d13fd37f0b45234debaf34fc0bf01fe532119ee8d4b590000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000003f749444154388db5955f68d56518c73fe7777ed333dd3f67fecb74c722ed62f9071223332c5620062d0982a88bec22888aeac242322d2b2808b12e022fb4a0eea216155de46866641bcaccd4e2b464736ecef36f673be7fcfebc7f9eb78b6dce95125ef8c2c3fbc0fb3c9ff7e179bf0f6fc239c78d58de0da10289eb4d78f5cdeeb41877a86696b7b65cd62b3e7a7f63e96a71d755f16b6f75bfd4dc98eaddfe54ebe6ed4fb636599143d70c76ce5dd3a6d6ae777ad6eedcdbd3dbd935e2aa55e7b259ed4647adfbf860c63df3c24fed57e3265a9efec3b56f5e8808280bda08cac017df0f95c26fd7ccdbf3def13de95b9a763ff8400b8df53518e3d0da628c23954af2fabbdda5b1f178c5e707ee9fd192c4a61de7dcbedd2b5006220bca40ac61a82f64e058866d6dcbb86b5d335a835260ed34d839c7df8315f67e78aae387d3899739b5b97f0aecff5b6e46c170cf10f526e28d17d730a716acbd7a1b451cad2b9bd8b4aeb95da4f069e729a6c156a6c1a5f3214327fa79b82d4d7a79ed35df0560b462d8df71099c43ebb9648aa3fb5873642d22e01cfe95d58c8f8c73cffa25ff0b2d5585adbb32b4dd7b33b72eab4304d2ab16a7cb55fb8a3694f67f70bcdeb7329de02d5dc8ce83a7d9b05e7016ac58ac15c438c43acca4ffddaf451edbd2c2ac054d1c190011989d82df7ac7ea073bfbb240d78c567c753847faf605ac5eea33efa63904e20895235410448e400b5104cfae5c4c5ce3d3736e029af0a03010923dd66f914a9a847b7b06f8f0d12c99cf5a2964358df37da40e7265c89761e0225446211f433e0bc592259f8b090a152e9ec9521aae96881283d4db5578aecb376602fa634fc8a63b1ba84d41cdc21a7a33e32c58de40e602f40dc048ce90cb5b2ee50db9bc21288584a52aa5e1519c721090c5b73ed8b3641eeaf765526e47ba8b6cdbd84c55e0520c59af813f4f5ac42509228752102921568e2816f2b9001d68983b176c0cc490544d383900e08915c6abf0fbd9128fb7d59129c285224440b12c8c5584583b22e5501a4a639a919100ebcfc64bcd9e2997a469c4d231a963387caccc7dab1b19a9409d0f4b525067a16189cf585161fc04cd6268d011f58b14b735259138468218136bc2c0902bc8fc81419da57fcb4900df5847d72f05763cba883bea276f9e075a431439b4f68863431c5b94f250ca278a0c5afb44512d4ad5a0548a2f8f8ecdffe4bcfbe6b274ab81a17fa0cc231b660e85e781ef7b2493093ccf9bf4bdcbbee74d9c4df93f9f0941dcd753f97e61b8ca734fb4fc67ba92c9097338440cb1d284514c186a824011c53151a8d15a88b5a1efaf002e6cedb80cc64bd079a2c8ddcf8fe1c42102884344b056b05a30c6608d608dc1188bd1163132b18ba51a38085cc79585256ed467fa0f0f457af9307ab8bf0000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000002c249444154388dd5943d8f1c4510869fd99d35773ef0c705c8329203021001827f8090900810883f003111227506d14504fc03624840204182217300423210fa641964c9be1577bb33bbd3dd55d5d504333bc7c96b3b764badaaee19bdfdf4dbd50d4f5bab36c90f3ffefa515d4f0f5433b37a42d376c4a464cbccea29661911c52ca36aa86ea271e79f39f3a3c577cd62f5f1cf373e5f00d41be1ba9e1ebcf4cab54b5071edea3e9f7ef10dcb2670e1b95d3efbe4fdc7d27d7fe3167fdebafdc1b75ffd02f0e119e194942e0ad5b0899bbf1f72f9c279ea7af2c46d2f9a0e07dcf3bb23e82691617b55d50bef5fdce3e517aff0c295cb4f14163196cb1529c938772a2c8aa831a97ac2b7df7895abcf5f64ffd2b38f15752f2c9b96e5a2c12c3f2c9cc410cd94629c341defbdf53aa5144a81f9713be4fd7813cd8c939396a307c774216266db887b2bba98f8ed8f3ba865cc32967dc8bdaf889c1131624834cb96f53a707cd212a33c8a581155421c4aca725f529607ff8d98941885b65d11ba484a424a8a88106324e72dc23a58e1ee9cdf3d87651f6ad7a88ae30693929996ccce6cca64f71cb349c56c3ae12804521272f647111b3bcfcc78e7cdd7707742104248a4a4a8da6097f5072d36f62fbffe8979488ff718c02c1342220441d5b6089f5d208920a2dbad484911cd981a77effecbfdfb0daa365c611daeb08ef698f5e23b3b35290a49d2766119c84c95aa2aecedd588802ad475a1ae613a2d98c16452502d5455011c1988ddb7799c94d5ba239bb15a45168b6ea4ea094f1f21111d1fa1d9ac1aac90edc43124d6eb407147d570cfe4fc7037eba3bb8d42fd42b29d38c4440809bc606694e2b8f7bdcff330ee63ce9bbca022a828ee5b88c33ab25eb4e46cac56cbf1e44fabe0ec21aae6f19f75db90ba35bead8e8fe78bebf7fe7e701053e2f65f87e45c46e29c0ba5f8ffe64ebfb917ee1dcee982e2ce759edaf61f121ae0ff0b36cf4c0000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000003fe49444154388dd593cb6b5d551487bf73ee39378f9bf7a3a6e94b694b2bb65a1111a13a102b82edc0fe0d0a82e0d006670e041d8aa8d38238d18120522cad5207c596da121f55aad69b3ed2a4499a9b7bef39679fbdd77e38484c93b60a1dba266bb3f8f1b1d66fed15711fb1f03ed5643cfdc00dbcf96a73aa7db53d75e9a3b9b3c78f1e38c9dc9ddae47ec07137bbba7686fdd591ebd1e0de57b635ebd36f0767fb4ef0cd3b074ea2d681bf3e7eee485c8927ac78d224a6d9cad1c6e2ac234d2a586b31c662ade3d78e0f93a7fb8fd7b8f62951fb045d0b8f76deca8b873f0b2f77c217ebc169357d77c7cecdc49598cd63831c79ef738cb13c30dac7c46b2fad0a8364985f5e27f6319440d3b37875961fd28387cf3716a68137d64da7b5509486521b004e9fff83d9f926aa346b64015b3f4a7564065add20fdf8762fbf15db311bf7e0bd3b7497c7462c461c61a53032d8c3eeed1b7968ebe8aac8e737201c230a03a03ba0eca2b950e5f7aea768b60a8cc85dfb488cb118b144d172e1e073fbd83a3ecc86e1de956603be718ab8a30ed910f80a2eebc36e7a9cf9eb63349b0dac75f7020b462cce7b1aad82c32f3e4108811002f38b6d708afef65754077b60b102ba83765ee5726d2f4bb94315e5bf812d228e565672eea73ad63aac7588f558e718f5177876cf34a8412080d4b8382d7ca92d8b799b526b9cfb8f8e556910eb1071cbd93a82e43c367686a46f1c16045c42d1709cbab9911b91c31883526bc1fb60f9365c62c461c4e17da0d655c5a6cb9d6a6de9e347366d0b607a0003b687bfaecdd0ecdb4d8f4bb99917686d70ce03fb52a00ba80226d15a3022f4f674f2c2fe4770ce5396069535e96c9ea636340a6d03a146de70c896e739f4e43318717cfcc9318a4221622ac0c81a27d25856bedb3fdee6b922cf4ba45ca223aa1345034037f8216e3522dae916546968b532f2bc4015eade1e6b2d88388a4253af2f3037d746c452b10d86c7c7408621aae26ccccfd714533d31aa9ca2b33341a912630cdef93bb93e316229b5c11a431c07babb13440249d6c2fbed50dd859319ea93df32dbb117224f9ac684e011238811bc5f053b960f5e275a0bedaca05a89c9b29266b340c4d2b1344f36344054445c3e53e7eccc832c25bdd84c61ad234d638c118c15bcf70168ad403d4c8644294d912b7c9a206271cee1bd23cb0cdf7f779eeeca247fb60650dd9bf062f1dee19c238a02ce59bcb3048287c97cad17b1521aa50c6569b0d61282c77b8f379672fa0a57cc18a677332184d59193a442b59ae2bc47ac5b6bc5ede5a9a2245b6a6192983c6f216211b198da06f48e03844a8d542cb03c490860ad43298d6ab7d0457eafe591cccf2e4e4c5d9e9e10112e5eb884f7cb9d39e757dfb7f3fadaec95065a5bbc8fdeba8bfcbf8bbf01e870cbc9b35858b90000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000003b249444154388d9594db6fd44514c73ff3bb75dbdda55d8cdbb4200a4d4b5bd3284414a3084568dad81062a4120dbef237c083c4575f89a40f3e61a231a24f3ed912de08acb484b281a42c50ed65d3d2ad2cddcbefd7df5c7ce805b6ed72f92693c99c73e6332733678ea08a868753d9643291a8e607b87327933a79b2ef93cd7c4eb54ddbb62593eded6f5aebed4a1bb43118037373b99d8000cc4b838dd9108bd206a50d5269841068adaa6daf0e564a56852a6d10168461f8ea60299f82d743a532d8a632e615325655a14a6bb43648b95415bce171007a7a7adaa50cab427d3f444b85effbd1cececebae766dcdbdbfb9952eac3e3c74f7cdedcdcdca6b5b656a1f21968e087282951c2c6f3dcc4d9b3e7e66fdd1abd3132f2f75f9665fd3e3c3c7c0740f4f7f7dbfbf77f343e30f0f52ecff3009899f987a20f7bde7b8750ad420d7eb0020d15b59ec395cb431c3d7c00216c8c31e4f3790607cfff3238f8c357764b4bcbe93367be3d1589d4605916966571efe104bb3adea5bca409424d28354a19841058b68de3ba282c8837a30bb3048161b154c2b53ddada3abac6c646869c0307ba4f47223515f7f3b010a1d18daeada58662682849f09541ea657be07a88ffeed3f8fa16ae67eff17e63070d0d0d44a3d12f9caeaeaeb71cc75ea9044db9ec93091338f316c510c6f386d9122c7fb0f5b2d9bf6038f186c7e19d7bd6acdbb7efd8ed04c192e7ba0e524a826009cf7399d0af71e39ee0fa5c35e053150a314e45dcb5b5ebda2493c94627951a092391244d4d0992c9048e03ffced771fbfe73796b9ab7b7108d462814cacccc2c90cb3d616e6e5e394250544ad74f4de5989aca2184e0fcbe38813d4f513a3cf605b99221f34813ab11ec480812b5501f815a11e2a91257afce561ca6b57aec044139178d469a974d86a1a13f37cdac61659e591915be8604fbf67dbc4c309a7c7e61c629169f4c45a3b55d004b4b3ed7ae5da1b5b595d6d6d697ba8a542a455d5d9c43878e02b0b8f804dff7279d5ceed1cf42a8be582c8eef1bfafafa3972e453b66e6d780172591d1d5d64b359e2f10860313dfdc04c4e4efee1c462b15fc7c76fffd8dd7db4a6be3ecac1837decddfb36e2f9c50080948a64b289bb7727a8af8f03904e8f6632994cdab978f162984ea7db6ede1cfd2e168bed3e766ce00321366f4eeba1522a1cc7e6c183fbfea54b3f5dcf66a7c72e5f1efe1ea8eca7172efcd6bbb858322f52184a532e07a650289b7cbe68d2e971d3dddddff92caba21fd7d579dfccce2e305b593d1b648c414a8952cb230c435cd7fd1238b71af33f85d71e86e22fe4ea0000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000045749444154388da595cd4f545718c67fe79c3b7760669896f1624305044394882c2c289258a31235367161e28a85d1a50b57a64b57eaae24eac2855b13fa078864ecc684b882513a52c5548b16ac7c88c0ccbdcc1733e77471ef8cd836ddf82627e74deeb9cf79cef37e891fa125a4d4b55d8e33642965f30556ae544ab32b2b239b95ca552ba4d4b52b274f5ec8e7f3acb82e18f3d9612904524aa410a86097ffdc033f5a576797e1c24f0f1f627538ced0462ec7c2eedd247a7b3f0315d59f844085c3082110e5325208df0fbe55fd8de7cf89a6d37438ce90654969afb82e0d9d9de872f933a6d18e0eec8e0ec24d4d44120900363e7e64636989dcab57c4d6d7610b70b8bd9d522a8525a56d19c018c366368bdedc04c0aaaf67db891334f6f4fc4bc798e310731ce8eee6cf8909542a45bd312025a258440881012c8c0163286532a862113b1261e7a54bd4050c7f7bf4880fcf9e51595a221e0e63353793e8e9a17d60809d070fe2eedac5fbbb7769b22cd8dc44001883a58d411bc3eae424897dfbf8e6dc39ea120972990cbf0c0fb3fdfd7b5a62315feb6211e9bac8d7af79934ed33c344483e3a00e1f663399c4360603686390c6185f8a850542d1284e7f3f0063376ed03e3b4b63a582f13cbe3a791275f428854c063c0f7b7a9accbd7b00741e39c2bbc646c8e51081b4b29a5c4a299a4e9d02e0d7fbf789a7d358f93cc675a96f6fc7397d9ab633677c00d705cfc3a452ac8e8f0310efeb23b7b484010cf88ca510584a11efee06607674946dd92c3a9bc5b82e52a95af07428049e07ae8bf03c542a05c0f6ce4e5617176b8c2d13e8128ec789b6b501907ff9125128604a254c2804c5e2a7b42895c0f3fccb8ca19c4efb8c5b5ac8d8363baac0da1844c0b86af54aa1a4f41720b5fe94dfc660698d34c6afbc2d955a0cfc5af0300691cbe1cdcf0310d9bbd707550a2b28dbad85b3b59ced3d7b00c8be7bc7d7e53246eb207881c64a2972333300b40c0e82945801ebad8c8dd648295141efb00e1d0260656686ede130d582933ad0584989974c02b0efec59d67b7b6b7294a6a6f0e6e6587bfb96fc9327a880b17de000e1c14100e692499c0058578109800b8f1fb3383606c077d7af93efebf319e7f3642f5e64fefc790e84423e687f3ff6952b00bc1e1be3dbe9692c29315aa3ab5921c07fb6526cdcbac5c6fefd449b9be9be7993b9070f084d4c60bd79431b10eaea420c0c1039760c006f6181b9dbb7f93e164308810ea410c3b19839dad949241cae3d9d860642972fd3fac30ffc9ffd3e3acad29d3bf48642d84a218460796d8d9f2727fd74ab6a5c5bf93c6a78983fc6c791c78f93e8ea22dedaea477f7e9e959919fe4a26d9f1e2058722915adbac32d6c66055b42ee50b05bb311aada5587552c49f3e454d4d510096c36136ca651aca659a6c9b56cb426c01ad36fc0febeb54b42e596b85c2c862267341030df5f5ff391daa7b34e8b5cbd533e0377afc69b392cdf2767999b54261c4d2c65c4d2d2e125f5d1d92427cd130d5c694b2a5d28836e6eadf44cbf02c068658550000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000023b49444154388dedd54f68d30014c7f16fd2ac71eb562b1b76b021ab0c640c598720881e36f02244d8403d88487af5e09fb183f71d15c744c483909d77b1d0c0f030eac59b87ce8b30d0669b75d35517d7d4a66dfe78a8741b5dd5293b0806dee5c7cb87e4e525117cdfe7200ef140d47f1216144569085f0ea5545146f3cacc9e5dbc98f813b8e18a17ba52aa9d439b3a99255ad85417ba52ea5fc3f391d488e3a2dd1bcb31341863ea4a804eb9a0cd47f68fd761bd2319773dffd9ddf3ef091de961690d2c37cc9d0b3e87e592a67724f7858b007a682e8eefa413a7d7228edccbd21af5cadb61ae9da9100c789a1e9afb6d5ce0f2561c414c9fea9723c7a352d3c6ad6285e7af0570ed8452ba3afb6bf8d2974dc460a4450e012005e0dc89ed0663a35600d56a151c0b6058b1af677e064bf8de38ae4df59b5d3bd977a63f7d8dc6c3adb506cf876af1a389202640340194b2da14d5834fe340ba618f75e989d679b447edefdece5ebd03d75acd00a38a73c36c8a4a8f6f83380d241be1c0a3110287d283fd51a41dcbb8b8ec4271c504668059c5bb6900e8e2c33e600cb805f401268218dbf3cdd3850769da7a47068eb5eecaf305d8d82c41691dbc4a2d94daa0250c8850fa602288a38a3f91d97b0d7c6f9ce24af6cd6a5f241695eb71bb0cedddad40ac9e551cc87d2e836598c0a8e24f64a0c9474861d20486b18c4c7639879107ab0c7675bbf205c8ae97c8adbe05cb48023185c9fa43dd7314bbc6c27df5c7fce288c1daad574c00037801ccec04ebf0ff3fc881c3df0122e6e0f16d7121140000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000027249444154388ded95df4b936114c73fefebfc91ad7cd72f35a2e6af6976b3821002c95d54173d928a6517112d22080451bce84fe832af03dd455751294c08ea620baa9b88d68d6939b7a05a3ae75edd66737bf7be5dcca653340dbc087ae0c0c339e7fbe11c78ce7924c330d88923ef08f59f044b428875ce97f56ebba9841eb99816c07abb768cb17933afc247017c5a8c81e68fadae2d835fec772bb2c4d0b1bdd1b65b6766693e594975a5394fe07917e2f19b38eecf753edda0fd5ca435b829f899e2b6cb129ebb2de3cad9d3351417156edaeaf3d7e3dcf336a89a4ed5c5f956756ddc0430ba67c48e6e783a1afd8a7f5ae2c98339c6228700282f8d71a9f11bf5d68328fb0ee484d69a06ba66fdcac30fd5c380635dc5742d2a487200508020c803c0888877040146cd4fadc00dd07b2ed8c28afdf8919c38a3a519f46acc25648788777af3c197178691e43624b95724aedcdfa8f5d1dd8f140cdd535721d9ed35a539ff6428c5fba9b44b2c5e75e6833be7a248b243fcbce6db105aec6a59be2a48f2d0896a8b72d89275a809783b1ef561e8bdab352691bc6ed90898850eda31340f263398b295c693904c65e3258550b8cb624f670c0f002915f494fac701114b377d18ba132d4e7da54453ad448502a9cc8a9daa82a65a89f23209b44515437714d86cb63fb1b1e96edf27ce7f8944636d45256514c8a065f22d18867028a082e110da1ddf96475a64ba5d6492ce4020c0cc0224d32b36390d91ef132a86e610996e1f6c735708a3cf859e7286befa998d414a83a91948842700da85d1977b00db5e42827e17bae68cfcf013985e221d9d00700afabdabf3fe6abb2dc35dc483bfa1aeb539d2ff1f64c7c1bf00249101a1f694e3ca0000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000003d049444154388d9d955b485b771cc7bfe7e4e4666d76cc6c35316a6493d43af134bad9d5871a686765945a3a18658345287bf0654b614cf6522aac0f9badb5b0be6c6bf230f2d23253ac506869ed982dbde1d9c6d84acd929ae8b471e6e45c7339c9d9c316ebad78f9c11ffefcfedfff87dfe57f21344d0300100481f56c74f42e6db55a6e170a1ad3dedeb4e686228f5c97b6dcfc6d6d8d4ca1a0ad2ba43643b55a2ddd04014892b26aeddab571afc9643c05a06ed36092fc2f41515c0ef6fb47bd36db0ebfd56a79a1dd0c58146564b3790882b4e81b18087aebeaec7eb7bb1e1c276c15ac40961588a20c00e8ebbbe8ddb3c7e5dfbf9f01cf2b98987812286a37550a4150204969f0bc841327ce780f1c78d3dfdaba0bf1780257affec49224e1db62c4326439039e97d0d9f9b6dfe5aac5d4d41c2e5d1a611716784f6fef316e4b11cb721ae3e3bfc0e5aac5eedd4e44a3b3b87cf9260bc073e1c2496ea9764df0ad3e47b7514f30063d60a0106dfe22160080e9c82452a94a1c3ab417d1e82c82c1ebaca6c1130c9ee656329681aff43a9c96520c37ed0353be4b0fbc42418c007f9caff94497c7d0033389fa967d0885ee201c8eb38a92f18c8c0cac82020051bc82811e075db5b31039d895a3130903645e87329b0e966603c438409a74b833d582470fdf4232fa1893dc8eb2b5a08b4f4471f2ed870eff079dbcf7cf78099effa3efe93a1b0f3c3d57d351c590b7cd8d06c06c0044027fff2c23ab681067733e009c06849a3e8f712bc18ba7a2daaa78f56a168f7ea7ce779d8d070020c169acc2e7015945219641f8ba009bc788ca660aaec32583af779afd469a8c3cecaf665646be087ed598c1c2bc064ed09e157d29491bdc56a22217cfe1fe9534bbad1c402e07e34e0d543e0f63a986fa77f4346526865fda3c51062ab667515d963ef5d5117badbd1c4c7383d2812c89b19b3a161a3caa9c4f422c60e61eb87412be7c01476a5bd05dd3a0396f7ce6e83ef8753cb40afc38563ae6ae943a8eef5da061c6a730eb31395d8a07bf1a03aa0adf7b17e3dc5fdfdb918f698886a9d3edfdb10080c06fe71c9146b7ea5432140360355848eb8e0e8ddb071987d45d62023da79858394b0d7dfcc374a0a8915279280b2a12491d5bf4852388bee1ce38958c6eed52f4df98e100f4fc3f00a456960d89e78836d8d3cef9a4e9230063dfbc5f45d3a519468ea950322f69de46ecc9336a4c1373687b8df77ef9ae7d584faa136e074f3f9d24a1645f940158728e37f2e70d1eb33b2b2cd989e3adf37431574120f0dd5d5be8e48f334781352ec846c00070e6b09d2933e5869b2b046752d1839ddb1ed011f0f58dcc704bc1ff02755cb448a18033c40000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000019549444154388da594cd6e82401485cf1dc6f8205d1a9b98b8eed2751fc0b7d37d7d1013928a8b26f60d8c69b448c90c73baa0a0c0f0637a120284e1dc73ef7c2024b1df7f121d0ac31d96cb57e95ad3104944d181f732266392181e8f5f3c9dce8ca20357ab3792c4d043f98a05812008044add1ecfe7cf58af379d9dddcb6b0c002282200800e4a3d86edf0160b0b9eeacaa14b22cc362f182f3f91b974b8cfdfe635062af719e363f2ba510c7099224ad8ce65f894508e71caed71f28a5a094c26c366d50e4a3c66b6cad83b50e719c204d0d00603279f23c8fffba9862bddef0debcd11b99a74cd31424311a058dc243a869186719cb945aeb928cbafaa8a98c82248c311091f2e8dab02e6a2ac6cee5e67d1a424d258e3159e5e53ebc0a6a8cc9a0b582d6b79cb5c416a48074e526fa54a7663c1e81d4b0f6b6be342e4620428848eb48daa821f3f72ac661b84318ee5a5b9ecda6e5759d9aa22b6b5dd3b8ef5f5b7c696dd438e74a420a0dfff8d14e4d5e0095c40f193f42cd83890b6a58a1c6d7c560e33a35f7aadf033dbfcd427dd4f8f40bcc2c550346d4fe540000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000002ab49444154388d8d953b6854411486bfb9f78680c6204202e283588845445704254acc8a36a6b2b7b0486d2104b130b1b15110b14a9a2882a5165a2485882f108455221ae3ab301811821a13b377ef6bceb1b8fbca6677b33f1cb8cc9cfbcd7fce0c33863aba7af5ce0d20533da6caf4c58b67cfd7e6aa6a3dc45a8d8e8edf1e1fbfafb51a1bbba7232363b76ba18dc27cb8d9bbd9315c3686ccb35fc7362f751ccd0c0f9fc1f783550b0641c8ad5b0fe9fcf7723adbf5e2af2ad37bcebd5f5341499e1fe893edfdc7331d3b76b27457e9ebdbcbfcfc42dde4bebe7dbc7cfe23b3edf42e56be7fcabebed69b3d7861e6405d309d5b32dd877a0088ac0fc0dcdccf86ad8a6cc886ad1bd9d0bd87f9371f338df2bc483d344acb3e31203c7efaa02114e06456d3fc30264a9c8679e6d1f57ecd0e0d3485cd7c1b6a3a9fcbcd323474caac72ecfb82c441a37fcadabfbfa7fc1d454a92082b2b3e8e93ba9e9898d26ab8e3172c1a054da356ae6b705d07d7adb4e2f0e15e2626a6b40a2c4814348d7a32863238979be5d5ab99b273002f085b6b452d1428b641181c3cc2d2529ee5e53cefde7d05c0539155e56a21063f86c482142bebaae7d6608cc1750d8b8b050a8500d7adec9fa72a48148228fa270fb1b4ecd818b05689638be7b988547aee21828405f4b70fb15d17aa0a715c3a1505c230a1bdbd0d550f6b2ba652c78bcb683e6c09aa9aba0cc31055686b730110518ca96a05d622bf97d785964a8f63258aa2f467cf452475992482e354f7384c90286e092c02719c608c2987e3388828ae6b4892caddec51dabc16646dfd8bdd18ca0b95c10b7f1d0af988f6b6f54f435cb5b9a5a356edb25ade95c9cfe6d2e06eedda943404668b7794882d6e60fa4a48f19cd77b9d3c802b935fccdaa98adebefda6d6969ca66e537865ac16ee35039694cbcd92cbcdb6925ad67f2579adb1850abe460000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000049149444154388d95955b6c944518869f99ffb487eef66f69cb967ad10a36f180161488312660823131206a888844b6953b1b0991182f38085c34484c4189180e6d4940b83042d110a03156083448a2e5868294166a0b2d14da6e77973dfcff3f5ed036b484aa6f3237339327ef7cdf9777040fe9d0a113a586e16dcc229608a96c8142d704caa555b96affd2a56f6ee731da5cd7a2ce9c6ba3696f950010a3070d0d3f465d5dd406823e3b909383df6f21a504c0711c52f1388958ac359da4b2aaea9dd689e085abea5477570f6da7d68bcd752d4a00ecdc79306a04647d41718450288869ea689a0680ebb818a681a66924e2096e76760c0e0d38b3aaab3fb8fe38f70b57d5295953535fea48b7b6a038826d87b17373c8cf0b93678708858218a681937500985290474959992db44cfd44d8da1dcd2abaf1980268da5b25a4eb2656dbf9613b18f4130cfa098773c80d87b04339b88e4b61411e81800fd3d401881417915f60cfdfb2e59b8a51e8c75b4faaaeee3bf4f4f4f3d2bbb50a40a6ddcc127b4a3e8661e0f399f87d1621bf9fdc6010cff330759d40c04730e0c7efb3300d9dd2e9a564b3c32b47c143b1240303c3a45269945200e852aa52cb34d07589142010689a462c91c4f25958a681a73ca4940821504a11298e904a25c71c5fbbd683e33864d359e2b11800d23035344d4308c1502c41f7addb74fc7d93bb4343847302189a86a9eb63cb320c4c5d279dbe3f56df96c3d5654ed6211e8bd1fedb1601a00fc71208f160eafc3e0bddd09140382787a06591ca64d0751d5d4aa49428a5703c8f6432f570efaeffd9b8563cbc21fbfaee5e775d1729250383c3643359345dc3f55c92990c9aa661681ac6885353d7e9edb9493c9e796496c781fb7b078fdee8e804c0b20c1cd7c3f51e34402090234e0d4dc3320c745da7e96413c3c3eefe49c1f1b8d874fad7b383e97416bfcf429362b2fb74767472b1b58d9292270727053737ef1beced8e57fe7ce418e94c169fcf04c0f5140a85e779789e47d675b9fc573b5feff896f2f20ac2e160c564600da0b3b3f572d05776b1fdeaa537ecdc90af706a11baae21857810264270f2f809be3ff0033366bc4049c9340aad7bcb3e9979e58bf766074a0ffe3edc38113ceeddf3e77f649b6676636124b4243f2f50aa6902905cbd72a3399b35f6cf9933af359d4edbb6bc5d5f9e3c523ab722c440673b6db7fc0dcbeb6e553e627bc39eb3ead515bb14e09bb4c023faeefde2813b17d6a964db36d57ff86575fe335bed5a563c2e3f2440cbf92bdceebd0d90aafef294aa58b44d4d064edc674dcb9146ac3c9bc0f36f317df6d33c372d19ad5954fc48388dea8905d1ddaa7cc1c649c100eb5f8f440f7f3a53b97d752a79a946f51f9aa77ea90eabcf5f8bd40388ad072ea83b7713f4df8bd1b069f1e4b33641ab5f89442b6615d57fb87e0de9fe9b242f3672e1741b3fb5061b6457cf3d4623efc5b7bf52f0e09b59b8aaee5f5def38dbdb70fa5c5fe59e0ddbb18a4a08cc5cccb3739f4249232a13c9f458e431921967ceb5d1ddd5f39f5cd7ffd1d7d072beb772f7ba5a1c7f3efb8e43b06205624174b74a2653a4efa7c7a5d3ffd5ca8aa9f57ebf8ceacf2ca7b33775f41f5687e4181c28b9610000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000043149444154388d8d954d6c545514c77ff7beef992953a04829691952401a44890944d2f8d584a5a189bb26ee202a316eba926008892b6263a20b17ccd25437268d6b5335418d2921f801a122525b18a14c69a7d39979f3debc7b5cbc692d20c849cee6dcfff9dfffbdf79c7315ff63874f8a2f42179013c0185612a17cf1ac0a1f97a71eb530784a3a8161631812a10fc81b81c4501198159814c3c4a50fd5d213110f9e921c30a214a3394f0a3d1b710a5b8cda964fd01a4a4b1637e6b594ee99787e59cf44891a1361fcf2476ae591c42fbe2f79239cb135c707b69bcc91e760603b6c0884e55a8c91141ef82e73775b7c7541f1c334f5e5d03e97184e4f7fac2a0f11b7957e90f5e4ed23fb5beeabfb6d02c7103663f219cdf62e1b6963a7e7221cc7c26033351df2d9792b2a2db99f8a70eaf74f52e57a9de0115b73ecf01e715f79c64621acd423067a5dfa7b5c7c5713b4fd40bfcfd64e4514b7787e77c0eb871237e326c744185925d3ab0fa514a3852d267b7097a2112bca958867777a049ea6d684cb7370f106cc96c108746db0e9d964510d6177afcfc17eb24a31baf38474ae573c1c3852d8d70bad44b15885aca7f05d8d11f8e3365cbf0337cb3075ad45b91201d011686a21dcab42efe6840e3f29186118c03e7c527c6318ca677072be62b99eee94f56c5a09342298be05cd388dc7cd3a819b01a0160a3f5e35dcae68ea9143e02947aa0cf5bd255fd8ede2efcb78a8a8a558aca5049586c5bd1aac84506da4b10ea7c6e0804d2eb03102df5e365c29596b8f94f55122f489d065033911f2be63580eff05016b9b00584985a32ffbf43de521c0d4b584af7fbdbf0d7c078c9017919c9d9834d88c61a10a6b35b53ec16af0c64b2e3bb67ab412f8e6b784cfbf57ac84faa10e1349096c11aa02956a6861590f800031c2d66e4dcfa694e2c275c3973f29c258afe1551bdb0c01910a8aaa6d600198ad3591ac87524a1051a97049d3b4d25896a2da80f357d34ad0ff31652a3504cc2cc282be785685c630596b482c2268a5b034d81a6c2bf5bb558ba93f35df5d81b9721a731e7011a152333130592a3aa19dde0b13b526efd59bb2a77ba342ad5723902431956a0bad3459df2791fbe58ac09d25c34a2833c004b41be4e731b514276aacb4686aca34c978906d7bc6130ef4c5bc7628e0e80b01837b15397ffd3a2471c85ff3ad5a2b91b152d1595a236e0b1b5f6ed8c55f667594c40d7c5708da89aeebd1329a3849ef36f052f75d218e1a4c5d9768a9ae8a20e3ab7cf79de9e977252fc299cdd9e8f8be5ec9f4776b1cc7c1b66047173836cccc4318431c35992e09976e24f5f9aa730e385d2a7a0f8fcd55dbf58ee404463c2b19edceb70a7bbb1bceb68db6f283008046a3cead722c57fef6e35b8bd64c18eb3190f152d17bf4a05f6f8513d229c2b00843266dd3bc88a4758a99052641264a45f7c9bea607adf74df145d86c443a4040a40ab2502a3a8ffd4cff01b1e10a7293d99fd30000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000002304944415448899dd5cb4e54411006e06f865114af3131021a160671e365a16f6074e9d2b8d52089f125e6397c099fc157d095181315508c1708a00383302eba8ef4f41c06b4929399aeaefaebeffaebf4e1f0d6446fc8338e1368a191273622b9cf590fde8e27071ef04d602c7234c279165d6c61b7006f245f3b966d788c0d6ce3c5dededffd192ca1d30cef6a59b9609f27cfe13be6f11a37fb0b80299c4633077b87c99a2259ebdaf03c087d09961f4a749cc251344ab66f6a8a445f2b966d7819204d6cd614e8b3ba8998c1497be28f85afda7f88db386750e859dc91a66aa412b9ceaee2137ec57a2c4e77317296305f9cec093ee32d16d11956a0aec8b138d948f2f781cf6239c0ab9cdd830a94457a01be5d80cf65cc972a700647b2ce72e1f723b4818f39f36ae33005ca222335fb9b588bdff2451d7abf94cf65693c2732df23d9d494e0ad21ac9f611d1dfcc6cfec041b92365311bb10b103ec0f12f9aebdbeee482d588fffdd88b9214dcf4a10e9b35283a7c5ba156c97a529f911c0dd343d6d788533e26aa86399f7f2bec1be5f9366bf4a6e4ab76fb5ff00b7c23730349506f702601157a479ae6c42ba3d37a516f4a46b7d1a972266357c03ed6ee03c2e487dfe1afeb522ee3ade4b42f78269f55693da583ba22d49b4e8abad489e94c4ad6c1cdfa489da09a04ec48b75edb0b422a8abbfefe5098ee3887e117b516ca8b532d03c714beafdb424de4a46e29f6cbf0f7d03a3d2676f340aaed947c8ff2950ed551f9c9e217d1e667f0045acd1dd3ebdd4130000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000038249444154388db595cf6b5c5514c73fef4766d2264da631050b46a2558a229404b156ba70e142dd982c4411174a0b5d360b8566515c28d1aac5a62e142be44f502c2e249616ab062948b4859aa84d6968da24f3266f6632efcd7be7be7b5c4c7e27820573e172e072cee79efbbdf79ee3a82adb31dc6da102cebd38bffbe16821b33a92cb797d8b35e9193af9fcf8469f6505fe73c6ef9d1eed6bded134f54a7f6fdf91d70f21c68edc4b529bc6a9e10bdd439f7c7ff1dbeffed0eaa268a9946818a67ae187291d183c3fb055c6aa8aa3aa3c33f8dba61bfcf9fd03cec79f5e1a686b6f7ee7c5e79e287476b42092618cc5188bdfe472f68b1fc3bb738b3d9f9f7ee9e65a308073e8c4b8befdda7e520b92412250295598bb3ec90b4f3fc0c127bb71802c538c59051b638912e1d4f0c5afcf9de9efdf08f60bcd3e8f3cda8cd806f4d6d5dbec886679f3c85314da73a8824823e8c4c89ffc7ea34296296a15df7798fccbebe3f0378ad8905ffa762f6fe0db2511a205c3c44fd7e8d9bf87dec3bd9bb43e76f61a8b99cf076f1da41a432c5017701cf8756c868f3e1b2bacf577f6be31a6fbbadaa8046576e67dda77e5510b6a2d995534534ad5847d0f1638f6ea635cfe1bc21a9423a8d521b85964f2f204778a77e0eacbce8a14071e6ee3fcc9c711a0584ad8d39127026a066a4923b8568730822bd38d2c130395b2303d7e8b606a8ee6bc070a478f7ff52c7009c057ab08500382cca1584c6969cf315f81bb25989987b0aa04654350ce28570d335321c1d41c2ac9ead9ad0538be066c51a00e78bb734c5c5fa4a99c6376014aa1128442b164982f09f381500d6392b0066a01c88c12546350e5cbe1fefe7367967e9eaa9202b185990588fc56a66e27a402621491f5d388c55a0baad42261ae5cc7e45b604331f3330b31301d36b4cc1ca85b1729a7a4e2929886a689402a4a9629990841b18af57278ad6d0d66b601eca098143a73b04ba1c381fbee6f222cc658944e4f087d21cc0b959694a852673188616f335621cb12acb58cceae7f9ebeab4a570eba7240ebea3da4dd4d248941049204441cd2d425497622d2449208692aa4a941c4307a657da174ed1685de75c1f33c7cdfc5f3dc15ebba8db565eb79ded2ba0b763dc7e55f1a88e7392b419ee7e1baee12d4c5f39c25bb3a37827db55b935d175cd7453523953a71bd4e14c5c4f598384a88e2987a9c20598611b309ecf0d0d0ffd6f4f4c6e08ad0ce7635d37f00f4b819f9e3b0a8920000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000000dd49444154388dbd55ed0e8430082b892f35de3ff5b1b81f8ac1c93ed4bb6b62dc269452492624d183aa5adc931455357fd7f1240500962cb115dc3af742f1dbd24a7a8b29c51e7347c494e2275d5d14bf253c887fe5b100187afc887834c7198aaaad0301278fbf69cbffe6d89115ac2de85972dbe31284f47c7e3415333fafa9b85416d54445d564cfaf631d161f922009dbd77b8059e8ccd756756b217f6a2a049048269b85c7b9ef23d2a988c5484255bb85b398a1e28cb4b6208bb94c454886b7e84459eb06d8ba5d53c7baaf58f5f4c3321f6f290ef7588b670a1fe923b36c6e54b07f0000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000000f049444154388dbd926b1283300884978e970af79ff558f487a2481313b52d334e1ec2025f1092383355b5782629aa6abe667f920200532db0e5dcbaf744f1dfd40a7a6a4315bbcf9522862abed3d547c54f0537e15f3116005dc6b7847b735cb3a26a73a78003e36f62f9df1cbbd512660467482e332ea19033ceb7a662e4f19a159784280b155593353efbba59fc4882246cddaf0e66a133df5bead642fcd0540820514c1684dbbd9fa34daaeaf90c100180888724769fbad57c5e8b88998b67e6355147e35d3412efa271cd4c7b5ce39ee43e15aac5c8f930fc51c039ee4c177491b101db1806e876101a33693efc1b7858d21f6a6c70020000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000010949444154388da554410ec3200cb3d1f6831dd8ff3fb757cc3b8cd034a4946e919020c48e49002231b939b38025abd279d0252300dc6c25ecd415016f6cbe989c0e9209636928057427359fbe4b1b310987b900b93158f3657bd1b55b9784cb2bf152d4c0f709a6dbcd2fc219b3ba2e5be1a6ecf79b95600b00b0ca6a6d32d3124dee65be9534f0992127c48fe8a0117b5f56130b38aa577807e391e9023395abcfb434b29506ca27ce92e57f4cfb33f4220830284b319c6cee04f85a7bf5b1071e1245d8e6ece5a5c62ab16e37535ff24e6a22a6c416c4ba1d44aff1d2c41b3110fb26ba1fcf9ac6fe7505725609558a98bdb9201bb313f59a2c6116890f129d63ae90fe83b944fc0152038ce6e09860ab0000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000014149444154388da554414ec4300c9ca958a4151202b1081ff777bc83e7f02aae3d7042e28084341c1ab78e9bb6dbc552d4c471c6338e53a2610a73b6022e325317f07cb472e4dc39ae1a1d80bb449065f3b0024a005d0067c0b91dd626a96429518770400a680d155991e26c046e49bc16b84b5e0238461fd377c56ee2a20266c3b7c37eab2c042897604579cf4830771f515f9adb699ecbe4b51ec04db976bbdb998552c58a11b8b06f514c6c3fb7819d7932f5e412756fee45604ebe616d7a01f006e0b589181435930a78cf0cc6a6363d29f4f4687e1f7954494c007056cf8fd229394fa5324eaacd4609c757986a5efb4df7418d66ea8a5df318be687ac604aaf83a3dd92ab00771fab5523d01e03bc56d377a90e7f27f609a9d4be5014cc7a5520e66ea607a5c0faac0bd734edb674c0f9700afaad80abc14f43f677601ff014483cede45a9c1380000000049454e44ae426082 - - - 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000015b49444154388d8d554172c330085c142739f49a837aebff3fd67ca097b6d3edc12023404998d1c8b660592f48020aa30e74b25a7fc51a3a5bf82672e0573901409ee0be37007f319835a8d96991f402e0ac493f9ba3d11c9dc188c764cbbf0be06f00d7b1a611e7e84580e81c22739a865deb9f029a52fff18cbd4998839ddcf3a66350904595c8acf7ead9132d3c3a057d4864524400d35bc2fbe4d700403af795bb92ef65537ce82c3abc53ad14c3c09e683036d68b1e2c196fa5ebfd59ff4f2686eea30c786c9447900264991624a68de05d08503a411728316faec5aefd94acd3b41dc0be2b5cfb258bf549094311e94e37d391217906568b275bf9cdf732ef426bcfb82b7d0f469037e4d30e0e68c7500d3de3584203be69c62f016ea188132bfb0341661c25ea3a5fa0ed3736853bddbc1567486d93864781f6e2e51b66020fb14711bd431cafdc79451c00604b4d9fe21e5bb86d0805ff073e4cd2ff1f380e920000000049454e44ae426082 - - - - - Fit - activated() - MuSRFitform - GoFit() - - - parametersAppend_ToAction - activated() - MuSRFitform - parametersAppend() - - - parametersExport_AsAction - activated() - MuSRFitform - parametersExport() - - - fileChangeDirAction - activated() - MuSRFitform - fileChangeDir() - - - fileOpenAction - activated() - MuSRFitform - fileOpen() - - - fileSaveAction - activated() - MuSRFitform - fileSave() - - - filePrintAction - activated() - MuSRFitform - filePrint() - - - fileExitAction - activated() - MuSRFitform - fileExit() - - - editUndoAction - activated() - MuSRFitform - editUndo() - - - editRedoAction - activated() - MuSRFitform - editRedo() - - - editCutAction - activated() - MuSRFitform - editCut() - - - editCopyAction - activated() - MuSRFitform - editCopy() - - - editPasteAction - activated() - MuSRFitform - editPaste() - - - helpIndexAction - activated() - MuSRFitform - helpIndex() - - - helpContentsAction - activated() - MuSRFitform - helpContents() - - - helpAboutAction - activated() - MuSRFitform - helpAbout() - - - T0 - activated() - MuSRFitform - ShowMuSRT0() - - - Plot - activated() - MuSRFitform - GoPlot() - - - ManualFile - toggled(bool) - MuSRFitform - RunSelectionToggle() - - - ResetFunc - clicked() - MuSRFitform - InitializeFunctions() - - - AddConstraint - clicked() - MuSRFitform - AppendToFunctions() - - - InitParamTable - valueChanged(int,int) - MuSRFitform - CallMSRCreate() - - - buttonGroupSharing - toggled(bool) - MuSRFitform - ActivateShComp() - - - Browse - clicked() - MuSRFitform - fileBrowse() - - - BeamLine - activated(int) - MuSRFitform - T0Update() - - - FitType3 - activated(const QString&) - MuSRFitform - InitializeFunctions() - - - FitType1 - activated(const QString&) - MuSRFitform - InitializeFunctions() - - - FitType2 - activated(const QString&) - MuSRFitform - InitializeFunctions() - - - musrfit_tabs - selected(const QString&) - MuSRFitform - TabChanged() - - - t0Update - clicked() - MuSRFitform - t0UpdateClicked() - - - buttonGroupSharing - toggled(bool) - MuSRFitform - ActivateShComp() - - - - musrfit_tabs - RunNumbers - BeamLine - YEAR - RunFiles - Browse - FitType1 - FitType2 - FitType3 - Tis - Tfs - BINS - FitAsyType - LRBF - FitTextOutput - ShParam_1_1 - ShParam_1_2 - ShParam_1_3 - ShParam_1_4 - ShParam_1_5 - ShParam_1_6 - ShParam_1_7 - ShParam_1_8 - ShParam_1_9 - ShParam_2_1 - ShParam_2_2 - ShParam_2_3 - ShParam_2_4 - ShParam_2_5 - ShParam_2_6 - ShParam_2_7 - ShParam_2_8 - ShParam_2_9 - ShParam_3_1 - ShParam_3_2 - ShParam_3_3 - ShParam_3_4 - ShParam_3_5 - ShParam_3_6 - ShParam_3_7 - ShParam_3_8 - ShParam_3_9 - InitParamTable - TITLE - FILENAME - textMSROutput - FUnits - FApodization - FPlot - FrqMin - FrqMax - t01 - Bg11 - Bg21 - Data11 - Data21 - t02 - Bg12 - Bg22 - Data12 - Data22 - t03 - Bg13 - Bg23 - Data13 - Data23 - t04 - Bg14 - Bg24 - Data14 - Data24 - - - MuSRFit.ui.h - - - fileOpen() - fileSave() - fileChangeDir() - filePrint() - fileExit() - parametersExport() - parametersAppend() - editUndo() - editRedo() - editCut() - editCopy() - editPaste() - helpIndex() - helpContents() - helpAbout() - CreateAllInput() - CallMSRCreate() - UpdateMSRFileInitTable() - ActivateT0Hists() - ActivateShComp() - InitializeTab() - TabChanged() - GoFit() - GoPlot() - ShowMuSRT0() - T0Update() - RunSelectionToggle() - fileBrowse() - AppendToFunctions() - InitializeFunctions() - optionConfigure() - t0UpdateClicked() - - - diff --git a/src/external/MuSRFitGUI/devel/MuSRFit.ui.h b/src/external/MuSRFitGUI/devel/MuSRFit.ui.h deleted file mode 100755 index 60e5e46e..00000000 --- a/src/external/MuSRFitGUI/devel/MuSRFit.ui.h +++ /dev/null @@ -1,991 +0,0 @@ -/**************************************************************************** -** ui.h extension file, included from the uic-generated form implementation. -** -** If you want to add, delete, or rename functions or slots, use -** Qt Designer to update this file, preserving your code. -** -** You should not define a constructor or destructor in this file. -** Instead, write your code in functions called init() and destroy(). -** These will automatically be called by theform's constructor and -** destructor. -*****************************************************************************/ - -# This file is part of MuSRFitGUI. -# -# MuSRFitGUI 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. -# -# MuSRFitGUI 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 MuSRFitGUI. If not, see . -# -# Copyright 2009 by Zaher Salman and the LEM Group. -# - -void MuSRFitMenu::fileOpen() -{ - my $file=Qt::FileDialog::getOpenFileName( - ".", - "MSR Files (*.msr *.mlog)", - this, - "open file dialog", - "Choose a MSR file"); - print "Selected file: $file\n"; -# TODO: Possibly decipher the MSR file and setup the GUI accordingly -# Find run numbers, beamlines etc. -# Get theory block and understand it -# Get parameters list and update table - -} - - -void MuSRFitMenu::fileSave() -{ - my %All=CreateAllInput(); - my $FILENAME=$All{"FILENAME"}.".msr"; - my $file=Qt::FileDialog::getSaveFileName( - "$FILENAME", - "MSR Files (*.msr *.mlog)", - this, - "save file dialog", - "Choose a filename to save under"); - -# If the user gave a filename the copy to it - if ($file ne "") { -# TODO: check if the extension is correct, or add it. - if (-e $FILENAME) { - my $cmd="cp $FILENAME $file"; - my $pid=system($cmd); - } else { - if ($file ne "") { - my $Warning = "Warning: No MSR file found yet!"; - my $WarningWindow = Qt::MessageBox::information( this, "Warning",$Warning); - } - } - } -} - -void MuSRFitMenu::fileChangeDir() -{ - my $newdir=Qt::FileDialog::getExistingDirectory( - "", - this, - "get existing directory", - "Choose a directory", - 1); - chdir ("$newdir"); -} - -void MuSRFitMenu::filePrint() -{ - -} - - -void MuSRFitMenu::fileExit() -{ - 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 -} - -void MuSRFitMenu::parametersExport() -{ - my %All=CreateAllInput(); -# Add also a flag for header - $All{"Header"}=1; - my $FILENAME=$All{"FILENAME"}.".dat"; - my $file=Qt::FileDialog::getSaveFileName( - "$FILENAME", - "Data Files (*.dat)", - this, - "export file dialog", - "Choose a filename to export to"); - -# If the user gave a filename the copy to it - if ($file ne "") { - my $Text = MSR::ExportParams(\%All); - open( DATF,q{>},"$file" ); - print DATF $Text; - close(DATF); - } -} - - -void MuSRFitMenu::parametersAppend() -{ - my %All=CreateAllInput(); -# Add also a flag for header - $All{"Header"}=0; - my $FILENAME=$All{"FILENAME"}.".dat"; - my $file=Qt::FileDialog::getOpenFileName( - "./", - "Data Files (*.dat)", - this, - "append file dialog", - "Choose a filename to append to"); - -# If the user gave a filename the copy to it - if ($file ne "") { - my $Text = MSR::ExportParams(\%All); - open( DATF,q{>>},"$file" ); - print DATF $Text; - close(DATF); - } -} - - -void MuSRFitMenu::editUndo() -{ - -} - - -void MuSRFitMenu::editRedo() -{ - -} - - -void MuSRFitMenu::editCut() -{ - -} - - -void MuSRFitMenu::editCopy() -{ - -} - - -void MuSRFitMenu::editPaste() -{ - -} - - -void MuSRFitMenu::helpIndex() -{ - -} - - -void MuSRFitMenu::helpContents() -{ - -} - -void MuSRFitMenu::helpAbout() -{ - my $AboutText=" - This is a GUI that uses the musrfit binary, developed by Andreas Suter, - to fit muSR spectra. - - MuSRFitGUI 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. - - MuSRFitGUI 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 MuSRFitGUI. If not, see . - - Copyright 2009 by Zaher Salman and the LEM Group. - - "; - my $AboutWindow = Qt::MessageBox::information( this, "About MuSRFit GUI",$AboutText); -} - -void MuSRFitform::CreateAllInput() -{ - my %All=(); - -# From RUNS Tab -# Run data file - $All{"RunNumbers"} = RunNumbers->text; - $All{"RunFiles"} = RunFiles->text; - $All{"BeamLine"} = BeamLine->currentText; - $All{"RUNSType"} = ManualFile->isOn(); - $All{"optionsFourier"} = optionsFourier->isOn(); - $All{"optionsT0"} = optionsT0->isOn(); - $All{"YEAR"} =YEAR->currentText; - if ($All{"YEAR"} eq "") { -# If year combobox is empty fill it up from 2004 up to current year - my ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime(); - my $current_year = 1900 + $yearOffset; - for (my $i=$current_year;$i>=2004;$i--) { - YEAR->insertItem($i,-1); - } - } -# Time range and BINS - $All{"Tis"} = Tis->text; - $All{"Tfs"} = Tfs->text; - $All{"BINS"} = BINS->text; - $All{"FitAsyType"} = FitAsyType->currentText; - $All{"LRBF"} = LRBF->text; - my @Hists = split(/,/, $All{"LRBF"} ); -# Lifetime corrections in enabled/visible only for SingleHis fits - if ( $All{"FitAsyType"} eq "Asymmetry" ) { - ltc->setHidden(1); - } - elsif ( $All{"FitAsyType"} eq "SingleHist" ) { - ltc->setHidden(0); - } - -# From Fitting Tab -# Plot range - $All{"Xi"}=Xi->text; - $All{"Xf"}=Xf->text; - $All{"Yi"}=Yi->text; - $All{"Yf"}=Yf->text; - $All{"ViewBin"}=ViewBin->text; -# Life time correction - if (ltc->isChecked()) { - $All{"ltc"}="y"; - } else { - $All{"ltc"}="n"; - } -# Minuit commands - if ( $All{"go"} eq "" ) { - $All{"go"}="PLOT"; - } -# Get minimization process - $All{"Minimization"} = Minimization->currentText(); - $All{"go"}=$All{"Minimization"}; - -# Get Error calculation process - $All{"ErrorCalc"} = ErrorCalc->currentText(); - $All{"go"}=$All{"ErrorCalc"}; - - RunSelectionToggle(); - my @RUNS = (); - if ($All{"RUNSType"} ) { - @RUNS = split( /,/, $All{"RunFiles"}); - } else { - $All{"RunNumbers"} =~ s/[\ \.\~\/\&\*\[\;\>\<\^\$\(\)\`\|\]\'\@]/,/g; - @RUNS = split( /,/, $All{"RunNumbers"} ); - } - -# From MSR File Tab - $All{"TITLE"}= TITLE->text; - $All{"FILENAME"}= FILENAME->text; - -# From Fourier Tab - $All{"FUNITS"}= FUnits->currentText; - $All{"FAPODIZATION"}= FApodization->currentText; - $All{"FPLOT"}= FPlot->currentText; - $All{"FPHASE"}=FPHASE->text; -# Fourier range - $All{"FrqMin"}=FrqMin->text; - $All{"FrqMax"}=FrqMax->text; - -# Rotating reference frame parameters - $All{"RRFFrq"}=RRFFrq->text; - $All{"RRFPack"}=RRFPack->text; - $All{"RRFPhase"}=RRFPhase->text; - $All{"RRFUnits"}=RRFUnits->currentText; - -# Get values of t0 and Bg/Data bins if given - my $NHist = 1; - foreach my $Hist (@Hists) { - foreach ("t0","Bg1","Bg2","Data1","Data2") { - my $Name = "$_$NHist"; - $All{$Name}=child($Name)->text; -# TODO: If empty fill with defaults - if ($All{$Name} eq "") { - $All{$Name}=MSR::T0BgData($_,$Hist,$All{"BeamLine"}); - child($Name)->setText($All{$Name}); - } - } - $NHist++; - } - -# Construct fittypes that can be understood by MSR.pm - my %FTs=(0,"Exponential", - 1,"Gaussian", - 2,"Stretch", - 3,"ExponentialCos", - 4,"GaussianCos", - 5,"StretchCos", - 6,"LDKTLF", - 7,"GDKTLF", - 8,"Background", - 9,"LLFExp", - 10,"GLFExp", - 11,"LLFSExp", - 12,"GLFSExp", - 13,"MolMag", - 14,"Meissner", - 15,"None" - ); - - my $FT1=FitType1->currentItem; - my $FT2=FitType2->currentItem; - my $FT3=FitType3->currentItem; - $All{"FitType1"} = $FTs{$FT1}; - $All{"FitType2"} = $FTs{$FT2}; - $All{"FitType3"} = $FTs{$FT3}; - my @FitTypes =(); - my $FitType=""; - foreach $FitType ($All{"FitType1"}, $All{"FitType2"}, $All{"FitType3"}) { - if ( $FitType ne "None" ) { - push( @FitTypes, $FitType ); - } - } - -# Also theory block and paramets list - my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateTheory(@FitTypes); - $All{"Full_T_Block"}=$Full_T_Block; - $All{"Paramcomp_ref"}=$Paramcomp_ref; - my @Paramcomp = @$Paramcomp_ref; - -# Functions block - $All{"FunctionsBlock"}=FunctionsBlock->text; -# and the associated theory block - $All{"Func_T_Block"}=TheoryBlock->text; - -# Shared settings are detected here - $All{"EnableSharing"} = buttonGroupSharing->isChecked(); - - my $Shared = 0; - my $PCount =0; - my $Component=1; - foreach $FitType (@FitTypes) { - my $Parameters=$Paramcomp[$Component-1]; - my @Params = split( /\s+/, $Parameters ); - - if ( $Component == 1 && $All{"FitAsyType"} eq "Asymmetry" ) { - unshift( @Params, "Alpha" ); - } - elsif ( $Component == 1 && $All{"FitAsyType"} eq "SingleHist" ) { - unshift( @Params, ( "No", "NBg" ) ); - } - -# This is the counter for parameters of this component - my $NP=1; - $Shared = 0; -# Change state/label of parameters - foreach my $Param (@Params) { - my $Param_ORG = $Param; -# TODO: I need to take care of single hist fits here - if ( $All{"FitAsyType"} eq "SingleHist" ) { - $Param=$Param.$Hists[0]; - } - if ( $#FitTypes != 0 && ( $Param ne "Alpha" && $Param ne "No" && $Param ne "NBg" ) ){ - $Param = join( "", $Param, "_", $Component); - } - -# Is there any point of sharing, multiple runs? - if ( $#RUNS == 0 && $All{"FitAsyType"} eq "Asymmetry") { - $Shared = 1; - } - elsif ( $#RUNS == 0 && $#Hists == 0 && $All{"FitAsyType"} eq "SingleHist" ) { - $Shared = 1; - } else { -# Check if shared or not, construct name of checkbox, find its handle and then -# check if it is checked - my $ChkName="ShParam_".$Component."_".$NP; - my $ChkBx = child($ChkName); - $Shared = $ChkBx->isChecked(); - } - $All{"Sh_$Param"}=$Shared; - $NP++; - } -#Loop on parameters - $Component++; - } -# Loop on components -# Done with shared parameters detecting - -# Construct a default filename if empty - if ( $All{"FILENAME"} eq "" && !$All{"RUNSType"}) { - $All{"FILENAME"}=$RUNS[0]."_".$All{"BeamLine"}."_".$All{"YEAR"}; - if ($All{"BeamLine"} eq "LEM (PPC)") { - $All{"FILENAME"}=$RUNS[0]."_LEM_".$All{"YEAR"}; - } - } else { - $All{"FILENAME"}="TMP"; - } - - -# This has to be at the end of CreateAll - my %PTable=MSR::PrepParamTable(\%All); - -# Setup the table with the right size - my $NParam=scalar keys( %PTable ); - -# Read initial values of paramets from tabel - my $erradd = "d"; - my $minadd = "_min"; - my $maxadd = "_max"; - my $Header=InitParamTable->verticalHeader(); -# TODO: Should not go over all rows, only on parameters. - if ($NParam > 0) { - for (my $i=0;$i<$NParam;$i++) { -# Take label of row, i.e. name of parameter - my $Param=$Header->label($i); -# Then take the value, error, max and min (as numbers) - $All{"$Param"}=1.0*InitParamTable->text($i,0); - $All{"$erradd$Param"}=1.0*InitParamTable->text($i,1); - $All{"$Param$minadd"}=1.0*InitParamTable->text($i,2); - $All{"$Param$maxadd"}=1.0*InitParamTable->text($i,3); - } - } - - -# Return Hash with all important values - return %All; -} - -void MuSRFitform::CallMSRCreate() -{ - use MSR; - my %All=CreateAllInput(); - -# Check if the option for checking for existing files is selected - my $FileExistCheck= FileExistCheck->isOn(); - my $FILENAME=$All{"FILENAME"}.".msr"; - my $Answer=0; - if ($All{"RunNumbers"} ne "" || $All{"RunFiles"} ne "") { - if ( $FileExistCheck==1 ) { - if (-e $FILENAME) { -# Warning: MSR file exists -# my $Warning = "Warning: MSR file $FILENAME Already exists!\nIf you continue it will overwriten."; - my $Warning = "Warning: MSR file $FILENAME Already exists!\nDo you want to overwrite it?"; -# my $WarningWindow = Qt::MessageBox::information( this, "Warning",$Warning); -# $Answer =1,0 for yes and no - $Answer= Qt::MessageBox::warning( this, "Warning",$Warning, "&No", "&Yes", undef, 1,1); - } - } else { -# Just overwrite file - $Answer=1; - } - - if ($Answer) { - if ( $All{"FitAsyType"} eq "Asymmetry" ) { - my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSR(\%All); - } - elsif ( $All{"FitAsyType"} eq "SingleHist" ) { - my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSRSingleHist(\%All); - } - UpdateMSRFileInitTable(); - } - } - return $Answer; -} - -void MuSRFitform::UpdateMSRFileInitTable() -{ - my %All=CreateAllInput(); - my $FILENAME=$All{"FILENAME"}; - open (MSRF,q{<},"$FILENAME.msr" ); - my @lines = ; - close(IFILE); - textMSROutput->setText(""); - foreach my $line (@lines) { - textMSROutput->append("$line"); - } - - (my $TBlock_ref, my $FPBlock_ref)=MSR::ExtractBlks(@lines); - my @FPBloc = @$FPBlock_ref; - - my $PCount=0; - foreach my $line (@FPBloc) { - $PCount++; - my @Param=split(/\s+/,$line); - -# Depending on how many elements in @Param determine what they mean -# 0th element is empty (always) -# 1st element is the order (always) -# 2nd element is the name (always) -# 3rd element is the value (always) -# 4th element can be taken as step/error (always) -# 5th element can be -# if it is last element or there are two more = positive error, check $#Param=5/7 -# if there is only one more = minimum, check $#Param=6 - -# To summarize, check the value of $#Param - my $value=1.0*$Param[3]; - my $error = 1.0*$Param[4]; - my $minvalue=0.0; - my $maxvalue=0.0; - if ($#Param == 4) { - $minvalue=0.0; - $maxvalue=0.0; - } - elsif ($#Param == 6) { - $minvalue=1.0*$Param[5]; - $maxvalue=1.0*$Param[6]; - } - elsif ($#Param == 5 || $#Param == 7) { - $minvalue=1.0*$Param[6]; - $maxvalue=1.0*$Param[7]; - } -# Now update the initialization tabel - InitParamTable->setText($PCount-1,0,$value); - InitParamTable->setText($PCount-1,1,$error); - InitParamTable->setText($PCount-1,2,$minvalue); - InitParamTable->setText($PCount-1,3,$maxvalue); -# Set bg color to mark different runs - } - return; -} - -void MuSRFitform::ActivateT0Hists() -{ - my %All=CreateAllInput(); - my @Hists = split(/,/, $All{"LRBF"} ); - my $HistBox = ""; - for (my $iHist=1; $iHist<=4; $iHist++) { - $HistBox="groupHist$iHist"; - my $HistBoxHandle = child($HistBox); - if ($iHist<=$#Hists+1) { -# Activate this histogram box - $HistBoxHandle->setHidden(0); - $HistBoxHandle->setEnabled(1); - $HistBoxHandle->setTitle("Hist # $Hists[$iHist-1]"); - } else { -# Deactivate this histogram box - $HistBoxHandle->setHidden(1); - $HistBoxHandle->setEnabled(0); - } - } - -# TODO: Set default values - -} - -void MuSRFitform::ActivateShComp() -{ - my %All=CreateAllInput(); - my @RUNS = split( /,/, $All{"RunNumbers"} ); - -# Hide all sharing components - SharingComp1->setHidden(1); - SharingComp2->setHidden(1); - SharingComp3->setHidden(1); - SharingComp1->setEnabled(0); - SharingComp2->setEnabled(0); - SharingComp3->setEnabled(0); - - my @FitTypes =(); - foreach my $FitType ($All{"FitType1"}, $All{"FitType2"}, $All{"FitType3"}) { - if ( $FitType ne "None" ) { - push( @FitTypes, $FitType ); - } - } - -# Get number of parameters to determine the size of the table - my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateTheory(@FitTypes); -# For now the line below does not work. Why? -# my $Paramcomp_ref=$All{"Paramcomp_ref"}; - my @Paramcomp = @$Paramcomp_ref; - my $Full_T_Block= $All{"Full_T_Block"}; - -# Possible to share only if sharing is enabled altogether - my $EnableSharing = $All{"EnableSharing"}; - if ($EnableSharing) { - my $Component=1; - foreach my $FitType (@FitTypes) { - my $Parameters=$Paramcomp[$Component-1]; - my @Params = split( /\s+/, $Parameters ); - - if ( $Component == 1 && $All{"FitAsyType"} eq "Asymmetry" ) { - unshift( @Params, "Alpha" ); - } - elsif ( $Component == 1 && $All{"FitAsyType"} eq "SingleHist" ) { - unshift( @Params, ( "No", "NBg" ) ); - } - - -# Make the component appear first (only if we have multiple runs) - my $ShCompG="SharingComp".$Component; - my $ShCG = child($ShCompG); - if ($#RUNS>0) { - $ShCG->setHidden(0); - $ShCG->setEnabled(1); - } - my $CompShLabel = "Comp".$Component."ShLabel"; - my $CompShL = child($CompShLabel); - $CompShL->setText($All{"FitType$Component"}); - -# Change state/label of parameters - for (my $i=1; $i<=9;$i++) { - my $ParamChkBx="ShParam_".$Component."_".$i; - my $ChkBx = child($ParamChkBx); - if ($Params[$i-1] ne "") { - $ChkBx->setHidden(0); - $ChkBx->setEnabled(1); - $ChkBx ->setText($Params[$i-1]); - } else { - $ChkBx->setHidden(1); - } - } - $Component++; - } - } -} - -void MuSRFitform::InitializeTab() -{ - my %All=CreateAllInput(); - InitParamTable->setLeftMargin(100); - my $NRows = InitParamTable->numRows(); - -# Remove any rows in table - if ($NRows > 0) { - for (my $i=0;$i<$NRows;$i++) { -# TODO: Better remove the row rather than hide it. - InitParamTable->hideRow($i); -# InitParamTable->removeRow($i); - } - } - - my %PTable=MSR::PrepParamTable(\%All); - -# Setup the table with the right size - my $NParam=scalar keys( %PTable ); - if ($NParam>$NRows) { - InitParamTable->setNumRows($NParam); - } - -# Fill the table with labels and values of parametr - for (my $PCount=0;$PCount<$NParam;$PCount++) { - my ($Param,$value,$error,$minvalue,$maxvalue,$RUN) = split(/,/,$PTable{$PCount}); -# Now make sure we have no nans - if ($error eq "nan") { $error=0.1;} -# If you use this then reading the parameters from the table is a problem -# You need to extract the correct parameter name from the row label -# InitParamTable->verticalHeader()->setLabel( $PCount,"$RUN: $Param"); - InitParamTable->verticalHeader()->setLabel( $PCount,"$Param"); - InitParamTable->showRow($PCount); - InitParamTable->setText($PCount,0,$value); - InitParamTable->setText($PCount,1,$error); - InitParamTable->setText($PCount,2,$minvalue); - InitParamTable->setText($PCount,3,$maxvalue); - } -} - -void MuSRFitform::TabChanged() -{ -# TODO: First check if there are some runs given, otherwise disbale - my %All=CreateAllInput(); - -# First make sure we have sharing initialized - ActivateShComp(); -# Here we need to apply sharing if selected... - InitializeTab(); - UpdateMSRFileInitTable(); -# And also setup T0 and Bg bins - ActivateT0Hists(); - -# Initialize FUNCTIONS block only if it has not been initialized yet - if ($All{"Func_T_Block"} eq "" ) { - InitializeFunctions(); - } -} - - -void MuSRFitform::GoFit() -{ - my %All=CreateAllInput(); -# Check here is the number of histograms makes sense -# other wise give error. - my @Hists = split( /,/, $All{"LRBF"} ); - if ($All{"FitAsyType"} eq "Asymmetry" && $#Hists != 1) { -# we have a problem here send error message - my $Warning = "Error: The number of histograms should be 2 for an asymmetry fit!"; - my $WarningWindow = Qt::MessageBox::information( this, "Error",$Warning); - } else { - musrfit_tabs->setCurrentPage(1); - my $Answer=CallMSRCreate(); - if ($Answer) { - my $FILENAME=$All{"FILENAME"}.".msr"; - if (-e $FILENAME) { - my $cmd="musrfit -t $FILENAME"; - my $pid = open(FTO,"$cmd 2>&1 |"); - while () { - FitTextOutput->append("$_"); - } - close(FTO); - $cmd="musrview $FILENAME &"; - $pid = system($cmd); - } else { - FitTextOutput->append("Cannot find MSR file!"); - } - FitTextOutput->append("-----------------------------------------------------------------------------------------------------------------------------"); -# update MSR File tab and initialization table - UpdateMSRFileInitTable(); - } - } - return; -} - -void MuSRFitform::GoPlot() -{ - my %All=CreateAllInput(); -# Check here is the number of histograms makes sense -# other wise give error. - my @Hists = split( /,/, $All{"LRBF"} ); - if ($All{"FitAsyType"} eq "Asymmetry" && $#Hists != 1) { -# we have a problem here send error message - my $Warning = "Error: The number of histograms should be 2 for an asymmetry fit!"; - my $WarningWindow = Qt::MessageBox::information( this, "Error",$Warning); - } else { - my $Answer=CallMSRCreate(); - my $FILENAME=$All{"FILENAME"}.".msr"; - if ($Answer) { - if (-e $FILENAME) { - my $cmd="musrview $FILENAME &"; - my $pid = system($cmd); - } else { - FitTextOutput->append("Cannot find MSR file!"); - FitTextOutput->append("-----------------------------------------------------------------------------------------------------------------------------"); - } - } - } - return; -} - - -void MuSRFitform::ShowMuSRT0() -{ - my %All=CreateAllInput(); - musrfit_tabs->setCurrentPage(6); -# Create MSR file and then run musrt0 - my $Answer=CallMSRCreate(); - - if ($Answer) { - my $FILENAME=$All{"FILENAME"}.".msr"; - if (-e $FILENAME) { - my $cmd="musrt0 $FILENAME &"; - my $pid = system($cmd); - t0Update->setEnabled(1) - } else { - print STDERR "Cannot find MSR file!\n"; - } - } - return; -} - - -void MuSRFitform::T0Update() -{ - my %All = CreateAllInput(); - my @Hists = split(/,/, $All{"LRBF"} ); - -# Get values of t0 and Bg/Data bins if given - my $NHist = 1; - foreach my $Hist (@Hists) { - foreach ("t0","Bg1","Bg2","Data1","Data2") { - my $Name = "$_$NHist"; - my $tmp=MSR::T0BgData($_,$Hist,$All{"BeamLine"}); - child($Name)->setText($tmp); - } - $NHist++ - } - -} - - -void MuSRFitform::RunSelectionToggle() -{ - my $ManualFile= ManualFile->isOn(); - if ($ManualFile) { -# Manual RUN selection - RUNSMan->setEnabled(1); - RUNSMan->setHidden(0); - RunNumbers->setText(""); - RUNSAuto->setEnabled(0); - RUNSAuto->setHidden(1); - } else { -# Auto RUN selection - RUNSMan->setEnabled(0); - RUNSMan->setHidden(1); - RunFiles->setText(""); - RUNSAuto->setEnabled(1); - RUNSAuto->setHidden(0); - } - -# Also use this for other options -# Fourier toggle - my $Fourier=optionsFourier->isOn(); - if ($Fourier) { -# Fourier tab visible -# musrfit_tabs->addTab(FourierPage,"Fourier"); -# musrfit_tabs->showPage(FourierPage); -# FourierPage->hide(); - } else { -# Fourier tab invisible -# musrfit_tabs->removePage(FourierPage); -# FourierPage->show(); - } -} - -void MuSRFitform::fileBrowse() -{ - my $RunFiles=RunFiles->text(); - print "Runs:$RunFiles\n"; - my $files_ref=Qt::FileDialog::getOpenFileNames( - "Data files (*.root *.bin)", - "./", - this, - "open files dialog", - "Select one or more files to fit"); - my @files = @$files_ref; - if ($RunFiles eq "") { -# We started with an empty list - $RunFiles=join(",",@files); - } else { -# Add files to existing list - $RunFiles=join(",",$RunFiles,@files); - } - RunFiles->setText($RunFiles); -} - -void MuSRFitform::AppendToFunctions() -{ - my $ParName=CParamsCombo->currentText(); - my $Full_T_Block=TheoryBlock->text; - my $Constraint=ConstraintLine->text; -# Then clear the text - ConstraintLine->setText(""); - -# Check how many constraints (lines) in FUNCTIONS Block - my $i=FunctionsBlock->lines(); - my $ConstLine="fun$i = $Constraint\n"; - FunctionsBlock->append($ConstLine); - -# Replace parameter in theory block with fun$i - $Full_T_Block=~ s/$ParName/fun$i/; - TheoryBlock->setText($Full_T_Block); -} - -void MuSRFitform::InitializeFunctions() -{ - my %All=CreateAllInput(); - my @RUNS = split( /,/, $All{"RunNumbers"} ); - - my @FitTypes =(); - foreach my $FitType ($All{"FitType1"}, $All{"FitType2"}, $All{"FitType3"}) { - if ( $FitType ne "None" ) { - push( @FitTypes, $FitType ); - } - } - -# Get number of parameters to determine the size of the table - my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateTheory(@FitTypes); - my @Paramcomp = @$Paramcomp_ref; - my $Full_T_Block= $All{"Full_T_Block"}; - -# Initialize Parameters List in function block (constraints). - my $ParametersList=""; - ParametersList->setText(""); -# Counter for function block (with out Alpha etc.) - my $ParCount=0; - CParamsCombo->clear(); - -# Possibly use the parameters block to axtract names for the dropdown menu -# this makes sense if we can use fun in map line. Check! - my $Component=1; - foreach my $FitType (@FitTypes) { - my $Parameters=$Paramcomp[$Component-1]; - my @Params = split( /\s+/, $Parameters ); - -# Alpha, No and NBg are counted in the parameters - if ( $Component == 1 && $All{"FitAsyType"} eq "Asymmetry" ) { - unshift( @Params, "Alpha" ); - } - elsif ( $Component == 1 && $All{"FitAsyType"} eq "SingleHist" ) { - unshift( @Params, ( "No", "NBg" ) ); - } - -# Add list to the constraints drop down menu - for (my $i=1; $i<=9;$i++) { - my $CParam = $Params[$i-1]."_".$Component; - if ($Params[$i-1] ne "" ) { - if ($Params[$i-1] ne "Alpha" && $Params[$i-1] ne "No" && $Params[$i-1] ne "NBg") { - CParamsCombo->insertItem($CParam,-1); - $Full_T_Block=~ s/\b$Params[$i-1]\b/$CParam/; - } -# also enumerate the parameters as should be used in the FUNCTIONS Block - $ParCount++; - $ParametersList=$ParametersList."$CParam \t is \t par$ParCount\n"; - ParametersList->setText($ParametersList); - } - } - $Component++; - } -# Set theory block in Constraints - TheoryBlock->setText($Full_T_Block); -# Then clear the text - ConstraintLine->setText(""); - FunctionsBlock->setText(""); -} - - -void MuSRFitform::optionConfigure() -{ - use Customize; - - my $Customize = Qt::Dialog(this); - my $w = Customize; - $w->setModal(1); - $w->exec(); -# $Customize->setMainWidget($w); -# $w->show; -# exit $Customize->exec; - -} - -void MuSRFitform::t0UpdateClicked() -{ -# Read MSR file and get new values of t0,Bg and Data - my %All=CreateAllInput(); - my $FILENAME=$All{"FILENAME"}; - open (MSRF,q{<},"$FILENAME.msr" ); - my @lines = ; - close(IFILE); - - my @T0s = grep {/t0 /} @lines; - my @Bgs = grep {/background /} @lines; - my @Datas = grep {/data /} @lines; - - my @Hists = split(/,/, $All{"LRBF"} ); - my $NHist = $#Hists+1; - print "Histograms: $NHist\n"; - - my $FinHist = 1; -# First T0s - while ($FinHist) { - my $counter=0; - (my $tmp,my @SplitT0) = split( /\s+/, $T0s[$counter]); - (my $tmp,my @SplitBg) = split( /\s+/, $Bgs[$counter]); - (my $tmp,my @SplitData) = split( /\s+/, $Datas[$counter]); - if ($#SplitBg>0) { - foreach (@SplitBg) { - print $_."\n"; - } - } - $counter++; - if ($counter>=$#Bgs) {$FinHist=0;} - } - -# Finally, disable the update button - t0Update->setEnabled(0); -# t0Update->setText("musrt0") -}