/////////////////////////////////////////////////////
// DEPENDS ON JQUERY AVAILABLILITY

function deprecated(aFunctionName) {
    if(s) { 
       if(!s.prop22) { s.prop22 = "" }
       s.prop22 = s.prop22 + ";deprecated: " + aFunctionName; 
    }
}

// for temporary use to find call sites.
// Don't use for calls you intend to remove...
function flagged(aFunctionName) {
   if(s) {
       if(!s.prop22) { s.prop22 = "" }
       s.prop22 = s.prop22 + ";flagged: " + aFunctionName; 
   }
}

/////////////////////////////////////////////////////
//Search Box Functions
function clearSearchBox(anOptionalTextboxName)
{
  var use_textbox_name = anOptionalTextboxName;
  
  if("undefined" == typeof use_textbox_name) {
    use_textbox_name = "SearchBox_dc_searchtext";
  }
    
  var searchVal = document.forms['template'][use_textbox_name].value;
  if (searchVal == 'keyword or item #'){
    document.forms['template'][use_textbox_name].value = "";
  }
}

function setSearchBox(anOptionalTextboxName)
{
  var use_textbox_name = anOptionalTextboxName;
  
  if("undefined" == typeof use_textbox_name) {
    use_textbox_name = "SearchBox_dc_searchtext";
  }

  var searchVal = document.forms['template'][use_textbox_name].value;
  if (searchVal == null || searchVal == ""){
    document.forms['template'][use_textbox_name].value = "keyword or item #";
  }
}

// cookie functions

function getURLArgs() {
	
	var URLargs = new Object();
	var query = location.search.substring(1);
	var pairs = query.split("&");
	
	for(var i = 0; i < pairs.length; i++) {
		var pos = pairs[i].indexOf('=');
		if (pos == -1) continue;
		var URLargname = pairs[i].substring(0,pos);
		var value = pairs[i].substring(pos+1);
		URLargs[URLargname] = unescape(value);                
	}

	return URLargs;
}

function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name)
{
	createCookie(name,"",-1);
}

function MM_openBrWindow(theURL,winName,features, myWidth, myHeight, isCenter) { //v3.0

  if(window.screen)if(isCenter)if(isCenter=="true"){

    var myLeft = (screen.width-myWidth)/2;

    var myTop = (screen.height-myHeight)/2;

    features+=(features!='')?',':'';

    features+=',left='+myLeft+',top='+myTop;

  }

  window.open(theURL,winName,features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight);

}



// DO NOT USE (This should be in page local code...)
function clickPopUp()
{
        deprecated("clickPopUp");

        if(readCookie('WP04Q4-1') == '150') {				
        	window.open("content/76/01/freeship_wp04q4-1a.htm", "Freeshipping","width=290,height=350" );
			createCookie('WP04Q4-1','150','30');

	    } else if (readCookie('WP04Q4-1') == '0') {					
			
        	window.open("content/76/01/freeship_wp04q4-1a.htm", "Freeshipping","width=290,height=350" );
			createCookie('WP04Q4-1','0','30');

	    } else if (readCookie('WP04Q4-1') == null) {					
			
            window.open("content/76/01/freeship_wp04q4-1a.htm", "Freeshipping","width=290,height=350" );
			createCookie('WP04Q4-1','0','30');
	    }				
}



// Do not use
genRandom = Math.random;

// takes an optional list of tags and probabilities,
// of the form { tag1: prob, tag2: prob }. If the probabilities
// add up to more than 1.0, you'll get strange results. If the
// probabililties add up to less than 1.0, you might get no value
// for the test.
function setABTest(aTestDomainName, aTableOfTestValues, aDurationInDays)
{
	var useDomain = aTestDomainName;
	if('undefined' == typeof useDomain) {
		useDomain = 'abtestval';
	}
	
	var useTable = aTableOfTestValues;
	if('undefined' == typeof useTable) {
		useTable = { A: 0.9, B: 0.1 };
	}
	
	var useDuration = aDurationInDays;
	if('undefined' == typeof useDuration) {
		useDuration = 30;
	}
	
	if(readCookie(aTestDomainName) == null)
	{
		var abtest   = Math.random();
		var sumSoFar = 0.0;
		var abtestval;
		
		for(testval in useTable) {
			sumSoFar = sumSoFar + useTable[testval];
			
			if(abtest < sumSoFar) {
				createCookie(useDomain, testval, aDurationInDays);
				break;
			}
		}//for(testval in useTable)	
	}//if(readCookie == null)
	
	var abtestval = readCookie(useDomain);
	return abtestval;
}//setABTest()

//Coremetrics Functions

// Called in a Product Details control hook.
// Right now, it does nothing, but might be useful in the future...
function cm_GenProdTags() {};



function goOrderPixel(orderNumber, orderAmount, orderShipping, orderCustID, city, state, zip) {

  var orderTotal = (orderAmount*1) + (orderShipping*1);
  orderTotal = Math.round(orderTotal*100)/100;
  

  //Channel Intelligence
  var ci_ref_codes = readCookie("ci_ref_codes");
  if(null != ci_ref_codes) {
    var ci_vendor_id = "19786246";
    var ci_params = [
      'v=' + ci_vendor_id,
      'o=' + orderNumber,
      ci_ref_codes
    ];

    var products = [];

    if('undefined' != typeof window.mainArray) {
      for(var i=0; i<window.mainArray.length; i++) {
        var product = new Object();
        product.sku = window.mainArray[i]['cm_itemid'];
        product.qty = window.mainArray[i]['cm_qty'];
        product.unit_price = window.mainArray[i]['cm_uprice'];
        products[products.length] = product; 
      }
    }//mainArray

    for(var i=0; i<products.length; i++) {
      var sprop_value = [ products[i].sku, products[i].qty, products[i].unit_price, ''].join('|');
      ci_params[ci_params.length] = "s=" + sprop_value;
    }//for 

    var ci_querystring = ci_params.join('&');
    var ci_imagetag = '<img src="https://secure.channelintelligence.com/links/pages/clkcmp.asp?' + ci_querystring + '" height="1" width="1" border="0" alt="" />';
    document.write(ci_imagetag);
    
    //document.write('<img src="https://secure.channelintelligence.com/links/pages/clkcmp.asp?v=11111&srccode=' + cii_11111 + '&s=S1234|1|159.99|Model123&s=S45678|2|89.99|Model456|Store123&o=44110759&cpncode=00-990099" height="1" width="1" border="0" alt="">)'
  }//Channel Intelligence

  //ScanAlert
  document.write('<br /><br /><a target="_blank" href="https://www.scanalert.com/RatingVerify?ref=www.jewelrytelevision.com"><img width="97" height="26" border="0" src="//images.scanalert.com/meter/survey/www.jewelrytelevision.com/35.gif?recsale=yes&key=' + orderNumber + '" alt="HACKER SAFE certified sites prevent over 99.9% of hacker crime." oncontextmenu="alert(\'Copying Prohibited by Law - HACKER SAFE  is a Trademark of ScanAlert\'); return false;"></a>');

  //Omniture
  s.events="purchase";
  s.purchaseID=orderNumber;
  s.state=state;
  s.zip=zip;
  s.eVar8=city;
  s.eVar10=state;
  s.eVar11=zip;
  s.eVar13=city;
  oProdStringEnd = ';Tax & Shipping;;;event3=0|event4=' + orderShipping + ',;;;;event9=0';
}//goOrderPixel


function goOrderLItemPixel(){
	//Omniture
	oProdString = '';
	for(i=0; i<goProductList.length;i++){
		oProdString = oProdString + ';' + goProductList[i][2] + ';' + goProductList[i][4] + ';' + goProductList[i][5] + ';,';
	}
	oProdString = oProdString + oProdStringEnd;
	s.products = oProdString;
}

function goCartLItemPixel(){
	//Omniture
	oProdString = '';
	for(i=0; i<goProductList.length;i++){
		oProdString = oProdString + ';' + goProductList[i][2] + ';' + goProductList[i][4] + ',';
	}
	s.products = oProdString;
	s.events="scView";
}


// Should move to catalog header
function visible_catalog_items() {

  var found = [];

  $("td.image_product > a").each(
    function() { 
      var mtch = this.href.match(/bca=([^&]*)/)
      if(mtch) { found[found.length] = mtch[1]; } 
    }
  );

  return found;
}

 
// Should move to catalog header
function visible_catalog_items_string(anOptionalDelimiter) {
  var use_delimiter = anOptionalDelimiter;
  if('undefined' == typeof anOptionalDelimiter) {
    use_delimiter = ",";
  }

  return (visible_catalog_items().join(use_delimiter));  
}//visible_catalog_items_string


// DO NOT CALL
function cmCrossSell() {
        deprecated("cmCrossSell");
	var qry = document.location.search;	
	if(/cm_re=ProdRelatedItems/.test(qry)) {
		cm_up = "CrossSell";
	}
}//cmCrossSell()


// DO NOT USE DEPRECATED : Use getURLArgs() instead
function grabUrlParamValue(aVarPrefix) {
    deprecated("grabUrlParamValue");
    var ret; //= undefined
    var pat = new RegExp(aVarPrefix + "([^&]*)(&|$)");
    var mtch = document.location.toString().match(pat);
    if(mtch) { ret = mtch[1]; }
    return ret;
}

function grabReferringProductId() {
        var url_args = getURLArgs();
	var ret = url_args.bca;
	var prod_id = url_args.product_id;
	
	if('undefined' != prod_id) { ret = prod_id; }
	
	return ret;
}//grabReferringProductId()

// DO NOT CALL
function cmProductPosition() {
  deprecated("cmProductPosition");
  var url_args = getURLArgs();
  return url_args.cm_pos;
}// cmProductPosition()


// DO NOT CALL
function cm_reValue() {
        deprecated("cm_reValue");
	return grabUrlParamValue("cm_re=Results\\*");
}


//////////////////////////////////////////////////////
//Misc Functions
function testVal(alertval)
{
	if(document.domain == 'test.jewelrytv.com' || document.domain == '10.0.0.70')
	{
		alert(alertval);
	}
}

//Function that Replaces all values in a given string
//DO NOT USE- use String.replace() directly
function doReplace(strExisting,strOld,strNew){
  deprecated("doReplace");  

  var strWorking = strExisting;
  var i = strWorking.indexOf(strOld);

  while(i > -1) {
    strWorking = strWorking.replace(strOld,strNew);
    i = strWorking.indexOf(strOld, i + strNew.length + 1);
  }

  return strWorking;
}


// Channel Intelligence data
function _remember_ci_ref_codes() {
  var ci_ref_codes; //= undefined
  var url_args = getURLArgs();

  var ci_srccode = url_args.srccode;
  var ci_cpncode = url_args.cpncode;

  if(ci_srccode) { ci_ref_codes = "srccode=" + ci_srccode; }

  if(ci_cpncode) { ci_ref_codes = "cpncode=" + ci_cpncode; }

  if(ci_srccode && ci_cpncode) {
     ci_ref_codes = "srccode=" + ci_srccode + "&" + "cpncode=" + ci_cpncode;
  }

  if(ci_ref_codes) { createCookie("ci_ref_codes", ci_ref_codes, '30'); }
}
_remember_ci_ref_codes();


//flash player detection DO NOT USE! DEPRECATED!
var flashVersion = 0;
function getFlashVersion() {
   deprecated("getFlashVersion");

var agent = navigator.userAgent.toLowerCase();

// NS3 needs flashVersion to be a local variable
if (agent.indexOf("mozilla/3") != -1 && agent.indexOf("msie") == -1) {
flashVersion = 0;
}

// NS3+, Opera3+, IE5+ Mac (support plugin array): check for Flash plugin in plugin array
if (navigator.plugins != null && navigator.plugins.length > 0) {
var flashPlugin = navigator.plugins['Shockwave Flash'];
if (typeof flashPlugin == 'object') {
if (flashPlugin.description.indexOf('9.') != -1) flashVersion = 9;
else if (flashPlugin.description.indexOf('8.') != -1) flashVersion = 8;
else if (flashPlugin.description.indexOf('7.') != -1) flashVersion = 7;
else if (flashPlugin.description.indexOf('6.') != -1) flashVersion = 6;
else if (flashPlugin.description.indexOf('5.') != -1) flashVersion = 5;
else if (flashPlugin.description.indexOf('4.') != -1) flashVersion = 4;
else if (flashPlugin.description.indexOf('3.') != -1) flashVersion = 3;
}
}

// IE4+ Win32: attempt to create an ActiveX object using VBScript
else if (agent.indexOf("msie") != -1 && parseInt(navigator.appVersion) >= 4 && agent.indexOf("win")!=-1 && agent.indexOf("16bit")==-1) {
document.write('<scr' + 'ipt language="VBScript"\> \n');
document.write('on error resume next \n');
document.write('dim obFlash \n');
document.write('set obFlash = CreateObject("ShockwaveFlash.ShockwaveFlash.9") \n');
document.write('if IsObject(obFlash) then \n');
document.write('flashVersion = 9\n');
document.write('else set obFlash = CreateObject("ShockwaveFlash.ShockwaveFlash.8") end if \n');
document.write('if flashVersion < 9 and IsObject(obFlash) then \n');
document.write('flashVersion = 8 \n');
document.write('else set obFlash = CreateObject("ShockwaveFlash.ShockwaveFlash.7") end if \n');
document.write('if flashVersion < 8 and IsObject(obFlash) then \n');
document.write('flashVersion = 7 \n');
document.write('else set obFlash = CreateObject("ShockwaveFlash.ShockwaveFlash.6") end if \n');
document.write('if flashVersion < 7 and IsObject(obFlash) then \n');
document.write('flashVersion =6 \n');
document.write('else set obFlash = CreateObject("ShockwaveFlash.ShockwaveFlash.5") end if \n');
document.write('if flashVersion < 6 and IsObject(obFlash) then \n');
document.write('flashVersion = 5 \n');
document.write('else set obFlash = CreateObject("ShockwaveFlash.ShockwaveFlash.4") end if \n');
document.write('if flashVersion < 5and IsObject(obFlash) then \n');
document.write('flashVersion = 4 \n');
document.write('end if');
document.write('</scr' + 'ipt\> \n');
}

// WebTV 2.5 supports flash 3
else if (agent.indexOf("webtv/2.5") != -1) flashVersion = 3;

// older WebTV supports flash 2
else if (agent.indexOf("webtv") != -1) flashVersion = 2;

// Can't detect in all other cases
else {
flashVersion = flashVersion_DONTKNOW;
}

return flashVersion;
}

	
function popUp(dest)
{          		
 window.open(dest, "MyWindow","width=290,height=350");		       				
}

/********************************************************************/
/*  getElementsByClassName from 
    http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/
       Written by Jonathan Snook, http://www.snook.ca/jonathan
       Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}



////////////////////////////////////////////////////////////////////////////////
// Cross-browser info about the viewport, etc...


function scrollOffset() {
  // thanks http://www.quirksmode.org/viewport/compatibility.html
  var xoffset,yoffset;
  if (self.pageYOffset) { // all except Explorer
    xoffset = self.pageXOffset;
    yoffset = self.pageYOffset;
  }
  else if (document.documentElement && document.documentElement.scrollTop) {     // Explorer 6 Strict
    xoffset = document.documentElement.scrollLeft;
    yoffset = document.documentElement.scrollTop;
  }
  else if (document.body) { // all other Explorers
    xoffset = document.body.scrollLeft;
    yoffset = document.body.scrollTop;
  }

  return {x: xoffset, y: yoffset}; 
}//pageDimensions()

function viewportDimensions() {
  // thanks http://www.quirksmode.org/viewport/compatibility.html
  var xwidth,yheight;
  if (self.innerHeight) {// all except Explorer
    xwidth = self.innerWidth;
    yheight = self.innerHeight;
  }
  else if (document.documentElement && document.documentElement.clientHeight) {	// Explorer 6 Strict Mode
    xwidth = document.documentElement.clientWidth;
    yheight = document.documentElement.clientHeight;
  }
  else if (document.body) { // other Explorers
    xwidth = document.body.clientWidth;
    yheight = document.body.clientHeight;
  }

  return { x: xwidth, y: yheight };
}//viewportDimensions()

//////////////////////////////////////
// Cross-browser:
// Page-relative mouse point (for body-decendant, absolutely positioned CSS)
// from an event (or window.event)
function absMousePoint(anEvent) {	

  var use_evt = anEvent;
  var win_offset = scrollOffset();

  if('undefined' == typeof use_evt)
    use_evt = window.event;

  var doc_x = use_evt.pageX;
  if('undefined' == typeof doc_x)
    doc_x = use_evt.clientX + win_offset.x; // ASSUMES QUIRKS/IE!

  var doc_y = use_evt.pageY;
  if('undefined' == typeof doc_y)
    doc_y = use_evt.clientY + win_offset.y; // ASSUMES QUIRKS/IE!

  return { x: doc_x, y: doc_y };
}


/////////////////////////////////////
// Tooltip. Calling conventions:
// <img ... onMouseOver="goTip('helpElementIdAsString', arguments[0])"
//          onMouseOut="goTip('helpElementIdAsString', arguments[0])" />

//
function goTip(tipId, evt) {
  var tip = document.getElementById(tipId);
  var mouse       = absMousePoint(evt); // in page coords
  var viewportDim = viewportDimensions();
  var scrollOff   = scrollOffset();
  

  if(typeof(tip) == "object" && tip != null) {
    var posx = mouse.x;
    var posy = mouse.y;

    //    alert("Tip bottom, right: " + tip.offsetWidth + ", " + tip.offsetHeight);
    var xbound = (scrollOff.x + viewportDim.x);
    var ybound = (scrollOff.y + viewportDim.y);

    var try_right_edge  = (posx + tip.offsetWidth);
    var try_bottom_edge = (posy + tip.offsetHeight);

    if(xbound < try_right_edge) {
      tip.style.left = (posx - tip.offsetWidth);
    }
    else {
      tip.style.left = posx + 5;
    }

    if(ybound < try_bottom_edge) {
      tip.style.top = (posy - tip.offsetHeight);
    }
    else {
      tip.style.top = posy + 5;
    }

    state = tip.style.visibility;
    if(state == 'hidden' || state == '')
      tip.style.visibility = 'visible';
    else if(state == 'visible')
      tip.style.visibility = 'hidden';
  }// if tip isn't null
}//goTip()

///////////////////////////////////////////////////////////////////

var junk_iframe_ids = new Object();

function showOverlay(anOverlayId) {

  hideOverlay(anOverlayId);

  var elem = document.getElementById(anOverlayId);
  var scrollOff   = scrollOffset();

  elem.style.position = 'absolute';
  elem.style.top      = '' + (50 + scrollOff.y) + 'px';
  elem.style.left     = '50%';
  elem.style.width    = '400px';
  elem.style.marginLeft = '-200px';
  elem.style.height   = '400px';
  
  // hurrah for IE!
  var junk_iframe_id = 'ie_iframe_' + Math.ceil(Math.random() * 1000000);
  junk_iframe_ids[anOverlayId] = junk_iframe_id;
  
  var ie_fix = document.createElement('iframe');
  ie_fix.setAttribute('id', junk_iframe_id);
  ie_fix.setAttribute('src', "about:blank");
  
  ie_fix.style.position = 'absolute';
  ie_fix.style.top    = elem.style.top;
  ie_fix.style.left   = elem.style.left;
  ie_fix.style.width  = elem.style.width;
  ie_fix.style.height = elem.style.height;
  ie_fix.style.marginLeft = elem.style.marginLeft;
  
  elem.parentNode.insertBefore(ie_fix, elem);
  elem.style.visibility = 'visible';

}

function hideOverlay(anOverlayId) {
  var elem = document.getElementById(anOverlayId);
  elem.style.visibility = 'hidden';
  var ie_fix_id = junk_iframe_ids[anOverlayId];

  if('undefined' != typeof ie_fix_id) {
    var ie_fix = document.getElementById(ie_fix_id);
    ie_fix.parentNode.removeChild(ie_fix);
    delete junk_iframe_ids[anOverlayId];
  }
}


////////////////////////////////////////////////////////////////////////
// Error handling

function raiseError(anErrorMessage) {
	
    var messageTable = {
         NO_SIZE : function() {  showOverlay('selectSizeError');  }
    };

    var error_handled = false;

    if('undefined' != typeof anErrorMessage) {
       var errorType = anErrorMessage.errorType;
       var action = messageTable[errorType];
       if('undefined' != typeof action) {
           error_handled = true;
           action(anErrorMessage);
       }
    }// anErrorMessage is defined

    if(! error_handled) { alert("An error has occurred"); }
}


// DO NOT USE
function userBandwith() {
   deprecated("userBandwith");
   var datasize=31468;
   var TimeinMillisecs = bandwidth_endTime - bandwidth_startTime;
   var TimeinSecs = TimeinMillisecs/1000;
   var kbits = (datasize*8)/1024;   // convert Bytes to kbits,
   return kbits;
}

    date = new Date();
    bandwidth_startTime=date.getTime();

	// JFIF,,#%$""!&+7/&)4)!"0A149;%.DIC<H7=;C;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;c"}!1AQa"q2?#BR$3br%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2?B#3Rbr$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?i?<#Q4fW(;_\xGh.3K?KP(}qKZ1_^x\R?bQ_^|i.8|Q&)?o}?)qK\zW:i? R??t&)t}?.)?O?Q_`|?1W:QO?.(}?bbW:Q+|?%8?:OsJ$y)85qG?gPaEQ<ArNxNrk'<h?K-fja?Z.4q=]IJ-?PS('22A#4-FA;Xl&?k?2SXh=?-d1{rQz?D9IWW???4U3W0:?f"6ws^qH^]\\yf\tjT?==}$1T{D?8?2N}jZ<'-_?<tS_^|tc\QSE}? p.)qF+??R???StbO??E}?b??v+??L{W:R?Q_`|?E}?PE}?-;?KRK~ghyS5-bYq_C:~w<|5y?zf?$?Gl{UJ??Uh?qA$`'{??i?8Q?3?=jl`F)jmA\??GFB?A?]RUXE;NA=kVI)3H+BOO&O?xM'53kph;?E<G[?B?E?s?1?[HzzS?IC+b?er$+K/Pi*?~!ulQ*??Gq<TJ,pku5??Gley2\s?J:1?+aql?6wgt?TKy'?A?TP#G5FW1u,QHvt2J*;z???e?)n[?j"g+$M:j)cj8=v?PynAWxXX<(sKj <(?`V?[L3F2RWOhy2Il}Mg|?F0?@?i!kK??.*omF'r87<NktIv*AG#'}w4YG.) uv;<v+??.)~8:D31N.+?NNh?\Sl?;,?1IE/75^Pl8?V?9?)1T[S?z?{`Jg?\VMLHj\H:}R?LV$R?%H?yy$?u+7*u??`|8;?pFI{6,/s4^?]h@j?C?S?WXPWDFNjFFOZo.(6.K2Mm,^Xr?v7y=LU?eZ9I??`?0obOeX?vQ?gvL-jkrO??&U ?:h#(h??82hL(uNvL?B<zbSil8E?1I50yR5S??3QUcN3[tSD?n?VQ,WU?awSk})YU?"IX.2{g-E^Y?Yn8v?UHQ??AqJ^&Kv~;xl}kp?TGq?6o#y6a?XBG%kp?^f(FfZ}??*:/z[KwW.)R\A?ozG^19?i%g*3?P?~Y?$5bEw-g??3v?y}\mn|2$??E$zv[c"p:Et]CeDfb3?,V?9^??VPN?#i"9b?2I{#N?[y-dP?idaF+OcVifRvbq5#rB?[IyJ!QWo(k.us3f34$_c?_DbI{R<<~?S1tIl]f%?L??f??+,KU?sse?$z?N?-u?n??JU.?2?if?--?LS#n*?#qM?e^Us<<;?[iH=XQSYdT/Ua?"2am;nk-u!w6{?"?At?U;=fMz}1?o@m9QK4fu:B+dS?I#h?VPHf@5#fc^*RK*+VG'h,2j9a'9<)7??I<Y$,KM?[d-%nab=h1wRs`9f.|ecmrlf6n9Mf2e[#A4???oG^$gq*zV5H?UK??85..NXyvA?x:w:kX##*AeSs]3xn?0%2e}ZO??l(|T$#8` r3VtP_$q["L?MrQZU?exrG?ORwf9?KA)V?#(1HhFT?qI?u;??+,?)*??H'?0??]V2 J6(T3?Rb?2Nh[/"ul;b6aZ?,P(?G$VO-{Kc=?<,vnHr+nu??,UNce4r<{,AxM[npMX3m%o`??Kg.6m?U|Bp ,6^A[.?fID]A?Gs:-b$hL0Tw??1xFiZ21??K@5:kfD??J<rE*?8=9)D??c$?:7Z<m?j$U:zS%6((OU5f8?\s9EncMY@@?Lk??hIcpmC*}#??c]woqnu?Vp.@?F%3tW4?8q[c&k7`8?*Iv5iHQi?4N50H+}'ToB)$05'?E9b[?[7}?Z?X+=Z n$*89mKr0@[???nsKmoj?Y6`~]BIe?tsTq6Gka\4m%?Z?ceh$HqE?9][V`6UTf\r_[8r??Ke4Kg"I_X$)Ob7vV`pj|?HcEl-S^f8.Ny2F?sO{XNG?p- #}iKNsSk?!~?Wc[JO8?,??!Q]OL&r@3t_hXq?M<u'4?h8i?r2OJpb;.0=A?T=IO;,}D8pGZGm\{??68iu?b2^m?c]?$Z/m'S!\GopC.QZ:mV( hI)V?T0$fbay(I?iKr;WV{m3?I}1R$K??llb1LOI?o9V26p2y?c-#tbRoSxL.c1f(6H<[@DrJmwmG?Z{?m+^<@)'FSq@GH.##T|?!v6H@PO5$Bg|)gi$dLCqLfK??~x?b\oYUdT?cu3li7<mV?h?o?:?H93kJ&i??dd\R3r0z?\Zrs?%1/Ogc*[,q#UJj?XX\MUMif?L}*1Y%<_?:K$c?y?0wbg?qwp2qTaH?4iTY[{Rn,X;Nz-7?qo[%wq^ZGkF4?V@ZWi{?N6?`5W&66'P1]`X5W8J\\9?.W^z*y<?Zurh"9?YfU?.+#Saf-?xIq"D"c_\UxdO/?1P;H<b,+&C/Fe)!zBDR~U5RrP'JZVD vjNcs@*???.}J4lwco bhXLdsU%HKUMCt6rpVsJ&?EmHU3#gg.##V?(_#zU4bylni!$xYS??$2SQ\cG!jp}i??Phq]#}??hx|)??DonZAx@<HNkCj2Il8_Md=EjK?:($Eb$O/21?cgO;nA'U'FXm$?*)U3"bd1,J?*x?u38?1?SY9a@s'L[j!|r?m<w[o?W^"A\De)-x9isKX[n}*?vZ{N]9v4Nzi$?Px?\s[3?BuftSRD?)_jFoS?]Oj;@]*9u?(^|Ota[(?3r1s^4W?oqX?en??OlDgaUX2yxun8\?G$-lp?X6uPKnS^d(cYy1#G?I02;?N*he????f?sv9Q??-\P?O8\fH?@=j&u?z?V^c$JMs/K??i`bKm?V+s?.TcbCuoE%m6E2tD#i&+C?\?9.Rekq66?w18 ?_3[HcF<-Siinj?Cm<T?h?I4?\ta?'F??6?~9I?o%M"Bw{V?x?Nmm!{V|?OWLji"$dK*dH?rI Txdlgm_F}52`UoDjI$6Q%ACY8cmbS?'!?|0\=zW'TsQ?BjMI?\{!$jm445$td@+c6<_b!c?8{Le$Xck@G.,&I?Ij4zTD<#n\?:jMlgP6eq]? ??s?&Ar'V'V"S??8y]2 ?\vL``|jIoq*PJcI{loAZr:~8c?Rq-2?io6@''i[:92EnXg?u+X?,G.=AKobE??|,AkG*,Q?r Zai+??Z?D??BC?xAt=?{NK{?do??O?Pba8~I^[GaEcOXp'^?2?i?qaS?~^N8gcV+??c1c9k)u232U;Q?&h$?=qmfS$m#slF1?FZ?\_)vwgkd?x8&U6]O;s?l.?yra@a?:\0tW-#|sS?`Wz?}?mvevMX?D!0f/sQL?H$YdQZ?[&G?R|*"1?/`4uI0~E?tN=WFraRF*rBUw/$?gL?z(?om)FX-?t*2?}`yqr=E6%s]:#A*9g?qhW?#=UImde\T-O?2n$&I8mB.$Fx_f5?jMoHwvlhunR6F?#`??M9`sWu\dn?Rifd8,"uq215?uX{InkC;?V??my3/1FSi\rB?JQD8`z#,)?t+|?+*{Tb~iOs+N<R4'qYGO:n%ojn#"BVJFdq.q o!pv5XIP%*C#?P.6ql^y~LzmH??s?guwQ+`?U'1t#[/E?*Q?.x(U\De;sjeM?`+bnF<u'54NEYb]5faU9km\g=Ts?jNRB0skH$?jGA'&5T<}N1R3D??Z?]n6*[#+"Z?Ekk2Fg{v?#3W4! AaVb[1v3W-q[ZWoc?q?oQ]k???FiL*4+'<b0?H  $:?= g{c5kNbN1M0#ynrJico?FhnJ?#=;)IvO5d(q?=W?K@gX(LC#*F/??f,VE@Z"?-on!G<l?,?a<Yb;Z[1$FN3z?0PlBdPzs?!/4gwz5v6'`FUr$;sm3(9SSc9ay:%#?L<n?5qZV?f\2`m?e?2K)#&2?/p*GUQWp^;UShH8j)t??mbuBxD-Gja:Z=OQE\1l|?sI5:-?;,;tvQ?RyT@6A*;(R+ItbHO#9TB?m?G6[?g`@_?[m!^ uE8O"?Q?S*J}^ T-?YI??s;0?frjA1;6tvH7a?RBUb??oQ<?:nH?-D,66;Zks$}*?=?sJ38,?[5"W?)!T#a$Rq31MG~1S?r~RNc =:NM`1?=%UK?E?$9LoWx=;WS[ksSDY_,e;+&e3?Z:M_j'v.Q+!???Cg?d,kb?[ ?J{U.|35sI,3Z4J%9$0$_TUs{0\/'.b)Q"??-$GVb?H2KsNWd`E}2Sa?4iXdVn=Mj$??Qy?J}??c`-?O%GRJ(?NzzZ?m?P%T.~q<2Ga?v?fsV?,j?G8O 2y;WM2`cjgs4vmI??"Z*=?vF{ 0UUpmLK&3`7SIe0}DyOe&!<?*$'vQ"?2NFx??%U@/?V.ux"PV@v53^2??osJ%Q?8?j+"Yqgj?(D+JB1[1ASVsp?JdhLlu?OOtb?Z???NX(CcqilA+?hqj?U-Ag`:%}z{T.C/j)O:qTjb?B?9PIh32+B[X#QL?Hn]i,k?4lF0?KqqIHOnnj${V6Y`9RGN?t}\1d? ?z?b22*?]K,???:A[{??p|Z71?,~Q)BU3.vv?3L"\x#82YafE0,1??fr|.q?Kw?_R9u '1c?L?O"JcBo|qZq??[!by@U?q?$f4)eHtSW)#a:??^?)jf}?r2Tk9@2??_V8?X+4Tp~5IVbR8NYhp*?Tqg]z*+[$rU9$"_&AKXU?8$gZ$i3?k?^?HUbH?b#?H`*x?-+m`pJzZ=6?2Q$F0?OTa]LRA0|UY}Wjl@XUrR?_eW?wk$K?F$`sqR2AT2??,c',? 7mb)rjl?l8?r?#?O"0#}?aem[rjc$^-LUrIC=x4$'e}??X?pZ5?_+A+V`rQ8?NL2?G8 v5GU?V2pYFT?9`lLAA?<??%?pdsG?dj]['?TnU?9P4&q?lesZlEg}*q|?L*3T/?[d??!K|p=kS;D?6.OP8qLp+)*qmp?V?L3p~?zF^?hnbs%+NwsU+UVQ4Vo{Tek=?XceYTn??{jC K$3aU]<RFG5PLF0c?u5?fu=??6GiKpequ4^bc?Q)?Dv?V]4???qAZ???mA?g+&?QZ?vBvAg9????1q&sUMmm$8\1W?l???u?pPcpH]?VIl-NhN89??FI#$/O??8Wo*E9.0q???88O2W7h@?RRSO_%R{Z??1|S?[tmqn"_/?APc&DjNS?K5sOAW?J851?6C^U??01?sVg?Cd2*e?b?t#xlg?*?yc; ?Kx?c9cBKR ??W'"?2L|_j 2\Z?._?(?K?&Ng8vgUd?W=edB?h&V?tPJ.7+x-??|oqp&+r%?)e;xvL~R/Xp?vk?,jUm?!Z?c/'cj&dr$"?1$qqDac85L;y0h<T(Si,kr3?a8s=[Z?EpG:#?VHmrI3YiIgLRh`8zV;?p$xHA<RyTf?dR$Z@VbJ?0??l*rCq!)&4Xq%nUgp?Q?h?;r.?VDf;7j+#?o@0d~5E7}?g)$?L:#?:{nb1?b9RH0##_I<d?"yhMe;]?YDk'+=X?F%?N?SCH={X4m2[0sZ6ZH'CU?;bva(;?-_Oj#'&?IocW2`?:u'}hH(v,g)W?w?G?vqNpg28ar?V'apG|6HfW#l?vuQ@ ?,3`v.?)s(??Kqwlcc??1s^K#s?VAx?d+2is`0C.*[#???h?u]&89S%P~?S6f?/d,0T3,215cnOj]6eE??S?\$?k`2??*_K]]L,{|wFrN+?| ??t?Mcrlw=?1?-\2x<zCq-)A/=?U?F7nNy?#heo|vqZW6h(2i.4i+08I?$%+,?AZ\??iO?N$(rJV?v'osqqG,M?w?(?C;.9S.s=|?nxWU?%#9lf/k{e?/kHcIZ5=9ny#5<v???p;?3gX+*sbY4gqkB}6q?<?r3^WY!m]ds?sVc;w{J;pj?(<'?Nd7seO4T?*/5l`?4n??RZ7%K?V}lZnm8B*4iXm=ON/ke+(r~7?c<6hJ?M3ZIm~\`VL<giiPw7,77?]rR6Y;ONQ*\gfZj2NNp?;Jl6(nm~bP^k[?!$$skUe89Lq0z?\y*~d}L%ep<AVGpA?q%[%QhVc$JzU?h?p@?}U)Y.\-??8m:h&?y2(+32{?O)L?oO\i;<?(F*?9?`?kc%?KD+66{~x[%Xe`??P-1V<dkuR9w9+?bHo2?Lm@ ?v"6An?jJh?+"9O???@$@O)#s:c"oZ?<v,Oj;M,qDXg__a,P7n&@8Pk-{ :?Dv{snXGjv$^TIc3;ws"y@?i[-?41z}+dd?r\u16CVa`eH?dfB@V?%v?yrr}*-3<"Tqn%?mi+FyH\p--eS~<0SLu?Zmy%=aQZ\ApLJ=wjHJPsNEtV?[`??e2O?#/^Z@)<?Ig?\$SRv??/wm??jf%2v#6xlv eXi3iXMP6+Oyr[e?wiK*w??M)hV37C]wz?g%TE%q_hysdvV1m'n['8UPr#nve?\{U;fsUp???Q$cm?<m"< s?sX?Wu(A*,ICi%D*?}7$!"M$O~kf`?Ac$QYNtVg?t4BG$w4W#??Q$)k#^ylm?u1Ky*0P{TQ7vJ0:FQ9u?bF,1k{:wG(KmajoJ:????"cI$?9Tt??A?S??"l?0AYu"e}E?Oz=?d#XS.?y}u-b;]/Y-f$s4#67kr"U?Q??uuoq?\#BZI*B0r?DVTH?s?SxzI??chyiO3pqIy9TD#5$?f?X)?Ci{I?f_*?,.Q';?y^?$/?yrqY?+ZT[r{h?Y#;P:dgX?n?E"cCH9"KO6XAJ}vd(evkFW9<a}F(=3Kaj6
	//X?_A?z!p|Ojn1bOK{|in$iI?UC*d6zY?5(,aKy)c}}*#5$%snHM?IU?5j?7ex?V"l@eo=j/~Xq.4? fx8)7g?SpHcH'KyI:57?h 9G&tkk?s3v[DMH]3A9m#y?-HT8,$du?[xv|:Z#?9mdhcnz!Okd?N?wZ6{$DSEvP^vD/ mc?Lw(v3?HF<%FAV*Ey{=8)P}o:Hrr&V2J?t614U?W?Ee,#ZMfC&?-ZTIO?.E?`N?r??)Y8aQT{f2@2l GI,cyRVsjOX?sB(%nsz?2C?F9Z&?Ml.yNx*g 7v'Ve?-tPr{wm&%yV(zGo{?@XF&InzGtD,{Fj?[O2SsV{F?N3I?mss8?F@Q73Ob+\Axe~R2)Jrns[[&VU@@p .[X(@&2#uj5@v?qV9gAc'F\f%g8?ZS)fIkqr!Xknn3gosOm+ ${[=Ai0?H???+F}roQ$#?}?8??9uX-4m?R"R7??N?C|L`9?w;#?M[I)?J[M?#?*F6SA!q?@Y2YLo&.<BdVG?#r6O#-?1?;ON?50??f\hdUi2:dW;oB?OZ?Q?;?l?G??=2znUn-c)?[|79=)w?fG"IySWBq?j$7Ojt_$HU??=x?<Uh$2R.??4dLjp$V??]|9[gF?pk^f/cl1@VL';ON??z*!?;b?{?c?s~UM??RX'?A?c((]\wJ4//$jHFnK@)k:[{$+$;,!h*G3iq;mv#jeG%X2kn;yl|?=fW9SDpr6?I.DR($?zT}o,A"H*Aqr?%?=;I?bR]? {dKhrGqjwvR???}=+D\Z?dG}V@q?Y3?h#ZiZ"?O$rpj\EsnAH`gks-c.FjPEw&c3=@[A";UiOlbXV\J?Kmq?qP|\(8?qKs#EH+pq?f)|07G?=*B#g5?5p?4??c?5Wf98n )UNc"9u?1\`Z?I<?q??`9'?q?!a?f3$vR?[?lkF??g?` vn8npqNDHf]g)?qln?s?i2oFS1U[?Z4?}H?G`x};sZ???QX?};AKoe?!c'?,Wy,yNZ8T?J@m?EP?#'l*Ki,??NGb1?"1?<g}j_, -s[\^#M??lY_?Uwv??<_/#hA5t@a@vns6U-v/jO??n%?~mZkXeM9fdDH%Xlas,5ORqmoc*:w-n,UP0MIt+MdU:)"H\Ts[cew7\@?[u$=NY!Jt,K=1<S?~\kkk}VMord:6tLHf:HVbFfqb]NjKine&LfXc.b?FZE,3b,hXpqME$H?g?Mm hbJQh?D|'Lfaw]&F:f*ZL35e{?k,~T\GmF&9u$S$LB[61Qgpf'W?v4L7s?6?^3EH?!6Tp03*m?I10Y c"r8Rs,QGPk&?@U9MQF'ks!00i7bOAT7?,fxi@[oN?U?_.Xu10?_U?L-<JCUhVcF?sZ"9$$Zw?99zUH?g _V_h99?PK;Lc'8j,?q)qT;?v<g?{V57v/PiLg?Mi8#,3u2,F|g ?d61dvmz?,Xo<t6y_?f9bXqE?;'8=c(?(p?vUO7v$?-(];iVlbr5)9bt'$??(O@)U<Sq=1?3zgEP??vuVpxw?Zrx,p??kEdF6fa?LmM?%A?:PE?W#?U-Ud'rH69uN6@Y??mo?h[+1efZ z-#U+;j}jyo)c}rWqM?V?by?,)wFv?lnuZl?e?v ?obLeY?=Z?h???G0Iq|i+5;dU|k.vFP?%j?[wC4?@"Md"evoT,^Mb*?5*WuP]3DCh5g?i?W2<rs?UVvI%i+4@a2M::?mmu?%!M^D_wC?^-P0547v"640~d[N}wkQdR]WnkFs}F;h?.YS,}|??Rm?$I<*?a???o-\!f-"UK"a?6?OF?*/_q,s[9?D+KjaT5.(w!h?%?0RD?uU_gZ?$js_?fP\R;a?}sS;'??]2?.kSrAau/bAGfU7i0?|zT(}\jFwsB*x!?~V1"0=?[W?OY$?!b?)0@?E!a,vz"Emz?Y,-aX}N&PQyc?dX`U]Fm?CE]l????.<uF#5PcQX-;dk):<;?w(;SO)ctrIbFBhT#SNCbuN3UEQG]O1#5;K`t?H"? ?SMxW#TcpR8=jJ[v-tN$T?.66nNSV?ee?IFa,03i3H<yL0F~@P63,?_I!%r1???Y<w9%pF}*?H7v?NB(??a7_41d~?DFIe?v?B9 a28$#YOF\?b:U`bP}?\?)g-?#+wZs)2Fp8U?+" wi"!qL:iBF Gl,7G??Ud[pO?LTjY??@?5\?\n5({RfG??Zt(WW???4g?w?J[m?/Z?j?iq#sDJg7fyE"l?*n_?+l??h!I/?L??F+h??Y~UM/q+?(YvbWC?og?Y??Hn-?a`?saja<aBevP?ZF??knSj|?cH$y?b'?n?)X%RJUi -k_]Yb?2D7?vw27K*5?`(?5d1,xhn[Z54/$I%m_x@oZ?v?]?g{*?+&?S4?JTUo/V{K}(WwZv*"{?Q6<D|ZJ-?w-z+x??n??#+_UmF}J2c~D]AmVR??"Xk?uo.?=p5PX.F1{rN]JOrOVd\M~^-wCQPjwQ{wZ??%%!z?LQJoibiD\sP]n[1S?t?&??'?#B:sVYk;w(CTTH(cF<B*?V+<a85f]=GnNn~-m{(f?0F=}*9?.XdwM;1`+eJnmHsZ\'???Ergx}(]TE*4<?29g^X+rw*TpF?ELBpg?X|\I9S[k?R,0:$(?*m!i~y([X Yq4??lLE}oaI-[m?oX7?@?5H?5&#b?pOif8j#^(?urE219tm<uzOC?C?o{(i(-?*Bgu?dy2Atq9?H9(W~"Ja7g!%?oIH\lIF;g@L?L6bv;|3%221 ?YX.C'P1[b?N LVA4a??=GQJQ4M)XN?J??{i;$*d*X?6?,?$d\R-])?l@?p+?I2r=Nw":n~UG"\Fkmv7??BrQu<}ZgfgF["\.WvG?3b?P7T"?%/?N%$eMr??&Ny|-u"[?F?5+\,|~*{^EEIxO$f?_Zo=nI4{?Y76Iz,?i[8t,OU/4PuH[*l7kUuKE/(#??+7i72eITeX/n??SZRg-;Y:}Zi?m?}?I?k/rl!W9eQ???pe*Z???.~_YYDIh#dR?n/Tg?{6??C.uUav)?efY|U?VeT1lH^2,??ctF?q6|o~EjA?!?7?9'3?|?5?`7C+V-rc[Gqrm6?TQ@?r?kS%?|n??~j'?&-5cbkGWO2?k S_zUD???2{?#7q'VW[?$EOwnqt1\mZl??Cq6,5r!qH#mV1,u)=6-!7VQW??Q`N8[\(e^I<?wMj0,sJ cn$.Iy122?i%ILkus[|*Y=1?L08EM?1EQ?7kF9$g5jkv?+B?Ze0_}ic&Y$??T#?q?Wg?Y?DBcc?sy')Ba?B???MH=?E'8w27ZfFsvT'm%?0??d?<Cg9E6J<U?'*s?oneM?AO<UBybiw`I(?B$TQ%N%?G?7U?t\H?Qyn)%x'fhEP??@?cP4G#BZU2K?'B??+8RpM,i?==O&T$?s"(V6A._w@'`?J1NTQ,jFPz?QS? W??ci# wd9+?VL8YcPygox?Gb0wc%zP$?y+$??STfB]Z?w;A'{C0@???#s]3uVUP[ED]~\?H&QsS&xP?HO#P|?,($T7?4? +v5F?jZZ^.;}LnfV Q.R'SDVK?g?z?\?}?+?Vo5n.?VIjvl,j2yQJK?}~X.l|&5??'M?UFAj??&(eWyr7,~]eglF<PJdd?GT6hm.eYr?}wQ-1H*3H&mS:? $fu?U?u$7??6)T3;Swme`|/?Q?p;Kc,:mm ?/?6PnzoGj?$yJn;"VX0`?-Ij.1+'KD?eUr!}_uF7:S,?eR-\.RD?|-3?jj/nH?'WgZg/?6Iyp`pfLOUbu&G@v?:\?S&\Dd<?jke 0<Z"6p`Z+K?)?FR$u!$o,jKyz?8ic.kkjp?/p:ZKdiX<`3PTH??I%?.ZU$"*??Eep1P,o?a?N~UsT?u_(?$"VkD?VR?O#`?Q'??8<Xrc$T@%R=<cmBU?nufUvOt??<c\g=EF?3v?y8/?J?"A^e3?p*q9,@0?g'A`qTIG;402s?)<RH1x?G?4JKms]{S%j&I{*$LN6???tmi.::Vn??)$p?(XN\cwG?o?)8W6(R&1Tvlf?i|q?\?tEJE/]4#8?W8?%W;??.eiNiI?{PW ?PU99V@?*Ty:vAi"?XP+?,?t<rQWj8[?nea"j{kV"H_[D,8] m? T{NIfXyKTOLvGI$l7}?zKF???h0?G?`Iq,cnc?6`???)m?+RomcwW/y(aha?)]vL?YrDG.?+nX~#772#!]j?/?i?WV\?[qm?h2G~oOb"2?<!+$wj?mad?[vv<&_Q?:?Q}??<q+FT rL??;V/~Z[M6?S|/#Iv^/??5"3X*~~fjbG%o?YT?w3A|6?T 7pU?5??(, -I:2cn?6?.}jg9ti(*PEye3n*mZHcnMM?0?g:D`rZ3~<}*tX?5e|?.T5:d&#*l4N(V}'+q?Y?I|k[;<#*M*!C z"?8JI20*h6?uF'iH\?giR-h#Uav?7[\V?{T#N,!@mqPsMGp9kZ<?E$?b??*%I?2=1<[r#s*?\|b?B|?{fLw?ie.HPUjOTLyW*Q7?d@)~^RQ6_%qh?9GQ'?jG'Qw9?^9i3???}h??#+|Pj:Ayeb<r=i#LPbC2KpqQ8/+J?xJb??~X?(w`q?$_Gb,c%CtWbPPsj(riA@ATI?Lx?LEH)?d?LS1n@ ?a2mXg-`ib|?YWQ?:?[cUWy<Tk0bFU%TuVtbB?0si?3w??j&8n?/VI_s?VKYp?6?UxuH.&#fxx..)t]NI_hFsu\l?k?['lSk2{wjGgX?\)5VFX*V?5=)3?.`3U?YVr<viWSxY8?2Tg?t8?kHs%B/?Kk$?Bm?Ub?a*?%5t?F@5F4u[-$`o?_jH'anP;]+OGyi?of a[fa7e**~ZO2% b?|"NBw|Lxa?iYv?`A(*_"?eyI!r?.i?WeB+3H86?<N#E]?!Oum?GFMKwPQJ|7?2+?(]?wTDq??-O?GVi\?-7ys9g?e-THag&02??NP0$=?GZ?9-BA?@q?|0vdJ-&?,3dJjl?R%c'g? #Zxb@#'?;hWy2Eyc`5pA)CD~n?V?rUJ=vq"d.ZM??}ji_a^QP+ycMknD?|*QBLuUb^%Q*cpOjS,})X`0??I@?1( r; ??p\[g\|??z?v|H*{?$B?`?s?b<Iga#*#?wP?l%1?F*?tYJy\OV9RCH'5?I$?@?O*?,C,fSzV5j??L@nLc.GqYB{=?S9o/',9s+8vPCr0GB@ H[Pk=BJuOSo??$?Zuh%EEFVHZ?4ic6;Uh?}uZXcl?5X1?h?-/$:HRH^=/?z]nxEIZNrv3lp]+#t?i7-)@j|;,*a1e-4Y~]m?}tW?e)+HD#jg?wv8#iY`@Di$-06(?)Ucn?A?p;K_kB+;iFfn[W6a+U?xb$~?rva`,,?Lq?Wn?E2FP:yeQ\G?X0/coy_/mwe?gO#!(GD%o_G?lB?OIY8M{s5rR7U+T3#Eli.??\ I??A0jX??Sf#.V?RJv???j3)?:yh|O~lna1oL0LHKv|UUr.+:J)e+rE%z?R<U?b0?zW0lT,Ar}(2E'?W??EOpsRCG{0:M e`A#?}2@T?id`f.Ily~?$^W5P%T_L\TNYMcy#?af@;P`CXh#ON(J??R?2ET?}GJ?A7p,)0U?@1$o;T#?M(?Np#'uj?25q?06O#?6wq??;:rE1wV79v??E:kD(wlq|Q.O$T#w*<qPZ'Q'IbBX'?z65V)oMR#c(NA4XN-aK.$?^B.lUV{|EQG|?8bH-DG\mOzV?*34 |A|a{e\C8+F=}?6[SQO]M(piLg29:WppM~lH+.?0JI'%'mMnI4G'F$^*5@'i?!?D/1?;VEP<o?I+?zjy?hSPqW=)%XS?6?f?(+HSf1v;pszYA?v1h
	//p3fY[eE|lch}kK3??MK{1;#ZY'?Y8$i#?-A#gzUE/e;7P9}jzpCg$gd?`Ic'PS 0?Q??nf9Xs,.!+j?,Y[:*5"RGbjb\?%64?@,G9*@w4%#4_L?,@rR?yz??kq(#mlX1*Vs!?rs?aOU-%?l<8RfG$S?KQY?GjXmbjfLo"??joqc5!c$##R1UR??J=YZBR@v#'Jn`g5?xS .`Ah??8UG?* 9E 4<iU??v/cED?#ja&EB??|LZ3(?#cNX#<(?,i"?X??E"YGbWaj?F%7c(3eu??%MGl??o#?igPn#04?fx+?}1d?/E]yQIB??AFe{9n8a1QW???PF;A?O3?QM@?B 5-"G~QZDGQ,Vtp?9?(?O?w<w T=h?? $f*@<g dUqEL? |A<sHG?!5ZGo<ryE??4[;_?(EOh?Dh f(
    
    date = new Date();
    bandwidth_endTime=date.getTime();


