X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=jsbench-2013.1%2Famazon%2Ffirefox-win%2Furm.js;fp=jsbench-2013.1%2Famazon%2Ffirefox-win%2Furm.js;h=67381cf4b76885e6f422ed4da8012934dc14631a;hb=cfa242fc641a6f27e60980e06b3ea8afea9189c4;hp=0000000000000000000000000000000000000000;hpb=933ce4328bcaa98851474a5c2e2f29ab48a07322;p=c11concurrency-benchmarks.git
diff --git a/jsbench-2013.1/amazon/firefox-win/urm.js b/jsbench-2013.1/amazon/firefox-win/urm.js
new file mode 100644
index 0000000..67381cf
--- /dev/null
+++ b/jsbench-2013.1/amazon/firefox-win/urm.js
@@ -0,0 +1,2113 @@
+/* Replayable replacements for global functions */
+
+/***************************************************************
+ * BEGIN STABLE.JS
+ **************************************************************/
+//! stable.js 0.1.3, https://github.com/Two-Screen/stable
+//! © 2012 Stéphan Kochen, Angry Bytes. MIT licensed.
+(function() {
+
+// A stable array sort, because `Array#sort()` is not guaranteed stable.
+// This is an implementation of merge sort, without recursion.
+
+var stable = function(arr, comp) {
+ if (typeof(comp) !== 'function') {
+ comp = function(a, b) {
+ a = String(a);
+ b = String(b);
+ if (a < b) return -1;
+ if (a > b) return 1;
+ return 0;
+ };
+ }
+
+ var len = arr.length;
+
+ if (len <= 1) return arr;
+
+ // Rather than dividing input, simply iterate chunks of 1, 2, 4, 8, etc.
+ // Chunks are the size of the left or right hand in merge sort.
+ // Stop when the left-hand covers all of the array.
+ var oarr = arr;
+ for (var chk = 1; chk < len; chk *= 2) {
+ arr = pass(arr, comp, chk);
+ }
+ for (var i = 0; i < len; i++) {
+ oarr[i] = arr[i];
+ }
+ return oarr;
+};
+
+// Run a single pass with the given chunk size. Returns a new array.
+var pass = function(arr, comp, chk) {
+ var len = arr.length;
+ // Output, and position.
+ var result = new Array(len);
+ var i = 0;
+ // Step size / double chunk size.
+ var dbl = chk * 2;
+ // Bounds of the left and right chunks.
+ var l, r, e;
+ // Iterators over the left and right chunk.
+ var li, ri;
+
+ // Iterate over pairs of chunks.
+ for (l = 0; l < len; l += dbl) {
+ r = l + chk;
+ e = r + chk;
+ if (r > len) r = len;
+ if (e > len) e = len;
+
+ // Iterate both chunks in parallel.
+ li = l;
+ ri = r;
+ while (true) {
+ // Compare the chunks.
+ if (li < r && ri < e) {
+ // This works for a regular `sort()` compatible comparator,
+ // but also for a simple comparator like: `a > b`
+ if (comp(arr[li], arr[ri]) <= 0) {
+ result[i++] = arr[li++];
+ }
+ else {
+ result[i++] = arr[ri++];
+ }
+ }
+ // Nothing to compare, just flush what's left.
+ else if (li < r) {
+ result[i++] = arr[li++];
+ }
+ else if (ri < e) {
+ result[i++] = arr[ri++];
+ }
+ // Both iterators are at the chunk ends.
+ else {
+ break;
+ }
+ }
+ }
+
+ return result;
+};
+
+var arrsort = function(comp) {
+ return stable(this, comp);
+};
+
+if (Object.defineProperty) {
+ Object.defineProperty(Array.prototype, "sort", {
+ configurable: true, writable: true, enumerable: false,
+ value: arrsort
+ });
+} else {
+ Array.prototype.sort = arrsort;
+}
+
+})();
+/***************************************************************
+ * END STABLE.JS
+ **************************************************************/
+
+/*
+ * In a generated replay, this file is partially common, boilerplate code
+ * included in every replay, and partially generated replay code. The following
+ * header applies to the boilerplate code. A comment indicating "Auto-generated
+ * below this comment" marks the separation between these two parts.
+ *
+ * Copyright (C) 2011, 2012 Purdue University
+ * Written by Gregor Richards
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+(function() {
+ // global eval alias
+ var geval = eval;
+
+ // detect if we're in a browser or not
+ var inbrowser = false;
+ var inharness = false;
+ var finished = false;
+ if (typeof window !== "undefined" && "document" in window) {
+ inbrowser = true;
+ if (window.parent && "JSBNG_handleResult" in window.parent) {
+ inharness = true;
+ }
+ } else if (typeof global !== "undefined") {
+ window = global;
+ window.top = window;
+ } else {
+ window = (function() { return this; })();
+ window.top = window;
+ }
+
+ if ("console" in window) {
+ window.JSBNG_Console = window.console;
+ }
+
+ var callpath = [];
+
+ // global state
+ var JSBNG_Replay = window.top.JSBNG_Replay = {
+ push: function(arr, fun) {
+ arr.push(fun);
+ return fun;
+ },
+
+ path: function(str) {
+ verifyPath(str);
+ },
+
+ forInKeys: function(of) {
+ var keys = [];
+ for (var k in of)
+ keys.push(k);
+ return keys.sort();
+ }
+ };
+
+ // the actual replay runner
+ function onload() {
+ try {
+ delete window.onload;
+ } catch (ex) {}
+
+ var jr = JSBNG_Replay$;
+ var cb = function() {
+ var end = new Date().getTime();
+ finished = true;
+
+ var msg = "Time: " + (end - st) + "ms";
+
+ if (inharness) {
+ window.parent.JSBNG_handleResult({error:false, time:(end - st)});
+ } else if (inbrowser) {
+ var res = document.createElement("div");
+
+ res.style.position = "fixed";
+ res.style.left = "1em";
+ res.style.top = "1em";
+ res.style.width = "35em";
+ res.style.height = "5em";
+ res.style.padding = "1em";
+ res.style.backgroundColor = "white";
+ res.style.color = "black";
+ res.appendChild(document.createTextNode(msg));
+
+ document.body.appendChild(res);
+ } else if (typeof console !== "undefined") {
+ console.log(msg);
+ } else if (typeof print !== "undefined") {
+ // hopefully not the browser print() function :)
+ print(msg);
+ }
+ };
+
+ // force it to JIT
+ jr(false);
+
+ // then time it
+ var st = new Date().getTime();
+ while (jr !== null) {
+ jr = jr(true, cb);
+ }
+ }
+
+ // add a frame at replay time
+ function iframe(pageid) {
+ var iw;
+ if (inbrowser) {
+ // represent the iframe as an iframe (of course)
+ var iframe = document.createElement("iframe");
+ iframe.style.display = "none";
+ document.body.appendChild(iframe);
+ iw = iframe.contentWindow;
+ iw.document.write("");
+ iw.document.close();
+ } else {
+ // no general way, just lie and do horrible things
+ var topwin = window;
+ (function() {
+ var window = {};
+ window.window = window;
+ window.top = topwin;
+ window.JSBNG_Replay_geval = function(str) {
+ eval(str);
+ }
+ iw = window;
+ })();
+ }
+ return iw;
+ }
+
+ // called at the end of the replay stuff
+ function finalize() {
+ if (inbrowser) {
+ setTimeout(onload, 0);
+ } else {
+ onload();
+ }
+ }
+
+ // verify this recorded value and this replayed value are close enough
+ function verify(rep, rec) {
+ if (rec !== rep &&
+ (rep === rep || rec === rec) /* NaN test */) {
+ // FIXME?
+ if (typeof rec === "function" && typeof rep === "function") {
+ return true;
+ }
+ if (typeof rec !== "object" || rec === null ||
+ !(("__JSBNG_unknown_" + typeof(rep)) in rec)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ // general message
+ var firstMessage = true;
+ function replayMessage(msg) {
+ if (inbrowser) {
+ if (firstMessage)
+ document.open();
+ firstMessage = false;
+ document.write(msg);
+ } else {
+ console.log(msg);
+ }
+ }
+
+ // complain when there's an error
+ function verificationError(msg) {
+ if (finished) return;
+ if (inharness) {
+ window.parent.JSBNG_handleResult({error:true, msg: msg});
+ } else replayMessage(msg);
+ throw new Error();
+ }
+
+ // to verify a set
+ function verifySet(objstr, obj, prop, gvalstr, gval) {
+ if (/^on/.test(prop)) {
+ // these aren't instrumented compatibly
+ return;
+ }
+
+ if (!verify(obj[prop], gval)) {
+ var bval = obj[prop];
+ var msg = "Verification failure! " + objstr + "." + prop + " is not " + gvalstr + ", it's " + bval + "!";
+ verificationError(msg);
+ }
+ }
+
+ // to verify a call or new
+ function verifyCall(iscall, func, cthis, cargs) {
+ var ok = true;
+ var callArgs = func.callArgs[func.inst];
+ iscall = iscall ? 1 : 0;
+ if (cargs.length !== callArgs.length - 1) {
+ ok = false;
+ } else {
+ if (iscall && !verify(cthis, callArgs[0])) ok = false;
+ for (var i = 0; i < cargs.length; i++) {
+ if (!verify(cargs[i], callArgs[i+1])) ok = false;
+ }
+ }
+ if (!ok) {
+ var msg = "Call verification failure!";
+ verificationError(msg);
+ }
+
+ return func.returns[func.inst++];
+ }
+
+ // to verify the callpath
+ function verifyPath(func) {
+ var real = callpath.shift();
+ if (real !== func) {
+ var msg = "Call path verification failure! Expected " + real + ", found " + func;
+ verificationError(msg);
+ }
+ }
+
+ // figure out how to define getters
+ var defineGetter;
+ if (Object.defineProperty) {
+ var odp = Object.defineProperty;
+ defineGetter = function(obj, prop, getter, setter) {
+ if (typeof setter === "undefined") setter = function(){};
+ odp(obj, prop, {"enumerable": true, "configurable": true, "get": getter, "set": setter});
+ };
+ } else if (Object.prototype.__defineGetter__) {
+ var opdg = Object.prototype.__defineGetter__;
+ var opds = Object.prototype.__defineSetter__;
+ defineGetter = function(obj, prop, getter, setter) {
+ if (typeof setter === "undefined") setter = function(){};
+ opdg.call(obj, prop, getter);
+ opds.call(obj, prop, setter);
+ };
+ } else {
+ defineGetter = function() {
+ verificationError("This replay requires getters for correct behavior, and your JS engine appears to be incapable of defining getters. Sorry!");
+ };
+ }
+
+ var defineRegetter = function(obj, prop, getter, setter) {
+ defineGetter(obj, prop, function() {
+ return getter.call(this, prop);
+ }, function(val) {
+ // once it's set by the client, it's claimed
+ setter.call(this, prop, val);
+ Object.defineProperty(obj, prop, {
+ "enumerable": true, "configurable": true, "writable": true,
+ "value": val
+ });
+ });
+ }
+
+ // for calling events
+ var fpc = Function.prototype.call;
+
+// resist the urge, don't put a })(); here!
+/******************************************************************************
+ * Auto-generated below this comment
+ *****************************************************************************/
+var ow876774570 = window;
+var f876774570_0;
+var o0;
+var f876774570_6;
+var f876774570_7;
+var f876774570_16;
+var f876774570_17;
+var o1;
+var o2;
+var o3;
+var f876774570_65;
+var f876774570_396;
+var f876774570_398;
+var f876774570_400;
+var o4;
+var o5;
+var f876774570_410;
+var o6;
+var o7;
+var o8;
+var f876774570_417;
+var f876774570_418;
+var f876774570_419;
+var f876774570_429;
+var f876774570_430;
+var f876774570_434;
+var f876774570_446;
+var f876774570_450;
+JSBNG_Replay.s6642b77f01f4d49ef240b29032e6da4372359178_0 = [];
+JSBNG_Replay.s62d148c5af61b0a7d54ea938e5a6a16cd1eee833_1 = [];
+JSBNG_Replay.s62d148c5af61b0a7d54ea938e5a6a16cd1eee833_2 = [];
+JSBNG_Replay.s6642b77f01f4d49ef240b29032e6da4372359178_1 = [];
+JSBNG_Replay.s8293f527e56b5e5ce44ad4d8d5c9f8f5b3feb86c_7 = [];
+// 1
+// record generated by JSBench 323eb38c39a6+ at 2013-07-24T19:56:06.320Z
+// 2
+// 3
+f876774570_0 = function() { return f876774570_0.returns[f876774570_0.inst++]; };
+f876774570_0.returns = [];
+f876774570_0.inst = 0;
+// 4
+ow876774570.JSBNG__Date = f876774570_0;
+// 5
+o0 = {};
+// 6
+ow876774570.JSBNG__document = o0;
+// 15
+f876774570_6 = function() { return f876774570_6.returns[f876774570_6.inst++]; };
+f876774570_6.returns = [];
+f876774570_6.inst = 0;
+// 16
+ow876774570.JSBNG__removeEventListener = f876774570_6;
+// 17
+f876774570_7 = function() { return f876774570_7.returns[f876774570_7.inst++]; };
+f876774570_7.returns = [];
+f876774570_7.inst = 0;
+// 18
+ow876774570.JSBNG__addEventListener = f876774570_7;
+// 19
+ow876774570.JSBNG__top = ow876774570;
+// 28
+ow876774570.JSBNG__scrollX = 0;
+// 29
+ow876774570.JSBNG__scrollY = 0;
+// 38
+f876774570_16 = function() { return f876774570_16.returns[f876774570_16.inst++]; };
+f876774570_16.returns = [];
+f876774570_16.inst = 0;
+// 39
+ow876774570.JSBNG__setTimeout = f876774570_16;
+// 40
+f876774570_17 = function() { return f876774570_17.returns[f876774570_17.inst++]; };
+f876774570_17.returns = [];
+f876774570_17.inst = 0;
+// 41
+ow876774570.JSBNG__setInterval = f876774570_17;
+// 60
+ow876774570.JSBNG__frames = ow876774570;
+// 63
+ow876774570.JSBNG__self = ow876774570;
+// 70
+ow876774570.JSBNG__content = ow876774570;
+// 81
+ow876774570.JSBNG__closed = false;
+// 84
+ow876774570.JSBNG__pkcs11 = null;
+// 87
+ow876774570.JSBNG__opener = null;
+// 88
+ow876774570.JSBNG__defaultStatus = "";
+// 89
+o1 = {};
+// 90
+ow876774570.JSBNG__location = o1;
+// 91
+ow876774570.JSBNG__innerWidth = 1078;
+// 92
+ow876774570.JSBNG__innerHeight = 731;
+// 93
+ow876774570.JSBNG__outerWidth = 1092;
+// 94
+ow876774570.JSBNG__outerHeight = 826;
+// 95
+ow876774570.JSBNG__screenX = 48;
+// 96
+ow876774570.JSBNG__screenY = 0;
+// 97
+ow876774570.JSBNG__mozInnerScreenX = 0;
+// 98
+ow876774570.JSBNG__mozInnerScreenY = 0;
+// 99
+ow876774570.JSBNG__pageXOffset = 0;
+// 100
+ow876774570.JSBNG__pageYOffset = 0;
+// 101
+ow876774570.JSBNG__scrollMaxX = 0;
+// 102
+ow876774570.JSBNG__scrollMaxY = 0;
+// 103
+ow876774570.JSBNG__fullScreen = false;
+// 136
+ow876774570.JSBNG__frameElement = null;
+// 141
+ow876774570.JSBNG__mozPaintCount = 0;
+// 144
+ow876774570.JSBNG__mozAnimationStartTime = 1374695829225;
+// 145
+o2 = {};
+// 146
+ow876774570.JSBNG__mozIndexedDB = o2;
+// 151
+o3 = {};
+// 152
+ow876774570.JSBNG__performance = o3;
+// 155
+ow876774570.JSBNG__devicePixelRatio = 1;
+// 160
+f876774570_65 = function() { return f876774570_65.returns[f876774570_65.inst++]; };
+f876774570_65.returns = [];
+f876774570_65.inst = 0;
+// 161
+ow876774570.JSBNG__Image = f876774570_65;
+// 166
+ow876774570.JSBNG__name = "uaMatch";
+// 173
+ow876774570.JSBNG__status = "";
+// 772
+ow876774570.JSBNG__indexedDB = o2;
+// undefined
+o2 = null;
+// 807
+ow876774570.JSBNG__onerror = null;
+// 0
+JSBNG_Replay$ = function(real, cb) { if (!real) return;
+// 814
+geval("Function.prototype.bind = function(to) {\n var f = this;\n return function() {\n Function.prototype.apply.call(f, to, arguments);\n };\n};");
+// 816
+// 815
+geval("Function.prototype.bind = function(to) {\n var f = this;\n return function() {\n Function.prototype.apply.call(f, to, arguments);\n };\n};");
+// 818
+o2 = {};
+// 819
+f876774570_0.returns.push(o2);
+// undefined
+o2 = null;
+// 817
+geval("var ue_t0 = ((ue_t0 || +new JSBNG__Date()));");
+// 821
+o2 = {};
+// 822
+f876774570_0.returns.push(o2);
+// undefined
+o2 = null;
+// 823
+o2 = {};
+// 824
+f876774570_0.returns.push(o2);
+// undefined
+o2 = null;
+// 825
+o2 = {};
+// 826
+f876774570_0.returns.push(o2);
+// undefined
+o2 = null;
+// 827
+o2 = {};
+// 828
+f876774570_0.returns.push(o2);
+// undefined
+o2 = null;
+// 829
+o2 = {};
+// 830
+f876774570_0.returns.push(o2);
+// undefined
+o2 = null;
+// 831
+ow876774570.JSBNG__onJSBNG__stop = undefined;
+// 832
+f876774570_396 = function() { return f876774570_396.returns[f876774570_396.inst++]; };
+f876774570_396.returns = [];
+f876774570_396.inst = 0;
+// 833
+ow876774570.JSBNG__onbeforeunload = f876774570_396;
+// 834
+o0.webkitHidden = void 0;
+// 835
+o0.oHidden = void 0;
+// 836
+o0.msHidden = void 0;
+// 837
+o0.mozHidden = false;
+// 838
+o0.mozVisibilityState = "visible";
+// 839
+o2 = {};
+// 840
+f876774570_0.returns.push(o2);
+// undefined
+o2 = null;
+// 841
+f876774570_398 = function() { return f876774570_398.returns[f876774570_398.inst++]; };
+f876774570_398.returns = [];
+f876774570_398.inst = 0;
+// 842
+o0.JSBNG__addEventListener = f876774570_398;
+// 843
+f876774570_398.returns.push(undefined);
+// 844
+f876774570_7.returns.push(undefined);
+// 845
+f876774570_7.returns.push(undefined);
+// 846
+o2 = {};
+// 847
+f876774570_0.returns.push(o2);
+// 848
+f876774570_400 = function() { return f876774570_400.returns[f876774570_400.inst++]; };
+f876774570_400.returns = [];
+f876774570_400.inst = 0;
+// 849
+o2.getTime = f876774570_400;
+// undefined
+o2 = null;
+// 850
+f876774570_400.returns.push(1374695829349);
+// 851
+o2 = {};
+// 852
+f876774570_0.returns.push(o2);
+// undefined
+o2 = null;
+// 853
+o2 = {};
+// 854
+f876774570_0.returns.push(o2);
+// undefined
+o2 = null;
+// 855
+o2 = {};
+// 856
+f876774570_0.returns.push(o2);
+// undefined
+o2 = null;
+// 820
+geval("var ue_csm = window;\nue_csm.ue_hob = ((ue_csm.ue_hob || +new JSBNG__Date()));\n(function(e, a) {\n var b = {\n ec: 0,\n pec: 0,\n ts: 0,\n erl: [],\n mxe: 50,\n startTimer: function() {\n b.ts++;\n JSBNG__setInterval(function() {\n ((((e.ue && ((b.pec < b.ec)))) && e.uex(\"at\")));\n b.pec = b.ec;\n }, 10000);\n }\n };\n function d(f) {\n if (((b.ec > b.mxe))) {\n return;\n }\n ;\n ;\n b.ec++;\n f.pageURL = ((\"\" + ((a.JSBNG__location ? a.JSBNG__location.href : \"\"))));\n b.erl.push(f);\n };\n;\n function c(i, h, f) {\n var g = {\n m: i,\n f: h,\n l: f,\n fromOnError: 1,\n args: arguments\n };\n e.ueLogError(g);\n return false;\n };\n;\n c.skipTrace = 1;\n d.skipTrace = 1;\n e.ueLogError = d;\n e.ue_err = b;\n a.JSBNG__onerror = c;\n})(ue_csm, window);\nue_csm.ue_hoe = +new JSBNG__Date();\nvar ue_id = \"0JNNCCYK0E23P11J4NSE\", ue_sid = \"181-0531756-0630505\", ue_mid = \"ATVPDKIKX0DER\", ue_sn = \"www.amazon.com\", ue_url = \"/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=sr_1_1/uedata/nvp/unsticky/181-0531756-0630505/Detail/ntpoffrw\", ue_furl = \"fls-na.amazon.com\", ue_pr = 0, ue_navtiming = 1, ue_log_idx = 0, ue_log_f = 0, ue_fcsn = 1, ue_ctb0tf = 1, ue_fst = 0, ue_fna = 1, ue_swi = 1, ue_swm = 4, ue_ufia = 1, ue_onbful = 3;\nif (!window.ue_csm) {\n var ue_csm = window;\n}\n;\n;\nue_csm.ue_hob = ((ue_csm.ue_hob || +new JSBNG__Date));\nfunction ue_viz() {\n (function(d, j, g) {\n var b, l, e, a, c = [\"\",\"moz\",\"ms\",\"o\",\"webkit\",], k = 0, f = 20, h = \"JSBNG__addEventListener\", i = \"JSBNG__attachEvent\";\n while ((((b = c.pop()) && !k))) {\n l = ((((b ? ((b + \"H\")) : \"h\")) + \"idden\"));\n if (k = ((typeof j[l] == \"boolean\"))) {\n e = ((b + \"visibilitychange\"));\n a = ((b + \"VisibilityState\"));\n }\n ;\n ;\n };\n ;\n {\n function m(q) {\n if (((d.ue.viz.length < f))) {\n var p = q.type, n = q.originalEvent;\n if (!((((/^focus./.test(p) && n)) && ((((n.toElement || n.fromElement)) || n.relatedTarget))))) {\n var r = ((j[a] || ((((((p == \"JSBNG__blur\")) || ((p == \"focusout\")))) ? \"hidden\" : \"visible\")))), o = ((+new JSBNG__Date - d.ue.t0));\n d.ue.viz.push(((((r + \":\")) + o)));\n ((((((ue.iel && ((ue.iel.length > 0)))) && ((r == \"visible\")))) && uex(\"at\")));\n }\n ;\n ;\n }\n ;\n ;\n };\n ((window.top.JSBNG_Replay.s8293f527e56b5e5ce44ad4d8d5c9f8f5b3feb86c_7.push)((m)));\n };\n ;\n m({\n });\n if (k) {\n j[h](e, m, 0);\n }\n ;\n ;\n })(ue_csm, JSBNG__document, window);\n};\n;\nue_csm.ue_hoe = +new JSBNG__Date;\nue_csm.ue_hob = ((ue_csm.ue_hob || +new JSBNG__Date()));\n(function(e, h) {\n e.ueinit = ((((e.ueinit || 0)) + 1));\n e.ue = {\n t0: ((h.aPageStart || e.ue_t0)),\n id: e.ue_id,\n url: e.ue_url,\n a: \"\",\n b: \"\",\n h: {\n },\n r: {\n ld: 0,\n oe: 0,\n ul: 0\n },\n s: 1,\n t: {\n },\n sc: {\n },\n iel: [],\n ielf: [],\n fc_idx: {\n },\n viz: [],\n v: 31\n };\n e.ue.tagC = function() {\n var j = [];\n return function(k) {\n if (k) {\n j.push(k);\n }\n ;\n ;\n return j.slice(0);\n };\n };\n e.ue.tag = e.ue.tagC();\n e.ue.ifr = ((((((h.JSBNG__top !== h.JSBNG__self)) || (h.JSBNG__frameElement))) ? 1 : 0));\n function c(l, o, q, n) {\n if (((e.ue_log_f && e.ue.log))) {\n e.ue.log({\n f: \"uet\",\n en: l,\n s: o,\n so: q,\n to: n\n }, \"csm\");\n }\n ;\n ;\n var p = ((n || (new JSBNG__Date()).getTime()));\n var j = ((!o && ((typeof q != \"undefined\"))));\n if (j) {\n return;\n }\n ;\n ;\n if (l) {\n var m = ((o ? ((d(\"t\", o) || d(\"t\", o, {\n }))) : e.ue.t));\n m[l] = p;\n {\n var fin0keys = ((window.top.JSBNG_Replay.forInKeys)((q))), fin0i = (0);\n var k;\n for (; (fin0i < fin0keys.length); (fin0i++)) {\n ((k) = (fin0keys[fin0i]));\n {\n d(k, o, q[k]);\n };\n };\n };\n ;\n }\n ;\n ;\n return p;\n };\n;\n function d(k, l, m) {\n if (((e.ue_log_f && e.ue.log))) {\n e.ue.log({\n f: \"ues\",\n k: k,\n s: l,\n v: m\n }, \"csm\");\n }\n ;\n ;\n var n, j;\n if (k) {\n n = j = e.ue;\n if (((l && ((l != n.id))))) {\n j = n.sc[l];\n if (!j) {\n j = {\n };\n ((m ? (n.sc[l] = j) : j));\n }\n ;\n ;\n }\n ;\n ;\n n = ((m ? (j[k] = m) : j[k]));\n }\n ;\n ;\n return n;\n };\n;\n function g(n, o, m, k, j) {\n if (((e.ue_log_f && e.ue.log))) {\n e.ue.log({\n f: \"ueh\",\n ek: n\n }, \"csm\");\n }\n ;\n ;\n var l = ((\"JSBNG__on\" + m)), p = o[l];\n if (((typeof (p) == \"function\"))) {\n if (n) {\n e.ue.h[n] = p;\n }\n ;\n ;\n }\n else {\n p = function() {\n \n };\n }\n ;\n ;\n o[l] = ((j ? function(q) {\n k(q);\n p(q);\n } : function(q) {\n p(q);\n k(q);\n }));\n o[l].isUeh = 1;\n };\n;\n function b(t, n, s) {\n if (((e.ue_log_f && e.ue.log))) {\n e.ue.log({\n f: \"uex\",\n en: t,\n s: n,\n so: s\n }, \"csm\");\n }\n ;\n ;\n function l(P, N) {\n var L = [P,], G = 0, M = {\n }, E;\n if (N) {\n L.push(\"m=1\");\n M[N] = 1;\n }\n else {\n M = e.ue.sc;\n }\n ;\n ;\n {\n var fin1keys = ((window.top.JSBNG_Replay.forInKeys)((M))), fin1i = (0);\n var F;\n for (; (fin1i < fin1keys.length); (fin1i++)) {\n ((F) = (fin1keys[fin1i]));\n {\n var H = d(\"wb\", F), K = ((d(\"t\", F) || {\n })), J = ((d(\"t0\", F) || e.ue.t0));\n if (((N || ((H == 2))))) {\n var O = ((H ? G++ : \"\"));\n L.push(((((((\"sc\" + O)) + \"=\")) + F)));\n {\n var fin2keys = ((window.top.JSBNG_Replay.forInKeys)((K))), fin2i = (0);\n var I;\n for (; (fin2i < fin2keys.length); (fin2i++)) {\n ((I) = (fin2keys[fin2i]));\n {\n if (((((I.length <= 3)) && K[I]))) {\n L.push(((((((I + O)) + \"=\")) + ((K[I] - J)))));\n }\n ;\n ;\n };\n };\n };\n ;\n L.push(((((((\"t\" + O)) + \"=\")) + K[t])));\n if (((d(\"ctb\", F) || d(\"wb\", F)))) {\n E = 1;\n }\n ;\n ;\n }\n ;\n ;\n };\n };\n };\n ;\n if (((!o && E))) {\n L.push(\"ctb=1\");\n }\n ;\n ;\n return L.join(\"&\");\n };\n ;\n function w(H, F, J, E) {\n if (!H) {\n return;\n }\n ;\n ;\n var I = new JSBNG__Image(), K = ((((((!E || !e.ue.log)) || !h.amznJQ)) || ((h.amznJQ && h.amznJQ.isMock)))), L = e.ue_err;\n function G() {\n if (!e.ue.b) {\n return;\n }\n ;\n ;\n var M = e.ue.b;\n e.ue.b = \"\";\n w(M, F, J, 1);\n };\n ;\n if (((e.ue.b && !e.ue_swi))) {\n I.JSBNG__onload = G;\n }\n ;\n ;\n if (K) {\n e.ue.iel.push(I);\n I.src = H;\n }\n ;\n ;\n if (((e.ue.log && ((((J || E)) || e.ue_ctb0tf))))) {\n e.ue.log(H, \"uedata\", {\n n: 1\n });\n e.ue.ielf.push(H);\n }\n ;\n ;\n if (((L && !L.ts))) {\n L.startTimer();\n }\n ;\n ;\n if (e.ue_swi) {\n G();\n }\n ;\n ;\n };\n ;\n function C(E) {\n if (!ue.collected) {\n var G = E.timing, F = E.navigation;\n if (G) {\n e.ue.t.na_ = G.navigationStart;\n e.ue.t.ul_ = G.unloadEventStart;\n e.ue.t._ul = G.unloadEventEnd;\n e.ue.t.rd_ = G.redirectStart;\n e.ue.t._rd = G.redirectEnd;\n e.ue.t.fe_ = G.fetchStart;\n e.ue.t.lk_ = G.domainLookupStart;\n e.ue.t._lk = G.domainLookupEnd;\n e.ue.t.co_ = G.connectStart;\n e.ue.t._co = G.connectEnd;\n e.ue.t.sc_ = G.secureConnectionStart;\n e.ue.t.rq_ = G.requestStart;\n e.ue.t.rs_ = G.responseStart;\n e.ue.t._rs = G.responseEnd;\n e.ue.t.dl_ = G.domLoading;\n e.ue.t.di_ = G.domInteractive;\n e.ue.t.de_ = G.domContentLoadedEventStart;\n e.ue.t._de = G.domContentLoadedEventEnd;\n e.ue.t._dc = G.domComplete;\n e.ue.t.ld_ = G.loadEventStart;\n e.ue.t._ld = G.loadEventEnd;\n }\n ;\n ;\n if (F) {\n e.ue.t.ty = ((F.type + e.ue.t0));\n e.ue.t.rc = ((F.redirectCount + e.ue.t0));\n if (e.ue.tag) {\n e.ue.tag(((F.redirectCount ? \"redirect\" : \"nonredirect\")));\n }\n ;\n ;\n }\n ;\n ;\n e.ue.collected = 1;\n }\n ;\n ;\n };\n ;\n if (((!n && ((typeof s != \"undefined\"))))) {\n return;\n }\n ;\n ;\n {\n var fin3keys = ((window.top.JSBNG_Replay.forInKeys)((s))), fin3i = (0);\n var j;\n for (; (fin3i < fin3keys.length); (fin3i++)) {\n ((j) = (fin3keys[fin3i]));\n {\n d(j, n, s[j]);\n };\n };\n };\n ;\n c(\"pc\", n, s);\n var y = ((d(\"id\", n) || e.ue.id)), q = ((((((((((((e.ue.url + \"?\")) + t)) + \"&v=\")) + e.ue.v)) + \"&id=\")) + y)), o = ((d(\"ctb\", n) || d(\"wb\", n)));\n if (o) {\n q += ((\"&ctb=\" + o));\n }\n ;\n ;\n if (((e.ueinit > 1))) {\n q += ((\"&ic=\" + e.ueinit));\n }\n ;\n ;\n var B = ((h.JSBNG__performance || h.JSBNG__webkitPerformance)), z = e.ue.bfini, r = ((((B && B.navigation)) && ((B.navigation.type == 2)))), p = ((((n && ((n != y)))) && d(\"ctb\", n))), k;\n if (!p) {\n if (((z && ((z > 1))))) {\n q += ((\"&bft=\" + ((z - 1))));\n q += \"&bfform=1\";\n }\n else {\n if (r) {\n q += \"&bft=1\";\n }\n ;\n ;\n }\n ;\n ;\n if (r) {\n q += \"&bfnt=1\";\n }\n ;\n ;\n }\n ;\n ;\n if (((((e.ue._fi && ((t == \"at\")))) && ((!n || ((n == y))))))) {\n q += e.ue._fi();\n }\n ;\n ;\n if (((((((t == \"ld\")) || ((t == \"ul\")))) && ((!n || ((n == y))))))) {\n if (((t == \"ld\"))) {\n if (((h.JSBNG__onbeforeunload && h.JSBNG__onbeforeunload.isUeh))) {\n h.JSBNG__onbeforeunload = null;\n }\n ;\n ;\n ue.r.ul = e.ue_onbful;\n if (((e.ue_onbful == 3))) {\n i(\"beforeunload\", e.onUl);\n }\n ;\n ;\n if (((JSBNG__document.ue_backdetect && JSBNG__document.ue_backdetect.ue_back))) {\n JSBNG__document.ue_backdetect.ue_back.value++;\n }\n ;\n ;\n if (e._uess) {\n k = e._uess();\n }\n ;\n ;\n }\n ;\n ;\n if (((((e.ue_navtiming && B)) && B.timing))) {\n d(\"ctb\", y, \"1\");\n if (((e.ue_navtiming == 1))) {\n e.ue.t.tc = B.timing.navigationStart;\n }\n ;\n ;\n }\n ;\n ;\n if (B) {\n C(B);\n }\n ;\n ;\n e.ue.t.hob = e.ue_hob;\n e.ue.t.hoe = e.ue_hoe;\n if (e.ue.ifr) {\n q += \"&ifr=1\";\n }\n ;\n ;\n }\n ;\n ;\n c(t, n, s);\n var x = ((((((t == \"ld\")) && n)) && d(\"wb\", n))), A = 1;\n if (x) {\n d(\"wb\", n, 2);\n }\n ;\n ;\n {\n var fin4keys = ((window.top.JSBNG_Replay.forInKeys)((e.ue.sc))), fin4i = (0);\n var v;\n for (; (fin4i < fin4keys.length); (fin4i++)) {\n ((v) = (fin4keys[fin4i]));\n {\n if (((d(\"wb\", v) == 1))) {\n A = 0;\n break;\n }\n ;\n ;\n };\n };\n };\n ;\n if (x) {\n if (((!e.ue.s && ((e.ue_swi || ((A && !e.ue_swi))))))) {\n q = l(q, null);\n }\n else {\n return;\n }\n ;\n ;\n }\n else {\n if (((((A && !e.ue_swi)) || e.ue_swi))) {\n var D = l(q, null);\n if (((D != q))) {\n e.ue.b = D;\n }\n ;\n ;\n }\n ;\n ;\n if (k) {\n q += k;\n }\n ;\n ;\n q = l(q, ((n || e.ue.id)));\n }\n ;\n ;\n if (((e.ue.b || x))) {\n {\n var fin5keys = ((window.top.JSBNG_Replay.forInKeys)((e.ue.sc))), fin5i = (0);\n var v;\n for (; (fin5i < fin5keys.length); (fin5i++)) {\n ((v) = (fin5keys[fin5i]));\n {\n if (((d(\"wb\", v) == 2))) {\n delete e.ue.sc[v];\n }\n ;\n ;\n };\n };\n };\n ;\n }\n ;\n ;\n var u = 0;\n if (!x) {\n e.ue.s = 0;\n var m = e.ue_err;\n if (((((m && ((m.ec > 0)))) && ((m.pec < m.ec))))) {\n m.pec = m.ec;\n q += ((\"&ec=\" + m.ec));\n }\n ;\n ;\n u = d(\"ctb\", n);\n d(\"t\", n, {\n });\n }\n ;\n ;\n if (((!h.amznJQ && e.ue.tag))) {\n e.ue.tag(\"noAmznJQ\");\n }\n ;\n ;\n if (((((q && e.ue.tag)) && ((e.ue.tag().length > 0))))) {\n q += ((\"&csmtags=\" + e.ue.tag().join(\"|\")));\n e.ue.tag = e.ue.tagC();\n }\n ;\n ;\n if (((((q && e.ue.viz)) && ((e.ue.viz.length > 0))))) {\n q += ((\"&viz=\" + e.ue.viz.join(\"|\")));\n e.ue.viz = [];\n }\n ;\n ;\n e.ue.a = q;\n w(q, t, u, x);\n };\n;\n function a(j, k, l) {\n l = ((l || h));\n if (l.JSBNG__addEventListener) {\n l.JSBNG__addEventListener(j, k, false);\n }\n else {\n if (l.JSBNG__attachEvent) {\n l.JSBNG__attachEvent(((\"JSBNG__on\" + j)), k);\n }\n ;\n ;\n }\n ;\n ;\n };\n;\n ue.attach = a;\n function i(j, k, l) {\n l = ((l || h));\n if (l.JSBNG__removeEventListener) {\n l.JSBNG__removeEventListener(j, k);\n }\n else {\n if (l.JSBNG__detachEvent) {\n l.JSBNG__detachEvent(((\"JSBNG__on\" + j)), k);\n }\n ;\n ;\n }\n ;\n ;\n };\n;\n ue.detach = i;\n function f() {\n if (((e.ue_log_f && e.ue.log))) {\n e.ue.log({\n f: \"uei\"\n }, \"csm\");\n }\n ;\n ;\n var l = e.ue.r;\n function k(n) {\n return function() {\n if (!l[n]) {\n l[n] = 1;\n b(n);\n }\n ;\n ;\n };\n };\n ;\n e.onLd = k(\"ld\");\n e.onLdEnd = k(\"ld\");\n e.onUl = k(\"ul\");\n var j = {\n beforeunload: e.onUl,\n JSBNG__stop: k(\"os\")\n };\n {\n var fin6keys = ((window.top.JSBNG_Replay.forInKeys)((j))), fin6i = (0);\n var m;\n for (; (fin6i < fin6keys.length); (fin6i++)) {\n ((m) = (fin6keys[fin6i]));\n {\n g(0, h, m, j[m]);\n };\n };\n };\n ;\n ((e.ue_viz && ue_viz()));\n a(\"load\", e.onLd);\n if (((e.ue_onbful == 3))) {\n a(\"beforeunload\", e.onUl);\n }\n ;\n ;\n c(\"ue\");\n };\n;\n ue.reset = function(k, j) {\n if (!k) {\n return;\n }\n ;\n ;\n ((e.ue_cel && e.ue_cel.reset()));\n e.ue.t0 = +new JSBNG__Date();\n e.ue.rid = k;\n e.ue.id = k;\n e.ue.fc_idx = {\n };\n e.ue.viz = [];\n };\n e.uei = f;\n e.ueh = g;\n e.ues = d;\n e.uet = c;\n e.uex = b;\n f();\n})(ue_csm, window);\nue_csm.ue_hoe = +new JSBNG__Date();\nue_csm.ue_hob = ((ue_csm.ue_hob || +new JSBNG__Date()));\n(function(b) {\n var a = b.ue;\n a.rid = b.ue_id;\n a.sid = b.ue_sid;\n a.mid = b.ue_mid;\n a.furl = b.ue_furl;\n a.sn = b.ue_sn;\n a.lr = [];\n a.log = function(e, d, c) {\n if (((a.lr.length == 500))) {\n return;\n }\n ;\n ;\n a.lr.push([\"l\",e,d,c,a.d(),a.rid,]);\n };\n a.d = function(c) {\n return ((+new JSBNG__Date - ((c ? 0 : a.t0))));\n };\n})(ue_csm);\nue_csm.ue_hoe = +new JSBNG__Date();");
+// 858
+o2 = {};
+// 859
+f876774570_65.returns.push(o2);
+// 860
+// undefined
+o2 = null;
+// 857
+geval("(function() {\n var i = new JSBNG__Image;\n i.src = \"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\";\n})();");
+// 861
+geval("var amznJQ, jQueryPatchIPadOffset = false;\n(function() {\n function f(x) {\n return function() {\n x.push(arguments);\n };\n };\n;\n function ch(y) {\n return String.fromCharCode(y);\n };\n;\n var a = [], c = [], cs = [], d = [], l = [], o = [], s = [], p = [], t = [];\n amznJQ = {\n _timesliceJS: false,\n _a: a,\n _c: c,\n _cs: cs,\n _d: d,\n _l: l,\n _o: o,\n _s: s,\n _pl: p,\n addLogical: f(l),\n addStyle: f(s),\n addPL: f(p),\n available: f(a),\n chars: {\n EOL: ch(10),\n SQUOTE: ch(39),\n DQUOTE: ch(34),\n BACKSLASH: ch(92),\n YEN: ch(165)\n },\n completedStage: f(cs),\n declareAvailable: f(d),\n onCompletion: f(c),\n onReady: f(o),\n strings: {\n }\n };\n}());");
+// 862
+geval("function amz_js_PopWin(url, JSBNG__name, options) {\n var ContextWindow = window.open(url, JSBNG__name, options);\n ContextWindow.JSBNG__focus();\n return false;\n};\n;");
+// 863
+geval("function showElement(id) {\n var elm = JSBNG__document.getElementById(id);\n if (elm) {\n elm.style.visibility = \"visible\";\n if (((elm.getAttribute(\"JSBNG__name\") == \"heroQuickPromoDiv\"))) {\n elm.style.display = \"block\";\n }\n ;\n ;\n }\n;\n;\n};\n;\nfunction hideElement(id) {\n var elm = JSBNG__document.getElementById(id);\n if (elm) {\n elm.style.visibility = \"hidden\";\n if (((elm.getAttribute(\"JSBNG__name\") == \"heroQuickPromoDiv\"))) {\n elm.style.display = \"none\";\n }\n ;\n ;\n }\n;\n;\n};\n;\nfunction showHideElement(h_id, div_id) {\n var hiddenTag = JSBNG__document.getElementById(h_id);\n if (hiddenTag) {\n showElement(div_id);\n }\n else {\n hideElement(div_id);\n }\n;\n;\n};\n;\nwindow.isBowserFeatureCleanup = 1;\nvar touchDeviceDetected = false;\nvar CSMReqs = {\n af: {\n c: 2,\n e: \"amznJQ.AboveTheFold\",\n p: \"atf\"\n },\n cf: {\n c: 2,\n e: \"amznJQ.criticalFeature\",\n p: \"cf\"\n }\n};\nfunction setCSMReq(a) {\n a = a.toLowerCase();\n var b = CSMReqs[a];\n if (((b && ((--b.c == 0))))) {\n if (((typeof uet == \"function\"))) {\n uet(a);\n }\n ;\n ;\n ;\n if (b.e) {\n amznJQ.completedStage(b.e);\n }\n ;\n ;\n ;\n if (((typeof P != \"undefined\"))) {\n P.register(b.p);\n }\n ;\n ;\n ;\n }\n;\n;\n};\n;");
+// 864
+geval("var gbEnableTwisterJS = 0;\nvar isTwisterPage = 0;");
+// 865
+geval("if (window.amznJQ) {\n amznJQ.addLogical(\"csm-base\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/csm-base/csm-base-min-1614510824._V1_.js\",]);\n amznJQ.available(\"csm-base\", function() {\n \n });\n}\n;\n;");
+// 866
+geval("amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n amznJQ.available(\"navbarJS-jQuery\", function() {\n \n });\n amznJQ.available(\"finderFitsJS\", function() {\n \n });\n amznJQ.available(\"twister\", function() {\n \n });\n amznJQ.available(\"swfjs\", function() {\n \n });\n});");
+// 867
+geval("(function(d) {\n var e = function(d) {\n function b(f, c, b) {\n f[b] = function() {\n a._replay.push(c.concat({\n m: b,\n a: [].slice.call(arguments)\n }));\n };\n };\n ;\n var a = {\n };\n a._sourceName = d;\n a._replay = [];\n a.getNow = function(a, b) {\n return b;\n };\n a.when = function() {\n var a = [{\n m: \"when\",\n a: [].slice.call(arguments)\n },], c = {\n };\n b(c, a, \"run\");\n b(c, a, \"declare\");\n b(c, a, \"publish\");\n b(c, a, \"build\");\n return c;\n };\n b(a, [], \"declare\");\n b(a, [], \"build\");\n b(a, [], \"publish\");\n b(a, [], \"importEvent\");\n e._shims.push(a);\n return a;\n };\n e._shims = [];\n ((d.$Nav || (d.$Nav = e(\"rcx-nav\"))));\n ((d.$Nav.make || (d.$Nav.make = e)));\n})(window);\nwindow.$Nav.when(\"exposeSBD.enable\", \"img.horz\", \"img.vert\", \"img.spin\", \"$popover\", \"btf.full\").run(function(d, e, j, b) {\n function a(a) {\n switch (typeof a) {\n case \"boolean\":\n h = a;\n i = !0;\n break;\n case \"function\":\n g = a;\n c++;\n break;\n default:\n c++;\n };\n ;\n ((((i && ((2 < c)))) && g(h)));\n };\n;\n function f(a, b) {\n var c = new JSBNG__Image;\n ((b && (c.JSBNG__onload = b)));\n c.src = a;\n return c;\n };\n;\n var c = 0, g, h, i = !1;\n f(e, ((d && a)));\n f(j, ((d && a)));\n window.$Nav.declare(\"protectExposeSBD\", a);\n window.$Nav.declare(\"preloadSpinner\", function() {\n f(b);\n });\n});\n((window.amznJQ && amznJQ.available(\"navbarJS-beacon\", function() {\n\n})));\nwindow._navbarSpriteUrl = \"http://g-ecx.images-amazon.com/images/G/01/gno/beacon/BeaconSprite-US-01._V397411194_.png\";\n$Nav.importEvent(\"navbarJS-beacon\");\n$Nav.importEvent(\"NavAuiJS\");\n$Nav.declare(\"exposeSBD.enable\", false);\n$Nav.declare(\"img.spin\", \"http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/snake._V192571611_.gif\");\n$Nav.when(\"$\").run(function($) {\n var ie6 = (($.browser.msie && ((parseInt($.browser.version) <= 6))));\n $Nav.declare(\"img.horz\", ((ie6 ? \"http://g-ecx.images-amazon.com/images/G/01/gno/beacon/nav-pop-8bit-h._V155961234_.png\" : \"http://g-ecx.images-amazon.com/images/G/01/gno/beacon/nav-pop-h-v2._V137157005_.png\")));\n $Nav.declare(\"img.vert\", ((ie6 ? \"http://g-ecx.images-amazon.com/images/G/01/gno/beacon/nav-pop-8bit-v._V155961234_.png\" : \"http://g-ecx.images-amazon.com/images/G/01/gno/beacon/nav-pop-v-v2._V137157005_.png\")));\n});");
+// 869
+o2 = {};
+// 870
+f876774570_0.returns.push(o2);
+// 871
+o2.getTime = f876774570_400;
+// undefined
+o2 = null;
+// 872
+f876774570_400.returns.push(1374695829400);
+// 868
+geval("window.Navbar = function(options) {\n options = ((options || {\n }));\n this._loadedCount = 0;\n this._hasUedata = ((typeof uet == \"function\"));\n this._finishLoadQuota = ((options[\"finishLoadQuota\"] || 2));\n this._startedLoading = false;\n this._btfFlyoutContents = [];\n this._saFlyoutHorizOffset = -16;\n this._saMaskHorizOffset = -17;\n this._sbd_config = {\n major_delay: 300,\n minor_delay: 100,\n target_slop: 25\n };\n ((window.$Nav && $Nav.declare(\"config.sbd\", this._sbd_config)));\n this.addToBtfFlyoutContents = function(JSBNG__content, callback) {\n this._btfFlyoutContents.push({\n JSBNG__content: JSBNG__content,\n callback: callback\n });\n };\n this.getBtfFlyoutContents = function() {\n return this._btfFlyoutContents;\n };\n this.loading = function() {\n if (((!this._startedLoading && this._isReportingEvents()))) {\n uet(\"ns\");\n }\n ;\n ;\n this._startedLoading = true;\n };\n this.componentLoaded = function() {\n this._loadedCount++;\n if (((((this._startedLoading && this._isReportingEvents())) && ((this._loadedCount == this._finishLoadQuota))))) {\n uet(\"ne\");\n }\n ;\n ;\n };\n this._isReportingEvents = function() {\n return this._hasUedata;\n };\n this.browsepromos = {\n };\n this.issPromos = [];\n var le = {\n };\n this.logEv = function(d, o) {\n \n };\n ((window.$Nav && $Nav.declare(\"logEvent\", this.logEv)));\n};\nwindow._navbar = new Navbar({\n finishLoadQuota: 1\n});\n_navbar.loading();\n((window.$Nav && $Nav.declare(\"config.lightningDeals\", ((window._navbar._lightningDealsData || {\n})))));\n((window.$Nav && $Nav.declare(\"config.swmStyleData\", ((window._navbar._swmStyleData || {\n})))));\n_navbar._ajaxProximity = [141,7,60,150,];\n((window.$Nav && $Nav.declare(\"config.ajaxProximity\", window._navbar._ajaxProximity)));");
+// 874
+o2 = {};
+// 875
+f876774570_0.returns.push(o2);
+// 876
+o2.getTime = f876774570_400;
+// undefined
+o2 = null;
+// 877
+f876774570_400.returns.push(1374695829403);
+// 873
+geval("(function(w, d, e, o) {\n var i = \"DAnsm\";\n if (w.uDA = ((((w.ues && w.uet)) && w.uex))) {\n ues(\"wb\", i, 1);\n uet(\"bb\", i, {\n wb: 1\n });\n }\n;\n;\n var methodToBind = \"amznJQ.onCompletion\";\n if (((((!w.amznJQ && ((methodToBind == \"amznJQ.onCompletion\")))) && ((typeof (P) != \"undefined\"))))) {\n P.when(\"amznJQ.criticalFeature\").execute(function() {\n o = w.DA;\n if (!o) {\n o = w.DA = [];\n e = d.createElement(\"script\");\n e.src = \"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/DA-us/DA-us-1236030632._V380600703_.js\";\n d.getElementsByTagName(\"head\")[0].appendChild(e);\n }\n ;\n ;\n o.push({\n c: 3961,\n a: \"site=amazon.us;pt=Detail;slot=nav-sitewide-msg;pid=0596517742;prid=0JNNCCYK0E23P11J4NSE;arid=7716c88fbe0c4f63a1e2567d4e33f705\",\n w: 415,\n h: 50,\n f: 1,\n g: \"right\",\n r: 1,\n v: 1,\n y: \"na\",\n u: \"amzn.us.dp.atn.books/computer_internet;sz=300x31;oe=ISO-8859-1;u=7716c88fbe0c4f63a1e2567d4e33f705;s=i0;s=i1;s=i2;s=i3;s=i4;s=i5;s=i6;s=i7;s=i9;s=m1;s=m4;s=u4;s=u5;s=u10;s=u35;z=1716;z=1688;z=1801;z=1782;s=3072;s=32;s=1009;cid=vegas2;dc_ref=http%3A%2F%2Fwww.amazon.com;tile=1;ord=0JNNCCYK0E23P11J4NSE;cid=vegas2\",\n q: \"N4215\"\n });\n });\n }\n else {\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n o = w.DA;\n if (!o) {\n o = w.DA = [];\n e = d.createElement(\"script\");\n e.src = \"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/DA-us/DA-us-1236030632._V380600703_.js\";\n d.getElementsByTagName(\"head\")[0].appendChild(e);\n }\n ;\n ;\n o.push({\n c: 3961,\n a: \"site=amazon.us;pt=Detail;slot=nav-sitewide-msg;pid=0596517742;prid=0JNNCCYK0E23P11J4NSE;arid=7716c88fbe0c4f63a1e2567d4e33f705\",\n w: 415,\n h: 50,\n f: 1,\n g: \"right\",\n r: 1,\n v: 1,\n y: \"na\",\n u: \"amzn.us.dp.atn.books/computer_internet;sz=300x31;oe=ISO-8859-1;u=7716c88fbe0c4f63a1e2567d4e33f705;s=i0;s=i1;s=i2;s=i3;s=i4;s=i5;s=i6;s=i7;s=i9;s=m1;s=m4;s=u4;s=u5;s=u10;s=u35;z=1716;z=1688;z=1801;z=1782;s=3072;s=32;s=1009;cid=vegas2;dc_ref=http%3A%2F%2Fwww.amazon.com;tile=1;ord=0JNNCCYK0E23P11J4NSE;cid=vegas2\",\n q: \"N4215\"\n });\n });\n }\n;\n;\n})(window, JSBNG__document);");
+// 879
+o2 = {};
+// 880
+f876774570_0.returns.push(o2);
+// 881
+o2.getTime = f876774570_400;
+// 882
+f876774570_400.returns.push(1374695829426);
+// 883
+o4 = {};
+// 884
+f876774570_65.returns.push(o4);
+// 885
+// 886
+// 878
+geval("_navbar.dynamicMenuUrl = \"/gp/navigation/ajax/dynamicmenu.html\";\n((window.$Nav && $Nav.declare(\"config.dynamicMenuUrl\", _navbar.dynamicMenuUrl)));\n_navbar.dismissNotificationUrl = \"/gp/navigation/ajax/dismissnotification.html\";\n((window.$Nav && $Nav.declare(\"config.dismissNotificationUrl\", _navbar.dismissNotificationUrl)));\n_navbar.dynamicMenus = true;\n((window.$Nav && $Nav.declare(\"config.enableDynamicMenus\", true)));\n_navbar.recordEvUrl = \"/gp/navigation/ajax/recordevent.html\";\n_navbar.recordEvInterval = 60000;\n_navbar.sid = \"181-0531756-0630505\";\n_navbar.rid = \"0JNNCCYK0E23P11J4NSE\";\n((window.$Nav && $Nav.declare(\"config.recordEvUrl\", _navbar.recordEvUrl)));\n((window.$Nav && $Nav.declare(\"config.recordEvInterval\", 60000)));\n((window.$Nav && $Nav.declare(\"config.sessionId\", _navbar.sid)));\n((window.$Nav && $Nav.declare(\"config.requestId\", _navbar.rid)));\n_navbar.readyOnATF = false;\n((window.$Nav && $Nav.declare(\"config.readyOnATF\", _navbar.readyOnATF)));\n_navbar.dynamicMenuArgs = {\n isPrime: 0,\n primeMenuWidth: 310\n};\n((window.$Nav && $Nav.declare(\"config.dynamicMenuArgs\", ((_navbar.dynamicMenuArgs || {\n})))));\n((window.$Nav && $Nav.declare(\"config.signOutText\", _navbar.signOutText)));\n((window.$Nav && $Nav.declare(\"config.yourAccountPrimeURL\", _navbar.yourAccountPrimer)));\nif (((window.amznJQ && amznJQ.available))) {\n amznJQ.available(\"jQuery\", function() {\n if (!jQuery.isArray) {\n jQuery.isArray = function(o) {\n return ((Object.prototype.toString.call(o) === \"[object Array]\"));\n };\n }\n ;\n ;\n });\n}\n;\n;\nif (((typeof uet == \"function\"))) {\n uet(\"bb\", \"iss-init-pc\", {\n wb: 1\n });\n}\n;\n;\nif (((!window.$SearchJS && window.$Nav))) {\n window.$SearchJS = $Nav.make();\n}\n;\n;\nif (window.$SearchJS) {\n var iss, issHost = \"completion.amazon.com/search/complete\", issMktid = \"1\", issSearchAliases = [\"aps\",\"stripbooks\",\"popular\",\"apparel\",\"electronics\",\"sporting\",\"garden\",\"videogames\",\"toys-and-games\",\"jewelry\",\"digital-text\",\"digital-music\",\"watches\",\"grocery\",\"hpc\",\"instant-video\",\"baby-products\",\"office-products\",\"software\",\"magazines\",\"tools\",\"automotive\",\"misc\",\"industrial\",\"mi\",\"pet-supplies\",\"digital-music-track\",\"digital-music-album\",\"mobile\",\"mobile-apps\",\"movies-tv\",\"music-artist\",\"music-album\",\"music-song\",\"stripbooks-spanish\",\"electronics-accessories\",\"photo\",\"audio-video\",\"computers\",\"furniture\",\"kitchen\",\"audiobooks\",\"beauty\",\"shoes\",\"arts-crafts\",\"appliances\",\"gift-cards\",\"pets\",\"outdoor\",\"lawngarden\",\"collectibles\",\"financial\",\"wine\",], updateISSCompletion = function() {\n iss.updateAutoCompletion();\n };\n $SearchJS.importEvent(\"search-js-autocomplete-lib\");\n $SearchJS.when(\"jQuery\", \"search-js-autocomplete-lib\").run(function(jQuery) {\n $SearchJS.importEvent(\"search-csl\");\n $SearchJS.when(\"search-csl\").run(function(searchCSL) {\n if (!searchCSL) {\n searchCSL = jQuery.searchCSL;\n }\n ;\n ;\n searchCSL.init(\"Detail\", \"0JNNCCYK0E23P11J4NSE\");\n var ctw = [function() {\n var searchSelect = jQuery(\"select.searchSelect\"), nodeRegEx = new RegExp(/node=\\d+/i);\n return function() {\n var currDropdownSel = searchSelect.children();\n return ((((currDropdownSel.attr(\"data-root-alias\") || nodeRegEx.test(currDropdownSel.attr(\"value\")))) ? \"16458\" : undefined));\n };\n }(),];\n iss = new AutoComplete({\n src: issHost,\n mkt: issMktid,\n aliases: issSearchAliases,\n fb: 1,\n dd: \"select.searchSelect\",\n dupElim: 0,\n deptText: \"in {department}\",\n sugText: \"Search suggestions\",\n sc: 1,\n ime: 0,\n imeEnh: 0,\n imeSpacing: 0,\n isNavInline: 1,\n iac: 0,\n scs: 0,\n np: 4,\n doCTW: function(e) {\n for (var i = 0; ((i < ctw.length)); i++) {\n searchCSL.addWlt(((ctw[i].call ? ctw[i](e) : ctw[i])));\n };\n ;\n }\n });\n $SearchJS.publish(\"search-js-autocomplete\", iss);\n if (((((typeof uet == \"function\")) && ((typeof uex == \"function\"))))) {\n uet(\"be\", \"iss-init-pc\", {\n wb: 1\n });\n uex(\"ld\", \"iss-init-pc\", {\n wb: 1\n });\n }\n ;\n ;\n });\n });\n}\n;\n;\n((window.amznJQ && amznJQ.declareAvailable(\"navbarInline\")));\n((window.$Nav && $Nav.declare(\"nav.inline\")));\n((window.amznJQ && amznJQ.available(\"jQuery\", function() {\n amznJQ.available(\"navbarJS-beacon\", function() {\n \n });\n})));\n_navbar._endSpriteImage = new JSBNG__Image();\n_navbar._endSpriteImage.JSBNG__onload = function() {\n _navbar.componentLoaded();\n};\n_navbar._endSpriteImage.src = window._navbarSpriteUrl;\n((window.$Nav && $Nav.declare(\"config.autoFocus\", false)));\n((window.$Nav && $Nav.declare(\"config.responsiveGW\", !!window._navbar.responsivegw)));\n((window.$Nav && $Nav.when(\"$\", \"flyout.JSBNG__content\").run(function(jQuery) {\n jQuery(\"#nav_amabotandroid\").parent().html(\"Get Garden of Orbs free today\");\n})));\n_navbar.browsepromos[\"android\"] = {\n destination: \"/gp/product/ref=nav_sap_mas_13_07_24?ie=UTF8&ASIN=B006QZD2ZS\",\n productTitle2: \"(List Price: $0.99)\",\n button: \"Learn more\",\n price: \"FREE\",\n productTitle: \"Garden of Orbs\",\n headline: \"Free App of the Day\",\n image: \"http://ecx.images-amazon.com/images/I/81pCw%2BSz8yL._SS100_.png\"\n};\n_navbar.browsepromos[\"audible\"] = {\n width: 477,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"-19\",\n height: 470,\n image: \"http://g-ecx.images-amazon.com/images/G/01/Audible/en_US/images/creative/amazon/beacon/ADBLECRE_2309_Beacon_Headphones_wool._V382188254_.png\"\n};\n_navbar.browsepromos[\"automotive-industrial\"] = {\n width: 491,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"0\",\n height: 472,\n image: \"http://g-ecx.images-amazon.com/images/G/01/BISS/stores/homepage/flyouts/EducationSupplyGNO3._V379317833_.png\"\n};\n_navbar.browsepromos[\"books\"] = {\n width: 499,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"0\",\n height: 410,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/books/flyout/0219-bookself-faves-40_flyout._V374727339_.png\"\n};\n_navbar.browsepromos[\"clothing-shoes-jewelry\"] = {\n width: 460,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"-20\",\n height: 472,\n image: \"http://g-ecx.images-amazon.com/images/G/01/AMAZON_FASHION/2013/GATEWAY/BTS1/FLYOUTS/FO_mens_bts1._V381438785_.png\"\n};\n_navbar.browsepromos[\"cloud-drive\"] = {\n width: 480,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"0\",\n height: 472,\n image: \"http://g-ecx.images-amazon.com/images/G/01/digital/adrive/images/gno/iOs_GNO1._V385462964_.jpg\"\n};\n_navbar.browsepromos[\"digital-games-software\"] = {\n width: 425,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"-21\",\n height: 402,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/digital-video-games/flyout/5-24_5192013-dsw-msft_flyout._V384615770_.png\"\n};\n_navbar.browsepromos[\"electronics-computers\"] = {\n width: 499,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"0\",\n height: 136,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/ce_accessories/flyout/7_12_13_electronics-trade-in_GNO._V378716571_.png\"\n};\n_navbar.browsepromos[\"grocery-health-beauty\"] = {\n width: 523,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"-39\",\n height: 356,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/grocery/flyout/0621-sns-flyout-update._V381061838_.png\"\n};\n_navbar.browsepromos[\"home-garden-tools\"] = {\n width: 492,\n promoType: \"wide\",\n vertOffset: 0,\n horizOffset: 0,\n height: 287,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/home/flyout/7-9_furniture-photo-shoot_flyout._V379916182_.png\"\n};\n_navbar.browsepromos[\"instant-video\"] = {\n width: 500,\n promoType: \"wide\",\n vertOffset: \"-10\",\n horizOffset: \"-20\",\n height: 495,\n image: \"http://g-ecx.images-amazon.com/images/G/01/digital/video/merch/GNOflyout/AIV_GNO-Flyout_Oblivion._V379395299_.png\"\n};\n_navbar.browsepromos[\"kindle\"] = {\n width: 440,\n promoType: \"wide\",\n vertOffset: \"-35\",\n horizOffset: \"28\",\n height: 151,\n image: \"http://g-ecx.images-amazon.com/images/G/01/gno/beacon/merch/browse/gno-family-440x151._V389693769_.png\"\n};\n_navbar.browsepromos[\"movies-music-games\"] = {\n width: 532,\n promoType: \"wide\",\n vertOffset: \"-23\",\n horizOffset: \"-38\",\n height: 495,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/music/flyout/0528-evergreen-music-stack-flyout._V381699570_.png\"\n};\n_navbar.browsepromos[\"mp3\"] = {\n width: 516,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"-21\",\n height: 472,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/mp3/flyout/marc_anthony_flyout._V379296314_.png\"\n};\n_navbar.browsepromos[\"sports-outdoors\"] = {\n width: 530,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"-32\",\n height: 472,\n image: \"http://g-ecx.images-amazon.com/images/G/01/stores/sport-goods/sports-apparel/0708-sports-apparel-savings-flyout_v2._V379391408_.png\"\n};\n_navbar.browsepromos[\"toys-kids-baby\"] = {\n width: 479,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"0\",\n height: 395,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/babyregistry/2013sweepstakes/flyout/baby_2013sweeps_flyout._V381448744_.jpg\"\n};\n((window.$Nav && $Nav.declare(\"config.browsePromos\", window._navbar.browsepromos)));\n((window.amznJQ && amznJQ.declareAvailable(\"navbarPromosContent\")));");
+// 889
+o5 = {};
+// 890
+f876774570_65.returns.push(o5);
+// 891
+// 887
+geval("(function() {\n var availableWidth = ((((window.JSBNG__innerWidth || JSBNG__document.body.offsetWidth)) - 1));\n;\n var widths = [1280,];\n var imageHashMain = [\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",];\n var imageObj = new JSBNG__Image();\n var sz = 0;\n for (; ((((sz < widths.length)) && ((availableWidth >= widths[sz])))); sz++) {\n ;\n };\n;\n imageObj.src = imageHashMain[sz];\n})();");
+// 892
+geval("function e078472349c4006daca6d88d77fc9955fc8dc2f56(JSBNG__event) {\n;\n if (((typeof measureATFDiff == \"function\"))) {\n measureATFDiff(new JSBNG__Date().getTime(), 0);\n }\n;\n;\n;\n if (((typeof setCSMReq == \"function\"))) {\n setCSMReq(\"af\");\n setCSMReq(\"cf\");\n }\n else if (((typeof uet == \"function\"))) {\n uet(\"af\");\n uet(\"cf\");\n amznJQ.completedStage(\"amznJQ.AboveTheFold\");\n }\n \n;\n;\n};\n;");
+// 893
+geval("function e22425f4fcd4847606f790e6f116625d0725e88e9(JSBNG__event) {\n return false;\n};\n;");
+// 895
+f876774570_410 = function() { return f876774570_410.returns[f876774570_410.inst++]; };
+f876774570_410.returns = [];
+f876774570_410.inst = 0;
+// 896
+o0.getElementById = f876774570_410;
+// 897
+o6 = {};
+// 898
+f876774570_410.returns.push(o6);
+// 901
+o7 = {};
+// 902
+f876774570_410.returns.push(o7);
+// 903
+o7.className = "size0 bottom-thumbs main-image-widget-for-dp standard";
+// 904
+// 905
+// 906
+// 907
+o8 = {};
+// 908
+o6.style = o8;
+// 909
+// 894
+geval("var colorImages = {\n initial: [{\n large: \"http://ecx.images-amazon.com/images/I/51gdVAEfPUL.jpg\",\n landing: [\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",],\n hiRes: \"http://ecx.images-amazon.com/images/I/814biaGJWaL._SL1500_.jpg\",\n thumb: \"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._SS30_.jpg\",\n main: [\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",]\n },]\n};\n(function(doc) {\n var mi = doc.getElementById(\"main-image\");\n var w = ((window.JSBNG__innerWidth || doc.body.offsetWidth));\n w--;\n var widths = [1280,];\n var sz = 0;\n for (; ((((sz < 1)) && ((w >= widths[sz])))); sz++) {\n ;\n };\n;\n if (((sz || 1))) {\n var miw = doc.getElementById(\"main-image-widget\");\n miw.className = miw.className.replace(/size[0-9]+/, ((\"size\" + sz)));\n if (((sz && 1))) {\n mi.width = 300;\n mi.height = 300;\n }\n else if (((!sz && 1))) {\n mi.width = 300;\n mi.height = 300;\n }\n \n ;\n ;\n amznJQ.onCompletion(\"amznJQ.AboveTheFold\", function() {\n var src = colorImages.initial[0].main[sz];\n var img = new JSBNG__Image();\n img.JSBNG__onload = function() {\n var clone = mi.cloneNode(true);\n clone.src = src;\n clone.removeAttribute(\"width\");\n clone.removeAttribute(\"height\");\n clone.removeAttribute(\"JSBNG__onload\");\n mi.parentNode.replaceChild(clone, mi);\n mi = clone;\n amznJQ.declareAvailable(\"ImageBlockATF\");\n };\n img.src = src;\n });\n }\n else {\n amznJQ.declareAvailable(\"ImageBlockATF\");\n }\n;\n;\n mi.style.display = \"inline\";\n})(JSBNG__document);");
+// 910
+geval("function ebc39a21f34d30ea674ee1a51ae14d6423dc6ad98(JSBNG__event) {\n if (((typeof (SitbReader) != \"undefined\"))) {\n SitbReader.LightboxActions.openReader(\"sib_dp_ptu\");\n return false;\n }\n;\n;\n};\n;");
+// 911
+geval("var legacyOnSelectedQuantityChange = function() {\n if (((jQuery(\"#pricePlusShippingQty\").length > 0))) {\n jQuery.ajax({\n url: \"/gp/product/du/quantity-sip-update.html\",\n data: {\n qt: jQuery(\"#quantityDropdownDiv select\").val(),\n a: jQuery(\"#ASIN\").val(),\n me: jQuery(\"#merchantID\").val()\n },\n dataType: \"html\",\n success: function(sipHtml) {\n jQuery(\"#pricePlusShippingQty\").html(sipHtml);\n }\n });\n }\n;\n;\n};\namznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#quantityDropdownDiv select\").change(legacyOnSelectedQuantityChange);\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n amznJQ.available(\"quantityDropDownJS\", function() {\n var qdd = new jQuery.fn.quantityDropDown();\n qdd.setPopoverContent(\"\\u003Cstrong\\u003EWe're sorry. This item is limited to %d per customer.\\u003C/strong\\u003E\", \"\\u003Cbr /\\u003E\\u003Cbr /\\u003EWe strive to provide customers with great prices, and sometimes that means we limit quantity to ensure that the majority of customers have an opportunity to order products that have very low prices or a limited supply.\\u003Cbr /\\u003E\\u003Cbr /\\u003EWe may also adjust quantity in checkout if you have recently purchased this item.\");\n });\n });\n});");
+// 912
+geval("amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n amznJQ.available(\"bbopCheckBoxJS\", function() {\n var bbopJS = new jQuery.fn.bbopCheckBox();\n bbopJS.initialize(1, 0, \"To get FREE Two-Day Shipping on this item, proceed to checkout using "Add to Cart"\");\n });\n});");
+// 913
+geval("var gbSecure1Click = true;\nif (((((typeof (gbSecure1Click) != \"undefined\")) && gbSecure1Click))) {\n amznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#oneClickBuyButton\").click(function() {\n var hbbAction = jQuery(\"#handleBuy\").attr(\"action\").replace(\"http:\", \"https:\");\n jQuery(\"#handleBuy\").attr(\"action\", hbbAction);\n return true;\n });\n });\n}\n;\n;");
+// 914
+geval("if (window.gbvar) {\n amznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#oneClickSignInLinkID\").attr(\"href\", window.gbvar);\n });\n}\n else {\n window.gbvar = \"http://jsbngssl.www.amazon.com/gp/product/utility/edit-one-click-pref.html?ie=UTF8&query=selectObb%3Dnew&returnPath=%2Fgp%2Fproduct%2F0596517742\";\n}\n;\n;");
+// 916
+o2 = {};
+// 917
+f876774570_0.returns.push(o2);
+// 918
+o2.getTime = f876774570_400;
+// undefined
+o2 = null;
+// 919
+f876774570_400.returns.push(1374695829426);
+// 920
+o4 = {};
+// 921
+f876774570_65.returns.push(o4);
+// 922
+// 923
+// undefined
+o4 = null;
+// 915
+geval("if (window.gbvar) {\n amznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#oneClickSignInLinkID\").attr(\"href\", window.gbvar);\n });\n}\n else {\n window.gbvar = \"http://jsbngssl.www.amazon.com/gp/product/utility/edit-one-click-pref.html?ie=UTF8&query=selectObb%3Dnew&returnPath=%2Fgp%2Fproduct%2F0596517742\";\n}\n;\n;");
+// 926
+o5 = {};
+// 927
+f876774570_65.returns.push(o5);
+// 928
+// undefined
+o5 = null;
+// 924
+geval("(function() {\n var availableWidth = ((((window.JSBNG__innerWidth || JSBNG__document.body.offsetWidth)) - 1));\n;\n var widths = [1280,];\n var imageHashMain = [\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",];\n var imageObj = new JSBNG__Image();\n var sz = 0;\n for (; ((((sz < widths.length)) && ((availableWidth >= widths[sz])))); sz++) {\n ;\n };\n;\n imageObj.src = imageHashMain[sz];\n})();");
+// 929
+geval("function e078472349c4006daca6d88d77fc9955fc8dc2f56(JSBNG__event) {\n;\n if (((typeof measureATFDiff == \"function\"))) {\n measureATFDiff(new JSBNG__Date().getTime(), 0);\n }\n;\n;\n;\n if (((typeof setCSMReq == \"function\"))) {\n setCSMReq(\"af\");\n setCSMReq(\"cf\");\n }\n else if (((typeof uet == \"function\"))) {\n uet(\"af\");\n uet(\"cf\");\n amznJQ.completedStage(\"amznJQ.AboveTheFold\");\n }\n \n;\n;\n};\n;");
+// 930
+geval("function e22425f4fcd4847606f790e6f116625d0725e88e9(JSBNG__event) {\n return false;\n};\n;");
+// 932
+f876774570_410 = function() { return f876774570_410.returns[f876774570_410.inst++]; };
+f876774570_410.returns = [];
+f876774570_410.inst = 0;
+// 934
+o6 = {};
+// 935
+f876774570_410.returns.push(o6);
+// 938
+o7 = {};
+// 939
+f876774570_410.returns.push(o7);
+// 940
+o7.className = "size0 bottom-thumbs main-image-widget-for-dp standard";
+// 941
+// undefined
+o7 = null;
+// 942
+// 943
+// 944
+o8 = {};
+// 945
+o6.style = o8;
+// undefined
+o6 = null;
+// 946
+// undefined
+o8 = null;
+// 931
+geval("var colorImages = {\n initial: [{\n large: \"http://ecx.images-amazon.com/images/I/51gdVAEfPUL.jpg\",\n landing: [\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",],\n hiRes: \"http://ecx.images-amazon.com/images/I/814biaGJWaL._SL1500_.jpg\",\n thumb: \"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._SS30_.jpg\",\n main: [\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",]\n },]\n};\n(function(doc) {\n var mi = doc.getElementById(\"main-image\");\n var w = ((window.JSBNG__innerWidth || doc.body.offsetWidth));\n w--;\n var widths = [1280,];\n var sz = 0;\n for (; ((((sz < 1)) && ((w >= widths[sz])))); sz++) {\n ;\n };\n;\n if (((sz || 1))) {\n var miw = doc.getElementById(\"main-image-widget\");\n miw.className = miw.className.replace(/size[0-9]+/, ((\"size\" + sz)));\n if (((sz && 1))) {\n mi.width = 300;\n mi.height = 300;\n }\n else if (((!sz && 1))) {\n mi.width = 300;\n mi.height = 300;\n }\n \n ;\n ;\n amznJQ.onCompletion(\"amznJQ.AboveTheFold\", function() {\n var src = colorImages.initial[0].main[sz];\n var img = new JSBNG__Image();\n img.JSBNG__onload = function() {\n var clone = mi.cloneNode(true);\n clone.src = src;\n clone.removeAttribute(\"width\");\n clone.removeAttribute(\"height\");\n clone.removeAttribute(\"JSBNG__onload\");\n mi.parentNode.replaceChild(clone, mi);\n mi = clone;\n amznJQ.declareAvailable(\"ImageBlockATF\");\n };\n img.src = src;\n });\n }\n else {\n amznJQ.declareAvailable(\"ImageBlockATF\");\n }\n;\n;\n mi.style.display = \"inline\";\n})(JSBNG__document);");
+// 947
+geval("function ebc39a21f34d30ea674ee1a51ae14d6423dc6ad98(JSBNG__event) {\n if (((typeof (SitbReader) != \"undefined\"))) {\n SitbReader.LightboxActions.openReader(\"sib_dp_ptu\");\n return false;\n }\n;\n;\n};\n;");
+// 948
+geval("var legacyOnSelectedQuantityChange = function() {\n if (((jQuery(\"#pricePlusShippingQty\").length > 0))) {\n jQuery.ajax({\n url: \"/gp/product/du/quantity-sip-update.html\",\n data: {\n qt: jQuery(\"#quantityDropdownDiv select\").val(),\n a: jQuery(\"#ASIN\").val(),\n me: jQuery(\"#merchantID\").val()\n },\n dataType: \"html\",\n success: function(sipHtml) {\n jQuery(\"#pricePlusShippingQty\").html(sipHtml);\n }\n });\n }\n;\n;\n};\namznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#quantityDropdownDiv select\").change(legacyOnSelectedQuantityChange);\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n amznJQ.available(\"quantityDropDownJS\", function() {\n var qdd = new jQuery.fn.quantityDropDown();\n qdd.setPopoverContent(\"\\u003Cstrong\\u003EWe're sorry. This item is limited to %d per customer.\\u003C/strong\\u003E\", \"\\u003Cbr /\\u003E\\u003Cbr /\\u003EWe strive to provide customers with great prices, and sometimes that means we limit quantity to ensure that the majority of customers have an opportunity to order products that have very low prices or a limited supply.\\u003Cbr /\\u003E\\u003Cbr /\\u003EWe may also adjust quantity in checkout if you have recently purchased this item.\");\n });\n });\n});");
+// 949
+geval("amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n amznJQ.available(\"bbopCheckBoxJS\", function() {\n var bbopJS = new jQuery.fn.bbopCheckBox();\n bbopJS.initialize(1, 0, \"To get FREE Two-Day Shipping on this item, proceed to checkout using "Add to Cart"\");\n });\n});");
+// 950
+geval("var gbSecure1Click = true;\nif (((((typeof (gbSecure1Click) != \"undefined\")) && gbSecure1Click))) {\n amznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#oneClickBuyButton\").click(function() {\n var hbbAction = jQuery(\"#handleBuy\").attr(\"action\").replace(\"http:\", \"https:\");\n jQuery(\"#handleBuy\").attr(\"action\", hbbAction);\n return true;\n });\n });\n}\n;\n;");
+// 951
+geval("if (window.gbvar) {\n amznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#oneClickSignInLinkID\").attr(\"href\", window.gbvar);\n });\n}\n else {\n window.gbvar = \"http://jsbngssl.www.amazon.com/gp/product/utility/edit-one-click-pref.html?ie=UTF8&query=selectObb%3Dnew&returnPath=%2Fgp%2Fproduct%2F0596517742\";\n}\n;\n;");
+// 953
+o2 = {};
+// undefined
+o2 = null;
+// 952
+geval("if (window.gbvar) {\n amznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#oneClickSignInLinkID\").attr(\"href\", window.gbvar);\n });\n}\n else {\n window.gbvar = \"http://jsbngssl.www.amazon.com/gp/product/utility/edit-one-click-pref.html?ie=UTF8&query=selectObb%3Dnew&returnPath=%2Fgp%2Fproduct%2F0596517742\";\n}\n;\n;");
+// 954
+geval("amznJQ.onReady(\"popover\", function() {\n var $ = jQuery;\n});");
+// 955
+geval("amznJQ.onReady(\"jQuery\", function() {\n if (((((((typeof dpLdWidget !== \"undefined\")) && ((typeof dpLdWidget.deal !== \"undefined\")))) && ((typeof dpLdWidget.deal.asins !== \"undefined\"))))) {\n var dealPriceText;\n if (((((((typeof Deal !== \"undefined\")) && ((typeof Deal.Price !== \"undefined\")))) && ((typeof dpLdWidget.deal.asins[0] !== \"undefined\"))))) {\n var dp = dpLdWidget.deal.asins[0].dealPrice;\n if (((dp.price > 396))) {\n dealPriceText = Deal.Price.format(dp);\n jQuery(\"#rbb_bb_trigger .bb_price, #rentalPriceBlockGrid .buyNewOffers .rentPrice\").html(dealPriceText);\n }\n ;\n ;\n }\n ;\n ;\n }\n;\n;\n jQuery(\"#rbbContainer .rbb_section .rbb_header\").click(function(e) {\n var target = jQuery(e.target);\n if (!target.hasClass(\"rbb_header\")) {\n target.parents(\".rbbHeaderLink\").attr(\"href\", \"javascript:void(0);\");\n }\n ;\n ;\n var t = jQuery(this);\n var header = ((t.hasClass(\"rbb_header\") ? t : t.parents(\".rbb_header\")));\n if (header.parents(\".rbb_section\").hasClass(\"selected\")) {\n return false;\n }\n ;\n ;\n jQuery(\"#radiobuyboxDivId .bb_radio\").attr(\"checked\", false);\n header.JSBNG__find(\".bb_radio\").attr(\"checked\", \"checked\");\n header.parents(\".rbb_section\").removeClass(\"unselected\").addClass(\"selected\");\n jQuery(\"#radiobuyboxDivId .abbListInput\").attr(\"checked\", false);\n var bbClicked = jQuery(this).attr(\"id\");\n var slideMeDown, slideMeUp;\n jQuery(\"#radiobuyboxDivId .rbb_section\").each(function(i, bb) {\n if (((jQuery(bb).JSBNG__find(\".rbb_header\")[0].id == bbClicked))) {\n slideMeDown = jQuery(bb);\n }\n else if (jQuery(bb).hasClass(\"selected\")) {\n slideMeUp = jQuery(bb);\n }\n \n ;\n ;\n });\n slideMeUp.JSBNG__find(\".rbb_content\").slideUp(500, function() {\n slideMeUp.removeClass(\"selected\").addClass(\"unselected\");\n });\n slideMeDown.JSBNG__find(\".rbb_content\").slideDown(500);\n JSBNG__location.hash = ((\"#selectedObb=\" + header.attr(\"id\")));\n return true;\n });\n var locationHash = JSBNG__location.hash;\n if (((locationHash.length != 0))) {\n var selectObb = locationHash.substring(1).split(\"=\")[1];\n if (((typeof (selectObb) != \"undefined\"))) {\n var target = jQuery(((\"#\" + selectObb)));\n if (((target.length != 0))) {\n target.trigger(\"click\");\n }\n ;\n ;\n }\n ;\n ;\n }\n;\n;\n});");
+// 956
+geval("function e8411539754ab9827f368ae7f5e2c8ea9ebb4a635(JSBNG__event) {\n return false;\n};\n;");
+// 957
+geval("if (((typeof window.amznJQ != \"undefined\"))) {\n amznJQ.onReady(\"popover\", function() {\n jQuery(\"#tradeinBuyboxLearnMore\").amazonPopoverTrigger({\n closeText: \"Close\",\n width: 580,\n group: \"tradein\",\n destination: \"/gp/tradein/popovers/ajax-popover.html?ie=UTF8&name=howToTradeIn\",\n title: \"How to Trade In\"\n });\n });\n}\n;\n;");
+// 958
+geval("function e1f14b254e05033951804485a03ab10fbbe411a71(JSBNG__event) {\n window.open(this.href, \"_blank\", \"location=yes,width=700,height=400\");\n return false;\n};\n;");
+// 959
+geval("function e10ce337f851e69fefd2813bf419f648edcffd9e1(JSBNG__event) {\n window.open(this.href, \"_blank\", \"location=yes,width=700,height=400\");\n return false;\n};\n;");
+// 960
+geval("function e2725972985ec03e1744e1d7cfd25a1cba7a8672b(JSBNG__event) {\n window.open(this.href, \"_blank\", \"location=yes,width=700,height=570\");\n return false;\n};\n;");
+// 961
+geval("if (((typeof window.amznJQ != \"undefined\"))) {\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n amznJQ.available(\"share-with-friends-js-new\", function() {\n var popoverParams = {\n url: \"/gp/pdp/taf/dpPop.html/ref=cm_sw_p_view_dp_sgd8rb0NCY02P?ie=UTF8&contentID=0596517742&contentName=item&contentType=asin&contentURI=%2Fdp%2F0596517742&emailCaptionStrID=&emailCustomMsgStrID=&emailDescStrID=&emailSubjectStrID=&emailTemplate=%2Fgp%2Fpdp%2Fcommon%2Femail%2Fshare-product&forceSprites=1&id=0596517742&imageURL=&isDynamicSWF=0&isEmail=0&learnMoreButton=&merchantID=&parentASIN=0596517742&placementID=dp_sgd8rb0NCY02P&ra=taf&referer=http%253A%252F%252Fwww.amazon.com%252Fgp%252Fproduct%252F0596517742%252Fref%253D&relatedAccounts=amazondeals%2Camazonmp3&suppressPurchaseReqLogin=&titleText=&tt=sh&viaAccount=amazon\",\n title: \"Share this item via Email\",\n closeText: \"Close\",\n isCompact: false,\n token: \"69530C13771BFFCC7657C8F16A8B9D2C0CB06C31\"\n };\n amz_taf_triggers.swftext = popoverParams;\n amz_taf_generatePopover(\"swftext\", false);\n });\n });\n}\n;\n;");
+// 962
+geval("amznJQ.onReady(\"bylinePopover\", function() {\n\n});");
+// 963
+geval("function acrPopoverHover(e, h) {\n if (h) {\n window.acrAsinHover = e;\n }\n else {\n if (((window.acrAsinHover == e))) {\n window.acrAsinHover = null;\n }\n ;\n }\n;\n;\n};\n;\namznJQ.onReady(\"popover\", function() {\n (function($) {\n if ($.fn.acrPopover) {\n return;\n }\n ;\n ;\n var popoverConfig = {\n showOnHover: true,\n showCloseButton: true,\n width: null,\n JSBNG__location: \"bottom\",\n locationAlign: \"left\",\n locationOffset: [-20,0,],\n paddingLeft: 15,\n paddingBottom: 5,\n paddingRight: 15,\n group: \"reviewsPopover\",\n clone: false,\n hoverHideDelay: 300\n };\n $.fn.acrPopover = function() {\n return this.each(function() {\n var $this = $(this);\n if (((!$this.data(\"init\") && ((typeof $this.amazonPopoverTrigger === \"function\"))))) {\n $this.data(\"init\", 1);\n var getargs = $this.attr(\"getargs\");\n var ajaxURL = ((((((((((((((\"/gp/customer-reviews/common/du/displayHistoPopAjax.html?\" + \"&ASIN=\")) + $this.attr(\"JSBNG__name\"))) + \"&link=1\")) + \"&seeall=1\")) + \"&ref=\")) + $this.attr(\"ref\"))) + ((((typeof getargs != \"undefined\")) ? ((\"&getargs=\" + getargs)) : \"\"))));\n var myConfig = $.extend(true, {\n destination: ajaxURL\n }, popoverConfig);\n $this.amazonPopoverTrigger(myConfig);\n var w = window.acrAsinHover;\n if (((w && (($(w).parents(\".asinReviewsSummary\").get(0) == this))))) {\n $this.trigger(\"mouseover.amzPopover\");\n window.acrAsinHover = null;\n }\n ;\n ;\n }\n ;\n ;\n });\n };\n window.reviewHistPopoverConfig = popoverConfig;\n var jqInit = window.jQueryInitHistoPopovers = function(asin) {\n if (((typeof $(((((\".acr-popover[name=\" + asin)) + \"]\"))).acrPopover === \"function\"))) {\n $(((((\".acr-popover[name=\" + asin)) + \"]\"))).acrPopover();\n }\n ;\n ;\n };\n window.doInit_average_customer_reviews = jqInit;\n window.onAjaxUpdate_average_customer_reviews = jqInit;\n window.onCacheUpdate_average_customer_reviews = jqInit;\n window.onCacheUpdateReselect_average_customer_reviews = jqInit;\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n JSBNG__setTimeout(function() {\n amznJQ.declareAvailable(\"acrPopover\");\n }, 10);\n });\n })(jQuery);\n});\namznJQ.onReady(\"acrPopover\", function() {\n jQuery(\".acr-popover,#searchTemplate .asinReviewsSummary\").each(function() {\n if (((typeof jQuery(this).acrPopover === \"function\"))) {\n jQuery(this).acrPopover();\n }\n ;\n ;\n });\n});");
+// 964
+geval("function e8e70165fa0a99f2adde340b4b993baa0c88bcff5(JSBNG__event) {\n return acrPopoverHover(this, 1);\n};\n;");
+// 965
+geval("function efbb2e003f7e954f2d7bac18a126412255145f6b4(JSBNG__event) {\n return acrPopoverHover(this, 0);\n};\n;");
+// 966
+geval("function efb3607ba40f4c02222c1cf3079822836e280f9a3(JSBNG__event) {\n return acrPopoverHover(this, 1);\n};\n;");
+// 967
+geval("function e013be0cdaeb0eb5fac25ade0f6533dede66427c6(JSBNG__event) {\n return acrPopoverHover(this, 0);\n};\n;");
+// 968
+geval("function ec1a67f1d15a4d383d5e0e60704787e14cff1b140(JSBNG__event) {\n return amz_js_PopWin(\"/gp/help/customer/display.html/ref=mk_sss_dp_1?ie=UTF8&nodeId=527692&pop-up=1\", \"AmazonHelp\", \"width=550,height=550,resizable=1,scrollbars=1,toolbar=0,status=0\");\n};\n;");
+// 969
+geval("amznJQ.declareAvailable(\"gbPriceBlockFields\");");
+// 971
+o2 = {};
+// 972
+f876774570_0.returns.push(o2);
+// 973
+f876774570_417 = function() { return f876774570_417.returns[f876774570_417.inst++]; };
+f876774570_417.returns = [];
+f876774570_417.inst = 0;
+// 974
+o2.getHours = f876774570_417;
+// 975
+f876774570_417.returns.push(12);
+// 976
+f876774570_418 = function() { return f876774570_418.returns[f876774570_418.inst++]; };
+f876774570_418.returns = [];
+f876774570_418.inst = 0;
+// 977
+o2.getMinutes = f876774570_418;
+// 978
+f876774570_418.returns.push(57);
+// 979
+f876774570_419 = function() { return f876774570_419.returns[f876774570_419.inst++]; };
+f876774570_419.returns = [];
+f876774570_419.inst = 0;
+// 980
+o2.getSeconds = f876774570_419;
+// undefined
+o2 = null;
+// 981
+f876774570_419.returns.push(9);
+// 982
+o2 = {};
+// 983
+f876774570_0.returns.push(o2);
+// 984
+o2.getHours = f876774570_417;
+// 985
+f876774570_417.returns.push(12);
+// 986
+o2.getMinutes = f876774570_418;
+// 987
+f876774570_418.returns.push(57);
+// 988
+o2.getSeconds = f876774570_419;
+// undefined
+o2 = null;
+// 989
+f876774570_419.returns.push(9);
+// 990
+o0.layers = void 0;
+// 991
+o0.all = void 0;
+// 994
+f876774570_410.returns.push(null);
+// 999
+f876774570_410.returns.push(null);
+// 1000
+f876774570_16.returns.push(2);
+// 970
+geval("try {\n var ftCountdownElementIDs = new Array();\n var ftEntireMessageElementIDs = new Array();\n var FT_CurrentDisplayMin = new Array();\n var clientServerTimeDrift;\n var firstTimeUpdate = false;\n function ftRegisterCountdownElementID(elementID) {\n ftCountdownElementIDs[ftCountdownElementIDs.length] = elementID;\n };\n;\n function ftRegisterEntireMessageElementID(elementID) {\n ftEntireMessageElementIDs[ftEntireMessageElementIDs.length] = elementID;\n };\n;\n function getTimeRemainingString(hours, minutes) {\n var hourString = ((((hours == 1)) ? \"hr\" : \"hrs\"));\n var minuteString = ((((minutes == 1)) ? \"min\" : \"mins\"));\n if (((hours == 0))) {\n return ((((minutes + \" \")) + minuteString));\n }\n ;\n ;\n if (((minutes == 0))) {\n return ((((hours + \" \")) + hourString));\n }\n ;\n ;\n return ((((((((((((hours + \" \")) + hourString)) + \" \")) + minutes)) + \" \")) + minuteString));\n return ((((((((((((hours + \" \")) + hourString)) + \" \")) + minutes)) + \" \")) + minuteString));\n };\n;\n function FT_displayCountdown(forceUpdate) {\n if (((((!JSBNG__document.layers && !JSBNG__document.all)) && !JSBNG__document.getElementById))) {\n return;\n }\n ;\n ;\n FT_showHtmlElement(\"ftShipString\", true, \"inline\");\n var FT_remainSeconds = ((FT_givenSeconds - FT_actualSeconds));\n if (((FT_remainSeconds < 1))) {\n FT_showEntireMessageElement(false);\n }\n ;\n ;\n var FT_secondsPerDay = ((((24 * 60)) * 60));\n var FT_daysLong = ((FT_remainSeconds / FT_secondsPerDay));\n var FT_days = Math.floor(FT_daysLong);\n var FT_hoursLong = ((((FT_daysLong - FT_days)) * 24));\n var FT_hours = Math.floor(FT_hoursLong);\n var FT_minsLong = ((((FT_hoursLong - FT_hours)) * 60));\n var FT_mins = Math.floor(FT_minsLong);\n var FT_secsLong = ((((FT_minsLong - FT_mins)) * 60));\n var FT_secs = Math.floor(FT_secsLong);\n if (((FT_days > 0))) {\n FT_hours = ((((FT_days * 24)) + FT_hours));\n }\n ;\n ;\n window.JSBNG__setTimeout(\"FT_getTime()\", 1000);\n var ftCountdown = getTimeRemainingString(FT_hours, FT_mins);\n for (var i = 0; ((i < ftCountdownElementIDs.length)); i++) {\n var countdownElement = JSBNG__document.getElementById(ftCountdownElementIDs[i]);\n if (countdownElement) {\n if (((((((((FT_CurrentDisplayMin[i] != FT_mins)) || forceUpdate)) || ((countdownElement.innerHTML == \"\")))) || firstTimeUpdate))) {\n countdownElement.innerHTML = ftCountdown;\n FT_CurrentDisplayMin[i] = FT_mins;\n firstTimeUpdate = false;\n }\n ;\n ;\n }\n ;\n ;\n };\n ;\n };\n;\n function FT_showEntireMessageElement(shouldShow) {\n for (var i = 0; ((i < ftEntireMessageElementIDs.length)); i++) {\n FT_showHtmlElement(ftEntireMessageElementIDs[i], shouldShow);\n };\n ;\n };\n;\n function FT_showHtmlElement(elementID, shouldShow, displayStyle) {\n var element = JSBNG__document.getElementById(elementID);\n if (element) {\n if (shouldShow) {\n element.style.display = ((((displayStyle != null)) ? displayStyle : \"\"));\n }\n else {\n element.style.display = \"none\";\n }\n ;\n ;\n }\n ;\n ;\n };\n;\n function FT_getAndClearCutOffEpochSeconds() {\n var ftCutOffEpochSecondsElementID = \"ftCutOffEpochSeconds\";\n var ftServerCurrentEpochSecondsElementID = \"ftServerCurrentEpochSeconds\";\n if (((((JSBNG__document.layers || JSBNG__document.all)) || JSBNG__document.getElementById))) {\n if (JSBNG__document.getElementById(ftCutOffEpochSecondsElementID)) {\n var cutOffEpochSeconds = JSBNG__document.getElementById(ftCutOffEpochSecondsElementID).innerHTML;\n if (((cutOffEpochSeconds != \"\"))) {\n JSBNG__document.getElementById(ftCutOffEpochSecondsElementID).innerHTML = \"\";\n if (((((clientServerTimeDrift == null)) && JSBNG__document.getElementById(ftServerCurrentEpochSecondsElementID)))) {\n var serverCurrentEpochSeconds = ((JSBNG__document.getElementById(ftServerCurrentEpochSecondsElementID).innerHTML * 1));\n clientServerTimeDrift = ((((new JSBNG__Date().getTime() / 1000)) - serverCurrentEpochSeconds));\n }\n ;\n ;\n return ((((((clientServerTimeDrift == null)) ? 0 : clientServerTimeDrift)) + ((cutOffEpochSeconds * 1))));\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n return 0;\n };\n;\n function FT_getCountdown(secondsLeft) {\n var FT_currentTime = new JSBNG__Date();\n var FT_currentHours = FT_currentTime.getHours();\n var FT_currentMins = FT_currentTime.getMinutes();\n var FT_currentSecs = FT_currentTime.getSeconds();\n FT_givenSeconds = ((((((FT_currentHours * 3600)) + ((FT_currentMins * 60)))) + FT_currentSecs));\n var FT_secondsFromCat = 10974;\n if (((secondsLeft != null))) {\n FT_secondsFromCat = secondsLeft;\n }\n ;\n ;\n FT_givenSeconds += FT_secondsFromCat;\n FT_getTime();\n };\n;\n function FT_getTime() {\n var FT_newCurrentTime = new JSBNG__Date();\n var FT_actualHours = FT_newCurrentTime.getHours();\n var FT_actualMins = FT_newCurrentTime.getMinutes();\n var FT_actualSecs = FT_newCurrentTime.getSeconds();\n FT_actualSeconds = ((((((FT_actualHours * 3600)) + ((FT_actualMins * 60)))) + FT_actualSecs));\n var cutOffTimeFromPageElement = FT_getAndClearCutOffEpochSeconds();\n if (cutOffTimeFromPageElement) {\n var countDownSeconds = ((cutOffTimeFromPageElement - ((FT_newCurrentTime.getTime() / 1000))));\n if (((countDownSeconds >= 1))) {\n FT_showEntireMessageElement(true);\n }\n ;\n ;\n FT_givenSeconds = ((countDownSeconds + FT_actualSeconds));\n }\n ;\n ;\n FT_displayCountdown();\n };\n;\n function onAjaxUpdate_fast_track(asin) {\n var timerDiv = JSBNG__document.getElementById(\"ftMessageTimer\");\n var cutOffElems = JSBNG__document.getElementsByName(((\"promise-cutoff-time.\" + asin)));\n if (((((cutOffElems == null)) || ((cutOffElems.length == 0))))) {\n return;\n }\n ;\n ;\n if (((timerDiv && timerDiv.style))) {\n timerDiv.style.display = \"inline\";\n }\n ;\n ;\n var cutOffTimeVal = cutOffElems[0].value;\n var cutOffTime = parseInt(cutOffTimeVal);\n var currSecs = ((new JSBNG__Date().getTime() / 1000));\n var secsLeft = ((cutOffTime - currSecs));\n FT_getCountdown(secsLeft);\n };\n;\n FT_getCountdown();\n} catch (JSBNG_ex) {\n\n};");
+// 1001
+geval("ftRegisterCountdownElementID(\"ftCountdown\");\nftRegisterEntireMessageElementID(\"ftMessage\");");
+// 1002
+geval("function ebccbc86cbedeb20034d6cc4d32ad790b4c606a80(JSBNG__event) {\n return amz_js_PopWin(\"/gp/help/customer/display.html/ref=ftinfo_dp_?ie=UTF8&nodeId=3510241&pop-up=1\", \"AmazonHelp\", \"width=550,height=600,resizable=1,scrollbars=1,toolbar=1,status=1\");\n};\n;");
+// 1005
+o2 = {};
+// 1006
+f876774570_410.returns.push(o2);
+// 1007
+o4 = {};
+// 1008
+o2.style = o4;
+// undefined
+o2 = null;
+// 1010
+// undefined
+o4 = null;
+// 1003
+geval("var timerDiv = JSBNG__document.getElementById(\"ftMessageTimer\");\nif (((timerDiv && timerDiv.style))) {\n timerDiv.style.display = \"inline\";\n}\n;\n;");
+// 1012
+o2 = {};
+// 1013
+f876774570_0.returns.push(o2);
+// 1014
+o2.getTime = f876774570_400;
+// undefined
+o2 = null;
+// 1015
+f876774570_400.returns.push(1374695829560);
+// 1011
+geval("if (((typeof measureATFDiff == \"function\"))) {\n measureATFDiff(0, new JSBNG__Date().getTime());\n}\n;\n;\n;\nif (((typeof setCSMReq == \"function\"))) {\n setCSMReq(\"af\");\n}\n else if (((typeof uet == \"function\"))) {\n uet(\"af\");\n}\n\n;\n;");
+// 1016
+geval("function ed0e2c2cc285b51efbb79f992ea3c7a27a8dff172(JSBNG__event) {\n javascript:\n Vellum.h();\n};\n;");
+// 1017
+geval("function e8fa411e8c7ac26afaca0c04fda6c9d3b8a0a97d4(JSBNG__event) {\n javascript:\n Vellum.h();\n};\n;");
+// 1018
+geval("amznJQ.available(\"jQuery\", function() {\n window.sitbWeblab = \"\";\n if (((typeof (Vellum) == \"undefined\"))) {\n Vellum = {\n js: \"http://z-ecx.images-amazon.com/images/G/01/digital/sitb/reader/v4/201305301526/en_US/sitb-library-js._V383092699_.js\",\n sj: \"/gp/search-inside/js?locale=en_US&version=201305301526\",\n css: \"http://z-ecx.images-amazon.com/images/G/01/digital/sitb/reader/v4/201305301526/en_US/sitb-library-css._V383092698_.css\",\n pl: function() {\n Vellum.lj(Vellum.js, Vellum.sj, Vellum.css);\n },\n lj: function(u, u2, uc) {\n if (window.vellumLjDone) {\n return;\n }\n ;\n ;\n window.vellumLjDone = true;\n var d = JSBNG__document;\n var s = d.createElement(\"link\");\n s.type = \"text/css\";\n s.rel = \"stylesheet\";\n s.href = uc;\n d.getElementsByTagName(\"head\")[0].appendChild(s);\n s = d.createElement(\"script\");\n s.type = \"text/javascript\";\n s.src = u2;\n d.getElementsByTagName(\"head\")[0].appendChild(s);\n },\n lj2: function(u) {\n var d = JSBNG__document;\n var s = d.createElement(\"script\");\n s.type = \"text/javascript\";\n s.src = u;\n d.getElementsByTagName(\"head\")[0].appendChild(s);\n },\n go: function() {\n sitbLodStart = new JSBNG__Date().getTime();\n jQuery(\"body\").css(\"overflow\", \"hidden\");\n var jqw = jQuery(window);\n var h = jqw.height();\n var w = jqw.width();\n var st = jqw.scrollTop();\n jQuery(\"#vellumShade\").css({\n JSBNG__top: st,\n height: h,\n width: w\n }).show();\n var vli = jQuery(\"#vellumLdgIco\");\n var nl = ((((w / 2)) - ((vli.width() / 2))));\n var nt = ((((st + ((h / 2)))) - ((vli.height() / 2))));\n vli.css({\n left: nl,\n JSBNG__top: nt\n }).show();\n JSBNG__setTimeout(\"Vellum.x()\", 20000);\n Vellum.pl();\n },\n x: function() {\n jQuery(\"#vellumMsgTxt\").html(\"An error occurred while trying to show this book.\");\n jQuery(\"#vellumMsgHdr\").html(\"Server Timeout\");\n jQuery(\"#vellumMsg\").show();\n var reftagImage = new JSBNG__Image();\n reftagImage.src = \"/gp/search-inside/reftag/ref=rdr_bar_jsto\";\n },\n h: function() {\n jQuery(\"#vellumMsg\").hide();\n jQuery(\"#vellumShade\").hide();\n jQuery(\"#vellumLdgIco\").hide();\n jQuery(\"body\").css(\"overflow\", \"auto\");\n },\n cf: function(a) {\n return function() {\n v.mt = a;\n v.rg = Array.prototype.slice.call(arguments);\n v.go();\n };\n },\n c: function(a) {\n var v = Vellum;\n v.mt = \"c\";\n v.rg = [a,];\n v.pl();\n }\n };\n var f = \"opqr\".split(\"\");\n {\n var fin7keys = ((window.top.JSBNG_Replay.forInKeys)((f))), fin7i = (0);\n var i;\n for (; (fin7i < fin7keys.length); (fin7i++)) {\n ((i) = (fin7keys[fin7i]));\n {\n var v = Vellum;\n v[f[i]] = v.cf(f[i]);\n };\n };\n };\n ;\n sitbAsin = \"0596517742\";\n SitbReader = {\n LightboxActions: {\n openReader: function(r) {\n Vellum.o(\"0596517742\", r);\n return false;\n },\n openReaderToRandomPage: function(r) {\n Vellum.r(\"0596517742\", r);\n return false;\n },\n openReaderToSearchResults: function(q, r) {\n Vellum.q(\"0596517742\", q, r);\n return false;\n },\n openReaderToPage: function(p, t, r) {\n Vellum.p(\"0596517742\", p, t, r);\n return false;\n }\n }\n };\n }\n;\n;\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n Vellum.c(\"0596517742\");\n });\n});");
+// 1020
+o2 = {};
+// 1021
+f876774570_0.returns.push(o2);
+// undefined
+o2 = null;
+// 1019
+geval("if (((typeof amznJQ != \"undefined\"))) {\n amznJQ.addLogical(\"twister-media-matrix\", [\"http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/tmmJS/tmmJS-combined-core-4624._V1_.js\",]);\n window._tmm_1 = +new JSBNG__Date();\n}\n;\n;");
+// 1023
+o2 = {};
+// 1024
+f876774570_0.returns.push(o2);
+// undefined
+o2 = null;
+// 1022
+geval("window._tmm_3 = +new JSBNG__Date();\nif (((typeof amznJQ != \"undefined\"))) {\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n amznJQ.available(\"twister-media-matrix\", function() {\n window._tmm_2 = +new JSBNG__Date();\n TwisterMediaMatrix.initialize({\n kindle_meta_binding: {\n n: \"1\",\n start: \"1\"\n },\n paperback_meta_binding: {\n n: \"4\",\n start: \"1\"\n },\n other_meta_binding: {\n n: \"1\",\n start: \"1\"\n }\n }, \"3\", \"books\", \"0596517742\", \"B00279BLLE\", \"book_display_on_website\", \"Loading...\", \"Error. Please try again.\", \"http://g-ecx.images-amazon.com/images/G/01/x-locale/twister/tiny-snake._V192199047_.gif\", false, \"1-1\", \"1374695818\");\n });\n });\n}\n;\n;\nvar disableWinnerPopup;");
+// 1025
+geval("function e370437b9f88e8249841359512a49370101cf0073(JSBNG__event) {\n amz_expandPostBodyDescription(\"PS\", [\"psGradient\",\"psPlaceHolder\",]);\n return false;\n};\n;");
+// 1026
+geval("function eb6ad345d049a014f5054539ac0a061c9f9306843(JSBNG__event) {\n amz_collapsePostBodyDescription(\"PS\", [\"psGradient\",\"psPlaceHolder\",]);\n return false;\n};\n;");
+// 1027
+geval("function amz_expandPostBodyDescription(id, objects) {\n amznJQ.onReady(\"jQuery\", function() {\n for (var i = 0; ((i < objects.length)); i++) {\n jQuery(((\"#\" + objects[i]))).hide();\n };\n ;\n jQuery(((\"#outer_postBody\" + id))).animate({\n height: jQuery(((\"#postBody\" + id))).height()\n }, 500);\n jQuery(((\"#expand\" + id))).hide();\n jQuery(((\"#collapse\" + id))).show();\n jQuery.ajax({\n url: \"/gp/product/utility/ajax/impression-tracking.html\",\n data: {\n a: \"0596517742\",\n ref: \"dp_pd_showmore_b\"\n }\n });\n });\n};\n;\nfunction amz_collapsePostBodyDescription(id, objects) {\n amznJQ.onReady(\"jQuery\", function() {\n for (var i = 0; ((i < objects.length)); i++) {\n jQuery(((\"#\" + objects[i]))).show();\n };\n ;\n jQuery(((\"#outer_postBody\" + id))).animate({\n height: 200\n }, 500);\n jQuery(((\"#collapse\" + id))).hide();\n jQuery(((\"#expand\" + id))).show();\n jQuery.ajax({\n url: \"/gp/product/utility/ajax/impression-tracking.html\",\n data: {\n a: \"0596517742\",\n ref: \"dp_pd_showless_b\"\n }\n });\n });\n};\n;\namznJQ.onReady(\"jQuery\", function() {\n var psTotalHeight = jQuery(\"#postBodyPS\").height();\n if (((psTotalHeight > 200))) {\n jQuery(\"#outer_postBodyPS\").css(\"display\", \"block\").css(\"height\", 200);\n jQuery(\"#psPlaceHolder\").css(\"display\", \"block\");\n jQuery(\"#expandPS\").css(\"display\", \"block\");\n jQuery(\"#psGradient\").css(\"display\", \"block\");\n }\n else {\n jQuery(\"#outer_postBodyPS\").css(\"height\", \"auto\");\n jQuery(\"#psGradient\").hide();\n jQuery(\"#psPlaceHolder\").hide();\n }\n;\n;\n});");
+// 1028
+geval("function ea331173646474d45878734e8c72f8df51ceff043(JSBNG__event) {\n return amz_js_PopWin(this.href, \"AmazonHelp\", \"width=450,height=600,resizable=1,scrollbars=1,toolbar=1,status=1\");\n};\n;");
+// 1031
+o2 = {};
+// 1032
+f876774570_410.returns.push(o2);
+// undefined
+o2 = null;
+// 1034
+f876774570_410.returns.push(null);
+// 1036
+f876774570_410.returns.push(null);
+// 1038
+o2 = {};
+// 1039
+f876774570_410.returns.push(o2);
+// 1040
+o4 = {};
+// 1041
+o2.style = o4;
+// 1042
+// undefined
+o4 = null;
+// 1043
+f876774570_429 = function() { return f876774570_429.returns[f876774570_429.inst++]; };
+f876774570_429.returns = [];
+f876774570_429.inst = 0;
+// 1044
+o2.getAttribute = f876774570_429;
+// undefined
+o2 = null;
+// 1045
+f876774570_429.returns.push(null);
+// 1029
+geval("try {\n if (((typeof showHideElement == \"function\"))) {\n showHideElement(\"specialOffersHidden\", \"specialOffersDiv\");\n showHideElement(\"productPromosHidden\", \"heroQuickPromoDiv\");\n }\n;\n;\n} catch (JSBNG_ex) {\n\n};");
+// 1046
+geval("function e103b8df299451f36f2c5afe3ffd02864825d6cf3(JSBNG__event) {\n return false;\n};\n;");
+// 1047
+geval("function e774e86790852b7d5e098d5ae6a9b9d173b93d421(JSBNG__event) {\n return false;\n};\n;");
+// 1048
+geval("function e0ec3ef7c4de0fa072cb66b05de1280ee4615589d(JSBNG__event) {\n return false;\n};\n;");
+// 1050
+f876774570_430 = function() { return f876774570_430.returns[f876774570_430.inst++]; };
+f876774570_430.returns = [];
+f876774570_430.inst = 0;
+// 1051
+o0.createElement = f876774570_430;
+// 1052
+o2 = {};
+// 1053
+f876774570_430.returns.push(o2);
+// 1054
+// 1055
+o4 = {};
+// 1056
+o0.body = o4;
+// 1057
+o5 = {};
+// 1058
+o4.childNodes = o5;
+// 1059
+o5.length = 2;
+// 1061
+f876774570_434 = function() { return f876774570_434.returns[f876774570_434.inst++]; };
+f876774570_434.returns = [];
+f876774570_434.inst = 0;
+// 1062
+o4.insertBefore = f876774570_434;
+// undefined
+o4 = null;
+// 1065
+o4 = {};
+// 1066
+o5["0"] = o4;
+// undefined
+o5 = null;
+// undefined
+o4 = null;
+// 1067
+f876774570_434.returns.push(o2);
+// undefined
+o2 = null;
+// 1049
+geval("window.AmazonPopoverImages = {\n snake: \"http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/snake._V192571611_.gif\",\n btnClose: \"http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/btn_close._V192188154_.gif\",\n closeTan: \"http://g-ecx.images-amazon.com/images/G/01/nav2/images/close-tan-sm._V192185930_.gif\",\n closeTanDown: \"http://g-ecx.images-amazon.com/images/G/01/nav2/images/close-tan-sm-dn._V192185961_.gif\",\n loadingBar: \"http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/loading-bar-small._V192188123_.gif\",\n pixel: \"http://g-ecx.images-amazon.com/images/G/01/icons/blank-pixel._V192192429_.gif\"\n};\nvar container = JSBNG__document.createElement(\"DIV\");\ncontainer.id = \"ap_container\";\nif (JSBNG__document.body.childNodes.length) {\n JSBNG__document.body.insertBefore(container, JSBNG__document.body.childNodes[0]);\n}\n else {\n JSBNG__document.body.appendChild(container);\n}\n;\n;");
+// 1069
+o2 = {};
+// 1070
+o0.head = o2;
+// 1072
+o4 = {};
+// 1073
+f876774570_430.returns.push(o4);
+// 1074
+// 1075
+// 1076
+o2.insertBefore = f876774570_434;
+// 1077
+o5 = {};
+// 1078
+o2.firstChild = o5;
+// undefined
+o2 = null;
+// undefined
+o5 = null;
+// 1079
+f876774570_434.returns.push(o4);
+// undefined
+o4 = null;
+// 1068
+geval("(function() {\n var h = ((((JSBNG__document.head || JSBNG__document.getElementsByTagName(\"head\")[0])) || JSBNG__document.documentElement));\n var s = JSBNG__document.createElement(\"script\");\n s.async = \"async\";\n s.src = \"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/site-wide-js-1.2.6-beacon/site-wide-6717236952._V1_.js\";\n h.insertBefore(s, h.firstChild);\n})();");
+// 1080
+geval("amznJQ.addLogical(\"popover\", []);\namznJQ.addLogical(\"navbarCSSUS-beacon\", []);\namznJQ.addLogical(\"search-js-autocomplete\", []);\namznJQ.addLogical(\"navbarJS-beacon\", []);\namznJQ.addLogical(\"LBHUCCSS-US\", []);\namznJQ.addLogical(\"CustomerPopover\", [\"http://z-ecx.images-amazon.com/images/G/01/x-locale/communities/profile/customer-popover/script-13-min._V224617671_.js\",]);\namznJQ.addLogical(\"amazonShoveler\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/amazonShoveler/amazonShoveler-1466453065._V1_.js\",]);\namznJQ.addLogical(\"dpCSS\", []);\namznJQ.addLogical(\"discussionsCSS\", []);\namznJQ.addLogical(\"bxgyCSS\", []);\namznJQ.addLogical(\"simCSS\", []);\namznJQ.addLogical(\"condProbCSS\", []);\namznJQ.addLogical(\"ciuAnnotations\", []);\namznJQ.addLogical(\"dpProductImage\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/dpProductImage/dpProductImage-2900646310._V1_.js\",]);\namznJQ.addLogical(\"search-csl\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/search-csl/search-csl-2400229912._V1_.js\",]);\namznJQ.addLogical(\"AmazonHistory\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/AmazonHistory/AmazonHistory-61973207._V1_.js\",]);\namznJQ.addLogical(\"AmazonCountdown\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/AmazonCountdownMerged/AmazonCountdownMerged-27059._V1_.js\",]);\namznJQ.addLogical(\"bylinePopover\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/bylinePopover/bylinePopover-1310866238._V1_.js\",]);\namznJQ.addLogical(\"simsJS\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/simsJSMerged/simsMerged-9099816638._V1_.js\",]);\namznJQ.addLogical(\"callOnVisible\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/callOnVisible/callOnVisible-3144292562._V1_.js\",]);\namznJQ.addLogical(\"p13nlogger\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/p13nlogger/p13nlogger-1808340331._V1_.js\",]);\namznJQ.addLogical(\"gridReviewCSS-US\", []);\namznJQ.addLogical(\"reviewsCSS-US\", []);\namznJQ.addLogical(\"lazyLoadLib\", [\"http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/lazyLoadLib/lazyLoadLib-lazyLoadLib-60357._V1_.js\",]);\namznJQ.addLogical(\"immersiveView\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/immersiveView/immersiveView-990982538._V1_.js\",]);\namznJQ.addLogical(\"imageBlock\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/imageBlock/imageBlock-3190704718._V1_.js\",]);\namznJQ.addLogical(\"quantityDropDownJS\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/quantityDropDownJSMerged/quantityDropDownJSMerged-63734._V1_.js\",]);\namznJQ.addLogical(\"bbopCheckBoxJS\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/bbopCheckBoxJSMerged/bbopCheckBoxJSMerged-33025._V1_.js\",]);\namznJQ.addLogical(\"share-with-friends-js-new\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/share-with-friends-js-new/share-with-friends-js-new-1687238824._V1_.js\",]);\namznJQ.addLogical(\"amazonLike\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/amazonLike/amazonLike-682075628._V1_.js\",]);");
+// 1081
+geval("function acrPopoverHover(e, h) {\n if (h) {\n window.acrAsinHover = e;\n }\n else {\n if (((window.acrAsinHover == e))) {\n window.acrAsinHover = null;\n }\n ;\n }\n;\n;\n};\n;\namznJQ.onReady(\"popover\", function() {\n (function($) {\n if ($.fn.acrPopover) {\n return;\n }\n ;\n ;\n var popoverConfig = {\n showOnHover: true,\n showCloseButton: true,\n width: null,\n JSBNG__location: \"bottom\",\n locationAlign: \"left\",\n locationOffset: [-20,0,],\n paddingLeft: 15,\n paddingBottom: 5,\n paddingRight: 15,\n group: \"reviewsPopover\",\n clone: false,\n hoverHideDelay: 300\n };\n $.fn.acrPopover = function() {\n return this.each(function() {\n var $this = $(this);\n if (((!$this.data(\"init\") && ((typeof $this.amazonPopoverTrigger === \"function\"))))) {\n $this.data(\"init\", 1);\n var getargs = $this.attr(\"getargs\");\n var ajaxURL = ((((((((((((((\"/gp/customer-reviews/common/du/displayHistoPopAjax.html?\" + \"&ASIN=\")) + $this.attr(\"JSBNG__name\"))) + \"&link=1\")) + \"&seeall=1\")) + \"&ref=\")) + $this.attr(\"ref\"))) + ((((typeof getargs != \"undefined\")) ? ((\"&getargs=\" + getargs)) : \"\"))));\n var myConfig = $.extend(true, {\n destination: ajaxURL\n }, popoverConfig);\n $this.amazonPopoverTrigger(myConfig);\n var w = window.acrAsinHover;\n if (((w && (($(w).parents(\".asinReviewsSummary\").get(0) == this))))) {\n $this.trigger(\"mouseover.amzPopover\");\n window.acrAsinHover = null;\n }\n ;\n ;\n }\n ;\n ;\n });\n };\n window.reviewHistPopoverConfig = popoverConfig;\n var jqInit = window.jQueryInitHistoPopovers = function(asin) {\n if (((typeof $(((((\".acr-popover[name=\" + asin)) + \"]\"))).acrPopover === \"function\"))) {\n $(((((\".acr-popover[name=\" + asin)) + \"]\"))).acrPopover();\n }\n ;\n ;\n };\n window.doInit_average_customer_reviews = jqInit;\n window.onAjaxUpdate_average_customer_reviews = jqInit;\n window.onCacheUpdate_average_customer_reviews = jqInit;\n window.onCacheUpdateReselect_average_customer_reviews = jqInit;\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n JSBNG__setTimeout(function() {\n amznJQ.declareAvailable(\"acrPopover\");\n }, 10);\n });\n })(jQuery);\n});\namznJQ.onReady(\"acrPopover\", function() {\n jQuery(\".acr-popover,#searchTemplate .asinReviewsSummary\").each(function() {\n if (((typeof jQuery(this).acrPopover === \"function\"))) {\n jQuery(this).acrPopover();\n }\n ;\n ;\n });\n});");
+// 1082
+geval("function ea906d93ab2870eed3367c77c167b1c20784c5a0d(JSBNG__event) {\n return acrPopoverHover(this, 1);\n};\n;");
+// 1083
+geval("function e67639d5e2ae3ccb739c64e8526980011a31739f7(JSBNG__event) {\n return acrPopoverHover(this, 0);\n};\n;");
+// 1084
+geval("function e4508443fc183cda1c7d6954f25f29479dda74974(JSBNG__event) {\n return acrPopoverHover(this, 1);\n};\n;");
+// 1085
+geval("function ece526a20f09cb244fb224d526c267d71ef3f5587(JSBNG__event) {\n return acrPopoverHover(this, 0);\n};\n;");
+// 1086
+geval("var DEFAULT_RENDERING_TIME = 123;\namznJQ.onReady(\"popover\", function() {\n jQuery(\"#ns_0JNNCCYK0E23P11J4NSE_1513_1_community_feedback_trigger_product-detail\").amazonPopoverTrigger({\n title: \"What product features are missing?\",\n destination: \"/gp/lwcf/light-weight-form.html?asin=0596517742&root=283155\",\n showOnHover: false,\n draggable: true,\n width: 650,\n paddingBottom: 0,\n onHide: function() {\n logCloseWidgetEvent(DEFAULT_RENDERING_TIME);\n cleanupSearchResults();\n }\n });\n});");
+// 1087
+geval("amznJQ.onReady(\"popover\", function() {\n jQuery(\"#ns_0JNNCCYK0E23P11J4NSE_1512_1_hmd_pricing_feedback_trigger_product-detail\").amazonPopoverTrigger({\n title: \"Tell Us About a Lower Price\",\n destination: \"/gp/pdp/pf/pricingFeedbackForm.html/ref=sr_1_1_pfdpb?ie=UTF8&ASIN=0596517742&PREFIX=ns_0JNNCCYK0E23P11J4NSE_1512_2_&from=product-detail&keywords=javascript%20the%20good%20parts&originalURI=%2Fgp%2Fproduct%2F0596517742&qid=1374695818&s=books&sr=1-1&storeID=books\",\n showOnHover: false,\n draggable: true\n });\n});");
+// 1088
+geval("amznJQ.onReady(\"lazyLoadLib\", function() {\n jQuery(\"#books-entity-teaser\").lazyLoadContent({\n url: \"/gp/product/features/entity-teaser/books-entity-teaser-ajax.html?ASIN=0596517742\",\n metrics: true,\n JSBNG__name: \"books-entity-teaser\",\n cache: true\n });\n});");
+// 1089
+geval("function edd3b053ee26b8726e7f59b53d3fe5e110557602e(JSBNG__event) {\n return amz_js_PopWin(this.href, \"AmazonHelp\", \"width=340,height=340,resizable=1,scrollbars=1,toolbar=1,status=1\");\n};\n;");
+// 1090
+geval("var paCusRevAllURL = \"http://product-ads-portal.amazon.com/gp/synd/?asin=0596517742&pAsin=&gl=14&sq=javascript%20the%20good%20parts&sa=&se=Amazon&noo=&pt=Detail&spt=Glance&sn=customer-reviews-top&pRID=0JNNCCYK0E23P11J4NSE&ts=1374695826&h=429073D5161E5460C7A05BBAECF8459BDBC106E6\";");
+// 1092
+o2 = {};
+// 1093
+f876774570_0.returns.push(o2);
+// 1094
+o2.getTime = f876774570_400;
+// 1095
+f876774570_400.returns.push(1374695829658);
+// 1091
+geval("(function(w, d, e, o) {\n var i = \"DAcrt\";\n if (w.uDA = ((((w.ues && w.uet)) && w.uex))) {\n ues(\"wb\", i, 1);\n uet(\"bb\", i, {\n wb: 1\n });\n }\n;\n;\n var methodToBind = \"amznJQ.onCompletion\";\n if (((((!w.amznJQ && ((methodToBind == \"amznJQ.onCompletion\")))) && ((typeof (P) != \"undefined\"))))) {\n P.when(\"amznJQ.criticalFeature\").execute(function() {\n o = w.DA;\n if (!o) {\n o = w.DA = [];\n e = d.createElement(\"script\");\n e.src = \"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/DA-us/DA-us-1236030632._V380600703_.js\";\n d.getElementsByTagName(\"head\")[0].appendChild(e);\n }\n ;\n ;\n o.push({\n c: 855,\n a: \"site=amazon.us;pt=Detail;slot=customer-reviews-top;pid=0596517742;prid=0JNNCCYK0E23P11J4NSE;arid=086cda0bd10c4f368bd73f9fd75a69ce;ef=0.00\",\n f: 1,\n g: \"\",\n n: 1,\n r: 1,\n v: 1,\n y: \"na\",\n u: \"amzn.us.dp.books/computer_internet;sz=300x250;oe=ISO-8859-1;u=086cda0bd10c4f368bd73f9fd75a69ce;s=i0;s=i1;s=i2;s=i3;s=i4;s=i5;s=i6;s=i7;s=i9;s=m1;s=m4;s=u4;s=u5;s=u10;s=u35;z=153;z=141;z=180;z=173;s=3072;s=32;s=1009;dc_ref=http%3A%2F%2Fwww.amazon.com;tile=1;ord=0JNNCCYK0E23P11J4NSE\",\n q: \"N4215\"\n });\n });\n }\n else {\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n o = w.DA;\n if (!o) {\n o = w.DA = [];\n e = d.createElement(\"script\");\n e.src = \"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/DA-us/DA-us-1236030632._V380600703_.js\";\n d.getElementsByTagName(\"head\")[0].appendChild(e);\n }\n ;\n ;\n o.push({\n c: 855,\n a: \"site=amazon.us;pt=Detail;slot=customer-reviews-top;pid=0596517742;prid=0JNNCCYK0E23P11J4NSE;arid=086cda0bd10c4f368bd73f9fd75a69ce;ef=0.00\",\n f: 1,\n g: \"\",\n n: 1,\n r: 1,\n v: 1,\n y: \"na\",\n u: \"amzn.us.dp.books/computer_internet;sz=300x250;oe=ISO-8859-1;u=086cda0bd10c4f368bd73f9fd75a69ce;s=i0;s=i1;s=i2;s=i3;s=i4;s=i5;s=i6;s=i7;s=i9;s=m1;s=m4;s=u4;s=u5;s=u10;s=u35;z=153;z=141;z=180;z=173;s=3072;s=32;s=1009;dc_ref=http%3A%2F%2Fwww.amazon.com;tile=1;ord=0JNNCCYK0E23P11J4NSE\",\n q: \"N4215\"\n });\n });\n }\n;\n;\n})(window, JSBNG__document);");
+// 1097
+o4 = {};
+// 1098
+f876774570_0.returns.push(o4);
+// 1096
+geval("if (((typeof setCSMReq == \"function\"))) {\n setCSMReq(\"cf\");\n}\n else {\n if (((typeof uet == \"function\"))) {\n uet(\"cf\");\n }\n;\n;\n amznJQ.completedStage(\"amznJQ.criticalFeature\");\n}\n;\n;");
+// 1099
+geval("function acrPopoverHover(e, h) {\n if (h) {\n window.acrAsinHover = e;\n }\n else {\n if (((window.acrAsinHover == e))) {\n window.acrAsinHover = null;\n }\n ;\n }\n;\n;\n};\n;\namznJQ.onReady(\"popover\", function() {\n (function($) {\n if ($.fn.acrPopover) {\n return;\n }\n ;\n ;\n var popoverConfig = {\n showOnHover: true,\n showCloseButton: true,\n width: null,\n JSBNG__location: \"bottom\",\n locationAlign: \"left\",\n locationOffset: [-20,0,],\n paddingLeft: 15,\n paddingBottom: 5,\n paddingRight: 15,\n group: \"reviewsPopover\",\n clone: false,\n hoverHideDelay: 300\n };\n $.fn.acrPopover = function() {\n return this.each(function() {\n var $this = $(this);\n if (((!$this.data(\"init\") && ((typeof $this.amazonPopoverTrigger === \"function\"))))) {\n $this.data(\"init\", 1);\n var getargs = $this.attr(\"getargs\");\n var ajaxURL = ((((((((((((((\"/gp/customer-reviews/common/du/displayHistoPopAjax.html?\" + \"&ASIN=\")) + $this.attr(\"JSBNG__name\"))) + \"&link=1\")) + \"&seeall=1\")) + \"&ref=\")) + $this.attr(\"ref\"))) + ((((typeof getargs != \"undefined\")) ? ((\"&getargs=\" + getargs)) : \"\"))));\n var myConfig = $.extend(true, {\n destination: ajaxURL\n }, popoverConfig);\n $this.amazonPopoverTrigger(myConfig);\n var w = window.acrAsinHover;\n if (((w && (($(w).parents(\".asinReviewsSummary\").get(0) == this))))) {\n $this.trigger(\"mouseover.amzPopover\");\n window.acrAsinHover = null;\n }\n ;\n ;\n }\n ;\n ;\n });\n };\n window.reviewHistPopoverConfig = popoverConfig;\n var jqInit = window.jQueryInitHistoPopovers = function(asin) {\n if (((typeof $(((((\".acr-popover[name=\" + asin)) + \"]\"))).acrPopover === \"function\"))) {\n $(((((\".acr-popover[name=\" + asin)) + \"]\"))).acrPopover();\n }\n ;\n ;\n };\n window.doInit_average_customer_reviews = jqInit;\n window.onAjaxUpdate_average_customer_reviews = jqInit;\n window.onCacheUpdate_average_customer_reviews = jqInit;\n window.onCacheUpdateReselect_average_customer_reviews = jqInit;\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n JSBNG__setTimeout(function() {\n amznJQ.declareAvailable(\"acrPopover\");\n }, 10);\n });\n })(jQuery);\n});\namznJQ.onReady(\"acrPopover\", function() {\n jQuery(\".acr-popover,#searchTemplate .asinReviewsSummary\").each(function() {\n if (((typeof jQuery(this).acrPopover === \"function\"))) {\n jQuery(this).acrPopover();\n }\n ;\n ;\n });\n});");
+// 1100
+geval("function ea906d93ab2870eed3367c77c167b1c20784c5a0d(JSBNG__event) {\n return acrPopoverHover(this, 1);\n};\n;");
+// 1101
+geval("function e67639d5e2ae3ccb739c64e8526980011a31739f7(JSBNG__event) {\n return acrPopoverHover(this, 0);\n};\n;");
+// 1102
+geval("function e4508443fc183cda1c7d6954f25f29479dda74974(JSBNG__event) {\n return acrPopoverHover(this, 1);\n};\n;");
+// 1103
+geval("function ece526a20f09cb244fb224d526c267d71ef3f5587(JSBNG__event) {\n return acrPopoverHover(this, 0);\n};\n;");
+// 1104
+geval("var DEFAULT_RENDERING_TIME = 123;\namznJQ.onReady(\"popover\", function() {\n jQuery(\"#ns_0JNNCCYK0E23P11J4NSE_1513_1_community_feedback_trigger_product-detail\").amazonPopoverTrigger({\n title: \"What product features are missing?\",\n destination: \"/gp/lwcf/light-weight-form.html?asin=0596517742&root=283155\",\n showOnHover: false,\n draggable: true,\n width: 650,\n paddingBottom: 0,\n onHide: function() {\n logCloseWidgetEvent(DEFAULT_RENDERING_TIME);\n cleanupSearchResults();\n }\n });\n});");
+// 1105
+geval("amznJQ.onReady(\"popover\", function() {\n jQuery(\"#ns_0JNNCCYK0E23P11J4NSE_1512_1_hmd_pricing_feedback_trigger_product-detail\").amazonPopoverTrigger({\n title: \"Tell Us About a Lower Price\",\n destination: \"/gp/pdp/pf/pricingFeedbackForm.html/ref=sr_1_1_pfdpb?ie=UTF8&ASIN=0596517742&PREFIX=ns_0JNNCCYK0E23P11J4NSE_1512_2_&from=product-detail&keywords=javascript%20the%20good%20parts&originalURI=%2Fgp%2Fproduct%2F0596517742&qid=1374695818&s=books&sr=1-1&storeID=books\",\n showOnHover: false,\n draggable: true\n });\n});");
+// 1106
+geval("amznJQ.onReady(\"lazyLoadLib\", function() {\n jQuery(\"#books-entity-teaser\").lazyLoadContent({\n url: \"/gp/product/features/entity-teaser/books-entity-teaser-ajax.html?ASIN=0596517742\",\n metrics: true,\n JSBNG__name: \"books-entity-teaser\",\n cache: true\n });\n});");
+// 1107
+geval("function edd3b053ee26b8726e7f59b53d3fe5e110557602e(JSBNG__event) {\n return amz_js_PopWin(this.href, \"AmazonHelp\", \"width=340,height=340,resizable=1,scrollbars=1,toolbar=1,status=1\");\n};\n;");
+// 1108
+geval("var paCusRevAllURL = \"http://product-ads-portal.amazon.com/gp/synd/?asin=0596517742&pAsin=&gl=14&sq=javascript%20the%20good%20parts&sa=&se=Amazon&noo=&pt=Detail&spt=Glance&sn=customer-reviews-top&pRID=0JNNCCYK0E23P11J4NSE&ts=1374695826&h=429073D5161E5460C7A05BBAECF8459BDBC106E6\";");
+// 1110
+o2 = {};
+// 1111
+f876774570_0.returns.push(o2);
+// 1112
+o2.getTime = f876774570_400;
+// undefined
+o2 = null;
+// 1113
+f876774570_400.returns.push(1374695829658);
+// 1109
+geval("try {\n (function(w, d, e, o) {\n var i = \"DAcrt\";\n if (w.uDA = ((((w.ues && w.uet)) && w.uex))) {\n ues(\"wb\", i, 1);\n uet(\"bb\", i, {\n wb: 1\n });\n }\n ;\n ;\n var methodToBind = \"amznJQ.onCompletion\";\n if (((((!w.amznJQ && ((methodToBind == \"amznJQ.onCompletion\")))) && ((typeof (P) != \"undefined\"))))) {\n P.when(\"amznJQ.criticalFeature\").execute(function() {\n o = w.DA;\n if (!o) {\n o = w.DA = [];\n e = d.createElement(\"script\");\n e.src = \"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/DA-us/DA-us-1236030632._V380600703_.js\";\n d.getElementsByTagName(\"head\")[0].appendChild(e);\n }\n ;\n ;\n o.push({\n c: 855,\n a: \"site=amazon.us;pt=Detail;slot=customer-reviews-top;pid=0596517742;prid=0JNNCCYK0E23P11J4NSE;arid=086cda0bd10c4f368bd73f9fd75a69ce;ef=0.00\",\n f: 1,\n g: \"\",\n n: 1,\n r: 1,\n v: 1,\n y: \"na\",\n u: \"amzn.us.dp.books/computer_internet;sz=300x250;oe=ISO-8859-1;u=086cda0bd10c4f368bd73f9fd75a69ce;s=i0;s=i1;s=i2;s=i3;s=i4;s=i5;s=i6;s=i7;s=i9;s=m1;s=m4;s=u4;s=u5;s=u10;s=u35;z=153;z=141;z=180;z=173;s=3072;s=32;s=1009;dc_ref=http%3A%2F%2Fwww.amazon.com;tile=1;ord=0JNNCCYK0E23P11J4NSE\",\n q: \"N4215\"\n });\n });\n }\n else {\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n o = w.DA;\n if (!o) {\n o = w.DA = [];\n e = d.createElement(\"script\");\n e.src = \"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/DA-us/DA-us-1236030632._V380600703_.js\";\n d.getElementsByTagName(\"head\")[0].appendChild(e);\n }\n ;\n ;\n o.push({\n c: 855,\n a: \"site=amazon.us;pt=Detail;slot=customer-reviews-top;pid=0596517742;prid=0JNNCCYK0E23P11J4NSE;arid=086cda0bd10c4f368bd73f9fd75a69ce;ef=0.00\",\n f: 1,\n g: \"\",\n n: 1,\n r: 1,\n v: 1,\n y: \"na\",\n u: \"amzn.us.dp.books/computer_internet;sz=300x250;oe=ISO-8859-1;u=086cda0bd10c4f368bd73f9fd75a69ce;s=i0;s=i1;s=i2;s=i3;s=i4;s=i5;s=i6;s=i7;s=i9;s=m1;s=m4;s=u4;s=u5;s=u10;s=u35;z=153;z=141;z=180;z=173;s=3072;s=32;s=1009;dc_ref=http%3A%2F%2Fwww.amazon.com;tile=1;ord=0JNNCCYK0E23P11J4NSE\",\n q: \"N4215\"\n });\n });\n }\n ;\n ;\n })(window, JSBNG__document);\n} catch (JSBNG_ex) {\n\n};");
+// 1115
+o4 = {};
+// 1116
+f876774570_0.returns.push(o4);
+// 1114
+geval("try {\n if (((typeof setCSMReq == \"function\"))) {\n setCSMReq(\"cf\");\n }\n else {\n if (((typeof uet == \"function\"))) {\n uet(\"cf\");\n }\n ;\n ;\n amznJQ.completedStage(\"amznJQ.criticalFeature\");\n }\n;\n;\n} catch (JSBNG_ex) {\n\n};");
+// 1118
+o4.getTime = f876774570_400;
+// undefined
+o4 = null;
+// 1119
+f876774570_400.returns.push(1374695829664);
+// 1117
+geval("try {\n (function() {\n var initJQuery = function() {\n var jQuery126PatchDelay = 13;\n var _jQuery = window.jQuery, _$ = window.$;\n var jQuery = window.jQuery = window.$ = function(selector, context) {\n return new jQuery.fn.init(selector, context);\n };\n var quickExpr = /^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/, isSimple = /^.[^:#\\[\\.]*$/, undefined;\n jQuery.fn = jQuery.prototype = {\n init: function(selector, context) {\n selector = ((selector || JSBNG__document));\n if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this;\n }\n ;\n ;\n if (((typeof selector == \"string\"))) {\n var match = quickExpr.exec(selector);\n if (((match && ((match[1] || !context))))) {\n if (match[1]) {\n selector = jQuery.clean([match[1],], context);\n }\n else {\n var elem = JSBNG__document.getElementById(match[3]);\n if (elem) {\n if (((elem.id != match[3]))) {\n return jQuery().JSBNG__find(selector);\n }\n ;\n ;\n return jQuery(elem);\n }\n ;\n ;\n selector = [];\n }\n ;\n ;\n }\n else {\n return jQuery(context).JSBNG__find(selector);\n }\n ;\n ;\n }\n else {\n if (jQuery.isFunction(selector)) {\n return jQuery(JSBNG__document)[((jQuery.fn.ready ? \"ready\" : \"load\"))](selector);\n }\n ;\n ;\n }\n ;\n ;\n return this.setArray(jQuery.makeArray(selector));\n },\n jquery: \"1.2.6\",\n size: function() {\n return this.length;\n },\n length: 0,\n get: function(num) {\n return ((((num == undefined)) ? jQuery.makeArray(this) : this[num]));\n },\n pushStack: function(elems) {\n var ret = jQuery(elems);\n ret.prevObject = this;\n return ret;\n },\n setArray: function(elems) {\n this.length = 0;\n Array.prototype.push.apply(this, elems);\n return this;\n },\n each: function(callback, args) {\n return jQuery.each(this, callback, args);\n },\n index: function(elem) {\n var ret = -1;\n return jQuery.inArray(((((elem && elem.jquery)) ? elem[0] : elem)), this);\n },\n attr: function(JSBNG__name, value, type) {\n var options = JSBNG__name;\n if (((JSBNG__name.constructor == String))) {\n if (((value === undefined))) {\n return ((this[0] && jQuery[((type || \"attr\"))](this[0], JSBNG__name)));\n }\n else {\n options = {\n };\n options[JSBNG__name] = value;\n }\n ;\n ;\n }\n ;\n ;\n return this.each(function(i) {\n {\n var fin8keys = ((window.top.JSBNG_Replay.forInKeys)((options))), fin8i = (0);\n (0);\n for (; (fin8i < fin8keys.length); (fin8i++)) {\n ((name) = (fin8keys[fin8i]));\n {\n jQuery.attr(((type ? this.style : this)), JSBNG__name, jQuery.prop(this, options[JSBNG__name], type, i, JSBNG__name));\n };\n };\n };\n ;\n });\n },\n css: function(key, value) {\n if (((((((key == \"width\")) || ((key == \"height\")))) && ((parseFloat(value) < 0))))) {\n value = undefined;\n }\n ;\n ;\n return this.attr(key, value, \"curCSS\");\n },\n text: function(text) {\n if (((((typeof text != \"object\")) && ((text != null))))) {\n return this.empty().append(((((this[0] && this[0].ownerDocument)) || JSBNG__document)).createTextNode(text));\n }\n ;\n ;\n var ret = \"\";\n jQuery.each(((text || this)), function() {\n jQuery.each(this.childNodes, function() {\n if (((this.nodeType != 8))) {\n ret += ((((this.nodeType != 1)) ? this.nodeValue : jQuery.fn.text([this,])));\n }\n ;\n ;\n });\n });\n return ret;\n },\n wrapAll: function(html) {\n if (this[0]) {\n jQuery(html, this[0].ownerDocument).clone().insertBefore(this[0]).map(function() {\n var elem = this;\n while (elem.firstChild) {\n elem = elem.firstChild;\n };\n ;\n return elem;\n }).append(this);\n }\n ;\n ;\n return this;\n },\n wrapInner: function(html) {\n return this.each(function() {\n jQuery(this).contents().wrapAll(html);\n });\n },\n wrap: function(html) {\n return this.each(function() {\n jQuery(this).wrapAll(html);\n });\n },\n append: function() {\n return this.domManip(arguments, true, false, function(elem) {\n if (((this.nodeType == 1))) {\n this.appendChild(elem);\n }\n ;\n ;\n });\n },\n prepend: function() {\n return this.domManip(arguments, true, true, function(elem) {\n if (((this.nodeType == 1))) {\n this.insertBefore(elem, this.firstChild);\n }\n ;\n ;\n });\n },\n before: function() {\n return this.domManip(arguments, false, false, function(elem) {\n this.parentNode.insertBefore(elem, this);\n });\n },\n after: function() {\n return this.domManip(arguments, false, true, function(elem) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n });\n },\n end: function() {\n return ((this.prevObject || jQuery([])));\n },\n JSBNG__find: function(selector) {\n var elems = jQuery.map(this, function(elem) {\n return jQuery.JSBNG__find(selector, elem);\n });\n return this.pushStack(((((/[^+>] [^+>]/.test(selector) || ((selector.indexOf(\"..\") > -1)))) ? jQuery.unique(elems) : elems)));\n },\n clone: function(events) {\n var ret = this.map(function() {\n if (((jQuery.browser.msie && !jQuery.isXMLDoc(this)))) {\n var clone = this.cloneNode(true), container = JSBNG__document.createElement(\"div\");\n container.appendChild(clone);\n return jQuery.clean([container.innerHTML,])[0];\n }\n else {\n return this.cloneNode(true);\n }\n ;\n ;\n });\n var clone = ret.JSBNG__find(\"*\").andSelf().each(function() {\n if (((this[expando] != undefined))) {\n this[expando] = null;\n }\n ;\n ;\n });\n if (((events === true))) {\n this.JSBNG__find(\"*\").andSelf().each(function(i) {\n if (((this.nodeType == 3))) {\n return;\n }\n ;\n ;\n var events = jQuery.data(this, \"events\");\n {\n var fin9keys = ((window.top.JSBNG_Replay.forInKeys)((events))), fin9i = (0);\n var type;\n for (; (fin9i < fin9keys.length); (fin9i++)) {\n ((type) = (fin9keys[fin9i]));\n {\n {\n var fin10keys = ((window.top.JSBNG_Replay.forInKeys)((events[type]))), fin10i = (0);\n var handler;\n for (; (fin10i < fin10keys.length); (fin10i++)) {\n ((handler) = (fin10keys[fin10i]));\n {\n jQuery.JSBNG__event.add(clone[i], type, events[type][handler], events[type][handler].data);\n };\n };\n };\n ;\n };\n };\n };\n ;\n });\n }\n ;\n ;\n return ret;\n },\n filter: function(selector) {\n return this.pushStack(((((jQuery.isFunction(selector) && jQuery.grep(this, function(elem, i) {\n return selector.call(elem, i);\n }))) || jQuery.multiFilter(selector, this))));\n },\n not: function(selector) {\n if (((selector.constructor == String))) {\n if (isSimple.test(selector)) {\n return this.pushStack(jQuery.multiFilter(selector, this, true));\n }\n else {\n selector = jQuery.multiFilter(selector, this);\n }\n ;\n ;\n }\n ;\n ;\n var isArrayLike = ((((selector.length && ((selector[((selector.length - 1))] !== undefined)))) && !selector.nodeType));\n return this.filter(function() {\n return ((isArrayLike ? ((jQuery.inArray(this, selector) < 0)) : ((this != selector))));\n });\n },\n add: function(selector) {\n return this.pushStack(jQuery.unique(jQuery.merge(this.get(), ((((typeof selector == \"string\")) ? jQuery(selector) : jQuery.makeArray(selector))))));\n },\n is: function(selector) {\n return ((!!selector && ((jQuery.multiFilter(selector, this).length > 0))));\n },\n hasClass: function(selector) {\n return this.is(((\".\" + selector)));\n },\n val: function(value) {\n if (((value == undefined))) {\n if (this.length) {\n var elem = this[0];\n if (jQuery.nodeName(elem, \"select\")) {\n var index = elem.selectedIndex, values = [], options = elem.options, one = ((elem.type == \"select-one\"));\n if (((index < 0))) {\n return null;\n }\n ;\n ;\n for (var i = ((one ? index : 0)), max = ((one ? ((index + 1)) : options.length)); ((i < max)); i++) {\n var option = options[i];\n if (option.selected) {\n value = ((((jQuery.browser.msie && !option.attributes.value.specified)) ? option.text : option.value));\n if (one) {\n return value;\n }\n ;\n ;\n values.push(value);\n }\n ;\n ;\n };\n ;\n return values;\n }\n else {\n return ((this[0].value || \"\")).replace(/\\r/g, \"\");\n }\n ;\n ;\n }\n ;\n ;\n return undefined;\n }\n ;\n ;\n if (((value.constructor == Number))) {\n value += \"\";\n }\n ;\n ;\n return this.each(function() {\n if (((this.nodeType != 1))) {\n return;\n }\n ;\n ;\n if (((((value.constructor == Array)) && /radio|checkbox/.test(this.type)))) {\n this.checked = ((((jQuery.inArray(this.value, value) >= 0)) || ((jQuery.inArray(this.JSBNG__name, value) >= 0))));\n }\n else {\n if (jQuery.nodeName(this, \"select\")) {\n var values = jQuery.makeArray(value);\n jQuery(\"option\", this).each(function() {\n this.selected = ((((jQuery.inArray(this.value, values) >= 0)) || ((jQuery.inArray(this.text, values) >= 0))));\n });\n if (!values.length) {\n this.selectedIndex = -1;\n }\n ;\n ;\n }\n else {\n this.value = value;\n }\n ;\n ;\n }\n ;\n ;\n });\n },\n html: function(value) {\n return ((((value == undefined)) ? ((this[0] ? this[0].innerHTML : null)) : this.empty().append(value)));\n },\n replaceWith: function(value) {\n return this.after(value).remove();\n },\n eq: function(i) {\n return this.slice(i, ((i + 1)));\n },\n slice: function() {\n return this.pushStack(Array.prototype.slice.apply(this, arguments));\n },\n map: function(callback) {\n return this.pushStack(jQuery.map(this, function(elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n andSelf: function() {\n return this.add(this.prevObject);\n },\n data: function(key, value) {\n var parts = key.split(\".\");\n parts[1] = ((parts[1] ? ((\".\" + parts[1])) : \"\"));\n if (((value === undefined))) {\n var data = this.triggerHandler(((((\"getData\" + parts[1])) + \"!\")), [parts[0],]);\n if (((((data === undefined)) && this.length))) {\n data = jQuery.data(this[0], key);\n }\n ;\n ;\n return ((((((data === undefined)) && parts[1])) ? this.data(parts[0]) : data));\n }\n else {\n return this.trigger(((((\"setData\" + parts[1])) + \"!\")), [parts[0],value,]).each(function() {\n jQuery.data(this, key, value);\n });\n }\n ;\n ;\n },\n removeData: function(key) {\n return this.each(function() {\n jQuery.removeData(this, key);\n });\n },\n domManip: function(args, table, reverse, callback) {\n var clone = ((this.length > 1)), elems;\n return this.each(function() {\n if (!elems) {\n elems = jQuery.clean(args, this.ownerDocument);\n if (reverse) {\n elems.reverse();\n }\n ;\n ;\n }\n ;\n ;\n var obj = this;\n if (((((table && jQuery.nodeName(this, \"table\"))) && jQuery.nodeName(elems[0], \"tr\")))) {\n obj = ((this.getElementsByTagName(\"tbody\")[0] || this.appendChild(this.ownerDocument.createElement(\"tbody\"))));\n }\n ;\n ;\n var scripts = jQuery([]);\n jQuery.each(elems, function() {\n var elem = ((clone ? jQuery(this).clone(true)[0] : this));\n if (jQuery.nodeName(elem, \"script\")) {\n scripts = scripts.add(elem);\n }\n else {\n if (((elem.nodeType == 1))) {\n scripts = scripts.add(jQuery(\"script\", elem).remove());\n }\n ;\n ;\n callback.call(obj, elem);\n }\n ;\n ;\n });\n scripts.each(evalScript);\n });\n }\n };\n jQuery.fn.init.prototype = jQuery.fn;\n function evalScript(i, elem) {\n if (elem.src) {\n jQuery.ajax({\n url: elem.src,\n async: false,\n dataType: \"script\"\n });\n }\n else {\n jQuery.globalEval(((((((elem.text || elem.textContent)) || elem.innerHTML)) || \"\")));\n }\n ;\n ;\n if (elem.parentNode) {\n elem.parentNode.removeChild(elem);\n }\n ;\n ;\n };\n ;\n function now() {\n return +new JSBNG__Date;\n };\n ;\n jQuery.extend = jQuery.fn.extend = function() {\n var target = ((arguments[0] || {\n })), i = 1, length = arguments.length, deep = false, options;\n if (((target.constructor == Boolean))) {\n deep = target;\n target = ((arguments[1] || {\n }));\n i = 2;\n }\n ;\n ;\n if (((((typeof target != \"object\")) && ((typeof target != \"function\"))))) {\n target = {\n };\n }\n ;\n ;\n if (((length == i))) {\n target = this;\n --i;\n }\n ;\n ;\n for (; ((i < length)); i++) {\n if ((((options = arguments[i]) != null))) {\n {\n var fin11keys = ((window.top.JSBNG_Replay.forInKeys)((options))), fin11i = (0);\n var JSBNG__name;\n for (; (fin11i < fin11keys.length); (fin11i++)) {\n ((name) = (fin11keys[fin11i]));\n {\n var src = target[JSBNG__name], copy = options[JSBNG__name];\n if (((target === copy))) {\n continue;\n }\n ;\n ;\n if (((((((deep && copy)) && ((typeof copy == \"object\")))) && !copy.nodeType))) {\n target[JSBNG__name] = jQuery.extend(deep, ((src || ((((copy.length != null)) ? [] : {\n })))), copy);\n }\n else {\n if (((copy !== undefined))) {\n target[JSBNG__name] = copy;\n }\n ;\n ;\n }\n ;\n ;\n };\n };\n };\n ;\n }\n ;\n ;\n };\n ;\n return target;\n };\n var expando = ((\"jQuery\" + now())), uuid = 0, windowData = {\n }, exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i, defaultView = ((JSBNG__document.defaultView || {\n }));\n jQuery.extend({\n noConflict: function(deep) {\n window.$ = _$;\n if (deep) {\n window.jQuery = _jQuery;\n }\n ;\n ;\n return jQuery;\n },\n isFunction: function(fn) {\n return ((((((((!!fn && ((typeof fn != \"string\")))) && !fn.nodeName)) && ((fn.constructor != Array)))) && /^[\\s[]?function/.test(((fn + \"\")))));\n },\n isXMLDoc: function(elem) {\n return ((((elem.documentElement && !elem.body)) || ((((elem.tagName && elem.ownerDocument)) && !elem.ownerDocument.body))));\n },\n globalEval: function(data) {\n data = jQuery.trim(data);\n if (data) {\n var head = ((JSBNG__document.getElementsByTagName(\"head\")[0] || JSBNG__document.documentElement)), script = JSBNG__document.createElement(\"script\");\n script.type = \"text/javascript\";\n if (jQuery.browser.msie) {\n script.text = data;\n }\n else {\n script.appendChild(JSBNG__document.createTextNode(data));\n }\n ;\n ;\n head.insertBefore(script, head.firstChild);\n head.removeChild(script);\n }\n ;\n ;\n },\n nodeName: function(elem, JSBNG__name) {\n return ((elem.nodeName && ((elem.nodeName.toUpperCase() == JSBNG__name.toUpperCase()))));\n },\n cache: {\n },\n data: function(elem, JSBNG__name, data) {\n elem = ((((elem == window)) ? windowData : elem));\n var id = elem[expando];\n if (!id) {\n id = elem[expando] = ++uuid;\n }\n ;\n ;\n if (((JSBNG__name && !jQuery.cache[id]))) {\n jQuery.cache[id] = {\n };\n }\n ;\n ;\n if (((data !== undefined))) {\n jQuery.cache[id][JSBNG__name] = data;\n }\n ;\n ;\n return ((JSBNG__name ? jQuery.cache[id][JSBNG__name] : id));\n },\n removeData: function(elem, JSBNG__name) {\n elem = ((((elem == window)) ? windowData : elem));\n var id = elem[expando];\n if (JSBNG__name) {\n if (jQuery.cache[id]) {\n delete jQuery.cache[id][JSBNG__name];\n JSBNG__name = \"\";\n {\n var fin12keys = ((window.top.JSBNG_Replay.forInKeys)((jQuery.cache[id]))), fin12i = (0);\n (0);\n for (; (fin12i < fin12keys.length); (fin12i++)) {\n ((name) = (fin12keys[fin12i]));\n {\n break;\n };\n };\n };\n ;\n if (!JSBNG__name) {\n jQuery.removeData(elem);\n }\n ;\n ;\n }\n ;\n ;\n }\n else {\n try {\n delete elem[expando];\n } catch (e) {\n if (elem.removeAttribute) {\n elem.removeAttribute(expando);\n }\n ;\n ;\n };\n ;\n delete jQuery.cache[id];\n }\n ;\n ;\n },\n each: function(object, callback, args) {\n var JSBNG__name, i = 0, length = object.length;\n if (args) {\n if (((length == undefined))) {\n {\n var fin13keys = ((window.top.JSBNG_Replay.forInKeys)((object))), fin13i = (0);\n (0);\n for (; (fin13i < fin13keys.length); (fin13i++)) {\n ((name) = (fin13keys[fin13i]));\n {\n if (((callback.apply(object[JSBNG__name], args) === false))) {\n break;\n }\n ;\n ;\n };\n };\n };\n ;\n }\n else {\n for (; ((i < length)); ) {\n if (((callback.apply(object[i++], args) === false))) {\n break;\n }\n ;\n ;\n };\n ;\n }\n ;\n ;\n }\n else {\n if (((length == undefined))) {\n {\n var fin14keys = ((window.top.JSBNG_Replay.forInKeys)((object))), fin14i = (0);\n (0);\n for (; (fin14i < fin14keys.length); (fin14i++)) {\n ((name) = (fin14keys[fin14i]));\n {\n if (((callback.call(object[JSBNG__name], JSBNG__name, object[JSBNG__name]) === false))) {\n break;\n }\n ;\n ;\n };\n };\n };\n ;\n }\n else {\n for (var value = object[0]; ((((i < length)) && ((callback.call(value, i, value) !== false)))); value = object[++i]) {\n \n };\n ;\n }\n ;\n ;\n }\n ;\n ;\n return object;\n },\n prop: function(elem, value, type, i, JSBNG__name) {\n if (jQuery.isFunction(value)) {\n value = value.call(elem, i);\n }\n ;\n ;\n return ((((((((value && ((value.constructor == Number)))) && ((type == \"curCSS\")))) && !exclude.test(JSBNG__name))) ? ((value + \"px\")) : value));\n },\n className: {\n add: function(elem, classNames) {\n jQuery.each(((classNames || \"\")).split(/\\s+/), function(i, className) {\n if (((((elem.nodeType == 1)) && !jQuery.className.has(elem.className, className)))) {\n elem.className += ((((elem.className ? \" \" : \"\")) + className));\n }\n ;\n ;\n });\n },\n remove: function(elem, classNames) {\n if (((elem.nodeType == 1))) {\n elem.className = ((((classNames != undefined)) ? jQuery.grep(elem.className.split(/\\s+/), function(className) {\n return !jQuery.className.has(classNames, className);\n }).join(\" \") : \"\"));\n }\n ;\n ;\n },\n has: function(elem, className) {\n return ((jQuery.inArray(className, ((elem.className || elem)).toString().split(/\\s+/)) > -1));\n }\n },\n swap: function(elem, options, callback) {\n var old = {\n };\n {\n var fin15keys = ((window.top.JSBNG_Replay.forInKeys)((options))), fin15i = (0);\n var JSBNG__name;\n for (; (fin15i < fin15keys.length); (fin15i++)) {\n ((name) = (fin15keys[fin15i]));\n {\n old[JSBNG__name] = elem.style[JSBNG__name];\n elem.style[JSBNG__name] = options[JSBNG__name];\n };\n };\n };\n ;\n callback.call(elem);\n {\n var fin16keys = ((window.top.JSBNG_Replay.forInKeys)((options))), fin16i = (0);\n var JSBNG__name;\n for (; (fin16i < fin16keys.length); (fin16i++)) {\n ((name) = (fin16keys[fin16i]));\n {\n elem.style[JSBNG__name] = old[JSBNG__name];\n };\n };\n };\n ;\n },\n css: function(elem, JSBNG__name, force) {\n if (((((JSBNG__name == \"width\")) || ((JSBNG__name == \"height\"))))) {\n var val, props = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n }, which = ((((JSBNG__name == \"width\")) ? [\"Left\",\"Right\",] : [\"Top\",\"Bottom\",]));\n function getWH() {\n val = ((((JSBNG__name == \"width\")) ? elem.offsetWidth : elem.offsetHeight));\n var padding = 0, border = 0;\n jQuery.each(which, function() {\n padding += ((parseFloat(jQuery.curCSS(elem, ((\"padding\" + this)), true)) || 0));\n border += ((parseFloat(jQuery.curCSS(elem, ((((\"border\" + this)) + \"Width\")), true)) || 0));\n });\n val -= Math.round(((padding + border)));\n };\n ;\n if (jQuery(elem).is(\":visible\")) {\n getWH();\n }\n else {\n jQuery.swap(elem, props, getWH);\n }\n ;\n ;\n return Math.max(0, val);\n }\n ;\n ;\n return jQuery.curCSS(elem, JSBNG__name, force);\n },\n curCSS: function(elem, JSBNG__name, force) {\n var ret, style = elem.style;\n function color(elem) {\n if (!jQuery.browser.safari) {\n return false;\n }\n ;\n ;\n var ret = defaultView.JSBNG__getComputedStyle(elem, null);\n return ((!ret || ((ret.getPropertyValue(\"color\") == \"\"))));\n };\n ;\n if (((((JSBNG__name == \"opacity\")) && jQuery.browser.msie))) {\n ret = jQuery.attr(style, \"opacity\");\n return ((((ret == \"\")) ? \"1\" : ret));\n }\n ;\n ;\n if (((jQuery.browser.JSBNG__opera && ((JSBNG__name == \"display\"))))) {\n var save = style.outline;\n style.outline = \"0 solid black\";\n style.outline = save;\n }\n ;\n ;\n if (JSBNG__name.match(/float/i)) {\n JSBNG__name = styleFloat;\n }\n ;\n ;\n if (((((!force && style)) && style[JSBNG__name]))) {\n ret = style[JSBNG__name];\n }\n else {\n if (defaultView.JSBNG__getComputedStyle) {\n if (JSBNG__name.match(/float/i)) {\n JSBNG__name = \"float\";\n }\n ;\n ;\n JSBNG__name = JSBNG__name.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n var computedStyle = defaultView.JSBNG__getComputedStyle(elem, null);\n if (((computedStyle && !color(elem)))) {\n ret = computedStyle.getPropertyValue(JSBNG__name);\n }\n else {\n var swap = [], stack = [], a = elem, i = 0;\n for (; ((a && color(a))); a = a.parentNode) {\n stack.unshift(a);\n };\n ;\n for (; ((i < stack.length)); i++) {\n if (color(stack[i])) {\n swap[i] = stack[i].style.display;\n stack[i].style.display = \"block\";\n }\n ;\n ;\n };\n ;\n ret = ((((((JSBNG__name == \"display\")) && ((swap[((stack.length - 1))] != null)))) ? \"none\" : ((((computedStyle && computedStyle.getPropertyValue(JSBNG__name))) || \"\"))));\n for (i = 0; ((i < swap.length)); i++) {\n if (((swap[i] != null))) {\n stack[i].style.display = swap[i];\n }\n ;\n ;\n };\n ;\n }\n ;\n ;\n if (((((JSBNG__name == \"opacity\")) && ((ret == \"\"))))) {\n ret = \"1\";\n }\n ;\n ;\n }\n else {\n if (elem.currentStyle) {\n var camelCase = JSBNG__name.replace(/\\-(\\w)/g, function(all, letter) {\n return letter.toUpperCase();\n });\n ret = ((elem.currentStyle[JSBNG__name] || elem.currentStyle[camelCase]));\n if (((!/^\\d+(px)?$/i.test(ret) && /^\\d/.test(ret)))) {\n var left = style.left, rsLeft = elem.runtimeStyle.left;\n elem.runtimeStyle.left = elem.currentStyle.left;\n style.left = ((ret || 0));\n ret = ((style.pixelLeft + \"px\"));\n style.left = left;\n elem.runtimeStyle.left = rsLeft;\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n return ret;\n },\n clean: function(elems, context) {\n var ret = [];\n context = ((context || JSBNG__document));\n if (((typeof context.createElement == \"undefined\"))) {\n context = ((((context.ownerDocument || ((context[0] && context[0].ownerDocument)))) || JSBNG__document));\n }\n ;\n ;\n jQuery.each(elems, function(i, elem) {\n if (!elem) {\n return;\n }\n ;\n ;\n if (((elem.constructor == Number))) {\n elem += \"\";\n }\n ;\n ;\n if (((typeof elem == \"string\"))) {\n elem = elem.replace(/(<(\\w+)[^>]*?)\\/>/g, function(all, front, tag) {\n return ((tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? all : ((((((front + \"\\u003E\\u003C/\")) + tag)) + \"\\u003E\"))));\n });\n var tags = jQuery.trim(elem).toLowerCase(), div = context.createElement(\"div\");\n var wrap = ((((((((((((((((!tags.indexOf(\"\\u003Copt\") && [1,\"\\u003Cselect multiple='multiple'\\u003E\",\"\\u003C/select\\u003E\",])) || ((!tags.indexOf(\"\\u003Cleg\") && [1,\"\\u003Cfieldset\\u003E\",\"\\u003C/fieldset\\u003E\",])))) || ((tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && [1,\"\\u003Ctable\\u003E\",\"\\u003C/table\\u003E\",])))) || ((!tags.indexOf(\"\\u003Ctr\") && [2,\"\\u003Ctable\\u003E\\u003Ctbody\\u003E\",\"\\u003C/tbody\\u003E\\u003C/table\\u003E\",])))) || ((((!tags.indexOf(\"\\u003Ctd\") || !tags.indexOf(\"\\u003Cth\"))) && [3,\"\\u003Ctable\\u003E\\u003Ctbody\\u003E\\u003Ctr\\u003E\",\"\\u003C/tr\\u003E\\u003C/tbody\\u003E\\u003C/table\\u003E\",])))) || ((!tags.indexOf(\"\\u003Ccol\") && [2,\"\\u003Ctable\\u003E\\u003Ctbody\\u003E\\u003C/tbody\\u003E\\u003Ccolgroup\\u003E\",\"\\u003C/colgroup\\u003E\\u003C/table\\u003E\",])))) || ((jQuery.browser.msie && [1,\"div\\u003Cdiv\\u003E\",\"\\u003C/div\\u003E\",])))) || [0,\"\",\"\",]));\n div.innerHTML = ((((wrap[1] + elem)) + wrap[2]));\n while (wrap[0]--) {\n div = div.lastChild;\n };\n ;\n if (jQuery.browser.msie) {\n var tbody = ((((!tags.indexOf(\"\\u003Ctable\") && ((tags.indexOf(\"\\u003Ctbody\") < 0)))) ? ((div.firstChild && div.firstChild.childNodes)) : ((((((wrap[1] == \"\\u003Ctable\\u003E\")) && ((tags.indexOf(\"\\u003Ctbody\") < 0)))) ? div.childNodes : []))));\n for (var j = ((tbody.length - 1)); ((j >= 0)); --j) {\n if (((jQuery.nodeName(tbody[j], \"tbody\") && !tbody[j].childNodes.length))) {\n tbody[j].parentNode.removeChild(tbody[j]);\n }\n ;\n ;\n };\n ;\n if (/^\\s/.test(elem)) {\n div.insertBefore(context.createTextNode(elem.match(/^\\s*/)[0]), div.firstChild);\n }\n ;\n ;\n }\n ;\n ;\n elem = jQuery.makeArray(div.childNodes);\n }\n ;\n ;\n if (((((elem.length === 0)) && ((!jQuery.nodeName(elem, \"form\") && !jQuery.nodeName(elem, \"select\")))))) {\n return;\n }\n ;\n ;\n if (((((((elem[0] == undefined)) || jQuery.nodeName(elem, \"form\"))) || elem.options))) {\n ret.push(elem);\n }\n else {\n ret = jQuery.merge(ret, elem);\n }\n ;\n ;\n });\n return ret;\n },\n attr: function(elem, JSBNG__name, value) {\n if (((((!elem || ((elem.nodeType == 3)))) || ((elem.nodeType == 8))))) {\n return undefined;\n }\n ;\n ;\n var notxml = !jQuery.isXMLDoc(elem), set = ((value !== undefined)), msie = jQuery.browser.msie;\n JSBNG__name = ((((notxml && jQuery.props[JSBNG__name])) || JSBNG__name));\n if (elem.tagName) {\n var special = /href|src|style/.test(JSBNG__name);\n if (((((JSBNG__name == \"selected\")) && jQuery.browser.safari))) {\n elem.parentNode.selectedIndex;\n }\n ;\n ;\n if (((((((JSBNG__name in elem)) && notxml)) && !special))) {\n if (set) {\n if (((((((JSBNG__name == \"type\")) && jQuery.nodeName(elem, \"input\"))) && elem.parentNode))) {\n throw \"type property can't be changed\";\n }\n ;\n ;\n elem[JSBNG__name] = value;\n }\n ;\n ;\n if (((jQuery.nodeName(elem, \"form\") && elem.getAttributeNode(JSBNG__name)))) {\n return elem.getAttributeNode(JSBNG__name).nodeValue;\n }\n ;\n ;\n return elem[JSBNG__name];\n }\n ;\n ;\n if (((((msie && notxml)) && ((JSBNG__name == \"style\"))))) {\n return jQuery.attr(elem.style, \"cssText\", value);\n }\n ;\n ;\n if (set) {\n elem.setAttribute(JSBNG__name, ((\"\" + value)));\n }\n ;\n ;\n var attr = ((((((msie && notxml)) && special)) ? elem.getAttribute(JSBNG__name, 2) : elem.getAttribute(JSBNG__name)));\n return ((((attr === null)) ? undefined : attr));\n }\n ;\n ;\n if (((msie && ((JSBNG__name == \"opacity\"))))) {\n if (set) {\n elem.zoom = 1;\n elem.filter = ((((elem.filter || \"\")).replace(/alpha\\([^)]*\\)/, \"\") + ((((((parseInt(value) + \"\")) == \"NaN\")) ? \"\" : ((((\"alpha(opacity=\" + ((value * 100)))) + \")\"))))));\n }\n ;\n ;\n return ((((elem.filter && ((elem.filter.indexOf(\"opacity=\") >= 0)))) ? ((((parseFloat(elem.filter.match(/opacity=([^)]*)/)[1]) / 100)) + \"\")) : \"\"));\n }\n ;\n ;\n JSBNG__name = JSBNG__name.replace(/-([a-z])/gi, function(all, letter) {\n return letter.toUpperCase();\n });\n if (set) {\n elem[JSBNG__name] = value;\n }\n ;\n ;\n return elem[JSBNG__name];\n },\n trim: function(text) {\n return ((text || \"\")).replace(/^\\s+|\\s+$/g, \"\");\n },\n makeArray: function(array) {\n var ret = [];\n if (((array != null))) {\n var i = array.length;\n if (((((((((i == null)) || array.split)) || array.JSBNG__setInterval)) || array.call))) {\n ret[0] = array;\n }\n else {\n while (i) {\n ret[--i] = array[i];\n };\n ;\n }\n ;\n ;\n }\n ;\n ;\n return ret;\n },\n inArray: function(elem, array) {\n for (var i = 0, length = array.length; ((i < length)); i++) {\n if (((array[i] === elem))) {\n return i;\n }\n ;\n ;\n };\n ;\n return -1;\n },\n merge: function(first, second) {\n var i = 0, elem, pos = first.length;\n if (jQuery.browser.msie) {\n while (elem = second[i++]) {\n if (((elem.nodeType != 8))) {\n first[pos++] = elem;\n }\n ;\n ;\n };\n ;\n }\n else {\n while (elem = second[i++]) {\n first[pos++] = elem;\n };\n ;\n }\n ;\n ;\n return first;\n },\n unique: function(array) {\n var ret = [], done = {\n };\n try {\n for (var i = 0, length = array.length; ((i < length)); i++) {\n var id = jQuery.data(array[i]);\n if (!done[id]) {\n done[id] = true;\n ret.push(array[i]);\n }\n ;\n ;\n };\n ;\n } catch (e) {\n ret = array;\n };\n ;\n return ret;\n },\n grep: function(elems, callback, inv) {\n var ret = [];\n for (var i = 0, length = elems.length; ((i < length)); i++) {\n if (((!inv != !callback(elems[i], i)))) {\n ret.push(elems[i]);\n }\n ;\n ;\n };\n ;\n return ret;\n },\n map: function(elems, callback) {\n var ret = [];\n for (var i = 0, length = elems.length; ((i < length)); i++) {\n var value = callback(elems[i], i);\n if (((value != null))) {\n ret[ret.length] = value;\n }\n ;\n ;\n };\n ;\n return ret.concat.apply([], ret);\n }\n });\n var userAgent = JSBNG__navigator.userAgent.toLowerCase();\n jQuery.browser = {\n version: ((userAgent.match(/.+(?:rv|it|ra|ie)[\\/: ]([\\d.]+)/) || []))[1],\n safari: /webkit/.test(userAgent),\n JSBNG__opera: /opera/.test(userAgent),\n msie: ((/msie/.test(userAgent) && !/opera/.test(userAgent))),\n mozilla: ((/mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)))\n };\n var styleFloat = ((jQuery.browser.msie ? \"styleFloat\" : \"cssFloat\"));\n jQuery.extend({\n boxModel: ((!jQuery.browser.msie || ((JSBNG__document.compatMode == \"CSS1Compat\")))),\n props: {\n \"for\": \"htmlFor\",\n class: \"className\",\n float: styleFloat,\n cssFloat: styleFloat,\n styleFloat: styleFloat,\n readonly: \"readOnly\",\n maxlength: \"maxLength\",\n cellspacing: \"cellSpacing\"\n }\n });\n jQuery.each({\n parent: function(elem) {\n return elem.parentNode;\n },\n parents: function(elem) {\n return jQuery.dir(elem, \"parentNode\");\n },\n next: function(elem) {\n return jQuery.nth(elem, 2, \"nextSibling\");\n },\n prev: function(elem) {\n return jQuery.nth(elem, 2, \"previousSibling\");\n },\n nextAll: function(elem) {\n return jQuery.dir(elem, \"nextSibling\");\n },\n prevAll: function(elem) {\n return jQuery.dir(elem, \"previousSibling\");\n },\n siblings: function(elem) {\n return jQuery.sibling(elem.parentNode.firstChild, elem);\n },\n children: function(elem) {\n return jQuery.sibling(elem.firstChild);\n },\n contents: function(elem) {\n return ((jQuery.nodeName(elem, \"div\") ? ((elem.contentDocument || elem.contentWindow.JSBNG__document)) : jQuery.makeArray(elem.childNodes)));\n }\n }, function(JSBNG__name, fn) {\n jQuery.fn[JSBNG__name] = function(selector) {\n var ret = jQuery.map(this, fn);\n if (((selector && ((typeof selector == \"string\"))))) {\n ret = jQuery.multiFilter(selector, ret);\n }\n ;\n ;\n return this.pushStack(jQuery.unique(ret));\n };\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function(JSBNG__name, original) {\n jQuery.fn[JSBNG__name] = function() {\n var args = arguments;\n return this.each(function() {\n for (var i = 0, length = args.length; ((i < length)); i++) {\n jQuery(args[i])[original](this);\n };\n ;\n });\n };\n });\n jQuery.each({\n removeAttr: function(JSBNG__name) {\n jQuery.attr(this, JSBNG__name, \"\");\n if (((this.nodeType == 1))) {\n this.removeAttribute(JSBNG__name);\n }\n ;\n ;\n },\n addClass: function(classNames) {\n jQuery.className.add(this, classNames);\n },\n removeClass: function(classNames) {\n jQuery.className.remove(this, classNames);\n },\n toggleClass: function(classNames) {\n jQuery.className[((jQuery.className.has(this, classNames) ? \"remove\" : \"add\"))](this, classNames);\n },\n remove: function(selector) {\n if (((!selector || jQuery.filter(selector, [this,]).r.length))) {\n jQuery(\"*\", this).add(this).each(function() {\n jQuery.JSBNG__event.remove(this);\n jQuery.removeData(this);\n });\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n ;\n ;\n }\n ;\n ;\n },\n empty: function() {\n jQuery(\"\\u003E*\", this).remove();\n while (this.firstChild) {\n this.removeChild(this.firstChild);\n };\n ;\n }\n }, function(JSBNG__name, fn) {\n jQuery.fn[JSBNG__name] = function() {\n return this.each(fn, arguments);\n };\n });\n jQuery.each([\"Height\",\"Width\",], function(i, JSBNG__name) {\n var type = JSBNG__name.toLowerCase();\n jQuery.fn[type] = function(size) {\n return ((((this[0] == window)) ? ((((((((jQuery.browser.JSBNG__opera && JSBNG__document.body[((\"client\" + JSBNG__name))])) || ((jQuery.browser.safari && window[((\"JSBNG__inner\" + JSBNG__name))])))) || ((((JSBNG__document.compatMode == \"CSS1Compat\")) && JSBNG__document.documentElement[((\"client\" + JSBNG__name))])))) || JSBNG__document.body[((\"client\" + JSBNG__name))])) : ((((this[0] == JSBNG__document)) ? Math.max(Math.max(JSBNG__document.body[((\"JSBNG__scroll\" + JSBNG__name))], JSBNG__document.documentElement[((\"JSBNG__scroll\" + JSBNG__name))]), Math.max(JSBNG__document.body[((\"offset\" + JSBNG__name))], JSBNG__document.documentElement[((\"offset\" + JSBNG__name))])) : ((((size == undefined)) ? ((this.length ? jQuery.css(this[0], type) : null)) : this.css(type, ((((size.constructor == String)) ? size : ((size + \"px\")))))))))));\n };\n });\n function num(elem, prop) {\n return ((((elem[0] && parseInt(jQuery.curCSS(elem[0], prop, true), 10))) || 0));\n };\n ;\n var chars = ((((jQuery.browser.safari && ((parseInt(jQuery.browser.version) < 417)))) ? \"(?:[\\\\w*_-]|\\\\\\\\.)\" : \"(?:[\\\\w\\u0128-\\uffff*_-]|\\\\\\\\.)\")), quickChild = new RegExp(((((\"^\\u003E\\\\s*(\" + chars)) + \"+)\"))), quickID = new RegExp(((((((((\"^(\" + chars)) + \"+)(#)(\")) + chars)) + \"+)\"))), quickClass = new RegExp(((((\"^([#.]?)(\" + chars)) + \"*)\")));\n jQuery.extend({\n expr: {\n \"\": function(a, i, m) {\n return ((((m[2] == \"*\")) || jQuery.nodeName(a, m[2])));\n },\n \"#\": function(a, i, m) {\n return ((a.getAttribute(\"id\") == m[2]));\n },\n \":\": {\n lt: function(a, i, m) {\n return ((i < ((m[3] - 0))));\n },\n gt: function(a, i, m) {\n return ((i > ((m[3] - 0))));\n },\n nth: function(a, i, m) {\n return ((((m[3] - 0)) == i));\n },\n eq: function(a, i, m) {\n return ((((m[3] - 0)) == i));\n },\n first: function(a, i) {\n return ((i == 0));\n },\n last: function(a, i, m, r) {\n return ((i == ((r.length - 1))));\n },\n even: function(a, i) {\n return ((((i % 2)) == 0));\n },\n odd: function(a, i) {\n return ((i % 2));\n },\n \"first-child\": function(a) {\n return ((a.parentNode.getElementsByTagName(\"*\")[0] == a));\n },\n \"last-child\": function(a) {\n return ((jQuery.nth(a.parentNode.lastChild, 1, \"previousSibling\") == a));\n },\n \"only-child\": function(a) {\n return !jQuery.nth(a.parentNode.lastChild, 2, \"previousSibling\");\n },\n parent: function(a) {\n return a.firstChild;\n },\n empty: function(a) {\n return !a.firstChild;\n },\n contains: function(a, i, m) {\n return ((((((((a.textContent || a.innerText)) || jQuery(a).text())) || \"\")).indexOf(m[3]) >= 0));\n },\n visible: function(a) {\n return ((((((\"hidden\" != a.type)) && ((jQuery.css(a, \"display\") != \"none\")))) && ((jQuery.css(a, \"visibility\") != \"hidden\"))));\n },\n hidden: function(a) {\n return ((((((\"hidden\" == a.type)) || ((jQuery.css(a, \"display\") == \"none\")))) || ((jQuery.css(a, \"visibility\") == \"hidden\"))));\n },\n enabled: function(a) {\n return !a.disabled;\n },\n disabled: function(a) {\n return a.disabled;\n },\n checked: function(a) {\n return a.checked;\n },\n selected: function(a) {\n return ((a.selected || jQuery.attr(a, \"selected\")));\n },\n text: function(a) {\n return ((\"text\" == a.type));\n },\n radio: function(a) {\n return ((\"radio\" == a.type));\n },\n checkbox: function(a) {\n return ((\"checkbox\" == a.type));\n },\n file: function(a) {\n return ((\"file\" == a.type));\n },\n password: function(a) {\n return ((\"password\" == a.type));\n },\n submit: function(a) {\n return ((\"submit\" == a.type));\n },\n image: function(a) {\n return ((\"image\" == a.type));\n },\n reset: function(a) {\n return ((\"reset\" == a.type));\n },\n button: function(a) {\n return ((((\"button\" == a.type)) || jQuery.nodeName(a, \"button\")));\n },\n input: function(a) {\n return /input|select|textarea|button/i.test(a.nodeName);\n },\n has: function(a, i, m) {\n return jQuery.JSBNG__find(m[3], a).length;\n },\n header: function(a) {\n return /h\\d/i.test(a.nodeName);\n },\n animated: function(a) {\n return jQuery.grep(jQuery.timers, function(fn) {\n return ((a == fn.elem));\n }).length;\n }\n }\n },\n parse: [/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *('?\"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\(\"?'?(.*?(\\(.*?\\))?[^(]*?)\"?'?\\)/,new RegExp(((((\"^([:.#]*)(\" + chars)) + \"+)\"))),],\n multiFilter: function(expr, elems, not) {\n var old, cur = [];\n while (((expr && ((expr != old))))) {\n old = expr;\n var f = jQuery.filter(expr, elems, not);\n expr = f.t.replace(/^\\s*,\\s*/, \"\");\n cur = ((not ? elems = f.r : jQuery.merge(cur, f.r)));\n };\n ;\n return cur;\n },\n JSBNG__find: function(t, context) {\n if (((typeof t != \"string\"))) {\n return [t,];\n }\n ;\n ;\n if (((((context && ((context.nodeType != 1)))) && ((context.nodeType != 9))))) {\n return [];\n }\n ;\n ;\n context = ((context || JSBNG__document));\n var ret = [context,], done = [], last, nodeName;\n while (((t && ((last != t))))) {\n var r = [];\n last = t;\n t = jQuery.trim(t);\n var foundToken = false, re = quickChild, m = re.exec(t);\n if (m) {\n nodeName = m[1].toUpperCase();\n for (var i = 0; ret[i]; i++) {\n for (var c = ret[i].firstChild; c; c = c.nextSibling) {\n if (((((c.nodeType == 1)) && ((((nodeName == \"*\")) || ((c.nodeName.toUpperCase() == nodeName))))))) {\n r.push(c);\n }\n ;\n ;\n };\n ;\n };\n ;\n ret = r;\n t = t.replace(re, \"\");\n if (((t.indexOf(\" \") == 0))) {\n continue;\n }\n ;\n ;\n foundToken = true;\n }\n else {\n re = /^([>+~])\\s*(\\w*)/i;\n if ((((m = re.exec(t)) != null))) {\n r = [];\n var merge = {\n };\n nodeName = m[2].toUpperCase();\n m = m[1];\n for (var j = 0, rl = ret.length; ((j < rl)); j++) {\n var n = ((((((m == \"~\")) || ((m == \"+\")))) ? ret[j].nextSibling : ret[j].firstChild));\n for (; n; n = n.nextSibling) {\n if (((n.nodeType == 1))) {\n var id = jQuery.data(n);\n if (((((m == \"~\")) && merge[id]))) {\n break;\n }\n ;\n ;\n if (((!nodeName || ((n.nodeName.toUpperCase() == nodeName))))) {\n if (((m == \"~\"))) {\n merge[id] = true;\n }\n ;\n ;\n r.push(n);\n }\n ;\n ;\n if (((m == \"+\"))) {\n break;\n }\n ;\n ;\n }\n ;\n ;\n };\n ;\n };\n ;\n ret = r;\n t = jQuery.trim(t.replace(re, \"\"));\n foundToken = true;\n }\n ;\n ;\n }\n ;\n ;\n if (((t && !foundToken))) {\n if (!t.indexOf(\",\")) {\n if (((context == ret[0]))) {\n ret.shift();\n }\n ;\n ;\n done = jQuery.merge(done, ret);\n r = ret = [context,];\n t = ((\" \" + t.substr(1, t.length)));\n }\n else {\n var re2 = quickID;\n var m = re2.exec(t);\n if (m) {\n m = [0,m[2],m[3],m[1],];\n }\n else {\n re2 = quickClass;\n m = re2.exec(t);\n }\n ;\n ;\n m[2] = m[2].replace(/\\\\/g, \"\");\n var elem = ret[((ret.length - 1))];\n if (((((((((m[1] == \"#\")) && elem)) && elem.getElementById)) && !jQuery.isXMLDoc(elem)))) {\n var oid = elem.getElementById(m[2]);\n if (((((((((jQuery.browser.msie || jQuery.browser.JSBNG__opera)) && oid)) && ((typeof oid.id == \"string\")))) && ((oid.id != m[2]))))) {\n oid = jQuery(((((\"[@id=\\\"\" + m[2])) + \"\\\"]\")), elem)[0];\n }\n ;\n ;\n ret = r = ((((oid && ((!m[3] || jQuery.nodeName(oid, m[3]))))) ? [oid,] : []));\n }\n else {\n for (var i = 0; ret[i]; i++) {\n var tag = ((((((m[1] == \"#\")) && m[3])) ? m[3] : ((((((m[1] != \"\")) || ((m[0] == \"\")))) ? \"*\" : m[2]))));\n if (((((tag == \"*\")) && ((ret[i].nodeName.toLowerCase() == \"object\"))))) {\n tag = \"param\";\n }\n ;\n ;\n r = jQuery.merge(r, ret[i].getElementsByTagName(tag));\n };\n ;\n if (((m[1] == \".\"))) {\n r = jQuery.classFilter(r, m[2]);\n }\n ;\n ;\n if (((m[1] == \"#\"))) {\n var tmp = [];\n for (var i = 0; r[i]; i++) {\n if (((r[i].getAttribute(\"id\") == m[2]))) {\n tmp = [r[i],];\n break;\n }\n ;\n ;\n };\n ;\n r = tmp;\n }\n ;\n ;\n ret = r;\n }\n ;\n ;\n t = t.replace(re2, \"\");\n }\n ;\n ;\n }\n ;\n ;\n if (t) {\n var val = jQuery.filter(t, r);\n ret = r = val.r;\n t = jQuery.trim(val.t);\n }\n ;\n ;\n };\n ;\n if (t) {\n ret = [];\n }\n ;\n ;\n if (((ret && ((context == ret[0]))))) {\n ret.shift();\n }\n ;\n ;\n done = jQuery.merge(done, ret);\n return done;\n },\n classFilter: function(r, m, not) {\n m = ((((\" \" + m)) + \" \"));\n var tmp = [];\n for (var i = 0; r[i]; i++) {\n var pass = ((((((\" \" + r[i].className)) + \" \")).indexOf(m) >= 0));\n if (((((!not && pass)) || ((not && !pass))))) {\n tmp.push(r[i]);\n }\n ;\n ;\n };\n ;\n return tmp;\n },\n filter: function(t, r, not) {\n var last;\n while (((t && ((t != last))))) {\n last = t;\n var p = jQuery.parse, m;\n for (var i = 0; p[i]; i++) {\n m = p[i].exec(t);\n if (m) {\n t = t.substring(m[0].length);\n m[2] = m[2].replace(/\\\\/g, \"\");\n break;\n }\n ;\n ;\n };\n ;\n if (!m) {\n break;\n }\n ;\n ;\n if (((((m[1] == \":\")) && ((m[2] == \"not\"))))) {\n r = ((isSimple.test(m[3]) ? jQuery.filter(m[3], r, true).r : jQuery(r).not(m[3])));\n }\n else {\n if (((m[1] == \".\"))) {\n r = jQuery.classFilter(r, m[2], not);\n }\n else {\n if (((m[1] == \"[\"))) {\n var tmp = [], type = m[3];\n for (var i = 0, rl = r.length; ((i < rl)); i++) {\n var a = r[i], z = a[((jQuery.props[m[2]] || m[2]))];\n if (((((z == null)) || /href|src|selected/.test(m[2])))) {\n z = ((jQuery.attr(a, m[2]) || \"\"));\n }\n ;\n ;\n if (((((((((((((((((type == \"\")) && !!z)) || ((((type == \"=\")) && ((z == m[5])))))) || ((((type == \"!=\")) && ((z != m[5])))))) || ((((((type == \"^=\")) && z)) && !z.indexOf(m[5]))))) || ((((type == \"$=\")) && ((z.substr(((z.length - m[5].length))) == m[5])))))) || ((((((type == \"*=\")) || ((type == \"~=\")))) && ((z.indexOf(m[5]) >= 0)))))) ^ not))) {\n tmp.push(a);\n }\n ;\n ;\n };\n ;\n r = tmp;\n }\n else {\n if (((((m[1] == \":\")) && ((m[2] == \"nth-child\"))))) {\n var merge = {\n }, tmp = [], test = /(-?)(\\d*)n((?:\\+|-)?\\d*)/.exec(((((((((((m[3] == \"even\")) && \"2n\")) || ((((m[3] == \"odd\")) && \"2n+1\")))) || ((!/\\D/.test(m[3]) && ((\"0n+\" + m[3])))))) || m[3]))), first = ((((test[1] + ((test[2] || 1)))) - 0)), last = ((test[3] - 0));\n for (var i = 0, rl = r.length; ((i < rl)); i++) {\n var node = r[i], parentNode = node.parentNode, id = jQuery.data(parentNode);\n if (!merge[id]) {\n var c = 1;\n for (var n = parentNode.firstChild; n; n = n.nextSibling) {\n if (((n.nodeType == 1))) {\n n.nodeIndex = c++;\n }\n ;\n ;\n };\n ;\n merge[id] = true;\n }\n ;\n ;\n var add = false;\n if (((first == 0))) {\n if (((node.nodeIndex == last))) {\n add = true;\n }\n ;\n ;\n }\n else {\n if (((((((((node.nodeIndex - last)) % first)) == 0)) && ((((((node.nodeIndex - last)) / first)) >= 0))))) {\n add = true;\n }\n ;\n ;\n }\n ;\n ;\n if (((add ^ not))) {\n tmp.push(node);\n }\n ;\n ;\n };\n ;\n r = tmp;\n }\n else {\n var fn = jQuery.expr[m[1]];\n if (((typeof fn == \"object\"))) {\n fn = fn[m[2]];\n }\n ;\n ;\n if (((typeof fn == \"string\"))) {\n fn = eval(((((\"false||function(a,i){return \" + fn)) + \";}\")));\n }\n ;\n ;\n r = jQuery.grep(r, function(elem, i) {\n return fn(elem, i, m, r);\n }, not);\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n };\n ;\n return {\n r: r,\n t: t\n };\n },\n dir: function(elem, dir) {\n var matched = [], cur = elem[dir];\n while (((cur && ((cur != JSBNG__document))))) {\n if (((cur.nodeType == 1))) {\n matched.push(cur);\n }\n ;\n ;\n cur = cur[dir];\n };\n ;\n return matched;\n },\n nth: function(cur, result, dir, elem) {\n result = ((result || 1));\n var num = 0;\n for (; cur; cur = cur[dir]) {\n if (((((cur.nodeType == 1)) && ((++num == result))))) {\n break;\n }\n ;\n ;\n };\n ;\n return cur;\n },\n sibling: function(n, elem) {\n var r = [];\n for (; n; n = n.nextSibling) {\n if (((((n.nodeType == 1)) && ((n != elem))))) {\n r.push(n);\n }\n ;\n ;\n };\n ;\n return r;\n }\n });\n jQuery.JSBNG__event = {\n add: function(elem, types, handler, data) {\n if (((((elem.nodeType == 3)) || ((elem.nodeType == 8))))) {\n return;\n }\n ;\n ;\n if (((jQuery.browser.msie && elem.JSBNG__setInterval))) {\n elem = window;\n }\n ;\n ;\n if (!handler.guid) {\n handler.guid = this.guid++;\n }\n ;\n ;\n if (((data != undefined))) {\n var fn = handler;\n handler = this.proxy(fn, function() {\n return fn.apply(this, arguments);\n });\n handler.data = data;\n }\n ;\n ;\n var events = ((jQuery.data(elem, \"events\") || jQuery.data(elem, \"events\", {\n }))), handle = ((jQuery.data(elem, \"handle\") || jQuery.data(elem, \"handle\", function() {\n if (((((typeof jQuery != \"undefined\")) && !jQuery.JSBNG__event.triggered))) {\n return jQuery.JSBNG__event.handle.apply(arguments.callee.elem, arguments);\n }\n ;\n ;\n })));\n handle.elem = elem;\n jQuery.each(types.split(/\\s+/), function(index, type) {\n var parts = type.split(\".\");\n type = parts[0];\n handler.type = parts[1];\n var handlers = events[type];\n if (!handlers) {\n handlers = events[type] = {\n };\n if (((!jQuery.JSBNG__event.special[type] || ((jQuery.JSBNG__event.special[type].setup.call(elem) === false))))) {\n if (elem.JSBNG__addEventListener) {\n elem.JSBNG__addEventListener(type, handle, false);\n }\n else {\n if (elem.JSBNG__attachEvent) {\n elem.JSBNG__attachEvent(((\"JSBNG__on\" + type)), handle);\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n handlers[handler.guid] = handler;\n jQuery.JSBNG__event.global[type] = true;\n });\n elem = null;\n },\n guid: 1,\n global: {\n },\n remove: function(elem, types, handler) {\n if (((((elem.nodeType == 3)) || ((elem.nodeType == 8))))) {\n return;\n }\n ;\n ;\n var events = jQuery.data(elem, \"events\"), ret, index;\n if (events) {\n if (((((types == undefined)) || ((((typeof types == \"string\")) && ((types.charAt(0) == \".\"))))))) {\n {\n var fin17keys = ((window.top.JSBNG_Replay.forInKeys)((events))), fin17i = (0);\n var type;\n for (; (fin17i < fin17keys.length); (fin17i++)) {\n ((type) = (fin17keys[fin17i]));\n {\n this.remove(elem, ((type + ((types || \"\")))));\n };\n };\n };\n ;\n }\n else {\n if (types.type) {\n handler = types.handler;\n types = types.type;\n }\n ;\n ;\n jQuery.each(types.split(/\\s+/), function(index, type) {\n var parts = type.split(\".\");\n type = parts[0];\n if (events[type]) {\n if (handler) {\n delete events[type][handler.guid];\n }\n else {\n {\n var fin18keys = ((window.top.JSBNG_Replay.forInKeys)((events[type]))), fin18i = (0);\n (0);\n for (; (fin18i < fin18keys.length); (fin18i++)) {\n ((handler) = (fin18keys[fin18i]));\n {\n if (((!parts[1] || ((events[type][handler].type == parts[1]))))) {\n delete events[type][handler];\n }\n ;\n ;\n };\n };\n };\n ;\n }\n ;\n ;\n {\n var fin19keys = ((window.top.JSBNG_Replay.forInKeys)((events[type]))), fin19i = (0);\n (0);\n for (; (fin19i < fin19keys.length); (fin19i++)) {\n ((ret) = (fin19keys[fin19i]));\n {\n break;\n };\n };\n };\n ;\n if (!ret) {\n if (((!jQuery.JSBNG__event.special[type] || ((jQuery.JSBNG__event.special[type].teardown.call(elem) === false))))) {\n if (elem.JSBNG__removeEventListener) {\n elem.JSBNG__removeEventListener(type, jQuery.data(elem, \"handle\"), false);\n }\n else {\n if (elem.JSBNG__detachEvent) {\n elem.JSBNG__detachEvent(((\"JSBNG__on\" + type)), jQuery.data(elem, \"handle\"));\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n ret = null;\n delete events[type];\n }\n ;\n ;\n }\n ;\n ;\n });\n }\n ;\n ;\n {\n var fin20keys = ((window.top.JSBNG_Replay.forInKeys)((events))), fin20i = (0);\n (0);\n for (; (fin20i < fin20keys.length); (fin20i++)) {\n ((ret) = (fin20keys[fin20i]));\n {\n break;\n };\n };\n };\n ;\n if (!ret) {\n var handle = jQuery.data(elem, \"handle\");\n if (handle) {\n handle.elem = null;\n }\n ;\n ;\n jQuery.removeData(elem, \"events\");\n jQuery.removeData(elem, \"handle\");\n }\n ;\n ;\n }\n ;\n ;\n },\n trigger: function(type, data, elem, donative, extra) {\n data = jQuery.makeArray(data);\n if (((type.indexOf(\"!\") >= 0))) {\n type = type.slice(0, -1);\n var exclusive = true;\n }\n ;\n ;\n if (!elem) {\n if (this.global[type]) {\n jQuery(\"*\").add([window,JSBNG__document,]).trigger(type, data);\n }\n ;\n ;\n }\n else {\n if (((((elem.nodeType == 3)) || ((elem.nodeType == 8))))) {\n return undefined;\n }\n ;\n ;\n var val, ret, fn = jQuery.isFunction(((elem[type] || null))), JSBNG__event = ((!data[0] || !data[0].preventDefault));\n if (JSBNG__event) {\n data.unshift({\n type: type,\n target: elem,\n preventDefault: function() {\n \n },\n stopPropagation: function() {\n \n },\n timeStamp: now()\n });\n data[0][expando] = true;\n }\n ;\n ;\n data[0].type = type;\n if (exclusive) {\n data[0].exclusive = true;\n }\n ;\n ;\n var handle = jQuery.data(elem, \"handle\");\n if (handle) {\n val = handle.apply(elem, data);\n }\n ;\n ;\n if (((((((!fn || ((jQuery.nodeName(elem, \"a\") && ((type == \"click\")))))) && elem[((\"JSBNG__on\" + type))])) && ((elem[((\"JSBNG__on\" + type))].apply(elem, data) === false))))) {\n val = false;\n }\n ;\n ;\n if (JSBNG__event) {\n data.shift();\n }\n ;\n ;\n if (((extra && jQuery.isFunction(extra)))) {\n ret = extra.apply(elem, ((((val == null)) ? data : data.concat(val))));\n if (((ret !== undefined))) {\n val = ret;\n }\n ;\n ;\n }\n ;\n ;\n if (((((((fn && ((donative !== false)))) && ((val !== false)))) && !((jQuery.nodeName(elem, \"a\") && ((type == \"click\"))))))) {\n this.triggered = true;\n try {\n elem[type]();\n } catch (e) {\n \n };\n ;\n }\n ;\n ;\n this.triggered = false;\n }\n ;\n ;\n return val;\n },\n handle: function(JSBNG__event) {\n var val, ret, namespace, all, handlers;\n JSBNG__event = arguments[0] = jQuery.JSBNG__event.fix(((JSBNG__event || window.JSBNG__event)));\n namespace = JSBNG__event.type.split(\".\");\n JSBNG__event.type = namespace[0];\n namespace = namespace[1];\n all = ((!namespace && !JSBNG__event.exclusive));\n handlers = ((jQuery.data(this, \"events\") || {\n }))[JSBNG__event.type];\n {\n var fin21keys = ((window.top.JSBNG_Replay.forInKeys)((handlers))), fin21i = (0);\n var j;\n for (; (fin21i < fin21keys.length); (fin21i++)) {\n ((j) = (fin21keys[fin21i]));\n {\n var handler = handlers[j];\n if (((all || ((handler.type == namespace))))) {\n JSBNG__event.handler = handler;\n JSBNG__event.data = handler.data;\n ret = handler.apply(this, arguments);\n if (((val !== false))) {\n val = ret;\n }\n ;\n ;\n if (((ret === false))) {\n JSBNG__event.preventDefault();\n JSBNG__event.stopPropagation();\n }\n ;\n ;\n }\n ;\n ;\n };\n };\n };\n ;\n return val;\n },\n fix: function(JSBNG__event) {\n if (((JSBNG__event[expando] == true))) {\n return JSBNG__event;\n }\n ;\n ;\n var originalEvent = JSBNG__event;\n JSBNG__event = {\n originalEvent: originalEvent\n };\n var props = \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which\".split(\" \");\n for (var i = props.length; i; i--) {\n JSBNG__event[props[i]] = originalEvent[props[i]];\n };\n ;\n JSBNG__event[expando] = true;\n JSBNG__event.preventDefault = function() {\n if (originalEvent.preventDefault) {\n originalEvent.preventDefault();\n }\n ;\n ;\n originalEvent.returnValue = false;\n };\n JSBNG__event.stopPropagation = function() {\n if (originalEvent.stopPropagation) {\n originalEvent.stopPropagation();\n }\n ;\n ;\n originalEvent.cancelBubble = true;\n };\n JSBNG__event.timeStamp = ((JSBNG__event.timeStamp || now()));\n if (!JSBNG__event.target) {\n JSBNG__event.target = ((JSBNG__event.srcElement || JSBNG__document));\n }\n ;\n ;\n if (((JSBNG__event.target.nodeType == 3))) {\n JSBNG__event.target = JSBNG__event.target.parentNode;\n }\n ;\n ;\n if (((!JSBNG__event.relatedTarget && JSBNG__event.fromElement))) {\n JSBNG__event.relatedTarget = ((((JSBNG__event.fromElement == JSBNG__event.target)) ? JSBNG__event.toElement : JSBNG__event.fromElement));\n }\n ;\n ;\n if (((((JSBNG__event.pageX == null)) && ((JSBNG__event.clientX != null))))) {\n var doc = JSBNG__document.documentElement, body = JSBNG__document.body;\n JSBNG__event.pageX = ((((JSBNG__event.clientX + ((((((doc && doc.scrollLeft)) || ((body && body.scrollLeft)))) || 0)))) - ((doc.clientLeft || 0))));\n JSBNG__event.pageY = ((((JSBNG__event.clientY + ((((((doc && doc.scrollTop)) || ((body && body.scrollTop)))) || 0)))) - ((doc.clientTop || 0))));\n }\n ;\n ;\n if (((!JSBNG__event.which && ((((JSBNG__event.charCode || ((JSBNG__event.charCode === 0)))) ? JSBNG__event.charCode : JSBNG__event.keyCode))))) {\n JSBNG__event.which = ((JSBNG__event.charCode || JSBNG__event.keyCode));\n }\n ;\n ;\n if (((!JSBNG__event.metaKey && JSBNG__event.ctrlKey))) {\n JSBNG__event.metaKey = JSBNG__event.ctrlKey;\n }\n ;\n ;\n if (((!JSBNG__event.which && JSBNG__event.button))) {\n JSBNG__event.which = ((((JSBNG__event.button & 1)) ? 1 : ((((JSBNG__event.button & 2)) ? 3 : ((((JSBNG__event.button & 4)) ? 2 : 0))))));\n }\n ;\n ;\n return JSBNG__event;\n },\n proxy: function(fn, proxy) {\n proxy.guid = fn.guid = ((((fn.guid || proxy.guid)) || this.guid++));\n return proxy;\n },\n special: {\n ready: {\n setup: function() {\n bindReady();\n return;\n },\n teardown: function() {\n return;\n }\n },\n mouseenter: {\n setup: function() {\n if (jQuery.browser.msie) {\n return false;\n }\n ;\n ;\n jQuery(this).bind(\"mouseover\", jQuery.JSBNG__event.special.mouseenter.handler);\n return true;\n },\n teardown: function() {\n if (jQuery.browser.msie) {\n return false;\n }\n ;\n ;\n jQuery(this).unbind(\"mouseover\", jQuery.JSBNG__event.special.mouseenter.handler);\n return true;\n },\n handler: function(JSBNG__event) {\n if (withinElement(JSBNG__event, this)) {\n return true;\n }\n ;\n ;\n JSBNG__event.type = \"mouseenter\";\n return jQuery.JSBNG__event.handle.apply(this, arguments);\n }\n },\n mouseleave: {\n setup: function() {\n if (jQuery.browser.msie) {\n return false;\n }\n ;\n ;\n jQuery(this).bind(\"mouseout\", jQuery.JSBNG__event.special.mouseleave.handler);\n return true;\n },\n teardown: function() {\n if (jQuery.browser.msie) {\n return false;\n }\n ;\n ;\n jQuery(this).unbind(\"mouseout\", jQuery.JSBNG__event.special.mouseleave.handler);\n return true;\n },\n handler: function(JSBNG__event) {\n if (withinElement(JSBNG__event, this)) {\n return true;\n }\n ;\n ;\n JSBNG__event.type = \"mouseleave\";\n return jQuery.JSBNG__event.handle.apply(this, arguments);\n }\n }\n }\n };\n jQuery.fn.extend({\n bind: function(type, data, fn) {\n return ((((type == \"unload\")) ? this.one(type, data, fn) : this.each(function() {\n jQuery.JSBNG__event.add(this, type, ((fn || data)), ((fn && data)));\n })));\n },\n one: function(type, data, fn) {\n var one = jQuery.JSBNG__event.proxy(((fn || data)), function(JSBNG__event) {\n jQuery(this).unbind(JSBNG__event, one);\n return ((fn || data)).apply(this, arguments);\n });\n return this.each(function() {\n jQuery.JSBNG__event.add(this, type, one, ((fn && data)));\n });\n },\n unbind: function(type, fn) {\n return this.each(function() {\n jQuery.JSBNG__event.remove(this, type, fn);\n });\n },\n trigger: function(type, data, fn) {\n return this.each(function() {\n jQuery.JSBNG__event.trigger(type, data, this, true, fn);\n });\n },\n triggerHandler: function(type, data, fn) {\n return ((this[0] && jQuery.JSBNG__event.trigger(type, data, this[0], false, fn)));\n },\n toggle: function(fn) {\n var args = arguments, i = 1;\n while (((i < args.length))) {\n jQuery.JSBNG__event.proxy(fn, args[i++]);\n };\n ;\n return this.click(jQuery.JSBNG__event.proxy(fn, function(JSBNG__event) {\n this.lastToggle = ((((this.lastToggle || 0)) % i));\n JSBNG__event.preventDefault();\n return ((args[this.lastToggle++].apply(this, arguments) || false));\n }));\n },\n hover: function(fnOver, fnOut) {\n return this.bind(\"mouseenter\", fnOver).bind(\"mouseleave\", fnOut);\n },\n ready: function(fn) {\n bindReady();\n if (jQuery.isReady) {\n fn.call(JSBNG__document, jQuery);\n }\n else {\n jQuery.readyList.push(function() {\n return fn.call(this, jQuery);\n });\n }\n ;\n ;\n return this;\n }\n });\n jQuery.extend({\n isReady: false,\n readyList: [],\n ready: function() {\n if (!jQuery.isReady) {\n jQuery.isReady = true;\n if (jQuery.readyList) {\n jQuery.each(jQuery.readyList, function() {\n this.call(JSBNG__document);\n });\n jQuery.readyList = null;\n }\n ;\n ;\n jQuery(JSBNG__document).triggerHandler(\"ready\");\n }\n ;\n ;\n }\n });\n var readyBound = false;\n function bindReady() {\n if (readyBound) {\n return;\n }\n ;\n ;\n readyBound = true;\n if (((JSBNG__document.JSBNG__addEventListener && !jQuery.browser.JSBNG__opera))) {\n JSBNG__document.JSBNG__addEventListener(\"DOMContentLoaded\", jQuery.ready, false);\n }\n ;\n ;\n if (((jQuery.browser.msie && ((window == JSBNG__top))))) {\n (function() {\n if (jQuery.isReady) {\n return;\n }\n ;\n ;\n try {\n JSBNG__document.documentElement.doScroll(\"left\");\n } catch (error) {\n JSBNG__setTimeout(arguments.callee, jQuery126PatchDelay);\n return;\n };\n ;\n jQuery.ready();\n })();\n }\n ;\n ;\n if (jQuery.browser.JSBNG__opera) {\n JSBNG__document.JSBNG__addEventListener(\"DOMContentLoaded\", function() {\n if (jQuery.isReady) {\n return;\n }\n ;\n ;\n for (var i = 0; ((i < JSBNG__document.styleSheets.length)); i++) {\n if (JSBNG__document.styleSheets[i].disabled) {\n JSBNG__setTimeout(arguments.callee, jQuery126PatchDelay);\n return;\n }\n ;\n ;\n };\n ;\n jQuery.ready();\n }, false);\n }\n ;\n ;\n if (jQuery.browser.safari) {\n var numStyles;\n (function() {\n if (jQuery.isReady) {\n return;\n }\n ;\n ;\n if (((((JSBNG__document.readyState != \"loaded\")) && ((JSBNG__document.readyState != \"complete\"))))) {\n JSBNG__setTimeout(arguments.callee, jQuery126PatchDelay);\n return;\n }\n ;\n ;\n if (((numStyles === undefined))) {\n numStyles = jQuery(\"style, link[rel=stylesheet]\").length;\n }\n ;\n ;\n if (((JSBNG__document.styleSheets.length != numStyles))) {\n JSBNG__setTimeout(arguments.callee, jQuery126PatchDelay);\n return;\n }\n ;\n ;\n jQuery.ready();\n })();\n }\n ;\n ;\n jQuery.JSBNG__event.add(window, \"load\", jQuery.ready);\n };\n ;\n jQuery.each(((((\"blur,focus,load,resize,scroll,unload,click,dblclick,\" + \"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,\")) + \"submit,keydown,keypress,keyup,error\")).split(\",\"), function(i, JSBNG__name) {\n jQuery.fn[JSBNG__name] = function(fn) {\n return ((fn ? this.bind(JSBNG__name, fn) : this.trigger(JSBNG__name)));\n };\n });\n var withinElement = function(JSBNG__event, elem) {\n var parent = JSBNG__event.relatedTarget;\n while (((parent && ((parent != elem))))) {\n try {\n parent = parent.parentNode;\n } catch (error) {\n parent = elem;\n };\n ;\n };\n ;\n return ((parent == elem));\n };\n jQuery(window).bind(\"unload\", function() {\n jQuery(\"*\").add(JSBNG__document).unbind();\n });\n jQuery.fn.extend({\n _load: jQuery.fn.load,\n load: function(url, params, callback) {\n if (((typeof url != \"string\"))) {\n return this._load(url);\n }\n ;\n ;\n var off = url.indexOf(\" \");\n if (((off >= 0))) {\n var selector = url.slice(off, url.length);\n url = url.slice(0, off);\n }\n ;\n ;\n callback = ((callback || function() {\n \n }));\n var type = \"GET\";\n if (params) {\n if (jQuery.isFunction(params)) {\n callback = params;\n params = null;\n }\n else {\n params = jQuery.param(params);\n type = \"POST\";\n }\n ;\n ;\n }\n ;\n ;\n var JSBNG__self = this;\n jQuery.ajax({\n url: url,\n type: type,\n dataType: \"html\",\n data: params,\n complete: function(res, JSBNG__status) {\n if (((((JSBNG__status == \"success\")) || ((JSBNG__status == \"notmodified\"))))) {\n JSBNG__self.html(((selector ? jQuery(\"\\u003Cdiv/\\u003E\").append(res.responseText.replace(/