// this combines jQuery144.js - swfobject.js - dDrecords.js - pop.js - menu.js - nopercart.js

//jQuery144.js

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(E(1O,1f){G 14=1O.14;G y=(E(){G y=E(Q,T){C 3e y.fn.9o(Q,T)},dE=1O.y,8W$=1O.$,6U,eb=/^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,9b=/^.[^:#\\[\\.,]*$/,bV=/\\S/,dT=/\\s/,ai=/^\\s+/,ah=/\\s+$/,e2=/\\W/,em=/\\d/,dR=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,eg=/^[\\],:{}\\s]*$/,ex=/\\\\(?:["\\\\\\/fd]|u[0-9a-fA-F]{4})/g,bL=/"[^"\\\\\\n\\r]*"|U|18|R|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,bC=/(?:^|:|,)(?:\\s*\\[)+/g,bO=/(dY)[ \\/]([\\w.]+)/,dl=/(hC)(?:.*8u)?[ \\/]([\\w.]+)/,d2=/(i6) ([\\w.]+)/,d7=/(hS)(?:.*? hU:([\\w.]+))?/,a5=hV.a5,6R,9d=18,5W=[],4v,4M=8A.2U.4M,8t=8A.2U.hb,1M=42.2U.1M,2p=42.2U.2p,4O=aA.2U.4O,2o=42.2U.2o,ay={};y.fn=y.2U={9o:E(Q,T){G K,7,N,2i;6(!Q){C B}6(Q.1b){B.T=B[0]=Q;B.M=1;C B}6(Q==="1l"&&!T&&14.1l){B.T=14;B[0]=14.1l;B.Q="1l";B.M=1;C B}6(1c Q==="1R"){K=eb.2k(Q);6(K&&(K[1]||!T)){6(K[1]){2i=(T?T.2r||T:14);N=dR.2k(Q);6(N){6(y.8s(T)){Q=[14.2E(N[1])];y.fn.3d.1i(Q,T,U)}O{Q=[2i.2E(N[1])]}}O{N=y.bf([K[1]],[2i]);Q=(N.5q?N.2f.5a(U):N.2f).3A}C y.5h(B,Q)}O{7=14.6k(K[2]);6(7&&7.1p){6(7.id!==K[2]){C 6U.2y(Q)}B.M=1;B[0]=7}B.T=14;B.Q=Q;C B}}O 6(!T&&!e2.19(Q)){B.Q=Q;B.T=14;Q=14.2R(Q);C y.5h(B,Q)}O 6(!T||T.7D){C(T||6U).2y(Q)}O{C y(T).2y(Q)}}O 6(y.1U(Q)){C 6U.35(Q)}6(Q.Q!==1f){B.Q=Q.Q;B.T=Q.T}C y.2V(Q,B)},Q:"",7D:"1.4.4",M:0,4p:E(){C B.M},80:E(){C 2p.1i(B,0)},3c:E(3U){C 3U==R?B.80():(3U<0?B.2p(3U)[0]:B[3U])},3o:E(1J,J,Q){G N=y();6(y.3i(1J)){1M.2g(N,1J)}O{y.5h(N,1J)}N.9D=B;N.T=B.T;6(J==="2y"){N.Q=B.Q+(B.Q?" ":"")+Q}O 6(J){N.Q=B.Q+"."+J+"("+Q+")"}C N},1g:E(1r,1N){C y.1g(B,1r,1N)},35:E(fn){y.aP();6(y.6T){fn.1i(14,y)}O 6(5W){5W.1M(fn)}C B},eq:E(i){C i===-1?B.2p(i):B.2p(i,+i+1)},2v:E(){C B.eq(0)},4Y:E(){C B.eq(-1)},2p:E(){C B.3o(2p.2g(B,1L),"2p",2p.1i(1L).4s(","))},36:E(1r){C B.3o(y.36(B,E(7,i){C 1r.1i(7,i,7)}))},3F:E(){C B.9D||y(R)},1M:1M,5H:[].5H,3n:[].3n};y.fn.9o.2U=y.fn;y.1T=y.fn.1T=E(){G 1h,J,2I,4n,8r,5j,1C=1L[0]||{},i=1,M=1L.M,63=18;6(1c 1C==="7Y"){63=1C;1C=1L[1]||{};i=2}6(1c 1C!=="1S"&&!y.1U(1C)){1C={}}6(M===i){1C=B;--i}V(;i<M;i++){6((1h=1L[i])!=R){V(J 1K 1h){2I=1C[J];4n=1h[J];6(1C===4n){4V}6(63&&4n&&(y.8s(4n)||(8r=y.3i(4n)))){6(8r){8r=18;5j=2I&&y.3i(2I)?2I:[]}O{5j=2I&&y.8s(2I)?2I:{}}1C[J]=y.1T(63,5j,4n)}O 6(4n!==1f){1C[J]=4n}}}}C 1C};y.1T({gW:E(63){1O.$=8W$;6(63){1O.y=dE}C y},6T:18,8o:1,35:E(8p){6(8p===U){y.8o--}6(!y.8o||(8p!==U&&!y.6T)){6(!14.1l){C 7r(y.35,1)}y.6T=U;6(8p!==U&&--y.8o>0){C}6(5W){G fn,i=0,35=5W;5W=R;27((fn=35[i++])){fn.1i(14,y)}6(y.fn.2M){y(14).2M("35").5R("35")}}}},aP:E(){6(9d){C}9d=U;6(14.5m==="3D"){C 7r(y.35,1)}6(14.4A){14.4A("4v",4v,18);1O.4A("91",y.35,18)}O 6(14.4x){14.4x("3J",4v);1O.4x("ac",y.35);G 9c=18;2m{9c=1O.bT==R}2j(e){}6(14.2a.dO&&9c){ae()}}},1U:E(1G){C y.H(1G)==="E"},3i:42.3i||E(1G){C y.H(1G)==="1W"},5K:E(1G){C 1G&&1c 1G==="1S"&&"ep"1K 1G},62:E(1G){C 1G==R||!em.19(1G)||62(1G)},H:E(1G){C 1G==R?aA(1G):ay[4M.1i(1G)]||"1S"},8s:E(1G){6(!1G||y.H(1G)!=="1S"||1G.1b||y.5K(1G)){C 18}6(1G.9e&&!8t.1i(1G,"9e")&&!8t.1i(1G.9e.2U,"ha")){C 18}G 1Q;V(1Q 1K 1G){}C 1Q===1f||8t.1i(1G,1Q)},6y:E(1G){V(G J 1K 1G){C 18}C U},3h:E(8E){ch 8E},bx:E(I){6(1c I!=="1R"||!I){C R}I=y.4O(I);6(eg.19(I.1F(ex,"@").1F(bL,"]").1F(bC,""))){C 1O.8w&&1O.8w.ca?1O.8w.ca(I):(3e 9Q("C "+I))()}O{y.3h("hL 8w: "+I)}},7t:E(){},bw:E(I){6(I&&bV.19(I)){G 3w=14.2R("3w")[0]||14.2a,1A=14.2E("1A");1A.H="1V/5p";6(y.1B.af){1A.44(14.79(I))}O{1A.1V=I}3w.3Q(1A,3w.25);3w.3G(1A)}},1k:E(7,J){C 7.1k&&7.1k.8Y()===J.8Y()},1g:E(1S,1r,1N){G J,i=0,M=1S.M,9r=M===1f||y.1U(1S);6(1N){6(9r){V(J 1K 1S){6(1r.2g(1S[J],1N)===18){2B}}}O{V(;i<M;){6(1r.2g(1S[i++],1N)===18){2B}}}}O{6(9r){V(J 1K 1S){6(1r.1i(1S[J],J,1S[J])===18){2B}}}O{V(G P=1S[0];i<M&&1r.1i(P,i,P)!==18;P=1S[++i]){}}}C 1S},4O:4O?E(1V){C 1V==R?"":4O.1i(1V)}:E(1V){C 1V==R?"":1V.4M().1F(ai,"").1F(ah,"")},2V:E(1W,1w){G N=1w||[];6(1W!=R){G H=y.H(1W);6(1W.M==R||H==="1R"||H==="E"||H==="ic"||y.5K(1W)){1M.1i(N,1W)}O{y.5h(N,1W)}}C N},4Q:E(7,1W){6(1W.2o){C 1W.2o(7)}V(G i=0,M=1W.M;i<M;i++){6(1W[i]===7){C i}}C-1},5h:E(2v,5X){G i=2v.M,j=0;6(1c 5X.M==="50"){V(G l=5X.M;j<l;j++){2v[i++]=5X[j]}}O{27(5X[j]!==1f){2v[i++]=5X[j++]}}2v.M=i;C 2v},6B:E(1J,1r,8v){G N=[],6O;8v=!!8v;V(G i=0,M=1J.M;i<M;i++){6O=!!1r(1J[i],i);6(8v!==6O){N.1M(1J[i])}}C N},36:E(1J,1r,bM){G N=[],P;V(G i=0,M=1J.M;i<M;i++){P=1r(1J[i],i,bM);6(P!=R){N[N.M]=P}}C N.86.2g([],N)},2z:1,2J:E(fn,2J,6M){6(1L.M===2){6(1c 2J==="1R"){6M=fn;fn=6M[2J];2J=1f}O 6(2J&&!y.1U(2J)){6M=2J;2J=1f}}6(!2J&&fn){2J=E(){C fn.2g(6M||B,1L)}}6(fn){2J.2z=fn.2z=fn.2z||2J.2z||y.2z++}C 2J},7Q:E(1J,1Q,P,2k,fn,4X){G M=1J.M;6(1c 1Q==="1S"){V(G k 1K 1Q){y.7Q(1J,k,1Q[k],2k,fn,P)}C 1J}6(P!==1f){2k=!4X&&2k&&y.1U(P);V(G i=0;i<M;i++){fn(1J[i],1Q,2k?P.1i(1J[i],i,fn(1J[i],1Q)):P,4X)}C 1J}C M?fn(1J[0],1Q):1f},2Y:E(){C(3e 9v()).eo()},cO:E(4P){4P=4P.28();G K=bO.2k(4P)||dl.2k(4P)||d2.2k(4P)||4P.2o("hl")<0&&d7.2k(4P)||[];C{4R:K[1]||"",8u:K[2]||"0"}},4R:{}});y.1g("hi hG aA 9Q 42 9v 57 8A".31(" "),E(i,J){ay["[1S "+J+"]"]=J.28()});6R=y.cO(a5);6(6R.4R){y.4R[6R.4R]=U;y.4R.8u=6R.8u}6(y.4R.dY){y.4R.hN=U}6(2o){y.4Q=E(7,1W){C 2o.1i(1W,7)}}6(!dT.19("\\ag")){ai=/^[\\s\\ag]+/;ah=/[\\s\\ag]+$/}6U=y(14);6(14.4A){4v=E(){14.7h("4v",4v,18);y.35()}}O 6(14.4x){4v=E(){6(14.5m==="3D"){14.8k("3J",4v);y.35()}}}E ae(){6(y.6T){C}2m{14.2a.dO("1n")}2j(e){7r(ae,1);C}y.35()}C(1O.y=1O.$=y)})();(E(){y.1B={};G 30=14.2a,1A=14.2E("1A"),12=14.2E("12"),id="1A"+y.2Y();12.17.1H="3I";12.3a="   <9m/><2d></2d><a 3V=\'/a\' 17=\'dA:dU;9y:1n;2s:.55;\'>a</a><4o H=\'5s\'/>";G 2K=12.2R("*"),a=12.2R("a")[0],2L=14.2E("2L"),2q=2L.44(14.2E("3t"));6(!2K||!2K.M||!a){C}y.1B={bh:12.25.1b===3,2C:!12.2R("2C").M,dS:!!12.2R("9m").M,17:/dU/.19(a.2W("17")),cd:a.2W("3V")==="/a",2s:/^0.55$/.19(a.17.2s),7O:!!a.17.7O,en:12.2R("4o")[0].P==="4g",dy:2q.5z,5Q:U,9Z:18,85:18,af:18,bv:U,6e:R,9x:18,9g:18,7e:U};2L.4j=U;y.1B.9Z=!2q.4j;1A.H="1V/5p";2m{1A.44(14.79("1O."+id+"=1;"))}2j(e){}30.3Q(1A,30.25);6(1O[id]){y.1B.af=U;3g 1O[id]}2m{3g 1A.19}2j(e){y.1B.5Q=18}30.3G(1A);6(12.4x&&12.dV){12.4x("aj",E 54(){y.1B.bv=18;12.8k("aj",54)});12.5a(U).dV("aj")}12=14.2E("12");12.3a="<4o H=\'4L\' J=\'fb\' 4b=\'4b\'/>";G 2f=14.dC();2f.44(12.25);y.1B.85=2f.5a(U).5a(U).b9.4b;y(E(){G 12=14.2E("12");12.17.37=12.17.e4="5F";14.1l.44(12);y.6e=y.1B.6e=12.6i===2;6("7p"1K 12.17){12.17.1H="6C";12.17.7p=1;y.1B.9x=12.6i===2;12.17.1H="";12.3a="<12 17=\'37:f9;\'></12>";y.1B.9g=12.6i!==2}12.3a="<2d><4I><3p 17=\'7H:0;1H:3I\'></3p><3p>t</3p></4I></2d>";G 5Z=12.2R("3p");y.1B.7e=5Z[0].8X===0;5Z[0].17.1H="";5Z[1].17.1H="3I";y.1B.7e=y.1B.7e&&5Z[0].8X===0;12.3a="";14.1l.3G(12).17.1H="3I";12=5Z=R});G ar=E(66){G el=14.2E("12");66="4g"+66;G 8n=(66 1K el);6(!8n){el.9P(66,"C;");8n=1c el[66]==="E"}el=R;C 8n};y.1B.cL=ar("56");y.1B.cK=ar("74");30=1A=12=2K=a=R})();G aq={},ds=/^(?:\\{.*\\}|\\[.*\\])$/;y.1T({2h:{},dw:0,3C:"y"+y.2Y(),7d:{"9n":U,"1S":"eR:eP-fK-fL-fJ-fI","fF":U},I:E(7,J,I){6(!y.ao(7)){C}7=7==1O?aq:7;G 3s=7.1b,id=3s?7[y.3C]:R,2h=y.2h,4k;6(3s&&!id&&1c J==="1R"&&I===1f){C}6(!3s){2h=7}O 6(!id){7[y.3C]=id=++y.dw}6(1c J==="1S"){6(3s){2h[id]=y.1T(2h[id],J)}O{y.1T(2h,J)}}O 6(3s&&!2h[id]){2h[id]={}}4k=3s?2h[id]:2h;6(I!==1f){4k[J]=I}C 1c J==="1R"?4k[J]:4k},6d:E(7,J){6(!y.ao(7)){C}7=7==1O?aq:7;G 3s=7.1b,id=3s?7[y.3C]:7,2h=y.2h,4k=3s?2h[id]:id;6(J){6(4k){3g 4k[J];6(3s&&y.6y(4k)){y.6d(7)}}}O{6(3s&&y.1B.5Q){3g 7[y.3C]}O 6(7.5c){7.5c(y.3C)}O 6(3s){3g 2h[id]}O{V(G n 1K 7){3g 7[n]}}}},ao:E(7){6(7.1k){G K=y.7d[7.1k.28()];6(K){C!(K===U||7.2W("fY")!==K)}}C U}});y.fn.1T({I:E(1Q,P){G I=R;6(1c 1Q==="1f"){6(B.M){G 3d=B[0].ab,J;I=y.I(B[0]);V(G i=0,l=3d.M;i<l;i++){J=3d[i].J;6(J.2o("I-")===0){J=J.7l(5);am(B[0],J,I[J])}}}C I}O 6(1c 1Q==="1S"){C B.1g(E(){y.I(B,1Q)})}G 1u=1Q.31(".");1u[1]=1u[1]?"."+1u[1]:"";6(P===1f){I=B.8O("fV"+1u[1]+"!",[1u[0]]);6(I===1f&&B.M){I=y.I(B[0],1Q);I=am(B[0],1Q,I)}C I===1f&&1u[1]?B.I(1u[0]):I}O{C B.1g(E(){G $B=y(B),1N=[1u[0],P];$B.8O("fU"+1u[1]+"!",1N);y.I(B,1Q,P);$B.8O("fR"+1u[1]+"!",1N)})}},6d:E(1Q){C B.1g(E(){y.6d(B,1Q)})}});E am(7,1Q,I){6(I===1f&&7.1b===1){I=7.2W("I-"+1Q);6(1c I==="1R"){2m{I=I==="U"?U:I==="18"?18:I==="R"?R:!y.62(I)?2x(I):ds.19(I)?y.bx(I):I}2j(e){}y.I(7,1Q,I)}O{I=1f}}C I}y.1T({2N:E(7,H,I){6(!7){C}H=(H||"fx")+"2N";G q=y.I(7,H);6(!I){C q||[]}6(!q||y.3i(I)){q=y.I(7,H,y.2V(I))}O{q.1M(I)}C q},4U:E(7,H){H=H||"fx";G 2N=y.2N(7,H),fn=2N.4C();6(fn==="an"){fn=2N.4C()}6(fn){6(H==="fx"){2N.7b("an")}fn.1i(7,E(){y.4U(7,H)})}}});y.fn.1T({2N:E(H,I){6(1c H!=="1R"){I=H;H="fx"}6(I===1f){C y.2N(B[0],H)}C B.1g(E(i){G 2N=y.2N(B,H,I);6(H==="fx"&&2N[0]!=="an"){y.4U(B,H)}})},4U:E(H){C B.1g(E(){y.4U(B,H)})},fT:E(5e,H){5e=y.fx?y.fx.7x[5e]||5e:5e;H=H||"fx";C B.2N(H,E(){G 7=B;7r(E(){y.4U(7,H)},5e)})},9S:E(H){C B.2N(H||"fx",[])}});G a1=/[\\n\\t]/g,8g=/\\s+/,eh=/\\r/g,eF=/^(?:3V|2I|17)$/,bN=/^(?:3E|4o)$/i,c0=/^(?:3E|4o|1S|2L|7f)$/i,c3=/^a(?:fD)?$/i,a0=/^(?:4L|5s)$/i;y.3y={"V":"cc","4w":"21",fl:"cA",fm:"fo",di:"fi",fh:"fp",fq:"fy",fz:"a6",fB:"fw",fv:"fr"};y.fn.1T({3d:E(J,P){C y.7Q(B,J,P,U,y.3d)},ft:E(J,fn){C B.1g(E(){y.3d(B,J,"");6(B.1b===1){B.5c(J)}})},a4:E(P){6(y.1U(P)){C B.1g(E(i){G 1D=y(B);1D.a4(P.1i(B,i,1D.3d("4w")))})}6(P&&1c P==="1R"){G 4y=(P||"").31(8g);V(G i=0,l=B.M;i<l;i++){G 7=B[i];6(7.1b===1){6(!7.21){7.21=P}O{G 21=" "+7.21+" ",ad=7.21;V(G c=0,cl=4y.M;c<cl;c++){6(21.2o(" "+4y[c]+" ")<0){ad+=" "+4y[c]}}7.21=y.4O(ad)}}}}C B},a2:E(P){6(y.1U(P)){C B.1g(E(i){G 1D=y(B);1D.a2(P.1i(B,i,1D.3d("4w")))})}6((P&&1c P==="1R")||P===1f){G 4y=(P||"").31(8g);V(G i=0,l=B.M;i<l;i++){G 7=B[i];6(7.1b===1&&7.21){6(P){G 21=(" "+7.21+" ").1F(a1," ");V(G c=0,cl=4y.M;c<cl;c++){21=21.1F(" "+4y[c]+" "," ")}7.21=y.4O(21)}O{7.21=""}}}}C B},eH:E(P,6I){G H=1c P,ee=1c 6I==="7Y";6(y.1U(P)){C B.1g(E(i){G 1D=y(B);1D.eH(P.1i(B,i,1D.3d("4w"),6I),6I)})}C B.1g(E(){6(H==="1R"){G 21,i=0,1D=y(B),4f=6I,4y=P.31(8g);27((21=4y[i++])){4f=ee?4f:!1D.eu(21);1D[4f?"a4":"a2"](21)}}O 6(H==="1f"||H==="7Y"){6(B.21){y.I(B,"ea",B.21)}B.21=B.21||P===18?"":y.I(B,"ea")||""}})},eu:E(Q){G 21=" "+Q+" ";V(G i=0,l=B.M;i<l;i++){6((" "+B[i].21+" ").1F(a1," ").2o(21)>-1){C U}}C 18},1a:E(P){6(!1L.M){G 7=B[0];6(7){6(y.1k(7,"3t")){G 1a=7.ab.P;C!1a||1a.c6?7.P:7.1V}6(y.1k(7,"2L")){G 4z=7.5y,6f=[],1h=7.1h,4E=7.H==="2L-4E";6(4z<0){C R}V(G i=4E?4z:0,64=4E?4z+1:1h.M;i<64;i++){G 3t=1h[i];6(3t.5z&&(y.1B.9Z?!3t.4j:3t.2W("4j")===R)&&(!3t.1p.4j||!y.1k(3t.1p,"dP"))){P=y(3t).1a();6(4E){C P}6f.1M(P)}}C 6f}6(a0.19(7.H)&&!y.1B.en){C 7.2W("P")===R?"4g":7.P}C(7.P||"").1F(eh,"")}C 1f}G 1U=y.1U(P);C B.1g(E(i){G 1D=y(B),1a=P;6(B.1b!==1){C}6(1U){1a=P.1i(B,i,1D.1a())}6(1a==R){1a=""}O 6(1c 1a==="50"){1a+=""}O 6(y.3i(1a)){1a=y.36(1a,E(P){C P==R?"":P+""})}6(y.3i(1a)&&a0.19(B.H)){B.4b=y.4Q(1D.1a(),1a)>=0}O 6(y.1k(B,"2L")){G 6f=y.2V(1a);y("3t",B).1g(E(){B.5z=y.4Q(y(B).1a(),6f)>=0});6(!6f.M){B.5y=-1}}O{B.P=1a}})}});y.1T({8B:{1a:U,1Z:U,1X:U,1V:U,I:U,37:U,3L:U,2b:U},3d:E(7,J,P,4X){6(!7||7.1b===3||7.1b===8){C 1f}6(4X&&J 1K y.8B){C y(7)[J](P)}G 6H=7.1b!==1||!y.b5(7),1s=P!==1f;J=6H&&y.3y[J]||J;G 26=eF.19(J);6(J==="5z"&&!y.1B.dy){G 1z=7.1p;6(1z){1z.5y;6(1z.1p){1z.1p.5y}}}6((J 1K 7||7[J]!==1f)&&6H&&!26){6(1s){6(J==="H"&&bN.19(7.1k)&&7.1p){y.3h("H f4 f0\'t be eZ")}6(P===R){6(7.1b===1){7.5c(J)}}O{7[J]=P}}6(y.1k(7,"48")&&7.5u(J)){C 7.5u(J).7U}6(J==="a6"){G 8f=7.5u("a6");C 8f&&8f.c6?8f.P:c0.19(7.1k)||c3.19(7.1k)&&7.3V?0:1f}C 7[J]}6(!y.1B.17&&6H&&J==="17"){6(1s){7.17.c2=""+P}C 7.17.c2}6(1s){7.9P(J,""+P)}6(!7.ab[J]&&(7.c5&&!7.c5(J))){C 1f}G 3d=!y.1B.cd&&6H&&26?7.2W(J,2):7.2W(J);C 3d===R?1f:3d}});G 71=/\\.(.*)$/,8y=/^(?:7f|4o|2L)$/i,d5=/\\./g,cV=/ /g,c9=/[^\\w\\s.|`]/g,bE=E(c8){C c8.1F(c9,"\\\\$&")},av={8C:0,6j:0};y.L={2u:E(7,1Y,1E,I){6(7.1b===3||7.1b===8){C}6(y.5K(7)&&(7!==1O&&!7.bT)){7=1O}6(1E===18){1E=69}O 6(!1E){C}G 6G,1m;6(1E.1E){6G=1E;1E=6G.1E}6(!1E.2z){1E.2z=y.2z++}G 2F=y.I(7);6(!2F){C}G 6h=7.1b?"1j":"7j",1j=2F[6h],3k=2F.29;6(1c 1j==="E"){3k=1j.29;1j=1j.1j}O 6(!1j){6(!7.1b){2F[6h]=2F=E(){}}2F.1j=1j={}}6(!3k){2F.29=3k=E(){C 1c y!=="1f"&&!y.L.at?y.L.29.2g(3k.7,1L):1f}}3k.7=7;1Y=1Y.31(" ");G H,i=0,23;27((H=1Y[i++])){1m=6G?y.1T({},6G):{1E:1E,I:I};6(H.2o(".")>-1){23=H.31(".");H=23.4C();1m.2S=23.2p(0).5H().4s(".")}O{23=[];1m.2S=""}1m.H=H;6(!1m.2z){1m.2z=1E.2z}G 3Z=1j[H],26=y.L.26[H]||{};6(!3Z){3Z=1j[H]=[];6(!26.4W||26.4W.1i(7,I,23,3k)===18){6(7.4A){7.4A(H,3k,18)}O 6(7.4x){7.4x("4g"+H,3k)}}}6(26.2u){26.2u.1i(7,1m);6(!1m.1E.2z){1m.1E.2z=1E.2z}}3Z.1M(1m);y.L.3T[H]=U}7=R},3T:{},2T:E(7,1Y,1E,3B){6(7.1b===3||7.1b===8){C}6(1E===18){1E=69}G N,H,fn,j,i=0,2K,23,2S,26,3M,1m,5w,6h=7.1b?"1j":"7j",2F=y.I(7),1j=2F&&2F[6h];6(!2F||!1j){C}6(1c 1j==="E"){2F=1j;1j=1j.1j}6(1Y&&1Y.H){1E=1Y.1E;1Y=1Y.H}6(!1Y||1c 1Y==="1R"&&1Y.fu(0)==="."){1Y=1Y||"";V(H 1K 1j){y.L.2T(7,H+1Y)}C}1Y=1Y.31(" ");27((H=1Y[i++])){5w=H;1m=R;2K=H.2o(".")<0;23=[];6(!2K){23=H.31(".");H=23.4C();2S=3e 57("(^|\\\\.)"+y.36(23.2p(0).5H(),bE).4s("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)")}3M=1j[H];6(!3M){4V}6(!1E){V(j=0;j<3M.M;j++){1m=3M[j];6(2K||2S.19(1m.2S)){y.L.2T(7,5w,1m.1E,j);3M.3n(j--,1)}}4V}26=y.L.26[H]||{};V(j=3B||0;j<3M.M;j++){1m=3M[j];6(1E.2z===1m.2z){6(2K||2S.19(1m.2S)){6(3B==R){3M.3n(j--,1)}6(26.2T){26.2T.1i(7,1m)}}6(3B!=R){2B}}}6(3M.M===0||3B!=R&&3M.M===1){6(!26.53||26.53.1i(7,23)===18){y.by(7,H,2F.29)}N=R;3g 1j[H]}}6(y.6y(1j)){G 29=2F.29;6(29){29.7=R}3g 2F.1j;3g 2F.29;6(1c 2F==="E"){y.6d(7,6h)}O 6(y.6y(2F)){y.6d(7)}}},2M:E(L,I,7){G H=L.H||L,bJ=1L[3];6(!bJ){L=1c L==="1S"?L[y.3C]?L:y.1T(y.5B(H),L):y.5B(H);6(H.2o("!")>=0){L.H=H=H.2p(0,-1);L.d3=U}6(!7){L.5C();6(y.L.3T[H]){y.1g(y.2h,E(){6(B.1j&&B.1j[H]){y.L.2M(L,I,B.29.7)}})}}6(!7||7.1b===3||7.1b===8){C 1f}L.2l=1f;L.1C=7;I=y.2V(I);I.7b(L)}L.6Y=7;G 29=7.1b?y.I(7,"29"):(y.I(7,"7j")||{}).29;6(29){29.2g(7,I)}G 1z=7.1p||7.2r;2m{6(!(7&&7.1k&&y.7d[7.1k.28()])){6(7["4g"+H]&&7["4g"+H].2g(7,I)===18){L.2l=18;L.4e()}}}2j(ff){}6(!L.8R()&&1z){y.L.2M(L,I,1z,U)}O 6(!L.aQ()){G 2D,1C=L.1C,4N=H.1F(71,""),d0=y.1k(1C,"a")&&4N==="54",26=y.L.26[4N]||{};6((!26.3X||26.3X.1i(7,L)===18)&&!d0&&!(1C&&1C.1k&&y.7d[1C.1k.28()])){2m{6(1C[4N]){2D=1C["4g"+4N];6(2D){1C["4g"+4N]=R}y.L.at=U;1C[4N]()}}2j(fj){}6(2D){1C["4g"+4N]=2D}y.L.at=18}}},29:E(L){G 2K,3Z,23,aN,1j,8d=[],1N=y.2V(1L);L=1N[0]=y.L.41(L||1O.L);L.6Y=B;2K=L.H.2o(".")<0&&!L.d3;6(!2K){23=L.H.31(".");L.H=23.4C();8d=23.2p(0).5H();aN=3e 57("(^|\\\\.)"+8d.4s("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)")}L.2S=L.2S||8d.4s(".");1j=y.I(B,B.1b?"1j":"7j");6(1c 1j==="E"){1j=1j.1j}3Z=(1j||{})[L.H];6(1j&&3Z){3Z=3Z.2p(0);V(G j=0,l=3Z.M;j<l;j++){G 1m=3Z[j];6(2K||aN.19(1m.2S)){L.1E=1m.1E;L.I=1m.I;L.1m=1m;G N=1m.1E.2g(B,1N);6(N!==1f){L.2l=N;6(N===18){L.4e();L.5C()}}6(L.8J()){2B}}}}C L.2l},3y:"fS fQ fX fW 3E fO 8l aL cD aO 6Y I fG fE 8i 1E 5V fN fM aK fZ eO eT aM cB eV eL 70 fc fa f5 cN 1C cH f2 f6 59".31(" "),41:E(L){6(L[y.3C]){C L}G 68=L;L=y.5B(68);V(G i=B.3y.M,1x;i;){1x=B.3y[--i];L[1x]=68[1x]}6(!L.1C){L.1C=L.cN||14}6(L.1C.1b===3){L.1C=L.1C.1p}6(!L.70&&L.8i){L.70=L.8i===L.1C?L.cH:L.8i}6(L.aM==R&&L.aL!=R){G 2i=14.2a,1l=14.1l;L.aM=L.aL+(2i&&2i.45||1l&&1l.45||0)-(2i&&2i.5P||1l&&1l.5P||0);L.cB=L.cD+(2i&&2i.4d||1l&&1l.4d||0)-(2i&&2i.5N||1l&&1l.5N||0)}6(L.59==R&&(L.8l!=R||L.5V!=R)){L.59=L.8l!=R?L.8l:L.5V}6(!L.aK&&L.aO){L.aK=L.aO}6(!L.59&&L.3E!==1f){L.59=(L.3E&1?1:(L.3E&2?3:(L.3E&4?2:0)))}C L},2z:eQ,2J:y.2J,26:{35:{4W:y.aP,53:y.7t},38:{2u:E(1m){y.L.2u(B,73(1m.5w,1m.Q),y.1T({},1m,{1E:d9,2z:1m.1E.2z}))},2T:E(1m){y.L.2T(B,73(1m.5w,1m.Q),1m)}},hz:{4W:E(I,23,3k){6(y.5K(B)){B.aT=3k}},53:E(23,3k){6(B.aT===3k){B.aT=R}}}}};y.by=14.7h?E(7,H,29){6(7.7h){7.7h(H,29,18)}}:E(7,H,29){6(7.8k){7.8k("4g"+H,29)}};y.5B=E(2I){6(!B.4e){C 3e y.5B(2I)}6(2I&&2I.H){B.68=2I;B.H=2I.H}O{B.H=2I}B.hx=y.2Y();B[y.3C]=U};E 69(){C 18}E 8x(){C U}y.5B.2U={4e:E(){B.aQ=8x;G e=B.68;6(!e){C}6(e.4e){e.4e()}O{e.hu=18}},5C:E(){B.8R=8x;G e=B.68;6(!e){C}6(e.5C){e.5C()}e.hv=U},hw:E(){B.8J=8x;B.5C()},aQ:69,8R:69,8J:69};G aR=E(L){G 1z=L.70;2m{27(1z&&1z!==B){1z=1z.1p}6(1z!==B){L.H=L.I;y.L.29.2g(B,1L)}}2j(e){}},8K=E(L){L.H=L.I;y.L.29.2g(B,1L)};y.1g({6a:"9L",6A:"9l"},E(2O,41){y.L.26[2O]={4W:E(I){y.L.2u(B,41,I&&I.Q?8K:aR,2O)},53:E(I){y.L.2T(B,41,I&&I.Q?8K:aR)}}});6(!y.1B.cL){y.L.26.56={4W:E(I,23){6(B.1k.28()!=="48"){y.L.2u(B,"54.aI",E(e){G 7=e.1C,H=7.H;6((H==="56"||H==="96")&&y(7).6x("48").M){e.7a=1f;C 2M("56",B,1L)}});y.L.2u(B,"cZ.aI",E(e){G 7=e.1C,H=7.H;6((H==="1V"||H==="6P")&&y(7).6x("48").M&&e.5V===13){e.7a=1f;C 2M("56",B,1L)}})}O{C 18}},53:E(23){y.L.2T(B,".aI")}}}6(!y.1B.cK){G 5T,ax=E(7){G H=7.H,1a=7.P;6(H==="4L"||H==="5s"){1a=7.4b}O 6(H==="2L-7W"){1a=7.5y>-1?y.36(7.1h,E(7){C 7.5z}).4s("-"):""}O 6(7.1k.28()==="2L"){1a=7.5y}C 1a},6b=E 6b(e){G 7=e.1C,I,1a;6(!8y.19(7.1k)||7.cA){C}I=y.I(7,"az");1a=ax(7);6(e.H!=="6j"||7.H!=="4L"){y.I(7,"az",1a)}6(I===1f||1a===I){C}6(I!=R||1a){e.H="74";e.7a=1f;C y.L.2M(e,1L[1],7)}};y.L.26.74={3W:{6j:6b,hB:6b,54:E(e){G 7=e.1C,H=7.H;6(H==="4L"||H==="5s"||7.1k.28()==="2L"){C 6b.1i(B,e)}},d1:E(e){G 7=e.1C,H=7.H;6((e.5V===13&&7.1k.28()!=="7f")||(e.5V===32&&(H==="5s"||H==="4L"))||H==="2L-7W"){C 6b.1i(B,e)}},cj:E(e){G 7=e.1C;y.I(7,"az",ax(7))}},4W:E(I,23){6(B.H==="7A"){C 18}V(G H 1K 5T){y.L.2u(B,H+".cm",5T[H])}C 8y.19(B.1k)},53:E(23){y.L.2T(B,".cm");C 8y.19(B.1k)}};5T=y.L.26.74.3W;5T.78=5T.cj}E 2M(H,7,1N){1N[0].H=H;C y.L.29.2g(7,1N)}6(14.4A){y.1g({78:"8C",8I:"6j"},E(2O,41){y.L.26[41]={4W:E(){6(av[41]++===0){14.4A(2O,1E,U)}},53:E(){6(--av[41]===0){14.7h(2O,1E,U)}}};E 1E(e){e=y.L.41(e);e.H=41;C y.L.2M(e,R,e.1C)}})}y.1g(["8V","4E"],E(i,J){y.fn[J]=E(H,I,fn){6(1c H==="1S"){V(G 1Q 1K H){B[J](1Q,I,H[1Q],fn)}C B}6(y.1U(I)||I===18){fn=I;I=1f}G 1E=J==="4E"?y.2J(fn,E(L){y(B).5R(L,1E);C fn.2g(B,1L)}):fn;6(H==="9j"&&J!=="4E"){B.4E(H,I,fn)}O{V(G i=0,l=B.M;i<l;i++){y.L.2u(B[i],H,1E,I)}}C B}});y.fn.1T({5R:E(H,fn){6(1c H==="1S"&&!H.4e){V(G 1Q 1K H){B.5R(1Q,H[1Q])}}O{V(G i=0,l=B.M;i<l;i++){y.L.2T(B[i],H,fn)}}C B},8K:E(Q,1Y,I,fn){C B.38(1Y,I,fn,Q)},hD:E(Q,1Y,fn){6(1L.M===0){C B.5R("38")}O{C B.cP(1Y,R,fn,Q)}},2M:E(H,I){C B.1g(E(){y.L.2M(H,I,B)})},8O:E(H,I){6(B[0]){G L=y.5B(H);L.4e();L.5C();y.L.2M(L,I,B[0]);C L.2l}},52:E(fn){G 1N=1L,i=1;27(i<1N.M){y.2J(fn,1N[i++])}C B.54(y.2J(fn,E(L){G 7k=(y.I(B,"7k"+fn.2z)||0)%i;y.I(B,"7k"+fn.2z,7k+1);L.4e();C 1N[7k].2g(B,1L)||18}))},db:E(aF,cs){C B.6a(aF).6A(cs||aF)}});G aC={78:"8C",8I:"6j",6a:"9L",6A:"9l"};y.1g(["38","cP"],E(i,J){y.fn[J]=E(1Y,I,fn,aE){G H,i=0,K,23,5x,Q=aE||B.Q,T=aE?B:y(B.T);6(1c 1Y==="1S"&&!1Y.4e){V(G 1Q 1K 1Y){T[J](1Q,I,1Y[1Q],Q)}C B}6(y.1U(I)){fn=I;I=1f}1Y=(1Y||"").31(" ");27((H=1Y[i++])!=R){K=71.2k(H);23="";6(K){23=K[0];H=H.1F(71,"")}6(H==="db"){1Y.1M("6a"+23,"6A"+23);4V}5x=H;6(H==="78"||H==="8I"){1Y.1M(aC[H]+23);H=H+23}O{H=(aC[H]||H)+23}6(J==="38"){V(G j=0,l=T.M;j<l;j++){y.L.2u(T[j],"38."+73(H,Q),{I:I,Q:Q,1E:fn,5w:H,dg:fn,5x:5x})}}O{T.5R("38."+73(H,Q),fn)}}C B}});E d9(L){G 6t,8Q,6Z,K,1m,7,j,i,l,I,6X,2S,N,1J=[],3j=[],1j=y.I(B,B.1b?"1j":"7j");6(1c 1j==="E"){1j=1j.1j}6(L.7a===B||!1j||!1j.38||L.3E&&L.H==="54"){C}6(L.2S){2S=3e 57("(^|\\\\.)"+L.2S.31(".").4s("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)")}L.7a=B;G 38=1j.38.2p(0);V(j=0;j<38.M;j++){1m=38[j];6(1m.5w.1F(71,"")===L.H){3j.1M(1m.Q)}O{38.3n(j--,1)}}K=y(L.1C).6x(3j,L.6Y);V(i=0,l=K.M;i<l;i++){6X=K[i];V(j=0;j<38.M;j++){1m=38[j];6(6X.Q===1m.Q&&(!2S||2S.19(1m.2S))){7=6X.7;6Z=R;6(1m.5x==="6a"||1m.5x==="6A"){L.H=1m.5x;6Z=y(L.70).6x(1m.Q)[0]}6(!6Z||6Z!==7){1J.1M({7:7,1m:1m,4K:6X.4K})}}}}V(i=0,l=1J.M;i<l;i++){K=1J[i];6(8Q&&K.4K>8Q){2B}L.6Y=K.7;L.I=K.1m.I;L.1m=K.1m;N=K.1m.dg.2g(K.7,1L);6(N===18||L.8R()){8Q=K.4K;6(N===18){6t=18}6(L.8J()){2B}}}C 6t}E 73(H,Q){C(H&&H!=="*"?H+".":"")+Q.1F(d5,"`").1F(cV,"&")}y.1g(("8I 78 8C 6j 91 g0 8q 9j 54 hk "+"hp hq ho 9L 9l 6a 6A "+"74 2L 56 d1 cZ hK 3h").31(" "),E(i,J){y.fn[J]=E(I,fn){6(fn==R){fn=I;I=R}C 1L.M>0?B.8V(J,I,fn):B.2M(J)};6(y.8B){y.8B[J]=U}});6(1O.4x&&!1O.4A){y(1O).8V("9j",E(){V(G id 1K y.2h){6(y.2h[id].29){2m{y.L.2T(y.2h[id].29.7)}2j(e){}}}})}(E(){G 8c=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|[\'"][^\'"]*[\'"]|[^\\[\\]\'"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,46=0,4M=8A.2U.4M,7c=18,9u=U;[0,0].5H(E(){9u=18;C 0});G 1o=E(Q,T,1w,4Z){1w=1w||[];T=T||14;G bI=T;6(T.1b!==1&&T.1b!==9){C[]}6(!Q||1c Q!=="1R"){C 1w}G m,1s,1v,2G,N,1e,43,i,9p=U,76=1o.2e(T),1u=[],9k=Q;do{8c.2k("");m=8c.2k(9k);6(m){9k=m[3];1u.1M(m[1]);6(m[2]){2G=m[3];2B}}}27(m);6(1u.M>1&&ez.2k(Q)){6(1u.M===2&&1y.49[1u[0]]){1s=9U(1u[0]+1u[1],T)}O{1s=1y.49[1u[0]]?[T]:1o(1u.4C(),T);27(1u.M){Q=1u.4C();6(1y.49[Q]){Q+=1u.4C()}1s=9U(Q,1s)}}}O{6(!4Z&&1u.M>1&&T.1b===9&&!76&&1y.K.4u.19(1u[0])&&!1y.K.4u.19(1u[1u.M-1])){N=1o.2y(1u.4C(),T,76);T=N.1q?1o.1I(N.1q,N.1s)[0]:N.1s[0]}6(T){N=4Z?{1q:1u.43(),1s:2V(4Z)}:1o.2y(1u.43(),1u.M===1&&(1u[0]==="~"||1u[0]==="+")&&T.1p?T.1p:T,76);1s=N.1q?1o.1I(N.1q,N.1s):N.1s;6(1u.M>0){1v=2V(1s)}O{9p=18}27(1u.M){1e=1u.43();43=1e;6(!1y.49[1e]){1e=""}O{43=1u.43()}6(43==R){43=T}1y.49[1e](1v,43,76)}}O{1v=1u=[]}}6(!1v){1v=1s}6(!1v){1o.3h(1e||Q)}6(4M.1i(1v)==="[1S 42]"){6(!9p){1w.1M.2g(1w,1v)}O 6(T&&T.1b===1){V(i=0;1v[i]!=R;i++){6(1v[i]&&(1v[i]===U||1v[i].1b===1&&1o.3u(T,1v[i]))){1w.1M(1s[i])}}}O{V(i=0;1v[i]!=R;i++){6(1v[i]&&1v[i].1b===1){1w.1M(1s[i])}}}}O{2V(1v,1w)}6(2G){1o(2G,bI,1w,4Z);1o.9J(1w)}C 1w};1o.9J=E(1w){6(7g){7c=9u;1w.5H(7g);6(7c){V(G i=1;i<1w.M;i++){6(1w[i]===1w[i-1]){1w.3n(i--,1)}}}}C 1w};1o.3N=E(1q,1s){C 1o(1q,R,R,1s)};1o.77=E(2c,1q){C 1o(1q,R,R,[2c]).M>0};1o.2y=E(1q,T,2e){G 1s;6(!1q){C[]}V(G i=0,l=1y.7K.M;i<l;i++){G K,H=1y.7K[i];6((K=1y.83[H].2k(1q))){G 1n=K[1];K.3n(1,1);6(1n.7l(1n.M-1)!=="\\\\"){K[1]=(K[1]||"").1F(/\\\\/g,"");1s=1y.2y[H](K,T,2e);6(1s!=R){1q=1q.1F(1y.K[H],"");2B}}}}6(!1s){1s=T.2R("*")}C{1s:1s,1q:1q}};1o.1I=E(1q,1s,3K,2P){G K,5G,2D=1q,2l=[],2X=1s,bD=1s&&1s[0]&&1o.2e(1s[0]);27(1q&&1s.M){V(G H 1K 1y.1I){6((K=1y.83[H].2k(1q))!=R&&K[2]){G 6E,72,1I=1y.1I[H],1n=K[1];5G=18;K.3n(1,1);6(1n.7l(1n.M-1)==="\\\\"){4V}6(2X===2l){2l=[]}6(1y.9h[H]){K=1y.9h[H](K,2X,3K,2l,2P,bD);6(!K){5G=6E=U}O 6(K===U){4V}}6(K){V(G i=0;(72=2X[i])!=R;i++){6(72){6E=1I(72,K,i,2X);G 4X=2P^!!6E;6(3K&&6E!=R){6(4X){5G=U}O{2X[i]=18}}O 6(4X){2l.1M(72);5G=U}}}}6(6E!==1f){6(!3K){2X=2l}1q=1q.1F(1y.K[H],"");6(!5G){C[]}2B}}}6(1q===2D){6(5G==R){1o.3h(1q)}O{2B}}2D=1q}C 2X};1o.3h=E(8E){ch"dm 3h, bP bK: "+8E};G 1y=1o.3j={7K:["4u","9i","6z"],K:{4u:/#((?:[\\w\\6m-\\6l\\-]|\\\\.)+)/,6V:/\\.((?:[\\w\\6m-\\6l\\-]|\\\\.)+)/,9i:/\\[J=[\'"]*((?:[\\w\\6m-\\6l\\-]|\\\\.)+)[\'"]*\\]/,93:/\\[\\s*((?:[\\w\\6m-\\6l\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*([\'"]*)(.*?)\\3|)\\s*\\]/,6z:/^((?:[\\w\\6m-\\6l\\*\\-]|\\\\.)+)/,8T:/:(d4|4J|4Y|2v)-ie(?:\\((8G|8F|[\\dn+\\-]*)\\))?/,4D:/:(4J|eq|gt|bB|2v|4Y|8G|8F)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,6D:/:((?:[\\w\\6m-\\6l\\-]|\\\\.)+)(?:\\(([\'"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},83:{},98:{"4w":"21","V":"cc"},7M:{3V:E(7){C 7.2W("3V")}},49:{"+":E(1v,24){G 5v=1c 24==="1R",9s=5v&&!/\\W/.19(24),9q=5v&&!9s;6(9s){24=24.28()}V(G i=0,l=1v.M,7;i<l;i++){6((7=1v[i])){27((7=7.6w)&&7.1b!==1){}1v[i]=9q||7&&7.1k.28()===24?7||18:7===24}}6(9q){1o.1I(24,1v,U)}},">":E(1v,24){G 7,5v=1c 24==="1R",i=0,l=1v.M;6(5v&&!/\\W/.19(24)){24=24.28();V(;i<l;i++){7=1v[i];6(7){G 1z=7.1p;1v[i]=1z.1k.28()===24?1z:18}}}O{V(;i<l;i++){7=1v[i];6(7){1v[i]=5v?7.1p:7.1p===24}}6(5v){1o.1I(24,1v,U)}}},"":E(1v,24,2e){G 4S,3r=46++,6p=9W;6(1c 24==="1R"&&!/\\W/.19(24)){24=24.28();4S=24;6p=9R}6p("1p",24,3r,1v,4S,2e)},"~":E(1v,24,2e){G 4S,3r=46++,6p=9W;6(1c 24==="1R"&&!/\\W/.19(24)){24=24.28();4S=24;6p=9R}6p("6w",24,3r,1v,4S,2e)}},2y:{4u:E(K,T,2e){6(1c T.6k!=="1f"&&!2e){G m=T.6k(K[1]);C m&&m.1p?[m]:[]}},9i:E(K,T){6(1c T.bW!=="1f"){G N=[],1w=T.bW(K[1]);V(G i=0,l=1w.M;i<l;i++){6(1w[i].2W("J")===K[1]){N.1M(1w[i])}}C N.M===0?R:N}},6z:E(K,T){C T.2R(K[1])}},9h:{6V:E(K,2X,3K,2l,2P,2e){K=" "+K[1].1F(/\\\\/g,"")+" ";6(2e){C K}V(G i=0,7;(7=2X[i])!=R;i++){6(7){6(2P^(7.21&&(" "+7.21+" ").1F(/[\\t\\n]/g," ").2o(K)>=0)){6(!3K){2l.1M(7)}}O 6(3K){2X[i]=18}}}C 18},4u:E(K){C K[1].1F(/\\\\/g,"")},6z:E(K,2X){C K[1].28()},8T:E(K){6(K[1]==="4J"){G 19=/(-?)(\\d*)n((?:\\+|-)?\\d*)/.2k(K[2]==="8G"&&"2n"||K[2]==="8F"&&"2n+1"||!/\\D/.19(K[2])&&"hQ+"+K[2]||K[2]);K[2]=(19[1]+(19[2]||1))-0;K[3]=19[3]-0}K[0]=46++;C K},93:E(K,2X,3K,2l,2P,2e){G J=K[1].1F(/\\\\/g,"");6(!2e&&1y.98[J]){K[1]=1y.98[J]}6(K[2]==="~="){K[4]=" "+K[4]+" "}C K},6D:E(K,2X,3K,2l,2P){6(K[1]==="2P"){6((8c.2k(K[3])||"").M>1||/^\\w/.19(K[3])){K[3]=1o(K[3],R,R,2X)}O{G N=1o.1I(K[3],2X,3K,U^2P);6(!3K){2l.1M.2g(2l,N)}C 18}}O 6(1y.K.4D.19(K[0])||1y.K.8T.19(K[0])){C U}C K},4D:E(K){K.7b(U);C K}},3W:{hO:E(7){C 7.4j===18&&7.H!=="39"},4j:E(7){C 7.4j===U},4b:E(7){C 7.4b===U},5z:E(7){7.1p.5y;C 7.5z===U},1z:E(7){C!!7.25},6L:E(7){C!7.25},dG:E(7,i,K){C!!1o(K[3],7).M},hM:E(7){C(/h\\d/i).19(7.1k)},1V:E(7){C"1V"===7.H},4L:E(7){C"4L"===7.H},5s:E(7){C"5s"===7.H},7A:E(7){C"7A"===7.H},6P:E(7){C"6P"===7.H},56:E(7){C"56"===7.H},96:E(7){C"96"===7.H},bR:E(7){C"bR"===7.H},3E:E(7){C"3E"===7.H||7.1k.28()==="3E"},4o:E(7){C(/4o|2L|7f|3E/i).19(7.1k)}},eA:{2v:E(7,i){C i===0},4Y:E(7,i,K,1W){C i===1W.M-1},8G:E(7,i){C i%2===0},8F:E(7,i){C i%2===1},bB:E(7,i,K){C i<K[3]-0},gt:E(7,i,K){C i>K[3]-0},4J:E(7,i,K){C K[3]-0===i},eq:E(7,i,K){C K[3]-0===i}},1I:{6D:E(7,K,i,1W){G J=K[1],1I=1y.3W[J];6(1I){C 1I(7,i,K,1W)}O 6(J==="3u"){C(7.cM||7.hZ||1o.7V([7])||"").2o(K[3])>=0}O 6(J==="2P"){G 2P=K[3];V(G j=0,l=2P.M;j<l;j++){6(2P[j]===7){C 18}}C U}O{1o.3h("dm 3h, bP bK: "+J)}},8T:E(7,K){G H=K[1],2c=7;hX(H){8U"d4":8U"2v":27((2c=2c.6w)){6(2c.1b===1){C 18}}6(H==="2v"){C U}2c=7;8U"4Y":27((2c=2c.3R)){6(2c.1b===1){C 18}}C U;8U"4J":G 2v=K[2],4Y=K[3];6(2v===1&&4Y===0){C U}G 3r=K[0],1z=7.1p;6(1z&&(1z.6u!==3r||!7.95)){G eI=0;V(2c=1z.25;2c;2c=2c.3R){6(2c.1b===1){2c.95=++eI}}1z.6u=3r}G 4T=7.95-4Y;6(2v===0){C 4T===0}O{C(4T%2v===0&&4T/2v>=0)}}},4u:E(7,K){C 7.1b===1&&7.2W("id")===K},6z:E(7,K){C(K==="*"&&7.1b===1)||7.1k.28()===K},6V:E(7,K){C(" "+(7.21||7.2W("4w"))+" ").2o(K)>-1},93:E(7,K){G J=K[1],2l=1y.7M[J]?1y.7M[J](7):7[J]!=R?7[J]:7.2W(J),P=2l+"",H=K[2],3H=K[4];C 2l==R?H==="!=":H==="="?P===3H:H==="*="?P.2o(3H)>=0:H==="~="?(" "+P+" ").2o(3H)>=0:!3H?P&&2l!==18:H==="!="?P!==3H:H==="^="?P.2o(3H)===0:H==="$="?P.7l(P.M-3H.M)===3H:H==="|="?P===3H||P.7l(0,3H.M+1)===3H+"-":18},4D:E(7,K,i,1W){G J=K[2],1I=1y.eA[J];6(1I){C 1I(7,i,K,1W)}}}};G ez=1y.K.4D,ed=E(2K,3U){C"\\\\"+(3U-0+1)};V(G H 1K 1y.K){1y.K[H]=3e 57(1y.K[H].7P+(/(?![^\\[]*\\])(?![^\\(]*\\))/.7P));1y.83[H]=3e 57(/(^(?:.|\\r|\\n)*?)/.7P+1y.K[H].7P.1F(/\\\\(\\d+)/g,ed))}G 2V=E(1W,1w){1W=42.2U.2p.1i(1W,0);6(1w){1w.1M.2g(1w,1W);C 1w}C 1W};2m{42.2U.2p.1i(14.2a.3A,0)[0].1b}2j(e){2V=E(1W,1w){G i=0,N=1w||[];6(4M.1i(1W)==="[1S 42]"){42.2U.1M.2g(N,1W)}O{6(1c 1W.M==="50"){V(G l=1W.M;i<l;i++){N.1M(1W[i])}}O{V(;1W[i];i++){N.1M(1W[i])}}}C N}}G 7g,6v;6(14.2a.5M){7g=E(a,b){6(a===b){7c=U;C 0}6(!a.5M||!b.5M){C a.5M?-1:1}C a.5M(b)&4?-1:1}}O{7g=E(a,b){G al,bl,ap=[],bp=[],7R=a.1p,7T=b.1p,1e=7R;6(a===b){7c=U;C 0}O 6(7R===7T){C 6v(a,b)}O 6(!7R){C-1}O 6(!7T){C 1}27(1e){ap.7b(1e);1e=1e.1p}1e=7T;27(1e){bp.7b(1e);1e=1e.1p}al=ap.M;bl=bp.M;V(G i=0;i<al&&i<bl;i++){6(ap[i]!==bp[i]){C 6v(ap[i],bp[i])}}C i===al?6v(a,bp[i],-1):6v(ap[i],b,1)};6v=E(a,b,N){6(a===b){C N}G 1e=a.3R;27(1e){6(1e===b){C-1}1e=1e.3R}C 1}}1o.7V=E(1J){G N="",7;V(G i=0;1J[i];i++){7=1J[i];6(7.1b===3||7.1b===4){N+=7.7U}O 6(7.1b!==8){N+=1o.7V(7.3A)}}C N};(E(){G 48=14.2E("12"),id="1A"+(3e 9v()).eo(),30=14.2a;48.3a="<a J=\'"+id+"\'/>";30.3Q(48,30.25);6(14.6k(id)){1y.2y.4u=E(K,T,2e){6(1c T.6k!=="1f"&&!2e){G m=T.6k(K[1]);C m?m.id===K[1]||1c m.5u!=="1f"&&m.5u("id").7U===K[1]?[m]:1f:[]}};1y.1I.4u=E(7,K){G 2c=1c 7.5u!=="1f"&&7.5u("id");C 7.1b===1&&2c&&2c.7U===K}}30.3G(48);30=48=R})();(E(){G 12=14.2E("12");12.44(14.gn(""));6(12.2R("*").M>0){1y.2y.6z=E(K,T){G 1w=T.2R(K[1]);6(K[1]==="*"){G 60=[];V(G i=0;1w[i];i++){6(1w[i].1b===1){60.1M(1w[i])}}1w=60}C 1w}}12.3a="<a 3V=\'#\'></a>";6(12.25&&1c 12.25.2W!=="1f"&&12.25.2W("3V")!=="#"){1y.7M.3V=E(7){C 7.2W("3V",2)}}12=R})();6(14.6K){(E(){G 7J=1o,12=14.2E("12"),id="gk";12.3a="<p 4w=\'ef\'></p>";6(12.6K&&12.6K(".ef").M===0){C}1o=E(6o,T,2G,4Z){T=T||14;6o=6o.1F(/\\=\\s*([^\'"\\]]*)\\s*\\]/g,"=\'$1\']");6(!4Z&&!1o.2e(T)){6(T.1b===9){2m{C 2V(T.6K(6o),2G)}2j(gl){}}O 6(T.1b===1&&T.1k.28()!=="1S"){G 2D=T.2W("id"),9O=2D||id;6(!2D){T.9P("id",9O)}2m{C 2V(T.6K("#"+9O+" "+6o),2G)}2j(dD){}gs{6(!2D){T.5c("id")}}}}C 7J(6o,T,2G,4Z)};V(G 1x 1K 7J){1o[1x]=7J[1x]}12=R})()}(E(){G 1X=14.2a,3N=1X.77||1X.gx||1X.gu||1X.gv,9N=18;2m{3N.1i(14.2a,"[19!=\'\']:gw")}2j(dD){9N=U}6(3N){1o.77=E(2c,1q){1q=1q.1F(/\\=\\s*([^\'"\\]]*)\\s*\\]/g,"=\'$1\']");6(!1o.2e(2c)){2m{6(9N||!1y.K.6D.19(1q)&&!/!=/.19(1q)){C 3N.1i(2c,1q)}}2j(e){}}C 1o(1q,R,R,[2c]).M>0}}})();(E(){G 12=14.2E("12");12.3a="<12 4w=\'19 e\'></12><12 4w=\'19\'></12>";6(!12.6S||12.6S("e").M===0){C}12.b9.21="e";6(12.6S("e").M===1){C}1y.7K.3n(1,0,"6V");1y.2y.6V=E(K,T,2e){6(1c T.6S!=="1f"&&!2e){C T.6S(K[1])}};12=R})();E 9R(2Q,1e,3r,1v,4S,2e){V(G i=0,l=1v.M;i<l;i++){G 7=1v[i];6(7){G K=18;7=7[2Q];27(7){6(7.6u===3r){K=1v[7.8b];2B}6(7.1b===1&&!2e){7.6u=3r;7.8b=i}6(7.1k.28()===1e){K=7;2B}7=7[2Q]}1v[i]=K}}}E 9W(2Q,1e,3r,1v,4S,2e){V(G i=0,l=1v.M;i<l;i++){G 7=1v[i];6(7){G K=18;7=7[2Q];27(7){6(7.6u===3r){K=1v[7.8b];2B}6(7.1b===1){6(!2e){7.6u=3r;7.8b=i}6(1c 1e!=="1R"){6(7===1e){K=U;2B}}O 6(1o.1I(1e,[7]).M>0){K=7;2B}}7=7[2Q]}1v[i]=K}}}6(14.2a.3u){1o.3u=E(a,b){C a!==b&&(a.3u?a.3u(b):U)}}O 6(14.2a.5M){1o.3u=E(a,b){C!!(a.5M(b)&16)}}O{1o.3u=E(){C 18}}1o.2e=E(7){G 2a=(7?7.2r||7:0).2a;C 2a?2a.1k!=="g3":18};G 9U=E(Q,T){G K,9K=[],9T="",30=T.1b?[T]:T;27((K=1y.K.6D.2k(Q))){9T+=K[0];Q=Q.1F(1y.K.6D,"")}Q=1y.49[Q]?Q+"*":Q;V(G i=0,l=30.M;i<l;i++){1o(Q,30[i],9K)}C 1o.1I(9T,9K)};y.2y=1o;y.1q=1o.3j;y.1q[":"]=y.1q.3W;y.89=1o.9J;y.1V=1o.7V;y.b5=1o.2e;y.3u=1o.3u})();G dJ=/gg$/,dZ=/^(?:dq|dx|dt)/,dK=/,/,9b=/^.[^:#\\[\\.,]*$/,2p=42.2U.2p,4D=y.1q.K.4D;y.fn.1T({2y:E(Q){G N=B.3o("","2y",Q),M=0;V(G i=0,l=B.M;i<l;i++){M=N.M;y.2y(Q,B[i],N);6(i>0){V(G n=M;n<N.M;n++){V(G r=0;r<M;r++){6(N[r]===N[n]){N.3n(n--,1);2B}}}}}C N},dG:E(1C){G 9z=y(1C);C B.1I(E(){V(G i=0,l=9z.M;i<l;i++){6(y.3u(B,9z[i])){C U}}})},2P:E(Q){C B.3o(9f(B,Q,18),"2P",Q)},1I:E(Q){C B.3o(9f(B,Q,U),"1I",Q)},7q:E(Q){C!!Q&&y.1I(Q,B).M>0},6x:E(3j,T){G N=[],i,l,1e=B[0];6(y.3i(3j)){G K,Q,3N={},4K=1;6(1e&&3j.M){V(i=0,l=3j.M;i<l;i++){Q=3j[i];6(!3N[Q]){3N[Q]=y.1q.K.4D.19(Q)?y(Q,T||B.T):Q}}27(1e&&1e.2r&&1e!==T){V(Q 1K 3N){K=3N[Q];6(K.7D?K.4z(1e)>-1:y(1e).7q(K)){N.1M({Q:Q,7:1e,4K:4K})}}1e=1e.1p;4K++}}C N}G 3B=4D.19(3j)?y(3j,T||B.T):R;V(i=0,l=B.M;i<l;i++){1e=B[i];27(1e){6(3B?3B.4z(1e)>-1:y.2y.77(1e,3j)){N.1M(1e);2B}O{1e=1e.1p;6(!1e||!1e.2r||1e===T){2B}}}}N=N.M>1?y.89(N):N;C B.3o(N,"6x",3j)},4z:E(7){6(!7||1c 7==="1R"){C y.4Q(B[0],7?y(7):B.1z().dv())}C y.4Q(7.7D?7[0]:7,B)},2u:E(Q,T){G 1s=1c Q==="1R"?y(Q,T||B.T):y.2V(Q),2K=y.5h(B.3c(),1s);C B.3o(9I(1s[0])||9I(2K[0])?2K:y.89(2K))},gB:E(){C B.2u(B.9D)}});E 9I(2c){C!2c||!2c.1p||2c.1p.1b===11}y.1g({1z:E(7){G 1z=7.1p;C 1z&&1z.1b!==11?1z:R},dq:E(7){C y.2Q(7,"1p")},h1:E(7,i,3x){C y.2Q(7,"1p",3x)},82:E(7){C y.4J(7,2,"3R")},gZ:E(7){C y.4J(7,2,"6w")},gY:E(7){C y.2Q(7,"3R")},dt:E(7){C y.2Q(7,"6w")},gV:E(7,i,3x){C y.2Q(7,"3R",3x)},dx:E(7,i,3x){C y.2Q(7,"6w",3x)},gX:E(7){C y.9H(7.1p.25,7)},dv:E(7){C y.9H(7.25)},6Q:E(7){C y.1k(7,"h2")?7.h3||7.h8.14:y.2V(7.3A)}},E(J,fn){y.fn[J]=E(3x,Q){G N=y.36(B,fn,3x);6(!dJ.19(J)){Q=3x}6(Q&&1c Q==="1R"){N=y.1I(Q,N)}N=B.M>1?y.89(N):N;6((B.M>1||dK.19(Q))&&dZ.19(J)){N=N.h7()}C B.3o(N,J,2p.1i(1L).4s(","))}});y.1T({1I:E(1q,1J,2P){6(2P){1q=":2P("+1q+")"}C 1J.M===1?y.2y.77(1J[0],1q)?[1J[0]]:[]:y.2y.3N(1q,1J)},2Q:E(7,2Q,3x){G 9F=[],1e=7[2Q];27(1e&&1e.1b!==9&&(3x===1f||1e.1b!==1||!y(1e).7q(3x))){6(1e.1b===1){9F.1M(1e)}1e=1e[2Q]}C 9F},4J:E(1e,2l,2Q,7){2l=2l||1;G 3U=0;V(;1e;1e=1e[2Q]){6(1e.1b===1&&++3U===2l){2B}}C 1e},9H:E(n,7){G r=[];V(;n;n=n.3R){6(n.1b===1&&n!==7){r.1M(n)}}C r}});E 9f(5n,3Y,6N){6(y.1U(3Y)){C y.6B(5n,E(7,i){G 6O=!!3Y.1i(7,i,7);C 6O===6N})}O 6(3Y.1b){C y.6B(5n,E(7,i){C(7===3Y)===6N})}O 6(1c 3Y==="1R"){G 97=y.6B(5n,E(7){C 7.1b===1});6(9b.19(3Y)){C y.1I(3Y,97,!6N)}O{3Y=y.1I(3Y,97)}}C y.6B(5n,E(7,i){C(y.4Q(7,3Y)>=0)===6N})}G b8=/ y\\d+="(?:\\d+|R)"/g,7n=/^\\s+/,bq=/<(?!dL|br|dM|9n|hr|gD|4o|9m|gK|7E)(([\\w:]+)[^>]*)\\/>/cC,aY=/<([\\w:]+)/,bA=/<2C/i,bU=/<|&#?\\w+;/,bg=/<(?:1A|1S|9n|3t|17)/i,bi=/4b\\s*(?:[^=]|=\\s*.4b.)/i,dW=/\\=([^="\'>\\s]+\\/)>/g,3f={3t:[1,"<2L 7W=\'7W\'>","</2L>"],gS:[1,"<dN>","</dN>"],dQ:[1,"<2d>","</2d>"],4I:[2,"<2d><2C>","</2C></2d>"],3p:[3,"<2d><2C><4I>","</4I></2C></2d>"],dM:[2,"<2d><2C></2C><aD>","</aD></2d>"],dL:[1,"<36>","</36>"],3X:[0,"",""]};3f.dP=3f.3t;3f.2C=3f.gP=3f.aD=3f.gN=3f.dQ;3f.gO=3f.3p;6(!y.1B.dS){3f.3X=[1,"12<12>","</12>"]}y.fn.1T({1V:E(1V){6(y.1U(1V)){C B.1g(E(i){G 1D=y(B);1D.1V(1V.1i(B,i,1D.1V()))})}6(1c 1V!=="1S"&&1V!==1f){C B.6L().4B((B[0]&&B[0].2r||14).79(1V))}C y.1V(B)},7Z:E(1X){6(y.1U(1X)){C B.1g(E(i){y(B).7Z(1X.1i(B,i))})}6(B[0]){G 4r=y(1X,B[0].2r).eq(0).5j(U);6(B[0].1p){4r.3Q(B[0])}4r.36(E(){G 7=B;27(7.25&&7.25.1b===1){7=7.25}C 7}).4B(B)}C B},cT:E(1X){6(y.1U(1X)){C B.1g(E(i){y(B).cT(1X.1i(B,i))})}C B.1g(E(){G 1D=y(B),6Q=1D.6Q();6(6Q.M){6Q.7Z(1X)}O{1D.4B(1X)}})},4r:E(1X){C B.1g(E(){y(B).7Z(1X)})},gF:E(){C B.1z().1g(E(){6(!y.1k(B,"1l")){y(B).6W(B.3A)}}).3F()},4B:E(){C B.5k(1L,U,E(7){6(B.1b===1){B.44(7)}})},ev:E(){C B.5k(1L,U,E(7){6(B.1b===1){B.3Q(7,B.25)}})},88:E(){6(B[0]&&B[0].1p){C B.5k(1L,18,E(7){B.1p.3Q(7,B)})}O 6(1L.M){G 1s=y(1L[0]);1s.1M.2g(1s,B.80());C B.3o(1s,"88",1L)}},b6:E(){6(B[0]&&B[0].1p){C B.5k(1L,18,E(7){B.1p.3Q(7,B.3R)})}O 6(1L.M){G 1s=B.3o(B,"b6",1L);1s.1M.2g(1s,y(1L[0]).80());C 1s}},2T:E(Q,e1){V(G i=0,7;(7=B[i])!=R;i++){6(!Q||y.1I(Q,[7]).M){6(!e1&&7.1b===1){y.75(7.2R("*"));y.75([7])}6(7.1p){7.1p.3G(7)}}}C B},6L:E(){V(G i=0,7;(7=B[i])!=R;i++){6(7.1b===1){y.75(7.2R("*"))}27(7.25){7.3G(7.25)}}C B},5j:E(1j){G N=B.36(E(){6(!y.1B.bv&&!y.b5(B)){G 1X=B.gI,2r=B.2r;6(!1X){G 12=2r.2E("12");12.44(B.5a(U));1X=12.3a}C y.b7([1X.1F(b8,"").1F(dW,\'="$1">\').1F(7n,"")],2r)[0]}O{C B.5a(U)}});6(1j===U){bm(B,N);bm(B.2y("*"),N.2y("*"))}C N},1X:E(P){6(P===1f){C B[0]&&B[0].1b===1?B[0].3a.1F(b8,""):R}O 6(1c P==="1R"&&!bg.19(P)&&(y.1B.bh||!7n.19(P))&&!3f[(aY.2k(P)||["",""])[1].28()]){P=P.1F(bq,"<$1><$2>");2m{V(G i=0,l=B.M;i<l;i++){6(B[i].1b===1){y.75(B[i].2R("*"));B[i].3a=P}}}2j(e){B.6L().4B(P)}}O 6(y.1U(P)){B.1g(E(i){G 1D=y(B);1D.1X(P.1i(B,i,1D.1X()))})}O{B.6L().4B(P)}C B},6W:E(P){6(B[0]&&B[0].1p){6(y.1U(P)){C B.1g(E(i){G 1D=y(B),2D=1D.1X();1D.6W(P.1i(B,i,2D))})}6(1c P!=="1R"){P=y(P).dr()}C B.1g(E(){G 82=B.3R,1z=B.1p;y(B).2T();6(82){y(82).88(P)}O{y(1z).4B(P)}})}O{C B.3o(y(y.1U(P)?P():P),"6W",P)}},dr:E(Q){C B.2T(Q,U)},5k:E(1N,2d,1r){G 1w,2v,2f,1z,P=1N[0],4l=[];6(!y.1B.85&&1L.M===3&&1c P==="1R"&&bi.19(P)){C B.1g(E(){y(B).5k(1N,2d,1r,U)})}6(y.1U(P)){C B.1g(E(i){G 1D=y(B);1N[0]=P.1i(B,i,2d?1D.1X():1f);1D.5k(1N,2d,1r)})}6(B[0]){1z=P&&P.1p;6(y.1B.1p&&1z&&1z.1b===11&&1z.3A.M===B.M){1w={2f:1z}}O{1w=y.bf(1N,B,4l)}2f=1w.2f;6(2f.3A.M===1){2v=2f=2f.25}O{2v=2f.25}6(2v){2d=2d&&y.1k(2v,"4I");V(G i=0,l=B.M;i<l;i++){1r.1i(2d?30(B[i],2v):B[i],i>0||1w.5q||B.M>1?2f.5a(U):2f)}}6(4l.M){y.1g(4l,cJ)}}C B}});E 30(7,1e){C y.1k(7,"2d")?(7.2R("2C")[0]||7.44(7.2r.2E("2C"))):7}E bm(2O,N){G i=0;N.1g(E(){6(B.1k!==(2O[i]&&2O[i].1k)){C}G 81=y.I(2O[i++]),bc=y.I(B,81),1j=81&&81.1j;6(1j){3g bc.29;bc.1j={};V(G H 1K 1j){V(G 1E 1K 1j[H]){y.L.2u(B,H,1j[H][1E],1j[H][1E].I)}}}})}y.bf=E(1N,7m,4l){G 2f,5q,6F,2i=(7m&&7m[0]?7m[0].2r||7m[0]:14);6(1N.M===1&&1c 1N[0]==="1R"&&1N[0].M<g8&&2i===14&&!bg.19(1N[0])&&(y.1B.85||!bi.19(1N[0]))){5q=U;6F=y.ba[1N[0]];6(6F){6(6F!==1){2f=6F}}}6(!2f){2f=2i.dC();y.b7(1N,2i,2f,4l)}6(5q){y.ba[1N[0]]=6F?2f:1}C{2f:2f,5q:5q}};y.ba={};y.1g({bz:"4B",gr:"ev",3Q:"88",go:"b6",gq:"6W"},E(J,bs){y.fn[J]=E(Q){G N=[],6s=y(Q),1z=B.M===1&&B[0].1p;6(1z&&1z.1b===11&&1z.3A.M===1&&6s.M===1){6s[bs](B[0]);C B}O{V(G i=0,l=6s.M;i<l;i++){G 1J=(i>0?B.5j(U):B).3c();y(6s[i])[bs](1J);N=N.86(1J)}C B.3o(N,J,6s.Q)}}});y.1T({b7:E(1J,T,2f,4l){T=T||14;6(1c T.2E==="1f"){T=T.2r||T[0]&&T[0].2r||14}G N=[];V(G i=0,7;(7=1J[i])!=R;i++){6(1c 7==="50"){7+=""}6(!7){4V}6(1c 7==="1R"&&!bU.19(7)){7=T.79(7)}O 6(1c 7==="1R"){7=7.1F(bq,"<$1><$2>");G bn=(aY.2k(7)||["",""])[1].28(),4r=3f[bn]||3f.3X,cg=4r[0],12=T.2E("12");12.3a=4r[1]+7+4r[2];27(cg--){12=12.b9}6(!y.1B.2C){G b2=bA.19(7),2C=bn==="2d"&&!b2?12.25&&12.25.3A:4r[1]==="<2d>"&&!b2?12.3A:[];V(G j=2C.M-1;j>=0;--j){6(y.1k(2C[j],"2C")&&!2C[j].3A.M){2C[j].1p.3G(2C[j])}}}6(!y.1B.bh&&7n.19(7)){12.3Q(T.79(7n.2k(7)[0]),12.25)}7=12.3A}6(7.1b){N.1M(7)}O{N=y.5h(N,7)}}6(2f){V(i=0;N[i];i++){6(4l&&y.1k(N[i],"1A")&&(!N[i].H||N[i].H.28()==="1V/5p")){4l.1M(N[i].1p?N[i].1p.3G(N[i]):N[i])}O{6(N[i].1b===1){N.3n.2g(N,[i+1,0].86(y.2V(N[i].2R("1A"))))}2f.44(N[i])}}}C N},75:E(1J){G I,id,2h=y.2h,26=y.L.26,5Q=y.1B.5Q;V(G i=0,7;(7=1J[i])!=R;i++){6(7.1k&&y.7d[7.1k.28()]){4V}id=7[y.3C];6(id){I=2h[id];6(I&&I.1j){V(G H 1K I.1j){6(26[H]){y.L.2T(7,H)}O{y.by(7,H,I.29)}}}6(5Q){3g 7[y.3C]}O 6(7.5c){7.5c(y.3C)}3g 2h[id]}}}});E cJ(i,7){6(7.2I){y.6n({1t:7.2I,5o:18,3b:"1A"})}O{y.bw(7.1V||7.cM||7.3a||"")}6(7.1p){7.1p.3G(7)}}G bj=/e5\\([^)]*\\)/i,ew=/2s=([^)]*)/,c4=/-([a-z])/cC,du=/([A-Z])/g,b3=/^-?\\d+(?:4q)?$/i,e3=/^-?\\d/,e9={2H:"7o",dk:"39",1H:"8D"},cS=["cb","hA"],cE=["eG","gp"],58,5I,3v,cf=E(2K,cG){C cG.8Y()};y.fn.1Z=E(J,P){6(1L.M===2&&P===1f){C B}C y.7Q(B,J,P,U,E(7,J,P){C P!==1f?y.17(7,J,P):y.1Z(7,J)})};y.1T({7i:{2s:{3c:E(7,5b){6(5b){G N=58(7,"2s","2s");C N===""?"1":N}O{C 7.17.2s}}}},bS:{"eK":U,"f7":U,"2s":U,"7p":U,"f8":U},bb:{"9y":y.1B.7O?"7O":"fC"},17:E(7,J,P,2G){6(!7||7.1b===3||7.1b===8||!7.17){C}G N,47=y.8a(J),17=7.17,3S=y.7i[47];J=y.bb[47]||47;6(P!==1f){6(1c P==="50"&&62(P)||P==R){C}6(1c P==="50"&&!y.bS[47]){P+="4q"}6(!3S||!("1s"1K 3S)||(P=3S.1s(7,P))!==1f){2m{17[J]=P}2j(e){}}}O{6(3S&&"3c"1K 3S&&(N=3S.3c(7,18,2G))!==1f){C N}C 17[J]}},1Z:E(7,J,2G){G N,47=y.8a(J),3S=y.7i[47];J=y.bb[47]||47;6(3S&&"3c"1K 3S&&(N=3S.3c(7,U,2G))!==1f){C N}O 6(58){C 58(7,J,47)}},bH:E(7,1h,1r){G 2D={};V(G J 1K 1h){2D[J]=7.17[J];7.17[J]=1h[J]}1r.1i(7);V(J 1K 1h){7.17[J]=2D[J]}},8a:E(1R){C 1R.1F(c4,cf)}});y.58=y.1Z;y.1g(["3L","37"],E(i,J){y.7i[J]={3c:E(7,5b,2G){G 1a;6(5b){6(7.6i!==0){1a=aX(7,J,2G)}O{y.bH(7,e9,E(){1a=aX(7,J,2G)})}6(1a<=0){1a=58(7,J,J);6(1a==="b4"&&3v){1a=3v(7,J,J)}6(1a!=R){C 1a===""||1a==="8L"?"b4":1a}}6(1a<0||1a==R){1a=7.17[J];C 1a===""||1a==="8L"?"b4":1a}C 1c 1a==="1R"?1a:1a+"4q"}},1s:E(7,P){6(b3.19(P)){P=2x(P);6(P>=0){C P+"4q"}}O{C P}}}});6(!y.1B.2s){y.7i.2s={3c:E(7,5b){C ew.19((5b&&7.3v?7.3v.1I:7.17.1I)||"")?(2x(57.$1)/dz)+"":5b?"1":""},1s:E(7,P){G 17=7.17;17.7p=1;G 2s=y.62(P)?"":"e5(2s="+P*dz+")",1I=17.1I||"";17.1I=bj.19(1I)?1I.1F(bj,2s):17.1I+\' \'+2s}}}6(14.3q&&14.3q.5I){5I=E(7,fP,J){G N,3q,40;J=J.1F(du,"-$1").28();6(!(3q=7.2r.3q)){C 1f}6((40=3q.5I(7,R))){N=40.eS(J);6(N===""&&!y.3u(7.2r.2a,7)){N=y.17(7,J)}}C N}}6(14.2a.3v){3v=E(7,J){G 1n,bt,N=7.3v&&7.3v[J],17=7.17;6(!b3.19(N)&&e3.19(N)){1n=17.1n;bt=7.bu.1n;7.bu.1n=7.3v.1n;17.1n=J==="f3"?"f1":(N||0);N=17.eM+"4q";17.1n=1n;7.bu.1n=bt}C N===""?"8L":N}}58=5I||3v;E aX(7,J,2G){G 59=J==="37"?cS:cE,1a=J==="37"?7.6i:7.8X;6(2G==="5Y"){C 1a}y.1g(59,E(){6(!2G){1a-=2x(y.1Z(7,"7H"+B))||0}6(2G==="4G"){1a+=2x(y.1Z(7,"4G"+B))||0}O{1a-=2x(y.1Z(7,"5Y"+B+"e0"))||0}});C 1a}6(y.1q&&y.1q.3W){y.1q.3W.39=E(7){G 37=7.6i,3L=7.8X;C(37===0&&3L===0)||(!y.1B.7e&&(7.17.1H||y.1Z(7,"1H"))==="3I")};y.1q.3W.cW=E(7){C!y.1q.3W.39(7)}}G cr=y.2Y(),dB=/<1A\\b[^<]*(?:(?!<\\/1A>)<[^<]*)*<\\/1A>/gi,ek=/^(?:2L|7f)/i,er=/^(?:dA|g9|ge|h5|39|gG|50|6P|gL|gR|gJ|1V|5e|1t|gT)$/i,cv=/^(?:65|h6)$/,ey=/\\[\\]$/,5r=/\\=\\?(&|$)/,92=/\\?/,cI=/([?&])8W=[^&]*/,cY=/^(\\w+:)?\\/\\/([^\\/?#]+)/,ej=/%20/g,cw=/#.*$/,9A=y.fn.91;y.fn.1T({91:E(1t,4t,1r){6(1c 1t!=="1R"&&9A){C 9A.2g(B,1L)}O 6(!B.M){C B}G 7z=1t.2o(" ");6(7z>=0){G Q=1t.2p(7z,1t.M);1t=1t.2p(0,7z)}G H="65";6(4t){6(y.1U(4t)){1r=4t;4t=R}O 6(1c 4t==="1S"){4t=y.7E(4t,y.5l.3z);H="bY"}}G 1D=B;y.6n({1t:1t,H:H,3b:"1X",I:4t,3D:E(6J,22){6(22==="4H"||22==="9w"){1D.1X(Q?y("<12>").4B(6J.87.1F(dB,"")).2y(Q):6J.87)}6(1r){1D.1g(1r,[6J.87,22,6J])}}});C B},gy:E(){C y.7E(B.eJ())},eJ:E(){C B.36(E(){C B.5n?y.2V(B.5n):B}).1I(E(){C B.J&&!B.4j&&(B.4b||ek.19(B.1k)||er.19(B.H))}).36(E(i,7){G 1a=y(B).1a();C 1a==R?R:y.3i(1a)?y.36(1a,E(1a,i){C{J:7.J,P:1a}}):{J:7.J,P:1a}}).3c()}});y.1g("cX bo cn cF cp e8".31(" "),E(i,o){y.fn[o]=E(f){C B.8V(o,f)}});y.1T({3c:E(1t,I,1r,H){6(y.1U(I)){H=H||1r;1r=I;I=R}C y.6n({H:"65",1t:1t,I:I,4H:1r,3b:H})},hY:E(1t,1r){C y.3c(1t,R,1r,"1A")},hT:E(1t,I,1r){C y.3c(1t,I,1r,"5i")},i1:E(1t,I,1r,H){6(y.1U(I)){H=H||1r;1r=I;I={}}C y.6n({H:"bY",1t:1t,I:I,4H:1r,3b:H})},i8:E(bQ){y.1T(y.5l,bQ)},5l:{1t:7G.3V,3T:U,H:"65",9X:"90/x-hJ-48-he",cx:U,5o:U,1d:E(){C 3e 1O.bd()},8Z:{51:"90/51, 1V/51",1X:"1V/1X",1A:"1V/5p, 90/5p",5i:"90/5i, 1V/5p",1V:"1V/hc",3X:"*/*"}},6n:E(5D){G s=y.1T(U,{},y.5l,5D),34,22,I,H=s.H.8Y(),7C=cv.19(H);s.1t=s.1t.1F(cw,"");s.T=5D&&5D.T!=R?5D.T:s;6(s.I&&s.cx&&1c s.I!=="1R"){s.I=y.7E(s.I,s.3z)}6(s.3b==="34"){6(H==="65"){6(!5r.19(s.1t)){s.1t+=(92.19(s.1t)?"&":"?")+(s.34||"1r")+"=?"}}O 6(!s.I||!5r.19(s.I)){s.I=(s.I?s.I+"&":"")+(s.34||"1r")+"=?"}s.3b="5i"}6(s.3b==="5i"&&(s.I&&5r.19(s.I)||5r.19(s.1t))){34=s.hF||("34"+cr++);6(s.I){s.I=(s.I+"").1F(5r,"="+34+"$1")}s.1t=s.1t.1F(5r,"="+34+"$1");s.3b="1A";G aw=1O[34];1O[34]=E(60){6(y.1U(aw)){aw(60)}O{1O[34]=1f;2m{3g 1O[34]}2j(hI){}}I=60;y.7N(s,1d,22,I);y.5S(s,1d,22,I);6(3w){3w.3G(1A)}}}6(s.3b==="1A"&&s.2h===R){s.2h=18}6(s.2h===18&&7C){G aJ=y.2Y();G N=s.1t.1F(cI,"$hy="+aJ);s.1t=N+((N===s.1t)?(92.19(s.1t)?"&":"?")+"8W="+aJ:"")}6(s.I&&7C){s.1t+=(92.19(s.1t)?"&":"?")+s.I}6(s.3T&&y.7L++===0){y.L.2M("cX")}G 1u=cY.2k(s.1t),ak=1u&&(1u[1]&&1u[1].28()!==7G.bk||1u[2].28()!==7G.fk);6(s.3b==="1A"&&H==="65"&&ak){G 3w=14.2R("3w")[0]||14.2a;G 1A=14.2E("1A");6(s.dp){1A.fg=s.dp}1A.2I=s.1t;6(!34){G 46=18;1A.ac=1A.3J=E(){6(!46&&(!B.5m||B.5m==="eY"||B.5m==="3D")){46=U;y.7N(s,1d,22,I);y.5S(s,1d,22,I);1A.ac=1A.3J=R;6(3w&&1A.1p){3w.3G(1A)}}}}3w.3Q(1A,3w.25);C 1f}G 6c=18;G 1d=s.1d();6(!1d){C}6(s.bZ){1d.ec(H,s.1t,s.5o,s.bZ,s.6P)}O{1d.ec(H,s.1t,s.5o)}2m{6((s.I!=R&&!7C)||(5D&&5D.9X)){1d.7B("gz-h9",s.9X)}6(s.et){6(y.5f[s.1t]){1d.7B("e7-cQ-hW",y.5f[s.1t])}6(y.5g[s.1t]){1d.7B("e7-hm-i4",y.5g[s.1t])}}6(!ak){1d.7B("X-eN-fs","bd")}1d.7B("hH",s.3b&&s.8Z[s.3b]?s.8Z[s.3b]+", */*; q=0.hd":s.8Z.3X)}2j(i7){}6(s.c1&&s.c1.1i(s.T,1d,s)===18){6(s.3T&&y.7L--===1){y.L.2M("bo")}1d.6g();C 18}6(s.3T){y.7F(s,"e8",[1d,s])}G 3J=1d.3J=E(7u){6(!1d||1d.5m===0||7u==="6g"){6(!6c){y.5S(s,1d,22,I)}6c=U;6(1d){1d.3J=y.7t}}O 6(!6c&&1d&&(1d.5m===4||7u==="5d")){6c=U;1d.3J=y.7t;22=7u==="5d"?"5d":!y.cq(1d)?"3h":s.et&&y.cu(1d,s.1t)?"9w":"4H";G 9M;6(22==="4H"){2m{I=y.dd(1d,s.3b,s)}2j(ei){22="aZ";9M=ei}}6(22==="4H"||22==="9w"){6(!34){y.7N(s,1d,22,I)}}O{y.b0(s,1d,22,9M)}6(!34){y.5S(s,1d,22,I)}6(7u==="5d"){1d.6g()}6(s.5o){1d=R}}};2m{G dF=1d.6g;1d.6g=E(){6(1d){9Q.2U.1i.1i(dF,1d)}3J("6g")}}2j(gf){}6(s.5o&&s.5d>0){7r(E(){6(1d&&!6c){3J("5d")}},s.5d)}2m{1d.gh(7C||s.I==R?R:s.I)}2j(ck){y.b0(s,1d,R,ck);y.5S(s,1d,22,I)}6(!s.5o){3J()}C 1d},7E:E(a,3z){G s=[],2u=E(1Q,P){P=y.1U(P)?P():P;s[s.M]=cz(1Q)+"="+cz(P)};6(3z===1f){3z=y.5l.3z}6(y.3i(a)||a.7D){y.1g(a,E(){2u(B.J,B.P)})}O{V(G 4c 1K a){8H(4c,a[4c],3z,2u)}}C s.4s("&").1F(ej,"+")}});E 8H(4c,1G,3z,2u){6(y.3i(1G)&&1G.M){y.1g(1G,E(i,v){6(3z||ey.19(4c)){2u(4c,v)}O{8H(4c+"["+(1c v==="1S"||y.3i(v)?i:"")+"]",v,3z,2u)}})}O 6(!3z&&1G!=R&&1c 1G==="1S"){6(y.6y(1G)){2u(4c,"")}O{y.1g(1G,E(k,v){8H(4c+"["+k+"]",v,3z,2u)})}}O{2u(4c,1G)}}y.1T({7L:0,5f:{},5g:{},b0:E(s,1d,22,e){6(s.3h){s.3h.1i(s.T,1d,22,e)}6(s.3T){y.7F(s,"cF",[1d,s,e])}},7N:E(s,1d,22,I){6(s.4H){s.4H.1i(s.T,I,22,1d)}6(s.3T){y.7F(s,"cp",[1d,s])}},5S:E(s,1d,22){6(s.3D){s.3D.1i(s.T,1d,22)}6(s.3T){y.7F(s,"cn",[1d,s])}6(s.3T&&y.7L--===1){y.L.2M("bo")}},7F:E(s,H,1N){(s.T&&s.T.1t==R?y(s.T):y.L).2M(H,1N)},cq:E(1d){2m{C!1d.22&&7G.bk==="7A:"||1d.22>=c7&&1d.22<hE||1d.22===d8||1d.22===ht}2j(e){}C 18},cu:E(1d,1t){G 5f=1d.b1("hs-cQ"),5g=1d.b1("hh");6(5f){y.5f[1t]=5f}6(5g){y.5g[1t]=5g}C 1d.22===d8},dd:E(1d,H,s){G ct=1d.b1("hj-H")||"",51=H==="51"||!H&&ct.2o("51")>=0,I=51?1d.hn:1d.87;6(51&&I.2a.1k==="aZ"){y.3h("aZ")}6(s&&s.eC){I=s.eC(I,H)}6(1c I==="1R"){6(H==="5i"||!H&&ct.2o("5i")>=0){I=y.bx(I)}O 6(H==="1A"||!H&&ct.2o("5p")>=0){y.bw(I)}}C I}});6(1O.e6){y.5l.1d=E(){6(1O.7G.bk!=="7A:"){2m{C 3e 1O.bd()}2j(gd){}}2m{C 3e 1O.e6("gc.gC")}2j(h0){}}}y.1B.6n=!!y.5l.1d();G 8z={},dH=/^(?:52|3m|3l)$/,dI=/^([+\\-]=)?([\\d+.\\-]+)(.*)$/,7v,9V=[["3L","8e","gU","gM","gQ"],["37","as","gE","e4","gH"],["2s"]];y.fn.1T({3m:E(2t,2A,1r){G 7,1H;6(2t||2t===0){C B.6r(5J("3m",3),2t,2A,1r)}O{V(G i=0,j=B.M;i<j;i++){7=B[i];1H=7.17.1H;6(!y.I(7,"7X")&&1H==="3I"){1H=7.17.1H=""}6(1H===""&&y.1Z(7,"1H")==="3I"){y.I(7,"7X",9t(7.1k))}}V(i=0;i<j;i++){7=B[i];1H=7.17.1H;6(1H===""||1H==="3I"){7.17.1H=y.I(7,"7X")||""}}C B}},3l:E(2t,2A,1r){6(2t||2t===0){C B.6r(5J("3l",3),2t,2A,1r)}O{V(G i=0,j=B.M;i<j;i++){G 1H=y.1Z(B[i],"1H");6(1H!=="3I"){y.I(B[i],"7X",1H)}}V(i=0;i<j;i++){B[i].17.1H="3I"}C B}},dX:y.fn.52,52:E(fn,9G,1r){G 9E=1c fn==="7Y";6(y.1U(fn)&&y.1U(9G)){B.dX.2g(B,1L)}O 6(fn==R||9E){B.1g(E(){G 4f=9E?fn:y(B).7q(":39");y(B)[4f?"3m":"3l"]()})}O{B.6r(5J("52",3),fn,9G,1r)}C B},h4:E(2t,7S,2A,1r){C B.1I(":39").1Z("2s",0).3m().3F().6r({2s:7S},2t,2A,1r)},6r:E(1x,2t,2A,1r){G 84=y.2t(2t,2A,1r);6(y.6y(1x)){C B.1g(84.3D)}C B[84.2N===18?"1g":"2N"](E(){G 2q=y.1T({},84),p,9C=B.1b===1,39=9C&&y(B).7q(":39"),1D=B;V(p 1K 1x){G J=y.8a(p);6(p!==J){1x[J]=1x[p];3g 1x[p];p=J}6(1x[p]==="3l"&&39||1x[p]==="3m"&&!39){C 2q.3D.1i(B)}6(9C&&(p==="3L"||p==="37")){2q.4m=[B.17.4m,B.17.gb,B.17.ga];6(y.1Z(B,"1H")==="6C"&&y.1Z(B,"9y")==="3I"){6(!y.1B.9x){B.17.1H="6C-8D"}O{G 1H=9t(B.1k);6(1H==="6C"){B.17.1H="6C-8D"}O{B.17.1H="6C";B.17.7p=1}}}}6(y.3i(1x[p])){(2q.6q=2q.6q||{})[p]=1x[p][1];1x[p]=1x[p][0]}}6(2q.4m!=R){B.17.4m="39"}2q.7w=y.1T({},1x);y.1g(1x,E(J,1a){G e=3e y.fx(1D,2q,J);6(dH.19(1a)){e[1a==="52"?39?"3m":"3l":1a](1x)}O{G 1u=dI.2k(1a),3P=e.1e()||0;6(1u){G 3F=2x(1u[2]),4i=1u[3]||"4q";6(4i!=="4q"){y.17(1D,J,(3F||1)+4i);3P=((3F||1)/e.1e())*3P;y.17(1D,J,3P+4i)}6(1u[1]){3F=((1u[1]==="-="?-1:1)*3F)+3P}e.7y(3P,3F,4i)}O{e.7y(3P,1a,"")}}});C U})},6t:E(9S,5A){G 2Z=y.2Z;6(9S){B.2N([])}B.1g(E(){V(G i=2Z.M-1;i>=0;i--){6(2Z[i].7===B){6(5A){2Z[i](U)}2Z.3n(i,1)}}});6(!5A){B.4U()}C B}});E 5J(H,3U){G 1G={};y.1g(9V.86.2g([],9V.2p(0,3U)),E(){1G[B]=H});C 1G}y.1g({g2:5J("3m",1),g1:5J("3l",1),g4:5J("52",1),g5:{2s:"3m"},g7:{2s:"3l"},g6:{2s:"52"}},E(J,3y){y.fn[J]=E(2t,2A,1r){C B.6r(3y,2t,2A,1r)}});y.1T({2t:E(2t,2A,fn){G 2q=2t&&1c 2t==="1S"?y.1T({},2t):{3D:fn||!fn&&2A||y.1U(2t)&&2t,4F:2t,2A:fn&&2A||2A&&!y.1U(2A)&&2A};2q.4F=y.fx.7z?0:1c 2q.4F==="50"?2q.4F:2q.4F 1K y.fx.7x?y.fx.7x[2q.4F]:y.fx.7x.3X;2q.2D=2q.3D;2q.3D=E(){6(2q.2N!==18){y(B).4U()}6(y.1U(2q.2D)){2q.2D.1i(B)}};C 2q},2A:{eB:E(p,n,7I,4T){C 7I+4T*p},94:E(p,n,7I,4T){C((-61.gj(p*61.gA)/2)+0.5)*4T+7I}},2Z:[],fx:E(7,1h,1x){B.1h=1h;B.7=7;B.1x=1x;6(!1h.2O){1h.2O={}}}});y.fx.2U={aW:E(){6(B.1h.5L){B.1h.5L.1i(B.7,B.2Y,B)}(y.fx.5L[B.1x]||y.fx.5L.3X)(B)},1e:E(){6(B.7[B.1x]!=R&&(!B.7.17||B.7.17[B.1x]==R)){C B.7[B.1x]}G r=2x(y.1Z(B.7,B.1x));C r&&r>-gm?r:0},7y:E(es,7S,4i){G 1D=B,fx=y.fx;B.99=y.2Y();B.3P=es;B.3F=7S;B.4i=4i||B.4i||"4q";B.2Y=B.3P;B.3B=B.4f=0;E t(5A){C 1D.5L(5A)}t.7=B.7;6(t()&&y.2Z.1M(t)&&!7v){7v=ep(fx.ce,fx.bX)}},3m:E(){B.1h.2O[B.1x]=y.17(B.7,B.1x);B.1h.3m=U;B.7y(B.1x==="37"||B.1x==="3L"?1:0,B.1e());y(B.7).3m()},3l:E(){B.1h.2O[B.1x]=y.17(B.7,B.1x);B.1h.3l=U;B.7y(B.1e(),0)},5L:E(5A){G t=y.2Y(),46=U;6(5A||t>=B.1h.4F+B.99){B.2Y=B.3F;B.3B=B.4f=1;B.aW();B.1h.7w[B.1x]=U;V(G i 1K B.1h.7w){6(B.1h.7w[i]!==U){46=18}}6(46){6(B.1h.4m!=R&&!y.1B.9g){G 7=B.7,1h=B.1h;y.1g(["","X","Y"],E(4z,P){7.17["4m"+P]=1h.4m[4z]})}6(B.1h.3l){y(B.7).3l()}6(B.1h.3l||B.1h.3m){V(G p 1K B.1h.7w){y.17(B.7,p,B.1h.2O[p])}}B.1h.3D.1i(B.7)}C 18}O{G n=t-B.99;B.4f=n/B.1h.4F;G 6q=B.1h.6q&&B.1h.6q[B.1x];G bF=B.1h.2A||(y.2A.94?"94":"eB");B.3B=y.2A[6q||bF](B.4f,n,0,1,B.1h.4F);B.2Y=B.3P+((B.3F-B.3P)*B.3B);B.aW()}C U}};y.1T(y.fx,{ce:E(){G 2Z=y.2Z;V(G i=0;i<2Z.M;i++){6(!2Z[i]()){2Z.3n(i--,1)}}6(!2Z.M){y.fx.6t()}},bX:13,6t:E(){hP(7v);7v=R},7x:{i0:i2,ia:c7,3X:i3},5L:{2s:E(fx){y.17(fx.7,"2s",fx.2Y)},3X:E(fx){6(fx.7.17&&fx.7.17[fx.1x]!=R){fx.7.17[fx.1x]=(fx.1x==="37"||fx.1x==="3L"?61.64(0,fx.2Y):fx.2Y)+fx.4i}O{fx.7[fx.1x]=fx.2Y}}}});6(y.1q&&y.1q.3W){y.1q.3W.i5=E(7){C y.6B(y.2Z,E(fn){C 7===fn.7}).M}}E 9t(1k){6(!8z[1k]){G 7=y("<"+1k+">").bz("1l"),1H=7.1Z("1H");7.2T();6(1H==="3I"||1H===""){1H="8D"}8z[1k]=1H}C 8z[1k]}G cR=/^t(?:hR|d|h)$/i,a9=/^(?:1l|1X)$/i;6("ci"1K 14.2a){y.fn.2b=E(1h){G 7=B[0],5O;6(1h){C B.1g(E(i){y.2b.aB(B,1h,i)})}6(!7||!7.2r){C R}6(7===7.2r.1l){C y.2b.aG(7)}2m{5O=7.ci()}2j(e){}G 2i=7.2r,4a=2i.2a;6(!5O||!y.3u(4a,7)){C 5O||{1P:0,1n:0}}G 1l=2i.1l,33=8m(2i),5N=4a.5N||1l.5N||0,5P=4a.5P||1l.5P||0,4d=(33.eD||y.1B.6e&&4a.4d||1l.4d),45=(33.a3||y.1B.6e&&4a.45||1l.45),1P=5O.1P+4d-5N,1n=5O.1n+45-5P;C{1P:1P,1n:1n}}}O{y.fn.2b=E(1h){G 7=B[0];6(1h){C B.1g(E(i){y.2b.aB(B,1h,i)})}6(!7||!7.2r){C R}6(7===7.2r.1l){C y.2b.aG(7)}y.2b.8P();G 40,2w=7.2w,cU=7,2i=7.2r,4a=2i.2a,1l=2i.1l,3q=2i.3q,5U=3q?3q.5I(7,R):7.3v,1P=7.4h,1n=7.8S;27((7=7.1p)&&7!==1l&&7!==4a){6(y.2b.9Y&&5U.2H==="aV"){2B}40=3q?3q.5I(7,R):7.3v;1P-=7.4d;1n-=7.45;6(7===2w){1P+=7.4h;1n+=7.8S;6(y.2b.dj&&!(y.2b.de&&cR.19(7.1k))){1P+=2x(40.a8)||0;1n+=2x(40.a7)||0}cU=2w;2w=7.2w}6(y.2b.da&&40.4m!=="cW"){1P+=2x(40.a8)||0;1n+=2x(40.a7)||0}5U=40}6(5U.2H==="49"||5U.2H==="aa"){1P+=1l.4h;1n+=1l.8S}6(y.2b.9Y&&5U.2H==="aV"){1P+=61.64(4a.4d,1l.4d);1n+=61.64(4a.45,1l.45)}C{1P:1P,1n:1n}}}y.2b={8P:E(){G 1l=14.1l,5t=14.2E("12"),5E,3O,2d,3p,dc=2x(y.1Z(1l,"8e"))||0,1X="<12 17=\'2H:7o;1P:0;1n:0;4G:0;5Y:d6 df #dh;7H:0;37:5F;3L:5F;\'><12></12></12><2d 17=\'2H:7o;1P:0;1n:0;4G:0;5Y:d6 df #dh;7H:0;37:5F;3L:5F;\' hf=\'0\' di=\'0\'><4I><3p></3p></4I></2d>";y.1T(5t.17,{2H:"7o",1P:0,1n:0,4G:0,5Y:0,37:"5F",3L:"5F",dk:"39"});5t.3a=1X;1l.3Q(5t,1l.25);5E=5t.25;3O=5E.25;3p=5E.3R.25.25;B.dj=(3O.4h!==5);B.de=(3p.4h===5);3O.17.2H="aV";3O.17.1P="hg";B.9Y=(3O.4h===20||3O.4h===15);3O.17.2H=3O.17.1P="";5E.17.4m="39";5E.17.2H="49";B.da=(3O.4h===-5);B.cy=(1l.4h!==dc);1l.3G(5t);1l=5t=5E=3O=2d=3p=R;y.2b.8P=y.7t},aG:E(1l){G 1P=1l.4h,1n=1l.8S;y.2b.8P();6(y.2b.cy){1P+=2x(y.1Z(1l,"8e"))||0;1n+=2x(y.1Z(1l,"as"))||0}C{1P:1P,1n:1n}},aB:E(7,1h,i){G 2H=y.1Z(7,"2H");6(2H==="aa"){7.17.2H="49"}G 8h=y(7),8j=8h.2b(),au=y.1Z(7,"1P"),aH=y.1Z(7,"1n"),8M=(2H==="7o"&&y.4Q(\'8L\',[au,aH])>-1),3y={},8N={},aS,aU;6(8M){8N=8h.2H()}aS=8M?8N.1P:co(au,10)||0;aU=8M?8N.1n:co(aH,10)||0;6(y.1U(1h)){1h=1h.1i(7,i,8j)}6(1h.1P!=R){3y.1P=(1h.1P-8j.1P)+aS}6(1h.1n!=R){3y.1n=(1h.1n-8j.1n)+aU}6("bG"1K 1h){1h.bG.1i(7,3y)}O{8h.1Z(3y)}}};y.fn.1T({2H:E(){6(!B[0]){C R}G 7=B[0],2w=B.2w(),2b=B.2b(),7s=a9.19(2w[0].1k)?{1P:0,1n:0}:2w.2b();2b.1P-=2x(y.1Z(7,"8e"))||0;2b.1n-=2x(y.1Z(7,"as"))||0;7s.1P+=2x(y.1Z(2w[0],"a8"))||0;7s.1n+=2x(y.1Z(2w[0],"a7"))||0;C{1P:2b.1P-7s.1P,1n:2b.1n-7s.1n}},2w:E(){C B.36(E(){G 2w=B.2w||14.1l;27(2w&&(!a9.19(2w.1k)&&y.1Z(2w,"2H")==="aa")){2w=2w.2w}C 2w})}});y.1g(["cb","eG"],E(i,J){G 67="8q"+J;y.fn[67]=E(1a){G 7=B[0],33;6(!7){C R}6(1a!==1f){C B.1g(E(){33=8m(B);6(33){33.fe(!i?1a:y(33).45(),i?1a:y(33).4d())}O{B[67]=1a}})}O{33=8m(7);C 33?("a3"1K 33)?33[i?"eD":"a3"]:y.1B.6e&&33.14.2a[67]||33.14.1l[67]:7[67]}}});E 8m(7){C y.5K(7)?7:7.1b===9?7.3q||7.fH:18}y.1g(["eU","e0"],E(i,J){G H=J.28();y.fn["eX"+J]=E(){C B[0]?2x(y.1Z(B[0],H,"7H")):R};y.fn["eW"+J]=E(4G){C B[0]?2x(y.1Z(B[0],H,4G?"4G":"5Y")):R};y.fn[H]=E(4p){G 7=B[0];6(!7){C 4p==R?R:B}6(y.1U(4p)){C B.1g(E(i){G 1D=y(B);1D[H](4p.1i(B,i,1D[H]()))})}6(y.5K(7)){C 7.14.ib==="i9"&&7.14.2a["9B"+J]||7.14.1l["9B"+J]}O 6(7.1b===9){C 61.64(7.2a["9B"+J],7.1l["8q"+J],7.2a["8q"+J],7.1l["2b"+J],7.2a["2b"+J])}O 6(4p===1f){G 2O=y.1Z(7,H),N=2x(2O);C y.62(N)?2O:N}O{C B.1Z(H,1c 4p==="1R"?4p:4p+"4q")}}})})(1O);',62,1131,'||||||if|elem|||||||||||||||||||||||||||jQuery|||this|return||function||var|type|data|name|match|event|length|ret|else|value|selector|null||context|true|for|||||||div||document|||style|false|test|val|nodeType|typeof|xhr|cur|undefined|each|options|call|events|nodeName|body|handleObj|left|Sizzle|parentNode|expr|callback|set|url|parts|checkSet|results|prop|Expr|parent|script|support|target|self|handler|replace|obj|display|filter|elems|in|arguments|push|args|window|top|key|string|object|extend|isFunction|text|array|html|types|css||className|status|namespaces|part|firstChild|special|while|toLowerCase|handle|documentElement|offset|node|table|isXML|fragment|apply|cache|doc|catch|exec|result|try||indexOf|slice|opt|ownerDocument|opacity|speed|add|first|offsetParent|parseFloat|find|guid|easing|break|tbody|old|createElement|elemData|extra|position|src|proxy|all|select|trigger|queue|orig|not|dir|getElementsByTagName|namespace|remove|prototype|makeArray|getAttribute|curLoop|now|timers|root|split||win|jsonp|ready|map|width|live|hidden|innerHTML|dataType|get|attr|new|wrapMap|delete|error|isArray|selectors|eventHandle|hide|show|splice|pushStack|td|defaultView|doneName|isNode|option|contains|currentStyle|head|until|props|traditional|childNodes|pos|expando|complete|button|end|removeChild|check|none|onreadystatechange|inplace|height|eventType|matches|checkDiv|start|insertBefore|nextSibling|hooks|global|num|href|filters|_default|qualifier|handlers|computedStyle|fix|Array|pop|appendChild|scrollLeft|done|origName|form|relative|docElem|checked|prefix|scrollTop|preventDefault|state|on|offsetTop|unit|disabled|thisCache|scripts|overflow|copy|input|size|px|wrap|join|params|ID|DOMContentLoaded|class|attachEvent|classNames|index|addEventListener|append|shift|POS|one|duration|margin|success|tr|nth|level|radio|toString|targetType|trim|ua|inArray|browser|nodeCheck|diff|dequeue|continue|setup|pass|last|seed|number|xml|toggle|teardown|click||submit|RegExp|curCSS|which|cloneNode|computed|removeAttribute|timeout|time|lastModified|etag|merge|json|clone|domManip|ajaxSettings|readyState|elements|async|javascript|cacheable|jsre|checkbox|container|getAttributeNode|isPartStr|origType|preType|selectedIndex|selected|gotoEnd|Event|stopPropagation|origSettings|innerDiv|1px|anyFound|sort|getComputedStyle|genFx|isWindow|step|compareDocumentPosition|clientTop|box|clientLeft|deleteExpando|unbind|handleComplete|changeFilters|prevComputedStyle|keyCode|readyList|second|border|tds|tmp|Math|isNaN|deep|max|GET|eventName|method|originalEvent|returnFalse|mouseenter|testChange|requestDone|removeData|boxModel|values|abort|eventKey|offsetWidth|focusout|getElementById|uFFFF|u00c0|ajax|query|checkFn|specialEasing|animate|insert|stop|sizcache|siblingCheck|previousSibling|closest|isEmptyObject|TAG|mouseleave|grep|inline|PSEUDO|found|cacheresults|handleObjIn|notxml|stateVal|res|querySelectorAll|empty|thisObject|keep|retVal|password|contents|browserMatch|getElementsByClassName|isReady|rootjQuery|CLASS|replaceWith|close|currentTarget|related|relatedTarget|rnamespaces|item|liveConvert|change|cleanData|contextXML|matchesSelector|focus|createTextNode|liveFired|unshift|hasDuplicate|noData|reliableHiddenOffsets|textarea|sortOrder|removeEventListener|cssHooks|__events__|lastToggle|substr|nodes|rleadingWhitespace|absolute|zoom|is|setTimeout|parentOffset|noop|isTimeout|timerId|curAnim|speeds|custom|off|file|setRequestHeader|noContent|jquery|param|triggerGlobal|location|padding|firstNum|oldSizzle|order|active|attrHandle|handleSuccess|cssFloat|source|access|aup|to|bup|nodeValue|getText|multiple|olddisplay|boolean|wrapAll|toArray|oldData|next|leftMatch|optall|checkClone|concat|responseText|before|unique|camelCase|sizset|chunker|namespace_sort|marginTop|attributeNode|rspaces|curElem|fromElement|curOffset|detachEvent|charCode|getWindow|isSupported|readyWait|wait|scroll|copyIsArray|isPlainObject|hasOwn|version|inv|JSON|returnTrue|rformElems|elemdisplay|Object|attrFn|focusin|block|msg|odd|even|buildParams|blur|isImmediatePropagationStopped|delegate|auto|calculatePosition|curPosition|triggerHandler|initialize|maxLevel|isPropagationStopped|offsetLeft|CHILD|case|bind|_|offsetHeight|toUpperCase|accepts|application|load|rquery|ATTR|swing|nodeIndex|image|filtered|attrMap|startTime||isSimple|toplevel|readyBound|constructor|winnow|shrinkWrapBlocks|preFilter|NAME|unload|soFar|mouseout|link|embed|init|prune|isPartStrNotTag|isObj|isTag|defaultDisplay|baseHasDuplicate|Date|notmodified|inlineBlockNeedsLayout|float|targets|_load|client|isElement|prevObject|bool|matched|fn2|sibling|isDisconnected|uniqueSort|tmpSet|mouseover|errMsg|pseudoWorks|nid|setAttribute|Function|dirNodeCheck|clearQueue|later|posProcess|fxAttrs|dirCheck|contentType|supportsFixedPosition|optDisabled|rradiocheck|rclass|removeClass|pageXOffset|addClass|userAgent|tabIndex|borderLeftWidth|borderTopWidth|rroot|static|attributes|onload|setClass|doScrollCheck|scriptEval|xA0|trimRight|trimLeft|onclick|remote||dataAttr|inprogress|acceptData||windowData|eventSupported|marginLeft|triggered|curCSSTop|focusCounts|customJsonp|getVal|class2type|_change_data|String|setOffset|liveMap|colgroup|origSelector|fnOver|bodyOffset|curCSSLeft|specialSubmit|ts|metaKey|clientX|pageX|namespace_re|ctrlKey|bindReady|isDefaultPrevented|withinElement|curTop|onbeforeunload|curLeft|fixed|update|getWH|rtagName|parsererror|handleError|getResponseHeader|hasBody|rnumpx|0px|isXMLDoc|after|clean|rinlinejQuery|lastChild|fragments|cssProps|curData|XMLHttpRequest||buildFragment|rnocache|leadingWhitespace|rchecked|ralpha|protocol||cloneCopyEvent|tag|ajaxStop||rxhtmlTag||original|rsLeft|runtimeStyle|noCloneEvent|globalEval|parseJSON|removeEvent|appendTo|rtbody|lt|rvalidbraces|isXMLFilter|fcleanup|defaultEasing|using|swap|origContext|bubbling|expression|rvalidtokens|arg|rtype|rwebkit|unrecognized|settings|reset|cssNumber|frameElement|rhtml|rnotwhite|getElementsByName|interval|POST|username|rfocusable|beforeSend|cssText|rclickable|rdashAlpha|hasAttribute|specified|200|nm|rescape|parse|Left|htmlFor|hrefNormalized|tick|fcamelCase|depth|throw|getBoundingClientRect|beforeactivate|sendError||specialChange|ajaxComplete|parseInt|ajaxSuccess|httpSuccess|jsc|fnOut||httpNotModified|rnoContent|rhash|processData|doesNotIncludeMarginInBodyOffset|encodeURIComponent|readOnly|pageY|ig|clientY|cssHeight|ajaxError|letter|toElement|rts|evalScript|changeBubbles|submitBubbles|textContent|srcElement|uaMatch|die|Modified|rtable|cssWidth|wrapInner|prevOffsetParent|rspace|visible|ajaxStart|rurl|keypress|isClick|keydown|rmsie|exclusive|only|rperiod|5px|rmozilla|304|liveHandler|subtractsBorderForOverflowNotVisible|hover|bodyMarginTop|httpData|doesAddBorderForTableAndCells|solid|origHandler|000|cellspacing|doesNotAddBorder|visibility|ropera|Syntax|||scriptCharset|parents|detach|rbrace|prevAll|rupper|children|uuid|prevUntil|optSelected|100|color|rscript|createDocumentFragment|pseudoError|_jQuery|oldAbort|has|rfxtypes|rfxnum|runtil|rmultiselector|area|col|fieldset|doScroll|optgroup|thead|rsingleTag|htmlSerialize|rwhite|red|fireEvent|raction|_toggle|webkit|rparentsprev|Width|keepData|rnonword|rnum|paddingLeft|alpha|ActiveXObject|If|ajaxSend|cssShow|__className__|quickExpr|open|fescape|isBool|TEST|rvalidchars|rreturn|parserError|r20|rselectTextarea||rdigit|checkOn|getTime|setInterval||rinput|from|ifModified|hasClass|prepend|ropacity|rvalidescape|rbracket|origPOS|setFilters|linear|dataFilter|pageYOffset||rspecialurl|Top|toggleClass|count|serializeArray|zIndex|relatedNode|pixelLeft|Requested|offsetX|D27CDB6E|1E8|clsid|getPropertyValue|offsetY|Height|prevValue|outer|inner|loaded|changed|can|1em|view|fontSize|property|shiftKey|wheelDelta|fontWeight|lineHeight|4px|screenY|radiotest|screenX|bfnrt|scrollTo|inlineError|charset|rowspan|cellSpacing|triggerError|host|readonly|maxlength||maxLength|rowSpan|colspan|frameBorder|With|removeAttr|charAt|frameborder|useMap||colSpan|tabindex||usemap|styleFloat|rea|eventPhase|applet|detail|parentWindow|444553540000|96B8|AE6D|11cf|layerY|layerX|cancelable|newName|attrChange|changeData|altKey|delay|setData|getData|bubbles|attrName|classid|newValue|resize|slideUp|slideDown|HTML|slideToggle|fadeIn|fadeToggle|fadeOut|512|date|overflowY|overflowX|Microsoft|xhrError|datetime|abortError|Until|send||cos|__sizzle__|qsaError|10000|createComment|insertAfter|Bottom|replaceAll|prependTo|finally||webkitMatchesSelector|msMatchesSelector|sizzle|mozMatchesSelector|serialize|Content|PI|andSelf|XMLHTTP|img|marginRight|unwrap|month|paddingRight|outerHTML|tel|meta|range|paddingTop|caption|th|tfoot|paddingBottom|search|legend|week|marginBottom|nextUntil|noConflict|siblings|nextAll|prev|activeError|parentsUntil|iframe|contentDocument|fadeTo|email|HEAD|reverse|contentWindow|Type|isPrototypeOf|hasOwnProperty|plain|01|urlencoded|cellpadding|20px|Etag|Boolean|content|dblclick|compatible|None|responseXML|mousemove|mousedown|mouseup||Last|1223|returnValue|cancelBubble|stopImmediatePropagation|timeStamp|1_|beforeunload|Right|beforedeactivate|opera|undelegate|300|jsonpCallback|Number|Accept|jsonpError|www|keyup|Invalid|header|safari|enabled|clearInterval|0n|able|mozilla|getJSON|rv|navigator|Since|switch|getScript|innerText|slow|post|600|400|Match|animated|msie|headerError|ajaxSetup|CSS1Compat|fast|compatMode|regexp||child'.split('|'),0,{}))

// SWFobject
/* SWFObject v2.1 <http://code.google.com/p/swfobject/>
	Copyright (c) 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis
	This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
*/
var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);/*@cc_on q=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return }f(H);if(h.ie&&h.win){try{K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");J=C("__ie_ondomload");if(J){I(J,"onreadystatechange",S)}}catch(q){}}if(h.webkit&&typeof K.readyState!=b){Z=setInterval(function(){if(/loaded|complete/.test(K.readyState)){E()}},10)}if(typeof K.addEventListener!=b){K.addEventListener("DOMContentLoaded",E,null)}R(E)}();function S(){if(J.readyState=="complete"){J.parentNode.removeChild(J);E()}}function E(){if(e){return }if(h.ie&&h.win){var v=a("span");try{var u=K.getElementsByTagName("body")[0].appendChild(v);u.parentNode.removeChild(u)}catch(w){return }}e=true;if(Z){clearInterval(Z);Z=null}var q=o.length;for(var r=0;r<q;r++){o[r]()}}function f(q){if(e){q()}else{o[o.length]=q}}function R(r){if(typeof j.addEventListener!=b){j.addEventListener("load",r,false)}else{if(typeof K.addEventListener!=b){K.addEventListener("load",r,false)}else{if(typeof j.attachEvent!=b){I(j,"onload",r)}else{if(typeof j.onload=="function"){var q=j.onload;j.onload=function(){q();r()}}else{j.onload=r}}}}}function H(){var t=N.length;for(var q=0;q<t;q++){var u=N[q].id;if(h.pv[0]>0){var r=C(u);if(r){N[q].width=r.getAttribute("width")?r.getAttribute("width"):"0";N[q].height=r.getAttribute("height")?r.getAttribute("height"):"0";if(c(N[q].swfVersion)){if(h.webkit&&h.webkit<312){Y(r)}W(u,true)}else{if(N[q].expressInstall&&!A&&c("6.0.65")&&(h.win||h.mac)){k(N[q])}else{O(r)}}}}else{W(u,true)}}}function Y(t){var q=t.getElementsByTagName(Q)[0];if(q){var w=a("embed"),y=q.attributes;if(y){var v=y.length;for(var u=0;u<v;u++){if(y[u].nodeName=="DATA"){w.setAttribute("src",y[u].nodeValue)}else{w.setAttribute(y[u].nodeName,y[u].nodeValue)}}}var x=q.childNodes;if(x){var z=x.length;for(var r=0;r<z;r++){if(x[r].nodeType==1&&x[r].nodeName=="PARAM"){w.setAttribute(x[r].getAttribute("name"),x[r].getAttribute("value"))}}}t.parentNode.replaceChild(w,t)}}function k(w){A=true;var u=C(w.id);if(u){if(w.altContentId){var y=C(w.altContentId);if(y){M=y;l=w.altContentId}}else{M=G(u)}if(!(/%$/.test(w.width))&&parseInt(w.width,10)<310){w.width="310"}if(!(/%$/.test(w.height))&&parseInt(w.height,10)<137){w.height="137"}K.title=K.title.slice(0,47)+" - Flash Player Installation";var z=h.ie&&h.win?"ActiveX":"PlugIn",q=K.title,r="MMredirectURL="+j.location+"&MMplayerType="+z+"&MMdoctitle="+q,x=w.id;if(h.ie&&h.win&&u.readyState!=4){var t=a("div");x+="SWFObjectNew";t.setAttribute("id",x);u.parentNode.insertBefore(t,u);u.style.display="none";var v=function(){u.parentNode.removeChild(u)};I(j,"onload",v)}U({data:w.expressInstall,id:m,width:w.width,height:w.height},{flashvars:r},x)}}function O(t){if(h.ie&&h.win&&t.readyState!=4){var r=a("div");t.parentNode.insertBefore(r,t);r.parentNode.replaceChild(G(t),r);t.style.display="none";var q=function(){t.parentNode.removeChild(t)};I(j,"onload",q)}else{t.parentNode.replaceChild(G(t),t)}}function G(v){var u=a("div");if(h.win&&h.ie){u.innerHTML=v.innerHTML}else{var r=v.getElementsByTagName(Q)[0];if(r){var w=r.childNodes;if(w){var q=w.length;for(var t=0;t<q;t++){if(!(w[t].nodeType==1&&w[t].nodeName=="PARAM")&&!(w[t].nodeType==8)){u.appendChild(w[t].cloneNode(true))}}}}}return u}function U(AG,AE,t){var q,v=C(t);if(v){if(typeof AG.id==b){AG.id=t}if(h.ie&&h.win){var AF="";for(var AB in AG){if(AG[AB]!=Object.prototype[AB]){if(AB.toLowerCase()=="data"){AE.movie=AG[AB]}else{if(AB.toLowerCase()=="styleclass"){AF+=' class="'+AG[AB]+'"'}else{if(AB.toLowerCase()!="classid"){AF+=" "+AB+'="'+AG[AB]+'"'}}}}}var AD="";for(var AA in AE){if(AE[AA]!=Object.prototype[AA]){AD+='<param name="'+AA+'" value="'+AE[AA]+'" />'}}v.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AF+">"+AD+"</object>";i[i.length]=AG.id;q=C(AG.id)}else{if(h.webkit&&h.webkit<312){var AC=a("embed");AC.setAttribute("type",P);for(var z in AG){if(AG[z]!=Object.prototype[z]){if(z.toLowerCase()=="data"){AC.setAttribute("src",AG[z])}else{if(z.toLowerCase()=="styleclass"){AC.setAttribute("class",AG[z])}else{if(z.toLowerCase()!="classid"){AC.setAttribute(z,AG[z])}}}}}for(var y in AE){if(AE[y]!=Object.prototype[y]){if(y.toLowerCase()!="movie"){AC.setAttribute(y,AE[y])}}}v.parentNode.replaceChild(AC,v);q=AC}else{var u=a(Q);u.setAttribute("type",P);for(var x in AG){if(AG[x]!=Object.prototype[x]){if(x.toLowerCase()=="styleclass"){u.setAttribute("class",AG[x])}else{if(x.toLowerCase()!="classid"){u.setAttribute(x,AG[x])}}}}for(var w in AE){if(AE[w]!=Object.prototype[w]&&w.toLowerCase()!="movie"){F(u,w,AE[w])}}v.parentNode.replaceChild(u,v);q=u}}}return q}function F(t,q,r){var u=a("param");u.setAttribute("name",q);u.setAttribute("value",r);t.appendChild(u)}function X(r){var q=C(r);if(q&&(q.nodeName=="OBJECT"||q.nodeName=="EMBED")){if(h.ie&&h.win){if(q.readyState==4){B(r)}else{j.attachEvent("onload",function(){B(r)})}}else{q.parentNode.removeChild(q)}}}function B(t){var r=C(t);if(r){for(var q in r){if(typeof r[q]=="function"){r[q]=null}}r.parentNode.removeChild(r)}}function C(t){var q=null;try{q=K.getElementById(t)}catch(r){}return q}function a(q){return K.createElement(q)}function I(t,q,r){t.attachEvent(q,r);d[d.length]=[t,q,r]}function c(t){var r=h.pv,q=t.split(".");q[0]=parseInt(q[0],10);q[1]=parseInt(q[1],10)||0;q[2]=parseInt(q[2],10)||0;return(r[0]>q[0]||(r[0]==q[0]&&r[1]>q[1])||(r[0]==q[0]&&r[1]==q[1]&&r[2]>=q[2]))?true:false}function V(v,r){if(h.ie&&h.mac){return }var u=K.getElementsByTagName("head")[0],t=a("style");t.setAttribute("type","text/css");t.setAttribute("media","screen");if(!(h.ie&&h.win)&&typeof K.createTextNode!=b){t.appendChild(K.createTextNode(v+" {"+r+"}"))}u.appendChild(t);if(h.ie&&h.win&&typeof K.styleSheets!=b&&K.styleSheets.length>0){var q=K.styleSheets[K.styleSheets.length-1];if(typeof q.addRule==Q){q.addRule(v,r)}}}function W(t,q){var r=q?"visible":"hidden";if(e&&C(t)){C(t).style.visibility=r}else{V("#"+t,"visibility:"+r)}}function g(s){var r=/[\\\"<>\.;]/;var q=r.exec(s)!=null;return q?encodeURIComponent(s):s}var D=function(){if(h.ie&&h.win){window.attachEvent("onunload",function(){var w=d.length;for(var v=0;v<w;v++){d[v][0].detachEvent(d[v][1],d[v][2])}var t=i.length;for(var u=0;u<t;u++){X(i[u])}for(var r in h){h[r]=null}h=null;for(var q in swfobject){swfobject[q]=null}swfobject=null})}}();return{registerObject:function(u,q,t){if(!h.w3cdom||!u||!q){return }var r={};r.id=u;r.swfVersion=q;r.expressInstall=t?t:false;N[N.length]=r;W(u,false)},getObjectById:function(v){var q=null;if(h.w3cdom){var t=C(v);if(t){var u=t.getElementsByTagName(Q)[0];if(!u||(u&&typeof t.SetVariable!=b)){q=t}else{if(typeof u.SetVariable!=b){q=u}}}}return q},embedSWF:function(x,AE,AB,AD,q,w,r,z,AC){if(!h.w3cdom||!x||!AE||!AB||!AD||!q){return }AB+="";AD+="";if(c(q)){W(AE,false);var AA={};if(AC&&typeof AC===Q){for(var v in AC){if(AC[v]!=Object.prototype[v]){AA[v]=AC[v]}}}AA.data=x;AA.width=AB;AA.height=AD;var y={};if(z&&typeof z===Q){for(var u in z){if(z[u]!=Object.prototype[u]){y[u]=z[u]}}}if(r&&typeof r===Q){for(var t in r){if(r[t]!=Object.prototype[t]){if(typeof y.flashvars!=b){y.flashvars+="&"+t+"="+r[t]}else{y.flashvars=t+"="+r[t]}}}}f(function(){U(AA,y,AE);if(AA.id==AE){W(AE,true)}})}else{if(w&&!A&&c("6.0.65")&&(h.win||h.mac)){A=true;W(AE,false);f(function(){var AF={};AF.id=AF.altContentId=AE;AF.width=AB;AF.height=AD;AF.expressInstall=w;k(AF)})}}},getFlashPlayerVersion:function(){return{major:h.pv[0],minor:h.pv[1],release:h.pv[2]}},hasFlashPlayerVersion:c,createSWF:function(t,r,q){if(h.w3cdom){return U(t,r,q)}else{return undefined}},removeSWF:function(q){if(h.w3cdom){X(q)}},createCSS:function(r,q){if(h.w3cdom){V(r,q)}},addDomLoadEvent:f,addLoadEvent:R,getQueryParamValue:function(v){var u=K.location.search||K.location.hash;if(v==null){return g(u)}if(u){var t=u.substring(1).split("&");for(var r=0;r<t.length;r++){if(t[r].substring(0,t[r].indexOf("="))==v){return g(t[r].substring((t[r].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(A&&M){var q=C(m);if(q){q.parentNode.replaceChild(M,q);if(l){W(l,true);if(h.ie&&h.win){M.style.display="block"}}M=null;l=null;A=false}}}}}();

///pop.js

/** Version: 4.1.9 (2010-07-05) */
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('q(!m){A m={14:{9s:\'ar\',al:\'eX...\',am:\'8R 2g eY\',bD:\'8R 2g eK 2g ek\',9v:\'en 2g eJ D (f)\',cu:\'ex by <i>ag ah</i>\',cs:\'ez 2g eB ag ah fN\',8t:\'aa\',8n:\'ao\',8f:\'an\',8l:\'af\',8i:\'af (fQ)\',b6:\'fH\',aT:\'ae\',b1:\'ae 1p (ad)\',aW:\'ab\',aU:\'ab 1p (ad)\',8s:\'aa (8Q 18)\',8w:\'ao (8Q 3o)\',8h:\'an\',bb:\'1:1\',3N:\'ff %1 fh %2\',9F:\'8R 2g 2b 2R, fj a8 fy 2g 3A. g3 8Q cR O 1C a8 2W.\'},5p:\'K/dW/\',7M:\'dZ.4X\',5w:\'e0.4X\',7s:5S,9Y:5S,4y:15,9h:15,4T:15,77:15,4t:e1,ak:0.75,91:M,9o:5,3F:2,dV:3,5A:1j,bR:\'4j 3o\',bP:1,c2:M,cp:\'dQ://K.dS/\',cx:\'dv\',az:M,9U:[\'a\',\'5j\'],3i:[],cz:5S,48:0,95:50,7N:1j,7G:M,4z:M,3J:\'5D\',9E:M,4l:\'1Q\',9n:\'1Q\',b7:I,b8:I,9N:M,4B:aZ,5G:aZ,5T:M,1Y:\'dp-dt\',9R:{35:\'<P 1W="K-35"><6c>\'+\'<1K 1W="K-2W">\'+\'<a 24="#" 2j="{m.14.8s}">\'+\'<1D>{m.14.8t}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-3I">\'+\'<a 24="#" 2j="{m.14.b1}">\'+\'<1D>{m.14.aT}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-3r">\'+\'<a 24="#" 2j="{m.14.aU}">\'+\'<1D>{m.14.aW}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-1C">\'+\'<a 24="#" 2j="{m.14.8w}">\'+\'<1D>{m.14.8n}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-3A">\'+\'<a 24="#" 2j="{m.14.8h}">\'+\'<1D>{m.14.8f}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-19-2H">\'+\'<a 24="#" 2j="{m.14.9v}">\'+\'<1D>{m.14.bb}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-2b">\'+\'<a 24="#" 2j="{m.14.8i}" >\'+\'<1D>{m.14.8l}</1D></a>\'+\'</1K>\'+\'</6c></P>\',aK:\'<P 1W="K-fq"><6c>\'+\'<1K 1W="K-2W">\'+\'<a 24="#" 2j="{m.14.8s}" 2n="E m.2W(k)">\'+\'<1D>{m.14.8t}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-1C">\'+\'<a 24="#" 2j="{m.14.8w}" 2n="E m.1C(k)">\'+\'<1D>{m.14.8n}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-3A">\'+\'<a 24="#" 2j="{m.14.8h}" 2n="E 1j">\'+\'<1D>{m.14.8f}</1D></a>\'+\'</1K>\'+\'<1K 1W="K-2b">\'+\'<a 24="#" 2j="{m.14.8i}" 2n="E m.2b(k)">\'+\'<1D>{m.14.8l}</1D></a>\'+\'</1K>\'+\'</6c></P>\'+\'<P 1W="K-1f"></P>\'+\'<P 1W="K-cV"><P>\'+\'<1D 1W="K-4g" 2j="{m.14.b6}"><1D></1D></1D>\'+\'</P></P>\'},6s:[],a0:M,16:[],a1:[\'5T\',\'3x\',\'4l\',\'9n\',\'b7\',\'b8\',\'1Y\',\'3F\',\'cW\',\'cP\',\'dU\',\'aR\',\'e3\',\'eb\',\'ea\',\'aS\',\'cr\',\'9N\',\'4d\',\'64\',\'3i\',\'48\',\'L\',\'N\',\'7X\',\'7N\',\'7G\',\'4z\',\'e9\',\'e5\',\'e4\',\'2F\',\'9E\',\'4f\',\'4m\',\'3J\',\'8e\',\'8Y\',\'4B\',\'5G\',\'6J\',\'8W\',\'aM\',\'2N\',\'2O\',\'cw\',\'ct\',\'1e\'],1T:[],61:0,88:{x:[\'c5\',\'18\',\'4J\',\'3o\',\'c6\'],y:[\'5X\',\'Y\',\'9i\',\'4j\',\'7w\']},7u:{},aS:{},aR:{},8e:{aF:{},2c:{},ax:{}},44:[],5O:[],4A:{},4s:[],6S:[],5b:[],6F:{},a5:{},7l:[],3f:/e8\\/4\\.0/.1a(56.6y)?8:8C((56.6y.6p().31(/.+(?:aB|dO|dN|1E)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),1E:(W.6w&&!1S.3u),4H:/dw/.1a(56.6y),5I:/dy.+aB:1\\.[0-8].+dD/.1a(56.6y),$:C(1x){q(1x)E W.92(1x)},2k:C(26,3g){26[26.V]=3g},1b:C(aA,46,3W,5v,au){A el=W.1b(aA);q(46)m.3s(el,46);q(au)m.R(el,{8O:0,8g:\'1F\',97:0});q(3W)m.R(el,3W);q(5v)5v.21(el);E el},3s:C(el,46){O(A x 3e 46)el[x]=46[x];E el},R:C(el,3W){O(A x 3e 3W){q(m.1E&&x==\'1z\'){q(3W[x]>0.99)el.G.dE(\'60\');J el.G.60=\'aN(1z=\'+(3W[x]*2x)+\')\'}J el.G[x]=3W[x]}},2u:C(el,1d,3B){A 4F,54,4v;q(1G 3B!=\'7F\'||3B===I){A 2G=ck;3B={45:2G[2],2O:2G[3],6O:2G[4]}}q(1G 3B.45!=\'3N\')3B.45=5S;3B.2O=1i[3B.2O]||1i.aq;3B.7o=m.3s({},1d);O(A 2X 3e 1d){A e=1J m.fx(el,3B,2X);4F=8C(m.8p(el,2X))||0;54=8C(1d[2X]);4v=2X!=\'1z\'?\'F\':\'\';e.3y(4F,54,4v)}},8p:C(el,1d){q(el.G[1d]){E el.G[1d]}J q(W.84){E W.84.cf(el,I).bB(1d)}J{q(1d==\'1z\')1d=\'60\';A 3g=el.5H[1d.2d(/\\-(\\w)/g,C(a,b){E b.aE()})];q(1d==\'60\')3g=3g.2d(/aN\\(1z=([0-9]+)\\)/,C(a,b){E b/2x});E 3g===\'\'?1:3g}},7k:C(){A d=W,w=1S,6k=d.7t&&d.7t!=\'8I\'?d.59:d.1f;A L=m.1E?6k.8F:(d.59.8F||7q.dM),N=m.1E?6k.ca:7q.dL;m.4e={L:L,N:N,6v:m.1E?6k.6v:dK,69:m.1E?6k.69:dB};E m.4e},71:C(el){q(/5j/i.1a(el.3O)){A 6V=W.2A(\'1R\');O(A i=0;i<6V.V;i++){A u=6V[i].dA;q(u&&u.2d(/^.*?#/,\'\')==el.22.2X){el=6V[i];5a}}}A p={x:el.4O,y:el.8K};5o(el.aO){el=el.aO;p.x+=el.4O;p.y+=el.8K;q(el!=W.1f&&el!=W.59){p.x-=el.6v;p.y-=el.69}}E p},2H:C(a,2c,3y,T){q(!a)a=m.1b(\'a\',I,{1o:\'1F\'},m.29);q(1G a.6d==\'C\')E 2c;q(T==\'3w\'){O(A i=0;i<m.4s.V;i++){q(m.4s[i]&&m.4s[i].a==a){m.4s[i].bt();m.4s[i]=I;E 1j}}m.bd=M}1t{1J m.6l(a,2c,3y,T);E 1j}1v(e){E M}},9T:C(a,2c,3y){E m.2H(a,2c,3y,\'3w\')},7Y:C(){E m.1b(\'P\',{1c:\'K-3w-S\',2i:m.9Q(m.9R.aK)})},4K:C(el,3O,1c){A 1m=el.2A(3O);O(A i=0;i<1m.V;i++){q((1J 5s(1c)).1a(1m[i].1c)){E 1m[i]}}E I},9Q:C(s){s=s.2d(/\\s/g,\' \');A 2o=/{m\\.14\\.([^}]+)\\}/g,6m=s.31(2o),14;q(6m)O(A i=0;i<6m.V;i++){14=6m[i].2d(2o,"$1");q(1G m.14[14]!=\'1V\')s=s.2d(6m[i],m.14[14])}E s},bl:C(){A 1m=W.2A(\'a\');O(A i=0;i<1m.V;i++){A T=m.aI(1m[i]);q(T&&!1m[i].aJ){(C(){A t=T;q(m.1A(m,\'du\',{6A:1m[i],T:t})){1m[i].2n=(T==\'2R\')?C(){E m.2H(k)}:C(){E m.9T(k,{2F:t})}}})();1m[i].aJ=M}}m.5R()},aI:C(el){q(el.6X==\'K\')E\'2R\';J q(el.6X==\'K-2U\')E\'2U\';J q(el.6X==\'K-1k\')E\'1k\';J q(el.6X==\'K-3t\')E\'3t\'},8c:C(a){O(A i=0;i<m.5b.V;i++){q(m.5b[i][0]==a){A c=m.5b[i][1];m.5b[i][1]=c.5B(1);E c}}E I},bw:C(e){A 26=m.5R();O(A i=0;i<26.5t.V;i++){A a=26.5t[i];q(m.43(a,\'2F\')==\'2U\'&&m.43(a,\'9E\'))m.2k(m.6S,a)}m.9A(0)},9A:C(i){q(!m.6S[i])E;A a=m.6S[i];A 6r=m.4o(m.43(a,\'7X\'));q(!6r)6r=m.7Y();A 2U=1J m.7E(a,6r,1);2U.9a=C(){};2U.3z=C(){m.2k(m.5b,[a,6r]);m.9A(i+1)};2U.9C()},b9:C(){A a2=0,7c=-1,16=m.16,B,1B;O(A i=0;i<16.V;i++){B=16[i];q(B){1B=B.U.G.1B;q(1B&&1B>a2){a2=1B;7c=i}}}q(7c==-1)m.2Y=-1;J 16[7c].3P()},43:C(a,6j){a.6d=a.2n;A p=a.6d?a.6d():I;a.6d=I;E(p&&1G p[6j]!=\'1V\')?p[6j]:(1G m[6j]!=\'1V\'?m[6j]:I)},7L:C(a){A 1e=m.43(a,\'1e\');q(1e)E 1e;E a.24},4o:C(1x){A 1O=m.$(1x),4S=m.a5[1x],a={};q(!1O&&!4S)E I;q(!4S){4S=1O.5B(M);4S.1x=\'\';m.a5[1x]=4S;E 1O}J{E 4S.5B(M)}},3v:C(d){q(d)m.8X.21(d);m.8X.2i=\'\'},1w:C(B){q(!m.2S){m.2S=m.1b(\'P\',{1c:\'K-ee K-2t-D\',67:\'\',2n:C(){q(m.1A(m,\'ed\'))m.2b()}},{1n:\'1X\',1z:0},m.29,M)}m.2S.G.1o=\'\';m.2S.67+=\'|\'+B.Q;q(m.5I&&m.ay)m.R(m.2S,{9k:\'7R(\'+m.5p+\'ec.bf)\',1z:1});J m.2u(m.2S,{1z:B.48},m.95)},9H:C(Q){q(!m.2S)E;q(1G Q!=\'1V\')m.2S.67=m.2S.67.2d(\'|\'+Q,\'\');q((1G Q!=\'1V\'&&m.2S.67!=\'\')||(m.2s&&m.43(m.2s,\'48\')))E;q(m.5I&&m.ay)m.2S.G.1o=\'1F\';J m.2u(m.2S,{1z:0},m.95,I,C(){m.2S.G.1o=\'1F\'})},8A:C(78,B){A 1h=B||m.2B();B=1h;q(m.2s)E 1j;J m.1h=1h;m.4R(W,1S.3u?\'7f\':\'7b\',m.5V);1t{m.2s=78;78.2n()}1v(e){m.1h=m.2s=I}1t{q(!78||B.3i[1]!=\'42\')B.2b()}1v(e){}E 1j},6B:C(el,2q){A B=m.2B(el);q(B)E m.8A(B.8J(2q),B);J E 1j},2W:C(el){E m.6B(el,-1)},1C:C(el){E m.6B(el,1)},5V:C(e){q(!e)e=1S.2v;q(!e.2C)e.2C=e.9X;q(1G e.2C.a3!=\'1V\')E M;q(!m.1A(m,\'dR\',e))E M;A B=m.2B();A 2q=I;ba(e.do){28 70:q(B)B.74();E M;28 32:2q=2;5a;28 34:28 39:28 40:2q=1;5a;28 8:28 33:28 37:28 38:2q=-1;5a;28 27:28 13:2q=0}q(2q!==I){m.4R(W,1S.3u?\'7f\':\'7b\',m.5V);q(!m.az)E M;q(e.5g)e.5g();J e.cv=1j;q(B){q(2q==0){B.2b()}J q(2q==2){q(B.1p)B.1p.bi()}J{q(B.1p)B.1p.3r();m.6B(B.Q,2q)}E 1j}}E M},cO:C(11){m.2k(m.1T,m.3s(11,{23:\'23\'+m.61++}))},cQ:C(1r){A 2Z=1r.2N;q(1G 2Z==\'7F\'){O(A i=0;i<2Z.V;i++){A o={};O(A x 3e 1r)o[x]=1r[x];o.2N=2Z[i];m.2k(m.5O,o)}}J{m.2k(m.5O,1r)}},82:C(6A,6P){A el,2o=/^K-U-([0-9]+)$/;el=6A;5o(el.22){q(el.6I!==1V)E el.6I;q(el.1x&&2o.1a(el.1x))E el.1x.2d(2o,"$1");el=el.22}q(!6P){el=6A;5o(el.22){q(el.3O&&m.6U(el)){O(A Q=0;Q<m.16.V;Q++){A B=m.16[Q];q(B&&B.a==el)E Q}}el=el.22}}E I},2B:C(el,6P){q(1G el==\'1V\')E m.16[m.2Y]||I;q(1G el==\'3N\')E m.16[el]||I;q(1G el==\'9p\')el=m.$(el);E m.16[m.82(el,6P)]||I},6U:C(a){E(a.2n&&a.2n.cB().2d(/\\s/g,\' \').31(/m.(cU|e)cT/))},bM:C(){O(A i=0;i<m.16.V;i++)q(m.16[i]&&m.16[i].5i)m.b9()},1A:C(6u,9l,2G){E 6u&&6u[9l]?(6u[9l](6u,2G)!==1j):M},7Z:C(e){q(!e)e=1S.2v;q(e.dn>1)E M;q(!e.2C)e.2C=e.9X;A el=e.2C;5o(el.22&&!(/K-(2R|3A|3w|4g)/.1a(el.1c))){el=el.22}A B=m.2B(el);q(B&&(B.5J||!B.5i))E M;q(B&&e.T==\'7W\'){q(e.2C.a3)E M;A 31=el.1c.31(/K-(2R|3A|4g)/);q(31){m.2w={B:B,T:31[1],18:B.x.H,L:B.x.D,Y:B.y.H,N:B.y.D,b4:e.7r,b3:e.7P};m.2m(W,\'7x\',m.7n);q(e.5g)e.5g();q(/K-(2R|3w)-9K/.1a(B.S.1c)){B.3P();m.9f=M}E 1j}J q(/K-3w/.1a(el.1c)&&m.2Y!=B.Q){B.3P();B.5l(\'1q\')}}J q(e.T==\'bh\'){m.4R(W,\'7x\',m.7n);q(m.2w){q(m.58&&m.2w.T==\'2R\')m.2w.B.S.G.4w=m.58;A 3G=m.2w.3G;q(!3G&&!m.9f&&!/(3A|4g)/.1a(m.2w.T)){q(m.1A(B,\'dg\'))B.2b()}J q(3G||(!3G&&m.bd)){m.2w.B.5l(\'1q\')}q(m.2w.B.3H)m.2w.B.3H.G.1o=\'1F\';q(3G)m.1A(m.2w.B,\'df\',m.2w);m.9f=1j;m.2w=I}J q(/K-2R-9K/.1a(el.1c)){el.G.4w=m.58}}E 1j},7n:C(e){q(!m.2w)E M;q(!e)e=1S.2v;A a=m.2w,B=a.B;q(B.1k){q(!B.3H)B.3H=m.1b(\'P\',I,{1l:\'2l\',L:B.x.D+\'F\',N:B.y.D+\'F\',18:B.x.cb+\'F\',Y:B.y.cb+\'F\',1B:4,9k:(m.1E?\'dc\':\'1F\'),1z:0.dh},B.U,M);q(B.3H.G.1o==\'1F\')B.3H.G.1o=\'\'}a.dX=e.7r-a.b4;a.dY=e.7P-a.b3;A 9x=1i.dl(1i.aX(a.dX,2)+1i.aX(a.dY,2));q(!a.3G)a.3G=(a.T!=\'2R\'&&9x>0)||(9x>(m.db||5));q(a.3G&&e.7r>5&&e.7P>5){q(!m.1A(B,\'d1\',a))E 1j;q(a.T==\'4g\')B.4g(a);J{B.9B(a.18+a.dX,a.Y+a.dY);q(a.T==\'2R\')B.S.G.4w=\'3A\'}}E 1j},aL:C(e){1t{q(!e)e=1S.2v;A 6f=/d0/i.1a(e.T);q(!e.2C)e.2C=e.9X;q(m.1E)e.98=6f?e.cZ:e.d3;A B=m.2B(e.2C);q(!B.5i)E;q(!B||!e.98||m.2B(e.98,M)==B||m.2w)E;m.1A(B,6f?\'d8\':\'d6\',e);O(A i=0;i<B.1T.V;i++)(C(){A o=m.$(\'23\'+B.1T[i]);q(o&&o.7J){q(6f)m.R(o,{1n:\'1X\',1o:\'\'});m.2u(o,{1z:6f?o.1z:0},o.4b)}})()}1v(e){}},2m:C(el,2v,3E){q(el==W&&2v==\'41\'){m.2k(m.7l,3E)}1t{el.2m(2v,3E,1j)}1v(e){1t{el.a9(\'68\'+2v,3E);el.fd(\'68\'+2v,3E)}1v(e){el[\'68\'+2v]=3E}}},4R:C(el,2v,3E){1t{el.4R(2v,3E,1j)}1v(e){1t{el.a9(\'68\'+2v,3E)}1v(e){el[\'68\'+2v]=I}}},7B:C(i){q(m.a0&&m.6s[i]&&m.6s[i]!=\'1V\'){A 1R=W.1b(\'1R\');1R.4L=C(){1R=I;m.7B(i+1)};1R.1e=m.6s[i]}},bu:C(3N){q(3N&&1G 3N!=\'7F\')m.9o=3N;A 26=m.5R();O(A i=0;i<26.5r.V&&i<m.9o;i++){m.2k(m.6s,m.7L(26.5r[i]))}q(m.1Y)1J m.5L(m.1Y,C(){m.7B(0)});J m.7B(0);q(m.5w)A 4X=m.1b(\'1R\',{1e:m.5p+m.5w})},7A:C(){q(!m.29){m.7k();m.5h=m.1E&&m.3f<7;m.bX=m.5h&&8a.fY==\'fT:\';O(A x 3e m.6N){q(1G m[x]!=\'1V\')m.14[x]=m[x];J q(1G m.14[x]==\'1V\'&&1G m.6N[x]!=\'1V\')m.14[x]=m.6N[x]}m.29=m.1b(\'P\',{1c:\'K-29\'},{1l:\'2l\',18:0,Y:0,L:\'2x%\',1B:m.4t,9t:\'ar\'},W.1f,M);m.2r=m.1b(\'a\',{1c:\'K-2r\',2j:m.14.am,2i:m.14.al,24:\'bZ:;\'},{1l:\'2l\',Y:\'-4k\',1z:m.ak,1B:1},m.29);m.8X=m.1b(\'P\',I,{1o:\'1F\'},m.29);m.2t=m.1b(\'P\',{1c:\'K-2t K-2t-D\'},{1n:(m.4H&&m.3f<7O)?\'1X\':\'1q\'},m.29,1);m.3D=m.1b(\'P\',I,{aD:\'aC\',fw:\'fv\'},I,M);1i.fu=C(t,b,c,d){E c*t/d+b};1i.aq=C(t,b,c,d){E c*(t/=d)*t+b};1i.8d=C(t,b,c,d){E-c*(t/=d)*(t-2)+b};m.cG=m.5h;m.cF=((1S.3u&&m.3f<9)||56.aV==\'b0\'||(m.1E&&m.3f<5.5));m.1A(k,\'ft\')}},41:C(){q(m.a4)E;m.a4=M;O(A i=0;i<m.7l.V;i++)m.7l[i]()},93:C(){A el,1m,6w=[],5r=[],5t=[],3h={},2o;O(A i=0;i<m.9U.V;i++){1m=W.2A(m.9U[i]);O(A j=0;j<1m.V;j++){el=1m[j];2o=m.6U(el);q(2o){m.2k(6w,el);q(2o[0]==\'m.2H\')m.2k(5r,el);J q(2o[0]==\'m.9T\')m.2k(5t,el);A g=m.43(el,\'2N\')||\'1F\';q(!3h[g])3h[g]=[];m.2k(3h[g],el)}}}m.4P={6w:6w,3h:3h,5r:5r,5t:5t};E m.4P},5R:C(){E m.4P||m.93()},2b:C(el){A B=m.2B(el);q(B)B.2b();E 1j}};m.fx=C(30,1r,1d){k.1r=1r;k.30=30;k.1d=1d;q(!1r.aH)1r.aH={}};m.fx.5e={9m:C(){(m.fx.3U[k.1d]||m.fx.3U.a7)(k);q(k.1r.3U)k.1r.3U.aj(k.30,k.4i,k)},3y:C(8m,2g,4v){k.8U=(1J 7C()).7D();k.4F=8m;k.54=2g;k.4v=4v;k.4i=k.4F;k.H=k.9r=0;A 7q=k;C t(7v){E 7q.3U(7v)}t.30=k.30;q(t()&&m.44.2k(t)==1){m.ai=fB(C(){A 44=m.44;O(A i=0;i<44.V;i++)q(!44[i]())44.fr(i--,1);q(!44.V){eg(m.ai)}},13)}},3U:C(7v){A t=(1J 7C()).7D();q(7v||t>=k.1r.45+k.8U){k.4i=k.54;k.H=k.9r=1;k.9m();k.1r.7o[k.1d]=M;A 94=M;O(A i 3e k.1r.7o)q(k.1r.7o[i]!==M)94=1j;q(94){q(k.1r.6O)k.1r.6O.aj(k.30)}E 1j}J{A n=t-k.8U;k.9r=n/k.1r.45;k.H=k.1r.2O(n,0,1,k.1r.45);k.4i=k.4F+((k.54-k.4F)*k.H);k.9m()}E M}};m.3s(m.fx,{3U:{1z:C(fx){m.R(fx.30,{1z:fx.4i})},a7:C(fx){1t{q(fx.30.G&&fx.30.G[fx.1d]!=I)fx.30.G[fx.1d]=fx.4i+fx.4v;J fx.30[fx.1d]=fx.4i}1v(e){}}}});m.5L=C(1Y,3z){k.3z=3z;k.1Y=1Y;A v=m.3f,3X;k.9e=m.1E&&v>=5.5&&v<7;q(!1Y){q(3z)3z();E}m.7A();k.2h=m.1b(\'2h\',{fo:0},{1n:\'1q\',1l:\'2l\',fm:\'fE\',L:0},m.29,M);A 4q=m.1b(\'4q\',I,I,k.2h,1);k.2E=[];O(A i=0;i<=8;i++){q(i%3==0)3X=m.1b(\'3X\',I,{N:\'1Q\'},4q,M);k.2E[i]=m.1b(\'2E\',I,I,3X,M);A G=i!=4?{fF:0,fW:0}:{1l:\'4n\'};m.R(k.2E[i],G)}k.2E[4].1c=1Y+\' K-1g\';k.ap()};m.5L.5e={ap:C(){A 1e=m.5p+(m.fU||"fX/")+k.1Y+".bf";A b2=m.4H&&m.3f<7O?m.29:I;k.3L=m.1b(\'1R\',I,{1l:\'2l\',Y:\'-4k\'},b2,M);A 3C=k;k.3L.4L=C(){3C.aY()};k.3L.1e=1e},aY:C(){A o=k.1y=k.3L.L/4,H=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1w={N:(2*o)+\'F\',L:(2*o)+\'F\'};O(A i=0;i<=8;i++){q(H[i]){q(k.9e){A w=(i==1||i==7)?\'2x%\':k.3L.L+\'F\';A P=m.1b(\'P\',I,{L:\'2x%\',N:\'2x%\',1l:\'4n\',2e:\'1q\'},k.2E[i],M);m.1b(\'P\',I,{60:"fZ:fS.bT.fR(fK=fJ, 1e=\'"+k.3L.1e+"\')",1l:\'2l\',L:w,N:k.3L.N+\'F\',18:(H[i][0]*o)+\'F\',Y:(H[i][1]*o)+\'F\'},P,M)}J{m.R(k.2E[i],{9k:\'7R(\'+k.3L.1e+\') \'+(H[i][0]*o)+\'F \'+(H[i][1]*o)+\'F\'})}q(1S.3u&&(i==3||i==5))m.1b(\'P\',I,1w,k.2E[i],M);m.R(k.2E[i],1w)}}k.3L=I;q(m.4A[k.1Y])m.4A[k.1Y].6q();m.4A[k.1Y]=k;q(k.3z)k.3z()},4G:C(H,1y,at,4b,2O){A B=k.B,5K=B.U.G,1y=1y||0,H=H||{x:B.x.H+1y,y:B.y.H+1y,w:B.x.Z(\'2f\')-2*1y,h:B.y.Z(\'2f\')-2*1y};q(at)k.2h.G.1n=(H.h>=4*k.1y)?\'1X\':\'1q\';m.R(k.2h,{18:(H.x-k.1y)+\'F\',Y:(H.y-k.1y)+\'F\',L:(H.w+2*k.1y)+\'F\'});H.w-=2*k.1y;H.h-=2*k.1y;m.R(k.2E[4],{L:H.w>=0?H.w+\'F\':0,N:H.h>=0?H.h+\'F\':0});q(k.9e)k.2E[3].G.N=k.2E[5].G.N=k.2E[4].G.N},6q:C(be){q(be)k.2h.G.1n=\'1q\';J m.3v(k.2h)}};m.6T=C(B,1w){k.B=B;k.1w=1w;k.3n=1w==\'x\'?\'bH\':\'bI\';k.3l=k.3n.6p();k.5Q=1w==\'x\'?\'bv\':\'bG\';k.7a=k.5Q.6p();k.9q=1w==\'x\'?\'cg\':\'bF\';k.b5=k.9q.6p();k.1H=k.3b=0};m.6T.5e={Z:C(Q){ba(Q){28\'9G\':E k.1L+k.3m+(k.t-m.2r[\'1y\'+k.3n])/2;28\'9I\':E k.H+k.cb+k.1H+(k.D-m.2r[\'1y\'+k.3n])/2;28\'2f\':E k.D+2*k.cb+k.1H+k.3b;28\'5c\':E k.4E-k.3p-k.4D;28\'89\':E k.Z(\'5c\')-2*k.cb-k.1H-k.3b;28\'63\':E k.H-(k.B.1g?k.B.1g.1y:0);28\'83\':E k.Z(\'2f\')+(k.B.1g?2*k.B.1g.1y:0);28\'2I\':E k.1Z?1i.3c((k.D-k.1Z)/2):0}},86:C(){k.cb=(k.B.S[\'1y\'+k.3n]-k.t)/2;k.4D=m[\'97\'+k.9q]},9w:C(){k.t=k.B.el[k.3l]?3M(k.B.el[k.3l]):k.B.el[\'1y\'+k.3n];k.1L=k.B.1L[k.1w];k.3m=(k.B.el[\'1y\'+k.3n]-k.t)/2;q(k.1L==0||k.1L==-1){k.1L=(m.4e[k.3l]/2)+m.4e[\'2a\'+k.5Q]}},87:C(){A B=k.B;k.2Q=\'1Q\';q(B.9n==\'4J\')k.2Q=\'4J\';J q(1J 5s(k.7a).1a(B.4l))k.2Q=I;J q(1J 5s(k.b5).1a(B.4l))k.2Q=\'4x\';k.H=k.1L-k.cb+k.3m;q(k.8W&&k.1w==\'x\')B.6J=1i.3d(B.6J||k.19,B.8W*k.19/B.y.19);k.D=1i.3d(k.19,B[\'4x\'+k.3n]||k.19);k.2L=B.5T?1i.3d(B[\'3d\'+k.3n],k.19):k.19;q(B.2D&&B.3x){k.D=B[k.3l];k.1Z=k.19}q(k.1w==\'x\'&&m.5A)k.2L=B.4B;k.2C=B[\'2C\'+k.1w.aE()];k.3p=m[\'97\'+k.5Q];k.2a=m.4e[\'2a\'+k.5Q];k.4E=m.4e[k.3l]},73:C(i){A B=k.B;q(B.2D&&(B.3x||m.5A)){k.1Z=i;k.D=1i.4x(k.D,k.1Z);B.S.G[k.7a]=k.Z(\'2I\')+\'F\'}J k.D=i;B.S.G[k.3l]=i+\'F\';B.U.G[k.3l]=k.Z(\'2f\')+\'F\';q(B.1g)B.1g.4G();q(B.3H)B.3H.G[k.3l]=i+\'F\';q(k.1w==\'y\'&&B.5U&&B.1f.G.N!=\'1Q\')1t{B.5U.1f.G.2e=\'1Q\'}1v(e){}q(B.2y){A d=B.2p;q(k.9S===1V)k.9S=B.1s[\'1y\'+k.3n]-d[\'1y\'+k.3n];d.G[k.3l]=(k.D-k.9S)+\'F\';q(k.1w==\'x\')B.3V.G.L=\'1Q\';q(B.1f)B.1f.G[k.3l]=\'1Q\'}q(k.1w==\'x\'&&B.1u)B.55(M);q(k.1w==\'x\'&&B.1p&&B.2D){q(i==k.19)B.1p.53(\'19-2H\');J B.1p.4N(\'19-2H\')}},9z:C(i){k.H=i;k.B.U.G[k.7a]=i+\'F\';q(k.B.1g)k.B.1g.4G()}};m.6l=C(a,2c,3y,36){q(W.bW&&m.1E&&!m.a4){m.2m(W,\'41\',C(){1J m.6l(a,2c,3y,36)});E}k.a=a;k.3y=3y;k.36=36||\'2R\';k.2y=(36==\'3w\');k.2D=!k.2y;m.a0=1j;k.1T=[];k.1h=m.1h;m.1h=I;m.7A();A Q=k.Q=m.16.V;O(A i=0;i<m.a1.V;i++){A 2X=m.a1[i];k[2X]=2c&&1G 2c[2X]!=\'1V\'?2c[2X]:m[2X]}q(!k.1e)k.1e=a.24;A el=(2c&&2c.a6)?m.$(2c.a6):a;el=k.aQ=el.2A(\'1R\')[0]||el;k.7m=el.1x||a.1x;q(!m.1A(k,\'eC\'))E M;O(A i=0;i<m.16.V;i++){q(m.16[i]&&m.16[i].a==a&&!(k.1h&&k.3i[1]==\'42\')){m.16[i].3P();E 1j}}q(!m.eA)O(A i=0;i<m.16.V;i++){q(m.16[i]&&m.16[i].aQ!=el&&!m.16[i].6R){m.16[i].7d()}}m.16[Q]=k;q(!m.91&&!m.2s){q(m.16[Q-1])m.16[Q-1].2b();q(1G m.2Y!=\'1V\'&&m.16[m.2Y])m.16[m.2Y].2b()}k.el=el;k.1L=k.aM||m.71(el);m.7k();A x=k.x=1J m.6T(k,\'x\');x.9w();A y=k.y=1J m.6T(k,\'y\');y.9w();q(/5j/i.1a(el.3O))k.ac(el);k.U=m.1b(\'P\',{1x:\'K-U-\'+k.Q,1c:\'K-U \'+k.8Y},{1n:\'1q\',1l:\'2l\',1B:m.4t+=2},I,M);k.U.eD=k.U.eE=m.aL;q(k.36==\'2R\'&&k.3F==2)k.3F=0;q(!k.1Y||(k.1h&&k.2D&&k.3i[1]==\'42\')){k[k.36+\'9y\']()}J q(m.4A[k.1Y]){k.8S();k[k.36+\'9y\']()}J{k.65();A B=k;1J m.5L(k.1Y,C(){B.8S();B[B.36+\'9y\']()})}E M};m.6l.5e={9L:C(e){q(m.eI)eH(\'eF \'+e.eG+\': \'+e.ew);J 1S.8a.24=k.1e},8S:C(){A 1g=k.1g=m.4A[k.1Y];1g.B=k;1g.2h.G.1B=k.U.G.1B-1;m.4A[k.1Y]=I},65:C(){q(k.6R||k.2r)E;k.2r=m.2r;A B=k;k.2r.2n=C(){B.7d()};q(!m.1A(k,\'em\'))E;A B=k,l=k.x.Z(\'9G\')+\'F\',t=k.y.Z(\'9G\')+\'F\';q(!2K&&k.1h&&k.3i[1]==\'42\')A 2K=k.1h;q(2K){l=2K.x.Z(\'9I\')+\'F\';t=2K.y.Z(\'9I\')+\'F\';k.2r.G.1B=m.4t++}47(C(){q(B.2r)m.R(B.2r,{18:l,Y:t,1B:m.4t++})},2x)},ej:C(){A B=k;A 1R=W.1b(\'1R\');k.S=1R;1R.4L=C(){q(m.16[B.Q])B.5Y()};q(m.eh)1R.ei=C(){E 1j};1R.1c=\'K-2R\';m.R(1R,{1n:\'1q\',1o:\'3Q\',1l:\'2l\',6J:\'4k\',1B:3});1R.2j=m.14.9F;q(m.4H&&m.3f<7O)m.29.21(1R);q(m.1E&&m.eo)1R.1e=I;1R.1e=k.1e;k.65()},ep:C(){q(!m.1A(k,\'eu\'))E;k.S=m.8c(k.a);q(!k.S)k.S=m.4o(k.7X);q(!k.S)k.S=m.7Y();k.9V([\'72\']);q(k.72){A 1f=m.4K(k.S,\'P\',\'K-1f\');q(1f)1f.21(k.72);k.72.G.1o=\'3Q\'}m.1A(k,\'et\');A 1s=k.1s=k.S;q(/(3t|1k)/.1a(k.2F))k.8r(1s);m.29.21(k.U);m.R(k.U,{1l:\'es\',8O:\'0 \'+m.9h+\'F 0 \'+m.4y+\'F\'});k.S=m.1b(\'P\',{1c:\'K-3w\'},{1l:\'4n\',1B:3,N:0,2e:\'1q\'},k.U);k.3V=m.1b(\'P\',I,I,k.S,1);k.3V.21(1s);m.R(1s,{1l:\'4n\',1o:\'3Q\',9t:m.14.9s||\'\'});q(k.L)1s.G.L=k.L+\'F\';q(k.N)m.R(1s,{N:k.N+\'F\',2e:\'1q\'});q(1s.1N<k.4B)1s.G.L=k.4B+\'F\';q(k.2F==\'2U\'&&!m.8c(k.a)){k.65();A B=k;A 2U=1J m.7E(k.a,1s);2U.1e=k.1e;2U.3z=C(){q(m.16[B.Q])B.5Y()};2U.9a=C(){8a.24=B.1e};2U.9C()}J q(k.2F==\'1k\'&&k.3J==\'5D\'){k.6L()}J k.5Y()},5Y:C(){1t{q(!k.S)E;k.S.4L=I;q(k.6R)E;J k.6R=M;A x=k.x,y=k.y;q(k.2r){m.R(k.2r,{Y:\'-4k\'});k.2r=I;m.1A(k,\'ch\')}q(k.2D){x.19=k.S.L;y.19=k.S.N;m.R(k.S,{L:x.t+\'F\',N:y.t+\'F\'});k.U.21(k.S);m.29.21(k.U)}J q(k.8B)k.8B();x.86();y.86();m.R(k.U,{18:(x.1L+x.3m-x.cb)+\'F\',Y:(y.1L+x.3m-y.cb)+\'F\'});k.90();k.c3();A 2V=x.19/y.19;x.87();k.2Q(x);y.87();k.2Q(y);q(k.2y)k.bc();q(k.1u)k.55(0,1);q(k.5T){q(k.2D)k.cl(2V);J k.7T();A 1P=k.1p;q(1P&&k.1h&&1P.35&&1P.aP){A H=1P.cA.1l||\'\',p;O(A 1w 3e m.88)O(A i=0;i<5;i++){p=k[1w];q(H.31(m.88[1w][i])){p.H=k.1h[1w].H+(k.1h[1w].1H-p.1H)+(k.1h[1w].D-p.D)*[0,0,.5,1,1][i];q(1P.aP==\'eL\'){q(p.H+p.D+p.1H+p.3b>p.2a+p.4E-p.4D)p.H=p.2a+p.4E-p.D-p.3p-p.4D-p.1H-p.3b;q(p.H<p.2a+p.3p)p.H=p.2a+p.3p}}}}q(k.2D&&k.x.19>(k.x.1Z||k.x.D)){k.c0();q(k.1T.V==1)k.55()}}k.8Z()}1v(e){k.9L(e)}},8r:C(5v,1Q){A c=m.4K(5v,\'79\',\'K-1f\');q(/(1k|3t)/.1a(k.2F)){q(k.4f)c.G.L=k.4f+\'F\';q(k.4m)c.G.N=k.4m+\'F\'}},6L:C(){q(k.aw)E;A B=k;k.1f=m.4K(k.1s,\'79\',\'K-1f\');q(k.2F==\'1k\'){k.65();A 5m=m.3D.5B(1);k.1f.21(5m);k.f5=k.1s.1N;q(!k.4f)k.4f=5m.1N;A 5k=k.1s.1U-k.1f.1U,h=k.4m||m.4e.N-5k-m.4T-m.77,4L=k.3J==\'5D\'?\' 4L="q (m.16[\'+k.Q+\']) m.16[\'+k.Q+\'].5Y()" \':\'\';k.1f.2i+=\'<1k 2X="m\'+(1J 7C()).7D()+\'" f1="0" Q="\'+k.Q+\'" \'+\' G="L:\'+k.4f+\'F; N:\'+h+\'F" \'+4L+\' 1e="\'+k.1e+\'" ></1k>\';k.5m=k.1f.2A(\'P\')[0];k.1k=k.1f.2A(\'1k\')[0];q(k.3J==\'5P\')k.7U()}q(k.2F==\'3t\'){k.1f.1x=k.1f.1x||\'m-f6-1x-\'+k.Q;A a=k.8e;q(!a.2c)a.2c={};q(1G a.2c.aG==\'1V\')a.2c.aG=\'f7\';q(96)96.fc(k.1e,k.1f.1x,k.4f,k.4m,a.fb||\'7\',a.fa,a.aF,a.2c,a.ax)}k.aw=M},8B:C(){q(k.1k&&!k.4m){k.1k.G.N=k.1f.G.N=k.8E()+\'F\'}k.1s.21(m.3D);q(!k.x.19)k.x.19=k.1s.1N;k.y.19=k.1s.1U;k.1s.8T(m.3D);q(m.1E&&k.av>3M(k.1s.5H.N)){k.av=3M(k.1s.5H.N)}m.R(k.U,{1l:\'2l\',8O:\'0\'});m.R(k.S,{L:k.x.t+\'F\',N:k.y.t+\'F\'})},8E:C(){A h;1t{A 2z=k.5U=k.1k.9c||k.1k.6i.W;A 3D=2z.1b(\'P\');3D.G.aD=\'aC\';2z.1f.21(3D);h=3D.8K;q(m.1E)h+=3M(2z.1f.5H.4T)+3M(2z.1f.5H.77)-1}1v(e){h=eZ}E h},7U:C(){A 5n=k.1s.1N-k.5m.1N;m.3v(k.5m);q(5n<0)5n=0;A 5k=k.1s.1U-k.1k.1U;q(k.5U&&!k.4m&&!k.N&&k.y.D==k.y.19)1t{k.5U.1f.G.2e=\'1q\'}1v(e){}m.R(k.1k,{L:1i.9D(k.x.D-5n)+\'F\',N:1i.9D(k.y.D-5k)+\'F\'});m.R(k.1f,{L:k.1k.G.L,N:k.1k.G.N});k.4Z=k.1k;k.2p=k.4Z},bc:C(){k.8r(k.1s);q(k.2F==\'3t\'&&k.3J==\'5D\')k.6L();q(k.x.D<k.x.19&&!k.7N)k.x.D=k.x.19;q(k.y.D<k.y.19&&!k.7G)k.y.D=k.y.19;k.2p=k.1s;m.R(k.3V,{1l:\'4n\',L:k.x.D+\'F\'});m.R(k.1s,{8g:\'1F\',L:\'1Q\',N:\'1Q\'});A 1O=m.4K(k.1s,\'79\',\'K-1f\');q(1O&&!/(1k|3t)/.1a(k.2F)){A 5d=1O;1O=m.1b(5d.eP,I,{2e:\'1q\'},I,M);5d.22.eO(1O,5d);1O.21(m.3D);1O.21(5d);A 5n=k.1s.1N-1O.1N;A 5k=k.1s.1U-1O.1U;1O.8T(m.3D);A 7I=m.4H||56.aV==\'b0\'?1:0;m.R(1O,{L:(k.x.D-5n-7I)+\'F\',N:(k.y.D-5k)+\'F\',2e:\'1Q\',1l:\'4n\'});q(7I&&5d.1U>1O.1U){1O.G.L=(3M(1O.G.L)+7I)+\'F\'}k.4Z=1O;k.2p=k.4Z}q(k.1k&&k.3J==\'5D\')k.7U();q(!k.4Z&&k.y.D<k.3V.1U)k.2p=k.S;q(k.2p==k.S&&!k.7N&&!/(1k|3t)/.1a(k.2F)){k.x.D+=17}q(k.2p&&k.2p.1U>k.2p.22.1U){47("1t { m.16["+k.Q+"].2p.G.2e = \'1Q\'; } 1v(e) {}",m.7s)}},ac:C(5j){A c=5j.eU.6z(\',\');O(A i=0;i<c.V;i++)c[i]=3M(c[i]);q(5j.g1.6p()==\'eV\'){k.x.1L+=c[0]-c[2];k.y.1L+=c[1]-c[2];k.x.t=k.y.t=2*c[2]}J{A 5M,5N,5y=5M=c[0],62=5N=c[1];O(A i=0;i<c.V;i++){q(i%2==0){5y=1i.3d(5y,c[i]);5M=1i.4x(5M,c[i])}J{62=1i.3d(62,c[i]);5N=1i.4x(5N,c[i])}}k.x.1L+=5y;k.x.t=5M-5y;k.y.1L+=62;k.y.t=5N-62}},2Q:C(p,5f){A 4M,2K=p.2C,1w=p==k.x?\'x\':\'y\';q(2K&&2K.31(/ /)){4M=2K.6z(\' \');2K=4M[0]}q(2K&&m.$(2K)){p.H=m.71(m.$(2K))[1w];q(4M&&4M[1]&&4M[1].31(/^[-]?[0-9]+F$/))p.H+=3M(4M[1]);q(p.D<p.2L)p.D=p.2L}J q(p.2Q==\'1Q\'||p.2Q==\'4J\'){A 8b=1j;A 52=p.B.5T;q(p.2Q==\'4J\')p.H=1i.3c(p.2a+(p.4E+p.3p-p.4D-p.Z(\'2f\'))/2);J p.H=1i.3c(p.H-((p.Z(\'2f\')-p.t)/2));q(p.H<p.2a+p.3p){p.H=p.2a+p.3p;8b=M}q(!5f&&p.D<p.2L){p.D=p.2L;52=1j}q(p.H+p.Z(\'2f\')>p.2a+p.4E-p.4D){q(!5f&&8b&&52){p.D=1i.3d(p.D,p.Z(1w==\'y\'?\'5c\':\'89\'))}J q(p.Z(\'2f\')<p.Z(\'5c\')){p.H=p.2a+p.4E-p.4D-p.Z(\'2f\')}J{p.H=p.2a+p.3p;q(!5f&&52)p.D=p.Z(1w==\'y\'?\'5c\':\'89\')}}q(!5f&&p.D<p.2L){p.D=p.2L;52=1j}}J q(p.2Q==\'4x\'){p.H=1i.eW(p.H-p.D+p.t)}q(p.H<p.3p){A co=p.H;p.H=p.3p;q(52&&!5f)p.D=p.D-(p.H-co)}},cl:C(2V){A x=k.x,y=k.y,3K=1j,3a=1i.3d(x.19,x.D),4c=1i.3d(y.19,y.D),3x=(k.3x||m.5A);q(3a/4c>2V){ 3a=4c*2V;q(3a<x.2L){3a=x.2L;4c=3a/2V}3K=M}J q(3a/4c<2V){ 4c=3a/2V;3K=M}q(m.5A&&x.19<x.2L){x.1Z=x.19;y.D=y.1Z=y.19}J q(k.3x){x.1Z=3a;y.1Z=4c}J{x.D=3a;y.D=4c}3K=k.7T(k.3x?I:2V,3K);q(3x&&y.D<y.1Z){y.1Z=y.D;x.1Z=y.D*2V}q(3K||3x){x.H=x.1L-x.cb+x.3m;x.2L=x.D;k.2Q(x,M);y.H=y.1L-y.cb+y.3m;y.2L=y.D;k.2Q(y,M);q(k.1u)k.55()}},7T:C(2V,3K){A x=k.x,y=k.y;q(k.1u&&(k.2D||k.7G)){5o(y.D>k.5G&&x.D>k.4B&&y.Z(\'2f\')>y.Z(\'5c\')){y.D-=10;q(2V)x.D=y.D*2V;k.55(0,1);3K=M}}E 3K},eT:C(){q(k.2p){A h=/1k/i.1a(k.2p.3O)?(k.8E()+1)+\'F\':\'1Q\';q(k.1f)k.1f.G.N=h;k.2p.G.N=h;k.y.73(k.1s.1U)}},8Z:C(){A x=k.x,y=k.y;k.5l(\'1q\');m.1A(k,\'eS\');q(k.1p&&k.1p.2J)k.1p.2J.4W();k.9Z(1,{U:{L:x.Z(\'2f\'),N:y.Z(\'2f\'),18:x.H,Y:y.H},S:{18:x.1H+x.Z(\'2I\'),Y:y.1H+y.Z(\'2I\'),L:x.1Z||x.D,N:y.1Z||y.D}},m.7s)},9Z:C(1I,2g,4b){A 5x=k.3i,8G=1I?(k.1h?k.1h.a:I):m.2s,t=(5x[1]&&8G&&m.43(8G,\'3i\')[1]==5x[1])?5x[1]:5x[0];q(k[t]&&t!=\'2H\'){k[t](1I,2g);E}q(k.1g&&!k.3F){q(1I)k.1g.4G();J k.1g.6q((k.2y&&k.4z))}q(!1I)k.7H();A B=k,x=B.x,y=B.y,2O=k.2O;q(!1I)2O=k.cw||2O;A 5P=1I?C(){q(B.1g)B.1g.2h.G.1n="1X";47(C(){B.6C()},50)}:C(){B.5z()};q(1I)m.R(k.U,{L:x.t+\'F\',N:y.t+\'F\'});q(1I&&k.2y){m.R(k.U,{18:(x.1L-x.cb+x.3m)+\'F\',Y:(y.1L-y.cb+y.3m)+\'F\'})}q(k.ct){m.R(k.U,{1z:1I?0:1});m.3s(2g.U,{1z:1I})}m.2u(k.U,2g.U,{45:4b,2O:2O,3U:C(3g,2G){q(B.1g&&B.3F&&2G.1d==\'Y\'){A 5C=1I?2G.H:1-2G.H;A H={w:x.t+(x.Z(\'2f\')-x.t)*5C,h:y.t+(y.Z(\'2f\')-y.t)*5C,x:x.1L+(x.H-x.1L)*5C,y:y.1L+(y.H-y.1L)*5C};B.1g.4G(H,0,1)}q(B.2y){q(2G.1d==\'18\')B.3V.G.18=(x.H-3g)+\'F\';q(2G.1d==\'Y\')B.3V.G.Y=(y.H-3g)+\'F\'}}});m.2u(k.S,2g.S,4b,2O,5P);q(1I){k.U.G.1n=\'1X\';k.S.G.1n=\'1X\';q(k.2y)k.1s.G.1n=\'1X\';k.a.1c+=\' K-57-4l\'}},6b:C(1I,2g){k.3F=1j;A B=k,t=1I?m.7s:0;q(1I){m.2u(k.U,2g.U,0);m.R(k.U,{1z:0,1n:\'1X\'});m.2u(k.S,2g.S,0);k.S.G.1n=\'1X\';m.2u(k.U,{1z:1},t,I,C(){B.6C()})}q(k.1g){k.1g.2h.G.1B=k.U.G.1B;A 7z=1I||-1,1y=k.1g.1y,8y=1I?3:1y,8L=1I?1y:3;O(A i=8y;7z*i<=7z*8L;i+=7z,t+=25){(C(){A o=1I?8L-i:8y-i;47(C(){B.1g.4G(0,o,1)},t)})()}}q(1I){}J{47(C(){q(B.1g)B.1g.6q(B.4z);B.7H();m.2u(B.U,{1z:0},m.9Y,I,C(){B.5z()})},t)}},42:C(1I,2g,8m){q(!1I)E;A B=k,1h=k.1h,x=k.x,y=k.y,3k=1h.x,3q=1h.y,U=k.U,S=k.S,1u=k.1u;m.4R(W,\'7x\',m.7n);m.R(S,{L:(x.1Z||x.D)+\'F\',N:(y.1Z||y.D)+\'F\'});q(1u)1u.G.2e=\'1X\';k.1g=1h.1g;q(k.1g)k.1g.B=B;1h.1g=I;A 5u=m.1b(\'P\',{1c:\'K-\'+k.36},{1l:\'2l\',1B:4,2e:\'1q\',1o:\'1F\'});A 8j={cI:1h,cC:k};O(A n 3e 8j){k[n]=8j[n].S.5B(1);m.R(k[n],{1l:\'2l\',8g:0,1n:\'1X\'});5u.21(k[n])}U.21(5u);q(k.2y)m.R(k.3V,{18:0,Y:0});q(1u){1u.1c=\'\';U.21(1u)}5u.G.1o=\'\';1h.S.G.1o=\'1F\';q(m.4H&&m.3f<7O){k.U.G.1n=\'1X\'}m.2u(U,{L:x.D},{45:m.cz,3U:C(3g,2G){A H=2G.H,4C=1-H;A 1d,D={},8v=[\'H\',\'D\',\'1H\',\'3b\'];O(A n 3e 8v){1d=8v[n];D[\'x\'+1d]=1i.3c(4C*3k[1d]+H*x[1d]);D[\'y\'+1d]=1i.3c(4C*3q[1d]+H*y[1d]);D.cq=1i.3c(4C*(3k.1Z||3k.D)+H*(x.1Z||x.D));D.7h=1i.3c(4C*3k.Z(\'2I\')+H*x.Z(\'2I\'));D.cL=1i.3c(4C*(3q.1Z||3q.D)+H*(y.1Z||y.D));D.6E=1i.3c(4C*3q.Z(\'2I\')+H*y.Z(\'2I\'))}q(B.1g)B.1g.4G({x:D.3j,y:D.4u,w:D.5F+D.49+D.8q+2*x.cb,h:D.5Z+D.4a+D.8z+2*y.cb});1h.U.G.eN=\'eM(\'+(D.4u-3q.H)+\'F, \'+(D.5F+D.49+D.8q+D.3j+2*3k.cb-3k.H)+\'F, \'+(D.5Z+D.4a+D.8z+D.4u+2*3q.cb-3q.H)+\'F, \'+(D.3j-3k.H)+\'F)\';m.R(S,{Y:(D.4a+y.Z(\'2I\'))+\'F\',18:(D.49+x.Z(\'2I\'))+\'F\',4T:(y.H-D.4u)+\'F\',4y:(x.H-D.3j)+\'F\'});m.R(U,{Y:D.4u+\'F\',18:D.3j+\'F\',L:(D.49+D.8q+D.5F+2*x.cb)+\'F\',N:(D.4a+D.8z+D.5Z+2*y.cb)+\'F\'});m.R(5u,{L:(D.cq||D.5F)+\'F\',N:(D.cL||D.5Z)+\'F\',18:(D.49+D.7h)+\'F\',Y:(D.4a+D.6E)+\'F\',1n:\'1X\'});m.R(B.cI,{Y:(3q.H-D.4u+3q.1H-D.4a+3q.Z(\'2I\')-D.6E)+\'F\',18:(3k.H-D.3j+3k.1H-D.49+3k.Z(\'2I\')-D.7h)+\'F\'});m.R(B.cC,{1z:H,Y:(y.H-D.4u+y.1H-D.4a+y.Z(\'2I\')-D.6E)+\'F\',18:(x.H-D.3j+x.1H-D.49+x.Z(\'2I\')-D.7h)+\'F\'});q(1u)m.R(1u,{L:D.5F+\'F\',N:D.5Z+\'F\',18:(D.49+x.cb)+\'F\',Y:(D.4a+y.cb)+\'F\'})},6O:C(){U.G.1n=S.G.1n=\'1X\';S.G.1o=\'3Q\';m.3v(5u);B.6C();1h.5z();B.1h=I}})},br:C(o,el){q(!k.1h)E 1j;O(A i=0;i<k.1h.1T.V;i++){A 6M=m.$(\'23\'+k.1h.1T[i]);q(6M&&6M.23==o.23){k.8V();6M.eR=k.Q;m.2k(k.1T,k.1h.1T[i]);E M}}E 1j},6C:C(){k.5i=M;k.3P();q(k.2y&&k.3J==\'5P\')k.6L();q(k.1k){1t{A B=k,2z=k.1k.9c||k.1k.6i.W;m.2m(2z,\'7W\',C(){q(m.2Y!=B.Q)B.3P()})}1v(e){}q(m.1E&&1G k.5J!=\'eQ\')k.1k.G.L=(k.4f-1)+\'F\'}q(k.48)m.1w(k);q(m.2s&&m.2s==k.a)m.2s=I;k.cD();A p=m.4e,8k=m.7u.x+p.6v,8x=m.7u.y+p.69;k.9b=k.x.H<8k&&8k<k.x.H+k.x.Z(\'2f\')&&k.y.H<8x&&8x<k.y.H+k.y.Z(\'2f\');q(k.1u)k.cc();m.1A(k,\'f0\')},cD:C(){A Q=k.Q;A 1Y=k.1Y;1J m.5L(1Y,C(){1t{m.16[Q].cJ()}1v(e){}})},cJ:C(){A 1C=k.8J(1);q(1C&&1C.2n.cB().31(/m\\.2H/))A 1R=m.1b(\'1R\',{1e:m.7L(1C)})},8J:C(2q){A 8M=k.6Q(),as=m.4P.3h[k.2N||\'1F\'];q(as&&!as[8M+2q]&&k.1p&&k.1p.bs){q(2q==1)E as[0];J q(2q==-1)E as[as.V-1]}E(as&&as[8M+2q])||I},6Q:C(){A 26=m.5R().3h[k.2N||\'1F\'];q(26)O(A i=0;i<26.V;i++){q(26[i]==k.a)E i}E I},c1:C(){q(k[k.64]){A 26=m.4P.3h[k.2N||\'1F\'];q(26){A s=m.14.3N.2d(\'%1\',k.6Q()+1).2d(\'%2\',26.V);k[k.64].2i=\'<P 1W="K-3N">\'+s+\'</P>\'+k[k.64].2i}}},90:C(){q(!k.1h){O(A i=0;i<m.5O.V;i++){A 1P=m.5O[i],2Z=1P.2N;q(1G 2Z==\'1V\'||2Z===I||2Z===k.2N)k.1p=1J m.9W(k.Q,1P)}}J{k.1p=k.1h.1p}A 1P=k.1p;q(!1P)E;A Q=1P.4h=k.Q;1P.bp();1P.53(\'19-2H\');q(1P.35){k.4p(m.3s(1P.cA||{},{4I:1P.35,23:\'35\',1B:5}))}q(1P.2J)1P.2J.6K(k);q(!k.1h&&k.4d)1P.3I(M);q(1P.4d){1P.4d=47(C(){m.1C(Q)},(1P.f9||f8))}},7d:C(){m.3v(k.U);m.16[k.Q]=I;q(m.2s==k.a)m.2s=I;m.9H(k.Q);q(k.2r)m.2r.G.18=\'-4k\';m.1A(k,\'ch\')},c8:C(){q(k.5W)E;k.5W=m.1b(\'a\',{24:m.cp,2C:m.cx,1c:\'K-5W\',2i:m.14.cu,2j:m.14.cs});k.4p({4I:k.5W,1l:k.cr||\'Y 18\',23:\'5W\'})},9V:C(8D,cK){O(A i=0;i<8D.V;i++){A T=8D[i],s=I;q(T==\'9M\'&&!m.1A(k,\'f2\'))E;J q(T==\'4U\'&&!m.1A(k,\'f3\'))E;q(!k[T+\'5q\']&&k.7m)k[T+\'5q\']=T+\'-O-\'+k.7m;q(k[T+\'5q\'])k[T]=m.4o(k[T+\'5q\']);q(!k[T]&&!k[T+\'7S\']&&k[T+\'cj\'])1t{s=f4(k[T+\'cj\'])}1v(e){}q(!k[T]&&k[T+\'7S\']){s=k[T+\'7S\']}q(!k[T]&&!s){k[T]=m.4o(k.a[\'ci\'+T+\'5q\']);q(!k[T]){A 1C=k.a.cn;5o(1C&&!m.6U(1C)){q((1J 5s(\'K-\'+T)).1a(1C.1c||I)){q(!1C.1x)k.a[\'ci\'+T+\'5q\']=1C.1x=\'23\'+m.61++;k[T]=m.4o(1C.1x);5a}1C=1C.cn}}}q(!k[T]&&!s&&k.64==T)s=\'\\n\';q(!k[T]&&s)k[T]=m.1b(\'P\',{1c:\'K-\'+T,2i:s});q(cK&&k[T]){A o={1l:(T==\'4U\')?\'5X\':\'7w\'};O(A x 3e k[T+\'cH\'])o[x]=k[T+\'cH\'][x];o.4I=k[T];k.4p(o)}}},5l:C(1n){q(m.cG)k.6W(\'er\',1n);q(m.cF)k.6W(\'eq\',1n);q(m.5I)k.6W(\'*\',1n)},6W:C(3O,1n){A 1m=W.2A(3O);A 1d=3O==\'*\'?\'2e\':\'1n\';O(A i=0;i<1m.V;i++){q(1d==\'1n\'||(W.84.cf(1m[i],"").bB(\'2e\')==\'1Q\'||1m[i].bC(\'1q-by\')!=I)){A 2P=1m[i].bC(\'1q-by\');q(1n==\'1X\'&&2P){2P=2P.2d(\'[\'+k.Q+\']\',\'\');1m[i].5E(\'1q-by\',2P);q(!2P)1m[i].G[1d]=1m[i].9d}J q(1n==\'1q\'){A 3T=m.71(1m[i]);3T.w=1m[i].1N;3T.h=1m[i].1U;q(!k.48){A bz=(3T.x+3T.w<k.x.Z(\'63\')||3T.x>k.x.Z(\'63\')+k.x.Z(\'83\'));A bg=(3T.y+3T.h<k.y.Z(\'63\')||3T.y>k.y.Z(\'63\')+k.y.Z(\'83\'))}A 6Z=m.82(1m[i]);q(!bz&&!bg&&6Z!=k.Q){q(!2P){1m[i].5E(\'1q-by\',\'[\'+k.Q+\']\');1m[i].9d=1m[i].G[1d];1m[i].G[1d]=\'1q\'}J q(2P.bx(\'[\'+k.Q+\']\')==-1){1m[i].5E(\'1q-by\',2P+\'[\'+k.Q+\']\')}}J q((2P==\'[\'+k.Q+\']\'||m.2Y==6Z)&&6Z!=k.Q){1m[i].5E(\'1q-by\',\'\');1m[i].G[1d]=1m[i].9d||\'\'}J q(2P&&2P.bx(\'[\'+k.Q+\']\')>-1){1m[i].5E(\'1q-by\',2P.2d(\'[\'+k.Q+\']\',\'\'))}}}}},3P:C(){k.U.G.1B=m.4t+=2;O(A i=0;i<m.16.V;i++){q(m.16[i]&&i==m.2Y){A 4r=m.16[i];4r.S.1c+=\' K-\'+4r.36+\'-9K\';q(4r.2D){4r.S.G.4w=m.1E?\'bJ\':\'7i\';4r.S.2j=m.14.bD}m.1A(4r,\'ev\')}}q(k.1g)k.1g.2h.G.1B=k.U.G.1B-1;k.S.1c=\'K-\'+k.36;q(k.2D){k.S.2j=m.14.9F;q(m.5w){m.58=1S.3u?\'7i\':\'7R(\'+m.5p+m.5w+\'), 7i\';q(m.1E&&m.3f<6)m.58=\'bJ\';k.S.G.4w=m.58}}m.2Y=k.Q;m.2m(W,1S.3u?\'7f\':\'7b\',m.5V);m.1A(k,\'ey\')},9B:C(x,y){k.x.9z(x);k.y.9z(y)},4g:C(e){A w,h,r=e.L/e.N;w=1i.4x(e.L+e.dX,1i.3d(k.4B,k.x.19));q(k.2D&&1i.9D(w-k.x.19)<12)w=k.x.19;h=k.2y?e.N+e.dY:w/r;q(h<1i.3d(k.5G,k.y.19)){h=1i.3d(k.5G,k.y.19);q(k.2D)w=h*r}k.9P(w,h)},9P:C(w,h){k.y.73(h);k.x.73(w);k.U.G.N=k.y.Z(\'2f\')+\'F\'},2b:C(){q(k.5J||!k.5i)E;q(k.3i[1]==\'42\'&&m.2s){m.2B(m.2s).7d();m.2s=I}q(!m.1A(k,\'fe\'))E;k.5J=M;q(k.1p&&!m.2s)k.1p.3r();m.4R(W,1S.3u?\'7f\':\'7b\',m.5V);1t{q(k.2y)k.bj();k.S.G.4w=\'fp\';k.9Z(0,{U:{L:k.x.t,N:k.y.t,18:k.x.1L-k.x.cb+k.x.3m,Y:k.y.1L-k.y.cb+k.y.3m},S:{18:0,Y:0,L:k.x.t,N:k.y.t}},m.9Y)}1v(e){k.5z()}},bj:C(){q(m.5I){q(!m.66)m.66=m.1b(\'P\',I,{1l:\'2l\'},m.29);m.R(m.66,{L:k.x.D+\'F\',N:k.y.D+\'F\',18:k.x.H+\'F\',Y:k.y.H+\'F\',1o:\'3Q\'})}q(k.2F==\'3t\')1t{m.$(k.1f.1x).fO()}1v(e){}q(k.3J==\'5P\'&&!k.4z)k.bn();q(k.2p&&k.2p!=k.4Z)k.2p.G.2e=\'1q\'},bn:C(){q(m.1E&&k.1k)1t{k.1k.6i.W.1f.2i=\'\'}1v(e){}q(k.2F==\'3t\')96.fP(k.1f.1x);k.1f.2i=\'\'},bO:C(){q(k.1g)k.1g.2h.G.1o=\'1F\';k.3H=I;k.U.G.1o=\'1F\';k.5i=1j;m.2k(m.4s,k)},bt:C(){1t{m.16[k.Q]=k;q(!m.91&&m.2Y!=k.Q){1t{m.16[m.2Y].2b()}1v(e){}}A z=m.4t++,5K={1o:\'\',1B:z};m.R(k.U,5K);k.5J=1j;A o=k.1g||0;q(o){q(!k.3F)5K.1n=\'1q\';m.R(o.2h,5K)}q(k.1p){k.90()}k.8Z()}1v(e){}},4p:C(o){A el=o.4I,4Y=(o.bq==\'2t\'&&!/7K$/.1a(o.1l));q(1G el==\'9p\')el=m.4o(el);q(o.3w)el=m.1b(\'P\',{2i:o.3w});q(!el||1G el==\'9p\')E;q(!m.1A(k,\'fM\',{11:el}))E;el.G.1o=\'3Q\';o.23=o.23||o.4I;q(k.3i[1]==\'42\'&&k.br(o,el))E;k.8V();A L=o.L&&/^[0-9]+(F|%)$/.1a(o.L)?o.L:\'1Q\';q(/^(18|3o)7K$/.1a(o.1l)&&!/^[0-9]+F$/.1a(o.L))L=\'fG\';A 11=m.1b(\'P\',{1x:\'23\'+m.61++,23:o.23},{1l:\'2l\',1n:\'1q\',L:L,9t:m.14.9s||\'\',1z:0},4Y?m.2t:k.1u,M);q(4Y)11.6I=k.Q;11.21(el);m.3s(11,{1z:1,bK:0,bL:0,4b:(o.6b===0||o.6b===1j||(o.6b==2&&m.1E))?0:5S});m.3s(11,o);q(k.ce){k.6e(11);q(!11.7J||k.9b)m.2u(11,{1z:11.1z},11.4b)}m.2k(k.1T,m.61-1)},6e:C(11){A p=11.1l||\'9i 4J\',4Y=(11.bq==\'2t\'),6D=11.bK,6H=11.bL;q(4Y){m.2t.G.1o=\'3Q\';11.6I=k.Q;q(11.1N>11.22.1N)11.G.L=\'2x%\'}J q(11.22!=k.1u)k.1u.21(11);q(/18$/.1a(p))11.G.18=6D+\'F\';q(/4J$/.1a(p))m.R(11,{18:\'50%\',4y:(6D-1i.3c(11.1N/2))+\'F\'});q(/3o$/.1a(p))11.G.3o=-6D+\'F\';q(/^c5$/.1a(p)){m.R(11,{3o:\'2x%\',9h:k.x.cb+\'F\',Y:-k.y.cb+\'F\',4j:-k.y.cb+\'F\',2e:\'1Q\'});k.x.1H=11.1N}J q(/^c6$/.1a(p)){m.R(11,{18:\'2x%\',4y:k.x.cb+\'F\',Y:-k.y.cb+\'F\',4j:-k.y.cb+\'F\',2e:\'1Q\'});k.x.3b=11.1N}A 9j=11.22.1U;11.G.N=\'1Q\';q(4Y&&11.1U>9j)11.G.N=m.5h?9j+\'F\':\'2x%\';q(/^Y/.1a(p))11.G.Y=6H+\'F\';q(/^9i/.1a(p))m.R(11,{Y:\'50%\',4T:(6H-1i.3c(11.1U/2))+\'F\'});q(/^4j/.1a(p))11.G.4j=-6H+\'F\';q(/^5X$/.1a(p)){m.R(11,{18:(-k.x.1H-k.x.cb)+\'F\',3o:(-k.x.3b-k.x.cb)+\'F\',4j:\'2x%\',77:k.y.cb+\'F\',L:\'1Q\'});k.y.1H=11.1U}J q(/^7w$/.1a(p)){m.R(11,{1l:\'4n\',18:(-k.x.1H-k.x.cb)+\'F\',3o:(-k.x.3b-k.x.cb)+\'F\',Y:\'2x%\',4T:k.y.cb+\'F\',L:\'1Q\'});k.y.3b=11.1U;11.G.1l=\'2l\'}},c3:C(){k.9V([\'4U\',\'9M\'],M);k.c1();q(k.9M)m.1A(k,\'g2\');q(k.4U)m.1A(k,\'fV\');q(k.4U&&k.9N)k.4U.1c+=\' K-3A\';q(m.c2)k.c8();O(A i=0;i<m.1T.V;i++){A o=m.1T[i],7p=o.a6,2Z=o.2N;q((!7p&&!2Z)||(7p&&7p==k.7m)||(2Z&&2Z===k.2N)){q(k.2D||(k.2y&&o.fk))k.4p(o)}}A 7y=[];O(A i=0;i<k.1T.V;i++){A o=m.$(\'23\'+k.1T[i]);q(/7K$/.1a(o.1l))k.6e(o);J m.2k(7y,o)}O(A i=0;i<7y.V;i++)k.6e(7y[i]);k.ce=M},8V:C(){q(!k.1u)k.1u=m.1b(\'P\',{1c:k.8Y},{1l:\'2l\',L:(k.x.D||(k.3x?k.L:I)||k.x.19)+\'F\',N:(k.y.D||k.y.19)+\'F\',1n:\'1q\',2e:\'1q\',1B:m.1E?4:\'1Q\'},m.29,M)},55:C(9g,cd){A 1u=k.1u,x=k.x,y=k.y;m.R(1u,{L:x.D+\'F\',N:y.D+\'F\'});q(9g||cd){O(A i=0;i<k.1T.V;i++){A o=m.$(\'23\'+k.1T[i]);A 9u=(m.5h||W.7t==\'8I\');q(o&&/^(5X|7w)$/.1a(o.1l)){q(9u){o.G.L=(1u.1N+2*x.cb+x.1H+x.3b)+\'F\'}y[o.1l==\'5X\'?\'1H\':\'3b\']=o.1U}q(o&&9u&&/^(18|3o)7K$/.1a(o.1l)){o.G.N=(1u.1U+2*y.cb)+\'F\'}}}q(9g){m.R(k.S,{Y:y.1H+\'F\'});m.R(1u,{Y:(y.1H+y.cb)+\'F\'})}},cc:C(){A b=k.1u;b.1c=\'\';m.R(b,{Y:(k.y.1H+k.y.cb)+\'F\',18:(k.x.1H+k.x.cb)+\'F\',2e:\'1X\'});q(m.4H)b.G.1n=\'1X\';k.U.21(b);O(A i=0;i<k.1T.V;i++){A o=m.$(\'23\'+k.1T[i]);o.G.1B=o.1B||4;q(!o.7J||k.9b){o.G.1n=\'1X\';m.R(o,{1n:\'1X\',1o:\'\'});m.2u(o,{1z:o.1z},o.4b)}}},7H:C(){q(!k.1T.V)E;q(k.1p){A c=k.1p.35;q(c&&m.2B(c)==k)c.22.8T(c)}O(A i=0;i<k.1T.V;i++){A o=m.$(\'23\'+k.1T[i]);q(o&&o.22==m.2t&&m.2B(o)==k)m.3v(o)}q(k.2y&&k.4z){k.1u.G.Y=\'-4k\';m.29.21(k.1u)}J m.3v(k.1u)},c0:C(){q(k.1p&&k.1p.35){k.1p.4N(\'19-2H\');E}k.7j=m.1b(\'a\',{24:\'bZ:m.16[\'+k.Q+\'].74();\',2j:m.14.9v,1c:\'K-19-2H\'});q(!m.1A(k,\'fi\'))E;k.4p({4I:k.7j,1l:m.bR,7J:M,1z:m.bP})},74:C(){1t{q(!m.1A(k,\'fC\'))E;q(k.7j)m.3v(k.7j);k.3P();A 3a=k.x.D;k.9P(k.x.19,k.y.19);A 3j=k.x.H-(k.x.D-3a)/2;q(3j<m.4y)3j=m.4y;k.9B(3j,k.y.H);k.5l(\'1q\')}1v(e){k.9L(e)}},5z:C(){k.a.1c=k.a.1c.2d(\'K-57-4l\',\'\');k.5l(\'1X\');q(k.2y&&k.4z&&k.3i[1]!=\'42\'){k.bO()}J{q(k.1g&&k.3F)k.1g.6q();m.3v(k.U)}q(m.66)m.66.G.1o=\'1F\';k.7H();q(!m.2t.7Q.V)m.2t.G.1o=\'1F\';q(k.48)m.9H(k.Q);m.1A(k,\'fD\');m.16[k.Q]=I;m.bM()}};m.7E=C(a,S,6G){k.a=a;k.S=S;k.6G=6G};m.7E.5e={9C:C(){A 2T;q(!k.1e)k.1e=m.7L(k.a);q(k.1e.31(\'#\')){A 26=k.1e.6z(\'#\');k.1e=26[0];k.1x=26[1]}q(m.6F[k.1e]){k.bN=m.6F[k.1e];q(k.1x)k.9O();J k.6h();E}1t{2T=1J bU()}1v(e){1t{2T=1J bS("fz.bY")}1v(e){1t{2T=1J bS("bT.bY")}1v(e){k.9a()}}}A 3C=k;2T.fs=C(){q(3C.2T.bW==4){q(3C.1x)3C.9O();J 3C.6h()}};A 1e=k.1e;k.2T=2T;q(m.fA)1e=1e.2d(/$/,(/\\?/.1a(1e)?\'&\':\'?\')+\'fl=\'+(1J 7C()).7D());2T.c7(\'fn\',1e,M);2T.bV(\'X-g0-fI\',\'bU\');2T.bV(\'fL-dx\',\'d9/x-d4-a3-cY\');2T.d2(I)},9O:C(){m.7A();A 46=1S.3u||m.bX?{1e:\'dk:dm\'}:I;k.1k=m.1b(\'1k\',46,{1l:\'2l\',Y:\'-4k\'},m.29);k.6h()},6h:C(){A s=k.bN||k.2T.cX,7g;q(k.6G)m.6F[k.1e]=s;q(!m.1E||m.3f>=5.5){s=s.2d(1J 5s(\'<cM[^>]*>\',\'c9\'),\'\').2d(1J 5s(\'<bQ[^>]*>.*?</bQ>\',\'c9\'),\'\');q(k.1k){A 2z=k.1k.9c;q(!2z&&k.1k.6i)2z=k.1k.6i.W;q(!2z){A 3C=k;47(C(){3C.6h()},25);E}2z.c7();2z.cN(s);2z.2b();1t{s=2z.92(k.1x).2i}1v(e){1t{s=k.1k.W.92(k.1x).2i}1v(e){}}m.3v(k.1k)}J{7g=/(<1f[^>]*>|<\\/1f>)/de;q(7g.1a(s))s=s.6z(7g)[m.1E?1:2]}}m.4K(k.S,\'79\',\'K-1f\').2i=s;k.3z();O(A x 3e k)k[x]=I}};m.9W=C(4h,1r){q(m.dT!==1j)m.93();k.4h=4h;O(A x 3e 1r)k[x]=1r[x];q(k.e2)k.c4();q(k.2J)k.2J=m.bm(k)};m.9W.5e={c4:C(){k.35=m.1b(\'P\',{2i:m.9Q(m.9R.35)},I,m.29);A 6a=[\'3I\',\'3r\',\'2W\',\'1C\',\'3A\',\'19-2H\',\'2b\'];k.1M={};A 3C=k;O(A i=0;i<6a.V;i++){k.1M[6a[i]]=m.4K(k.35,\'1K\',\'K-\'+6a[i]);k.4N(6a[i])}k.1M.3r.G.1o=\'1F\'},bp:C(){q(k.bs||!k.35)E;A B=m.16[k.4h],4X=B.6Q(),2o=/7e$/;q(4X==0)k.53(\'2W\');J q(2o.1a(k.1M.2W.2A(\'a\')[0].1c))k.4N(\'2W\');q(4X+1==m.4P.3h[B.2N||\'1F\'].V){k.53(\'1C\');k.53(\'3I\')}J q(2o.1a(k.1M.1C.2A(\'a\')[0].1c)){k.4N(\'1C\');k.4N(\'3I\')}},4N:C(1M){q(!k.1M)E;A bo=k,a=k.1M[1M].2A(\'a\')[0],2o=/7e$/;a.2n=C(){bo[1M]();E 1j};q(2o.1a(a.1c))a.1c=a.1c.2d(2o,\'\')},53:C(1M){q(!k.1M)E;A a=k.1M[1M].2A(\'a\')[0];a.2n=C(){E 1j};q(!/7e$/.1a(a.1c))a.1c+=\' 7e\'},bi:C(){q(k.4d)k.3r();J k.3I()},3I:C(bk){q(k.1M){k.1M.3I.G.1o=\'1F\';k.1M.3r.G.1o=\'\'}k.4d=M;q(!bk)m.1C(k.4h)},3r:C(){q(k.1M){k.1M.3r.G.1o=\'1F\';k.1M.3I.G.1o=\'\'}e7(k.4d);k.4d=I},2W:C(){k.3r();m.2W(k.1M.2W)},1C:C(){k.3r();m.1C(k.1M.1C)},3A:C(){},\'19-2H\':C(){m.2B().74()},2b:C(){m.2b(k.1M.2b)}};m.bm=C(1p){C 6K(B){m.3s(1r||{},{4I:4Q,23:\'2J\',1c:\'K-2J-\'+51+\'-11 \'+(1r.1c||\'\')});q(m.5h)1r.6b=0;B.4p(1r);m.R(4Q.22,{2e:\'1q\'})};C 2a(3S){4W(1V,1i.3c(3S*4Q[3R?\'1N\':\'1U\']*0.7))};C 4W(i,9J){q(i===1V)O(A j=0;j<6x.V;j++){q(6x[j]==m.16[1p.4h].a){i=j;5a}}q(i===1V)E;A as=4Q.2A(\'a\'),57=as[i],3Y=57.22,18=3R?\'bv\':\'bG\',3o=3R?\'cg\':\'bF\',L=3R?\'bH\':\'bI\',4O=\'1y\'+18,1N=\'1y\'+L,6Y=P.22.22[1N],4V=6Y-2h[1N],6n=3M(2h.G[3R?\'18\':\'Y\'])||0,2M=6n,dz=20;q(9J!==1V){2M=6n-9J;q(4V>0)4V=0;q(2M>0)2M=0;q(2M<4V)2M=4V}J{O(A j=0;j<as.V;j++)as[j].1c=\'\';57.1c=\'K-57-4l\';A 85=i>0?as[i-1].22[4O]:3Y[4O],80=3Y[4O]+3Y[1N]+(as[i+1]?as[i+1].22[1N]:0);q(80>6Y-6n)2M=6Y-80;J q(85<-6n)2M=-85}A 7V=3Y[4O]+(3Y[1N]-76[1N])/2+2M;m.2u(2h,3R?{18:2M}:{Y:2M},I,\'8d\');m.2u(76,3R?{18:7V}:{Y:7V},I,\'8d\');8P.G.1o=2M<0?\'3Q\':\'1F\';8N.G.1o=(2M>4V)?\'3Q\':\'1F\'};A 6x=m.4P.3h[m.16[1p.4h].2N||\'1F\'],1r=1p.2J,51=1r.51||\'bE\',8H=(51==\'dr\'),3Z=8H?[\'P\',\'6c\',\'1K\',\'1D\']:[\'2h\',\'4q\',\'3X\',\'2E\'],3R=(51==\'bE\'),4Q=m.1b(\'P\',{1c:\'K-2J K-2J-\'+51,2i:\'<P 1W="K-2J-dJ">\'+\'<\'+3Z[0]+\'><\'+3Z[1]+\'></\'+3Z[1]+\'></\'+3Z[0]+\'></P>\'+\'<P 1W="K-2a-1I"><P></P></P>\'+\'<P 1W="K-2a-dI"><P></P></P>\'+\'<P 1W="K-76"><P></P></P>\'},{1o:\'1F\'},m.29),6t=4Q.7Q,P=6t[0],8P=6t[1],8N=6t[2],76=6t[3],2h=P.dH,4q=4Q.2A(3Z[1])[0],3X;O(A i=0;i<6x.V;i++){q(i==0||!3R)3X=m.1b(3Z[2],I,I,4q);(C(){A a=6x[i],3Y=m.1b(3Z[3],I,I,3X),dC=i;m.1b(\'a\',{24:a.24,2n:C(){m.2B(k).3P();E m.8A(a)},2i:m.bA?m.bA(a):a.2i},I,3Y)})()}q(!8H){8P.2n=C(){2a(-1)};8N.2n=C(){2a(1)};m.2m(4q,W.dG!==1V?\'dF\':\'ds\',C(e){A 3S=0;e=e||1S.2v;q(e.cy){3S=e.cy/e6;q(m.3u)3S=-3S}J q(e.cE){3S=-e.cE/3}q(3S)2a(-3S*0.2);q(e.5g)e.5g();e.cv=1j})}E{6K:6K,4W:4W}};m.6N=m.14;A dd=m.6l;q(m.1E&&1S==1S.Y){(C(){1t{W.59.di(\'18\')}1v(e){47(ck.dj,50);E}m.41()})()}m.2m(W,\'d7\',m.41);m.2m(1S,\'81\',m.41);m.2m(W,\'41\',C(){q(m.7M||m.48){A G=m.1b(\'G\',{T:\'d5/8p\'},I,W.2A(\'da\')[0]);C 6o(8u,8o){q(!m.1E){G.21(W.cS(8u+" {"+8o+"}"))}J{A 1h=W.cm[W.cm.V-1];q(1G(1h.6o)=="7F")1h.6o(8u,8o)}}C 6g(1d){E\'dP( ( ( dq = W.59.\'+1d+\' ? W.59.\'+1d+\' : W.1f.\'+1d+\' ) ) + \\\'F\\\' );\'}q(m.7M)6o(\'.K 1R\',\'4w: 7R(\'+m.5p+m.7M+\'), 7i !ef;\');6o(\'.K-2t-D\',m.1E&&(m.3f<7||W.7t==\'8I\')?\'1l: 2l; \'+\'18:\'+6g(\'6v\')+\'Y:\'+6g(\'69\')+\'L:\'+6g(\'8F\')+\'N:\'+6g(\'ca\'):\'1l: fg; L: 2x%; N: 2x%; 18: 0; Y: 0\')}});m.2m(1S,\'4g\',C(){m.7k();q(m.2t)O(A i=0;i<m.2t.7Q.V;i++){A 1O=m.2t.7Q[i],B=m.2B(1O);B.6e(1O);q(1O.23==\'2J\')B.1p.2J.4W()}});m.2m(W,\'7x\',C(e){m.7u={x:e.7r,y:e.7P}});m.2m(W,\'7W\',m.7Z);m.2m(W,\'bh\',m.7Z);m.2m(W,\'41\',m.bl);m.2m(1S,\'81\',m.bu);m.2m(1S,\'81\',m.bw)}',62,996,'||||||||||||||||||||this||hs||||if||||||||||var|exp|function|size|return|px|style|pos|null|else|highslide|width|true|height|for|div|key|setStyles|content|type|wrapper|length|document||top|get||overlay|||lang||expanders||left|full|test|createElement|className|prop|src|body|outline|last|Math|false|iframe|position|els|visibility|display|slideshow|hidden|options|innerContent|try|overlayBox|catch|dim|id|offset|opacity|fireEvent|zIndex|next|span|ie|none|typeof|p1|up|new|li|tpos|btn|offsetWidth|node|ss|auto|img|window|overlays|offsetHeight|undefined|class|visible|outlineType|imgSize||appendChild|parentNode|hsId|href||arr||case|container|scroll|close|params|replace|overflow|wsize|to|table|innerHTML|title|push|absolute|addEventListener|onclick|re|scrollerDiv|op|loading|upcoming|viewport|animate|event|dragArgs|100|isHtml|doc|getElementsByTagName|getExpander|target|isImage|td|objectType|args|expand|imgPad|thumbstrip|tgt|minSize|tblPos|slideshowGroup|easing|hiddenBy|justify|image|dimmer|xhr|ajax|ratio|previous|name|focusKey|sg|elem|match||||controls|contentType||||xSize|p2|round|min|in|uaVersion|val|groups|transitions|xpos|lastX|wh|tb|ucwh|right|marginMin|lastY|pause|extend|swf|opera|discardElement|html|useBox|custom|onLoad|move|opt|pThis|clearing|func|outlineWhileAnimating|hasDragged|releaseMask|play|objectLoadTime|changed|graphic|parseInt|number|tagName|focus|block|isX|delta|elPos|step|mediumContent|styles|tr|cell|tree||ready|crossfade|getParam|timers|duration|attribs|setTimeout|dimmingOpacity|xp1|yp1|dur|ySize|autoplay|page|objectWidth|resize|expKey|now|bottom|9999px|anchor|objectHeight|relative|getNode|createOverlay|tbody|blurExp|sleeping|zIndexCounter|ypos|unit|cursor|max|marginLeft|preserveContent|pendingOutlines|minWidth|invPos|marginMax|clientSize|start|setPosition|safari|overlayId|center|getElementByClass|onload|tgtArr|enable|offsetLeft|anchors|dom|removeEventListener|clone|marginTop|heading|minTblPos|selectThumb|cur|relToVP|scrollingContent||mode|allowReduce|disable|end|sizeOverlayBox|navigator|active|styleRestoreCursor|documentElement|break|cacheBindings|fitsize|cNode|prototype|moveOnly|preventDefault|ieLt7|isExpanded|area|hDiff|doShowHide|ruler|wDiff|while|graphicsDir|Id|images|RegExp|htmls|fadeBox|parent|restoreCursor|trans|minX|afterClose|padToMinWidth|cloneNode|fac|before|setAttribute|xsize|minHeight|currentStyle|geckoMac|isClosing|stl|Outline|maxX|maxY|slideshows|after|uclt|getAnchors|250|allowSizeReduction|iDoc|keyHandler|credits|above|contentLoaded|ysize|filter|idCounter|minY|opos|numberPosition|showLoading|mask|owner|on|scrollTop|buttons|fade|ul|getParams|positionOverlay|over|fix|loadHTML|contentWindow|param|iebody|Expander|matches|curTblPos|addRule|toLowerCase|destroy|cache|preloadTheseImages|domCh|obj|scrollLeft|all|group|userAgent|split|element|previousOrNext|afterExpand|offX|yimgPad|cachedGets|pre|offY|hsKey|maxWidth|add|writeExtendedContent|oDiv|langDefaults|complete|expOnly|getAnchorIndex|onLoadStarted|preloadTheseAjax|Dimension|isHsAnchor|imgs|showHideElements|rel|overlayWidth|wrapperKey||getPosition|maincontent|setSize|doFullExpand||marker|marginBottom|adj|DIV|lt|keydown|topmostKey|cancelLoading|disabled|keypress|regBody|ximgPad|pointer|fullExpandLabel|getPageSize|onReady|thumbsUserSetId|dragHandler|curAnim|tId|self|clientX|expandDuration|compatMode|mouse|gotoEnd|below|mousemove|os|dir|init|preloadFullImage|Date|getTime|Ajax|object|allowHeightReduction|destroyOverlays|kdeBugCorr|hideOnMouseOut|panel|getSrc|expandCursor|allowWidthReduction|525|clientY|childNodes|url|Text|fitOverlayBox|correctIframeSize|markerPos|mousedown|contentId|getSelfRendered|mouseClickHandler|activeRight|load|getWrapperKey|osize|defaultView|activeLeft|calcBorders|calcExpanded|oPos|maxsize|location|hasMovedMin|getCacheBinding|easeOutQuad|swfOptions|moveText|border|moveTitle|closeTitle|names|mX|closeText|from|nextText|dec|css|xp2|setObjContainerSize|previousTitle|previousText|sel|props|nextTitle|mY|startOff|yp2|transit|htmlGetSize|parseFloat|types|getIframePageHeight|clientWidth|other|floatMode|BackCompat|getAdjacentAnchor|offsetTop|endOff|current|scrollDown|padding|scrollUp|arrow|Click|connectOutline|removeChild|startTime|genOverlayBox|maxHeight|garbageBin|wrapperClassName|show|initSlideshow|allowMultipleInstances|getElementById|updateAnchors|done|dimmingDuration|swfobject|margin|relatedTarget||onError|mouseIsOver|contentDocument|origProp|hasAlphaImageLoader|hasFocused|doWrapper|marginRight|middle|parOff|background|evt|update|align|numberOfImagesToPreload|string|ucrb|state|cssDirection|direction|ie6|fullExpandTitle|calcThumb|distance|Create|setPos|preloadAjaxElement|moveTo|run|abs|cacheAjax|restoreTitle|loadingPos|undim|loadingPosXfade|scrollBy|blur|error|caption|dragByHeading|getElementContent|resizeTo|replaceLang|skin|sizeDiff|htmlExpand|openerTagNames|getInline|Slideshow|srcElement|restoreDuration|changeSize|continuePreloading|overrides|topZ|form|isReady|clones|thumbnailId|_default|and|detachEvent|Previous|Pause|getImageMapAreaCorrection|spacebar|Play|Close|Highslide|JS|timerId|call|loadingOpacity|loadingText|loadingTitle|Click and drag here to move window on screen|Next|preloadGraphic|easeInQuad|ltr||vis|nopad|newHeight|hasExtendedContent|attributes|dimmingGeckoFix|enableKeyListener|tag|rv|both|clear|toUpperCase|flashvars|wmode|orig|isUnobtrusiveAnchor|hsHasSetClick|contentWrapper|wrapperMouseHandler|pageOrigin|alpha|offsetParent|fixedControls|thumb|captionOverlay|headingOverlay|playText|pauseTitle|vendor|pauseText|pow|onGraphicLoad|200|KDE|playTitle|appendTo|clickY|clickX|rb|resizeTitle|targetX|targetY|focusTopmost|switch|fullExpandText|htmlSizeOperations|hasHtmlExpanders|hide|png|clearsY|mouseup|hitSpace|htmlPrepareClose|wait|setClickEvents|Thumbstrip|destroyObject|sls|checkFirstAndLast|relativeTo|reuseOverlay|repeat|awake|preloadImages|Left|preloadAjax|indexOf||clearsX|stripItemFormatter|getPropertyValue|getAttribute|focusTitle|horizontal|Bottom|Top|Width|Height|hand|offsetX|offsetY|reOrder|cachedGet|sleep|fullExpandOpacity|script|fullExpandPosition|ActiveXObject|Microsoft|XMLHttpRequest|setRequestHeader|readyState|ie6SSL|XMLHTTP|javascript|createFullExpand|getNumber|showCredits|getOverlays|getControls|leftpanel|rightpanel|open|writeCredits|gi|clientHeight||showOverlays|doPanels|gotOverlays|getComputedStyle|Right|onHideLoading|_|Eval|arguments|correctRatio|styleSheets|nextSibling|tmpMin|creditsHref|ximgSize|creditsPosition|creditsTitle|fadeInOut|creditsText|returnValue|easingClose|creditsTarget|wheelDelta|transitionDuration|overlayOptions|toString|newImg|prepareNextOutline|detail|hideIframes|hideSelects|Overlay|oldImg|preloadNext|addOverlay|yimgSize|link|write|registerOverlay|captionText|addSlideshow|keys|createTextNode|xpand|htmlE|footer|captionId|responseText|urlencoded|fromElement|mouseover|onDrag|send|toElement|www|text|onMouseOut|DOMContentLoaded|onMouseOver|application|HEAD|dragSensitivity|white|HsExpander|ig|onDrop|onImageClick|01|doScroll|callee|about|sqrt|blank|button|keyCode|drop|ignoreMe|float|DOMMouseScroll|shadow|onSetClickEvent|_self|Safari|Type|Macintosh|mgnRight|useMap|pageYOffset|pI|Gecko|removeAttribute|mousewheel|onmousewheel|firstChild|down|inner|pageXOffset|innerHeight|innerWidth|ra|it|expression|http|onKeyDown|com|dynamicallyUpdateAnchors|captionEval|outlineStartOffset|graphics|||zoomin|zoomout|1001|useControls|headingId|maincontentEval|maincontentText|120|clearTimeout|Trident|maincontentId|headingEval|headingText|geckodimmer|onDimmerClick|dimming|important|clearInterval|blockRightClick|oncontextmenu|imageCreate|front||onShowLoading|Expand|flushImgSize|htmlCreate|IFRAME|SELECT|static|onAfterGetContent|onBeforeGetContent|onBlur|message|Powered|onFocus|Go|allowSimultaneousLoading|the|onInit|onmouseover|onmouseout|Line|lineNumber|alert|debug|actual|bring|fit|rect|clip|insertBefore|nodeName|boolean|reuse|onBeforeExpand|reflow|coords|circle|floor|Loading|cancel|300|onAfterExpand|frameborder|onBeforeGetCaption|onBeforeGetHeading|eval|newWidth|flash|transparent|500|interval|expressInstallSwfurl|version|embedSWF|attachEvent|onBeforeClose|Image|fixed|of|onCreateFullExpand|click|useOnHtml|dummy|borderCollapse|GET|cellSpacing|default|header|splice|onreadystatechange|onActivate|linearTween|1px|paddingTop||drag|Msxml2|forceAjaxReload|setInterval|onDoFullExpand|onAfterClose|collapse|lineHeight|200px|Resize|With|scale|sizingMethod|Content|onCreateOverlay|homepage|StopPlay|removeSWF|esc|AlphaImageLoader|DXImageTransform|https|outlinesDir|onAfterGetHeading|fontSize|outlines|protocol|progid|Requested|shape|onAfterGetCaption|Use'.split('|'),0,{}))

// dDrecords.js

//preloading images

function preloader() {
	if (document.getElementById) {
		document.getElementById("preload");
		
	}
}
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}
addLoadEvent(preloader);
// end preloader

function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
function MM_popupMsg(msg) { //v1.0
  alert(msg);
}
//===================================================================================//
//https://www.webmasterworld.com/forum91/441.htm hideDiv and showDiv; as follows
//<a href="javascript:hideDiv('name')">hide Div name</a>
//<a href="javascript:showDiv('name')">show Div name</a> 
function hideDiv(pass) {
var divs = document.getElementsByTagName('div');
for(i=0;i<divs.length;i++){
if(divs[i].id.match(pass)){//if they are 'see' divs
if (document.getElementById) // DOM3 = IE5, NS6
divs[i].style.visibility="hidden";// show/hide
else
if (document.layers) // Netscape 4
document.layers[divs[i]].display = 'hidden';
else // IE 4
document.all.hideshow.divs[i].visibility = 'hidden';
}
}
}

function showDiv(pass) {
var divs = document.getElementsByTagName('div');
for(i=0;i<divs.length;i++){
if(divs[i].id.match(pass)){
if (document.getElementById)
divs[i].style.visibility="visible";
else
if (document.layers) // Netscape 4
document.layers[divs[i]].display = 'visible';
else // IE 4
document.all.hideshow.divs[i].visibility = 'visible';
}
}
} 
//=================================================================================//
//no right-click possible
function nrcIE(){
if (document.all){return false;}}
function nrcNS(e){
if(document.layers||(document.getElementById&&!document.all)){ 
if (e.which==2||e.which==3){
return false;}}} 
if (document.layers){
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=nrcNS;
}else{document.onmouseup=nrcNS;document.oncontextmenu=nrcIE;}
document.oncontextmenu=new Function("return false");
//===============================================================================//
//window position and size
//window.moveTo(0,0);
//window.resizeTo(screen.width,screen.height);
//===============================================================================//
//open pop up window

function changePage (loc,winname,size) {
        window.open (loc,winname,size);
        }
//==============================================================================//
//timed [2000 milliseconds here] redirect and erase previous page in history
var sTargetURL = "url";

function doRedirect()
{
    setTimeout( "timedRedirect()", 2*1000 );
}
function timedRedirect()
{
    window.location.replace( sTargetURL );
}
//===========================================================================//
//submit once button implementation
/*
Submit Once form validation- 
� Dynamic Drive (www.dynamicdrive.com)
For full source code, usage terms, and 100's more DHTML scripts, visit https://dynamicdrive.com
*/
function submitonce(theform){
//if IE 4+ or NS 6+
if (document.all||document.getElementById){
//screen thru every element in the form, and hunt down "submit" and "reset"
for (i=0;i<theform.length;i++){
var tempobj=theform.elements[i]
if(tempobj.type.toLowerCase()=="submit"||tempobj.type.toLowerCase()=="reset")
//disable em
tempobj.disabled=true
}
}
}
// <form method="POST" onSubmit="submitonce(this)"> //
//=========================================================================//

//limit number of characters that can be entered in form fields [like zipcodes]
function limitText(limitField, limitCount, limitNum) {
	if (limitField.value.length > limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);

	}
}
// trims leading and trailing spaces from formfields
function trim(str) {             
                return str.replace(/^\s+|\s+$/g, '');
            }

//Formvalidation for Checkout Dutch customers //

function CheckiDealForm (theform){
  var strMissingFields="";
  var tfld = trim(theform.b_email.value);       //trim leading-trailing spaces from e-mail 1
  var tfld2 = trim(theform.b_email2.value);     //trim leading-trailing spaces from e-mail 2
  var illegalChars = /[\W_]/;                   // allow only letters and numbers in postcode
  var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
  var illegalmail= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
  if(theform.b_first.value   == 0)  strMissingFields += "     Factuuradres: Voornaam/voorletter niet ingevuld.\n";
  if(theform.b_last.value    == 0)  strMissingFields += "     Factuuradres: Achternaam niet ingevuld.\n";
  if(theform.b_addr.value    == 0)  strMissingFields += "     Factuuradres: Adres niet ingevuld.\n";
  if(theform.b_city.value    == 0)  strMissingFields += "     Factuuradres: Stad niet ingevuld.\n";
//if(theform.b_state.value   == "")  strMissingFields += "     Billing: State\n";
  if(theform.b_zip.value     == 0)  strMissingFields += "     Factuuradres: Postcode niet ingevuld.\n"; else
  if(theform.b_zip.value.length<4) strMissingFields += "Postcode moet uit tenminste 4 tekens [cijfers, letters] bestaan. Corrigeer dit om door te kunnen gaan.\n"; else
  if(illegalChars.test(theform.b_zip.value))  strMissingFields += "Postcode kan alleen uit cijfers en/of letters bestaan. Corrigeer dit om door te kunnen gaan.\n";
  if(theform.b_country.value == 0)  strMissingFields += "     Factuuradres: Land niet ingevuld\n";
  if(theform.b_email.value   == 0)  strMissingFields += "     Factuuradres: Email niet ingevuld\n"; else
  if (!emailFilter.test(tfld))  strMissingFields += "Ongeldig E-mail adres!  Corrigeer dit om door te kunnen gaan.\n"; else // checks for illegal characters in adres
  if (theform.b_email.value.match(illegalmail))  strMissingFields += "Ongeldig E-mail adres!   Corrigeer dit om door te kunnen gaan.\n"; else
  if(tfld2   != tfld)  strMissingFields += "E-mailadressen stemmen niet overeen.   Corrigeer dit om door te kunnen gaan.\n";
  if(strMissingFields != "")  alert("Er zitten fouten in uw formulier:\n" + strMissingFields);
  if(strMissingFields != "")  return false;
  return true;
  }

//Formvalidation for Checkout English customers //

function CheckPPForm (theform){
  var strMissingFields="";
  var tfld = trim(theform.b_email.value);       //trim leading-trailing spaces from e-mail 1
  var tfld2 = trim(theform.b_email2.value);     //trim leading-trailing spaces from e-mail 2
  var illegalChars = /[\W_]/;                   // allow only letters and numbers in postcode
  var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
  var illegalmail= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
  if(theform.b_first.value   == 0)  strMissingFields += "     Billing address: No first name or initial ?\n";
  if(theform.b_last.value    == 0)  strMissingFields += "     Billing address: No last name?\n";
  if(theform.b_addr.value    == 0)  strMissingFields += "     Billing address: No address ?\n";
  if(theform.b_city.value    == 0)  strMissingFields += "     Billing address: No city ?\n";
//if(theform.b_state.value   == "")  strMissingFields += "     Billing: State\n";
  if(theform.b_zip.value     == 0)  strMissingFields += "     Billing address: No zip or postcode ?\n"; else
 // if(theform.b_zip.value.length<4) strMissingFields += "Postcode moet uit tenminste 4 tekens [cijfers, letters] bestaan. Corrigeer dit om door te kunnen gaan.\n"; else
 // if(illegalChars.test(theform.b_zip.value))  strMissingFields += "Postcode kan alleen uit cijfers en/of letters bestaan. Corrigeer dit om door te kunnen gaan.\n";
  if(theform.b_country.value == 0)  strMissingFields += "     Billing address: No country ?\n";
  if(theform.b_email.value   == 0)  strMissingFields += "     Billing address: No mail address ?\n"; else
  if (!emailFilter.test(tfld))  strMissingFields += "Invalid E-mail address!  Please correct this to continue.\n"; else // checks for illegal characters in adres
  if (theform.b_email.value.match(illegalmail))  strMissingFields += "Invalid E-mail address!   Please correct this to continue.\n"; else
  if(tfld2   != tfld)  strMissingFields += "Mail addresses are not identical.   Please correct this to continue.\n";
  if(strMissingFields != "")  alert("There are some errors in your form, please correct these to continue:\n" + strMissingFields);
  if(strMissingFields != "")  return false;
  return true;
  }

 //===========================================================================//
 //resize function for highslide iframes//
 function myresize(w, h) {
  var exp = hs.getExpander();
  var args = {
    width: w,
    height: h,
    dX: 0,
    dY: 0
  };
 
  exp.resize(args);
  // move it to center:
 
  var size = hs.getPageSize();
  exp.x.min = Math.round((size.width - exp.x.span) / 2);
  exp.y.min = Math.round((size.height - exp.y.span) / 2);
  hs.setStyles(exp.wrapper, { left: exp.x.min +'px', top: exp.y.min +'px' });
 exp.resize(args);
 
};
//=================================================================//
function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}
function checkVersion()
{
  //var msg = "You're not using Internet Explorer.";
  var ver = getInternetExplorerVersion();

  if ( ver > -1 )
  {
    if ( ver < 7.0 ) 
      alert( 'You\'re using a very outdated copy of Internet Explorer.\nThis site will work mostly OK but you really should upgrade.\n\nThis IE version is unsafe, slow and can have some unforeseen results.' );
     }
  
}


<!-- email - form validation for registering to newsletter and comment form-->
function CheckForm(form)
{

  if (form.name.value == "")
  {
    alert("Please enter your name.");
    form.name.focus();
	return (false);
     }
	 
if (form.email.value == "") 
  { 
  alert("Please enter your email address.");
    form.email.focus();
	return (false);
     }
	 
  if (form.message.value == "")
  {
    alert("Please enter your message.");
    form.message.focus();
    return (false);
  }
  return cap_valid(event);
}
  //------------------------------------------------------------//

function emailCheck (emailStr) {

/* The following variable tells the rest of the function whether or not
to verify that the address ends in a two-letter country or well-known
TLD.  1 means check it, 0 means don't. */

var checkTLD=1;

/* The following is the list of known TLDs that an e-mail address must end with. */

var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

/* The following pattern is used to check if the entered e-mail address
fits the user@domain format.  It also is used to separate the username
from the domain. */

var emailPat=/^(.+)@(.+)$/;

/* The following string represents the pattern for matching all special
characters.  We don't want to allow special characters in the address. 
These characters include ( ) < > @ , ; : \ " . [ ] */

var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

/* The following string represents the range of characters allowed in a 
username or domainname.  It really states which chars aren't allowed.*/

var validChars="\[^\\s" + specialChars + "\]";

/* The following pattern applies if the "user" is a quoted string (in
which case, there are no rules about which characters are allowed
and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
is a legal e-mail address. */

var quotedUser="(\"[^\"]*\")";

/* The following pattern applies for domains that are IP addresses,
rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
e-mail address. NOTE: The square brackets are required. */

var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

/* The following string represents an atom (basically a series of non-special characters.) */

var atom=validChars + '+';

/* The following string represents one word in the typical username.
For example, in john.doe@somewhere.com, john and doe are words.
Basically, a word is either an atom or quoted string. */

var word="(" + atom + "|" + quotedUser + ")";

// The following pattern describes the structure of the user

var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

/* The following pattern describes the structure of a normal symbolic
domain, as opposed to ipDomainPat, shown above. */

var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

/* Finally, let's start trying to figure out if the supplied address is valid. */

/* Begin with the coarse pattern to simply break up user@domain into
different pieces that are easy to analyze. */

var matchArray=emailStr.match(emailPat);

if (matchArray==null) {

/* Too many/few @'s or something; basically, this address doesn't
even fit the general mould of a valid e-mail address. */

alert("Email address seems incorrect (check @ and .'s)");
return false;
}
var user=matchArray[1];
var domain=matchArray[2];

// Start by checking that only basic ASCII characters are in the strings (0-127).

for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
alert("This username contains invalid characters.");
return false;
   }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
alert("This domain name contains invalid characters.");
return false;
   }
}

// See if "user" is valid 

if (user.match(userPat)==null) {

// user is not valid

alert("The username doesn't seem to be valid.");
return false;
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
host name) make sure the IP address is valid. */

var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {

// this is an IP address

for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
alert("Destination IP address is invalid!");
return false;
   }
}
return true;
}

// Domain is symbolic name.  Check if it's valid.
 
var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for (i=0;i<len;i++) {
if (domArr[i].search(atomPat)==-1) {
alert("The domain name does not seem to be valid.");
return false;
   }
}

/* domain name seems valid, but now make sure that it ends in a
known top-level domain (like com, edu, gov) or a two-letter word,
representing country (uk, nl), and that there's a hostname preceding 
the domain or country. */

if (checkTLD && domArr[domArr.length-1].length!=2 && 
domArr[domArr.length-1].search(knownDomsPat)==-1) {
alert("The address must end in a well-known domain or two letter " + "country.");
return false;
}

// Make sure there's a host name preceding the domain.

if (len<2) {
alert("This address is missing a hostname!");
return false;
}

// If we've gotten this far, everything's valid!
return true;
}
		<!-- end page validaton -->
///////////////////////--------------------------------------------/////////////////////////
// create a shorthand function for opening youtube in HighSlide so we don't need to put all this in the opener's onclick

function openYouTube(opener) {
    var returnValue;
    
    // Safari Mobile doesn't have Flash, so we just let the device use the built-in 
    // YouTube viewer.
    
        
    if (/(iPhone|iPod|iPad)/.test(navigator.userAgent)) {
        opener.href = opener.href.replace('/v/', '/watch?v=');
        returnValue = true;        
    }

    else returnValue = hs.htmlExpand(opener, { 
        objectType: 'swf', 
        objectWidth: 480, 
        objectHeight: 385, 
        width: 480, 
        swfOptions: { 
            params: { 
                allowfullscreen: 'true' 
            }
        },
        src: opener.href.replace("watch?", "").replace("=", "/")+'&fs=1&autoplay=1', // convert from Youtube page to movie
        maincontentText: 'You need to upgrade your Flash player'
    });
    
    return returnValue;
};
///-------------------------------------------------------------//////
////////////////Random quote generator ----------------//////////////
var quotes = ["The first thing that is destroyed in the laboratory when a nutrient is isolated from a food, is the delicate web of intelligence that binds the components of food together - <em>Deepak Chopra</em>" , "The Lord hath created medicines out of the earth; and he that is wise will not abhor them - <em>Ecclesiasticus 38:4</em>" , "Foolish the doctor who despises the knowledge acquired by the ancients - <em>Hippocrates</em>", "A wise man should consider that health is the greatest of human blessings, and learn how by his own thought to derive benefit from his illnesses - <em>Hippocrates</em>", "Cure sometimes, treat often, comfort always - <em>Hippocrates</em>", "Everything in excess is opposed to nature - <em>Hippocrates</em>", "If we could give every individual the right amount of nourishment and exercise, not too little and not too much, we would have found the safest way to health - <em>Hippocrates</em>", "Natural forces within us are the true healers of disease - <em>Hippocrates</em>", "Science is the father of knowledge, but opinion breeds ignorance - Hippocrates", "Always laugh when you can. It is cheap medicine - <em>Lord Byron</em>", "Common sense is in medicine the master workman - <em>Peter Latham</em>", "The doctor of the future will give no medicine, but will interest her or his patients in the care of the human frame, in a proper diet, and in the cause and prevention of disease - <em>Thomas Edison</em>", "Health is a state about which medicine has nothing to say - <em>W.H.Auden</em>", "I critique market-based medicine not because I haven't seen its heights but because I've seen its depths - <em>Paul Farmer</em>"];

function getRandomQuote(){
numberOfQuotes = quotes.length;
randNum = Math.floor(Math.random()*numberOfQuotes);
return quotes[randNum];
}

// menu.js

/* 
Simple JQuery menu.
HTML structure to use:

Notes: 

Each menu MUST have a class 'menu' set. If the menu doesn't have this, the JS won't make it dynamic
If you want a panel to be expanded at page load, give the containing LI element the classname 'expand'.
Use this to set the right state in your page (generation) code.

Optional extra classnames for the UL element that holds an accordion:

noaccordion : no accordion functionality
collapsible : menu works like an accordion but can be fully collapsed

<ul class="menu [optional class] [optional class]">
<li><a href="#">Sub menu heading</a>
<ul>
<li><a href="http://site.com/">Link</a></li>
<li><a href="http://site.com/">Link</a></li>
<li><a href="http://site.com/">Link</a></li>
...
...
</ul>
// This item is open at page load time
<li class="expand"><a href="#">Sub menu heading</a>
<ul>
<li><a href="http://site.com/">Link</a></li>
<li><a href="http://site.com/">Link</a></li>
<li><a href="http://site.com/">Link</a></li>
...
...
</ul>
...
...
</ul>

Copyright 2007-2010 by Marco van Hylckama Vlieg

web: http://www.i-marco.nl/weblog/
email: marco@i-marco.nl

Free to use any way you like.
*/


jQuery.fn.initMenu = function() {  
    return this.each(function(){
        var theMenu = $(this).get(0);
        $('.acitem', this).hide();
        $('li.expand > .acitem', this).show();
        $('li.expand > .acitem', this).prev().addClass('active');
        $('li a', this).click(
            function(e) {
                e.stopImmediatePropagation();
                var theElement = $(this).next();
                var parent = this.parentNode.parentNode;
                if($(parent).hasClass('noaccordion')) {
                    if(theElement[0] === undefined) {
                        window.location.href = this.href;
                    }
                    $(theElement).slideToggle('normal', function() {
                        if ($(this).is(':visible')) {
                            $(this).prev().addClass('active');
                        }
                        else {
                            $(this).prev().removeClass('active');
                        }    
                    });
                    return false;
                }
                else {
                    if(theElement.hasClass('acitem') && theElement.is(':visible')) {
                        if($(parent).hasClass('collapsible')) {
                            $('.acitem:visible', parent).first().slideUp('normal', 
                            function() {
                                $(this).prev().removeClass('active');
                            }
                        );
                        return false;  
                    }
                    return false;
                }
                if(theElement.hasClass('acitem') && !theElement.is(':visible')) {         
                    $('.acitem:visible', parent).first().slideUp('normal', function() {
                        $(this).prev().removeClass('active');
                    });
                    theElement.slideDown('normal', function() {
                        $(this).prev().addClass('active');
                    });
                    return false;
                }
            }
        }
    );
});
};

$(document).ready(function() {$('.menu').initMenu();});

// nopercart-usd.js


//------------------------------------------------------------------------
// Language Strings
// ----------------
// These strings will be used if you have not included a language-pack.
// If using English, simply modify the strings below;
// if using another language, then modify them in the file 
// noper-language-XX.js -- where XX is the language you are using.
// (File noper-language-en.js has been discarded in this version.)
//
// If you construct a new one OR make improvements to one of the 
// supplied ones, please email the result to  ereimer@shaw.ca
// so it can be included with this software, to help other users.
//------------------------------------------------------------------------
if(typeof strSorry == "undefined"){                                             //ER: make language-pack optional; was: if(!bLanguageDefined){
   strSorry = "I'm Sorry, your cart is full;  please proceed to checkout.";
   strAdded = "Added to your shopping cart:";
   strAddedQuantity = "Quantity: ";                                             //ER: new;  needed by, but not added by, Stefko mods
   strAddedProduct  = "Product:  ";                                             //ER: new;  needed by, but not added by, Stefko mods
   strRemove = "Click 'OK' to remove this product from your shopping cart.";
   strTLabel = "Image";                                                         //ER: new 2009-03-21
   strILabel = "Product ID&nbsp;&nbsp;&nbsp";
   strDLabel = "Product Name";
   strQLabel = "Qty";
   strPLabel = "Price";
   strWLabel = "Weight";                                                        //ER: new - for displaying Product WEIGHT in ManageCart;  replaces strSLabel
   strZLabel = "Size";                                                          //ER: new - for displaying Product SIZE in ManageCart
   strALabel = "Amount";                                                        //ER: new - replaces Stefko's "Ext." for displaying Price*Qty in CheckoutCart
   strRLabel = "&nbsp;";                                                        //ER: was: "Remove from Cart"  (Netscape-4 needs NBSP rather than EMPTYSTRING)
   strRButton= "Remove";                                              //ER: was: "Remove"
   strMButton= "More Info";                                                     //ER: new;  for the DynamicWtSzColumns option
   strLButton= "Less Info";                                                     //ER: new;  for the DynamicWtSzColumns option
   strSUB = "SUBTOTAL";
   strWTSZTOT = "PACKAGE weight";                                           //ER: new;  Stefko had strWTOT="TOTAL WEIGHT";  but now it's for Weight+Size
   strSHIP = "SHIPPING to";
   strTAX = "VAT [6% for EU]";
   strTOT = "TOTAL";
   strErrQty = "Invalid Quantity.";
   strNewQty = "Please enter new quantity:";
   strSHIPPINGZONE = "SHIP to:";                                        //ER: new;  needed by, but not added by, Stefko mods
   strTAXABLEREGION = "TAXABLE<BR>REGION";                                      //ER: new;  needed by my rewrite of the sales-tax-by-region code
   strEA = "/ea";                                                               //ER: new;  needed by the original NopDesign version
   strCartEmpty = "Your cart is empty";                                         //ER: new;  needed by the original NopDesign version
   strAsMultiple = "as multiple packages:";                                     //ER: new;  for message from ComputeShipping
   strAsSingle = "as-one would be:";                                                     //ER: new;  for message from ComputeShipping
   strBroken="our shipping-calculator is broken; please inform our webmaster";  //ER: new;  message from ComputeShipping
   strTotalNaN="Your browser's javascript appears to be broken; another browser may help; a reboot may help; if problem persists, please inform our webmaster";  //ER: new;  message from ValidateCart, when total is not a number
   strINCLUDEDINTOTAL = "Included in Total";                                    //ER: new;  for the DisplayTaxIncluded option
   Language = "en";
}

//Options for Programmers:
OutputItemId         = "NAME_";                  // was : "ID_";
OutputItemQuantity   = "QUANTITY_";
OutputItemPrice      = "PRICE_";
OutputItemName       = "ID_";         //was: "NAME_";
OutputItemWeight     = "WEIGHT_";       //Renamed by Stefko: Shipping-->Weight
OutputItemLength     = "LENGTH_";       //ER: new
OutputItemWidth      = "WIDTH_";        //ER: new
OutputItemHeight     = "HEIGHT_";       //ER: new
//tputItemAddtlInfo  = "ADDTLINFO_";    //2008-02-07: yanked, see OutputItemName
OutputOrderZone      = "SHIPZONE";      //Added by Stefko
OutputOrderRegion    = "TAXREGION";     //ER: new
OutputOrderSubtotal  = "SUBTOTAL";
OutputOrderShipping  = "SHIPPING";
OutputOrderTax       = "TAX";
OutputOrderTotal     = "TOTAL";
OutputOrderIdeal     = "IDEAL";         // iDEAL demands total amount in cents, without decimals 2010-01-03
AppendItemNumToOutput= true;            //MUST be true for at least PayPal & Google-Checkout;  ER: suspect no-one ever uses false??
  CartID             = "";              //empty-string is fine for the first cart on one website
Debug                = 0;               //suppress DEBUG alerts
function DEBUG(str)   {if(Debug)   alert(str);}         //any nonzero value produces the DEBUG (sanity-test) alerts
function DEBUG1(str)  {if(Debug&1) alert(str);}         //the  1-bit controls DEBUG1  alerts
function DEBUG2(str)  {if(Debug&2) alert(str);}         //the  2-bit controls DEBUG2  alerts
function DEBUG4(str)  {if(Debug&4) alert(str);}         //the  4-bit controls DEBUG4  alerts
function DEBUG8(str)  {if(Debug&8) alert(str);}         //the  8-bit controls DEBUG8  alerts
function DEBUG16(str) {if(Debug&16)alert(str);}         //the 16-bit controls DEBUG16 alerts
if(window.location.href.substring(0,5)=="file:") Debug|=256;  else Debug=0;     //2008-02-20: smart (Opera-like) behaviour wrt Debug-alerts...

//Options for Everyone:
  MoneySymbol          = "$";           //use dollar-symbol 
  DisplayPopupOnAdd    = false;         //suppress "add to cart" popups  (DEFAULT true in NopDesign version)
  DisplayPopupOnRemove = false;         //suppress "remove from cart" popups  (not suppressable in NopDesign version)
  DisplayChangeQty     = true;         //suppress changeable quantity-field  (added by Stefko)
  DisplayImgColumn     = "";            //don't show a Thumbnail-Image column in ManageCart
  ImgPrefix            = "shopImage-";  //prefix for ImgColumn-filenames
  DisplayWtColumn      = false;         //don't show a Shipping-WEIGHT column in ManageCart
  DisplaySzColumn      = false;         //don't show a Shipping-SIZE column in ManageCart
  DynamicWtSzColumns   = 0;             //a clickable "More Info" button, to have both Shipping-WEIGHT+SIZE columns shown
  WTUNITS              = "g";           //grams  (needed by but not added by Stefko mods; he used "lbs")
  SZUNITS              = "cm";          //units for Item & Package SIZEs
  WTROUND              = 1;             //want Package-Weight rounded-up to integer
  SZROUND              = 10;            //Package-Length,Width,Height rounded to multiple of 0.1
  MoneyPLACES          = 2;             //currency needs two decimal places as in dollars and cents
  DisplaySubtotalRow   = 0;             //display subtotal before shipping '1'=show '0'=HIDE
  DisplayPkgAttrRow    = false;          //show the total size & weight
  DisplayShippingRow   = false;          //show the shipping-cost-line
  DisplayRegionColumns = 0;             //single-column for Region-choices
  DisplayTaxRow        = false;          //show the tax-line
  DisplayTaxIncluded   = true;         //do not show tax-included prices
  ShipTaxAsItems       = false;         //do not tax shipping by the same-rate-as-on-items method

  TaxNames             = [];            //no name (other than TAX) needed for a single sales-tax
  TaxRates             = [0.06];        //a 6% VAT-tax for residents of Region#0 (the EU)
  TaxesByID            = {n:[]};                        //product-IDs n* get no tax
  TaxesByRegion        = [[0]];                         //Region#0 gets Tax#0
  RegionTable          = ["European Union [6% VAT]", "Other Countries [No Tax]"];                                                   //for one tax in 2 Regions
  RegionFromZone       = [[0],[0],[0]];               //customer in Zone#0 or 1 is in Region#0;  one in Zone#2 can be in Region#0 or 1// 2011: was: [[0],[0],[0,1]];
  RegionDefault        = 0;                             //default Region, ignored if RegionFromZone used, when first entry is default
  RegionPrompt         = "Please indicate whether you reside in the European Union for tax purposes, before continuing";      //prompt for EU
  RegionSuppressible   = true;                         //avoid the region-suppression feature 'false'= 'eu & international' - not needed for EU only
  DefaultDonation      = 0.01;                          //default Donation-Amount for donor who provides an invalid amount
  MinimumDonation      = 0.01;                          //minimum Donation-Amount
  MinimumDonationPrompt= "We're sorry but we're unable to accept a donation of less than 0.01"; //
  MinimumOrder         = 4.50;                                                                  //prevent empty-cart to checkout
  MinimumOrderPrompt   = "Your cart is empty; you can not check out without ordering something.";  //eng
  PrefDonation         = "nDO";                         //donations have IDs beginning with nDO
  SameCountry          = 0;                             //highest region in same country, used only if ShipTaxName being used
  gcCurrency           = "EUR";                         //currency-code for Google-Checkout
  NotesOnItem          = false;                          //want shipping+region-notes onto last item


//Payment Processor Options:
  PaymentProcessor     = "pp";          //payment-processor for ManageCart;  is now supplied in shoppingcart.htm
  PaymentProcessor2    = "cgi";         //payment-processor for CheckoutCart;  is now supplied in shoppingcheckout.htm
  AllInOne             = false;         //use cart-support with PayPal

//========================================================================
// Shipping-Info Table
// -------------------
// Several examples are provided, to illustrate how you can go about 
// creating a table that describes shipping from your location, by the 
// package-deliverer you've chosen.  
//
// RESTRICTION: in the present version, the Length & Width must be the
// same in all pkginfo-entries for one zone.
//
// NOTE:  "*" in last column (of PkgClass) indicates multiple of these 
// (or smaller) may cost less than shipping as one package, and the 
// shipping-calculator is to try it both ways;  this feature works best 
// when size matters and Packing-Rules are provided.
// (!!future enhancement: program to derive the "*" info itself.)
//========================================================================

// 1 t-shirt+ envelop is 200 gr - envelop los = 20 gr -CD =65 gr [digipack]
  ShipTable = [];                                                                               //init array
  ShipTable[0]= new ShipEntry("Netherlands/Nederland",        []);                                   //Zone#0 = Within Nederland
 // ShipTable[1]= new ShipEntry("EU-countries",           []);                                         //Zone#1 = To EU
//  ShipTable[2]= new ShipEntry("Other International", []);                                          //Zone#2 = To International
  //package-categories within Netherlands:
  ShipTable[0].pkginfo[0]= new PkgClass(  100, new Size(38.0, 26.5, 3.2), 0, 0.00, 1,  "");  //up to 100g, 38.0x26.5x3.2cm, costs 1.50
  ShipTable[0].pkginfo[1]= new PkgClass(  250, new Size(38.0, 26.5, 3.2), 0, 0.00, 1,  "");  //up to 250g, 38.0x26.5x3.2cm, costs 2.00
  ShipTable[0].pkginfo[2]= new PkgClass(  500, new Size(38.0, 26.5, 3.2), 0, 0.00, 1,  "");  //up to 500g, 38.0x26.5x3.2cm, costs 2.50
  ShipTable[0].pkginfo[3]= new PkgClass( 3000, new Size(38.0, 26.5, 3.2), 0, 0.00, 1, "*");  //up to  3kg, 38.0x26.5x3.2cm, costs 2.90
  ShipTable[0].pkginfo[4]= new PkgClass(10000, new Size(38.0, 26.5, 560), 0, 0.00, 1,  "");  //up to 10kg, 140x78x58cm,     costs 7.00
  ShipTable[0].pkginfo[5]= new PkgClass(99999, new Size(38.0, 26.5, 999), 0, 0.00, 1,  "");  //big parcel                   costs 10.00(??)
  //package-categories for to-EU priority shipping: 
 
  
 //*********following is Shipping prices p/2010 [not used for herbal stuff******//
//ShipTable[0].pkginfo[0]= new PkgClass(  100, new Size(38.0, 26.5, 3.2), 1.50, 0.00, 1,  "");  //up to 100g, 38.0x26.5x3.2cm, costs 1.50
 // ShipTable[0].pkginfo[1]= new PkgClass(  250, new Size(38.0, 26.5, 3.2), 2.00, 0.00, 1,  "");  //up to 250g, 38.0x26.5x3.2cm, costs 2.00
//  ShipTable[0].pkginfo[2]= new PkgClass(  500, new Size(38.0, 26.5, 3.2), 2.50, 0.00, 1,  "");  //up to 500g, 38.0x26.5x3.2cm, costs 2.50
//  ShipTable[0].pkginfo[3]= new PkgClass( 3000, new Size(38.0, 26.5, 3.2), 2.90, 0.00, 1, "*");  //up to  3kg, 38.0x26.5x3.2cm, costs 2.90
//  ShipTable[0].pkginfo[4]= new PkgClass(10000, new Size(38.0, 26.5, 560), 7.00, 0.00, 1,  "");  //up to 10kg, 140x78x58cm,     costs 7.00
//  ShipTable[0].pkginfo[5]= new PkgClass(99999, new Size(38.0, 26.5, 999),10.00, 0.00, 1,  "");  //big parcel                   costs 10.00(??)
  //package-categories for to-EU priority shipping: 
//  ShipTable[1].pkginfo[0]= new PkgClass(  100, new Size(38.0, 26.5, 3.2), 2.50, 0.00, 1,  "");  //up to 100g, 38.0x26.5x3.2cm, costs  1,76
//  ShipTable[1].pkginfo[1]= new PkgClass(  250, new Size(38.0, 26.5, 3.2), 3.50, 0.00, 1,  "");  //up to 250g, 38.0x26.5x3.2cm, costs  2.45
  //ShipTable[1].pkginfo[2]= new PkgClass(  250, new Size(38.0, 26.5, 180), 4.08, 0.00, 1,  "");  //up to 250g, 60x60x90cm,      costs  3.25
//  ShipTable[1].pkginfo[2]= new PkgClass(  500, new Size(38.0, 26.5, 3.2), 6.50, 0.00, 1,  "");  //up to 500g, 38.0x26.5x3.2cm, costs  4.02 [this is discount: org price = 6.50 [May 2010]
  //ShipTable[1].pkginfo[4]= new PkgClass(  500, new Size(38.0, 26.5, 180), 4.25, 0.00, 1,  "");  //up to 500g, 60x60x90cm,      costs  4.25
//  ShipTable[1].pkginfo[3]= new PkgClass( 1000, new Size(38.0, 26.5, 3.2), 9.50, 0.00, 1,  "");  //up to  1kg, 38.0x26.5x3.2cm, costs  6.47 [this is discount: org price = 11.50 [May 2010]
//  ShipTable[1].pkginfo[4]= new PkgClass( 2000, new Size(38.0, 26.5, 180), 9.50, 0.00, 1, "*");  //up to  2kg, 60x60x90cm,      costs 
  ///ShipTable[1].pkginfo[7]= new PkgClass( 5000, new Size(38.0, 26.5, 180), 16.45, 0.00, 1,  "");  //up to  5kg, 60x60x90cm,      costs 16.45
  //ShipTable[1].pkginfo[8]= new PkgClass(10000, new Size(38.0, 26.5, 180), 20.95, 0.00, 1,  "");  //up to 10kg, 60x60x90cm,      costs 20.95
  //ShipTable[1].pkginfo[9]= new PkgClass(99999, new Size(38.0, 26.5, 999), 25.00, 0.00, 1,  "");  //big parcel                   costs 25.00(??)
  //package-categories for to-International shipping: 
//  ShipTable[2].pkginfo[0]= new PkgClass(  100, new Size(38.0, 26.5, 3.2), 3.00, 0.00, 1,  "");  //up to 100g, 38.0x26.5x3.2cm
//  ShipTable[2].pkginfo[1]= new PkgClass(  250, new Size(38.0, 26.5, 3.2), 6.00, 0.00, 1,  "");  //up to 250g, 38.0x26.5x3.2cm
//  //ShipTable[2].pkginfo[2]= new PkgClass(  250, new Size(38.0, 26.5, 180), 6.70, 0.00, 1,  "");  //up to 250g, 60x60x90cm,
//  ShipTable[2].pkginfo[2]= new PkgClass(  500, new Size(38.0, 26.5, 3.2), 11.00, 0.00, 1,  "");  //up to 500g, 38.0x26.5x3.2cm
  //ShipTable[2].pkginfo[4]= new PkgClass(  500, new Size(38.0, 26.5, 180),17.00, 0.00, 1,  "");  //up to 500g, 60x60x90cm,
  //ShipTable[2].pkginfo[5]= new PkgClass( 1000, new Size(38.0, 26.5, 3.2),19.95, 0.00, 1,  "");  //up to  1kg, 38.0x26.5x3.2cm
//  ShipTable[2].pkginfo[3]= new PkgClass( 2000, new Size(38.0, 26.5, 180),19.95, 0.00, 1, "*");  //up to  2kg, 60x60x90cm,
  //ShipTable[2].pkginfo[7]= new PkgClass( 5000, new Size(38.0, 26.5, 180),65.80, 0.00, 1,  "");  //up to  5kg, 60x60x90cm,
  //ShipTable[2].pkginfo[8]= new PkgClass(10000, new Size(38.0, 26.5, 180),83.80, 0.00, 1,  "");  //up to 10kg, 60x60x90cm,
  //ShipTable[2].pkginfo[9]= new PkgClass(99999, new Size(38.0, 26.5, 999),99.99, 0.00, 1,  "");  //big parcel(??)
  ZoneDefault = 0;                                                                              //make Zone#1 the Default
  ZonePrompt  = "Please choose your shipping region to continue:";                                      //prompt for Zone, in Dutch
  ShipTaxRate = 0;                              //no tax on shipping-prices
  ShipTaxName = "";                             //no tax on shipping-prices
  HandlingChargePerOrder =        0.00;         //HandlingCharge for the first package in an order
  HandlingChargePerExtraPackage = 0.00;         //HandlingCharge per additional package
  // NOTES:
  // ------
  
  

//========================================================================
// Packing-Rule Info (OPTIONAL)
// ----------------------------
// The program will work without this Packing-Rule info, but will then
// be more prone to overcharging the customer for shipping.
// You may want to pre-compute packing rules like these, which will be
// feasible provided your list of item-sizes is fairly short.
// (And if its really short, you probably won't need them:-)
//
//========================================================================
PackTable = [];                 //--LEAVE THIS LINE even when omitting Packing-Rule Info
  //--OPTIONAL INFO - the rest of this section may be omitted--
  

//======================================================================||
//----------------------------------------------------------------------||
// YOU DO NOT NEED TO MAKE ANY MODIFICATIONS BELOW THIS LINE            ||
// If you wish to venture below this line and are new to javascript,    ||
// then I recommend:  http://www.crockford.com/javascript/survey.html;  ||
// (my code would be better had I read it first:-)                      ||
//----------------------------------------------------------------------||
//======================================================================||


//========================================================================
// Objects and Methods related to Package-Size;
// by Eugene Reimer 2007-07-01.
//
// Some notes to myself:
// -- don't really need constructors;  eg: ShipEntry(A,B) --> {zone:A, pkginfo:B}
// -- possibly avoid size-field & doubly-dotted-selectors??  the SizeXX functions can accept any object having L,W,H fields...
// -- could rewrite ShipTable & packBySz initializers using ARRAYOBJECT.push
//    also ARRAYOBJECT[ARRAYOBJECT.length]=xxx;  -->  ARRAYOBJECT.push(xxx);
// -- was tempted to use for(VAR in ARRAYOBJECT) iteration, but it's illegal/ill-advised for arrays (only for objects);  also doesn't do what's wanted...
// -- wondered whether it's possible to redefine/overload the == operator instead of my SizeEQ routine;  found some info in:
//    http://www.mozilla.org/js/language/js20-2000-07/libraries/operator-overloading.html  -- doesn't sound promising...
// -- oldest supported browsers:  Netscape-4.06 and IE4/5 conform to ECMA-262-Edition-1 (Javascript-1.3/JScript-3.0), which has push,unshift,split, but not regexprs!
//      note: slice, substr not in ECMA-262-Edition-1, yet both of those browsers had them??  (using only substring to be safe)
//      indexOf is nonstd, yet both browsers had it  --see http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array:indexOf  if code needed
//      NOTE: getAttribute and/or the DOM being used (for new-style attributes) are not supported by Netscape-4--!!--
//
// Future enhancements:
// May use parts of the Bin-Packing algorithm by Martello, Pisinger, Vigo,
// as published in http://www.diku.dk/~pisinger/3dbpp.c
// (see also http://forums.devshed.com/software-design-43/3d-bin-packing-49217.html);
//========================================================================
var PkgQueue = null;                                                    //an array of Qszwt entries;  describes the items (later the packages) in the current order
var PkgAsOne = null;                                                    //of type Qszwt;  the resulting package size & weight
var sComputeShippingNote="";                                            //an additional note about shipping to be shown to the customer during View-Cart
var gVat=0;                                                             //amount of VAT-tax included in the shipping-cost
function PrefEQ(A,B) {return A.substring(0,B.length)==B;}               //compare string-prefix
function NumberZ(s) {var N=Number(s); if(isNaN(N))N=0; return(N);}      //like the javascript Number, except it returns zero instead of NaN
function Integer(s) {return Math.round(NumberZ(s));}
moneyEps= Math.pow(10, -MoneyPLACES);                                   //smallest nonzero monetary-amount
MoneyROUND_FRA= Math.pow(10, +MoneyPLACES);                             //replaces 100 in all money-rounding  when PLACES>0
MoneyROUND_NOF= Math.pow(10, -MoneyPLACES);                             //for reciprocal-based money-rounding when PLACES<=0
function CentsFRA(f) {return  Math.round(f*MoneyROUND_FRA) / MoneyROUND_FRA;}
function CentsNOF(f) {return  Math.round(f/MoneyROUND_NOF) * MoneyROUND_NOF;}
Cents = (MoneyPLACES>0 ?CentsFRA :CentsNOF);                            //money-rounding function, init according to which rounding-method is needed
function WtRndUP(x) {return Math.ceil( x*WTROUND)/WTROUND;}             ///weight-rounding function that rounds-UP
function WtRnd(x)   {return Math.round(x*WTROUND)/WTROUND;}             ///weight-rounding function
function SzRnd(x)   {return Math.round(x*SZROUND)/SZROUND;}             ///dimension-rounding function
function Element(E,S) {for(var e=S.length;e--;)if(E==S[e])return true; return false;}   //is-an-element-of for set as an array; may switch to bitstring...
//function Element(E,S) {return (S&(1<<E))!=0;}                                         //is-an-element-of for bitstring  (set with elements 0..31)
//
//--sanity-checking and initialization related to Options:
while(PackTable.length < ShipTable.length) PackTable.push([]);                                                                          //ensure an entry for each Zone
if(RegionFromZone.length && RegionFromZone.length < ShipTable.length) DEBUG("RegionFromZone must have as many entries as ShipTable");
X=[];for(Z=ShipTable.length;Z--;)X[Z]=false; for(Z=RegionFromZone.length;Z--;)X[Z]=(RegionFromZone[Z].length==1);  RegionFromZoneOvA=X; //RfromZ-Overrides boolean-array
X=0; Z=RegionFromZone.length; if(Z>0) {X=1; while(Z--)X&=RegionFromZoneOvA[Z];}  RegionFromZoneOverrides=X;                             //was an option, now derived
if(RegionFromZone.length) {X=[];for(R=0;R<RegionTable.length;++R)X.push(R); while(RegionFromZone.length < ShipTable.length)RegionFromZone.push(X);} //entry for each zone
if(TaxNames.length>=2) while(TaxNames.length < TaxRates.length) TaxNames.push("UnNamedTax");                                            //ensure an entry for each Tax
while(TaxesByRegion.length < RegionTable.length) TaxesByRegion.push([]);                                                                //ensure an entry for each Region
RegionsUsed=(RegionTable.length>=2);                                                                                                    //replaces TaxRateRegional!=0
X=[];for(R=RegionTable.length;R--;)X.push(0); for(RZ=RegionFromZone,Z=RZ.length;Z--;) {E=RZ[Z];for(K=E.length;K--;)++X[E[K]];}
Y=[];for(R=X.length;R--;)Y[R]=(X[R]==1); ZoneFromRegionOvA=Y;                                                                           //ZfromR-Overrides boolean-array
//------------------------------------------------------------------------
// CONSTRUCTOR:  ShipEntry (zone, pkginfo)
//------------------------------------------------------------------------
function ShipEntry (zone,pkginfo){
   this.zone=zone;
   this.pkginfo=pkginfo;
}
//------------------------------------------------------------------------
// CONSTRUCTOR:  PkgClass (weight, size, costfixed, costperwtunit, wtunit, flag)
//------------------------------------------------------------------------
function PkgClass (weight,size,costfixed,costperwtunit,wtunit,flag){
   this.weight=weight;
   this.size=size;
   this.costfixed=costfixed;
   this.costperwtunit=costperwtunit;
   this.wtunit=wtunit;
   this.flag=flag;
}
//------------------------------------------------------------------------
// CONSTRUCTOR:  PackingRule (itmsizeinfo, itmqtyinfo, pkgsize)
//------------------------------------------------------------------------
function PackingRule (itmsizeinfo,itmqtyinfo,pkgsize){
   this.itmsizeinfo=itmsizeinfo;
   this.itmqtyinfo=itmqtyinfo;
   this.pkgsize=pkgsize;
}
//------------------------------------------------------------------------
// CONSTRUCTOR:  Size (Length, width, height)
//------------------------------------------------------------------------
function Size (Length,width,height){
   this.Length=NumberZ(Length); //calling it this.length could be trouble since objects already have a length attribute?
   this.width =NumberZ(width );
   this.height=NumberZ(height);
}
//------------------------------------------------------------------------
// CONSTRUCTOR:  Qszwt (qty, size, weighteach)
//------------------------------------------------------------------------
function Qszwt (qty,size,weighteach){
   this.qty   =Integer(qty);
   this.size  =size;
   this.weight=NumberZ(weighteach) * qty;
   this.wt=[];  for(var w=0; w<qty; ++w) this.wt[w]= NumberZ(weighteach);
   //the wt array is needed to handle same-size items having different weights
}
//------------------------------------------------------------------------
// FUNCTION:  SizeStr (size) -- convert size to string
//------------------------------------------------------------------------
function SizeStr (size){
   return(size.Length + "x" + size.width + "x" + size.height);
}
//------------------------------------------------------------------------
// FUNCTION:  SizeVolume (size) -- returns the volume==Length*width*height;
//------------------------------------------------------------------------
function SizeVolume (size){
   return(size.Length * size.width * size.height);
}
//------------------------------------------------------------------------
// FUNCTION:  SizeEQ (size1, size2) -- compare two sizes for equality
//------------------------------------------------------------------------
function SizeEQ (size1,size2){
   return(size1.Length==size2.Length && size1.width==size2.width && size1.height==size2.height);
}
//------------------------------------------------------------------------
// FUNCTION:  InitPkgQueue() -- initialize the PkgQueue
//------------------------------------------------------------------------
function InitPkgQueue(){
   PkgQueue = [];       //init to an empty array
}
//------------------------------------------------------------------------
// FUNCTION:  AddPkgQueueEntry (qty, size, weighteach) -- revise the global PkgQueue, an array-of-Qszwt;
// if there is an entry for size in PkgQueue, then update its qty & weight;
// otherwise add an entry.
//------------------------------------------------------------------------
function AddPkgQueueEntry (qty,size,weighteach){
   for(var i=0; i<PkgQueue.length; ++i) if(SizeEQ(PkgQueue[i].size, size)){
      PkgQueue[i].qty += Integer(qty);
      PkgQueue[i].weight += NumberZ(weighteach)*Integer(qty);  for(var w=0; w<qty; ++w) PkgQueue[i].wt.push(NumberZ(weighteach));
      return;
   }
   PkgQueue.push(new Qszwt(qty,size,weighteach));
}
//------------------------------------------------------------------------
// FUNCTION:  RemovePkgQueueEntry (i) -- remove the PkgQueue[i] entry
//------------------------------------------------------------------------
function RemovePkgQueueEntry (i){
   PkgQueue.splice(i, 1);
}
//------------------------------------------------------------------------
// FUNCTION:  ShowPkgQueue -- display the PkgQueue  (convert to string)
//------------------------------------------------------------------------
function ShowPkgQueue(){
   var str="";
   for(var i=0; i<PkgQueue.length; ++i){
      str+= "qty:"+PkgQueue[i].qty +"; sz:"+SizeStr(PkgQueue[i].size) +"; wt:"+Math.round(PkgQueue[i].weight) +" [";
      for(var w=0; w<PkgQueue[i].qty; ++w) str+= Math.round(PkgQueue[i].wt[w]) + " ";
      str+= "]\n";
   }
   return str;
}
//------------------------------------------------------------------------
// FUNCTION:  PickAndApplyPackingRule -- find & apply the best matching PackingRule,
// thereby simplifying the global PkgQueue;  returns false if no rule matches;
// Algorithm:
// if we have any size mentioned in only one PackingRule, then apply that rule;
// otherwise, pick the best matching rule (by volumetric efficiency**) and apply it
//------------------------------------------------------------------------
function PickAndApplyPackingRule(PackingRule){
   var SZ=null;  var P=null;  var bestGoodness=0;
   for(var i=0; i<PkgQueue.length; ++i){
      var sz=PkgQueue[i].size,  p=null,  ct=0;
      for(var r=0; r<PackingRule.length; ++r) for(var e=0; e<PackingRule[r].itmsizeinfo.length; ++e) if(SizeEQ(PackingRule[r].itmsizeinfo[e], sz)){
         p=r; ++ct; break;
      }
      if(ct==1) {SZ=sz; P=p; break;}                            //--have found P an ONLY rule for size SZ
   }
   if(SZ==null){
      var minRV=99999999; for(var r=0; r<PackingRule.length; ++r) {var RV= SizeVolume(PackingRule[r].pkgsize); if(RV<minRV) minRV=RV;}
      for(var r=0; r<PackingRule.length; ++r){
         var MV=0;
         for(var e=0; e<PackingRule[r].itmsizeinfo.length; ++e) for(var i=0; i<PkgQueue.length; ++i) if(SizeEQ(PackingRule[r].itmsizeinfo[e], PkgQueue[i].size)){
            MV+= SizeVolume(PkgQueue[i].size) * Math.min(PkgQueue[i].qty, PackingRule[r].itmqtyinfo[e]);
         }
         var RV=SizeVolume(PackingRule[r].pkgsize),  relRV=RV/minRV;
         var VE=MV/RV;                                          //volumetric-efficiency (Matching-Volume over Result-Volume)
         var g=VE/relRV;                                        //(**)modified volumetric-efficiency, to favour rule with smaller result-size
         if(g>bestGoodness) {P=r; bestGoodness=g;}              //--have found a new BEST rule P
      }
   }
   if(P==null) return false;    //--indicate NO matching rule found
   if(SZ!=null)  sRule= "PackingRule[" + P + "] is ONLY rule for sz:" + SizeStr(SZ) + "\n";
   else          sRule= "PackingRule[" + P + "] is BEST g:" + Math.round(bestGoodness*1000)/1000 + "\n";
   sRules+=sRule;
   //now apply rule P; first reducing qty or removing matched PkgQueue-entries, then adding an entry for the resulting pkg-size;
   var wei=0;
   for(var e=0; e<PackingRule[P].itmsizeinfo.length; ++e) for(var i=0; i<PkgQueue.length; ++i) if(SizeEQ(PackingRule[P].itmsizeinfo[e], PkgQueue[i].size)){
      var Q= Math.min(PkgQueue[i].qty, PackingRule[P].itmqtyinfo[e]);
      //wei+= PkgQueue[i].weight * Q;
      for(w=0; w<Q; ++w) {wei+= PkgQueue[i].wt[w]; PkgQueue[i].weight-= PkgQueue[i].wt[w];}
      PkgQueue[i].qty-= Q;
      if(PkgQueue[i].qty==0) RemovePkgQueueEntry(i);
      else                   PkgQueue[i].wt.splice(0, Q);
   }
   AddPkgQueueEntry(1, PackingRule[P].pkgsize, wei);
   return true;
}
sRule="";       //global var showing most recently applied PackingRule, for DEBUG purposes only
sRules="";      //global var showing which PackingRules were applied,   for DEBUG purposes only
//------------------------------------------------------------------------
// FUNCTION:  ComputePackageSize -- compute sum of item-sizes from global PkgQueue;
// such summing, not altogether straightforward, is known as the 3D Bin Packing Problem;
// RESULT:  global PkgQueue gets a simplified list of sub-packets;
//          global PkgAsOne describes the order as a single package;
// Algorithm:
// while any packingrule matches the item-sizes in PkgQueue do
//    pick and apply the best matching rule (see PickAndApplyPackingRule)
// done
//------------------------------------------------------------------------
function ComputePackageSize (ZoneParam){
   DEBUG2(ShowPkgQueue());
   var PR=PackTable[ZoneParam];
   if(PR.length>0){
      //---use Packing-Rules Method;
      // Condidered doing this twice with two sets of packing-rules:  BySz to get the smallest packages,  ByWt to get weight-limited packages;
      // (2nd would need to start with a copy of PkgQueue from before 1st; see System.arraycopy;  OR: better to construct new list in both steps)
      // but convinced myself that such complexity was not needed.  The ByWt rules will sometimes make the single-package bigger than optimal,
      // but only for an order of predominantly high-density items;  ergo, such a non-minimal package-size will never force a higher price;
      // and that likely holds for any user, any pkg-deliverer, or close enough...
      sRules="Zone:"+ShipTable[ZoneParam].zone+"\n";
      //==!!possibly add some sanity-checking on the PackingRules??
      while((PkgQueue.length>1 || (PkgQueue.length==1 && PkgQueue[0].qty>1)) && PickAndApplyPackingRule(PR)) DEBUG2(sRule+ShowPkgQueue());      //was: {}
      DEBUG1(sRules+"Packages:\n"+ShowPkgQueue());
   }
   //---use Crude Method, both in the absence of, and AFTER using PackingRules (to compute size as single package)
   var thk=0,  len=0,  wid=0,  wei=0;
   for(var i=0; i<PkgQueue.length; ++i){
      if(PkgQueue[i].size.Length > len) len = PkgQueue[i].size.Length;
      if(PkgQueue[i].size.width  > wid) wid = PkgQueue[i].size.width ;
      thk += PkgQueue[i].size.height * PkgQueue[i].qty;
      wei += PkgQueue[i].weight;
   }
   PkgAsOne = new Qszwt(1, new Size(len,wid,SzRnd(thk)), WtRndUP(wei));         //overall package size and weight (weight rounded up)
   //==!!NEEDED: Crude-Method, try placing several small items (LxW) into one layer, guided by package-size defns -- in case PackingRules omitted;
   //  OR: supply a script that reads a given set of HTML files, extracting items for sale, and then computes the PackingRules  (and make PackingRules required)
}
//------------------------------------------------------------------------
// FUNCTION: ComputeShipping -- compute the shipping cost for size and weight of package
//------------------------------------------------------------------------
function ComputeShipping (ZoneParam){
   sComputeShippingNote="";
   if(PkgAsOne.weight==0 && PkgAsOne.size.height==0) return 0.00;
   var Ship= ShipTable[ZoneParam].pkginfo;                      //Ship is array of PkgClass(weight,size,costfixed,costperwtunit,wtunit,flag)
   function PricePkg(Ship,weight,height){                       //function to lookup price for one pkg
      for(var c=0; c<Ship.length; ++c) if(weight<=Ship[c].weight && height<=Ship[c].size.height)
      {  return  Cents(Ship[c].costfixed + Ship[c].costperwtunit * Math.ceil(weight / Ship[c].wtunit)); }       //return shipping-price
      return 99999.99;                                                                                          //return illegal-weight-or-size indication
   }
   var asOne= PricePkg(Ship, PkgAsOne.weight, PkgAsOne.size.height);            //---compute price as a single package
   
   var asMult=99999.99,  FC=null,  iN=0;
   for(var c=0; c<Ship.length; ++c) if(Ship[c].flag=="*") FC=c;
   if(FC!=null){                                                                //---also price as multiple smaller packages (to handle pricing anomalies...)
      var maxHt=Ship[FC].size.height;
      var maxWt=Ship[FC].weight;
      var accHt=0,  accWt=0, sW="";  function R(f) {return " "+Math.ceil(f)+WTUNITS;}
      asMult=0;
      for(var i=PkgQueue.length; i--;) for(var j=PkgQueue[i].qty; j--;){        //do in reverse order (doing lightest ones first is best, at least for my examples:-)
         var Wt= PkgQueue[i].wt[j];
         var Ht= PkgQueue[i].size.height;
         if( Wt>maxWt || Ht>maxHt) {asMult=99999.99; break;}                    //having ByWt-packing, now treat this as "separate packages impossible"  !!double-break??
         if(accWt+Wt>maxWt || accHt+Ht>maxHt){                                  //handle previously accumulated little ones
            asMult+= PricePkg(Ship, accWt, accHt);  ++iN; sW+=R(accWt);
            accHt=0; accWt=0;
         }
         accWt+=Wt;  accHt+=Ht;                                                 //accumulate another little one
      }
      if(accWt+accHt){asMult+=PricePkg(Ship,accWt,accHt); ++iN; sW+=R(accWt);}  //finish off any non-handled accumulation
   }
   var asOneVat=  Cents(asOne *ShipTaxRate);
   var asMultVat= Cents(asMult*ShipTaxRate);
   asOne += asOneVat  + HandlingChargePerOrder;                                         //add HandlingCharges BEFORE comparing
   asMult+= asMultVat + HandlingChargePerOrder + (iN-1)*HandlingChargePerExtraPackage;  //add HandlingCharges BEFORE comparing
   var cost;
   if(asOne<=asMult){                                                                                                                   //as one package
      cost=asOne;  gVat=asOneVat;
   }else{                                                                                                                               //as multiple packages
      cost=asMult; gVat=asMultVat;
      if(strAsMultiple)sComputeShippingNote="("+strAsMultiple+sW+(strAsSingle?"; "+strAsSingle+MoneySymbol+moneyFormat(asOne):"")+")";  //sW+asOne can be suppressed...
   }
   if(cost>=99999) {sComputeShippingNote=strBroken;  return 99999.99;}
   return  cost;
   //
   //!!consider: keep info on the items within each packet, so can produce packing-instructions showing which items go into which size envelope (for the shipping dept)
}
//------------------------------------------------------------------------
// FUNCTION: NewZone -- update the ZoneSelected cookie
//------------------------------------------------------------------------
function NewZone (ZoneParam){
   SetCookie("ZoneSelected", ZoneParam, null, "/");
   var RegionCookie= iGetCookie("RegionSelected");
   if(RegionCookie!=null && RegionFromZone.length && !Element(RegionCookie, RegionFromZone[ZoneParam]))  DeleteCookie("RegionSelected","/");    //delete cookie if now illegal
   location.href=location.href;
}
//------------------------------------------------------------------------
// FUNCTION: NewRegion -- update the RegionSelected cookie
//------------------------------------------------------------------------
function NewRegion (RegionParam){
   SetCookie("RegionSelected", RegionParam, null, "/");
   var ZoneCookie= iGetCookie("ZoneSelected");
   if(ZoneCookie!=null && RegionFromZone.length && !Element(RegionParam, RegionFromZone[ZoneCookie]))  DeleteCookie("ZoneSelected","/");        //delete cookie if now illegal
   location.href=location.href;
}
//------------------------------------------------------------------------
// FUNCTION: MoreLessInfo -- do toggling-update to the MoreState cookie, for DynamicWtSzColumns option
//------------------------------------------------------------------------
function MoreLessInfo(){
   var MoreState=iGetCookie("MoreState");  if(MoreState==null) MoreState= (DisplayWtColumn?1:0)*2 + (DisplaySzColumn?1:0);
   MoreState= ((MoreState&DynamicWtSzColumns)==DynamicWtSzColumns ?0 :DynamicWtSzColumns);      //toggle Wt&Sz-state as per DynamicWtSzColumns option
   SetCookie("MoreState", MoreState, null, "/");                                                //update cookie
   location.href=location.href;                                                                 //redraw page
}


//========================================================================
// The rest still resembles the NopDesign version of nopcart.js (with some Stefko mods).
// ER: have revised ALL  parseFloat --> NumberZ (to permit whole or fractional number where fractional was needed)
// ER: have revised ALL  parseInt   --> Integer (new function that Rounds to whole-number, and avoids the leading-zero-means-octal gotcha)
// ER: introduced a few functions to reduce duplication, thus making future maintenance less tedious / error-prone
// ER: my other early revisions are flagged with a comment containing "ER:"  (later ones have a YYYY-MM-DD date instead)
// ER: after my Quantity-Discount Pricing mods (2007-08-07), any resemblance to the original is but faint
//========================================================================


//------------------------------------------------------------------------
// FUNCTION: NumberV
// PURPOSE: convert string to number, for CKquantity, CKprice routines
//------------------------------------------------------------------------
function NumberV(checkString) {
   var sNewString="", K=0;
   for(var i=0; i<checkString.length; ++i){
      ch = checkString.substring(i, i+1);
      if(ch>="0" && ch<="9")     sNewString += ch;      //keep all digits
      else if(ch=="." && ++K==1) sNewString += ch;      //ER: keep only the first dot
   }
   return(NumberZ(sNewString));
}
//------------------------------------------------------------------------
// FUNCTION: CKquantity
// PARAMETERS: Quantity to validate
// RETURNS: Quantity as a whole-number, but in a string
// PURPOSE: Make sure quantity is a whole-number
//------------------------------------------------------------------------
function CKquantity(checkString) {
   var N=Integer(NumberV(checkString));  if(N==0) N=1;  return(""+N);
}
//------------------------------------------------------------------------
// FUNCTION: CKprice
// PARAMETERS: Price to validate
// RETURNS: Price as a number, but in a string
// ER: introduced this routine to validate an Online-Donation amount;
//------------------------------------------------------------------------
function CKprice(checkString) {
   var N=Cents(NumberV(checkString));
   if(N==0) N=DefaultDonation;  else if(N<MinimumDonation) {N=MinimumDonation; alert(MinimumDonationPrompt);}
   return(moneyFormat(N));
}

//------------------------------------------------------------------------
// FUNCTION: AddToCart
// PARAMETERS: Form Object
// RETURNS: false if nothing added because of error-message
// PURPOSE: Add a product to the user's shopping cart, by updating Cookies, optionally with a popup prompt
//------------------------------------------------------------------------

function AddToCart(thisForm) {
   var iNumberOrdered = 0;
   var bAlreadyInCart = false;
   var notice = "";
   var ELE, ATR;
   ELE=thisForm;                                                                //Handle the old-style name=... value=... way of specifying attributes
   sID       = "";      if(ATR= ELE._ID || ELE.ID || ELE.ID_NUM ) sID      =ATR.value;          //2008-02-09 also support old name ID_NUM
   sQUANTITY = "1";     if(ATR= ELE._QUANTITY   || ELE.QUANTITY ) sQUANTITY=ATR.value;
   sPRICE    = "0.00";  if(ATR= ELE._PRICE      || ELE.PRICE    ) sPRICE   =ATR.value;
   sNAME     = "";      if(ATR= ELE._NAME       || ELE.NAME     ) sNAME    =ATR.value;
   sWEIGHT   = "0";     if(ATR= ELE._WEIGHT     || ELE.WEIGHT   ) sWEIGHT  =ATR.value;          //ER: was called sSHIPPING
   sLENGTH   = "0";     if(ATR= ELE._LENGTH     || ELE.LENGTH   ) sLENGTH  =ATR.value;          //ER: new
   sWIDTH    = "0";     if(ATR= ELE._WIDTH      || ELE.WIDTH    ) sWIDTH   =ATR.value;          //ER: new
   sHEIGHT   = "0";     if(ATR= ELE._HEIGHT     || ELE.HEIGHT   ) sHEIGHT  =ATR.value;          //ER: new
   sPROMPT   = "";                                                              //2008-01-21: a prompt-string from a selector
   for(var i=0;i<thisForm.elements.length;++i){                                 //2008-02-13: go thru hidden elements handling attrname=attrvalue
      ELE=thisForm.elements[i];
      if(ELE.type!="hidden") continue;
      if(!ELE.getAttribute)  continue;                                          //2008-03-10 skip if old browser that doesn't support getAttribute
      if(     ATR= ELE.getAttribute("_ID")      || ELE.getAttribute("ID_NUM")   ) sID      = ATR;       //avoid attribute named ID
      if(     ATR= ELE.getAttribute("_QUANTITY")|| ELE.getAttribute("QUANTITY") ) sQUANTITY= ATR;
      if(     ATR= ELE.getAttribute("_PRICE")   || ELE.getAttribute("PRICE")    ) sPRICE   = ATR;
      if(     ATR= ELE.getAttribute("_NAME")                                    ) sNAME    = ATR;       //avoid attribute named NAME
      if(     ATR= ELE.getAttribute("_WEIGHT")  || ELE.getAttribute("WEIGHT")   ) sWEIGHT  = ATR;
      if(     ATR= ELE.getAttribute("_LENGTH")  || ELE.getAttribute("LENGTH")   ) sLENGTH  = ATR;
      if(     ATR= ELE.getAttribute("_WIDTH")                                   ) sWIDTH   = ATR;       //avoid attribute named WIDTH
      if(     ATR= ELE.getAttribute("_HEIGHT")                                  ) sHEIGHT  = ATR;       //avoid attribute named HEIGHT
   }
   //sADDTLINFO= "";                                                            //2008-02-07: old ADDITIONALINFOn selectors yanked and replaced with new method below
   //if(thisForm.ADDITIONALINFO !=null) sADDTLINFO =         thisForm.ADDITIONALINFO [thisForm.ADDITIONALINFO.selectedIndex].value;
   //if(thisForm.ADDITIONALINFO2!=null) sADDTLINFO += "; " + thisForm.ADDITIONALINFO2[thisForm.ADDITIONALINFO2.selectedIndex].value;
   //if(thisForm.ADDITIONALINFO3!=null) sADDTLINFO += "; " + thisForm.ADDITIONALINFO3[thisForm.ADDITIONALINFO3.selectedIndex].value;
   //if(thisForm.ADDITIONALINFO4!=null) sADDTLINFO += "; " + thisForm.ADDITIONALINFO4[thisForm.ADDITIONALINFO4.selectedIndex].value;
   //if(thisForm.USERENTRY      !=null) sADDTLINFO += (sADDTLINFO?"; ":"") + thisForm.USERENTRY.value;  //ER: avoid leading semicolon
   //if(sADDTLINFO) sNAME+="; "+sADDTLINFO;//==TEMP==
                                                                                //2008-02-07:  new selectors with AddOneOfMany-features;  plus they can be Radio-buttons
   for(var N=0;N<=2;++N) for(var n=0;n<=9;++n){                                 //2008-02-07:  and they can supply Replacement OR To-Be-Added values (leading plus-sign)
      var selname=["ADDITIONALINFO","USERCHOICE","_USERCHOICE"][N] + (n?n:"");  //support  ADDITIONALINFOn  USERCHOICEn  _USERCHOICEn  for n=emptystring,1..9
      var selector=thisForm[selname];
      if(selector==null) continue;
      if(typeof selector.selectedIndex == "undefined"){                         //for a RADIO-button-selector need a loop testing the CHECKED-attribute
         for(var i=0;i<selector.length;++i) if(selector[i].checked) ELE=selector[i];
      }else{                                                                    //for a SELECT-box;  could use a loop testing the SELECTED-attribute
         ELE=selector[selector.selectedIndex];
      }
      function NewStr(OLD,NEW) {return    (NEW.substring(0,1)=="+" ?        OLD +        NEW.substring(1,NEW.length)  :NEW);}   //NewStr: plus-sign indicates catenation
      function NewNum(OLD,NEW) {return ""+(NEW.substring(0,1)=="+" ?NumberZ(OLD)+NumberZ(NEW.substring(1,NEW.length)) :NEW);}   //NewNum: plus-sign indicates addition

      if(!ELE.getAttribute)  if(ATR= ELE.value                                  ) sNAME    +=" "+ATR;                   //old-style here; 2008-03-18 only for old browser
      if(!ELE.getAttribute)  continue;                                                                                  //2008-03-10 skip if old browser w/o getAttribute

      if(     ATR= ELE.getAttribute("_ID")      || ELE.getAttribute("ID")       ) sID      = NewStr(sID,ATR);           //beware of attribute named ID
      else if(ATR=                                 ELE.getAttribute("ID_NUM")   ) sID      = NewStr(sID,ATR);           //support old name
      if(     ATR= ELE.getAttribute("_QUANTITY")|| ELE.getAttribute("QUANTITY") ) sQUANTITY= NewNum(sQUANTITY,ATR);     //possibly useful here??
      if(     ATR= ELE.getAttribute("_PRICE")   || ELE.getAttribute("PRICE")    ) sPRICE   = NewNum(sPRICE,ATR);
      if(     ATR= ELE.getAttribute("_NAME")                                    ) sNAME    = NewStr(sNAME,ATR); 
      else if(ATR= ELE.value                                                    ) sNAME   +=" "+ATR;                    //2008-03-18 old-style still here for new browser
      else if(ELE.type!="radio"  &&  (ATR=         ELE.getAttribute("NAME"))    ) sNAME    = NewStr(sNAME,ATR);         //beware of NAME; 2008-03-18 avoid on radio
      if(     ATR= ELE.getAttribute("_WEIGHT")  || ELE.getAttribute("WEIGHT")   ) sWEIGHT  = NewNum(sWEIGHT,ATR);
      if(     ATR= ELE.getAttribute("_LENGTH")  || ELE.getAttribute("LENGTH")   ) sLENGTH  = NewNum(sLENGTH,ATR);
      if(     ATR= ELE.getAttribute("_WIDTH")   || ELE.getAttribute("WIDTH")    ) sWIDTH   = NewNum(sWIDTH,ATR);        //beware of attribute named WIDTH
      if(     ATR= ELE.getAttribute("_HEIGHT")  || ELE.getAttribute("HEIGHT")   ) sHEIGHT  = NewNum(sHEIGHT,ATR);       //beware of attribute named HEIGHT
      if(     ATR= ELE.getAttribute("_PROMPT")  || ELE.getAttribute("PROMPT")   ) sPROMPT  += (sPROMPT?"; ":"")+ATR;
      //--note: for INPUT-TYPE=RADIO/HIDDEN the names NAME, ID, WIDTH, HEIGHT are not available, and that's why I went to _ID _NAME etc (briefly used PRODID PRODNAME)
      //but they work in SELECT-OPTION, so am leaving support for them;
      //2008-03-18: skip NAME on radio to avoid getting NAME=USERCHOICE;  also skip VALUE in new browser when _NAME present  (may need rethink??)
   }
   if(sID+sNAME=="" && sPROMPT=="") sPrompt="Please select an option";          //2008-01-21: (AddOneOfManyToCart uses sNAME=="selected")
   if(sPROMPT!="")  {alert(sPROMPT);  return false;}                            //2008-01-21: prompt, and avoid adding (null) product
   if(PrefEQ(sID,PrefDonation))  sPRICE=CKprice(sPRICE);                        //2008-02-04: validation for donation-amount (default & minimum)
   if(     ATR=thisForm._USERTEXT||thisForm.USERTEXT) {if(ATR.value)sNAME+= "; " + ATR.value;}          //2008-02-07: now directly onto sNAME  (was onto sADDTLINFO)
   else if(ATR=thisForm.USERENTRY)                    {if(ATR.value)sNAME+= "; " + ATR.value;}          //support old name

   //If this product already in the cart, then combine them instead of adding another.
   iNumberOrdered= iGetCookie("NumberOrdered",0);
   for(var i=1; i<=iNumberOrdered; ++i){
      GetRow(i);                                                //ER: get fields for row-i
      if(fields[0] == sID    &&
         fields[3] == sNAME  &&                                                 //2008-02-07 removed:  fields[8] == sADDTLINFO &&
        (fields[2] == sPRICE || PrefEQ(sID,PrefDonation))                       //2008-02-04: donations can be combined even when amount different
      ){                                                        //---already in cart, so combine;  ER: a match on all but PRICE deserves a DEBUG-alert?
         bAlreadyInCart = true;
         if(PrefEQ(sID,PrefDonation)){                          //donations are combined by summing amounts (new 2008-02-04)
            dbUpdatedOrder = sID + "|" +
               sQUANTITY + "|" +
               (Number(sPRICE)+Number(fields[2])) + "|" +
               sNAME     + "|" +
               sWEIGHT   + "|" +
               sLENGTH   + "|" +
               sWIDTH    + "|" +
               sHEIGHT;                                         //2008-02-07 removed:   + "|" +  sADDTLINFO;
         }else{                                                 //non-donations are combined by summing quantities
            dbUpdatedOrder = sID + "|" +
               (Integer(sQUANTITY)+Integer(fields[1])) + "|" +
               sPRICE    + "|" +
               sNAME     + "|" +
               sWEIGHT   + "|" +
               sLENGTH   + "|" +
               sWIDTH    + "|" +
               sHEIGHT;                                         //2008-02-07 removed:   + "|" + sADDTLINFO;
         }
         sNewOrder = "Order." + i;
         DeleteCookie(sNewOrder, "/");
         SetCookie(sNewOrder, dbUpdatedOrder, null, "/");
         notice = strAdded + "\n-------------------------------------\n" + strAddedQuantity + sQUANTITY + "\n" + strAddedProduct + sNAME;
         break;
      }
   }
   if(!bAlreadyInCart){                                         //---not in cart, so add it
      iNumberOrdered++;
      if(iNumberOrdered > 15) alert(strSorry);                  //limit nbr-rows in cart to 15;  ER: was 12  (the limit is 20 cookies for one domain)
      else {
         dbUpdatedOrder = sID + "|" +
            sQUANTITY + "|" +
            sPRICE    + "|" +
            sNAME     + "|" +
            sWEIGHT   + "|" +
            sLENGTH   + "|" +
            sWIDTH    + "|" +
            sHEIGHT;                                            //2008-02-07 removed:   + "|" + sADDTLINFO;
         sNewOrder = "Order." + iNumberOrdered;
         SetCookie(sNewOrder,       dbUpdatedOrder, null, "/");
         SetCookie("NumberOrdered", iNumberOrdered, null, "/");
         notice = strAdded + "\n-------------------------------------\n" + strAddedQuantity + sQUANTITY + "\n" + strAddedProduct + sNAME;
      	  }
   }
   if(DisplayPopupOnAdd && notice!="")  alert(notice);
   
return true;
   
}


//------------------------------------------------------------------------
// FUNCTION: moneyFormat
// PARAMETERS: Number to be formatted
// RETURNS: Formatted Number
// PURPOSE: convert float to #.## string
// ER: first I rewrote this to something I could understand, since supporting MoneyPLACES option was unthinkable otherwise;
//------------------------------------------------------------------------
function moneyFormatFRA(input) {        //for any currency that uses a fraction, example US-dollars
   var cents= "" + Math.round(input * MoneyROUND_FRA);
   while(cents.length < MoneyPLACES+1)  cents="0"+cents;
   return  cents.substring(0, cents.length-MoneyPLACES) + "." + cents.substring(cents.length-MoneyPLACES, cents.length);
   //
   ////--ER: was:
   //var dollars= Math.floor(input);
   //var tmp= new String(input);
   //for(var decimalAt=0; decimalAt < tmp.length; decimalAt++){
   //   if(tmp.charAt(decimalAt)==".") break;
   //}
   //var cents= "" + Math.round(input * 100);
   //cents= cents.substring(cents.length-2, cents.length)
   //dollars += ((tmp.charAt(decimalAt+2)=="9")&&(cents=="00"))? 1 : 0;
   //if(cents=="0") cents = "00";
   //return  dollars + "." + cents;
}
function moneyFormatNOF(input) {        //ER: for a currency that uses no fraction (and may need rounding to a multiple of 1000 etc)
   return ""+Cents(input);
}
moneyFormat = (MoneyPLACES>0 ?moneyFormatFRA :moneyFormatNOF);  //ER: init function according to whether a fraction is needed  (MoneyPLACES indicates that)

//------------------------------------------------------------------------
// FUNCTION: SetCookie
// PARAMETERS: name, value, expiration date, path, domain, security
// RETURNS: Null
// PURPOSE: Store a cookie in the users browser
//------------------------------------------------------------------------
function SetCookie (name,value,expires,path,domain,secure) {
   document.cookie = CartID + name + "=" + escape (value) +
   ((expires) ? "; expires=" + expires.toGMTString() : "") +
   ((path) ? "; path=" + path : "") +
   ((domain) ? "; domain=" + domain : "") +
   ((secure) ? "; secure" : "");
}
//------------------------------------------------------------------------
// FUNCTION: DeleteCookie
// PARAMETERS: Cookie name, path, domain
// RETURNS: null
// PURPOSE: Remove a cookie from users browser.
//------------------------------------------------------------------------
function DeleteCookie (name,path,domain) {
   if(GetCookie(name)){
      document.cookie = CartID + name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
   }
}
//------------------------------------------------------------------------
// FUNCTION: getCookieVal
// PARAMETERS: offset
// RETURNS: URL unescaped Cookie Value
// PURPOSE: Get a specific value from a cookie
//------------------------------------------------------------------------
function getCookieVal (offset) {
   var endstr = document.cookie.indexOf (";", offset);
   if(endstr == -1)  endstr= document.cookie.length;
   return unescape(document.cookie.substring(offset, endstr));
}
//------------------------------------------------------------------------
// FUNCTION: GetCookie
// PARAMETERS: Name
// PURPOSE: Retrieve cookie from users browser
// RETURNS: Value in Cookie as a string,  or null if no such cookie exists
//------------------------------------------------------------------------
function GetCookie (name) {
   var arg = CartID + name + "=";
   var alen = arg.length;
   var clen = document.cookie.length;
   var i = 0;
   while(i < clen){
      var j = i + alen;
      if(document.cookie.substring(i, j)==arg)  return(getCookieVal(j));
      i = document.cookie.indexOf(" ", i) + 1;
      if(i == 0) break;
   }
   return(null);
}
//------------------------------------------------------------------------
// FUNCTION: iGetCookie
// PARAMETERS: Name, DEF
// PURPOSE: Retrieve an INTEGER cookie from users browser
// RETURNS: Value in Cookie as an Integer,  or DEF if no such cookie exists
//------------------------------------------------------------------------
function iGetCookie (name, DEF) {  if(DEF==null)DEF=null;  //if DEF is omitted, use null as DEF
   var r= GetCookie(name);
   return (r==null ?DEF :Integer(r));
}
//------------------------------------------------------------------------
// FUNCTION: FixCookieDate
// PARAMETERS: date
// RETURNS: date
// PURPOSE: Fix cookie date, store back in date
//------------------------------------------------------------------------
//function FixCookieDate (date) {
//   var base= new Date(0);
//   var skew= base.getTime();
//   date.setTime(date.getTime() - skew);
//}
//------------------------------------------------------------------------
// FUNCTION: GetRow
// PURPOSE: read one cart-row from the cookie-database
// RETURNS: global array fields, an array containing the fields
// NOTE: in the database-format, fields are separated by "|"
// ER: made this a function to improve maintainability.
//------------------------------------------------------------------------
function GetRow(i){
   RowKey = "Order." + i;
   dbrow = "";
   dbrow = GetCookie(RowKey);
   Token0 = dbrow.indexOf("|", 0);
   Token1 = dbrow.indexOf("|", Token0+1);
   Token2 = dbrow.indexOf("|", Token1+1);
   Token3 = dbrow.indexOf("|", Token2+1);
   Token4 = dbrow.indexOf("|", Token3+1);
   Token5 = dbrow.indexOf("|", Token4+1);
   Token6 = dbrow.indexOf("|", Token5+1);
   //ken7 = dbrow.indexOf("|", Token6+1);               //scrapped 2008-02-07
   fields = [];
   fields[0] = dbrow.substring(0,        Token0);       //Product-ID
   fields[1] = dbrow.substring(Token0+1, Token1);       //Quantity
   fields[2] = dbrow.substring(Token1+1, Token2);       //Price
   fields[3] = dbrow.substring(Token2+1, Token3);       //Product-Name
   fields[4] = dbrow.substring(Token3+1, Token4);       //Weight
   fields[5] = dbrow.substring(Token4+1, Token5);       //Length;       ER: new
   fields[6] = dbrow.substring(Token5+1, Token6);       //Width;        ER: new
   fields[7] = dbrow.substring(Token6+1, dbrow.length); //Height;       ER: new;                                2008-02-07 revised Token7-->dbrow.length
   //elds[8] = dbrow.substring(Token7+1, dbrow.length); //Addtl-Info;   ER: was fields[5] in NopDesign version  2008-02-07 yanked
}
//------------------------------------------------------------------------
// FUNCTION: RemoveFromCart
// PARAMETERS: Row Number to Remove
// RETURNS: Null
// PURPOSE: Remove an item from a users shopping cart
//------------------------------------------------------------------------
//function RemoveFromCart(RemOrder) {
//   if( (DisplayPopupOnRemove ? confirm(strRemove) : true) ){    //ER: suppress the confirm when DisplayPopupOnRemove==false
//      NumberOrdered = iGetCookie("NumberOrdered",0);
//      for(var i=RemOrder; i < NumberOrdered; ++i){
//         NewOrder1 = "Order." + (i+1);
//         NewOrder2 = "Order." + (i);
//         database = GetCookie(NewOrder1);
//         SetCookie (NewOrder2, database, null, "/");
//      }
//      NewOrder = "Order." + NumberOrdered;
//      SetCookie ("NumberOrdered", (NumberOrdered>0?NumberOrdered-1:0), null, "/");
//      DeleteCookie(NewOrder, "/");
//      location.href=location.href;
//   }
// }
//------------------------------------------------------------------------
// FUNCTION: EmptyTheCart
// PURPOSE: Remove all items from a users shopping cart.
// Intended for a thanks-for-your-purchase page (that your payment-processor is instructed to return to),
// since after checkout one expects an empty cart...
//------------------------------------------------------------------------
function EmptyTheCart(){
   NumberOrdered = iGetCookie("NumberOrdered",0);
   for(var i=1; i <= NumberOrdered; ++i){
      NewOrder = "Order." + i;
      DeleteCookie(NewOrder, "/");
   }
   SetCookie("NumberOrdered", 0, null, "/");
}
//------------------------------------------------------------------------
// FUNCTION: ChangeQuantity
// PARAMETERS: Order Number to Change Quantity
// RETURNS: Null
// PURPOSE: Change quantity of an item in the shopping cart
//------------------------------------------------------------------------
//function ChangeQuantity(OrderItem,NewQuantityParm) {
//   var NewQuantity=Integer(NumberV(NewQuantityParm));           //2009-04-01: same rules as CKquantity
//   if(NewQuantity==0) {alert(strErrQty); NewQuantity=1;}        //2009-04-01: same rules as CKquantity, but with message
//   GetRow(OrderItem);           //ER: get fields for row-OrderItem
//   dbUpdatedOrder = fields[0] + "|" +
//      NewQuantity + "|" +
//      fields[2]   + "|" +
//      fields[3]   + "|" +
//      fields[4]   + "|" +
//      fields[5]   + "|" +
//      fields[6]   + "|" +
//      fields[7];                //2008-02-07 removed:  + "|" + fields[8];
//   sNewOrder = "Order." + OrderItem;
//   DeleteCookie(sNewOrder, "/");
//   SetCookie(sNewOrder, dbUpdatedOrder, null, "/");
//   location.href=location.href;
//}
//function ChangeQuantityIEkluge(e,OrderItem,NewQuantityParm) {   //2009-04-01: Eli Charne workaround for IE7 beeping on Enter
//   if(window.event && e.keyCode==13){                           //if IE and Enter-key
 //     ChangeQuantity(OrderItem, NewQuantityParm);
//      return false;
 //  }
 //  return true;
//}
////------------------------------------------------------------------------
//// FUNCTION:  RadioChecked
//// PARAMETERS:  Radio button to check
//// RETURNS:   True if a radio has been checked
//// PURPOSE:   Form validation
//// ER: NOT USED
////------------------------------------------------------------------------
//function RadioChecked( radiobutton ) {
//   var bChecked = false;
//   var rlen = radiobutton.length;
//   for(var i=0; i < rlen; ++i)  if(radiobutton[i].checked)  bChecked = true;
//   return bChecked;
//}
////------------------------------------------------------------------------
//// FUNCTION: QueryString
//// PARAMETERS: Key to read
//// RETURNS: value of key
//// PURPOSE: Read data passed in via GET mode
//// ER: NOT USED
////------------------------------------------------------------------------
//QueryString.keys = [];
//QueryString.values = [];
//function QueryString(key) {
//   var value = null;
//   for(var i=0;i<QueryString.keys.length;++i){
//      if (QueryString.keys[i]==key) {
//         value = QueryString.values[i];
//         break;
//      }
//   }
//   return value;
//}
////------------------------------------------------------------------------
//// FUNCTION: QueryString_Parse
//// PARAMETERS: (URL string)
//// PURPOSE: Parse query string data;  must be called before QueryString
//// ER: NOT USED
////------------------------------------------------------------------------
//function QueryString_Parse() {
//   var query= window.location.search.substring(1);
//   var pairs= query.split("&");  for(var i=0;i>pairs.length;++i){
//      var pos = pairs[i].indexOf("=");
//      if (pos >= 0) {
//         var argname = pairs[i].substring(0,pos);
//         var value = pairs[i].substring(pos+1);
//         QueryString.keys[QueryString.keys.length] = argname;
//         QueryString.values[QueryString.values.length] = value;
//      }
//   }
//}


//------------------------------------------------------------------------
// FUNCTION: ReadCartComputePrices
// PURPOSE:  Read all rows from the cookies
// RETURNS:  globals iNumberOrdered, and Cart an array with Cart[i] being row-i;
// NOTE THAT:
//      Cart[i].ID        replaces all subsequent uses of  fields[0];
//      Cart[i].QUANTITY  replaces all subsequent uses of  fields[1]  OR  Integer(fields[1]);
//      Cart[i].PRICEAVG  replaces all subsequent uses of  fields[2]  OR  NumberZ(fields[2]);
//      Cart[i].NAME      replaces all subsequent uses of  fields[3];
//      Cart[i].WEIGHT    replaces all subsequent uses of  fields[4]  OR  NumberZ(fields[4]);
//      Cart[i].LENGTH    replaces all subsequent uses of  fields[5]  OR  NumberZ(fields[5]);
//      Cart[i].WIDTH     replaces all subsequent uses of  fields[6]  OR  NumberZ(fields[6]);
//      Cart[i].HEIGHT    replaces all subsequent uses of  fields[7]  OR  NumberZ(fields[7]);
//      Cart[i].ADDTLINFO replaces all subsequent uses of  fields[8]  <-- scrapped 2008-02-07
//      Cart[i].PRICE     is the entire string from Form.PRICE; but should never be needed outside of this routine;
// Form.PRICE now consists of comma-separated terms such as:
//      3.95                      -- means 3.95 each
//      3.95,2:3.00               -- means 3.95 for the first, 2nd and subsequent are 3.00 each;
//      3.95,10=2.99              -- means 3.95 each, or exactly 10 for 29.90;
//      3.95,10=2.99,10:2.99      -- means 3.95 each, 10 or more are 2.99 each;
//      3.95,2:3.00,4:2.75,8:2.50 -- means 2nd...are 3.00, 4th...are 2.75, 8th and subsequent are 2.50;
//      3.95,2:-30,GRP01          -- means 2nd and subsequent are 30% off, and this applies across all products in the group GRP01;
//      can have any number of ":" or "=" terms, at most one starting with a letter to name a group;
//      ":" and "=" terms may be interspersed, or not, but the ":" terms must appear in increasing order by left-side, and "=" terms likewise;
//      RESTRICTION: exact-quantity ("=") pricing is only permitted within a group where all products have identical prices;
//      anything else would be so bloody hard to explain, it's hard to see anyone wanting it;
// ER: All-at-once reading is essential for a reasonably efficient implementation of Quantity-Discount Pricing,
//      since several passes are needed to compute prices, and those are needed before the pass that displays & does payment-processing;
//      (more than one preliminary pass is needed to support Product-Groups);
// ER: also moved the Shipping & Tax calculation code here, from ManageCart/CheckoutCart, setting globals: fTotal, fShipping, fTax, ZoneSelected, RegionSelected,
//      to further reduce duplication thus lessening the tedium & error-proneness of making modifications.
// Q: To get deterministic n-or-more pricing, independent of the order items added to cart, could sort by price within group?
// 2007-12-04: now applying Cents-rounding to PRICEAVG on the assumption that payment-processors can't handle more fractional digits than is the currency norm;
// 2008-02-03: now applying Cents-rounding to PRICEAVG earlier (here) so that amounts shown by ViewCart will agree with what PayPal etc will be displaying;
//------------------------------------------------------------------------
function ReadCartComputePrices(){
   var Dig="0123456789", Lwr="abcdefghijklmnopqrstuvwxyz", Upr="ABCDEFGHIJKLMNOPQRSTUVWXYZ", Let=Lwr+Upr;       //constants for Is-testing
   function Is(c,pat) {return pat.indexOf(c)!=-1;}
   var i, k;
   var KK=-1;                                   //row-nbr for Coupon-discount
   var C, G, D, X, K;                           //results from the Pparse routine
   function Pparse(priceparm){                  //the Pparse PRICE-parsing routine
      C=0; G=""; D=[]; X=[]; K=null;
      if(priceparm.substring(0,2)==">="){       //a coupon (2008-03-06)
         var x=priceparm.substring(2).split(":"), y=x[1].indexOf("%"); if(y==-1)y=x[1].length;
         K= {min:NumberZ(x[0]), amt:NumberZ(x[1].substring(0,y)), pct:x[1].substring(y)};
         //alert("min:"+K.min+"; amt:"+K.amt+"; pct:"+K.pct+";");
      }else for(var price=priceparm.split(","), J=0; J<price.length; ++J){
         var T=price[J];
         if(     T.indexOf("=")!=-1)            {var x=T.split("="); X.push( {q:Integer(x[0]), p:NumberZ(x[1])} );}
         else if(T.indexOf(":")!=-1)            {var x=T.split(":"); D.push( {q:Integer(x[0]), p:NumberZ(x[1])} );}
         else if(Is(T.substring(0,1),Let))      G=T;
         else                                   C=NumberZ(T);
      }
   }
   //====read all rows from the cookies====
   Cart = [];                                           //init global Cart array
   iNumberOrdered=iGetCookie("NumberOrdered",0);        //get the nbr-rows-in-cart cookie
   for(i=1; i<=iNumberOrdered; ++i){
      GetRow(i);                                        //get fields for row-i
      Pparse(fields[2]);                                //parse the PRICE string
      Cart[i]= {
         ID:               fields[0], 
         QUANTITY: Integer(fields[1]), 
         PRICE:            fields[2], 
         NAME:             fields[3], 
         WEIGHT:   NumberZ(fields[4]), 
         LENGTH:   NumberZ(fields[5]), 
         WIDTH:    NumberZ(fields[6]), 
         HEIGHT:   NumberZ(fields[7]), 
         //DTLINFO:        fields[8],                   //2008-02-07 scrapped ADDTLINFO aka fields[8]
         C:C, G:G, D:D, X:X, K:K, PRICEAVG:null         //the parsed-price fields; consider using ID as G if no group specified(?)
      }
   }
   //====compute prices====
   for(i=1; i<=iNumberOrdered; ++i){
      if(Cart[i].PRICEAVG!=null) continue;                                      //skip if row already done (due to groups)
      C=Cart[i].C;  G=Cart[i].G;  D=Cart[i].D;  X=Cart[i].X;  K=Cart[i].K;      //info from Pparse
      function eEQ(A,B) {return A.q==B.q && A.p==B.p;}                                                                                  //compare q-p elements
      function aEQ(A,B) {if(A.length!=B.length)return false; for(var k=A.length;k--;)if(!eEQ(A[k],B[k]))return false; return true;}     //compare array of q-p elements
      function pEQ(A,B) {return A.C==B.C && aEQ(A.D,B.D) && aEQ(A.X,B.X);}                                                              //compare parsed prices
      function str(X) {var s="["; for(var i=0;i<X.length;++i)s+="{"+X[i].q+","+X[i].p+"},"; s+="]"; return s;}  //convert X or D to string
      function pp(P)  {return (P>=0 ?P :C*(100+P)/100);}                                                        //convert negative price to a percent-off-wrt-C price
      var q=Cart[i].QUANTITY;                                                                           //q is qty of this product
      var Q=q;   if(G!="")for(Q=0, k=1; k<=iNumberOrdered; ++k) if(Cart[k].G==G) Q+= Cart[k].QUANTITY;  //Q is qty across all products in this group
      var g=[i]; if(G!="")for(g=[],k=1; k<=iNumberOrdered; ++k) if(Cart[k].G==G) g.push(k);             //g is array of indices for rows in this group
      var ix=-1; for(k=X.length; k--;) if(X[k].q<=Q) {ix=k; break;}             //find the biggest applicable exact-qty ("=") discount;  requires ordered terms
      var id=-1; for(k=D.length; k--;) if(D[k].q<=Q) {id=k; break;}             //find the biggest applicable n-or-more (":") discount;  requires ordered terms
      DEBUG4("row:"+i+" itm:"+Cart[i].ID+" PRICE:"+Cart[i].PRICE+" C:"+C+" G:"+G+" X:"+str(X)+" D:"+str(D)+" g:"+g+" ix:"+ix+" id:"+id);
      if(X.length>0){
       //var m=[];for(k=g.length;k--;)if(Cart[g[k]].PRICE!=Cart[i].PRICE)m.push(g[k]);  //sanity-check prices across group, using simple string-comparisons
         var m=[];for(k=g.length;k--;)if(!pEQ(Cart[g[k]], Cart[i]))m.push(g[k]);        //sanity-check prices across group, comparing C,D,X to permit minor differences
         if(m.length>0) DEBUG("group:"+G+" has exact-qty discount but PRICE on row:"+i+" conflicts with rows:"+m);      //issue DEBUG alert
         if(m.length>0) {for(k=g.length; k--;) Cart[g[k]].PRICEAVG=C;  continue;}       //suppress further such DEBUG alerts for the other rows in group
      }
      var A, QQ, q2, I;
      if(K){                                                                    //---a Coupon-Discount, will be applied later (2008-03-06)---
         Cart[i].QUANTITY=1;                                                    //override quantity, forcing it to be one
         Cart[i].PRICEAVG=0;                                                    //set price-apiece to zero, until we find out if qualifications are met
         KK=i;
      }else if(ix!=-1){                                                         //---apply an exact-quantity discount, or both kinds, to all rows in group---
         A=0;  QQ=Q;
         while(Q!=0){                                                           //until all items in group are priced or no more applicable exact-discounts
            q2= Math.floor(Q / X[ix].q) * X[ix].q;                              //*q2 is the largest multiple of X[ix].q that's less-than-or-equal-to Q*///*//
            A += q2*pp(X[ix].p);  Q-=q2;                                        //*sell q2 at price X[ix].p, revising Q to reflect remaining qty*//
            DEBUG4("sell "+q2+" at:"+pp(X[ix].p)+" Q:"+Q);
            --ix; while(ix>=0 && X[ix].q>Q) --ix;                               //*revise ix for the next applicable exact-discount, if any*//
            if(ix==-1)break                                                     //leave loop if none
            if(id!=-1 && pp(D[id].p)<pp(X[ix].p))break;                         //2008-03-01 leave if the n-or-more price beats next applicable exact-discount price
         }
         if(Q>0) A += Q * (id!=-1 ? pp(D[id].p) :C);                            //price the rest using the applicable n-or-more-price, or C if none*///**////*
         var priceavg= Cents(A/QQ);                                             //*2008-02-03: was Cents(A) / QQ*//*//*/
         for(k=g.length; k--;)  {I=g[k];  Cart[I].PRICEAVG = priceavg;}         //each row in group gets the same price apiece

      }else if(id!=-1){                                                         //---apply an n-or-more discount, to all rows in group---
         var ID, QD=0;                                                          //QD is the count of items already priced
         for(k=0; k<g.length; ++k){  I=g[k];                                    //for each row I in group do
            A=0; q=Cart[I].QUANTITY; C=Cart[I].C;  D=Cart[I].D;
            if(D.length==0 || D[0].q!=1)  D.unshift( {q:1, p:C} );              ///augment D to include a price for the first one(s), to simplify search-loops, etc
            while(q>0){
               for(ID=0;;++ID) if(ID+1==D.length||QD+1<D[ID+1].q)break;         //now D[ID].p is the price for the QD+1'th (next) item
               q2=q;  if(ID+1<D.length) q2=Math.min(q, D[ID+1].q-1-QD);         //q2 is nbr of items to sell at price D[ID].p
               A+= q2*pp(D[ID].p);  QD+=q2;  q-=q2;                             //sell q2 items at D[ID].p, revising QD & q
               DEBUG4("sell "+q2+" at:"+pp(D[ID].p)+" ID:"+ID+" QD:"+QD);
               if(q2<=0) {DEBUG("ReadCartComputePrices is broken"); break;}
            }
            Cart[I].PRICEAVG = Cents(A / Cart[I].QUANTITY);                     ////*price apiece;  2008-02-03: was Cents(A) / Cart[I].QUANTITY*///
         }
      }else{                                                                    //---apply constant price to one row---
         Cart[i].PRICEAVG = Cents(C);                                           //price apiece;  2008-02-03: was C
      }
   }
   if(KK!=-1){                                                                  //---now apply a Coupon-Discount, if any (2008-03-06)---
      for(fTotal=0, i=1; i<=iNumberOrdered; ++i) fTotal+=Cart[i].QUANTITY*Cart[i].PRICEAVG;             //need the pre-tax pre-shipping subtotal, to see if applicable
      K=Cart[KK].K;
      if(fTotal>=K.min) Cart[KK].PRICEAVG= (K.pct ?fTotal*K.amt/100 : -Math.min(-K.amt,fTotal));        //*if applicable, compute the (negative) amount of discount*//
      AllInOne=true;                                                                                    //2008-03-09 because Paypal cant handle negative price (Google?)
   }
   //====total, shipping, tax calculations====
   ZoneSelected=  iGetCookie("ZoneSelected");   ZoneChecked=ZoneSelected;                               //get zone cookie
   RegionSelected=iGetCookie("RegionSelected"); RegionChecked=RegionSelected;                           //ER: get region cookie
   if(ZoneSelected==null) ZoneSelected=ZoneDefault;                                                             //use zone-default if none selected;  ER: default was 8
   if(RegionFromZone.length && RegionSelected==null)       RegionSelected=RegionFromZone[ZoneSelected][0];      //ER: use RegionFromZone option to set RegionSelected
   if(RegionFromZoneOverrides)                             RegionSelected=RegionFromZone[ZoneSelected][0];
   if(ZoneChecked!=null && RegionFromZoneOvA[ZoneChecked]) RegionSelected=RegionFromZone[ZoneChecked] [0];
   if(RegionSelected==null)                                RegionSelected=RegionDefault;                //ER: use region-default, when RegionFromZone not being used
   if(RegionFromZone.length && !Element(RegionSelected,RegionFromZone[ZoneSelected])){                  //ER: validity-check, the Zone+Region combination is invalid:
      if(ZoneChecked!=null || RegionChecked==null){                                                     //ER: if user has picked Zone or neither, then revise Region
         RegionSelected=RegionFromZone[ZoneSelected][0];                                                //ER: revise RegionSelected to make it legal for Zone
      }else{                                                                                            //ER: otherwise, revise Zone to achieve consistency
         for(var Z=RegionFromZone.length;Z--;) if(Element(RegionSelected, RegionFromZone[Z])) break;    //ER: find a valid Zone Z
         if(Z>=0) ZoneSelected=Z;  else DEBUG("RegionFromZone option is invalid");                      //ER: revise ZoneSelected to make it legal for Region
      }
   }
   if(RegionChecked!=null) RegionChecked= RegionSelected;                                               //ER: validity-check RegionChecked
   if(ZoneChecked  !=null) ZoneChecked  = ZoneSelected;                                                 //ER: validity-check ZoneChecked
   if(RegionsUsed && RegionPrompt!="" && !RegionFromZoneOverrides && !(ZoneChecked!=null && RegionFromZoneOvA[ZoneChecked])
   ) {}                                                                                                 //ER: leave Region unchecked if user will have to pick
   else RegionChecked=RegionSelected;                                                                   //ER: show as checked a Region that suffices
   if(ShipTable.length>1 && ZonePrompt!="" && !(RegionChecked!=null && ZoneFromRegionOvA[RegionChecked])
   ) {}                                                                                                 //ER: leave Zone unchecked if user will have to pick
   else ZoneChecked=ZoneSelected;                                                                       //ER: show as checked a Zone that suffices
   //--ER: original version of above was ok for customer selecting Zone first, but would seriously harrass customer trying to select Region before Zone;
   // have fixed:  (2) revised validity-checking above;  and reordered, so setting Checked by PromptNotNeeded is done last, and for Zone after Region;
   // have fixed:  (3) NewZone routine now deletes Region-cookie if illegal;  NewRegion now deletes Zone-cookie if illegal;  (1) was to revise such cookie;
   //                  can continue to regard the presence of a Zone or Region cookie as proof the user has selected (and it hasn't been altered since);
   InitPkgQueue();                                                                      //ER: initialize the PkgQueue object (used to compute package-size)
   fTotal=0; fTaxA=[]; for(R=0;R<RegionTable.length;++R)fTaxA[R]=0; g_TotalQty=0;       //initialize subtotal and tax-subtotals
   var taxnbrs=TaxesByRegion[RegionSelected] || [];                                     //lookup which taxes apply based on RegionSelected
   var taxrate=[]; for(T=0;T<TaxRates.length;++T)taxrate[T]=0;
   for(N=0;N<taxnbrs.length;++N)taxrate[taxnbrs[N]]=TaxRates[taxnbrs[N]];               //ER: init taxrates based on RegionSelected
   for(i=1; i<=iNumberOrdered; ++i){
      //ER: considered using TaxableTotal etc, so as to multiply just once;  not essential, provided the rounding-to-cents is deferred  (tho for tax-included it isn't)
      var ProdID=Cart[i].ID, QP=Cart[i].QUANTITY*Cart[i].PRICEAVG, taxX=null; tax=[], taxsum=0;
      for(pref in TaxesByID) if(typeof TaxesByID[pref]!=="function") if(PrefEQ(ProdID,pref)) {taxX=TaxesByID[pref]; break;}     //is product subject to a tax-exception?
      if(taxX) {for(T=0;T<TaxRates.length;++T)tax[T]=0; for(K=taxX.length;K--;) {T=taxX[K]; tax[T]=QP*taxrate[T];}}             //if so, only taxes in taxX apply
      else     {for(T=0;T<TaxRates.length;++T)tax[T]=QP*taxrate[T];}                                                            //otherwise all taxes apply
      if(DisplayTaxIncluded){                                                           //ER: for tax-included pricing:
         for(T=0;T<TaxRates.length;++T) {tax[T]=Cents(tax[T]); taxsum+=tax[T];}         //each tax is rounded to cents for each row, and
         Cart[i].PRICEAVG += taxsum / Cart[i].QUANTITY;                                 //the price-apiece is adjusted to include taxes
      }
      AddPkgQueueEntry(Cart[i].QUANTITY, new Size(Cart[i].LENGTH,Cart[i].WIDTH,Cart[i].HEIGHT), Cart[i].WEIGHT);        //ER: accumulate for package-size
      fTotal+=Cart[i].QUANTITY*Cart[i].PRICEAVG;                                        //accumulate fTotal, the subtotal before (tax)+shipping...
      for(T=0;T<TaxRates.length;++T) fTaxA[T]+=tax[T];                                  //accumulate tax-subtotals
      g_TotalQty+=Cart[i].QUANTITY;                                                     //accumulate total-quantity
   }
   ComputePackageSize(ZoneSelected);                                                    //ER: compute package-size
   fShipping = ComputeShipping(ZoneSelected);                                           //ER: removed if-else since function handles weight being zero
   ppTotal=fTotal; ppShipping=fShipping; if(ppTotal==0) {ppTotal=moneyEps; ppShipping=Math.max(ppShipping-moneyEps,0);} //2008-02-09 kludge because PayPal chokes on zero
   if(ShipTaxAsItems && !DisplayTaxIncluded){                                           //2009-03-28: shipping taxed at same rate as items, shown in fTax (eg: NY-state)
      for(T=0;T<TaxRates.length;++T) fTaxA[T]+= fTaxA[T]/ppTotal * fShipping;           //*2009-03-28: rate same as on items, shown in fTax*//
   }
   for(T=0;T<TaxRates.length;++T) fTaxA[T]=Cents(fTaxA[T]);                             //ER: round to Cents separately
   fTax=0; if(!DisplayTaxIncluded) for(T=0;T<TaxRates.length;++T) fTax+=fTaxA[T];       //ER: fTax is sum of taxes, however with tax-included pricing use zero
   g_TotalCost = fTotal + fShipping + fTax;                                             //compute grand-total  ==Rename needed: fTotal->fSubTot, g_TotalCost->fTotal==
}
//------------------------------------------------------------------------
// FUNCTION: AddPaymentProcessorFieldsForOneRow
// RECEIVES: PP is the payment-processor-code;
//           i is the row-nbr, Cart[i] is the info about that row
// RETURNS: appends to global string vars  sOutPP and sDescAIO
// ER: made this a function to improve maintainability.
//------------------------------------------------------------------------
function AddPaymentProcessorFieldsForOneRow(PP, i){
   //if(Cart[i].QUANTITY<=0) return;                                                    //2009-04-01: Eli Charne: skip qty:zero;  ER: fixed ChangeQuantity instead
   var sN="";     if(AppendItemNumToOutput) sN=""+i;                                    //ER: convert i to string once
   var SEP="\n";  if(PP=="ap"||PP=="pp") SEP="; ";                                      //2008-10-15 separator between items in the All-in-one-Description
   var ProdNAME = Cart[i].NAME;                                                         //2008-02-07 removed: +(Cart[i].ADDTLINFO ?"; "+Cart[i].ADDTLINFO :"")
   var Notes="";
   if(i==iNumberOrdered && NotesOnItem){                                                //2008-02-04 Notes onto last item;  2008-10-15 for any PP, was pp-only
      Notes+= SEP;
      Notes+= (ShipTable[ZoneSelected].zone?strSHIP+" "+ShipTable[ZoneSelected].zone:"");       //show selected-Zone
      Notes+= (sComputeShippingNote?" ":"")+sComputeShippingNote;                               //show notes about multiple-packages etc
      Notes+= (RegionsUsed?", "+RegionTable[RegionSelected]:"");                                //2008-10-15 also show selected-Region
   }
   if(PP=="an"||PP=="wp"||PP=="lp"||PP=="ap"||PP=="vt")  AllInOne=true;                 //an/wp/lp/ap/vt are always all-in-one
   if(PP=="gc"||PP=="is")                                AllInOne=false;                //gc/is together with AllInOne not supported
   if(AllInOne){                                                                        //===an/wp/lp/ap/vt/pp+AllInOne===
      sDescAIO+= Cart[i].ID + ", " + ProdNAME + ", Qty:"+Cart[i].QUANTITY + Notes + (i<iNumberOrdered?SEP:"");  //format Description as: ID, NAME, Qty:QUANTITY<sep>  (an/wp/lp used to get an ending SEP)
   }
   ProdNAME+=Notes;
   if(PP=="pp" && (!AllInOne || i==iNumberOrdered)){                                    //===PayPal-cart-based OR PayPal-all-in-one AND last-item===
      var ppNAME= (AllInOne ?sDescAIO :ProdNAME);
      var ppNAME1=ppNAME.substring(0,127);                                              //ER: break into 3 strings according to PayPal limits
      var ppNAME2=ppNAME.substring(127,327);                                            //ER: break into 3 strings according to PayPal limits
      var ppNAME3=ppNAME.substring(327,527);                                            //ER: break into 3 strings according to PayPal limits
      var ppID=Cart[i].ID, ppPRICE=Cart[i].PRICEAVG, ppQUANTITY=Cart[i].QUANTITY;
      if(AllInOne) {ppID="AIO"; ppPRICE=ppTotal; ppQUANTITY=1;}                         //2008-03-09 for PayPal-all-in-one, supply the subtotal as the price
      if(AllInOne && AppendItemNumToOutput) sN=""+1;                                    //2008-03-09 for PayPal-all-in-one, use one as the row-number
      sOutPP+=             "<input type=hidden name=\"item_number_"+sN+"\" value=\""+             ppID              + "\">";
      sOutPP+=             "<input type=hidden name=\"item_name_"  +sN+"\" value=\""+             ppNAME1           + "\">";
      sOutPP+=             "<input type=hidden name=\"amount_"     +sN+"\" value=\""+ moneyFormat(ppPRICE)          + "\">";
      sOutPP+=             "<input type=hidden name=\"quantity_"   +sN+"\" value=\""+             ppQUANTITY        + "\">";
      if(ppNAME2) sOutPP+= "<input type=hidden name=\"on0_"        +sN+"\" value=\""+             "Info2"           + "\">";
      if(ppNAME2) sOutPP+= "<input type=hidden name=\"os0_"        +sN+"\" value=\""+             ppNAME2           + "\">";
      if(ppNAME3) sOutPP+= "<input type=hidden name=\"on1_"        +sN+"\" value=\""+             "Info3"           + "\">";
      if(ppNAME3) sOutPP+= "<input type=hidden name=\"os1_"        +sN+"\" value=\""+             ppNAME3           + "\">";
   }else if(PP=="gc"){                                                                  //===Google-Checkout-cart-based===
      sOutPP+= "<input type=hidden name=\"item_name_"              +sN+"\" value=\""+             Cart[i].ID        + "\">";
      sOutPP+= "<input type=hidden name=\"item_description_"       +sN+"\" value=\""+             ProdNAME          + "\">";
      sOutPP+= "<input type=hidden name=\"item_price_"             +sN+"\" value=\""+ moneyFormat(Cart[i].PRICEAVG) + "\">";
      sOutPP+= "<input type=hidden name=\"item_quantity_"          +sN+"\" value=\""+             Cart[i].QUANTITY  + "\">";
      sOutPP+= "<input type=hidden name=\"item_currency_"          +sN+"\" value=\""+             gcCurrency        + "\">";
   }else if(PP=="is"){                                                                  //===InternetSecure-cart-based===
      if(i==1) sOutPP+= "<input type=hidden name=\"Products\" value=\"Price::Qty::Code::Description::Flags";     //first item is preceded by "Defining"-record
      sOutPP+="|"+moneyFormat(Cart[i].PRICEAVG)+"::"+Cart[i].QUANTITY+"::"+Cart[i].ID+"::"+ProdNAME+"::"+isFlags;//see https://www.internetsecure.com/merchants/ShowPage.asp?page=APSM&q=1
   }else if(PP=="cgi"){                                                                 //===CUSTOM-cgi-payment-processor===  was if(HiddenFieldsToCheckout)
      sOutPP+= "<input type=hidden name=\"" + OutputItemId         +sN+"\" value=\""+             Cart[i].ID        + "\">";
      sOutPP+= "<input type=hidden name=\"" + OutputItemQuantity   +sN+"\" value=\""+             Cart[i].QUANTITY  + "\">";
      sOutPP+= "<input type=hidden name=\"" + OutputItemPrice      +sN+"\" value=\""+ moneyFormat(Cart[i].PRICEAVG) + "\">";
      sOutPP+= "<input type=hidden name=\"" + OutputItemName       +sN+"\" value=\""+             Cart[i].NAME      + "\">";
      sOutPP+= "<input type=hidden name=\"" + OutputItemWeight     +sN+"\" value=\""+             Cart[i].WEIGHT    + "\">";
      sOutPP+= "<input type=hidden name=\"" + OutputItemLength     +sN+"\" value=\""+             Cart[i].LENGTH    + "\">";
      sOutPP+= "<input type=hidden name=\"" + OutputItemWidth      +sN+"\" value=\""+             Cart[i].WIDTH     + "\">";
      sOutPP+= "<input type=hidden name=\"" + OutputItemHeight     +sN+"\" value=\""+             Cart[i].HEIGHT    + "\">";
      //utPP+= "<input type=hidden name=\"" + OutputItemAddtlInfo  +sN+"\" value=\""+             Cart[i].ADDTLINFO + "\">";    //yanked 2008-02-07
   }
}
//------------------------------------------------------------------------
// FUNCTION: AddPaymentProcessorFieldsFinal
// RECEIVES: PP is the payment-processor-code;  global var sDescAIO is the all-in-one-description
// RETURNS: appends to global string var  sOutPP
// ER: made this a function to improve maintainability.
//------------------------------------------------------------------------
function AddPaymentProcessorFieldsFinal(PP){
   if(PP=="an"){                                        //===an:Authorize.net WebConnect===
      sOutPP += "<input type=hidden name=\"x_version\"       value=\"3.1\">";                   //2009-04-18: 3.0-->3.1
      sOutPP += "<input type=hidden name=\"x_show_form\"     value=\"PAYMENT_FORM\">";
      sOutPP += "<input type=hidden name=\"x_description\"   value=\""+ sDescAIO + "\">";
      sOutPP += "<input type=hidden name=\"x_amount\"        value=\""+ moneyFormat(fTotal + fShipping + fTax) + "\">";
   }else if(PP=="wp"){                                  //===wp:WorldPay===
      sOutPP += "<input type=hidden name=\"desc\"            value=\""+ sDescAIO + "\">";
      sOutPP += "<input type=hidden name=\"amount\"          value=\""+ moneyFormat(fTotal + fShipping + fTax) + "\">";
   }else if(PP=="lp"){                                  //===lp:LinkPoint===
      sOutPP += "<input type=hidden name=\"mode\"            value=\"fullpay\">";
      sOutPP += "<input type=hidden name=\"chargetotal\"     value=\""+ moneyFormat(fTotal + fShipping + fTax) + "\">";
      sOutPP += "<input type=hidden name=\"tax\"             value=\""+ MoneySymbol + moneyFormat(fTax) + "\">";
      sOutPP += "<input type=hidden name=\"subtotal\"        value=\""+ MoneySymbol + moneyFormat(fTotal) + "\">";
      sOutPP += "<input type=hidden name=\"shipping\"        value=\""+ MoneySymbol + moneyFormat(fShipping) + "\">";
      sOutPP += "<input type=hidden name=\"desc\"            value=\""+ sDescAIO + "\">";
   }else if(PP=="vt"){                                  //===vt:VirtualTerminalNetwork===
      sOutPP += "<input type=hidden name=\"item_name\"       value=\""+ sDescAIO + "\">";
      sOutPP += "<input type=hidden name=\"amount\"          value=\""+ moneyFormat(fTotal + fShipping + fTax) + "\">";
   }else if(PP=="ap"){                                  //===ap:AlertPay (2008-10-15)===
      sOutPP += "<input type=hidden name=\"ap_purchasetype\"    value=\""+ "item"   + "\">";
      sOutPP += "<input type=hidden name=\"ap_itemname\"        value=\""+ "cart"   + "\">";
      sOutPP += "<input type=hidden name=\"ap_description\"     value=\""+ sDescAIO + "\">";
      sOutPP += "<input type=hidden name=\"ap_quantity\"        value=\""+ "1"      + "\">";
      sOutPP += "<input type=hidden name=\"ap_amount\"          value=\""+ moneyFormat(fTotal)    + "\">";
      sOutPP += "<input type=hidden name=\"ap_shippingcharges\" value=\""+ moneyFormat(fShipping) + "\">";
      sOutPP += "<input type=hidden name=\"ap_taxamount\"       value=\""+ moneyFormat(fTax)      + "\">";
      sOutPP += "<input type=hidden name=\"ap_totalamount\"     value=\""+ moneyFormat(fTotal + fShipping + fTax) + "\">";
        //field apc_1..apc_6  each limited to 100-chars
        //field ap_description -- no info available on max-length => need to test a long value...
        //field ap_discountamount - may be useful to get around negative-amount kluges?
        //NOTE: fields ap_currency, ap_merchant must be supplied in the view-cart page
   }else if(PP=="pp"){                                  //===pp:PayPal (cart-based OR all-in-one)===
      //var ShpTaxNotes="Shipping+Tax-Notes: "+ShipTable[ZoneSelected].zone+" "+sComputeShippingNote+(RegionsUsed?" "+RegionTable[RegionSelected]:"");  //==OBSOLETE
      sOutPP += "<input type=hidden name=\"cmd\"             value=\"_cart\">";                         //2008-02-05: new
      sOutPP += "<input type=hidden name=\"upload\"          value=\"1\">";                             //2008-02-05: new
      //utPP += "<input type=hidden name=\"custom\"          value=\""+ ShpTaxNotes             +"\">"; //shipping+tax-notes via "custom" don't show on emails ==OBSOLETE
      sOutPP += "<input type=hidden name=\"tax_cart\"        value=\""+ moneyFormat(fTax)       +"\">";
      sOutPP += "<input type=hidden name=\"handling_cart\"   value=\""+ moneyFormat(fShipping) +"\">"; //2008-02-09 ppShipping for the zero-subtotal kludge
      sOutPP += "<input type=hidden name=\"no_note\"         value=\""+ "1"                     +"\">"; //use NO_NOTE until PayPal fixes NOTE/SpecialInstructions-support
   }else if(PP=="gc"){                                  //===gc:GoogleCheckout===
      if(fTax!=0){                                                              //Google forces us to supply TAX as an item...
        var sN=""+(iNumberOrdered+1);                                           //get next row-number
        sOutPP+="<input type=hidden name=\"item_name_"       +sN+"\" value=\""+ "TAX"                                                           + "\">";
        sOutPP+="<input type=hidden name=\"item_description_"+sN+"\" value=\""+ "Tax"+(RegionsUsed?" for "+RegionTable[RegionSelected]:"")      + "\">";
        sOutPP+="<input type=hidden name=\"item_price_"      +sN+"\" value=\""+ moneyFormat(fTax)                                               + "\">";
        sOutPP+="<input type=hidden name=\"item_quantity_"   +sN+"\" value=\""+ "1"                                                             + "\">";
        sOutPP+="<input type=hidden name=\"item_currency_"   +sN+"\" value=\""+ gcCurrency                                                      + "\">";
      }
      sOutPP += "<input type=hidden name=\"ship_method_price_1\"     value=\""+ moneyFormat(fShipping)                                          + "\">";
      sOutPP += "<input type=hidden name=\"ship_method_currency_1\"  value=\""+ gcCurrency                                                      + "\">";
      sOutPP += "<input type=hidden name=\"ship_method_name_1\"      value=\""+ ShipTable[ZoneSelected].zone+" "+sComputeShippingNote           + "\">";
      sOutPP += "<input type=hidden name=\"_charset_\"/>";                      //Google says this is required, though no alternatives(?)
   }else if(PP=="is" && iNumberOrdered){                //===InternetSecure===
      sOutPP+=  "|"+moneyFormat(fShipping)+"::1::SHIP::"+ShipTable[ZoneSelected].zone+" "+sComputeShippingNote+  "::"+isFlags;  //Shipping as item
      sOutPP+=  "|"+moneyFormat(fTax)+"::1::TAX::Tax"+(RegionsUsed?" for "+RegionTable[RegionSelected]:"")+      "::"+isFlags;  //Tax as item
      sOutPP+=  "\">";
   }else if(PP=="cgi"){                                 //===cgi:CUSTOM===      //was if(HiddenFieldsToCheckout)
      iDealTotal = parseInt( ( fTotal + fShipping + fTax) * 100 );        //should get rid of decimals and produce amount in cents as required by iDEAL
	  sOutPP += "<input type=hidden name=\""+OutputOrderSubtotal+"\" value=\""+ MoneySymbol + moneyFormat(fTotal)                               + "\">";
      sOutPP += "<input type=hidden name=\""+OutputOrderTax     +"\" value=\""+ MoneySymbol + moneyFormat(fTax)                                 + "\">";
	  sOutPP += "<input type=hidden name=\""+OutputOrderShipping+"\" value=\""+ MoneySymbol + moneyFormat(fShipping)                            + "\">";
      sOutPP += "<input type=hidden name=\""+OutputOrderTotal   +"\" value=\""+ MoneySymbol + moneyFormat(fTotal + fShipping + fTax)            + "\">";
      sOutPP += "<input type=hidden name=\""+OutputOrderIdeal   +"\" value=\""+ iDealTotal                                                      + "\">";  //for iDEAL
	  sOutPP += "<input type=hidden name=\""+OutputOrderZone    +"\" value=\""+ ShipTable[ZoneSelected].zone+" "+sComputeShippingNote           + "\">";
      sOutPP += "<input type=hidden name=\""+OutputOrderRegion  +"\" value=\""+ (RegionsUsed?RegionTable[RegionSelected]:"")                    + "\">";  //ER: new
   }
   DEBUG8(sOutPP);                                      //2008-03-09 separate sOutput and sOutPP makes for nicer debugging
}
//------------------------------------------------------------------------
// FUNCTION: AddTaxSubtotalLines
// RECEIVES: INC string - is either empty-string or strINCLUDEDINTOTAL
// RETURNS: appends to global var sOutput
// ER: made this a function to improve maintainability;
// 2009-03-25: stop showing Region-name;  +(RegionsUsed?RegionTable[RegionSelected]:"")+END  --> +END
//------------------------------------------------------------------------
function AddTaxSubtotalLines(INC,COL,BEG,END){  if(COL==null)COL=7;  if(BEG==null)BEG="<B>";  if(END==null)END="</B>";
   if(TaxNames.length>=2){
      for(T=0;T<TaxRates.length;++T) if(fTaxA[T]) sOutput += 
         "<TR><TD CLASS=\"noptotal\" COLSPAN="+COL+">"+BEG+strTAX+"-"+TaxNames[T]+INC+"&nbsp; "+END+"</TD>" +
         "<TD CLASS=\"noptotal\" ALIGN=RIGHT>"+BEG + MoneySymbol + moneyFormat(fTaxA[T]) +END+"</TD></TR>";
   }else{
      var fTaxAsum=0;  for(T=0;T<TaxRates.length;++T) fTaxAsum+=fTaxA[T];
      if(fTaxAsum) sOutput += 
         "<TR><TD CLASS=\"noptotal\" COLSPAN="+COL+">"+BEG+strTAX+INC+"&nbsp; "+END+"</TD>" +
         "<TD CLASS=\"noptotal\" ALIGN=RIGHT>"+BEG + MoneySymbol + moneyFormat(fTaxAsum) +END+"</TD></TR>";
   }
}


//------------------------------------------------------------------------
// FUNCTION: ManageCart
// PARAMETERS: Null
// PURPOSE: Draw current cart product table on HTML page
//------------------------------------------------------------------------
function ManageCart(PP) {  if(PP==null)PP=PaymentProcessor;                             //2009-04-01: also support old method with PaymentProcessor as global option
   //ER: replaced  fWeight-->PkgAsOne.weight;  sTotal-->moneyFormat(fTotal);  sTax-->moneyFormat(fTax);  sShipping-->moneyFormat(fShipping);
   //ER: iNumberOrdered, ZoneSelected, ZoneChecked, RegionSelected, RegionChecked  are now global vars set by ReadCartComputePrices routine;
   //ER: fTotal, fShipping, fTax, fTaxA, g_TotalCost                               are now global vars set by ReadCartComputePrices routine;
   //
   var MoreState=iGetCookie("MoreState"); if(MoreState==null) MoreState= (DisplayWtColumn?1:0)*2 + (DisplaySzColumn?1:0);       //ER: MoreState, for DynamicWtSzColumns
   ReadCartComputePrices();     //ER: new
   sDescAIO="";                 //initialize the All-in-one-Description for cart-less payment-processors
   sOutPP="";
   sOutput = "<TABLE CELLSPACING=0 CELLPADDING=2 BORDER=0 CLASS=\"nopcart\"><TR>" +
      "<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+(DisplayImgColumn?strTLabel:"")+"</B></TD>"+   //2009-03-21
      "<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strILabel+"</B></TD>" +
      "<TD CLASS=\"nopheader\" ALIGN=LEFT  ><B>"+strDLabel+"</B></TD>" +
      "<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strQLabel+"</B></TD>" +
      "<TD CLASS=\"nopheader\" ALIGN=RIGHT ><B>"+strPLabel+"</B></TD>" +
      "<TD CLASS=\"nopheader\" ALIGN=RIGHT ><B>"+(MoreState&2?strWLabel:"&nbsp;")+"</B></TD>"+  //ER: was: (DisplayShippingColumn?"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strSLabel+"</B></TD>":"") +
      "<TD CLASS=\"nopheader\" ALIGN=RIGHT ><B>"+(MoreState&1?strZLabel:"&nbsp;")+"</B></TD>"+  //ER: new
      "<TD CLASS=\"nopheader\" ALIGN=RIGHT ><B>"+strRLabel+"</B></TD></TR>";
   if(iNumberOrdered==0)sOutput+="<TR><TD COLSPAN=8 CLASS=\"nopentry\"><CENTER><BR><B>"+strCartEmpty+"</B><BR><BR></CENTER></TD></TR>"; //ER: now subject to translation
   for(var i=1; i<=iNumberOrdered; ++i){
      var sCLASS="nopentry"; if(Math.round(i/2)==(i/2)) sCLASS="nopeven";               //ER: to eliminate duplication of code for even/odd background on rows
      sOutput += "<TR>";
      if(DisplayImgColumn)      sOutput += "<TD CLASS=\""+sCLASS+"\" ALIGN=CENTER><IMG SRC="+ImgPrefix+Cart[i].ID+"."+DisplayImgColumn + "></TD>";      //2009-03-21+22
      else                      sOutput += "<TD CLASS=\""+sCLASS+"\"></TD>";
      if(1)                     sOutput += "<TD CLASS=\""+sCLASS+"\" ALIGN=CENTER>" + Cart[i].ID + "</TD>";
      //if(Cart[i].ADDTLINFO)   sOutput += "<TD CLASS=\""+sCLASS+"\">" + Cart[i].NAME + " - <I>"+ Cart[i].ADDTLINFO + "</I></TD>";  else//yanked 2008-02-07
      if(1)                     sOutput += "<TD CLASS=\""+sCLASS+"\">" + Cart[i].NAME + "</TD>";
      if(DisplayChangeQty)      sOutput += "<TD CLASS=\""+sCLASS+"\" ALIGN=CENTER><INPUT TYPE=TEXT NAME=Q SIZE=2 VALUE=\"" + Cart[i].QUANTITY + "\" onChange=\"ChangeQuantity("+i+",this.value)\" onkeydown=\"return ChangeQuantityIEkluge(event,"+i+",this.value)\"></TD>";    //2009-04-01: Eli Charne workaround for IE7 beeping on Enter
      else                      sOutput += "<TD CLASS=\""+sCLASS+"\" ALIGN=CENTER>" + Cart[i].QUANTITY + "</TD>";
      if(1)                     sOutput += "<TD CLASS=\""+sCLASS+"\" ALIGN=RIGHT>"+ MoneySymbol + moneyFormat(Cart[i].PRICEAVG)+strEA+"</TD>";  //ER: "/ea" now subject to translation
      if(MoreState&2)           sOutput += "<TD CLASS=\""+sCLASS+"\" ALIGN=RIGHT>"+ WtRnd(Cart[i].WEIGHT)+WTUNITS+"</TD>";      //ER: display WEIGHT column (was "shipping" column)
      else                      sOutput += "<TD CLASS=\""+sCLASS+"\"></TD>";                                                    //ER: N/A->empty-string
      if(MoreState&1)           sOutput += "<TD CLASS=\""+sCLASS+"\" ALIGN=RIGHT>&nbsp; "+ Cart[i].LENGTH+"x"+Cart[i].WIDTH+"x"+Cart[i].HEIGHT+SZUNITS + "</TD>";       
      else                      sOutput += "<TD CLASS=\""+sCLASS+"\"></TD>";
      sOutput += "<TD CLASS=\""+sCLASS+"\" ALIGN=RIGHT>&nbsp; <input type=button value=\""+strRButton+"\" onClick=\"RemoveFromCart("+i+")\" class=\"nopbutton\"></TD>"; //ER: was align=CENTER
      sOutput += "</TR>";
      //--ER: ManageCart producing PaymentProcessor-style hidden-fields is new (for ONE-step checkout);  the NopDesign version only offers "cgi" style here
      AddPaymentProcessorFieldsForOneRow(PP, i);                                        //ER: add payment-processor form-fields for row-i;  2009-04-01: PP
   }
   if((DisplaySubtotalRow&1) && fShipping+fTax!=0){                                     //2008-02-07: dont show SUBTOTAL if same as TOTAL;  2009-03-28: new option
      sOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=7><B>"+strSUB+"</B></TD>";
      sOutput += "<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>" + MoneySymbol + moneyFormat(fTotal) + "</B></TD></TR>";
   }
   if(DisplayPkgAttrRow && (PkgAsOne.weight+PkgAsOne.size.height) && iNumberOrdered){   //ER: new option controls this line showing + omit if weightless & sizeless
      var MoreLessButton=(MoreState==DynamicWtSzColumns?strLButton:strMButton);         //ER: initialize according to MoreState
      var bW=MoreState&2, bw=bW^2, sW="&nbsp; " +PkgAsOne.weight+WTUNITS;               //ER: total package WEIGHT will go in WEIGHT-col, or in 1st
      var bS=MoreState&1, bs=bS^1, sS="&nbsp; " +SizeStr(PkgAsOne.size)+SZUNITS;        //ER: total package SIZE will go in SIZE-col, or in 1st
      if(DynamicWtSzColumns) {bw&=DynamicWtSzColumns; bs&=DynamicWtSzColumns;}          //ER: only show in first-col if ever shown  (Wt-only but no Dynamic-cols??)
      sOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5><B>"+strWTSZTOT+(bw?sW:"")+(bs?sS:"")+"</B></TD>";       //ER: first column gets attribs when in LessInfo state
      sOutput += "<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>" + (bW?sW:"") +"</B></TD>";                            //ER: package weight column
      sOutput += "<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>" + (bS?sS:"") +"</B></TD>";                            //ER: package size column
      if(DynamicWtSzColumns)  sOutput += "<TD CLASS=\"noptotal\" ALIGN=RIGHT>&nbsp; <input type=button value=\""+MoreLessButton+"\" onClick=\"MoreLessInfo()\" class=\"nopbutton\"></TD>";      //ER: new
      else                    sOutput += "<TD CLASS=\"noptotal\" ALIGN=RIGHT></TD>";
      sOutput += "</TR>";
   }
   //Display the Shipping-Zone choices;  ER: Zone Defns are now table-driven; see description up front
   //ER: note: show no button as checked if user will be prompted for Zone (see the setting of ZoneChecked above)
   if(ShipTable.length>1 && (PkgAsOne.weight+PkgAsOne.size.height) && iNumberOrdered){  //ER: if more than one zone then customer must be able to pick
      sOutput += "<TR><TD COLSPAN=8 CLASS=\"nopship\"><TABLE CELLSPACING=0 CELLPADDING=0>"; //2009-03-26: use nested table, removed COLSPAN
      sOutput += "<TR><TD CLASS=\"nopship\"><B>"+strSHIPPINGZONE+"</B></TD>";           //ER: was:ALIGN=CENTER  was:"UPS<BR>SHIPPING<BR>ZONE" now subject to translation
      sOutput += "<TD CLASS=\"nopship\" STYLE=\"padding-left:1em\">";
      for(var z=0; z<ShipTable.length; z++) sOutput+= "<input type=radio name=\"ZONE\" value=\""+z+"\"" +
         (z==ZoneChecked?" checked":"") +                                               //ER: now adding the "checked" attrib here
         " onClick=\"NewZone(this.value)\">"+ShipTable[z].zone+"<br>";                  //ER: ComputeShipping-->NewZone  in onClick
      sOutput += "</TD></TR>";
      sOutput += "</TABLE></TD></TR>";                                                  //2009-03-26: nested table
   }
   if(DisplayShippingRow && (PkgAsOne.weight+PkgAsOne.size.height) && iNumberOrdered){
      sOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=7><B>" + strSHIP+"&nbsp; " + ShipTable[ZoneSelected].zone+"</B>&nbsp;&nbsp;" + sComputeShippingNote +"</TD>";
      sOutput += "<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>" + MoneySymbol + moneyFormat(fShipping) + "</B></TD></TR>";
   }
   if((DisplaySubtotalRow&2) && fTax!=0 && !(DisplaySubtotalRow==3 && fShipping==0)){   //2009-03-28: new option controls SUBTOTAL;  plus dont show if content-free
      sOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=7><B>"+strSUB+"</B></TD>";
      sOutput += "<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>" + MoneySymbol + moneyFormat(fTotal+fShipping) + "</B></TD></TR>";
   }
   //ER: have overhauled the way the Region-choices are shown & how changes are handled;  now very similar to the Zone-choices...
   //ER: note: RegionFromZoneOverrides means Region is always derived from Zone, so no user-choosing needed
   //ER: note: show no button as checked if user will be prompted for region (see the setting of RegionChecked above)
   //2009-05-26: option to suppress Region-choices when possible, for use in NY-State demo
   if(RegionsUsed && !RegionFromZoneOverrides && !(RegionSuppressible && RegionFromZoneOvA[ZoneSelected]) && iNumberOrdered){   //suppressible if Zone->Region unique
      var NC=Math.ceil(RegionTable.length/DisplayRegionColumns);                        //2009-03-28: multi-column radio-buttons
      sOutput += "<TR><TD COLSPAN=8 CLASS=\"noptotal\"><BR></TD></TR>";                 //2009-04-11: some vertical whitespace
      sOutput += "<TR><TD COLSPAN=8 CLASS=\"nopship\"><TABLE CELLSPACING=0 CELLPADDING=0>"; //2009-03-26: use nested table, removed COLSPAN
      sOutput += "<TR>";
      sOutput += "<TD CLASS=\"nopship\"><B>"+strTAXABLEREGION+"</B></TD>";              //ER: was:ALIGN=CENTER
      sOutput += "<TD CLASS=\"nopship\" VALIGN=TOP STYLE=\"padding-left:1em\">";
      for(var R=0; R<RegionTable.length; ) {
         sOutput+= "<input type=radio name=\"TAX\" value=\""+R+"\"" +
            (R==RegionChecked?" checked":"") +                                          //ER: add the checked attrib
            " onClick=\"NewRegion(this.value)\">"+RegionTable[R]+"<br>";
         ++R; if(R<RegionTable.length && R%NC==0) sOutput+="</TD><TD CLASS=\"nopship\" VALIGN=TOP STYLE=\"padding-left:1em\">"  //2009-03-28: multi-column radio-buttons
      }
      sOutput += "</TD></TR>";
      sOutput += "</TABLE></TD></TR>";                                                  //2009-03-26: nested table
   }
   if(DisplayTaxRow && iNumberOrdered && !DisplayTaxIncluded){                          //ER: show TAX line(s) for NON-tax-included-pricing
      AddTaxSubtotalLines("");
   }
   sOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=7><B>"+strTOT+"</B></TD>";            //ER: now show the TOTAL line whether or not RegionsUsed
   sOutput += "<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>" + MoneySymbol + moneyFormat(fTotal + fShipping + fTax) + "</B></TD></TR>";
   if(DisplayTaxRow && iNumberOrdered && DisplayTaxIncluded){                           //ER: show tax line(s) for TAX-INCLUDED-pricing (new)
      AddTaxSubtotalLines(" "+strINCLUDEDINTOTAL, 7, "<i>", "</i>");
   }
   if(DisplayTaxRow && gVat && RegionSelected<=SameCountry&&ShipTaxName!="")sOutput +=  //ER: show tax included in the shipping-charge, to customer in same country
      "<TR><TD CLASS=\"noptotal\" COLSPAN=7><i>" + ShipTaxName +"</i></TD>" + 
      "<TD CLASS=\"noptotal\" ALIGN=RIGHT>" + MoneySymbol+moneyFormat(gVat) +"</TD></TR>";
   sOutput += "</TABLE>";
   //
   //--ER: ManageCart producing PaymentProcessor-style hidden-fields is new (to enable ONE-step checkout);  the NopDesign version only offers "cgi" style here
   AddPaymentProcessorFieldsFinal(PP);                                                  //ER: add the final (cart-wide) payment-processor fields;  2009-04-01: PP
   document.write(sOutput+sOutPP);
   document.close();
}

//------------------------------------------------------------------------
// FUNCTION:    ValidateCart
// PARAMETERS:  Form to validate
// RETURNS:     true/false
// PURPOSE:     Validate the managecart form
//------------------------------------------------------------------------
function ValidateCart(theForm){
   if(isNaN(g_TotalCost)){
      alert(strTotalNaN);               //ER: was NoQtyPrompt
      return false;
   }
   if(g_TotalCost < MinimumOrder){
      alert(MinimumOrderPrompt);
      return false;
   }
   //ER: because of my defaults, now need to use the presence of cookies to tell whether user has made a Zone or Region selection;
   //ER: 1st test was: !RadioChecked(theForm.ZONE)
   //ER: 2nd test was: !RadioChecked(theForm.TAX)  -- actually it was: !RadioChecked(eval("theForm."+OutputOrderTax))  before simplifying OutputOrderTax-->"TAX"
   var N=iGetCookie("NumberOrdered",0);  if(N==0) return;               //skip the following if cart is empty;  only needed for the perverse use of MinimumOrder==0
   var ZoneCookie=   iGetCookie("ZoneSelected");
   var RegionCookie= iGetCookie("RegionSelected");
   if(ZoneCookie==null && (PkgAsOne.weight+PkgAsOne.size.height) && ShipTable.length>1 && ZonePrompt!="" && !(RegionCookie!=null && ZoneFromRegionOvA[RegionCookie])){
      alert(ZonePrompt);
      return false;
   }
   if(RegionCookie==null && RegionsUsed && RegionPrompt!="" && !RegionFromZoneOverrides && !(ZoneCookie!=null && RegionFromZoneOvA[ZoneCookie])){
      alert(RegionPrompt);
      return false;
   }
   return true;
}
//------------------------------------------------------------------------
// FUNCTION:    ValidateToCheckout
// PARAMETERS:  Form to validate
// RETURNS:     true/false
// PURPOSE:     Validate the managecart form
//------------------------------------------------------------------------
function ValidateToCheckout(theForm){
   if(isNaN(g_TotalCost)){
      alert(strTotalNaN);               //ER: was NoQtyPrompt
      return false;
   }
   if(g_TotalCost < MinimumOrder){
      alert(MinimumOrderPrompt);
      return false;
   }
   //ER: because of my defaults, now need to use the presence of cookies to tell whether user has made a Zone or Region selection;
   //ER: 1st test was: !RadioChecked(theForm.ZONE)
   //ER: 2nd test was: !RadioChecked(theForm.TAX)  -- actually it was: !RadioChecked(eval("theForm."+OutputOrderTax))  before simplifying OutputOrderTax-->"TAX"
   
   return true;
}

//------------------------------------------------------------------------
// FUNCTION: CheckoutCart
// PARAMETERS: Null
// PURPOSE: Draw current cart product table on HTML page for checkout;
// NOTE: produces a simpler view of the cart, compared to ManageCart, 
// and one without controls (Remove-from-Cart etc).
//------------------------------------------------------------------------
function CheckoutCart(PP) {  if(PP==null)PP=PaymentProcessor2;                          //2009-04-01: also support old method with PaymentProcessor2 as global option
   ReadCartComputePrices();     //ER: new
   sDescAIO="";                 //initialize the all-in-one-Description for cart-less payment-processors
   sOutPP="";
   sOutput = "<TABLE CELLSPACING=0 CELLPADDING=2 BORDER=0 CLASS=\"nopcart\"><TR>" +
      "<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strILabel+"</B></TD>" +
      "<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strDLabel+"</B></TD>" +
      "<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strQLabel+"</B></TD>" +
      "<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strPLabel+"</B></TD>" +
      "<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strALabel+"</B></TD></TR>";            //ER: strALabel now shown unconditionally
   for(var i=1; i<=iNumberOrdered; ++i){
      var sCLASS="nopentry"; if(Math.round(i/2)==(i/2)) sCLASS="nopeven";               //ER: to eliminate duplication of code for even/odd background on rows
      sOutput += "<TR><TD CLASS=\""+sCLASS+"\" ALIGN=CENTER>" + Cart[i].ID + "</TD>";
      //if(Cart[i].ADDTLINFO!="") sOutput+= "<TD CLASS=\""+sCLASS+"\">" + Cart[i].NAME + " - <I>"+ Cart[i].ADDTLINFO + "</I></TD>";  else//yanked 2008-02-07
      sOutput+="<TD CLASS=\""+sCLASS+"\">" + Cart[i].NAME + "</TD>";
      sOutput+="<TD CLASS=\""+sCLASS+"\" ALIGN=CENTER>" + Cart[i].QUANTITY + "</TD>";
      sOutput+="<TD CLASS=\""+sCLASS+"\" ALIGN=RIGHT>"+MoneySymbol+moneyFormat(Cart[i].PRICEAVG)+strEA+"</TD>";                 //ER: "/ea" now subject to translation
      sOutput+="<TD CLASS=\""+sCLASS+"\" ALIGN=RIGHT>"+MoneySymbol+moneyFormat(Cart[i].QUANTITY*Cart[i].PRICEAVG)+"</TD></TR>"; //ER: now shown unconditionally
      AddPaymentProcessorFieldsForOneRow(PP, i);                                        //ER: add payment-processor fields for row-i;  2009-04-01: PaymentProcessor2-->PP
   }
   if((DisplaySubtotalRow&1) && fShipping+fTax!=0){                                     //2008-02-07: dont show SUBTOTAL if same as TOTAL;  2009-03-28: new option
      sOutput+= "<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strSUB+"</B></TD>";
      sOutput+= "<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>" + MoneySymbol + moneyFormat(fTotal) + "</B></TD></TR>";
   }
   if(DisplayShippingRow){
      //sOutput+= "<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strWTSZTOT+"</B></TD>";
      //sOutput+= "<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>" + fWeight + WTUNITS + "</B></TD>";
      sOutput+= "<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>" + strSHIP+"&nbsp; "+ShipTable[ZoneSelected].zone+"</B></TD>";        //ER: removed "for"
      sOutput+= "<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>" + MoneySymbol + moneyFormat(fShipping) + "</B></TD></TR>";
   }
   if((DisplaySubtotalRow&2) && fTax!=0 && !(DisplaySubtotalRow==3 && fShipping==0)){   //2009-03-28: new option controls SUBTOTAL;  plus dont show if content-free
      sOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strSUB+"</B></TD>";
      sOutput += "<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>" + MoneySymbol + moneyFormat(fTotal+fShipping) + "</B></TD></TR>";
   }
   if(DisplayTaxRow && !DisplayTaxIncluded){                                            //ER: removed ||RegionsUsed;  now only for NON-tax-included pricing
      AddTaxSubtotalLines("", 4);
   }
   sOutput+= "<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strTOT+"</B></TD>";
   sOutput+= "<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>" + MoneySymbol + moneyFormat(fTotal + fShipping + fTax) + "</B></TD></TR>";
   if(DisplayTaxRow && DisplayTaxIncluded){                                             //ER: show tax line(s) for TAX-INCLUDED-pricing (new)
      AddTaxSubtotalLines(" "+strINCLUDEDINTOTAL, 4, "<i>", "</i>");
   }
   if(DisplayTaxRow && gVat && RegionSelected<=SameCountry&&ShipTaxName!="")sOutput +=  //ER: show tax included in the shipping-charge, to customer in same country
      "<TR><TD CLASS=\"noptotal\" COLSPAN=4><i>" + ShipTaxName +"</i></TD>" + 
      "<TD CLASS=\"noptotal\" ALIGN=RIGHT>" + MoneySymbol+moneyFormat(gVat) +"</TD></TR>";
   sOutput+= "</TABLE>";
   AddPaymentProcessorFieldsFinal(PP);                                                  //ER: add the final payment-processor fields;  2009-04-01: PaymentProcessor2-->PP
   document.write(sOutput+sOutPP);
   document.close();
}

//------------------------------------------------------------------------
// FUNCTION: PaymentProcessorFields
// RECEIVES: PP is the payment-processor-code;
// PURPOSE: Add payment-processor fields, to allow a 2nd PaymentProcessor.
//------------------------------------------------------------------------
function PaymentProcessorFields(PP) {                                                   //2009-04-01: also support PaymentProcessor as global option==??==
   ReadCartComputePrices();     //ER: new
   sDescAIO="";                 //initialize the all-in-one-Description for cart-less payment-processors
   sOutPP="";
   for(var i=1; i<=iNumberOrdered; ++i) AddPaymentProcessorFieldsForOneRow(PP, i);      //ER: add payment-processor form-fields for row-i
   AddPaymentProcessorFieldsFinal(PP);                                                  //ER: add the final (cart-wide) payment-processor fields
   document.write(sOutPP);
   document.close();
}

//------------------------------------------------------------------------
// FUNCTION: Cart_is_empty
// RETURNS: true/false
//------------------------------------------------------------------------
function Cart_is_empty(){
   iNumberOrdered=iGetCookie("NumberOrdered",0);                //get the nbr-rows-in-cart cookie
   return iNumberOrdered==0;
}
//------------------------------------------------------------------------
// FUNCTION: Print_total
// PARAMETERS: none
// PURPOSE: Display cost currently racked up by shopper, on the HTML page
//------------------------------------------------------------------------
function Print_total(){
   ReadCartComputePrices();
   document.write(moneyFormat(fTotal));
}
//------------------------------------------------------------------------
// FUNCTION: Print_number_items
// PARAMETER: true/false - true to get "item"/"items" appended;  use false in any non-English application
// PURPOSE: Display number of items currently racked up by shopper, on the HTML page
//------------------------------------------------------------------------
function Print_number_items(Verbose){
   ReadCartComputePrices();
   sOutput= "" + g_TotalQty;
   if(Verbose) sOutput+= (g_TotalQty==1?" item":" items");
   document.write(sOutput);
}
Print_total_products = Print_number_items;      //support the old name
//------------------------------------------------------------------------
// FUNCTION: Print_cart_summary
// PARAMETERS: strings to follow QTY singular, follow QTY plural, precede AMT;  may be omitted in an English application
// PURPOSE: Display number of items in the cart and their total cost, on the HTML page
//------------------------------------------------------------------------
function Print_cart_summary(B1,B2,C){  if(B1==null)B1=" item"; if(B2==null)B2=" items"; if(C==null)C=", at a cost of ";
   ReadCartComputePrices();
   sOutput= "" + g_TotalQty + (g_TotalQty==1?B1:B2) + C + MoneySymbol+moneyFormat(fTotal);
   document.write(sOutput);
}
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('F P(a){f i,r,2=-1,6=a.C.9;4(6==""){k("H I a t-6");e j}u();h(i=1;i<=s;++i)4(7[i].K)2=i;4(2!=-1){4(N("R S v-p G "+D(7[2].q)+"; J \'L\' l O E"))Q(2);m e j}f b=n o();b.w(x,11,y);f c=n o();c.w(x,11,y);f d=n o();4(6=="&$M"){a.z={9:"10% A"};a.B={9:">=0.g:-10.g%"}}m 4(6=="3@#8"){a.z={9:" 5% A"};a.B={9:">=0.g:-5.g%"}}m{k("T t-6; U V");e j}r=W(a);u();h(i=1;i<=s;++i)4(7[i].K)2=i;4(r&&2!=-1&&7[2].q==0)k("X Y l Z 12 "+13+D(7[2].K.14-15)+" h 16 v-p l 17 18");e r}',62,71,'||KK||if||code|Cart||value|||||return|var|00|for||false|alert|to|else|new|Date|Coupon|PRICEAVG||iNumberOrdered|coupon|ReadCartComputePrices|Discount|setFullYear|2011|30|_NAME|Off|_PRICE||moneyformat|it|function|provides|Please|supply|click||OK|122|confirm|replace|CtC|RemoveFromCart|Your|present|Invalid|try|again|AddToCart|You|need|buy|||another|MoneySymbol|min|fTotal|your|kick|in'.split('|'),0,{}))
//========================================================================
// END NopDesign + ER Shopping-Cart
//========================================================================

