# ---------------------------------------------------------------------------
#     MAXDIFFLIB.PL
#
#      Ver: 8_4_8
# ---------------------------------------------------------------------------
# SSI Web - Web Surveying System
# Copyright Sawtooth Software, Inc. 1998-2015. All rights reserved.
# Orem, UT  USA  (801) 477-4700
#
# Any modification of this script will be considered violation of
# copyright (with the exception of the first line which can be
# modified to reflect the correct path to the Perl interpreter)
#
# Any use of this script or its code for purposes outside of
# the systems created by Sawtooth Software is prohibited.
# ---------------------------------------------------------------------------
 use strict; package maxdifflib8_4_8; our @ISA = qw(onelistquestionlib8_4_8); sub new { my ($__gpt) = @_; $__gpt->{'_bmc'} = "maxdiff"; bless($__gpt); return $__gpt; } sub _bls { my ($__gpw) = @_; $__gpw->SUPER::_bls(); my $__gpu = $__gpw->{'_bkt'}; my ($__gpx, $__gpy) = _cig($__gpw->{'_bgt'}, $__gpu->{'_ww'}, $__gpu->{'_wx'}, $__gpu->{'_wy'}); $__gpu->{'_cil'} = $__gpx; $__gpu->{'_cim'} = $__gpy + 1; my $__gpv = $__gpw->_cic(); if ($__gpv) { $__gpw->{'_bkt'}->{'_chj'} = $__gpv; } } sub _cic { my ($__gqp) = @_; my $__gpz = $__gqp->{'_bkt'}; my $__gqa = 0; my $__gqb = ""; my $__gqc = ""; if (exists $__gpz->{'_xo'}) { $__gqa = 1; } if (exists($__gpz->{'_bfd'})) { $__gqb = $__gpz->{'_bfd'}->{'_bft'}; if ($__gqb =~ m/<!--(.*?)SSI_Comment:\s*CUSTOM_MAXDIFF_DESIGN(.*?)-->/is) { my $__gqd = $2; my $__gqe = ""; my $__gqf = 0; if ($__gqd =~ m/Free_Format_Base_Name:\s*(.*?)\s/is) { $__gqe = $1; if (!exists($authlib8_4_8::_bwq{$__gqe . "1"})) { $__gqf = 1; if ($authlib8_4_8::_bzy == 0) { authlib8_4_8::_bqa(156, "Custom MaxDiff error.", "The question specified in the CUSTOM_MAXDIFF_DESIGN comment, " . $__gqe ."1, does not exist in the question list.", ""); } } } else { $__gqf = 1; if ($authlib8_4_8::_bzy == 0) { authlib8_4_8::_bqa(157, "Custom MaxDiff error.", "Cannot find the Free_Format_Base_Name instruction in the CUSTOM_MAXDIFF_DESIGN comment. Check syntax.", ""); } } if (!$__gqf) { my $__gqg = 1; my $__gqh = ""; if ($__gqd =~ m/Verification:\s*(.*?)\s/is) { $__gqh = $1; if ($__gqh =~ m/^OFF$/i) { $__gqg = 0; } } my $__gqi = ""; if ($__gqp->{'_bgt'} =~ m/_(\d+)$/) { $__gqi = $1; } $__gqe .= $__gqi; $__gqc .= "<input type=\"hidden\" name=\"hid_Custom_MaxDiff_" . $__gqp->{'_bgt'} . "\" value=\"" . $__gqe . "\">"; $__gqc .= "<input type=\"hidden\" name=\"" . $__gqp->{'_bgt'} . "_b\" value=\"\">"; if (!exists $__gpz->{'_xo'}) { $__gqc .= "<input type=\"hidden\" name=\"" . $__gqp->{'_bgt'} . "_w\" value=\"\">"; } if ($authlib8_4_8::_byb) { $__gqc .= "<!--LoadTestMode: <question><name>" . $__gqp->{'_bgt'} . "</name><type>custommaxdiff</type>"; $__gqc .= "<freeformquest>" . $__gqe . "</freeformquest>"; $__gqc .= "<bestonly>" . (exists $__gpz->{'_xo'} ? "true" : "false") . "</bestonly>"; my $__gqj = $__gpz->{'_bmi'}; my $__gqk = $__gpz->{'_cil'}; my $__gql = ""; foreach my $__gqm (@{$__gqk}) { my $__gqn = $__gqj->[$__gqm]; $__gql .= $__gqn->{'_bcm'} . ","; } chop($__gql); $__gqc .= "<indices>" . $__gql . "</indices>"; $__gqc .= "<dualresponseanchor>" . (exists($__gpz->{'_yx'}) ? "true" : "false") . "</dualresponseanchor>"; $__gqc .= "</question>-->"; } if ($__gqg == 0) { $__gqe = ""; $__gqc .= "<input type=\"hidden\" name=\"hid_Custom_MaxDiff_" . $__gqp->{'_bgt'} . "_No_Verification\" value=\"1\">"; } my %__gqo = (); $__gqo{'_cin'} = 1; $__gqo{'_cio'} = $__gqe; $__gqp->{'_bmm'} = \%__gqo; } } } return $__gqc; } sub _bmb { my ($__gqr, $__gqs, $__gqt) = @_; my $__gqq = $__gqr->SUPER::_bmb($__gqs, $__gqt); $__gqq = _cid($__gqr, $__gqq); return $__gqq; } sub _cid { my($__grb, $__grc) = @_; my $__gqu = $__grb->{'_bgt'}; my $__gqv = ""; my $__gqw = 0; if ($__gqu =~ m/^(.*?)_(.*?)$/) { $__gqv = $1; $__gqw = $2; } $__grc = authlib8_4_8::_bsl($__grc); if ($__grc =~ m/\[%MAXDIFFCURRENTSET\(\)%\]/i) { $__grc =~ s/\[%MAXDIFFCURRENTSET\(\)%\]/$__gqw/sgi; } if ($__grc =~ m/\[%MAXDIFFTOTALSETS\(\)%\]/i) { my $__gqx = 0; my $__gqy = ""; if(exists $__grb->{'_bkt'}->{'_xb'}) { $__gqx = $__grb->{'_bkt'}->{'_xb'}; } $__grc =~ s/\[%MAXDIFFTOTALSETS\(\)%\]/$__gqx/sgi; } if ($__grc =~ m/\[%MAXDIFFVERSION\(\)%\]/i) { my $__gqz = $__grb->{'_bkt'}->{'_cim'}; my $__gra = "D - " . $__gqz . ", T - " . $__gqu; $__grc =~ s/\[%MAXDIFFVERSION\(\)%\]/$__gra/sgi; } return $__grc; } sub _blt { my ($__gri) = @_; my $__grd = ""; my $__gre = ""; my $__grf = $__gri->{'_bkt'}; if (exists $__grf->{'_xz'}) { $__gre = ciwlib8_4_8::_bkb($__grf->{'_xz'}, 0, 0); if ($__gre) { $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .best_header {" . $__gre . "}\n"; } } if (exists $__grf->{'_yj'}) { $__gre = ciwlib8_4_8::_bkb($__grf->{'_yj'}, 0, 0); if ($__gre) { $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .items_header {" . $__gre . "}\n"; } } if (exists $__grf->{'_ye'}) { $__gre = ciwlib8_4_8::_bkb($__grf->{'_ye'}, 0, 0); if ($__gre) { $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .worst_header {" . $__gre . "}\n"; } } if (exists $__grf->{'_yo'}) { $__gre = ciwlib8_4_8::_bkb($__grf->{'_yo'}, 0, 0); if ($__gre) { $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .item_text_cell {" . $__gre . "}\n"; } } if (exists $__grf->{'_bef'}) { if (exists $__grf->{'_bef'}->{'_beg'}) { $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .alt_color1 {background-color: #" . $__grf->{'_bef'}->{'_beg'} . ";}\n"; } if (exists $__grf->{'_bef'}->{'_beh'}) { $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .alt_color2 {background-color: #" . $__grf->{'_bef'}->{'_beh'} . ";}\n"; } } if (exists $__grf->{'_bdk'}) { $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .inner_table td, #" . $__gri->{'_bgt'} . "_div .inner_table{border-width: " . $__grf->{'_bdk'} . "px; border-style: solid;}\n"; } if (exists $__grf->{'_bdl'}) { $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .inner_table td {padding: " . $__grf->{'_bdl'} . "px;}\n"; } if (exists $__grf->{'_bam'}) { $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .inner_table {" . ciwlib8_4_8::_bkc($__grf->{'_bam'}) . "}\n"; } if (exists $__grf->{'_xl'}) { $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .best_input_cell {background-color: #" . $__grf->{'_xl'} . "}\n"; $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .best_header {background-color: #" . $__grf->{'_xl'} . "}\n"; } if (exists $__grf->{'_xm'}) { $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .worst_input_cell {background-color: #" . $__grf->{'_xm'} . "}\n"; $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .worst_header {background-color: #" . $__grf->{'_xm'} . "}\n"; } if (exists $__grf->{'_yx'}) { if (exists $__grf->{'_yx'}->{'_yy'}) { my $__grg = $__grf->{'_yx'}->{'_yy'}; if (exists $__grg->{'_bfu'}) { $__gre = ciwlib8_4_8::_bkb($__grg, 0, 0); if ($__gre) { $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .dual_response_anchor .question_text {" . $__gre . "}\n"; } } } if (exists $__grf->{'_yx'}->{'_zd'}) { my $__grh = $__grf->{'_yx'}->{'_zd'}; $__gre = ciwlib8_4_8::_bkb($__grh, 0, 0); if ($__gre) { $__grd .= "\n#" . $__gri->{'_bgt'} . "_div .dual_response_anchor .options {" . $__gre . "}\n"; } } } return $__grd; } sub _bmf { my ($__gsp, $__gsq, $__gsr, $__gss, $__gst) = @_; my $__grj = ""; my $__grk = $__gsp->{'_bgt'}; my $__grl = $__gsp->{'_bkt'}; my $__grm = $__grl->{'_xa'}; my $__grn = ""; my $__gro = 80; if (exists $__grl->{'_bdj'}) { $__gro = $__grl->{'_bdj'}; } my $__grp = 0; if(exists $__grl->{'_xo'}) { $__grp = 1; } my $__grq = "alt_color1"; my $__grr = "alt_color2"; my $__grs = 0; $__grs = 100 - $__gro; if (!$__grp && $__grm != 4 && $__grm != 8) { $__grs = int($__grs / 2); } my $__grt = $__grl->{'_bmi'}; my $__gru = $__grl->{'_cil'}; my $__grv = ""; my $__grw = ""; my $__grx = ""; $__grj .= "<table class=\"inner_table\" width=\"100%\""; if ($__grl->{'_bal'}) { $__grj .= " style=\"width: " . $__grl->{'_bal'} . "px\""; } $__grj .= ">"; $__grv .= "<td class=\"best_header\""; if ($__grs > 0) { $__grv .= " width=\"" . $__grs . "%\""; } $__grv .= ">"; if (exists($__grl->{'_xz'})) { $__grv .= $__grl->{'_xz'}->{'_bft'}; $__grv = _cid($__gsp, $__grv); } else { $__grv .= "&nbsp;"; } $__grv .= "</td>"; $__grw .= "<td class=\"worst_header\""; if ($__grs > 0) { $__grw .= " width=\"" . $__grs . "%\""; } $__grw .= ">"; if (exists($__grl->{'_ye'})) { $__grw .= $__grl->{'_ye'}->{'_bft'}; $__grw = _cid($__gsp, $__grw); } else { $__grw .= "&nbsp;"; } $__grw .= "</td>"; $__grx .= "<td class=\"items_header\""; if ($__gro > 0) { $__grx .= " width=\""; if ($__grm == 4 || $__grm == 8) { $__grx .= $__grs; } else { $__grx .= $__gro; } $__grx .= "%\""; } $__grx .= ">"; if (exists($__grl->{'_yj'})) { $__grx .= $__grl->{'_yj'}->{'_bft'}; $__grx = _cid($__gsp, $__grx); } else { $__grx .= "&nbsp;"; } $__grx .= "</td>"; my $__gry = 0; my $__grz = ""; my $__gsa = @{$__gru}; my $__gsb = 0; my $__gsc = 1; if ($__grp) { if (!exists($__grl->{'_yj'}) && !exists($__grl->{'_xz'})) { $__gsc = 0; } } if ($__grm == 4 || $__grm == 8) { my $__gsd = 3; if ($__grp) { $__gsd = 2; if (!$__gsc) { $__gro = 0; } } my $__gse = int($__gro / $__gsa); my $__gsf = 0; my $__gsg = 1; if ($__grm == 8) { $__gsg = 0; } for ($__gsf = 1; $__gsf <= $__gsd; $__gsf++) { if ($__gsf == 1 && $__gsc) { $__grj .= "<tr>"; $__grj .= $__grx; } elsif ($__gsf == 2 && $__gsc) { $__grj .= "<tr id=\"" . $__grk; if ($__grm == 4) { $__grj .= "_b_row\">"; $__grj .= $__grv; } else { $__grj .= "_w_row\">"; $__grj .= $__grw; } } elsif ($__gsf == 3) { $__grj .= "<tr id=\"" . $__grk; if ($__grm == 4) { $__grj .= "_w_row\">"; $__grj .= $__grw; } else { $__grj .= "_b_row\">"; $__grj .= $__grv; } } foreach $__gsb (@{$__gru}) { $__gry = $__grt->[$__gsb]; $__gst = !$__gst; if ($__gst == 1) { $__grn = $__grq; } else { $__grn = $__grr; } if ($__gsf == 1) { $__grj .= _cie($__gry->{'_bft'}, $__grn, $__gse); } elsif ($__gsf == 2) { $__grj .= _cif($__grk, $__gsg, $__gry->{'_bcm'}, $__grl, $__grn); } elsif ($__gsf == 3) { $__grj .= _cif($__grk, !$__gsg, $__gry->{'_bcm'}, $__grl, $__grn); } } $__grj .= "</tr>"; if ($__gsf < 3) { if ($__gsa & 1) { $__gst = !$__gst; } } } } else { if ($__gsc) { $__grj .= "<tr>"; if ($__grm == 1) { $__grj .= $__grv; $__grj .= $__grx; if (!$__grp) { $__grj .= $__grw; } } elsif ($__grm == 2) { $__grj .= $__grv; if (!$__grp) { $__grj .= $__grw; } $__grj .= $__grx; } elsif ($__grm == 3) { $__grj .= $__grx; $__grj .= $__grv; if (!$__grp) { $__grj .= $__grw; } } elsif ($__grm == 5) { $__grj .= $__grw; $__grj .= $__grx; $__grj .= $__grv; } elsif ($__grm == 6) { $__grj .= $__grw; $__grj .= $__grv; $__grj .= $__grx; } elsif ($__grm == 7) { $__grj .= $__grx; $__grj .= $__grw; $__grj .= $__grv; } $__grj .= "</tr>"; } my $__gsh = ""; my $__gsi = ""; my $__gsj = ""; foreach $__gsb (@{$__gru}) { $__gry = $__grt->[$__gsb]; $__gst = !$__gst; if ($__gst == 1) { $__grn = $__grq; } else { $__grn = $__grr; } $__grj .= "<tr>"; $__gsh = _cif($__grk, 1, $__gry->{'_bcm'}, $__grl, $__grn); $__gsi = _cif($__grk, 0, $__gry->{'_bcm'}, $__grl, $__grn); $__gsj = _cie($__gry->{'_bft'}, $__grn, $__gro); if ($__grm == 1) { $__grj .= $__gsh; $__grj .= $__gsj; if (!$__grp) { $__grj .= $__gsi; } } elsif ($__grm == 2) { $__grj .= $__gsh; if (!$__grp) { $__grj .= $__gsi; } $__grj .= $__gsj; } elsif ($__grm == 3) { $__grj .= $__gsj; $__grj .= $__gsh; if (!$__grp) { $__grj .= $__gsi; } } elsif ($__grm == 5) { $__grj .= $__gsi; $__grj .= $__gsj; $__grj .= $__gsh; } elsif ($__grm == 6) { $__grj .= $__gsi; $__grj .= $__gsh; $__grj .= $__gsj; } elsif ($__grm == 7) { $__grj .= $__gsj; $__grj .= $__gsi; $__grj .= $__gsh; } $__grj .= "</tr>"; } } $__grj .= "</table>\n"; if (exists($__grl->{'_yx'})) { my $__gsk = $__grk . "_anchor"; $__grj .= "<div id=\"" . $__gsk . "\" class=\"dual_response_anchor\">\n"; if(exists $__grl->{'_yx'}->{'_yy'}) { $__grj .= "<div class=\"question_text\" >" . $__grl->{'_yx'}->{'_yy'}->{'_bft'} . "</div>"; } $__grj .= "<table class=\"indent\">\n"; my $__gsl = $__grl->{'_yx'}->{'_zh'}; my $__gsm = $__gsl->[0]->{'_bcm'}; my $__gsn = $__gsl->[0]->{'_bft'}; $__grj .= "<tr class=\"clickable\">"; $__grj .= "<td class=\"input_cell\">"; $__grj .= ciwlib8_4_8::_bkd($__gsk, $__gsm, 1, $__grl); $__grj .= "</td>\n"; $__grj .= "<td class=\"option_cell\">"; $__grj .= "<div class=\"options\"><label for=\"" . $__gsk . "_" . $__gsm . "\">"; $__grj .= $__gsn; $__grj .= "</label></div></td></tr>\n"; $__gsm = $__gsl->[1]->{'_bcm'}; $__gsn = $__gsl->[1]->{'_bft'}; $__grj .= "<tr class=\"clickable\">"; $__grj .= "<td class=\"input_cell\">"; $__grj .= ciwlib8_4_8::_bkd($__gsk, $__gsm, 1, $__grl); $__grj .= "</td>\n"; $__grj .= "<td class=\"option_cell\">"; $__grj .= "<div class=\"options\"><label for=\"" . $__gsk . "_" . $__gsm . "\">"; $__grj .= $__gsn; $__grj .= "</label></div></td></tr>\n"; $__gsm = $__gsl->[2]->{'_bcm'}; $__gsn = $__gsl->[2]->{'_bft'}; $__grj .= "<tr class=\"clickable\">"; $__grj .= "<td class=\"input_cell\">"; $__grj .= ciwlib8_4_8::_bkd($__gsk, $__gsm, 1, $__grl); $__grj .= "</td>\n"; $__grj .= "<td class=\"option_cell\">"; $__grj .= "<div class=\"options\"><label for=\"" . $__gsk . "_" . $__gsm . "\">"; $__grj .= $__gsn; $__grj .= "</label></div></td></tr>\n"; $__grj .= "</table>"; $__grj .= "</div>\n"; } if ($authlib8_4_8::_byb) { my $__gso = ""; foreach $__gsb (@{$__gru}) { $__gry = $__grt->[$__gsb]; $__gso .= $__gry->{'_bcm'} . ","; } chop($__gso); $__grj .= "<!--LoadTestMode: <question><name>" . $__grk . "</name><type>maxdiff</type><indices>$__gso</indices>"; $__grj .= "<bestonly>" . ($__grp ? "true" : "false") . "</bestonly>"; $__grj .= "<dualresponseanchor>" . (exists($__grl->{'_yx'}) ? "true" : "false") . "</dualresponseanchor>"; $__grj .= "</question>-->"; } if (($__gsa & 1)) { $__gst = !$__gst; } $__gsp->{'_bmm'} = {}; return $__grj; } sub _bmg { my($__gsx, $__gsy, $__gsz, $__gta) = @_; if (exists $__gsx->{'_bmm'}) { my $__gsu = $__gsx->{'_bmm'}; my $__gsv = $__gsx->{'_bgt'}; if ($__gsu->{'_cin'}) { $__gsv = $__gsu->{'_cio'}; $__gta--; } if ($__gsv) { my $__gsw = "SSI_RadCheck(\"" . $__gsv . "_b\",\"" . $__gsv . "\", \"" . ciwlib8_4_8::_bjo($__gsx->{'_bkt'}->{'_bds'}) . "\", " . $__gta . ", true)"; push @{$__gsy}, ($__gsw); $__gsz->{'_bli'} = 1; if (!exists $__gsx->{'_bkt'}->{'_xo'}) { $__gsw = "SSI_RadCheck(\"" . $__gsv . "_w\",\"" . $__gsv . "\", \"" . ciwlib8_4_8::_bjo($__gsx->{'_bkt'}->{'_bds'}) . "\", " . $__gta . ", true)"; push @{$__gsy}, $__gsw; $__gsw = "SSI_CheckMaxDiff(\"" . $__gsv . "\", \"" . ciwlib8_4_8::_bjo($__gsx->{'_bkt'}->{'_bds'}) . "\", " . $__gta . ")"; push @{$__gsy}, $__gsw; $__gsz->{'_blq'} = 1; } if ($__gsx->{'_bkt'}->{'_yx'}) { $__gsw = "SSI_RadCheck(\"" . $__gsv . "_anchor\",\"" . $__gsv . "\", \"" . ciwlib8_4_8::_bjo($__gsx->{'_bkt'}->{'_bds'}) . "\", " . $__gta . ", true)"; push @{$__gsy}, $__gsw; } } } } sub _cie { my($__gtc, $__gtd, $__gte) = @_; my $__gtb = ""; $__gtb .= "<td class=\"item_text_cell " . $__gtd . "\""; if ($__gte > 0) { $__gtb .= " width=\"" . $__gte . "%\" "; } $__gtb .= ">"; $__gtb .= "<div class=\"item_text\">" . $__gtc . "</div>"; $__gtb .= "</td>"; return $__gtb; } sub _cif { my($__gti, $__gtj, $__gtk, $__gtl, $__gtm) = @_; my $__gtf = ""; my $__gtg = $__gti; my $__gth = ""; if ($__gtj) { $__gtg .= "_b"; $__gth = "best_input_cell"; } else { $__gtg .= "_w"; $__gth = "worst_input_cell"; } $__gtf .= "<td class=\"" . $__gth . " " . $__gtm . " " . $__gtg . " input_cell clickable\">"; $__gtf .= ciwlib8_4_8::_bkd($__gtg, $__gtk, 1, $__gtl); $__gtf .= "</td>"; return $__gtf; } sub _cig { my($__guj, $__guk, $__gul, $__gum) = @_; my $__gtn = ""; my $__gto = 0; my $__gtp = 0; my $__gtq = 0; my $__gtr = 0; my $__gts = 1; my $__gtt = 0; my $__gtu = 0; my $__gtv = 0; my $__gtw = 0; my $__gtx = 0; my $__gty = "_MXD" . $__guk . "_" . $__gul . ".cgi"; my $__gtz = $authlib8_4_8::_bwv{'_cba'} . $authlib8_4_8::_byz . $__gty; my ($__gun, $__guo) = authlib8_4_8::_bon($__gtz, "read", 1, 1); binmode $__gun; if (((-s $__gtz) != $__gum) && ($authlib8_4_8::_bzy == 0)) { close $__gun; authlib8_4_8::_bqa(158, "MaxDiff design file error.", "The size of the MaxDiff design file (" . $__gtz . ") does not match the size expected by the QST file. Try uploading the file again in binary mode.", ""); } my $__gua = 0; read ($__gun, $__gtn, 4); ($__gto) = unpack("V", $__gtn); if ($__gto == 1) { $__gua = 22; } else { $__gua = 23; } read ($__gun, $__gtn, $__gua - 4); if ($__gto == 1) { ($__gtp, $__gtq, $__gtr, $__gtt, $__gtu, $__gtv, $__gtw, $__gtx) = unpack("VVCvvvvC", $__gtn); } else { ($__gtp, $__gtq, $__gtr, $__gts, $__gtt, $__gtu, $__gtv, $__gtw, $__gtx) = unpack("VVCCvvvvC", $__gtn); } if ($__gtp != $__guk) { close $__gun; authlib8_4_8::_bqa(159, "MaxDiff design file error.", "Exercise ID in MaxDiff design file (" . $__gtz . ") does not match exercise ID in the QST file.", ""); } elsif ($__gtq != $__gul) { close $__gun; authlib8_4_8::_bqa(160, "MaxDiff design file error.", "Unique ID in MaxDiff design file (" . $__gtz . ") does not match unique ID in the QST file.", ""); } my $__gub = $authlib8_4_8::_bzi{"hid_respnum"}; my $__guc = ($__gub - 1) % $__gtt; _cih($__guj, $__gtp, $__gtq, $__guc, $__gts); my $__gud = $__gua; my $__gue = $__gtw * $__gtx; my $__guf = $__gtv * $__gue; $__gud += ($__guc * $__guf); my $__gug = 0; if ($__guj =~ m/(.*?)_(\d+)/i) { $__gug = int($2); } $__gud += (($__gug - 1) * $__gue); seek ($__gun, $__gud, 0); my $__guh = ""; read $__gun, $__guh, $__gue; my @__gui = (); if ($__gtx == 1) { @__gui = unpack("C*", $__guh); } elsif ($__gtx == 2) { @__gui = unpack("v*", $__guh); } close $__gun; return (\@__gui, $__guc); } sub _cih { my($__gux, $__guy, $__guz, $__gva, $__gvb) = @_; my $__gup = $__gux; $__gup =~ s/_\d+//; my $__guq = "sys_MXDDesignID_" . $__gup; my $__gur = "MXD" . $__guy . "_" . $__guz . "_" . $__gvb; my $__gus = authlib8_4_8::_bnc($__guq); if ($__gus) { $__gus = $__gus; if ($__gvb == 1) { if ($__gus !~ m/^(.*?)_(\d+)_(\d+)$/ig) { $__gur =~ s/^(.*?)_(\d+)$/$1/; } } if ($__gus ne $__gur) { my $__gut = "sys_MXDDesignError_" . $__gup; if (!authlib8_4_8::_bnc($__gut)) { my $__guu = "MaxDiff Design Error: This data record contains data from two different MaxDiff designs. " . $__gur; authlib8_4_8::_bse(0, $__guu . " Call Sawtooth Software for assistance."); $authlib8_4_8::_byi{$__gut} = $__guu; authlib8_4_8::_bnd($__gut, $__guu); } } } else { $authlib8_4_8::_byi{$__guq} = $__gur; authlib8_4_8::_bnd($__guq, $__gur); } my $__guv = "sys_MXDVersion_" . $__gup; my $__guw = $__gva + 1; if (!authlib8_4_8::_bnc($__guv)) { $authlib8_4_8::_byi{$__guv} = $__guw; authlib8_4_8::_bnd($__guv, $__guw); } } sub _cii { my ($__gwb, $__gwc) = @_; my $__gvc = 0; my $__gvd = -9999; my $__gve = 1; my $__gvf = 100; my $__gvg = 0.03; my $__gvh = 15; my @__gvi = (0) x $__gwc; for (my $__gvj = 0; $__gvj < $__gvf; $__gvj++) { $__gvc = 0; my @__gvk = (0) x $__gwc; foreach my $__gvl (values %{$__gwb}) { my @__gvm = map { $__gvi[$_] } @{$__gvl->{'_chq'}}; if (exists $__gvl->{'_chw'}) { my $__gvn = 0; my @__gvo = map{$_ / $__gvn} map { my $__gvp = exp($_); $__gvn += $__gvp; $__gvp } @__gvm; my $__gvq = 0; $__gvq++ until $__gvl->{'_chq'}->[$__gvq] == $__gvl->{'_chw'}; $__gvc += log($__gvo[$__gvq]); map { $_ = -$_ } @__gvo; $__gvo[$__gvq] += 1; for (my $__gvr = 0; $__gvr < @__gvm; $__gvr++) { $__gvk[$__gvl->{'_chq'}->[$__gvr]] += $__gvo[$__gvr]; } } if (exists $__gvl->{'_cip'}) { my $__gvs = 0; my @__gvt = map {$_ / $__gvs} map { my $__gvp = exp(-$_); $__gvs += $__gvp; $__gvp } @__gvm; my $__gvq = 0; $__gvq++ until $__gvl->{'_chq'}->[$__gvq] == $__gvl->{'_cip'}; $__gvc += log($__gvt[$__gvq]); $__gvt[$__gvq] -= 1; for (my $__gvr = 0; $__gvr < @__gvm; $__gvr++) { $__gvk[$__gvl->{'_chq'}->[$__gvr]] += $__gvt[$__gvr]; } } } my $__gvu = -0x80000000; my $__gvv = 0x80000000; for (my $__gvr = 0; $__gvr < @__gvi; $__gvr++) { $__gvi[$__gvr] += $__gvk[$__gvr] * $__gve; if ($__gvu < $__gvi[$__gvr]) { $__gvu = $__gvi[$__gvr]; } if ($__gvv > $__gvi[$__gvr]) { $__gvv = $__gvi[$__gvr]; } } if(abs($__gvc - $__gvd) < $__gvg) { last; } elsif(abs($__gvu - $__gvv) > $__gvh) { last; } $__gvd = $__gvc; } my $__gvw = 0; for (my $__gvj = 0; $__gvj < @__gvi; $__gvj++) { $__gvw += $__gvi[$__gvj]; } my $__gvx = $__gvw / @__gvi; my $__gvy = 0; foreach my $__gvz (@__gvi) { my $__gwa = exp($__gvz - $__gvx); $__gvz = $__gwa / ($__gwa + 1); $__gvy += $__gvz; } $__gvy = 100 / $__gvy; map { $_ *= $__gvy } @__gvi; return \@__gvi; } sub _cij { my($__gwp, $__gwq) = @_; my $__gwd = 0; my $__gwe = 0; my $__gwf = 1; my $__gwg = $__gwq . "_" . $__gwf; my $__gwh = 0; my $__gwi = 0; my $__gwj = ""; my %__gwk = (); my $__gwl = 0; my $__gwm = 0; my $__gwn = authlib8_4_8::_brj($__gwp); my $__gwo = _cik($__gwg . "_b", $__gwn); while ($__gwo) { ($__gwh, $__gwi) = _cig($__gwg, $__gwp->{'_ww'}, $__gwp->{'_wx'}, $__gwp->{'_wy'}); $__gwl = {}; $__gwl->{'_chq'} = $__gwh; $__gwl->{'_chw'} = $__gwo - 1; $__gwm = _cik($__gwg . "_w", $__gwn); if ($__gwm) { $__gwl->{'_cip'} = $__gwm - 1; } $__gwk{$__gwf} = $__gwl; $__gwf++; $__gwg = $__gwq . "_" . $__gwf; $__gwo = _cik($__gwg . "_b", $__gwn); } return \%__gwk; } sub _cik { my($__gwt, $__gwu) = @_; my $__gwr = 0; my $__gws = authlib8_4_8::VALUE($__gwt); if (exists $__gwu->{$__gws}) { $__gwr = $__gwu->{$__gws} + 1; } return $__gwr; } 1; 
