(function ()
{
	var d = true,
		f = null,
		g = false,
		h = window,
		aa = Object,
		ba = undefined,
		ca = parseInt,
		i = document;

	function j(a, b)
		{
			return a.getName = b
		}
	var l = "error",
		n = "push",
		da = "getElementById",
		p = "indexOf",
		q = "write",
		s = "getName",
		t = "find",
		u = "toString",
		w = "length",
		fa = "propertyIsEnumerable",
		y = "prototype",
		ga = "document",
		A = "call",
		B = "GPT_jstiming",
		C = "info",
		E = "join",
		F;

	function ha(a)
		{
			this.t =
			{
			};
			this.tick = function (b, c, e)
			{
				this.t[b] = [e ? e : (new Date).getTime(), c]
			};
			this.tick("start", f, a)
		}
	var ia = new ha;
	h.GPT_jstiming =
		{
			Timer: ha,
			load: ia
		};
	try
		{
			var G = f;
			if (h.chrome && h.chrome.csi) G = Math.floor(h.chrome.csi().pageT);
			if (G == f) if (h.gtbExternal) G = h.gtbExternal.pageT();
			if (G == f) if (h.external) G = h.external.pageT;
			if (G) h[B].pt = G
		}
	catch (ja)
		{
		};
	if (h[B])
		{
			h[B].fa =
			{
			};
			h[B].Za = 1;
			var ka = function (a, b, c)
			{
				var e = a.t[b],
					k = a.t.start;
				if (e && (k || c))
					{
						e = a.t[b][0];
						k = c != ba ? c : k[0];
						return e - k
					}
			};
			h[B].report = function (a, b, c)
			{
				var e = "";
				if (h[B].pt)
				{
					e += "&srt=" + h[B].pt;
					delete h[B].pt
				}
				try
				{
					if (h.external && h.external.tran) e += "&tran=" + h.external.tran;
					else if (h.gtbExternal && h.gtbExternal.tran) e += "&tran=" + h.gtbExternal.tran();
					else if (h.chrome && h.chrome.csi) e += "&tran=" + h.chrome.csi().tran
				}
				catch (k)
				{
				}
				if (a.Da) e += "&" + a.Da;
				var o = a.t,
					r = o.start,
					z = [],
					D = [];
				for (var v in o) if (v != "start") if (v[p]("_") != 0)
					{
						var m = o[v][1];
						if (m) o[m] && D[n](v + "." + ka(a, v, o[m][0]));
						else r && z[n](v + "." + ka(a, v))
					}
				delete o.start;
				if (b) for (var I in b) e += "&" + I + "=" + b[I];
				a = [c ? c : "http://csi.gstatic.com/csi", "?v=3", "&s=" + (h[B].sn || "gpt") + "&action=", a.name, D[w] ? "&it=" + D[E](",") : "", "", e, "&rt=", z[E](",")][E]("");
				b = new Image;
				var ea = h[B].Za++;
				h[B].fa[ea] = b;
				b.onload = b.onerror = function ()
					{
						delete h[B].fa[ea]
					};
				b.src = a;
				b = f;
				return a
			}
		};
	var H = this,
		la = function (a)
		{
			var b = typeof a;
			if (b == "object") if (a)
			{
				if (a instanceof Array || !(a instanceof aa) && aa[y][u][A](a) == "[object Array]" || typeof a[w] == "number" && typeof a.splice != "undefined" && typeof a[fa] != "undefined" && !a[fa]("splice")) return "array";
				if (!(a instanceof aa) && (aa[y][u][A](a) == "[object Function]" || typeof a[A] != "undefined" && typeof a[fa] != "undefined" && !a[fa]("call"))) return "function"
			}
			else return "null";
			else if (b == "function" && typeof a[A] == "undefined") return "object";
			return b
		},
		J = function (a)
		{
			return la(a) == "array"
		},
		K = function (a)
		{
			return typeof a == "string"
		},
		ma = function (a)
		{
			return typeof a == "number"
		};
	Math.floor(Math.random() * 2147483648)[u](36);
	var na = function (a, b)
		{
			var c = b || H;
			if (arguments[w] > 2)
			{
				var e = Array[y].slice[A](arguments, 2);
				return function ()
				{
					var k = Array[y].slice[A](arguments);
					Array[y].unshift.apply(k, e);
					return a.apply(c, k)
				}
			}
			else return function ()
			{
				return a.apply(c, arguments)
			}
		},
		oa = function (a, b)
		{
			function c()
			{
			}
			c.prototype = b[y];
			a.ib = b[y];
			a.prototype = new c
		};
	var L = function (a, b, c, e, k)
		{
			this.ca = new Date;
			this.db = e || f;
			this.$a = c || f;
			this.qa = a;
			this.ra = b;
			this.W = k || f
		};
	F = L[y];
	F.la = function ()
		{
			return this.db
		};
	F.ka = function ()
		{
			return this.$a
		};
	F.ja = function ()
		{
			return this.qa
		};
	F.ma = function ()
		{
			return this.ca
		};
	F.Pa = function ()
		{
			return this.ra
		};
	F.Qa = function ()
		{
			return this.W
		};
	var pa = ["Debug", "Info", "Warning", "Error", "Fatal"];
	L[y].toString = function ()
		{
			var a = [];
			a[n](this.ca.toTimeString());
			a[n](": ");
			a[n](pa[this.qa]);
			a[n](": ");
			a[n](this.ra);
			if (this.W)
			{
				a[n](" Duration: ");
				a[n](this.ca.getTime() - this.W.ma().getTime());
				a[n]("ms.")
			}
			return a[E]("")
		};
	L[y].getTimestamp = L[y].ma;
	L[y].getService = L[y].ka;
	L[y].getSlot = L[y].la;
	L[y].getLevel = L[y].ja;
	L[y].getMessage = L[y].Pa;
	L[y].getReference = L[y].Qa;
	var M = function ()
		{
			return H.googletag || (H.googletag =
			{
			})
		},
		N = function (a, b, c)
		{
			var e = M();
			if (!(a in e) || c) e[a] = b;
			return e[a]
		},
		qa = function (a, b)
		{
			if (a.attachEvent)
			{
				a.attachEvent("onload", b);
				return d
			}
			if (a.addEventListener)
			{
				a.addEventListener("load", b, g);
				return d
			}
			return g
		};
	var O = function ()
		{
			this.F = []
		};
	O[y].Ja = function ()
		{
			return this.F
		};
	O[y].Na = function (a)
		{
			return ra(this, function (b)
			{
				return b.ka() === a
			})
		};
	O[y].Oa = function (a)
		{
			return ra(this, function (b)
			{
				return b.la() === a
			})
		};
	O[y].Ma = function (a)
		{
			return ra(this, function (b)
			{
				return b.ja() >= a
			})
		};
	var ra = function (a, b)
		{
			for (var c = [], e = 0; e < a.F[w]; ++e) b(a.F[e]) && c[n](a.F[e]);
			return c
		};
	O[y].log = function (a, b, c, e, k)
		{
			a = new L(a, b, c, e, k);
			this.F[n](a);
			return a
		};
	O[y].info = function (a, b, c, e)
		{
			return this.log(1, a, b, c, e)
		};
	var P = function (a, b, c, e, k)
		{
			return a.log(2, b, c, e, k)
		};
	O[y].error = function (a, b, c, e)
		{
			return this.log(3, a, b, c, e)
		};
	var Q = function ()
		{
			var a = M();
			return a.debug_log || (a.debug_log = new O)
		};
	N("getEventLog", Q);
	O[y].getAllEvents = O[y].Ja;
	O[y].getEventsByService = O[y].Na;
	O[y].getEventsBySlot = O[y].Oa;
	O[y].getEventsByLevel = O[y].Ma;
	var sa, ta, ua, va, wa = function ()
		{
			return H.navigator ? H.navigator.userAgent : f
		};
	va = ua = ta = sa = g;
	var xa;
	if (xa = wa())
		{
			var ya = H.navigator;
			sa = xa[p]("Opera") == 0;
			ta = !sa && xa[p]("MSIE") != -1;
			ua = !sa && xa[p]("WebKit") != -1;
			va = !sa && !ua && ya.product == "Gecko"
		}
	var za = ta,
		Aa = va,
		Ba = ua,
		Ca = "",
		Da;
	if (sa && H.opera)
		{
			var Ea = H.opera.version;
			Ca = typeof Ea == "function" ? Ea() : Ea
		}
	else
		{
			if (Aa) Da = /rv\:([^\);]+)(\)|;)/;
			else if (za) Da = /MSIE\s+([^\);]+)(\)|;)/;
			else if (Ba) Da = /WebKit\/(\S+)/;
			if (Da)
			{
				var Fa = Da.exec(wa());
				Ca = Fa ? Fa[1] : ""
			}
		};
	var R = function (a, b)
		{
			this.fb = a;
			this.Ta = b
		};
	R[y].p = function ()
		{
			return this.fb
		};
	R[y].o = function ()
		{
			return this.Ta
		};
	var Ga = function (a)
		{
			var b = [];
			if (J(a)) if (a[w] > 1 && ma(a[0]) && ma(a[1])) b[n](new R(a[0], a[1]));
			else for (var c = 0; c < a[w]; ++c)
			{
				var e = a[c];
				J(e) && e[w] > 1 && ma(e[0]) && ma(e[1]) && b[n](new R(e[0], e[1]))
			}
			return b
		};
	R[y].getWidth = R[y].p;
	R[y].getHeight = R[y].o;
	var S = function (a, b, c)
		{
			this.u = a;
			this.na = ma(b) ? b : 0;
			this.d = this.u + "_" + this.na;
			this.Ea = c || "gpt_unit_" + this.d
		};
	F = S[y];
	F.r = function ()
		{
			return this.d
		};
	j(F, function ()
		{
			return this.u
		});
	F.T = function ()
		{
			return this.na
		};
	F.toString = S[y].r;
	F.q = function ()
		{
			return this.Ea
		};
	var Ha = function (a)
		{
			var b = N("google_slot_id_instance_map", {
			}, g);
			a in b || (b[a] = 0);
			var c = new S(a, b[a]);
			b[a] += 1;
			return c
		};
	S[y].getId = S[y].r;
	j(S[y], S[y][s]);
	S[y].getDomId = S[y].q;
	S[y].getInstance = S[y].T;
	var Ia = function (a, b, c)
		{
			c = c ? new S(a, c) : Ha(a);
			this.name = a;
			this.instance = c.T();
			this.domId = c.q();
			this.sizes = b
		},
		Ka = function (a)
		{
			var b = Ja();
			J(b) && b[n](a)
		};
	Ia[y].Y = function ()
		{
			if (this.name)
			{
				var a = Ga(this.sizes);
				La(this.domId, a[w] > 0 ? a[0] : f, H[ga]) && Ka(this)
			}
		};
	var Ja = function ()
		{
			var a = N("displayed_slot_queue", [], g);
			return J(a) ? a : []
		},
		La = function (a, b, c)
		{
			if (c[da](a)) return g;
			a = ['<div id="', a, '"'];
			b && a[n](' style="' + ("margin: 0px; width: " + (b.p() + "px") + "; height: " + (b.o() + "px")) + '"');
			a[n]("></div>");
			c[q](a[E](""));
			return d
		};
	var T = function (a, b, c, e)
		{
			this.u = a;
			this.cb = Ga(c);
			c = f;
			for (var k = Ja() || [], o = 0; o < k[w]; ++o)
			{
				var r = k[o];
				if (r.name === a && r.instance === b)
				{
					c = r.id;
					break
				}
			}
			this.d = c || new S(a, b, e);
			this.f = [];
			this.j =
			{
			};
			this.v = f;
			this.b = Q();
			this.b[C]("Created slot: " + this.d, f, this);
			this.Ya = this.N = this.Ha = this.S = f;
			this.ha = ""
		};
	F = T[y];
	F.Z = function (a, b)
		{
			var c = [" attribute ", a, " with value ", b, " for slot ", this[s]()][E]("");
			if (a && K(a) && b)
			{
				this.j[a] = b;
				this.S || this.N ? P(this.b, "Setting" + c + " after its contents have been loaded", f, this) : this.b[C]("Setting" + c, f, this)
			}
			else P(this.b, "Unable to set" + c, f, this);
			return this
		};
	F.l = function (a)
		{
			if (a in this.j) return this.j[a];
			return f
		};
	F.G = function ()
		{
			var a = [];
			for (var b in this.j) la(this.j[b]) == "function" || a[n](b);
			return a
		};
	F.ea = function (a)
		{
			for (var b = 0; b < this.f[w]; ++b) if (a == this.f[b])
			{
				P(this.b, "Service " + a[s]() + " is already associated with slot " + this.d, a, this);
				return this
			}
			this.f[n](a);
			a.M[n](this);
			a.log[C]("Associated " + a[s]() + " service with slot " + this[s](), a, this);
			a.m && this.s() && a.C(this);
			return this
		};
	j(F, function ()
		{
			return this.u
		});
	F.i = function ()
		{
			return this.d
		};
	F.Ra = function ()
		{
			return this.f
		};
	F.U = function ()
		{
			return this.cb
		};
	F.s = function ()
		{
			return !!i[da](this.d.q())
		};
	F.H = function (a)
		{
			this.v = a
		};
	var Ma = function (a)
		{
			if (!a.s())
			{
				a.b[l]("Unable to write to slot " + a.d + ". It has not yet been rendered.", f, a);
				return g
			}
			var b = H[ga],
				c = a.d.q();
			b = b && b[da](c);
			if (!b)
				{
					a.b[l]("Unable to find the div container with id " + c + " for slot " + a.d, f, a);
					return g
				}
			c = a.v;
			if (K(c) && c[w] > 0)
				{
					a.va();
					b.innerHTML = c;
					a.ua();
					return d
				}
			return g
		},
		Na = function (a, b)
		{
			if (!b || b == 1) return Ma(a);
			a.b[l]("Unknown render type for slot " + a.d, f, a);
			return g
		};
	F = T[y];
	F.Y = function (a)
		{
			if (this.s()) P(this.b, "Slot " + this.d + " has already been rendered.", f, this);
			else
			{
				a = Ga(a || []);
				a = a[w] > 0 ? a[0] : f;
				La(this.d.q(), a, H[ga]);
				for (a = 0; a < this.f[w]; ++a) this.f[a].m && this.f[a].C(this)
			}
		};
	F.Ia = function (a)
		{
			this.S = this.b[C]("Fetching ad for slot " + this[s](), f, this);
			this.ha = a
		};
	F.Ka = function ()
		{
			return this.ha
		};
	F.Ga = function ()
		{
			this.Ha = this.b[C]("Receiving ad for slot " + this[s](), f, this, this.S)
		};
	F.va = function ()
		{
			this.N = this.b[C]("Rendering ad for slot " + this[s](), f, this)
		};
	F.ua = function ()
		{
			this.Ya = this.b[C]("Completed rendering ad for slot " + this[s](), f, this, this.N)
		};
	T[y].set = T[y].Z;
	T[y].get = T[y].l;
	j(T[y], T[y][s]);
	T[y].getSlotId = T[y].i;
	T[y].getSizes = T[y].U;
	T[y].addService = T[y].ea;
	T[y].getServices = T[y].Ra;
	T[y].getAttributeKeys = T[y].G;
	T[y].fetchStarted = T[y].Ia;
	T[y].fetchEnded = T[y].Ga;
	T[y].renderStarted = T[y].va;
	T[y].renderEnded = T[y].ua;
	T[y].hasWrapperDiv = T[y].s;
	T[y].getContentUrl = T[y].Ka;
	var Oa = function ()
		{
			this.J =
			{
			};
			this.ia =
			{
			};
			this.b = Q()
		};
	Oa[y].add = function (a, b, c)
		{
			if (!K(a) || a[w] <= 0 || !b) return f;
			a in this.J || (this.J[a] = []);
			b = new T(a, this.J[a][w], b, c);
			c = b.i().q();
			if (this.ia[c])
			{
				this.b[l]("Div element " + c + " is already associated with another slot");
				return f
			}
			this.J[a][n](b);
			return this.ia[b.i().q()] = b
		};
	Oa[y].find = function (a, b)
		{
			b = b || 0;
			a = K(a) && this.J[a] || [];
			if (b >= 0 && b < a[w])
			{
				a = a[b];
				if (a.i().T() == b) return a
			}
			return f
		};
	var Pa = function ()
		{
			var a = M();
			return a.slot_manager_instance || (a.slot_manager_instance = new Oa)
		},
		Qa = function (a, b, c)
		{
			var e = Pa();
			return e && e.add(a, b, c)
		};
	N("defineSlot", Qa);
	N("defineUnit", Qa);
	Oa[y].find = Oa[y][t];
	Oa.getInstance = Pa;
	var Ra = function (a, b)
		{
			var c = Q();
			if (!K(a) || b != f && !J(b)) c[l]("Illegal slot name or size in display(). Name: " + a[u]() + "; size: " + b[u]());
			else
			{
				for (var e = Pa(), k = f, o = 0; k = e[t](a, o); ++o) if (!k.s())
				{
					k.Y(b);
					return
				}
				c[C]("Displaying undeclared instance " + (o + 1) + " of slot " + a);
				(new Ia(a, b, o)).Y()
			}
		};
	N("display", Ra, d);
	var Sa = function (a, b)
		{
			this.u = a;
			this.ba = b ? b : new H[B].Timer;
			this.ba.name = a;
			this.R = []
		};
	F = Sa[y];
	j(F, function ()
		{
			return this.u
		});
	F.tick = function (a, b)
		{
			this.ba.tick(a, b)
		};
	F.da = function (a)
		{
			a && this.R[n](a)
		};
	F.report = function ()
		{
			var a =
			{
			};
			if (this.R[w]) a.e = this.R[E]();
			return H[B].report(this.ba, a)
		};
	F.X = function (a)
		{
			qa(h, a)
		};
	var Ta = function (a)
		{
			this.u = a
		};
	oa(Ta, Sa);
	Ta[y].tick = function ()
		{
		};
	Ta[y].da = function ()
		{
		};
	Ta[y].report = function ()
		{
			return f
		};
	Ta[y].X = function ()
		{
		};
	var Ua = function (a, b, c, e)
		{
			b = b;
			if (b == ba) b = 1;
			b = H[B] && H[B].load && H.location.protocol == "http:" && Math.random() < b ? d : g;
			a = b ? new Sa(a, e) : new Ta(a, e);
			c && a.X(na(Sa[y].report, a));
			return a
		};
		(function ()
		{
			if (!M()._gpt_timer_ && H[B])
			{
				var a = Ua("global", 1, g, H[B].load);
				a.X(function ()
				{
					a.tick("load");
					a.report()
				});
				N("_gpt_timer_", a)
			}
			return M()._gpt_timer_
		})();
	var U = function (a, b)
		{
			this.M = [];
			this.m = g;
			this.j =
			{
			};
			this.Ca = Ua(this[s](), a, b);
			this.log = Q();
			this.log[C]("Created service: " + this[s](), this)
		};
	F = U[y];
	j(F, function ()
		{
			return "unknown"
		});
	F.La = function ()
		{
			return this.Ca
		};
	F.Z = function (a, b)
		{
			var c = ["attribute ", a, " with value ", b, " for service ", this[s]()][E]("");
			if (K(a) && a[w] > 0)
			{
				this.j[a] = b;
				this.log[C]("Setting " + c, this, f)
			}
			else P(this.log, "Unable to set " + c, this, f);
			return this
		};
	F.l = function (a)
		{
			return this.j[a]
		};
	F.G = function ()
		{
			var a = [];
			for (var b in this.j) typeof this.j[b] != "function" && a[n](b);
			return a
		};
	F.V = function ()
		{
			return this.M
		};
	F.Sa = function ()
		{
			for (var a =
			{
			}, b = 0; b < this.M[w]; ++b)
			{
				var c = this.M[b];
				a[c.i().r()] = c
			}
			return a
		};
	F.Q = function ()
		{
			if (this.m) this.log[C]("Service is already enabled.", this);
			else
			{
				this.m = d;
				try
				{
					this.L()
				}
				catch (a)
				{
					this.log[l]("Failed to enable service: " + a, this)
				}
			}
		};
	F.display = function (a, b)
		{
			this.Q();
			Qa(a, b).ea(this);
			Ra(a, b)
		};
	var Va = function (a, b, c)
		{
			a = g;
			try
			{
				a = b.top[ga].URL === c.URL
			}
			catch (e)
			{
			}
			return a ? c.URL : c.referrer
		};
	U[y].getSlots = U[y].V;
	U[y].getSlotIdMap = U[y].Sa;
	U[y].enable = U[y].Q;
	U[y].set = U[y].Z;
	U[y].get = U[y].l;
	U[y].getAttributeKeys = U[y].G;
	U[y].getCsiTimer = U[y].La;
	U[y].display = U[y].display;
	var V = function ()
		{
			this.f =
			{
			};
			this.sa = g;
			this.b = Q();
			this.eb = this.b[C]("Google service JS loaded");
			this.xa = d;
			qa(h, na(V[y].Xa, this));
			qa(h, na(V[y].Ua, this))
		};
	V[y].Ua = function ()
		{
			if (this.xa)
			{
				var a = i,
					b = a.createElement("script");
				b.type = "text/javascript";
				b.async = d;
				b.src = "http://www.googletagservices.com/tag/static/console_loader.js";
					(a = a.getElementsByTagName("head")[0] || a.getElementsByTagName("body")[0]) && a.appendChild(b)
			}
		};
	V[y].add = function (a)
		{
			this.f[a[s]()] = a
		};
	V[y].find = function (a)
		{
			var b = f;
			if (a in this.f) b = this.f[a];
			return b
		};
	var Wa = function (a)
		{
			return a.sa
		};
	V[y].Xa = function ()
		{
			this.sa = d;
			this.b[C]("Page load complete", f, f, this.eb)
		};
	var W = function ()
		{
			var a = M();
			return a.service_manager_instance || (a.service_manager_instance = new V)
		};
	N("disableConsole", function ()
		{
			var a = W();
			a.b[C]("Publisher Console disabled");
			a.xa = g
		});
	N("enableServices", function ()
		{
			var a = W();
			for (var b in a.f)
			{
				var c = a.f[b];
				if (la(c) != "function")
				{
					c.Q();
					c = b;
					var e = M()._gpt_timer_;
					e && e.da(c)
				}
			}
		});
	var Xa = function ()
		{
			U[A](this);
			this.oa = g;
			this.P =
			{
			}
		};
	oa(Xa, U);
	F = Xa[y];
	F.L = function ()
		{
			if (!this.oa)
			{
				H[ga][q]('<script type="text/javascript" src="' + this.K() + '"><\/script>');
				this.oa = d
			}
		};
	j(F, function ()
		{
			return "companion_ads"
		});
	F.K = function ()
		{
			return "http://pagead2.googlesyndication.com/pagead/show_companion_ad.js"
		};
	F.A = function (a)
		{
			var b = a && a.i().r();
			if (b && b in this.P && a.s() && this.m)
			{
				a.H(this.P[b]);
				return Na(a)
			}
			return g
		};
	F.C = function (a)
		{
			this.A(a)
		};
	F.fillSlot = function (a, b)
		{
			if (a && K(b) && b[w] > 0)
			{
				this.P[a.i()[u]()] = b;
				return this.A(a)
			}
			return g
		};
	N("companionAds", function ()
		{
			var a = W(),
				b = a[t]("companion_ads");
			if (!b)
				{
					b = new Xa;
					a.add(b)
				}
			return b
		});
	Xa[y].fillSlot = Xa[y].fillSlot;
	var Ya = function ()
		{
			U[A](this);
			this.v =
			{
			}
		};
	oa(Ya, U);
	F = Ya[y];
	j(F, function ()
		{
			return "content"
		});
	F.A = function (a)
		{
			var b = a && a.i().r();
			if (b in this.v && this.m && a.s() && !a.N)
			{
				a.H(this.v[b]);
				return Na(a)
			}
			return g
		};
	F.L = function ()
		{
			for (var a = this.V(), b = 0; b < a[w]; ++b) this.A(a[b])
		};
	F.C = function (a)
		{
			this.A(a)
		};
	F.H = function (a, b)
		{
			if (a && K(b) && b[w] > 0)
			{
				this.v[a.i().r()] = b;
				this.A(a)
			}
		};
	N("content", function ()
		{
			var a = W(),
				b = a[t]("content");
			if (!b)
				{
					b = new Ya;
					a.add(b)
				}
			return b
		});
	Ya[y].setContent = Ya[y].H;
	var X = function ()
		{
			U[A](this);
			this.ga = g;
			this.za = 1;
			this.$ =
			{
			};
			this.D = this.O = 0;
			this.ya =
			{
			};
			this.Ba = Math.random() * 1E16
		};
	oa(X, U);
	j(X[y], function ()
		{
			return "network_ads"
		});
	var Za = function (a)
		{
			a = a.l("network_config_path");
			if (!a) return "";
			return a.replace(/^\/+|\/+$/g, "")
		};
	X[y].L = function ()
		{
			var a = Za(this);
			if (K(a) && a[w] > 0)
			{
				if (!(this.ga || Wa(W())))
				{
					a = $a(this, "network_debug_src_url", "http://s0.2mdn.net/dnb") + "/config/" + a + "/gut_config.js";
					Y(this, "Configuration file location", a);
					i[q](ab(this, a, g));
					this.ga = d
				}
			}
			else throw "Configuration key not set before NetworkAdsService.enable() called. Please properly set the configuration key with NetworkAdsService.set('network_config_path', site tag name')";
		};
	X[y].C = function (a)
		{
			var b = a.i().r(),
				c;
			a: {
					var e = a[s]();
					c = a.U();
					this.hb = this.gb = 0;
					for (var k = e.split(/\//g), o = [], r = 0; r < k[w]; ++r) k[r][w] > 0 && o[n](k[r]);
					var z = o[w];
					Y(this, "Total IU count", "" + z);
					k =
					{
					};
					r = "[" + o[o[w] - 1] + "]";
					for (var D = z - 1; D > 0; D--)
					{
						var v = o.slice(0, D)[E]("/");
						Y(this, "Attempt to match marker key", v);
						if (k = this.ya[v])
						{
							Y(this, "Marker key match!", v);
							z = k.a;
							for (var m in z)
							{
								Y(this, "Match ad unit " + r + " to ", m);
								if (m && m[p](r) >= 0)
								{
									Y(this, "Ad Unit match!", m);
									Y(this, "Config file entry used identified by key", v);
									D = k;
									r = z[m].ab;
									m = [];
									k = o = e = "";
									if (r)
									{
										e = bb(this, r["2"], "2");
										o = bb(this, r["0"], "0");
										k = bb(this, r["1"], "1")
									}
									r = e[w] > 0;
									v = cb(this, D.asbu, "http://ad.doubleclick.net");
									var I = D.z;
									if (!I || I[w] == 0) I = "_default";
									z = [];
									var ea = "adj";
									if (r) ea = "adi";
									z[n](v + "/" + ea + "/" + Za(this) + "/" + $a(this, "network_zone", I));
									z[n]("ord=" + this.Ba);
									z[n]("tile=" + this.za);
									++this.za;
									v = [];
									for (I = 0; I < c[w]; ++I) v[n](c[I].p() + "x" + c[I].o());
									z[n]("sz=" + v[E](","));
									if (D = D.k)
									{
										v = [];
										for (var x in D) v[n](x + "=" + D[x]);
										z[n](v[E](";"))
									}
									x = $a(this, "network_key_values", "");
									x[w] > 0 && z[n](x);
									x = [];
									Y(this, "Ad tag Url", z[E](";"));
									if (r)
									{
										Y(this, "Third party targeting", "enabled");
										x[n](db(this, z[E](";"), eb(this, c)))
									}
									else x[n](ab(this, z[E](";"), d));
									c = x[E]("");
									e[w] > 0 && m[n](e);
									o[w] > 0 && m[n](o);
									c[w] > 0 && m[n](c);
									k[w] > 0 && m[n](k);
									c = m[E]("");
									break a
								}
							}
							Y(this, "No supported ad unit found.", r)
						}
					}
					Y(this, "No configuration file entry found", e);
					c = ""
				}
			if (!Wa(W()))
				{
					x = i;
					m = [];
					m[n]('<script type="text/javascript">');
					m[n]("  function " + b.replace(/\W/g, "") + "() {");
					m[n]("    return ['<!DOCTYPE html><html><body>',");
					m[n]("          '" + c + "',");
					m[n]("           '</body></html>'].join('\\n');");
					m[n]("  }");
					m[n]("<\/script>");
					x[q](m[E]("\n"))
				}
			c = i[da](a.i().q());
			m = eb(this, a.U());
			x = m.p();
			m = m.o();
			if (x < this.D) x = this.D;
			m += this.O;
			x = new R(x, m);
			if (c)
				{
					c.style.height = x.o();
					c.style.width = x.p()
				}
			a.H("<iframe width='" + x.p() + "' height='" + x.o() + "' scrolling='no' frameborder ='0' src=\"javascript:parent." + b.replace(/\W/g, "") + '()"></iframe>');
			Na(a);
			this.D = this.O = 0
		};
	var eb = function (a, b)
		{
			for (var c = a = 0, e = 0; e < b[w]; ++e)
			{
				if (b[e].p() > a) a = b[e].p();
				if (b[e].o() > c) c = b[e].o()
			}
			return new R(a, c)
		},
		db = function (a, b, c)
		{
			a = [];
			a[n]('<script type="text/javascript">');
			a[n]("  var url=\\'" + b + "\\';");
			a[n]("  if (key_values) {");
			a[n]("    url += \\';\\' + key_values;");
			a[n]("  }");
			a[n]("  document.write(\\'<iframe width=\"" + c.p() + '" height="' + c.o() + '" frameborder = "0" src="\\\' + encodeURI(url) + \\\'"/>\\\');');
			a[n]("<\\/script>");
			return a[E]("")
		},
		bb = function (a, b, c)
		{
			if (!b) return "";
			var e = cb(a, b.bu, "http://s0.2mdn.net/dnb") + "/" + b.n + ".js";
			if (c == "2") if (a.$[e])
			{
				Y(a, "Targeting cache used", a.$[e]);
				return ""
			}
			else a.$[e] = 1;
			if (b.h) a.O += ca(b.h, 10);
			if ((b = b.w) && ca(b, 10) > a.D) a.D = ca(b, 10);
			Y(a, "Block type [" + c + "]", e);
			return ab(a, e, d)
		},
		$a = function (a, b, c)
		{
			var e = "";
			e = a.l(b);
			if (K(e) && e[w] > 0)
			{
				Y(a, "Page level override " + b, e);
				return e
			}
			return c
		},
		cb = function (a, b, c)
		{
			if (K(b) && b[w] > 0)
			{
				if (b.lastIndexOf("/") == b[w] - 1) b = b.substring(0, b[w] - 1);
				return b
			}
			return c
		};
	X[y].Aa = function (a)
		{
			this.ya = a
		};
	var ab = function (a, b, c)
		{
			a = [];
			a[n]("<");
			c ? a[n]("scr'+'ipt") : a[n]("script");
			a[n](' type="text/javascript" src="' + b + '">');
			c ? a[n]("<\\/") : a[n]("</");
			a[n]("script>");
			return a[E]("")
		},
		Y = function (a, b, c)
		{
			(a = a.l("network_debug")) && a == "true" && i[q]("<b>" + b + "</b>: " + c + "<br>")
		},
		fb = function ()
		{
			var a = W(),
				b = a[t]("network_ads");
			if (!b)
				{
					b = new X;
					a.add(b)
				}
			return b
		},
		gb = "Gut.networkAdsService".split("."),
		Z = H;
	!(gb[0] in Z) && Z.execScript && Z.execScript("var " + gb[0]);
	for (var hb; gb[w] && (hb = gb.shift());) if (!gb[w] && fb !== ba) Z[hb] = fb;
	else Z = Z[hb] ? Z[hb] : (Z[hb] =
		{
		});
	X[y].applyConfig = X[y].Aa;
	N("networkAds", fb);
	var $ = function ()
		{
			U[A](this);
			this.pa = g;
			this.c = f;
			this.aa =
			{
			};
			this.ta = g;
			this.wa = d;
			this.I = g;
			this.g = d;
			this.B = []
		};
	oa($, U);
	var ib =
		{
			adsense_channel_ids: "google_ad_channel",
			adsense_ad_types: "google_ad_type",
			adsense_ad_format: "google_ad_format",
			adsense_background_color: "google_color_bg",
			adsense_border_color: "google_color_border",
			adsense_link_color: "google_color_link",
			adsense_text_color: "google_text_color",
			adsense_url_color: "google_color_url",
			adsense_ui_features: "google_ui_features",
			adsense_keywords: "google_kw",
			adsense_keyword_type: "google_kw_type",
			page_url: "google_page_url"
		};
	F = $[y];
	F.L = function ()
		{
			if (!(this.pa || Wa(W())))
			{
				var a = i;
				a[q]('<script type="text/javascript" src="' + this.K(Va(this, h, a)) + '"><\/script>');
				this.pa = d
			}
		};
	j(F, function ()
		{
			return "publisher_ads"
		});
	F.K = function (a)
		{
			if (a[p]("&google_debug") > 0 || a[p]("?google_debug") > 0) return "http://partner.googleadservices.com/gampad/google_ads_gpt_dbg.js";
			return "http://partner.googleadservices.com/gampad/google_ads_gpt.js"
		};
	F.Wa = function ()
		{
			var a = M().impl;
			if (a && a.pubads)
			{
				this.c = a.pubads;
				this.log[C]("GDFP implementation fetched.", this);
				this.wa || this.c.disableFetch();
				if (this.I)
				{
					this.g ? this.c.enableAsyncSingleRequest() : this.c.enableSingleRequest();
					jb(this);
					a = this.V();
					for (var b = 0; b < a[w]; ++b) kb(this, a[b])
				}
				else this.g && this.c.enableAsyncRendering();
				if (this.g && this.B[w] > 0) for (b = 0; b < this.B[w]; ++b) this.C(this.B[b])
			}
			else this.log[l]("Unable to fetch pubads service implementation from " + this.K(Va(this, h, i)), this)
		};
	F.C = function (a)
		{
			if (Wa(W()) && !this.g) this.log[l]("Attempting to display ad in sync mode after page load is complete.", this);
			else if (this.c)
			{
				jb(this);
				if (this.I || kb(this, a)) this.c.fillSlot(a)
			}
			else if (this.g)
			{
				for (var b = g, c = 0; c < this.B[w]; ++c) if (a === this.B[c]) b = d;
				if (!b)
				{
					this.log[C]("Delaying rendering of ad slot " + a[s]() + " pending loading of the GDFP implementation", this, a);
					this.B[n](a)
				}
			}
			else this.log[l]("Skipping rendering of slot " + a[s]() + " due to missing GDFP implementaition", this, a)
		};
	var kb = function (a, b)
		{
			if (a.c && a.c.addSlot(b) == f)
			{
				a.log[l]("Unable to process name for slot " + b[s](), a, b);
				return g
			}
			for (var c = b.G(), e = 0; e < c[w]; ++e) c[e] in ib ? a.c.addAdSenseSlotAttribute(b, ib[c[e]], b.l(c[e])) : P(a.log, "Ignoring unknown pubads attribute " + c[e] + " with value " + b.l(c[e]) + " for slot " + b[s](), a, b);
			return d
		},
		jb = function (a)
		{
			if (!a.ta)
			{
				a.ta = d;
				for (var b = a.G(), c = 0; c < b[w]; ++c) b[c] in ib ? a.c.addAdSensePageAttribute(ib[b[c]], a.l(b[c])) : P(a.log, "Ignoring unknown pubads attribute " + b[c] + " with value " + a.l(b[c]), a);
				a.c.addAdSensePageAttribute("google_tag_info", "v2");
				for (var e in a.aa)
				{
					b = a.aa[e];
					if (J(b)) for (c = 0; c < b[w]; ++c) a.c.addAttribute(e, b[c])
				}
			}
		};
	F = $[y];
	F.bb = function (a, b)
		{
			var c = [];
			if (K(b)) c[n](b);
			else c = b;
			b = [" targeting attribute ", a, " with value ", c[E](), " for service ", this[s]()][E]("");
			if (a && K(a))
			{
				this.aa[a] = c;
				this.log[C]("Setting" + b, this)
			}
			else P(this.log, "Unable to set" + b, this)
		};
	F.Va = function ()
		{
			if (this.c) P(this.log, "Ignoring noFetch since the pubads service is already enabled", this);
			else this.wa = g
		};
	F.enableSingleRequest = function ()
		{
			if (this.m && !this.I) P(this.log, "Ignoring change to single request mode since the service is already enabled", this);
			else
			{
				this.log[C]("Using single request mode to fetch ads", this);
				this.I = d
			}
			return this.I
		};
	F.enableAsyncRendering = function ()
		{
			if (this.m && !this.g) P(this.log, "Ignoring change to async-rendering mode since the service is already enabled", this);
			else
			{
				this.log[C]("Using async-rendering mode to fetch ads", this);
				this.g = d
			}
			return this.g
		};
	F.Fa = function ()
		{
			if (this.m && this.g) P(this.log, "Ignoring change to async-rendering mode since the service is already enabled", this);
			else
			{
				this.log[C]("Using sync-rendering mode to fetch ads", this);
				this.g = g
			}
			return !this.g
		};
	N("pubads", function ()
		{
			var a = W(),
				b = a[t]("publisher_ads");
			if (!b)
				{
					b = new $;
					a.add(b)
				}
			return b
		});
	$[y].enableSingleRequest = $[y].enableSingleRequest;
	$[y].enableAsyncRendering = $[y].enableAsyncRendering;
	$[y].enableSyncRendering = $[y].Fa;
	$[y].noFetch = $[y].Va;
	$[y].setTargeting = $[y].bb;
	$[y].onGoogleAdsJsLoad = $[y].Wa;
})()
