Guest User

2048.html

a guest
Aug 19th, 2019
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 180.43 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html class="gr__play2048_co" lang="en"><head>
  3. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  4. <meta charset="utf-8">
  5. <title>2048</title>
  6.  
  7. <script>
  8. (function(){var k=this||self,l=function(a,b){a=a.split(".");var c=k;a[0]in c||"undefined"==typeof c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c=c[d]&&c[d]!==Object.prototype[d]?c[d]:c[d]={}:c[d]=b};var n=function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])},p=function(a){for(var b in a)if(a.hasOwnProperty(b))return!0;return!1};var q=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;var r=window,u=document,v=function(a,b){u.addEventListener?u.addEventListener(a,b,!1):u.attachEvent&&u.attachEvent("on"+a,b)};var w={},x=function(){w.TAGGING=w.TAGGING||[];w.TAGGING[1]=!0};var y=/:[0-9]+$/,A=function(a,b){b&&(b=String(b).toLowerCase());if("protocol"===b||"port"===b)a.protocol=z(a.protocol)||z(r.location.protocol);"port"===b?a.port=String(Number(a.hostname?a.port:r.location.port)||("http"==a.protocol?80:"https"==a.protocol?443:"")):"host"===b&&(a.hostname=(a.hostname||r.location.hostname).replace(y,"").toLowerCase());var c=z(a.protocol);b&&(b=String(b).toLowerCase());switch(b){case "url_no_fragment":b="";a&&a.href&&(b=a.href.indexOf("#"),b=0>b?a.href:a.href.substr(0,
  9. b));a=b;break;case "protocol":a=c;break;case "host":a=a.hostname.replace(y,"").toLowerCase();break;case "port":a=String(Number(a.port)||("http"==c?80:"https"==c?443:""));break;case "path":a.pathname||a.hostname||x();a="/"==a.pathname.substr(0,1)?a.pathname:"/"+a.pathname;a=a.split("/");a:if(b=a[a.length-1],c=[],Array.prototype.indexOf)b=c.indexOf(b),b="number"==typeof b?b:-1;else{for(var d=0;d<c.length;d++)if(c[d]===b){b=d;break a}b=-1}0<=b&&(a[a.length-1]="");a=a.join("/");break;case "query":a=a.search.replace("?",
  10. "");break;case "extension":a=a.pathname.split(".");a=1<a.length?a[a.length-1]:"";a=a.split("/")[0];break;case "fragment":a=a.hash.replace("#","");break;default:a=a&&a.href}return a},z=function(a){return a?a.replace(":","").toLowerCase():""},B=function(a){var b=u.createElement("a");a&&(b.href=a);var c=b.pathname;"/"!==c[0]&&(a||x(),c="/"+c);a=b.hostname.replace(y,"");return{href:b.href,protocol:b.protocol,host:b.host,hostname:a,pathname:c,search:b.search,hash:b.hash,port:b.port}};function C(){for(var a=D,b={},c=0;c<a.length;++c)b[a[c]]=c;return b}function E(){var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ";a+=a.toLowerCase()+"0123456789-_";return a+"."}
  11. var D,F,G=function(a){D=D||E();F=F||C();for(var b=[],c=0;c<a.length;c+=3){var d=c+1<a.length,e=c+2<a.length,g=a.charCodeAt(c),f=d?a.charCodeAt(c+1):0,h=e?a.charCodeAt(c+2):0,m=g>>2;g=(g&3)<<4|f>>4;f=(f&15)<<2|h>>6;h&=63;e||(h=64,d||(f=64));b.push(D[m],D[g],D[f],D[h])}return b.join("")},H=function(a){function b(m){for(;d<a.length;){var t=a.charAt(d++),L=F[t];if(null!=L)return L;if(!/^[\s\xa0]*$/.test(t))throw Error("Unknown base64 encoding at char: "+t);}return m}D=D||E();F=F||C();for(var c="",d=0;;){var e=
  12. b(-1),g=b(0),f=b(64),h=b(64);if(64===h&&-1===e)return c;c+=String.fromCharCode(e<<2|g>>4);64!=f&&(c+=String.fromCharCode(g<<4&240|f>>2),64!=h&&(c+=String.fromCharCode(f<<6&192|h)))}};var I;function J(a,b){if(!a||b===u.location.hostname)return!1;for(var c=0;c<a.length;c++)if(a[c]instanceof RegExp){if(a[c].test(b))return!0}else if(0<=b.indexOf(a[c]))return!0;return!1}
  13. var O=function(){var a=K,b=M,c=N(),d=function(f){a(f.target||f.srcElement||{})},e=function(f){b(f.target||f.srcElement||{})};if(!c.init){v("mousedown",d);v("keyup",d);v("submit",e);var g=HTMLFormElement.prototype.submit;HTMLFormElement.prototype.submit=function(){b(this);g.call(this)};c.init=!0}},N=function(){var a={};var b=r.google_tag_data;r.google_tag_data=void 0===b?a:b;a=r.google_tag_data;b=a.gl;b&&b.decorators||(b={decorators:[]},a.gl=b);return b};var P=/(.*?)\*(.*?)\*(.*)/,Q=/([^?#]+)(\?[^#]*)?(#.*)?/,R=/(.*?)(^|&)_gl=([^&]*)&?(.*)/,T=function(a){var b=[],c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];void 0!==d&&d===d&&null!==d&&"[object Object]"!==d.toString()&&(b.push(c),b.push(G(String(d))))}a=b.join("*");return["1",S(a),a].join("*")},S=function(a,b){a=[window.navigator.userAgent,(new Date).getTimezoneOffset(),window.navigator.userLanguage||window.navigator.language,Math.floor((new Date).getTime()/60/1E3)-(void 0===b?0:b),a].join("*");
  14. if(!(b=I)){b=Array(256);for(var c=0;256>c;c++){for(var d=c,e=0;8>e;e++)d=d&1?d>>>1^3988292384:d>>>1;b[c]=d}}I=b;b=4294967295;for(c=0;c<a.length;c++)b=b>>>8^I[(b^a.charCodeAt(c))&255];return((b^-1)>>>0).toString(36)},ba=function(a){return function(b){var c=B(r.location.href),d=c.search.replace("?","");a:{var e=d.split("&");for(var g=0;g<e.length;g++){var f=e[g].split("=");if("_gl"===decodeURIComponent(f[0]).replace(/\+/g," ")){e=f.slice(1).join("=");break a}}e=void 0}b.query=U(e||"")||{};e=A(c,"fragment");
  15. g=e.match(R);b.fragment=U(g&&g[3]||"")||{};a&&aa(c,d,e)}};function V(a){var b=R.exec(a);if(b){var c=b[2],d=b[4];a=b[1];d&&(a=a+c+d)}return a}
  16. var aa=function(a,b,c){function d(e,g){e=V(e);e.length&&(e=g+e);return e}r.history&&r.history.replaceState&&(R.test(b)||R.test(c))&&(a=A(a,"path"),b=d(b,"?"),c=d(c,"#"),r.history.replaceState({},void 0,""+a+b+c))},U=function(a){var b=void 0===b?3:b;try{if(a){a:{for(var c=0;3>c;++c){var d=P.exec(a);if(d){var e=d;break a}a=decodeURIComponent(a)}e=void 0}if(e&&"1"===e[1]){var g=e[2],f=e[3];a:{for(e=0;e<b;++e)if(g===S(f,e)){var h=!0;break a}h=!1}if(h){b={};var m=f?f.split("*"):[];for(f=0;f<m.length;f+=
  17. 2)b[m[f]]=H(m[f+1]);return b}}}}catch(t){}};function W(a,b,c){function d(h){h=V(h);var m=h.charAt(h.length-1);h&&"&"!==m&&(h+="&");return h+f}c=void 0===c?!1:c;var e=Q.exec(b);if(!e)return"";b=e[1];var g=e[2]||"";e=e[3]||"";var f="_gl="+a;c?e="#"+d(e.substring(1)):g="?"+d(g.substring(1));return""+b+g+e}
  18. function X(a,b,c){for(var d={},e={},g=N().decorators,f=0;f<g.length;++f){var h=g[f];(!c||h.forms)&&J(h.domains,b)&&(h.fragment?n(e,h.callback()):n(d,h.callback()))}p(d)&&(b=T(d),c?Y(b,a):Z(b,a,!1));!c&&p(e)&&(c=T(e),Z(c,a,!0))}function Z(a,b,c){b.href&&(a=W(a,b.href,void 0===c?!1:c),q.test(a)&&(b.href=a))}
  19. function Y(a,b){if(b&&b.action){var c=(b.method||"").toLowerCase();if("get"===c){c=b.childNodes||[];for(var d=!1,e=0;e<c.length;e++){var g=c[e];if("_gl"===g.name){g.setAttribute("value",a);d=!0;break}}d||(c=u.createElement("input"),c.setAttribute("type","hidden"),c.setAttribute("name","_gl"),c.setAttribute("value",a),b.appendChild(c))}else"post"===c&&(a=W(a,b.action),q.test(a)&&(b.action=a))}}
  20. var K=function(a){try{a:{for(var b=100;a&&0<b;){if(a.href&&a.nodeName.match(/^a(?:rea)?$/i)){var c=a;break a}a=a.parentNode;b--}c=null}if(c){var d=c.protocol;"http:"!==d&&"https:"!==d||X(c,c.hostname,!1)}}catch(e){}},M=function(a){try{if(a.action){var b=A(B(a.action),"host");X(a,b,!0)}}catch(c){}};l("google_tag_data.glBridge.auto",function(a,b,c,d){O();a={callback:a,domains:b,fragment:"fragment"===c,forms:!!d};N().decorators.push(a)});l("google_tag_data.glBridge.decorate",function(a,b,c){c=!!c;a=T(a);if(b.tagName){if("a"==b.tagName.toLowerCase())return Z(a,b,c);if("form"==b.tagName.toLowerCase())return Y(a,b)}if("string"==typeof b)return W(a,b,c)});l("google_tag_data.glBridge.generate",T);
  21. l("google_tag_data.glBridge.get",function(a,b){var c=ba(!!b);b=N();b.data||(b.data={query:{},fragment:{}},c(b.data));c={};if(b=b.data)n(c,b.query),a&&n(c,b.fragment);return c});})(window);
  22. (function(){function La(a){var b=1,c;if(a)for(b=0,c=a.length-1;0<=c;c--){var d=a.charCodeAt(c);b=(b<<6&268435455)+d+(d<<14);d=b&266338304;b=0!=d?b^d>>21:b}return b};var $c=function(a){this.w=a||[]};$c.prototype.set=function(a){this.w[a]=!0};$c.prototype.encode=function(){for(var a=[],b=0;b<this.w.length;b++)this.w[b]&&(a[Math.floor(b/6)]^=1<<b%6);for(b=0;b<a.length;b++)a[b]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".charAt(a[b]||0);return a.join("")+"~"};var ha=window.GoogleAnalyticsObject,wa;if(wa=void 0!=ha)wa=-1<(ha.constructor+"").indexOf("String");var Za;if(Za=wa){var Qa=window.GoogleAnalyticsObject;Za=Qa?Qa.replace(/^[\s\xa0]+|[\s\xa0]+$/g,""):""}var gb=Za||"ga",jd=/^(?:utma\.)?\d+\.\d+$/,kd=/^amp-[\w.-]{22,64}$/,Ba=!1;var vd=new $c;function J(a){vd.set(a)}var Td=function(a){a=Dd(a);a=new $c(a);for(var b=vd.w.slice(),c=0;c<a.w.length;c++)b[c]=b[c]||a.w[c];return(new $c(b)).encode()},Dd=function(a){a=a.get(Gd);ka(a)||(a=[]);return a};var ea=function(a){return"function"==typeof a},ka=function(a){return"[object Array]"==Object.prototype.toString.call(Object(a))},qa=function(a){return void 0!=a&&-1<(a.constructor+"").indexOf("String")},D=function(a,b){return 0==a.indexOf(b)},sa=function(a){return a?a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,""):""},ra=function(){for(var a=O.navigator.userAgent+(M.cookie?M.cookie:"")+(M.referrer?M.referrer:""),b=a.length,c=O.history.length;0<c;)a+=c--^b++;return[hd()^La(a)&2147483647,Math.round((new Date).getTime()/
  23. 1E3)].join(".")},ta=function(a){var b=M.createElement("img");b.width=1;b.height=1;b.src=a;return b},ua=function(){},K=function(a){if(encodeURIComponent instanceof Function)return encodeURIComponent(a);J(28);return a},L=function(a,b,c,d){try{a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent&&a.attachEvent("on"+b,c)}catch(e){J(27)}},f=/^[\w\-:/.?=&%!\[\]]+$/,Nd=/^[\w+/_-]+[=]{0,2}$/,be=function(a,b){return E(M.location[b?"href":"search"],a)},E=function(a,b){return(a=a.match("(?:&|#|\\?)"+
  24. K(b).replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")+"=([^&#]*)"))&&2==a.length?a[1]:""},xa=function(){var a=""+M.location.hostname;return 0==a.indexOf("www.")?a.substring(4):a},de=function(a,b){var c=a.indexOf(b);if(5==c||6==c)if(a=a.charAt(c+b.length),"/"==a||"?"==a||""==a||":"==a)return!0;return!1},ya=function(a,b){var c=M.referrer;if(/^(https?|android-app):\/\//i.test(c)){if(a)return c;a="//"+M.location.hostname;if(!de(c,a))return b&&(b=a.replace(/\./g,"-")+".cdn.ampproject.org",de(c,b))?void 0:
  25. c}},za=function(a,b){if(1==b.length&&null!=b[0]&&"object"===typeof b[0])return b[0];for(var c={},d=Math.min(a.length+1,b.length),e=0;e<d;e++)if("object"===typeof b[e]){for(var g in b[e])b[e].hasOwnProperty(g)&&(c[g]=b[e][g]);break}else e<a.length&&(c[a[e]]=b[e]);return c};var ee=function(){this.keys=[];this.values={};this.m={}};ee.prototype.set=function(a,b,c){this.keys.push(a);c?this.m[":"+a]=b:this.values[":"+a]=b};ee.prototype.get=function(a){return this.m.hasOwnProperty(":"+a)?this.m[":"+a]:this.values[":"+a]};ee.prototype.map=function(a){for(var b=0;b<this.keys.length;b++){var c=this.keys[b],d=this.get(c);d&&a(c,d)}};var O=window,M=document,va=function(a,b){return setTimeout(a,b)};var F=window,Ea=document,G=function(a){var b=F._gaUserPrefs;if(b&&b.ioo&&b.ioo()||a&&!0===F["ga-disable-"+a])return!0;try{var c=F.external;if(c&&c._gaUserPrefs&&"oo"==c._gaUserPrefs)return!0}catch(g){}a=[];b=String(Ea.cookie||document.cookie).split(";");for(c=0;c<b.length;c++){var d=b[c].split("="),e=d[0].replace(/^\s*|\s*$/g,"");e&&"AMP_TOKEN"==e&&((d=d.slice(1).join("=").replace(/^\s*|\s*$/g,""))&&(d=decodeURIComponent(d)),a.push(d))}for(b=0;b<a.length;b++)if("$OPT_OUT"==a[b])return!0;return Ea.getElementById("__gaOptOutExtension")?
  26. !0:!1};var Ca=function(a){var b=[],c=M.cookie.split(";");a=new RegExp("^\\s*"+a+"=\\s*(.*?)\\s*$");for(var d=0;d<c.length;d++){var e=c[d].match(a);e&&b.push(e[1])}return b},zc=function(a,b,c,d,e,g){e=G(e)?!1:eb.test(M.location.hostname)||"/"==c&&vc.test(d)?!1:!0;if(!e)return!1;b&&1200<b.length&&(b=b.substring(0,1200));c=a+"="+b+"; path="+c+"; ";g&&(c+="expires="+(new Date((new Date).getTime()+g)).toGMTString()+"; ");d&&"none"!==d&&(c+="domain="+d+";");d=M.cookie;M.cookie=c;if(!(d=d!=M.cookie))a:{a=Ca(a);
  27. for(d=0;d<a.length;d++)if(b==a[d]){d=!0;break a}d=!1}return d},Cc=function(a){return encodeURIComponent?encodeURIComponent(a).replace(/\(/g,"%28").replace(/\)/g,"%29"):a},vc=/^(www\.)?google(\.com?)?(\.[a-z]{2})?$/,eb=/(^|\.)doubleclick\.net$/i;var oc,Id=/^.*Version\/?(\d+)[^\d].*$/i,ne=function(){if(void 0!==O.__ga4__)return O.__ga4__;if(void 0===oc){var a=O.navigator.userAgent;if(a){var b=a;try{b=decodeURIComponent(a)}catch(c){}if(a=!(0<=b.indexOf("Chrome"))&&!(0<=b.indexOf("CriOS"))&&(0<=b.indexOf("Safari/")||0<=b.indexOf("Safari,")))b=Id.exec(b),a=11<=(b?Number(b[1]):-1);oc=a}else oc=!1}return oc};var Fa,Ga,fb,Ab,ja=/^https?:\/\/[^/]*cdn\.ampproject\.org\//,Ue=/^(?:www\.|m\.|amp\.)+/,Ub=[],da=function(a){if(ye(a[Kd])){if(void 0===Ab){var b;if(b=(b=De.get())&&b._ga||void 0)Ab=b,J(81)}if(void 0!==Ab)return a[Q]||(a[Q]=Ab),!1}if(a[Kd]){J(67);if(a[ac]&&"cookie"!=a[ac])return!1;if(void 0!==Ab)a[Q]||(a[Q]=Ab);else{a:{b=String(a[W]||xa());var c=String(a[Yb]||"/"),d=Ca(String(a[U]||"_ga"));b=na(d,b,c);if(!b||jd.test(b))b=!0;else if(b=Ca("AMP_TOKEN"),0==b.length)b=!0;else{if(1==b.length&&(b=decodeURIComponent(b[0]),
  28. "$RETRIEVING"==b||"$OPT_OUT"==b||"$ERROR"==b||"$NOT_FOUND"==b)){b=!0;break a}b=!1}}if(b&&tc(ic,String(a[Na])))return!0}}return!1},ic=function(){Z.D([ua])},tc=function(a,b){var c=Ca("AMP_TOKEN");if(1<c.length)return J(55),!1;c=decodeURIComponent(c[0]||"");if("$OPT_OUT"==c||"$ERROR"==c||G(b))return J(62),!1;if(!ja.test(M.referrer)&&"$NOT_FOUND"==c)return J(68),!1;if(void 0!==Ab)return J(56),va(function(){a(Ab)},0),!0;if(Fa)return Ub.push(a),!0;if("$RETRIEVING"==c)return J(57),va(function(){tc(a,b)},
  29. 1E4),!0;Fa=!0;c&&"$"!=c[0]||(xc("$RETRIEVING",3E4),setTimeout(Mc,3E4),c="");return Pc(c,b)?(Ub.push(a),!0):!1},Pc=function(a,b,c){if(!window.JSON)return J(58),!1;var d=O.XMLHttpRequest;if(!d)return J(59),!1;var e=new d;if(!("withCredentials"in e))return J(60),!1;e.open("POST",(c||"https://ampcid.google.com/v1/publisher:getClientId")+"?key=AIzaSyA65lEHUEizIsNtlbNo-l2K18dT680nsaM",!0);e.withCredentials=!0;e.setRequestHeader("Content-Type","text/plain");e.onload=function(){Fa=!1;if(4==e.readyState){try{200!=
  30. e.status&&(J(61),Qc("","$ERROR",3E4));var g=JSON.parse(e.responseText);g.optOut?(J(63),Qc("","$OPT_OUT",31536E6)):g.clientId?Qc(g.clientId,g.securityToken,31536E6):!c&&g.alternateUrl?(Ga&&clearTimeout(Ga),Fa=!0,Pc(a,b,g.alternateUrl)):(J(64),Qc("","$NOT_FOUND",36E5))}catch(ca){J(65),Qc("","$ERROR",3E4)}e=null}};d={originScope:"AMP_ECID_GOOGLE"};a&&(d.securityToken=a);e.send(JSON.stringify(d));Ga=va(function(){J(66);Qc("","$ERROR",3E4)},1E4);return!0},Mc=function(){Fa=!1},xc=function(a,b){if(void 0===
  31. fb){fb="";for(var c=id(),d=0;d<c.length;d++){var e=c[d];if(zc("AMP_TOKEN",encodeURIComponent(a),"/",e,"",b)){fb=e;return}}}zc("AMP_TOKEN",encodeURIComponent(a),"/",fb,"",b)},Qc=function(a,b,c){Ga&&clearTimeout(Ga);b&&xc(b,c);Ab=a;b=Ub;Ub=[];for(c=0;c<b.length;c++)b[c](a)},ye=function(a){a:{if(ja.test(M.referrer)){var b=M.location.hostname.replace(Ue,"");b:{var c=M.referrer;c=c.replace(/^https?:\/\//,"");var d=c.replace(/^[^/]+/,"").split("/"),e=d[2];d=(d="s"==e?d[3]:e)?decodeURIComponent(d):d;if(!d){if(0==
  32. c.indexOf("xn--")){c="";break b}(c=c.match(/(.*)\.cdn\.ampproject\.org\/?$/))&&2==c.length&&(d=c[1].replace(/-/g,".").replace(/\.\./g,"-"))}c=d?d.replace(Ue,""):""}if(b==c){b=!0;break a}else J(78)}b=!1}return b&&!1!==a};var bd=function(a){return(a?"https:":Ba||"https:"==M.location.protocol?"https:":"http:")+"//www.google-analytics.com"},Da=function(a){this.name="len";this.message=a+"-8192"},ba=function(a,b,c){c=c||ua;if(2036>=b.length)wc(a,b,c);else if(8192>=b.length)x(a,b,c)||wd(a,b,c)||wc(a,b,c);else throw ge("len",b.length),new Da(b.length);},pe=function(a,b,c,d){d=d||ua;wd(a+"?"+b,"",d,c)},wc=function(a,b,c){var d=ta(a+"?"+b);d.onload=d.onerror=function(){d.onload=null;d.onerror=null;c()}},wd=function(a,b,c,
  33. d){var e=O.XMLHttpRequest;if(!e)return!1;var g=new e;if(!("withCredentials"in g))return!1;a=a.replace(/^http:/,"https:");g.open("POST",a,!0);g.withCredentials=!0;g.setRequestHeader("Content-Type","text/plain");g.onreadystatechange=function(){if(4==g.readyState){if(d)try{var ca=g.responseText;if(1>ca.length)ge("xhr","ver","0"),c();else if("1"!=ca.charAt(0))ge("xhr","ver",String(ca.length)),c();else if(3<d.count++)ge("xhr","tmr",""+d.count),c();else if(1==ca.length)c();else{var l=ca.charAt(1);if("d"==
  34. l)pe("https://stats.g.doubleclick.net/j/collect",d.U,d,c);else if("g"==l){wc("https://www.google.%/ads/ga-audiences".replace("%","com"),d.google,c);var k=ca.substring(2);k&&(/^[a-z.]{1,6}$/.test(k)?wc("https://www.google.%/ads/ga-audiences".replace("%",k),d.google,ua):ge("tld","bcc",k))}else ge("xhr","brc",l),c()}}catch(w){ge("xhr","rsp"),c()}else c();g=null}};g.send(b);return!0},x=function(a,b,c){return O.navigator.sendBeacon?O.navigator.sendBeacon(a,b)?(c(),!0):!1:!1},ge=function(a,b,c){1<=100*
  35. Math.random()||G("?")||(a=["t=error","_e="+a,"_v=j78","sr=1"],b&&a.push("_f="+b),c&&a.push("_m="+K(c.substring(0,100))),a.push("aip=1"),a.push("z="+hd()),wc(bd(!0)+"/u/d",a.join("&"),ua))};var h=function(a){var b=O.gaData=O.gaData||{};return b[a]=b[a]||{}};var Ha=function(){this.M=[]};Ha.prototype.add=function(a){this.M.push(a)};Ha.prototype.D=function(a){try{for(var b=0;b<this.M.length;b++){var c=a.get(this.M[b]);c&&ea(c)&&c.call(O,a)}}catch(d){}b=a.get(Ia);b!=ua&&ea(b)&&(a.set(Ia,ua,!0),setTimeout(b,10))};function Ja(a){if(100!=a.get(Ka)&&La(P(a,Q))%1E4>=100*R(a,Ka))throw"abort";}function Ma(a){if(G(P(a,Na)))throw"abort";}function Oa(){var a=M.location.protocol;if("http:"!=a&&"https:"!=a)throw"abort";}
  36. function Pa(a){try{O.navigator.sendBeacon?J(42):O.XMLHttpRequest&&"withCredentials"in new O.XMLHttpRequest&&J(40)}catch(c){}a.set(ld,Td(a),!0);a.set(Ac,R(a,Ac)+1);var b=[];ue.map(function(c,d){d.F&&(c=a.get(c),void 0!=c&&c!=d.defaultValue&&("boolean"==typeof c&&(c*=1),b.push(d.F+"="+K(""+c))))});b.push("z="+Bd());a.set(Ra,b.join("&"),!0)}
  37. function Sa(a){var b=P(a,fa);!b&&a.get(Vd)&&(b="beacon");var c=P(a,gd),d=P(a,oe),e=c||(d?d+"/3":bd(!1)+"/collect");switch(P(a,ad)){case "d":e=c||(d?d+"/32":bd(!1)+"/j/collect");b=a.get(qe)||void 0;pe(e,P(a,Ra),b,a.Z(Ia));break;case "b":e=c||(d?d+"/31":bd(!1)+"/r/collect");default:b?(c=P(a,Ra),d=(d=a.Z(Ia))||ua,"image"==b?wc(e,c,d):"xhr"==b&&wd(e,c,d)||"beacon"==b&&x(e,c,d)||ba(e,c,d)):ba(e,P(a,Ra),a.Z(Ia))}e=P(a,Na);e=h(e);b=e.hitcount;e.hitcount=b?b+1:1;e=P(a,Na);delete h(e).pending_experiments;
  38. a.set(Ia,ua,!0)}function Hc(a){(O.gaData=O.gaData||{}).expId&&a.set(Nc,(O.gaData=O.gaData||{}).expId);(O.gaData=O.gaData||{}).expVar&&a.set(Oc,(O.gaData=O.gaData||{}).expVar);var b=P(a,Na);if(b=h(b).pending_experiments){var c=[];for(d in b)b.hasOwnProperty(d)&&b[d]&&c.push(encodeURIComponent(d)+"."+encodeURIComponent(b[d]));var d=c.join("!")}else d=void 0;d&&a.set(m,d,!0)}function cd(){if(O.navigator&&"preview"==O.navigator.loadPurpose)throw"abort";}
  39. function yd(a){var b=O.gaDevIds;ka(b)&&0!=b.length&&a.set("&did",b.join(","),!0)}function vb(a){if(!a.get(Na))throw"abort";};var hd=function(){return Math.round(2147483647*Math.random())},Bd=function(){try{var a=new Uint32Array(1);O.crypto.getRandomValues(a);return a[0]&2147483647}catch(b){return hd()}};function Ta(a){var b=R(a,Ua);500<=b&&J(15);var c=P(a,Va);if("transaction"!=c&&"item"!=c){c=R(a,Wa);var d=(new Date).getTime(),e=R(a,Xa);0==e&&a.set(Xa,d);e=Math.round(2*(d-e)/1E3);0<e&&(c=Math.min(c+e,20),a.set(Xa,d));if(0>=c)throw"abort";a.set(Wa,--c)}a.set(Ua,++b)};var Ya=function(){this.data=new ee};Ya.prototype.get=function(a){var b=$a(a),c=this.data.get(a);b&&void 0==c&&(c=ea(b.defaultValue)?b.defaultValue():b.defaultValue);return b&&b.Z?b.Z(this,a,c):c};var P=function(a,b){a=a.get(b);return void 0==a?"":""+a},R=function(a,b){a=a.get(b);return void 0==a||""===a?0:Number(a)};Ya.prototype.Z=function(a){return(a=this.get(a))&&ea(a)?a:ua};
  40. Ya.prototype.set=function(a,b,c){if(a)if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&ab(this,d,a[d],c);else ab(this,a,b,c)};var ab=function(a,b,c,d){if(void 0!=c)switch(b){case Na:wb.test(c)}var e=$a(b);e&&e.o?e.o(a,b,c,d):a.data.set(b,c,d)};var ue=new ee,ve=[],bb=function(a,b,c,d,e){this.name=a;this.F=b;this.Z=d;this.o=e;this.defaultValue=c},$a=function(a){var b=ue.get(a);if(!b)for(var c=0;c<ve.length;c++){var d=ve[c],e=d[0].exec(a);if(e){b=d[1](e);ue.set(b.name,b);break}}return b},yc=function(a){var b;ue.map(function(c,d){d.F==a&&(b=d)});return b&&b.name},S=function(a,b,c,d,e){a=new bb(a,b,c,d,e);ue.set(a.name,a);return a.name},cb=function(a,b){ve.push([new RegExp("^"+a+"$"),b])},T=function(a,b,c){return S(a,b,c,void 0,db)},db=function(){};var hb=T("apiVersion","v"),ib=T("clientVersion","_v");S("anonymizeIp","aip");var jb=S("adSenseId","a"),Va=S("hitType","t"),Ia=S("hitCallback"),Ra=S("hitPayload");S("nonInteraction","ni");S("currencyCode","cu");S("dataSource","ds");var Vd=S("useBeacon",void 0,!1),fa=S("transport");S("sessionControl","sc","");S("sessionGroup","sg");S("queueTime","qt");var Ac=S("_s","_s");S("screenName","cd");var kb=S("location","dl",""),lb=S("referrer","dr"),mb=S("page","dp","");S("hostname","dh");
  41. var nb=S("language","ul"),ob=S("encoding","de");S("title","dt",function(){return M.title||void 0});cb("contentGroup([0-9]+)",function(a){return new bb(a[0],"cg"+a[1])});var pb=S("screenColors","sd"),qb=S("screenResolution","sr"),rb=S("viewportSize","vp"),sb=S("javaEnabled","je"),tb=S("flashVersion","fl");S("campaignId","ci");S("campaignName","cn");S("campaignSource","cs");S("campaignMedium","cm");S("campaignKeyword","ck");S("campaignContent","cc");
  42. var ub=S("eventCategory","ec"),xb=S("eventAction","ea"),yb=S("eventLabel","el"),zb=S("eventValue","ev"),Bb=S("socialNetwork","sn"),Cb=S("socialAction","sa"),Db=S("socialTarget","st"),Eb=S("l1","plt"),Fb=S("l2","pdt"),Gb=S("l3","dns"),Hb=S("l4","rrt"),Ib=S("l5","srt"),Jb=S("l6","tcp"),Kb=S("l7","dit"),Lb=S("l8","clt"),Ve=S("l9","_gst"),We=S("l10","_gbt"),Xe=S("l11","_cst"),Ye=S("l12","_cbt"),Mb=S("timingCategory","utc"),Nb=S("timingVar","utv"),Ob=S("timingLabel","utl"),Pb=S("timingValue","utt");
  43. S("appName","an");S("appVersion","av","");S("appId","aid","");S("appInstallerId","aiid","");S("exDescription","exd");S("exFatal","exf");var Nc=S("expId","xid"),Oc=S("expVar","xvar"),m=S("exp","exp"),Rc=S("_utma","_utma"),Sc=S("_utmz","_utmz"),Tc=S("_utmht","_utmht"),Ua=S("_hc",void 0,0),Xa=S("_ti",void 0,0),Wa=S("_to",void 0,20);cb("dimension([0-9]+)",function(a){return new bb(a[0],"cd"+a[1])});cb("metric([0-9]+)",function(a){return new bb(a[0],"cm"+a[1])});S("linkerParam",void 0,void 0,Bc,db);
  44. var Ze=T("_cd2l",void 0,!1),ld=S("usage","_u"),Gd=S("_um");S("forceSSL",void 0,void 0,function(){return Ba},function(a,b,c){J(34);Ba=!!c});var ed=S("_j1","jid"),ia=S("_j2","gjid");cb("\\&(.*)",function(a){var b=new bb(a[0],a[1]),c=yc(a[0].substring(1));c&&(b.Z=function(d){return d.get(c)},b.o=function(d,e,g,ca){d.set(c,g,ca)},b.F=void 0);return b});
  45. var Qb=T("_oot"),dd=S("previewTask"),Rb=S("checkProtocolTask"),md=S("validationTask"),Sb=S("checkStorageTask"),Uc=S("historyImportTask"),Tb=S("samplerTask"),Vb=S("_rlt"),Wb=S("buildHitTask"),Xb=S("sendHitTask"),Vc=S("ceTask"),zd=S("devIdTask"),Cd=S("timingTask"),Ld=S("displayFeaturesTask"),oa=S("customTask"),V=T("name"),Q=T("clientId","cid"),n=T("clientIdTime"),xd=T("storedClientId"),Ad=S("userId","uid"),Na=T("trackingId","tid"),U=T("cookieName",void 0,"_ga"),W=T("cookieDomain"),Yb=T("cookiePath",
  46. void 0,"/"),Zb=T("cookieExpires",void 0,63072E3),Hd=T("cookieUpdate",void 0,!0),$b=T("legacyCookieDomain"),Wc=T("legacyHistoryImport",void 0,!0),ac=T("storage",void 0,"cookie"),bc=T("allowLinker",void 0,!1),cc=T("allowAnchor",void 0,!0),Ka=T("sampleRate","sf",100),dc=T("siteSpeedSampleRate",void 0,1),ec=T("alwaysSendReferrer",void 0,!1),I=T("_gid","_gid"),la=T("_gcn"),Kd=T("useAmpClientId"),ce=T("_gclid"),fe=T("_gt"),he=T("_ge",void 0,7776E6),ie=T("_gclsrc"),je=T("storeGac",void 0,!0),oe=S("_x_19"),
  47. gd=S("transportUrl"),Md=S("_r","_r"),qe=S("_dp"),ad=S("_jt",void 0,"n"),Ud=S("allowAdFeatures",void 0,!0);function X(a,b,c,d){b[a]=function(){try{return d&&J(d),c.apply(this,arguments)}catch(e){throw ge("exc",a,e&&e.name),e;}}};var Od=function(){this.V=100;this.$=this.fa=!1;this.oa="detourexp";this.groups=1},Ed=function(a){var b=new Od,c;if(b.fa&&b.$)return 0;b.$=!0;if(a){if(b.oa&&void 0!==a.get(b.oa))return R(a,b.oa);if(0==a.get(dc))return 0}if(0==b.V)return 0;void 0===c&&(c=Bd());return 0==c%b.V?Math.floor(c/b.V)%b.groups+1:0};function fc(){var a,b;if((b=(b=O.navigator)?b.plugins:null)&&b.length)for(var c=0;c<b.length&&!a;c++){var d=b[c];-1<d.name.indexOf("Shockwave Flash")&&(a=d.description)}if(!a)try{var e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");a=e.GetVariable("$version")}catch(g){}if(!a)try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"),a="WIN 6,0,21,0",e.AllowScriptAccess="always",a=e.GetVariable("$version")}catch(g){}if(!a)try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"),a=e.GetVariable("$version")}catch(g){}a&&
  48. (e=a.match(/[\d]+/g))&&3<=e.length&&(a=e[0]+"."+e[1]+" r"+e[2]);return a||void 0};var aa=function(a){var b=Math.min(R(a,dc),100);return La(P(a,Q))%100>=b?!1:!0},gc=function(a){var b={};if(Ec(b)||Fc(b)){var c=b[Eb];void 0==c||Infinity==c||isNaN(c)||(0<c?(Y(b,Gb),Y(b,Jb),Y(b,Ib),Y(b,Fb),Y(b,Hb),Y(b,Kb),Y(b,Lb),Y(b,Ve),Y(b,We),Y(b,Xe),Y(b,Ye),va(function(){a(b)},10)):L(O,"load",function(){gc(a)},!1))}},Ec=function(a){var b=O.performance||O.webkitPerformance;b=b&&b.timing;if(!b)return!1;var c=b.navigationStart;if(0==c)return!1;a[Eb]=b.loadEventStart-c;a[Gb]=b.domainLookupEnd-b.domainLookupStart;
  49. a[Jb]=b.connectEnd-b.connectStart;a[Ib]=b.responseStart-b.requestStart;a[Fb]=b.responseEnd-b.responseStart;a[Hb]=b.fetchStart-c;a[Kb]=b.domInteractive-c;a[Lb]=b.domContentLoadedEventStart-c;a[Ve]=N.L-c;a[We]=N.ya-c;O.google_tag_manager&&O.google_tag_manager._li&&(b=O.google_tag_manager._li,a[Xe]=b.cst,a[Ye]=b.cbt);return!0},Fc=function(a){if(O.top!=O)return!1;var b=O.external,c=b&&b.onloadT;b&&!b.isValidLoadTime&&(c=void 0);2147483648<c&&(c=void 0);0<c&&b.setPageReadyTime();if(void 0==c)return!1;
  50. a[Eb]=c;return!0},Y=function(a,b){var c=a[b];if(isNaN(c)||Infinity==c||0>c)a[b]=void 0},Fd=function(a){return function(b){if("pageview"==b.get(Va)&&!a.I){a.I=!0;var c=aa(b),d=0<E(P(b,kb),"gclid").length;(c||d)&&gc(function(e){c&&a.send("timing",e);d&&a.send("adtiming",e)})}}};var hc=!1,mc=function(a){if("cookie"==P(a,ac)){if(a.get(Hd)||P(a,xd)!=P(a,Q)){var b=1E3*R(a,Zb);ma(a,Q,U,b)}ma(a,I,la,864E5);if(a.get(je)){var c=P(a,ce);if(c){var d=Math.min(R(a,he),1E3*R(a,Zb));d=Math.min(d,1E3*R(a,fe)+d-(new Date).getTime());a.data.set(he,d);b={};var e=P(a,fe),g=P(a,ie),ca=kc(P(a,Yb)),l=lc(P(a,W));a=P(a,Na);g&&"aw.ds"!=g?b&&(b.ua=!0):(c=["1",e,Cc(c)].join("."),0<d&&(b&&(b.ta=!0),zc("_gac_"+Cc(a),c,ca,l,a,d)));le(b)}}else J(75)}},ma=function(a,b,c,d){var e=nd(a,b);if(e){c=P(a,c);
  51. var g=kc(P(a,Yb)),ca=lc(P(a,W)),l=P(a,Na);if("auto"!=ca)zc(c,e,g,ca,l,d)&&(hc=!0);else{J(32);for(var k=id(),w=0;w<k.length;w++)if(ca=k[w],a.data.set(W,ca),e=nd(a,b),zc(c,e,g,ca,l,d)){hc=!0;return}a.data.set(W,"auto")}}},nc=function(a){if("cookie"==P(a,ac)&&!hc&&(mc(a),!hc))throw"abort";},Yc=function(a){if(a.get(Wc)){var b=P(a,W),c=P(a,$b)||xa(),d=Xc("__utma",c,b);d&&(J(19),a.set(Tc,(new Date).getTime(),!0),a.set(Rc,d.R),(b=Xc("__utmz",c,b))&&d.hash==b.hash&&a.set(Sc,b.R))}},nd=function(a,b){b=Cc(P(a,
  52. b));var c=lc(P(a,W)).split(".").length;a=jc(P(a,Yb));1<a&&(c+="-"+a);return b?["GA1",c,b].join("."):""},Xd=function(a,b){return na(b,P(a,W),P(a,Yb))},na=function(a,b,c){if(!a||1>a.length)J(12);else{for(var d=[],e=0;e<a.length;e++){var g=a[e];var ca=g.split(".");var l=ca.shift();("GA1"==l||"1"==l)&&1<ca.length?(g=ca.shift().split("-"),1==g.length&&(g[1]="1"),g[0]*=1,g[1]*=1,ca={H:g,s:ca.join(".")}):ca=kd.test(g)?{H:[0,0],s:g}:void 0;ca&&d.push(ca)}if(1==d.length)return J(13),d[0].s;if(0==d.length)J(12);
  53. else{J(14);d=Gc(d,lc(b).split(".").length,0);if(1==d.length)return d[0].s;d=Gc(d,jc(c),1);1<d.length&&J(41);return d[0]&&d[0].s}}},Gc=function(a,b,c){for(var d=[],e=[],g,ca=0;ca<a.length;ca++){var l=a[ca];l.H[c]==b?d.push(l):void 0==g||l.H[c]<g?(e=[l],g=l.H[c]):l.H[c]==g&&e.push(l)}return 0<d.length?d:e},lc=function(a){return 0==a.indexOf(".")?a.substr(1):a},id=function(){var a=[],b=xa().split(".");if(4==b.length){var c=b[b.length-1];if(parseInt(c,10)==c)return["none"]}for(c=b.length-2;0<=c;c--)a.push(b.slice(c).join("."));
  54. b=M.location.hostname;eb.test(b)||vc.test(b)||a.push("none");return a},kc=function(a){if(!a)return"/";1<a.length&&a.lastIndexOf("/")==a.length-1&&(a=a.substr(0,a.length-1));0!=a.indexOf("/")&&(a="/"+a);return a},jc=function(a){a=kc(a);return"/"==a?1:a.split("/").length},le=function(a){a.ta&&J(77);a.na&&J(74);a.pa&&J(73);a.ua&&J(69)};function Xc(a,b,c){"none"==b&&(b="");var d=[],e=Ca(a);a="__utma"==a?6:2;for(var g=0;g<e.length;g++){var ca=(""+e[g]).split(".");ca.length>=a&&d.push({hash:ca[0],R:e[g],O:ca})}if(0!=d.length)return 1==d.length?d[0]:Zc(b,d)||Zc(c,d)||Zc(null,d)||d[0]}function Zc(a,b){if(null==a)var c=a=1;else c=La(a),a=La(D(a,".")?a.substring(1):"."+a);for(var d=0;d<b.length;d++)if(b[d].hash==c||b[d].hash==a)return b[d]};var od=new RegExp(/^https?:\/\/([^\/:]+)/),De=O.google_tag_data.glBridge,pd=/(.*)([?&#])(?:_ga=[^&#]*)(?:&?)(.*)/,me=/(.*)([?&#])(?:_gac=[^&#]*)(?:&?)(.*)/;function Bc(a){if(a.get(Ze))return J(35),De.generate($e(a));var b=P(a,Q),c=P(a,I)||"";b="_ga=2."+K(pa(c+b,0)+"."+c+"-"+b);(a=af(a))?(J(44),a="&_gac=1."+K([pa(a.qa,0),a.timestamp,a.qa].join("."))):a="";return b+a}
  55. function Ic(a,b){var c=new Date,d=O.navigator,e=d.plugins||[];a=[a,d.userAgent,c.getTimezoneOffset(),c.getYear(),c.getDate(),c.getHours(),c.getMinutes()+b];for(b=0;b<e.length;++b)a.push(e[b].description);return La(a.join("."))}function pa(a,b){var c=new Date,d=O.navigator,e=c.getHours()+Math.floor((c.getMinutes()+b)/60);return La([a,d.userAgent,d.language||"",c.getTimezoneOffset(),c.getYear(),c.getDate()+Math.floor(e/24),(24+e)%24,(60+c.getMinutes()+b)%60].join("."))}
  56. var Dc=function(a){J(48);this.target=a;this.T=!1};Dc.prototype.ca=function(a,b){if(a){if(this.target.get(Ze))return De.decorate($e(this.target),a,b);if(a.tagName){if("a"==a.tagName.toLowerCase()){a.href&&(a.href=qd(this,a.href,b));return}if("form"==a.tagName.toLowerCase())return rd(this,a)}if("string"==typeof a)return qd(this,a,b)}};
  57. var qd=function(a,b,c){var d=pd.exec(b);d&&3<=d.length&&(b=d[1]+(d[3]?d[2]+d[3]:""));(d=me.exec(b))&&3<=d.length&&(b=d[1]+(d[3]?d[2]+d[3]:""));a=a.target.get("linkerParam");var e=b.indexOf("?");d=b.indexOf("#");c?b+=(-1==d?"#":"&")+a:(c=-1==e?"?":"&",b=-1==d?b+(c+a):b.substring(0,d)+c+a+b.substring(d));b=b.replace(/&+_ga=/,"&_ga=");return b=b.replace(/&+_gac=/,"&_gac=")},rd=function(a,b){if(b&&b.action)if("get"==b.method.toLowerCase()){a=a.target.get("linkerParam").split("&");for(var c=0;c<a.length;c++){var d=
  58. a[c].split("="),e=d[1];d=d[0];for(var g=b.childNodes||[],ca=!1,l=0;l<g.length;l++)if(g[l].name==d){g[l].setAttribute("value",e);ca=!0;break}ca||(g=M.createElement("input"),g.setAttribute("type","hidden"),g.setAttribute("name",d),g.setAttribute("value",e),b.appendChild(g))}}else"post"==b.method.toLowerCase()&&(b.action=qd(a,b.action))};
  59. Dc.prototype.S=function(a,b,c){function d(g){try{g=g||O.event;a:{var ca=g.target||g.srcElement;for(g=100;ca&&0<g;){if(ca.href&&ca.nodeName.match(/^a(?:rea)?$/i)){var l=ca;break a}ca=ca.parentNode;g--}l={}}("http:"==l.protocol||"https:"==l.protocol)&&sd(a,l.hostname||"")&&l.href&&(l.href=qd(e,l.href,b))}catch(k){J(26)}}var e=this;this.target.get(Ze)?De.auto(function(){return $e(e.target)},a,b?"fragment":"",c):(this.T||(this.T=!0,L(M,"mousedown",d,!1),L(M,"keyup",d,!1)),c&&L(M,"submit",function(g){g=
  60. g||O.event;if((g=g.target||g.srcElement)&&g.action){var ca=g.action.match(od);ca&&sd(a,ca[1])&&rd(e,g)}}))};function sd(a,b){if(b==M.location.hostname)return!1;for(var c=0;c<a.length;c++)if(a[c]instanceof RegExp){if(a[c].test(b))return!0}else if(0<=b.indexOf(a[c]))return!0;return!1}function ke(a,b){return b!=Ic(a,0)&&b!=Ic(a,-1)&&b!=Ic(a,-2)&&b!=pa(a,0)&&b!=pa(a,-1)&&b!=pa(a,-2)}function $e(a){var b=af(a);return{_ga:a.get(Q),_gid:a.get(I)||void 0,_gac:b?[b.qa,b.timestamp].join("."):void 0}}
  61. function af(a){function b(e){return void 0==e||""===e?0:Number(e)}var c=a.get(ce);if(c&&a.get(je)){var d=b(a.get(fe));if(1E3*d+b(a.get(he))<=(new Date).getTime())J(76);else return{timestamp:d,qa:c}}};var p=/^(GTM|OPT)-[A-Z0-9]+$/,q=/;_gaexp=[^;]*/g,r=/;((__utma=)|([^;=]+=GAX?\d+\.))[^;]*/g,Aa=/^https?:\/\/[\w\-.]+\.google.com(:\d+)?\/optimize\/opt-launch\.html\?.*$/,t=function(a){function b(d,e){e&&(c+="&"+d+"="+K(e))}var c="https://www.google-analytics.com/gtm/js?id="+K(a.id);"dataLayer"!=a.B&&b("l",a.B);b("t",a.target);b("cid",a.clientId);b("cidt",a.ka);b("gac",a.la);b("aip",a.ia);a.sync&&b("m","sync");b("cycle",a.G);a.qa&&b("gclid",a.qa);Aa.test(M.referrer)&&b("cb",String(hd()));return c};var Jd=function(a,b,c){this.aa=b;(b=c)||(b=(b=P(a,V))&&"t0"!=b?Wd.test(b)?"_gat_"+Cc(P(a,Na)):"_gat_"+Cc(b):"_gat");this.Y=b;this.ra=null},Rd=function(a,b){var c=b.get(Wb);b.set(Wb,function(e){Pd(a,e,ed);Pd(a,e,ia);var g=c(e);Qd(a,e);return g});var d=b.get(Xb);b.set(Xb,function(e){var g=d(e);if(se(e)){if(ne()!==H(a,e)){J(80);var ca={U:re(a,e,1),google:re(a,e,2),count:0};pe("https://stats.g.doubleclick.net/j/collect",ca.U,ca)}else ta(re(a,e,0));e.set(ed,"",!0)}return g})},Pd=function(a,b,c){!1===b.get(Ud)||
  62. b.get(c)||("1"==Ca(a.Y)[0]?b.set(c,"",!0):b.set(c,""+hd(),!0))},Qd=function(a,b){se(b)&&zc(a.Y,"1",P(b,Yb),P(b,W),P(b,Na),6E4)},se=function(a){return!!a.get(ed)&&!1!==a.get(Ud)},re=function(a,b,c){var d=new ee,e=function(ca){$a(ca).F&&d.set($a(ca).F,b.get(ca))};e(hb);e(ib);e(Na);e(Q);e(ed);if(0==c||1==c)e(Ad),e(ia),e(I);d.set($a(ld).F,Td(b));var g="";d.map(function(ca,l){g+=K(ca)+"=";g+=K(""+l)+"&"});g+="z="+hd();0==c?g=a.aa+g:1==c?g="t=dc&aip=1&_r=3&"+g:2==c&&(g="t=sr&aip=1&_r=4&slf_rd=1&"+g);return g},
  63. H=function(a,b){null===a.ra&&(a.ra=1===Ed(b),a.ra&&J(33));return a.ra},Wd=/^gtm\d+$/;var fd=function(a,b){a=a.b;if(!a.get("dcLoaded")){var c=new $c(Dd(a));c.set(29);a.set(Gd,c.w);b=b||{};var d;b[U]&&(d=Cc(b[U]));b=new Jd(a,"https://stats.g.doubleclick.net/r/collect?t=dc&aip=1&_r=3&",d);Rd(b,a);a.set("dcLoaded",!0)}};var Sd=function(a){if(!a.get("dcLoaded")&&"cookie"==a.get(ac)){var b=new Jd(a);Pd(b,a,ed);Pd(b,a,ia);Qd(b,a);if(se(a)){var c=ne()!==H(b,a);a.set(Md,1,!0);c?(J(79),a.set(ad,"d",!0),a.set(qe,{U:re(b,a,1),google:re(b,a,2),count:0},!0)):a.set(ad,"b",!0)}}};var Lc=function(){var a=O.gaGlobal=O.gaGlobal||{};return a.hid=a.hid||hd()};var wb=/^(UA|YT|MO|GP)-(\d+)-(\d+)$/,pc=function(a){function b(e,g){d.b.data.set(e,g)}function c(e,g){b(e,g);d.filters.add(e)}var d=this;this.b=new Ya;this.filters=new Ha;b(V,a[V]);b(Na,sa(a[Na]));b(U,a[U]);b(W,a[W]||xa());b(Yb,a[Yb]);b(Zb,a[Zb]);b(Hd,a[Hd]);b($b,a[$b]);b(Wc,a[Wc]);b(bc,a[bc]);b(cc,a[cc]);b(Ka,a[Ka]);b(dc,a[dc]);b(ec,a[ec]);b(ac,a[ac]);b(Ad,a[Ad]);b(n,a[n]);b(Kd,a[Kd]);b(je,a[je]);b(Ze,a[Ze]);b(oe,a[oe]);b(hb,1);b(ib,"j78");c(Qb,Ma);c(oa,ua);c(dd,cd);c(Rb,Oa);c(md,vb);c(Sb,nc);c(Uc,
  64. Yc);c(Tb,Ja);c(Vb,Ta);c(Vc,Hc);c(zd,yd);c(Ld,Sd);c(Wb,Pa);c(Xb,Sa);c(Cd,Fd(this));Kc(this.b);Jc(this.b,a[Q]);this.b.set(jb,Lc())},Jc=function(a,b){var c=P(a,U);a.data.set(la,"_ga"==c?"_gid":c+"_gid");if("cookie"==P(a,ac)){hc=!1;c=Ca(P(a,U));c=Xd(a,c);if(!c){c=P(a,W);var d=P(a,$b)||xa();c=Xc("__utma",d,c);void 0!=c?(J(10),c=c.O[1]+"."+c.O[2]):c=void 0}c&&(hc=!0);if(d=c&&!a.get(Hd))if(d=c.split("."),2!=d.length)d=!1;else if(d=Number(d[1])){var e=R(a,Zb);d=d+e<(new Date).getTime()/1E3}else d=!1;d&&(c=
  65. void 0);c&&(a.data.set(xd,c),a.data.set(Q,c),c=Ca(P(a,la)),(c=Xd(a,c))&&a.data.set(I,c));if(a.get(je)&&(c=a.get(ce),d=a.get(ie),!c||d&&"aw.ds"!=d)){c={};if(M){d=[];e=M.cookie.split(";");for(var g=/^\s*_gac_(UA-\d+-\d+)=\s*(.+?)\s*$/,ca=0;ca<e.length;ca++){var l=e[ca].match(g);l&&d.push({ja:l[1],value:l[2]})}e={};if(d&&d.length)for(g=0;g<d.length;g++)(ca=d[g].value.split("."),"1"!=ca[0]||3!=ca.length)?c&&(c.na=!0):ca[1]&&(e[d[g].ja]?c&&(c.pa=!0):e[d[g].ja]=[],e[d[g].ja].push({timestamp:ca[1],qa:ca[2]}));
  66. d=e}else d={};d=d[P(a,Na)];le(c);d&&0!=d.length&&(c=d[0],a.data.set(fe,c.timestamp),a.data.set(ce,c.qa))}}if(a.get(Hd)&&(c=be("_ga",!!a.get(cc)),g=be("_gl",!!a.get(cc)),d=De.get(a.get(cc)),e=d._ga,g&&0<g.indexOf("_ga*")&&!e&&J(30),g=d.gclid,ca=d._gac,c||e||g||ca))if(c&&e&&J(36),a.get(bc)||ye(a.get(Kd))){if(e&&(J(38),a.data.set(Q,e),d._gid&&(J(51),a.data.set(I,d._gid))),g?(J(82),a.data.set(ce,g),d.gclsrc&&a.data.set(ie,d.gclsrc)):ca&&(d=ca.split("."))&&2===d.length&&(J(37),a.data.set(ce,d[0]),a.data.set(fe,
  67. d[1])),c)b:if(d=c.indexOf("."),-1==d)J(22);else{e=c.substring(0,d);g=c.substring(d+1);d=g.indexOf(".");c=g.substring(0,d);g=g.substring(d+1);if("1"==e){if(d=g,ke(d,c)){J(23);break b}}else if("2"==e){d=g.indexOf("-");e="";0<d?(e=g.substring(0,d),d=g.substring(d+1)):d=g.substring(1);if(ke(e+d,c)){J(53);break b}e&&(J(2),a.data.set(I,e))}else{J(22);break b}J(11);a.data.set(Q,d);if(c=be("_gac",!!a.get(cc)))c=c.split("."),"1"!=c[0]||4!=c.length?J(72):ke(c[3],c[1])?J(71):(a.data.set(ce,c[3]),a.data.set(fe,
  68. c[2]),J(70))}}else J(21);b&&(J(9),a.data.set(Q,K(b)));a.get(Q)||((b=(b=O.gaGlobal&&O.gaGlobal.vid)&&-1!=b.search(jd)?b:void 0)?(J(17),a.data.set(Q,b)):(J(8),a.data.set(Q,ra())));a.get(I)||(J(3),a.data.set(I,ra()));mc(a)},Kc=function(a){var b=O.navigator,c=O.screen,d=M.location;a.set(lb,ya(!!a.get(ec),!!a.get(Kd)));if(d){var e=d.pathname||"";"/"!=e.charAt(0)&&(J(31),e="/"+e);a.set(kb,d.protocol+"//"+d.hostname+e+d.search)}c&&a.set(qb,c.width+"x"+c.height);c&&a.set(pb,c.colorDepth+"-bit");c=M.documentElement;
  69. var g=(e=M.body)&&e.clientWidth&&e.clientHeight,ca=[];c&&c.clientWidth&&c.clientHeight&&("CSS1Compat"===M.compatMode||!g)?ca=[c.clientWidth,c.clientHeight]:g&&(ca=[e.clientWidth,e.clientHeight]);c=0>=ca[0]||0>=ca[1]?"":ca.join("x");a.set(rb,c);a.set(tb,fc());a.set(ob,M.characterSet||M.charset);a.set(sb,b&&"function"===typeof b.javaEnabled&&b.javaEnabled()||!1);a.set(nb,(b&&(b.language||b.browserLanguage)||"").toLowerCase());a.data.set(ce,be("gclid",!0));a.data.set(ie,be("gclsrc",!0));a.data.set(fe,
  70. Math.round((new Date).getTime()/1E3));if(d&&a.get(cc)&&(b=M.location.hash)){b=b.split(/[?&#]+/);d=[];for(c=0;c<b.length;++c)(D(b[c],"utm_id")||D(b[c],"utm_campaign")||D(b[c],"utm_source")||D(b[c],"utm_medium")||D(b[c],"utm_term")||D(b[c],"utm_content")||D(b[c],"gclid")||D(b[c],"dclid")||D(b[c],"gclsrc"))&&d.push(b[c]);0<d.length&&(b="#"+d.join("&"),a.set(kb,a.get(kb)+b))}};pc.prototype.get=function(a){return this.b.get(a)};pc.prototype.set=function(a,b){this.b.set(a,b)};
  71. var qc={pageview:[mb],event:[ub,xb,yb,zb],social:[Bb,Cb,Db],timing:[Mb,Nb,Pb,Ob]};pc.prototype.send=function(a){if(!(1>arguments.length)){if("string"===typeof arguments[0]){var b=arguments[0];var c=[].slice.call(arguments,1)}else b=arguments[0]&&arguments[0][Va],c=arguments;b&&(c=za(qc[b]||[],c),c[Va]=b,this.b.set(c,void 0,!0),this.filters.D(this.b),this.b.data.m={})}};pc.prototype.ma=function(a,b){var c=this;u(a,c,b)||(v(a,function(){u(a,c,b)}),y(String(c.get(V)),a,void 0,b,!0))};var rc=function(a){if("prerender"==M.visibilityState)return!1;a();return!0},z=function(a){if(!rc(a)){J(16);var b=!1,c=function(){if(!b&&rc(a)){b=!0;var d=c,e=M;e.removeEventListener?e.removeEventListener("visibilitychange",d,!1):e.detachEvent&&e.detachEvent("onvisibilitychange",d)}};L(M,"visibilitychange",c)}};var td=/^(?:(\w+)\.)?(?:(\w+):)?(\w+)$/,sc=function(a){if(ea(a[0]))this.u=a[0];else{var b=td.exec(a[0]);null!=b&&4==b.length&&(this.c=b[1]||"t0",this.K=b[2]||"",this.C=b[3],this.a=[].slice.call(a,1),this.K||(this.A="create"==this.C,this.i="require"==this.C,this.g="provide"==this.C,this.ba="remove"==this.C),this.i&&(3<=this.a.length?(this.X=this.a[1],this.W=this.a[2]):this.a[1]&&(qa(this.a[1])?this.X=this.a[1]:this.W=this.a[1])));b=a[1];a=a[2];if(!this.C)throw"abort";if(this.i&&(!qa(b)||""==b))throw"abort";
  72. if(this.g&&(!qa(b)||""==b||!ea(a)))throw"abort";if(ud(this.c)||ud(this.K))throw"abort";if(this.g&&"t0"!=this.c)throw"abort";}};function ud(a){return 0<=a.indexOf(".")||0<=a.indexOf(":")};var Yd,Zd,$d,A;Yd=new ee;$d=new ee;A=new ee;Zd={ec:45,ecommerce:46,linkid:47};
  73. var u=function(a,b,c){b==N||b.get(V);var d=Yd.get(a);if(!ea(d))return!1;b.plugins_=b.plugins_||new ee;if(b.plugins_.get(a))return!0;b.plugins_.set(a,new d(b,c||{}));return!0},y=function(a,b,c,d,e){if(!ea(Yd.get(b))&&!$d.get(b)){Zd.hasOwnProperty(b)&&J(Zd[b]);a=N.j(a);if(p.test(b)){J(52);if(!a)return!0;c=d||{};d={id:b,B:c.dataLayer||"dataLayer",ia:!!a.get("anonymizeIp"),sync:e,G:!1};a.get("&gtm")==b&&(d.G=!0);var g=String(a.get("name"));"t0"!=g&&(d.target=g);G(String(a.get("trackingId")))||(d.clientId=
  74. String(a.get(Q)),d.ka=Number(a.get(n)),c=c.palindrome?r:q,c=(c=M.cookie.replace(/^|(; +)/g,";").match(c))?c.sort().join("").substring(1):void 0,d.la=c,d.qa=E(a.b.get(kb)||"","gclid"));c=d.B;g=(new Date).getTime();O[c]=O[c]||[];g={"gtm.start":g};e||(g.event="gtm.js");O[c].push(g);c=t(d)}!c&&Zd.hasOwnProperty(b)?(J(39),c=b+".js"):J(43);if(c){if(a){var ca=a.get(oe);qa(ca)||(ca=void 0)}c&&0<=c.indexOf("/")||(c=(ca?ca+"/34":bd(!1)+"/plugins/ua/")+c);ca=ae(c);a=ca.protocol;d=M.location.protocol;if(("https:"==
  75. a||a==d||("http:"!=a?0:"http:"==d))&&B(ca)){if(ca=ca.url)a=(a=M.querySelector&&M.querySelector("script[nonce]")||null)?a.nonce||a.getAttribute&&a.getAttribute("nonce")||"":"",e?(e="",a&&Nd.test(a)&&(e=' nonce="'+a+'"'),f.test(ca)&&M.write("<script"+e+' src="'+ca+'">\x3c/script>')):(e=M.createElement("script"),e.type="text/javascript",e.async=!0,e.src=ca,a&&e.setAttribute("nonce",a),ca=M.getElementsByTagName("script")[0],ca.parentNode.insertBefore(e,ca));$d.set(b,!0)}}}},v=function(a,b){var c=A.get(a)||
  76. [];c.push(b);A.set(a,c)},C=function(a,b){Yd.set(a,b);b=A.get(a)||[];for(var c=0;c<b.length;c++)b[c]();A.set(a,[])},B=function(a){var b=ae(M.location.href);if(D(a.url,"https://www.google-analytics.com/gtm/js?id="))return!0;if(a.query||0<=a.url.indexOf("?")||0<=a.path.indexOf("://"))return!1;if(a.host==b.host&&a.port==b.port)return!0;b="http:"==a.protocol?80:443;return"www.google-analytics.com"==a.host&&(a.port||b)==b&&D(a.path,"/plugins/")?!0:!1},ae=function(a){function b(l){var k=l.hostname||"",w=
  77. 0<=k.indexOf("]");k=k.split(w?"]":":")[0].toLowerCase();w&&(k+="]");w=(l.protocol||"").toLowerCase();w=1*l.port||("http:"==w?80:"https:"==w?443:"");l=l.pathname||"";D(l,"/")||(l="/"+l);return[k,""+w,l]}var c=M.createElement("a");c.href=M.location.href;var d=(c.protocol||"").toLowerCase(),e=b(c),g=c.search||"",ca=d+"//"+e[0]+(e[1]?":"+e[1]:"");D(a,"//")?a=d+a:D(a,"/")?a=ca+a:!a||D(a,"?")?a=ca+e[2]+(a||g):0>a.split("/")[0].indexOf(":")&&(a=ca+e[2].substring(0,e[2].lastIndexOf("/"))+"/"+a);c.href=a;
  78. d=b(c);return{protocol:(c.protocol||"").toLowerCase(),host:d[0],port:d[1],path:d[2],query:c.search||"",url:a||""}};var Z={ga:function(){Z.f=[]}};Z.ga();Z.D=function(a){var b=Z.J.apply(Z,arguments);b=Z.f.concat(b);for(Z.f=[];0<b.length&&!Z.v(b[0])&&!(b.shift(),0<Z.f.length););Z.f=Z.f.concat(b)};Z.J=function(a){for(var b=[],c=0;c<arguments.length;c++)try{var d=new sc(arguments[c]);d.g?C(d.a[0],d.a[1]):(d.i&&(d.ha=y(d.c,d.a[0],d.X,d.W)),b.push(d))}catch(e){}return b};
  79. Z.v=function(a){try{if(a.u)a.u.call(O,N.j("t0"));else{var b=a.c==gb?N:N.j(a.c);if(a.A){if("t0"==a.c&&(b=N.create.apply(N,a.a),null===b))return!0}else if(a.ba)N.remove(a.c);else if(b)if(a.i){if(a.ha&&(a.ha=y(a.c,a.a[0],a.X,a.W)),!u(a.a[0],b,a.W))return!0}else if(a.K){var c=a.C,d=a.a,e=b.plugins_.get(a.K);e[c].apply(e,d)}else b[a.C].apply(b,a.a)}}catch(g){}};var N=function(a){J(1);Z.D.apply(Z,[arguments])};N.h={};N.P=[];N.L=0;N.ya=0;N.answer=42;var uc=[Na,W,V];N.create=function(a){var b=za(uc,[].slice.call(arguments));b[V]||(b[V]="t0");var c=""+b[V];if(N.h[c])return N.h[c];if(da(b))return null;b=new pc(b);N.h[c]=b;N.P.push(b);return b};N.remove=function(a){for(var b=0;b<N.P.length;b++)if(N.P[b].get(V)==a){N.P.splice(b,1);N.h[a]=null;break}};N.j=function(a){return N.h[a]};N.getAll=function(){return N.P.slice(0)};
  80. N.N=function(){"ga"!=gb&&J(49);var a=O[gb];if(!a||42!=a.answer){N.L=a&&a.l;N.ya=1*new Date;N.loaded=!0;var b=O[gb]=N;X("create",b,b.create);X("remove",b,b.remove);X("getByName",b,b.j,5);X("getAll",b,b.getAll,6);b=pc.prototype;X("get",b,b.get,7);X("set",b,b.set,4);X("send",b,b.send);X("requireSync",b,b.ma);b=Ya.prototype;X("get",b,b.get);X("set",b,b.set);if("https:"!=M.location.protocol&&!Ba){a:{b=M.getElementsByTagName("script");for(var c=0;c<b.length&&100>c;c++){var d=b[c].src;if(d&&0==d.indexOf(bd(!0)+
  81. "/analytics")){b=!0;break a}}b=!1}b&&(Ba=!0)}(O.gaplugins=O.gaplugins||{}).Linker=Dc;b=Dc.prototype;C("linker",Dc);X("decorate",b,b.ca,20);X("autoLink",b,b.S,25);C("displayfeatures",fd);C("adfeatures",fd);a=a&&a.q;ka(a)?Z.D.apply(N,a):J(50)}};N.da=function(){for(var a=N.getAll(),b=0;b<a.length;b++)a[b].get(V)};var te=N.N,we=O[gb];we&&we.r?te():z(te);z(function(){Z.D(["provide","render",ua])});})(window);
  82.  
  83. </script>
  84. <script>
  85.  
  86. // Copyright 2012 Google Inc. All rights reserved.
  87. (function(){
  88.  
  89. var data = {
  90. "resource": {
  91. "version":"1",
  92.  
  93. "macros":[],
  94. "tags":[],
  95. "predicates":[],
  96. "rules":[]
  97. },
  98. "runtime":[
  99. [],[]
  100. ]
  101.  
  102.  
  103.  
  104. };
  105. var aa,ba=this||self,da=/^[\w+/_-]+[=]{0,2}$/,ea=null;var fa=function(){},ha=function(a){return"function"==typeof a},ia=function(a){return"string"==typeof a},ja=function(a){return"number"==typeof a&&!isNaN(a)},ka=function(a){return"[object Array]"==Object.prototype.toString.call(Object(a))},la=function(a,b){if(Array.prototype.indexOf){var c=a.indexOf(b);return"number"==typeof c?c:-1}for(var d=0;d<a.length;d++)if(a[d]===b)return d;return-1},ma=function(a,b){if(a&&ka(a))for(var c=0;c<a.length;c++)if(a[c]&&b(a[c]))return a[c]},oa=function(a,b){if(!ja(a)||
  106. !ja(b)||a>b)a=0,b=2147483647;return Math.floor(Math.random()*(b-a+1)+a)},qa=function(a,b){for(var c=new pa,d=0;d<a.length;d++)c.set(a[d],!0);for(var e=0;e<b.length;e++)if(c.get(b[e]))return!0;return!1},ra=function(a,b){for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b(c,a[c])},sa=function(a){return Math.round(Number(a))||0},ta=function(a){return"false"==String(a).toLowerCase()?!1:!!a},ua=function(a){var b=[];if(ka(a))for(var c=0;c<a.length;c++)b.push(String(a[c]));return b},va=function(a){return a?
  107. a.replace(/^\s+|\s+$/g,""):""},wa=function(){return(new Date).getTime()},pa=function(){this.prefix="gtm.";this.values={}};pa.prototype.set=function(a,b){this.values[this.prefix+a]=b};pa.prototype.get=function(a){return this.values[this.prefix+a]};pa.prototype.contains=function(a){return void 0!==this.get(a)};
  108. var xa=function(a,b,c){return a&&a.hasOwnProperty(b)?a[b]:c},ya=function(a){var b=!1;return function(){if(!b)try{a()}catch(c){}b=!0}},za=function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])},Aa=function(a){for(var b in a)if(a.hasOwnProperty(b))return!0;return!1},Da=function(a,b){for(var c=[],d=0;d<a.length;d++)c.push(a[d]),c.push.apply(c,b[a[d]]||[]);return c};/*
  109. jQuery v1.9.1 (c) 2005, 2012 jQuery Foundation, Inc. jquery.org/license. */
  110. var Ea=/\[object (Boolean|Number|String|Function|Array|Date|RegExp)\]/,Fa=function(a){if(null==a)return String(a);var b=Ea.exec(Object.prototype.toString.call(Object(a)));return b?b[1].toLowerCase():"object"},Ga=function(a,b){return Object.prototype.hasOwnProperty.call(Object(a),b)},Ha=function(a){if(!a||"object"!=Fa(a)||a.nodeType||a==a.window)return!1;try{if(a.constructor&&!Ga(a,"constructor")&&!Ga(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}for(var b in a);return void 0===
  111. b||Ga(a,b)},f=function(a,b){var c=b||("array"==Fa(a)?[]:{}),d;for(d in a)if(Ga(a,d)){var e=a[d];"array"==Fa(e)?("array"!=Fa(c[d])&&(c[d]=[]),c[d]=f(e,c[d])):Ha(e)?(Ha(c[d])||(c[d]={}),c[d]=f(e,c[d])):c[d]=e}return c};var u=window,C=document,Ia=navigator,Ja=C.currentScript&&C.currentScript.src,Ka=function(a,b){var c=u[a];u[a]=void 0===c?b:c;return u[a]},La=function(a,b){b&&(a.addEventListener?a.onload=b:a.onreadystatechange=function(){a.readyState in{loaded:1,complete:1}&&(a.onreadystatechange=null,b())})},Ma=function(a,b,c){var d=C.createElement("script");d.type="text/javascript";d.async=!0;d.src=a;La(d,b);c&&(d.onerror=c);var e;if(null===ea)b:{var g=ba.document,h=g.querySelector&&g.querySelector("script[nonce]");
  112. if(h){var k=h.nonce||h.getAttribute("nonce");if(k&&da.test(k)){ea=k;break b}}ea=""}e=ea;e&&d.setAttribute("nonce",e);var l=C.getElementsByTagName("script")[0]||C.body||C.head;l.parentNode.insertBefore(d,l);return d},Na=function(){if(Ja){var a=Ja.toLowerCase();if(0===a.indexOf("https://"))return 2;if(0===a.indexOf("http://"))return 3}return 1},Oa=function(a,b){var c=C.createElement("iframe");c.height="0";c.width="0";c.style.display="none";c.style.visibility="hidden";var d=C.body&&C.body.lastChild||
  113. C.body||C.head;d.parentNode.insertBefore(c,d);La(c,b);void 0!==a&&(c.src=a);return c},Pa=function(a,b,c){var d=new Image(1,1);d.onload=function(){d.onload=null;b&&b()};d.onerror=function(){d.onerror=null;c&&c()};d.src=a;return d},Qa=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent&&a.attachEvent("on"+b,c)},Ra=function(a,b,c){a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent&&a.detachEvent("on"+b,c)},D=function(a){u.setTimeout(a,0)},Sa=function(a,b){return a&&
  114. b&&a.attributes&&a.attributes[b]?a.attributes[b].value:null},Ta=function(a){var b=a.innerText||a.textContent||"";b&&" "!=b&&(b=b.replace(/^[\s\xa0]+|[\s\xa0]+$/g,""));b&&(b=b.replace(/(\xa0+|\s{2,}|\n|\r\t)/g," "));return b},Ua=function(a){var b=C.createElement("div");b.innerHTML="A<div>"+a+"</div>";b=b.lastChild;for(var c=[];b.firstChild;)c.push(b.removeChild(b.firstChild));return c},Ya=function(a,b,c){c=c||100;for(var d={},e=0;e<b.length;e++)d[b[e]]=!0;for(var g=a,h=0;g&&h<=c;h++){if(d[String(g.tagName).toLowerCase()])return g;
  115. g=g.parentElement}return null},Za=function(a,b){var c=a[b];c&&"string"===typeof c.animVal&&(c=c.animVal);return c};var $a=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;var ab={},bb=function(a,b){ab[a]=ab[a]||[];ab[a][b]=!0},cb=function(a){for(var b=[],c=ab[a]||[],d=0;d<c.length;d++)c[d]&&(b[Math.floor(d/6)]^=1<<d%6);for(var e=0;e<b.length;e++)b[e]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".charAt(b[e]||0);return b.join("")};var db=/:[0-9]+$/,eb=function(a,b,c){for(var d=a.split("&"),e=0;e<d.length;e++){var g=d[e].split("=");if(decodeURIComponent(g[0]).replace(/\+/g," ")===b){var h=g.slice(1).join("=");return c?h:decodeURIComponent(h).replace(/\+/g," ")}}},hb=function(a,b,c,d,e){b&&(b=String(b).toLowerCase());if("protocol"===b||"port"===b)a.protocol=fb(a.protocol)||fb(u.location.protocol);"port"===b?a.port=String(Number(a.hostname?a.port:u.location.port)||("http"==a.protocol?80:"https"==a.protocol?443:"")):"host"===b&&
  116. (a.hostname=(a.hostname||u.location.hostname).replace(db,"").toLowerCase());var g=b,h,k=fb(a.protocol);g&&(g=String(g).toLowerCase());switch(g){case "url_no_fragment":h=gb(a);break;case "protocol":h=k;break;case "host":h=a.hostname.replace(db,"").toLowerCase();if(c){var l=/^www\d*\./.exec(h);l&&l[0]&&(h=h.substr(l[0].length))}break;case "port":h=String(Number(a.port)||("http"==k?80:"https"==k?443:""));break;case "path":a.pathname||a.hostname||bb("TAGGING",1);h="/"==a.pathname.substr(0,1)?a.pathname:
  117. "/"+a.pathname;var m=h.split("/");0<=la(d||[],m[m.length-1])&&(m[m.length-1]="");h=m.join("/");break;case "query":h=a.search.replace("?","");e&&(h=eb(h,e,void 0));break;case "extension":var n=a.pathname.split(".");h=1<n.length?n[n.length-1]:"";h=h.split("/")[0];break;case "fragment":h=a.hash.replace("#","");break;default:h=a&&a.href}return h},fb=function(a){return a?a.replace(":","").toLowerCase():""},gb=function(a){var b="";if(a&&a.href){var c=a.href.indexOf("#");b=0>c?a.href:a.href.substr(0,c)}return b},
  118. jb=function(a){var b=C.createElement("a");a&&(b.href=a);var c=b.pathname;"/"!==c[0]&&(a||bb("TAGGING",1),c="/"+c);var d=b.hostname.replace(db,"");return{href:b.href,protocol:b.protocol,host:b.host,hostname:d,pathname:c,search:b.search,hash:b.hash,port:b.port}};var kb=function(a,b,c){for(var d=[],e=String(b||document.cookie).split(";"),g=0;g<e.length;g++){var h=e[g].split("="),k=h[0].replace(/^\s*|\s*$/g,"");if(k&&k==a){var l=h.slice(1).join("=").replace(/^\s*|\s*$/g,"");l&&c&&(l=decodeURIComponent(l));d.push(l)}}return d},nb=function(a,b,c,d){var e=lb(a,d);if(1===e.length)return e[0].id;if(0!==e.length){e=mb(e,function(g){return g.Ib},b);if(1===e.length)return e[0].id;e=mb(e,function(g){return g.eb},c);return e[0]?e[0].id:void 0}};
  119. function ob(a,b,c){var d=document.cookie;document.cookie=a;var e=document.cookie;return d!=e||void 0!=c&&0<=kb(b,e).indexOf(c)}
  120. var rb=function(a,b,c,d,e,g){d=d||"auto";var h={path:c||"/"};e&&(h.expires=e);"none"!==d&&(h.domain=d);var k;a:{var l=b,m;if(void 0==l)m=a+"=deleted; expires="+(new Date(0)).toUTCString();else{g&&(l=encodeURIComponent(l));var n=l;n&&1200<n.length&&(n=n.substring(0,1200));l=n;m=a+"="+l}var p=void 0,t=void 0,q;for(q in h)if(h.hasOwnProperty(q)){var r=h[q];if(null!=r)switch(q){case "secure":r&&(m+="; secure");break;case "domain":p=r;break;default:"path"==q&&(t=r),"expires"==q&&r instanceof Date&&(r=
  121. r.toUTCString()),m+="; "+q+"="+r}}if("auto"===p){for(var v=pb(),w=0;w<v.length;++w){var x="none"!=v[w]?v[w]:void 0;if(!qb(x,t)&&ob(m+(x?"; domain="+x:""),a,l)){k=!0;break a}}k=!1}else p&&"none"!=p&&(m+="; domain="+p),k=!qb(p,t)&&ob(m,a,l)}return k};function mb(a,b,c){for(var d=[],e=[],g,h=0;h<a.length;h++){var k=a[h],l=b(k);l===c?d.push(k):void 0===g||l<g?(e=[k],g=l):l===g&&e.push(k)}return 0<d.length?d:e}
  122. function lb(a,b){for(var c=[],d=kb(a),e=0;e<d.length;e++){var g=d[e].split("."),h=g.shift();if(!b||-1!==b.indexOf(h)){var k=g.shift();k&&(k=k.split("-"),c.push({id:g.join("."),Ib:1*k[0]||1,eb:1*k[1]||1}))}}return c}
  123. var tb=/^(www\.)?google(\.com?)?(\.[a-z]{2})?$/,ub=/(^|\.)doubleclick\.net$/i,qb=function(a,b){return ub.test(document.location.hostname)||"/"===b&&tb.test(a)},pb=function(){var a=[],b=document.location.hostname.split(".");if(4===b.length){var c=b[b.length-1];if(parseInt(c,10).toString()===c)return["none"]}for(var d=b.length-2;0<=d;d--)a.push(b.slice(d).join("."));a.push("none");return a};var Qb=[],Rb=[],Sb=[],Tb=[],Ub=[],Vb={},Wb,Yb,Zb,$b=function(a,b){var c={};c["function"]="__"+a;for(var d in b)b.hasOwnProperty(d)&&(c["vtp_"+d]=b[d]);return c},ac=function(a,b){var c=a["function"];if(!c)throw Error("Error: No function name given for function call.");var d=!!Vb[c],e={},g;for(g in a)a.hasOwnProperty(g)&&0===g.indexOf("vtp_")&&(e[d?g:g.substr(4)]=a[g]);return d?Vb[c](e):(void 0)(c,e,b)},cc=function(a,b,c){c=c||[];var d={},e;for(e in a)a.hasOwnProperty(e)&&(d[e]=bc(a[e],b,c));return d},
  124. dc=function(a){var b=a["function"];if(!b)throw"Error: No function name given for function call.";var c=Vb[b];return c?c.priorityOverride||0:0},bc=function(a,b,c){if(ka(a)){var d;switch(a[0]){case "function_id":return a[1];case "list":d=[];for(var e=1;e<a.length;e++)d.push(bc(a[e],b,c));return d;case "macro":var g=a[1];if(c[g])return;var h=Qb[g];if(!h||b.Cc(h))return;c[g]=!0;try{var k=cc(h,b,c);k.vtp_gtmEventId=b.id;d=ac(k,b);Zb&&(d=Zb.Af(d,k))}catch(w){b.Yd&&b.Yd(w,Number(g)),d=!1}c[g]=!1;return d;
  125. case "map":d={};for(var l=1;l<a.length;l+=2)d[bc(a[l],b,c)]=bc(a[l+1],b,c);return d;case "template":d=[];for(var m=!1,n=1;n<a.length;n++){var p=bc(a[n],b,c);Yb&&(m=m||p===Yb.wb);d.push(p)}return Yb&&m?Yb.Df(d):d.join("");case "escape":d=bc(a[1],b,c);if(Yb&&ka(a[1])&&"macro"===a[1][0]&&Yb.eg(a))return Yb.pg(d);d=String(d);for(var t=2;t<a.length;t++)vb[a[t]]&&(d=vb[a[t]](d));return d;case "tag":var q=a[1];if(!Tb[q])throw Error("Unable to resolve tag reference "+q+".");return d={Kd:a[2],index:q};case "zb":var r=
  126. {arg0:a[2],arg1:a[3],ignore_case:a[5]};r["function"]=a[1];var v=ec(r,b,c);a[4]&&(v=!v);return v;default:throw Error("Attempting to expand unknown Value type: "+a[0]+".");}}return a},ec=function(a,b,c){try{return Wb(cc(a,b,c))}catch(d){JSON.stringify(a)}return null};var fc=function(){var a=function(b){return{toString:function(){return b}}};return{cd:a("convert_case_to"),dd:a("convert_false_to"),ed:a("convert_null_to"),fd:a("convert_true_to"),gd:a("convert_undefined_to"),Yg:a("debug_mode_metadata"),ja:a("function"),Pe:a("instance_name"),Qe:a("live_only"),Re:a("malware_disabled"),Se:a("metadata"),$g:a("original_vendor_template_id"),Te:a("once_per_event"),zd:a("once_per_load"),Ad:a("setup_tags"),Bd:a("tag_id"),Cd:a("teardown_tags")}}();var gc=null,jc=function(a){function b(p){for(var t=0;t<p.length;t++)d[p[t]]=!0}var c=[],d=[];gc=hc(a);for(var e=0;e<Rb.length;e++){var g=Rb[e],h=ic(g);if(h){for(var k=g.add||[],l=0;l<k.length;l++)c[k[l]]=!0;b(g.block||[])}else null===h&&b(g.block||[])}for(var m=[],n=0;n<Tb.length;n++)c[n]&&!d[n]&&(m[n]=!0);return m},ic=function(a){for(var b=a["if"]||[],c=0;c<b.length;c++){var d=gc(b[c]);if(!d)return null===d?null:!1}for(var e=a.unless||[],g=0;g<e.length;g++){var h=gc(e[g]);if(null===h)return null;
  127. if(h)return!1}return!0},hc=function(a){var b=[];return function(c){void 0===b[c]&&(b[c]=ec(Sb[c],a));return b[c]}};/*
  128. Copyright (c) 2014 Derek Brans, MIT license https://github.com/krux/postscribe/blob/master/LICENSE. Portions derived from simplehtmlparser, which is licensed under the Apache License, Version 2.0 */
  129. for(var mc="floor ceil round max min abs pow sqrt".split(" "),nc=0;nc<mc.length;nc++)Math.hasOwnProperty(mc[nc]);var G={$b:"event_callback",Ma:"event_timeout",T:"gtag.config",M:"allow_ad_personalization_signals",O:"cookie_expires",La:"cookie_update",wa:"session_duration"};
  130. G.Yb="page_view",G.te="user_engagement",G.ue="allow_custom_scripts",G.ve="allow_display_features",G.we="allow_enhanced_conversions",G.mb="client_id",G.N="cookie_domain",G.nb="cookie_name",G.ra="cookie_path",G.sa="currency",G.ob="custom_params",G.ze="custom_map",G.fc="groups",G.Na="language",G.ye="country",G.Zg="non_interaction",G.rb="page_location",G.sb="page_referrer",G.sd="page_title",G.Ra="send_page_view",G.va="send_to",G.hc="session_engaged",G.tb="session_id",G.ic="session_number",G.Ne="tracking_id",
  131. G.vb="user_properties",G.fa="linker",G.Oa="accept_incoming",G.B="domains",G.Qa="url_position",G.Pa="decorate_forms",G.vd="phone_conversion_number",G.td="phone_conversion_callback",G.ud="phone_conversion_css_class",G.wd="phone_conversion_options",G.hd="aw_remarketing",G.jd="aw_remarketing_only",G.ia="value",G.Le="quantity",G.Ce="affiliation",G.Ge="tax",G.Fe="shipping",G.Zb="list_name",G.rd="checkout_step",G.qd="checkout_option",G.De="coupon",G.Ee="promotions",G.Sa="transaction_id",G.X="user_id",G.Ka=
  132. "conversion_linker",G.Ja="conversion_cookie_prefix",G.P="cookie_prefix",G.W="items",G.nd="aw_merchant_id",G.ld="aw_feed_country",G.md="aw_feed_language",G.kd="discount",G.pd="disable_merchant_reported_purchases",G.gc="new_customer",G.od="customer_lifetime_value",G.Be="dc_natural_search",G.Ae="dc_custom_params",G.Oe="trip_type",G.Ke="passengers",G.Ie="method",G.Me="search_term",G.xe="content_type",G.Je="optimize_id",G.He="experiments",G.qb="google_signals",G.cc="google_tld",G.ub="update",G.bc="firebase_id",
  133. G.pb="ga_restrict_domain",G.ac="event_settings",G.xd=[G.M,G.N,G.O,G.nb,G.ra,G.P,G.La,G.ob,G.$b,G.ac,G.Ma,G.bc,G.pb,G.qb,G.cc,G.fc,G.fa,G.va,G.Ra,G.wa,G.ub,G.X,G.vb],G.bd=[G.va,G.hd,G.jd,G.ob,G.Ra,G.Na,G.ia,G.sa,G.Sa,G.X,G.Ka,G.Ja,G.P,G.rb,G.sb,G.vd,G.td,G.ud,G.wd,G.W,G.nd,G.ld,G.md,G.kd,G.pd,G.gc,G.od,G.M,G.ub,G.bc];var Cc=/[A-Z]+/,Dc=/\s/,Ec=function(a){if(ia(a)&&(a=va(a),!Dc.test(a))){var b=a.indexOf("-");if(!(0>b)){var c=a.substring(0,b);if(Cc.test(c)){for(var d=a.substring(b+1).split("/"),e=0;e<d.length;e++)if(!d[e])return;return{id:a,prefix:c,containerId:c+"-"+d[0],ba:d}}}}},Gc=function(a){for(var b={},c=0;c<a.length;++c){var d=Ec(a[c]);d&&(b[d.id]=d)}Fc(b);var e=[];ra(b,function(g,h){e.push(h)});return e};
  134. function Fc(a){var b=[],c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];"AW"===d.prefix&&d.ba[1]&&b.push(d.containerId)}for(var e=0;e<b.length;++e)delete a[b[e]]};var Hc={},Ic=null,Jc=Math.random();Hc.i="UA-42620757-2";Hc.Ab="874";var Kc={__cl:!0,__ecl:!0,__ehl:!0,__evl:!0,__fal:!0,__fil:!0,__fsl:!0,__hl:!0,__jel:!0,__lcl:!0,__sdl:!0,__tl:!0,__ytl:!0,__paused:!0},Lc="www.googletagmanager.com/gtm.js";Lc="www.googletagmanager.com/gtag/js";var Mc=Lc,Nc=null,Oc=null,Pc=null,Qc="//www.googletagmanager.com/a?id="+Hc.i+"&cv=1",Rc={},Sc={},Tc=function(){var a=Ic.sequence||0;Ic.sequence=a+1;return a};
  135. var Uc=function(){return"&tc="+Tb.filter(function(a){return a}).length},cd=function(){Vc&&(u.clearTimeout(Vc),Vc=void 0);void 0===Wc||Xc[Wc]&&!Yc||(Zc[Wc]||$c.gg()||0>=ad--?(bb("GTM",1),Zc[Wc]=!0):($c.Bg(),Pa(bd()),Xc[Wc]=!0,Yc=""))},bd=function(){var a=Wc;if(void 0===a)return"";var b=cb("GTM"),c=cb("TAGGING");return[dd,Xc[a]?"":"&es=1",ed[a],b?"&u="+b:"",c?"&ut="+c:"",Uc(),Yc,"&z=0"].join("")},fd=function(){return[Qc,"&v=3&t=t","&pid="+oa(),"&rv="+Hc.Ab].join("")},gd="0.005000">
  136. Math.random(),dd=fd(),hd=function(){dd=fd()},Xc={},Yc="",Wc=void 0,ed={},Zc={},Vc=void 0,$c=function(a,b){var c=0,d=0;return{gg:function(){if(c<a)return!1;wa()-d>=b&&(c=0);return c>=a},Bg:function(){wa()-d>=b&&(c=0);c++;d=wa()}}}(2,1E3),ad=1E3,id=function(a,b){if(gd&&!Zc[a]&&Wc!==a){cd();Wc=a;Yc="";var c;c=0===b.indexOf("gtm.")?encodeURIComponent(b):"*";ed[a]="&e="+c+"&eid="+a;Vc||(Vc=u.setTimeout(cd,500))}},jd=function(a,b,c){if(gd&&!Zc[a]&&b){a!==Wc&&(cd(),Wc=a);var d=String(b[fc.ja]||"").replace(/_/g,
  137. "");0===d.indexOf("cvt")&&(d="cvt");var e=c+d;Yc=Yc?Yc+"."+e:"&tr="+e;Vc||(Vc=u.setTimeout(cd,500));2022<=bd().length&&cd()}};var kd={},ld=new pa,md={},nd={},rd={name:"dataLayer",set:function(a,b){f(od(a,b),md);pd()},get:function(a){return qd(a,2)},reset:function(){ld=new pa;md={};pd()}},qd=function(a,b){if(2!=b){var c=ld.get(a);if(gd){var d=sd(a);c!==d&&bb("GTM",5)}return c}return sd(a)},sd=function(a,b,c){var d=a.split("."),e=!1,g=void 0;var h=function(k,l){for(var m=0;void 0!==k&&m<d.length;m++){if(null===k)return!1;k=k[d[m]]}return void 0!==k||1<m?k:l.length?h(td(l.pop()),l):ud(d)};
  138. e=!0;g=h(md.eventModel,[b,c]);return e?g:ud(d)},ud=function(a){for(var b=md,c=0;c<a.length;c++){if(null===b)return!1;if(void 0===b)break;b=b[a[c]]}return b};
  139. var vd=function(a,b){return sd(a,b,void 0)},td=function(a){if(a){var b=ud(["gtag","targets",a]);return Ha(b)?b:void 0}},wd=function(a,b){function c(g){g&&ra(g,function(h){d[h]=null})}var d={};c(md);delete d.eventModel;c(td(a));c(td(b));c(md.eventModel);var e=[];ra(d,function(g){e.push(g)});return e};
  140. var xd=function(a,b){nd.hasOwnProperty(a)||(ld.set(a,b),f(od(a,b),md),pd())},od=function(a,b){for(var c={},d=c,e=a.split("."),g=0;g<e.length-1;g++)d=d[e[g]]={};d[e[e.length-1]]=b;return c},pd=function(a){ra(nd,function(b,c){ld.set(b,c);f(od(b,void 0),md);f(od(b,c),md);a&&delete nd[b]})},yd=function(a,b,c){kd[a]=kd[a]||{};var d=1!==c?sd(b):ld.get(b);"array"===Fa(d)||"object"===Fa(d)?kd[a][b]=f(d):kd[a][b]=d},zd=function(a,b){if(kd[a])return kd[a][b]};var Ad=function(){var a=!1;return a};var H=function(a,b,c,d){return(2===Bd()||d||"http:"!=u.location.protocol?a:b)+c},Bd=function(){var a=Na(),b;if(1===a)a:{var c=Mc;c=c.toLowerCase();for(var d="https://"+c,e="http://"+c,g=1,h=C.getElementsByTagName("script"),k=0;k<h.length&&100>k;k++){var l=h[k].src;if(l){l=l.toLowerCase();if(0===l.indexOf(e)){b=3;break a}1===g&&0===l.indexOf(d)&&(g=2)}}b=g}else b=a;return b};
  141. var Dd=function(a,b,c){if(u[a.functionName])return b.Kc&&D(b.Kc),u[a.functionName];var d=Cd();u[a.functionName]=d;if(a.oc)for(var e=0;e<a.oc.length;e++)u[a.oc[e]]=u[a.oc[e]]||Cd();a.Mb&&void 0===u[a.Mb]&&(u[a.Mb]=c);Ma(H("https://","http://",a.me),b.Kc,b.kg);return d},Cd=function(){var a=function(){a.q=a.q||[];a.q.push(arguments)};return a},Ed={functionName:"_googWcmImpl",Mb:"_googWcmAk",me:"www.gstatic.com/wcm/loader.js"},Fd={functionName:"_gaPhoneImpl",Mb:"ga_wpid",me:"www.gstatic.com/gaphone/loader.js"},
  142. Gd=function(a,b,c,d){if(c){d=d||{};var e=Dd(Ed,d,a),g={ak:a,cl:b};void 0===d.cb&&(g.autoreplace=c);e(2,d.cb,g,c,0,new Date,d.options)}},Hd=function(a,b,c){if(b){c=c||{};var d=Dd(Fd,c,a),e={};void 0!==c.cb?e.receiver=c.cb:e.replace=b;e.ga_wpid=a;e.destination=b;d(2,new Date,e)}},Id=function(a){if(Ad()){}else{if(ia(a)){var b=Ec(a);if(!b)return;a=b}var c=function(p){return sd(p,a.containerId,a.id)},d=c(G.vd),e;if(d){e=
  143. ka(d)?d:[d];var g=c(G.td),h=c(G.ud),k=c(G.wd),l=g||h,m=1;"UA"===a.prefix&&(m=5);for(var n=0;n<e.length;n++)n<m&&("AW"===a.prefix&&a.ba[1]?Gd(a.ba[0],a.ba[1],e[n],{cb:l,options:k}):"UA"===a.prefix&&Hd(a.containerId,e[n],{cb:l}))}}};var Ld=new RegExp(/^(.*\.)?(google|youtube|blogger|withgoogle)(\.com?)?(\.[a-z]{2})?\.?$/),Md={cl:["ecl"],customPixels:["nonGooglePixels"],ecl:["cl"],ehl:["hl"],hl:["ehl"],html:["customScripts","customPixels","nonGooglePixels","nonGoogleScripts","nonGoogleIframes"],customScripts:["html","customPixels","nonGooglePixels","nonGoogleScripts","nonGoogleIframes"],nonGooglePixels:[],nonGoogleScripts:["nonGooglePixels"],nonGoogleIframes:["nonGooglePixels"]},Nd={cl:["ecl"],customPixels:["customScripts","html"],
  144. ecl:["cl"],ehl:["hl"],hl:["ehl"],html:["customScripts"],customScripts:["html"],nonGooglePixels:["customPixels","customScripts","html","nonGoogleScripts","nonGoogleIframes"],nonGoogleScripts:["customScripts","html"],nonGoogleIframes:["customScripts","html","nonGoogleScripts"]},Od="google customPixels customScripts html nonGooglePixels nonGoogleScripts nonGoogleIframes".split(" ");
  145. var Qd=function(a){var b=qd("gtm.whitelist");b&&bb("GTM",9);b="google gtagfl lcl zone oid op".split(" ");var c=b&&Da(ua(b),Md),d=qd("gtm.blacklist");d||(d=qd("tagTypeBlacklist"))&&bb("GTM",3);
  146. d?bb("GTM",8):d=[];Pd()&&(d=ua(d),d.push("nonGooglePixels","nonGoogleScripts"));0<=la(ua(d),"google")&&bb("GTM",2);var e=d&&Da(ua(d),Nd),g={};return function(h){var k=h&&h[fc.ja];if(!k||"string"!=typeof k)return!0;k=k.replace(/^_*/,"");if(void 0!==g[k])return g[k];var l=Sc[k]||[],m=a(k);if(b){var n;if(n=m)a:{if(0>la(c,k))if(l&&0<l.length)for(var p=0;p<l.length;p++){if(0>
  147. la(c,l[p])){bb("GTM",11);n=!1;break a}}else{n=!1;break a}n=!0}m=n}var t=!1;if(d){var q=0<=la(e,k);if(q)t=q;else{var r=qa(e,l||[]);r&&bb("GTM",10);t=r}}var v=!m||t;v||!(0<=la(l,"sandboxedScripts"))||c&&-1!==la(c,"sandboxedScripts")||(v=qa(e,Od));return g[k]=v}},Pd=function(){return Ld.test(u.location&&u.location.hostname)};var Rd={Af:function(a,b){b[fc.cd]&&"string"===typeof a&&(a=1==b[fc.cd]?a.toLowerCase():a.toUpperCase());b.hasOwnProperty(fc.ed)&&null===a&&(a=b[fc.ed]);b.hasOwnProperty(fc.gd)&&void 0===a&&(a=b[fc.gd]);b.hasOwnProperty(fc.fd)&&!0===a&&(a=b[fc.fd]);b.hasOwnProperty(fc.dd)&&!1===a&&(a=b[fc.dd]);return a}};var Sd={active:!0,isWhitelisted:function(){return!0}},Td=function(a){var b=Ic.zones;!b&&a&&(b=Ic.zones=a());return b};var Ud=!1,Vd=0,Wd=[];function Xd(a){if(!Ud){var b=C.createEventObject,c="complete"==C.readyState,d="interactive"==C.readyState;if(!a||"readystatechange"!=a.type||c||!b&&d){Ud=!0;for(var e=0;e<Wd.length;e++)D(Wd[e])}Wd.push=function(){for(var g=0;g<arguments.length;g++)D(arguments[g]);return 0}}}function Yd(){if(!Ud&&140>Vd){Vd++;try{C.documentElement.doScroll("left"),Xd()}catch(a){u.setTimeout(Yd,50)}}}var Zd=function(a){Ud?a():Wd.push(a)};var $d={},ae={},be=function(a,b,c,d){if(!ae[a]||Kc[b]||"__zone"===b)return-1;var e={};Ha(d)&&(e=f(d,e));e.id=c;e.status="timeout";return ae[a].tags.push(e)-1},ce=function(a,b,c,d){if(ae[a]){var e=ae[a].tags[b];e&&(e.status=c,e.executionTime=d)}};function de(a){for(var b=$d[a]||[],c=0;c<b.length;c++)b[c]();$d[a]={push:function(d){d(Hc.i,ae[a])}}}
  148. var ge=function(a,b,c){ae[a]={tags:[]};ha(b)&&ee(a,b);c&&u.setTimeout(function(){return de(a)},Number(c));return fe(a)},ee=function(a,b){$d[a]=$d[a]||[];$d[a].push(ya(function(){return D(function(){b(Hc.i,ae[a])})}))};function fe(a){var b=0,c=0,d=!1;return{add:function(){c++;return ya(function(){b++;d&&b>=c&&de(a)})},hf:function(){d=!0;b>=c&&de(a)}}};var he=function(){function a(d){return!ja(d)||0>d?0:d}if(!Ic._li&&u.performance&&u.performance.timing){var b=u.performance.timing.navigationStart,c=ja(rd.get("gtm.start"))?rd.get("gtm.start"):0;Ic._li={cst:a(c-b),cbt:a(Oc-b)}}};var le=!1,me=function(){return u.GoogleAnalyticsObject&&u[u.GoogleAnalyticsObject]},ne=!1;
  149. var oe=function(a){u.GoogleAnalyticsObject||(u.GoogleAnalyticsObject=a||"ga");var b=u.GoogleAnalyticsObject;if(u[b])u.hasOwnProperty(b)||bb("GTM",12);else{var c=function(){c.q=c.q||[];c.q.push(arguments)};c.l=Number(new Date);u[b]=c}he();return u[b]},pe=function(a,b,c,d){b=String(b).replace(/\s+/g,"").split(",");var e=me();e(a+"require","linker");e(a+"linker:autoLink",b,c,d)};
  150. var re=function(){},qe=function(){return u.GoogleAnalyticsObject||"ga"};var ye=function(a){};function xe(a,b){a.containerId=Hc.i;var c={type:"GENERIC",value:a};b.length&&(c.trace=b);return c};function ze(a,b,c,d){var e=Tb[a],g=Ae(a,b,c,d);if(!g)return null;var h=bc(e[fc.Ad],c,[]);if(h&&h.length){var k=h[0];g=ze(k.index,{I:g,R:1===k.Kd?b.terminate:g,terminate:b.terminate},c,d)}return g}
  151. function Ae(a,b,c,d){function e(){if(g[fc.Re])k();else{var w=cc(g,c,[]),x=be(c.id,String(g[fc.ja]),Number(g[fc.Bd]),w[fc.Se]),y=!1;w.vtp_gtmOnSuccess=function(){if(!y){y=!0;var A=wa()-B;jd(c.id,Tb[a],"5");ce(c.id,x,"success",A);h()}};w.vtp_gtmOnFailure=function(){if(!y){y=!0;var A=wa()-B;jd(c.id,Tb[a],"6");ce(c.id,x,"failure",A);k()}};w.vtp_gtmTagId=g.tag_id;
  152. w.vtp_gtmEventId=c.id;jd(c.id,g,"1");var z=function(A){var E=wa()-B;ye(A);jd(c.id,g,"7");ce(c.id,x,"exception",E);y||(y=!0,k())};var B=wa();try{ac(w,c)}catch(A){z(A)}}}var g=Tb[a],h=b.I,k=b.R,l=b.terminate;if(c.Cc(g))return null;var m=bc(g[fc.Cd],c,[]);if(m&&m.length){var n=m[0],p=ze(n.index,{I:h,R:k,terminate:l},c,d);if(!p)return null;h=p;k=2===n.Kd?l:p}if(g[fc.zd]||g[fc.Te]){var t=g[fc.zd]?Ub:c.Lg,q=h,r=k;if(!t[a]){e=ya(e);var v=Be(a,t,e);h=v.I;k=v.R}return function(){t[a](q,r)}}return e}
  153. function Be(a,b,c){var d=[],e=[];b[a]=Ce(d,e,c);return{I:function(){b[a]=De;for(var g=0;g<d.length;g++)d[g]()},R:function(){b[a]=Ee;for(var g=0;g<e.length;g++)e[g]()}}}function Ce(a,b,c){return function(d,e){a.push(d);b.push(e);c()}}function De(a){a()}function Ee(a,b){b()};var He=function(a,b){for(var c=[],d=0;d<Tb.length;d++)if(a.ab[d]){var e=Tb[d];var g=b.add();try{var h=ze(d,{I:g,R:g,terminate:g},a,d);h?c.push({qe:d,ee:dc(e),Lf:h}):(Fe(d,a),g())}catch(l){g()}}b.hf();c.sort(Ge);for(var k=0;k<c.length;k++)c[k].Lf();return 0<c.length};function Ge(a,b){var c,d=b.ee,e=a.ee;c=d>e?1:d<e?-1:0;var g;if(0!==c)g=c;else{var h=a.qe,k=b.qe;g=h>k?1:h<k?-1:0}return g}
  154. function Fe(a,b){if(!gd)return;var c=function(d){var e=b.Cc(Tb[d])?"3":"4",g=bc(Tb[d][fc.Ad],b,[]);g&&g.length&&c(g[0].index);jd(b.id,Tb[d],e);var h=bc(Tb[d][fc.Cd],b,[]);h&&h.length&&c(h[0].index)};c(a);}
  155. var Ie=!1,Je=function(a,b,c,d,e){if("gtm.js"==b){if(Ie)return!1;Ie=!0}id(a,b);var g=ge(a,d,e);yd(a,"event",1);yd(a,"ecommerce",1);yd(a,"gtm");var h={id:a,name:b,Cc:Qd(c),ab:[],Lg:[],Yd:function(n){bb("GTM",6);ye(n)}};h.ab=jc(h);var k=He(h,g);"gtm.js"!==b&&"gtm.sync"!==b||re();if(!k)return k;for(var l=0;l<h.ab.length;l++)if(h.ab[l]){var m=
  156. Tb[l];if(m&&!Kc[String(m[fc.ja])])return!0}return!1};var Ke=function(a,b){var c=$b(a,b);Tb.push(c);return Tb.length-1};var Le=function(a,b,c){var d=this;this.eventModel=a;this.targetConfig=b||{};this.globalConfig=c||{};this.getWithConfig=function(e){if(d.eventModel.hasOwnProperty(e))return d.eventModel[e];if(d.targetConfig.hasOwnProperty(e))return d.targetConfig[e];if(d.globalConfig.hasOwnProperty(e))return d.globalConfig[e]}};function Me(){var a=Ic;return a.gcq=a.gcq||new Ne}var Oe=function(a,b){Me().register(a,b)},Pe=function(){this.status=1;this.vc={};this.fe=null;this.Ud=!1},Qe=function(a,b,c,d,e){this.type=a;this.Qg=b;this.na=c||"";this.Cb=d;this.defer=e},Ne=function(){this.se={};this.Pd={};this.Wa=[]},Re=function(a,b){return a.se[b]=a.se[b]||new Pe},Se=function(a,b,c,d){var e=Re(a,d.na).fe;if(e){var g=f(c),h=f(Re(a,d.na).vc),k=f(a.Pd),l=new Le(g,h,k);try{e(b,d.Qg,l)}catch(m){}}};
  157. Ne.prototype.register=function(a,b){3!==Re(this,a).status&&(Re(this,a).fe=b,Re(this,a).status=3,this.flush())};Ne.prototype.push=function(a,b,c,d){var e=Math.floor(wa()/1E3);if(c&&1===Re(this,c).status&&(Re(this,c).status=2,this.push("require",[],c),!Ad())){var g=encodeURIComponent(c);Ma(("http:"!=u.location.protocol?"https:":"http:")+("//www.googletagmanager.com/gtag/js?id="+g+"&l=dataLayer&cx=c"))}this.Wa.push(new Qe(a,e,c,b,d));d||this.flush()};
  158. Ne.prototype.flush=function(a){for(var b=this;this.Wa.length;){var c=this.Wa[0];if(c.defer)c.defer=!1,this.Wa.push(c);else switch(c.type){case "require":if(3!==Re(this,c.na).status&&!a)return;break;case "set":ra(c.Cb[0],function(h,k){b.Pd[h]=k});break;case "config":var d=c.Cb[0],e=!!d[G.ub];delete d[G.ub];var g=Re(this,c.na);e||(g.vc={});g.Ud&&e||Se(this,G.T,d,c);g.Ud=!0;f(d,g.vc);break;case "event":Se(this,c.Cb[1],c.Cb[0],c)}this.Wa.shift()}};var Te={};var Ve=null,We={},Xe={},Ye,Ze=function(a,b){var c={event:a};b&&(c.eventModel=f(b),b[G.$b]&&(c.eventCallback=b[G.$b]),b[G.Ma]&&(c.eventTimeout=b[G.Ma]));return c};
  159. var $e=function(){Ve=Ve||!Ic.gtagRegistered;Ic.gtagRegistered=!0;return Ve},af=function(a){if(void 0===Xe[a.id]){var b;switch(a.prefix){case "UA":b=Ke("gtagua",{trackingId:a.id});break;case "AW":b=Ke("gtagaw",{conversionId:a});break;case "DC":b=Ke("gtagfl",{targetId:a.id});break;case "GF":b=Ke("gtaggf",{conversionId:a});break;case "G":b=Ke("get",{trackingId:a.id,isAutoTag:!0});break;case "HA":b=Ke("gtagha",{conversionId:a});break;default:return}if(!Ye){var c=$b("v",{name:"send_to",dataLayerVersion:2});
  160. Qb.push(c);Ye=["macro",Qb.length-1]}var d={arg0:Ye,arg1:a.id,ignore_case:!1};d[fc.ja]="_lc";Sb.push(d);var e={"if":[Sb.length-1],add:[b]};e["if"]&&(e.add||e.block)&&Rb.push(e);Xe[a.id]=b}},bf=function(a){ra(We,function(b,c){var d=la(c,a);0<=d&&c.splice(d,1)})},cf=ya(function(){}),df=function(a){if(a.containerId!==Hc.i&&"G"!==a.prefix){var b;switch(a.prefix){case "UA":b=14;break;case "AW":b=15;break;case "DC":b=16;break;default:b=17}bb("GTM",b)}};
  161. var ef={config:function(a){var b=a[2]||{};if(2>a.length||!ia(a[1])||!Ha(b))return;var c=Ec(a[1]);if(!c)return;$e()?(af(c),df(c)):cf();bf(c.id);var d=c.id,e=b[G.fc]||"default";e=e.toString().split(",");for(var g=0;g<e.length;g++)We[e[g]]=We[e[g]]||[],We[e[g]].push(d);delete b[G.fc];xd("gtag.targets."+c.id,void 0);xd("gtag.targets."+c.id,f(b));var h={};h[G.va]=c.id;return Ze(G.T,h);},event:function(a){var b=a[1];if(ia(b)&&!(3<a.length)){var c;
  162. if(2<a.length){if(!Ha(a[2]))return;c=a[2]}var d=Ze(b,c);var e;var g=c,h=qd("gtag.fields.send_to",2);ia(h)||(h=G.va);var k=g&&g[h];void 0===k&&(k=qd(h,2),void 0===k&&(k="default"));if(ia(k)||ka(k)){for(var l=k.toString().replace(/\s+/g,"").split(","),m=[],n=0;n<l.length;n++)0<=l[n].indexOf("-")?m.push(l[n]):m=m.concat(We[l[n]]||[]);e=Gc(m)}else e=void 0;var p=e;if(!p)return;var t=$e();t||cf();for(var q=[],r=0;t&&r<p.length;r++){var v=p[r];df(v);q.push(v.id);af(v)}d.eventModel=
  163. d.eventModel||{};0<p.length?d.eventModel[G.va]=q.join():delete d.eventModel[G.va];return d}},js:function(a){if(2==a.length&&a[1].getTime)return{event:"gtm.js","gtm.start":a[1].getTime()}},policy:function(a){if(3===a.length){var b=a[1],c=a[2];Te[b]||(Te[b]=[]);Te[b].push(c)}},set:function(a){var b;2==a.length&&Ha(a[1])?b=f(a[1]):3==a.length&&ia(a[1])&&(b={},b[a[1]]=a[2]);if(b){if($e()){var c=
  164. f(b);Me().push("set",[c])}b._clear=!0;return b}}},ff={policy:!0};var hf=function(a){return gf?C.querySelectorAll(a):null},jf=function(a,b){if(!gf)return null;if(Element.prototype.closest)try{return a.closest(b)}catch(e){return null}var c=Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector,d=a;if(!C.documentElement.contains(d))return null;do{try{if(c.call(d,b))return d}catch(e){break}d=d.parentElement||d.parentNode}while(null!==d&&1===d.nodeType);
  165. return null},kf=!1;if(C.querySelectorAll)try{var lf=C.querySelectorAll(":root");lf&&1==lf.length&&lf[0]==C.documentElement&&(kf=!0)}catch(a){}var gf=kf;var sf=function(a){if(rf(a))return a;this.Tg=a};sf.prototype.Sf=function(){return this.Tg};var rf=function(a){return!a||"object"!==Fa(a)||Ha(a)?!1:"getUntrustedUpdateValue"in a};sf.prototype.getUntrustedUpdateValue=sf.prototype.Sf;var tf=!1,uf=[];function vf(){if(!tf){tf=!0;for(var a=0;a<uf.length;a++)D(uf[a])}}var wf=function(a){tf?D(a):uf.push(a)};var xf=[],yf=!1,zf=function(a){return u["dataLayer"].push(a)},Af=function(a){var b=Ic["dataLayer"],c=b?b.subscribers:1,d=0;return function(){++d===c&&a()}},Cf=function(a){var b=a._clear;ra(a,function(g,h){"_clear"!==g&&(b&&xd(g,void 0),xd(g,h))});Nc||(Nc=a["gtm.start"]);var c=a.event;if(!c)return!1;var d=a["gtm.uniqueEventId"];d||(d=Tc(),a["gtm.uniqueEventId"]=d,xd("gtm.uniqueEventId",d));Pc=c;var e=Bf(a);
  166. Pc=null;switch(c){case "gtm.init":bb("GTM",19),e&&bb("GTM",20)}return e};function Bf(a){var b=a.event,c=a["gtm.uniqueEventId"],d,e=Ic.zones;d=e?e.checkState(Hc.i,c):Sd;return d.active?Je(c,b,d.isWhitelisted,a.eventCallback,a.eventTimeout)?!0:!1:!1}
  167. var Df=function(){for(var a=!1;!yf&&0<xf.length;){yf=!0;delete md.eventModel;pd();var b=xf.shift();if(null!=b){var c=rf(b);if(c){var d=b;b=rf(d)?d.getUntrustedUpdateValue():void 0;for(var e=["gtm.whitelist","gtm.blacklist","tagTypeBlacklist"],g=0;g<e.length;g++){var h=e[g],k=qd(h,1);if(ka(k)||Ha(k))k=f(k);nd[h]=k}}try{if(ha(b))try{b.call(rd)}catch(v){}else if(ka(b)){var l=b;if(ia(l[0])){var m=
  168. l[0].split("."),n=m.pop(),p=l.slice(1),t=qd(m.join("."),2);if(void 0!==t&&null!==t)try{t[n].apply(t,p)}catch(v){}}}else{var q=b;if(q&&("[object Arguments]"==Object.prototype.toString.call(q)||Object.prototype.hasOwnProperty.call(q,"callee"))){a:{if(b.length&&ia(b[0])){var r=ef[b[0]];if(r&&(!c||!ff[b[0]])){b=r(b);break a}}b=void 0}if(!b){yf=!1;continue}}a=Cf(b)||a}}finally{c&&pd(!0)}}yf=!1}
  169. return!a},Ef=function(){var a=Df();try{var b=Hc.i,c=u["dataLayer"].hide;if(c&&void 0!==c[b]&&c.end){c[b]=!1;var d=!0,e;for(e in c)if(c.hasOwnProperty(e)&&!0===c[e]){d=!1;break}d&&(c.end(),c.end=null)}}catch(g){}return a},Ff=function(){var a=Ka("dataLayer",[]),b=Ka("google_tag_manager",{});b=b["dataLayer"]=b["dataLayer"]||{};Zd(function(){b.gtmDom||(b.gtmDom=!0,a.push({event:"gtm.dom"}))});wf(function(){b.gtmLoad||(b.gtmLoad=!0,a.push({event:"gtm.load"}))});b.subscribers=(b.subscribers||
  170. 0)+1;var c=a.push;a.push=function(){var d;if(0<Ic.SANDBOXED_JS_SEMAPHORE){d=[];for(var e=0;e<arguments.length;e++)d[e]=new sf(arguments[e])}else d=[].slice.call(arguments,0);var g=c.apply(a,d);xf.push.apply(xf,d);if(300<this.length)for(bb("GTM",4);300<this.length;)this.shift();var h="boolean"!==typeof g||g;return Df()&&h};xf.push.apply(xf,a.slice(0));D(Ef)};var Gf;var bg={};bg.wb=new String("undefined");
  171. var cg=function(a){this.resolve=function(b){for(var c=[],d=0;d<a.length;d++)c.push(a[d]===bg.wb?b:a[d]);return c.join("")}};cg.prototype.toString=function(){return this.resolve("undefined")};cg.prototype.valueOf=cg.prototype.toString;bg.Ue=cg;bg.kc={};bg.Df=function(a){return new cg(a)};var dg={};bg.Cg=function(a,b){var c=Tc();dg[c]=[a,b];return c};bg.Hd=function(a){var b=a?0:1;return function(c){var d=dg[c];if(d&&"function"===typeof d[b])d[b]();dg[c]=void 0}};bg.eg=function(a){for(var b=!1,c=!1,
  172. d=2;d<a.length;d++)b=b||8===a[d],c=c||16===a[d];return b&&c};bg.pg=function(a){if(a===bg.wb)return a;var b=Tc();bg.kc[b]=a;return'google_tag_manager["'+Hc.i+'"].macro('+b+")"};bg.ig=function(a,b,c){a instanceof bg.Ue&&(a=a.resolve(bg.Cg(b,c)),b=fa);return{Ac:a,I:b}};var eg=function(a,b,c){function d(g,h){var k=g[h];return k}var e={event:b,"gtm.element":a,"gtm.elementClasses":d(a,"className"),"gtm.elementId":a["for"]||Sa(a,"id")||"","gtm.elementTarget":a.formTarget||d(a,"target")||""};c&&(e["gtm.triggers"]=c.join(","));e["gtm.elementUrl"]=(a.attributes&&a.attributes.formaction?a.formAction:"")||a.action||d(a,"href")||a.src||a.code||a.codebase||
  173. "";return e},fg=function(a){Ic.hasOwnProperty("autoEventsSettings")||(Ic.autoEventsSettings={});var b=Ic.autoEventsSettings;b.hasOwnProperty(a)||(b[a]={});return b[a]},gg=function(a,b,c){fg(a)[b]=c},hg=function(a,b,c,d){var e=fg(a),g=xa(e,b,d);e[b]=c(g)},ig=function(a,b,c){var d=fg(a);return xa(d,b,c)};var jg=function(){for(var a=Ia.userAgent+(C.cookie||"")+(C.referrer||""),b=a.length,c=u.history.length;0<c;)a+=c--^b++;var d=1,e,g,h;if(a)for(d=0,g=a.length-1;0<=g;g--)h=a.charCodeAt(g),d=(d<<6&268435455)+h+(h<<14),e=d&266338304,d=0!=e?d^e>>21:d;return[Math.round(2147483647*Math.random())^d&2147483647,Math.round(wa()/1E3)].join(".")},mg=function(a,b,c,d){var e=kg(b);return nb(a,e,lg(c),d)},ng=function(a,b,c,d){var e=""+kg(c),g=lg(d);1<g&&(e+="-"+g);return[b,e,a].join(".")},kg=function(a){if(!a)return 1;
  174. a=0===a.indexOf(".")?a.substr(1):a;return a.split(".").length},lg=function(a){if(!a||"/"===a)return 1;"/"!==a[0]&&(a="/"+a);"/"!==a[a.length-1]&&(a+="/");return a.split("/").length-1};var og=["1"],pg={},tg=function(a,b,c,d){var e=qg(a);pg[e]||rg(e,b,c)||(sg(e,jg(),b,c,d),rg(e,b,c))};function sg(a,b,c,d,e){var g=ng(b,"1",d,c);rb(a,g,c,d,0==e?void 0:new Date(wa()+1E3*(void 0==e?7776E3:e)))}function rg(a,b,c){var d=mg(a,b,c,og);d&&(pg[a]=d);return d}function qg(a){return(a||"_gcl")+"_au"};var ug=function(){for(var a=[],b=C.cookie.split(";"),c=/^\s*_gac_(UA-\d+-\d+)=\s*(.+?)\s*$/,d=0;d<b.length;d++){var e=b[d].match(c);e&&a.push({Wc:e[1],value:e[2]})}var g={};if(!a||!a.length)return g;for(var h=0;h<a.length;h++){var k=a[h].value.split(".");"1"==k[0]&&3==k.length&&k[1]&&(g[a[h].Wc]||(g[a[h].Wc]=[]),g[a[h].Wc].push({timestamp:k[1],Pf:k[2]}))}return g};function vg(){for(var a=wg,b={},c=0;c<a.length;++c)b[a[c]]=c;return b}function xg(){var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ";a+=a.toLowerCase()+"0123456789-_";return a+"."}
  175. var wg,yg,zg=function(a){wg=wg||xg();yg=yg||vg();for(var b=[],c=0;c<a.length;c+=3){var d=c+1<a.length,e=c+2<a.length,g=a.charCodeAt(c),h=d?a.charCodeAt(c+1):0,k=e?a.charCodeAt(c+2):0,l=g>>2,m=(g&3)<<4|h>>4,n=(h&15)<<2|k>>6,p=k&63;e||(p=64,d||(n=64));b.push(wg[l],wg[m],wg[n],wg[p])}return b.join("")},Ag=function(a){function b(l){for(;d<a.length;){var m=a.charAt(d++),n=yg[m];if(null!=n)return n;if(!/^[\s\xa0]*$/.test(m))throw Error("Unknown base64 encoding at char: "+m);}return l}wg=wg||xg();yg=yg||
  176. vg();for(var c="",d=0;;){var e=b(-1),g=b(0),h=b(64),k=b(64);if(64===k&&-1===e)return c;c+=String.fromCharCode(e<<2|g>>4);64!=h&&(c+=String.fromCharCode(g<<4&240|h>>2),64!=k&&(c+=String.fromCharCode(h<<6&192|k)))}};var Bg;function Cg(a,b){if(!a||b===C.location.hostname)return!1;for(var c=0;c<a.length;c++)if(a[c]instanceof RegExp){if(a[c].test(b))return!0}else if(0<=b.indexOf(a[c]))return!0;return!1}
  177. var Gg=function(){var a=Dg,b=Eg,c=Fg(),d=function(h){a(h.target||h.srcElement||{})},e=function(h){b(h.target||h.srcElement||{})};if(!c.init){Qa(C,"mousedown",d);Qa(C,"keyup",d);Qa(C,"submit",e);var g=HTMLFormElement.prototype.submit;HTMLFormElement.prototype.submit=function(){b(this);g.call(this)};c.init=!0}},Fg=function(){var a=Ka("google_tag_data",{}),b=a.gl;b&&b.decorators||(b={decorators:[]},a.gl=b);return b};var Hg=/(.*?)\*(.*?)\*(.*)/,Ig=/^https?:\/\/([^\/]*?)\.?cdn\.ampproject\.org\/?(.*)/,Jg=/^(?:www\.|m\.|amp\.)+/,Kg=/([^?#]+)(\?[^#]*)?(#.*)?/,Lg=/(.*?)(^|&)_gl=([^&]*)&?(.*)/,Ng=function(a){var b=[],c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];void 0!==d&&d===d&&null!==d&&"[object Object]"!==d.toString()&&(b.push(c),b.push(zg(String(d))))}var e=b.join("*");return["1",Mg(e),e].join("*")},Mg=function(a,b){var c=[window.navigator.userAgent,(new Date).getTimezoneOffset(),window.navigator.userLanguage||
  178. window.navigator.language,Math.floor((new Date).getTime()/60/1E3)-(void 0===b?0:b),a].join("*"),d;if(!(d=Bg)){for(var e=Array(256),g=0;256>g;g++){for(var h=g,k=0;8>k;k++)h=h&1?h>>>1^3988292384:h>>>1;e[g]=h}d=e}Bg=d;for(var l=4294967295,m=0;m<c.length;m++)l=l>>>8^Bg[(l^c.charCodeAt(m))&255];return((l^-1)>>>0).toString(36)},Pg=function(){return function(a){var b=jb(u.location.href),c=b.search.replace("?",""),d=eb(c,"_gl",!0)||"";a.query=Og(d)||{};var e=hb(b,"fragment").match(Lg);a.fragment=Og(e&&e[3]||
  179. "")||{}}},Qg=function(){var a=Pg(),b=Fg();b.data||(b.data={query:{},fragment:{}},a(b.data));var c={},d=b.data;d&&(za(c,d.query),za(c,d.fragment));return c},Og=function(a){var b;b=void 0===b?3:b;try{if(a){var c;a:{for(var d=a,e=0;3>e;++e){var g=Hg.exec(d);if(g){c=g;break a}d=decodeURIComponent(d)}c=void 0}var h=c;if(h&&"1"===h[1]){var k=h[3],l;a:{for(var m=h[2],n=0;n<b;++n)if(m===Mg(k,n)){l=!0;break a}l=!1}if(l){for(var p={},t=k?k.split("*"):[],q=0;q<t.length;q+=2)p[t[q]]=Ag(t[q+1]);return p}}}}catch(r){}};
  180. function Rg(a,b,c){function d(m){var n=m,p=Lg.exec(n),t=n;if(p){var q=p[2],r=p[4];t=p[1];r&&(t=t+q+r)}m=t;var v=m.charAt(m.length-1);m&&"&"!==v&&(m+="&");return m+l}c=void 0===c?!1:c;var e=Kg.exec(b);if(!e)return"";var g=e[1],h=e[2]||"",k=e[3]||"",l="_gl="+a;c?k="#"+d(k.substring(1)):h="?"+d(h.substring(1));return""+g+h+k}
  181. function Sg(a,b,c){for(var d={},e={},g=Fg().decorators,h=0;h<g.length;++h){var k=g[h];(!c||k.forms)&&Cg(k.domains,b)&&(k.fragment?za(e,k.callback()):za(d,k.callback()))}if(Aa(d)){var l=Ng(d);if(c){if(a&&a.action){var m=(a.method||"").toLowerCase();if("get"===m){for(var n=a.childNodes||[],p=!1,t=0;t<n.length;t++){var q=n[t];if("_gl"===q.name){q.setAttribute("value",l);p=!0;break}}if(!p){var r=C.createElement("input");r.setAttribute("type","hidden");r.setAttribute("name","_gl");r.setAttribute("value",
  182. l);a.appendChild(r)}}else if("post"===m){var v=Rg(l,a.action);$a.test(v)&&(a.action=v)}}}else Tg(l,a,!1)}if(!c&&Aa(e)){var w=Ng(e);Tg(w,a,!0)}}function Tg(a,b,c){if(b.href){var d=Rg(a,b.href,void 0===c?!1:c);$a.test(d)&&(b.href=d)}}
  183. var Dg=function(a){try{var b;a:{for(var c=a,d=100;c&&0<d;){if(c.href&&c.nodeName.match(/^a(?:rea)?$/i)){b=c;break a}c=c.parentNode;d--}b=null}var e=b;if(e){var g=e.protocol;"http:"!==g&&"https:"!==g||Sg(e,e.hostname,!1)}}catch(h){}},Eg=function(a){try{if(a.action){var b=hb(jb(a.action),"host");Sg(a,b,!0)}}catch(c){}},Ug=function(a,b,c,d){Gg();var e={callback:a,domains:b,fragment:"fragment"===c,forms:!!d};Fg().decorators.push(e)},Vg=function(){var a=C.location.hostname,b=Ig.exec(C.referrer);if(!b)return!1;
  184. var c=b[2],d=b[1],e="";if(c){var g=c.split("/"),h=g[1];e="s"===h?decodeURIComponent(g[2]):decodeURIComponent(h)}else if(d){if(0===d.indexOf("xn--"))return!1;e=d.replace(/-/g,".").replace(/\.\./g,"-")}return a.replace(Jg,"")===e.replace(Jg,"")},Wg=function(a,b){return!1===a?!1:a||b||Vg()};var Xg={};var Yg=/^\w+$/,Zg=/^[\w-]+$/,$g=/^~?[\w-]+$/,ah={aw:"_aw",dc:"_dc",gf:"_gf",ha:"_ha"};function bh(a){return a&&"string"==typeof a&&a.match(Yg)?a:"_gcl"}var dh=function(){var a=jb(u.location.href),b=hb(a,"query",!1,void 0,"gclid"),c=hb(a,"query",!1,void 0,"gclsrc"),d=hb(a,"query",!1,void 0,"dclid");if(!b||!c){var e=a.hash.replace("#","");b=b||eb(e,"gclid",void 0);c=c||eb(e,"gclsrc",void 0)}return ch(b,c,d)};
  185. function ch(a,b,c){var d={},e=function(g,h){d[h]||(d[h]=[]);d[h].push(g)};if(void 0!==a&&a.match(Zg))switch(b){case void 0:e(a,"aw");break;case "aw.ds":e(a,"aw");e(a,"dc");break;case "ds":e(a,"dc");break;case "3p.ds":(void 0==Xg.gtm_3pds?0:Xg.gtm_3pds)&&e(a,"dc");break;case "gf":e(a,"gf");break;case "ha":e(a,"ha")}c&&e(c,"dc");return d}
  186. function eh(a,b,c){function d(p,t){var q=fh(p,e);q&&rb(q,t,h,g,l,!0)}b=b||{};var e=bh(b.prefix),g=b.domain||"auto",h=b.path||"/",k=void 0==b.Zd?7776E3:b.Zd;c=c||wa();var l=0==k?void 0:new Date(c+1E3*k),m=Math.round(c/1E3),n=function(p){return["GCL",m,p].join(".")};a.aw&&(!0===b.Ah?d("aw",n("~"+a.aw[0])):d("aw",n(a.aw[0])));a.dc&&d("dc",n(a.dc[0]));a.gf&&d("gf",n(a.gf[0]));a.ha&&d("ha",n(a.ha[0]))}
  187. var fh=function(a,b){var c=ah[a];if(void 0!==c)return b+c},gh=function(a){var b=a.split(".");return 3!==b.length||"GCL"!==b[0]?0:1E3*(Number(b[1])||0)};function hh(a){var b=a.split(".");if(3==b.length&&"GCL"==b[0]&&b[1])return b[2]}
  188. var ih=function(a,b,c,d,e){if(ka(b)){var g=bh(e);Ug(function(){for(var h={},k=0;k<a.length;++k){var l=fh(a[k],g);if(l){var m=kb(l,C.cookie);m.length&&(h[l]=m.sort()[m.length-1])}}return h},b,c,d)}},jh=function(a){return a.filter(function(b){return $g.test(b)})},kh=function(a){for(var b=["aw","dc"],c=bh(a&&a.prefix),d={},e=0;e<b.length;e++)ah[b[e]]&&(d[b[e]]=ah[b[e]]);ra(d,function(g,h){var k=kb(c+h,C.cookie);if(k.length){var l=k[0],m=gh(l),n={};n[g]=[hh(l)];eh(n,a,m)}})};var lh=/^\d+\.fls\.doubleclick\.net$/;function mh(a){var b=jb(u.location.href),c=hb(b,"host",!1);if(c&&c.match(lh)){var d=hb(b,"path").split(a+"=");if(1<d.length)return d[1].split(";")[0].split("?")[0]}}
  189. function nh(a,b){if("aw"==a||"dc"==a){var c=mh("gcl"+a);if(c)return c.split(".")}var d=bh(b);if("_gcl"==d){var e;e=dh()[a]||[];if(0<e.length)return e}var g=fh(a,d),h;if(g){var k=[];if(C.cookie){var l=kb(g,C.cookie);if(l&&0!=l.length){for(var m=0;m<l.length;m++){var n=hh(l[m]);n&&-1===la(k,n)&&k.push(n)}h=jh(k)}else h=k}else h=k}else h=[];return h}
  190. var oh=function(){var a=mh("gac");if(a)return decodeURIComponent(a);var b=ug(),c=[];ra(b,function(d,e){for(var g=[],h=0;h<e.length;h++)g.push(e[h].Pf);g=jh(g);g.length&&c.push(d+":"+g.join(","))});return c.join(";")},ph=function(a,b,c,d,e){tg(b,c,d,e);var g=pg[qg(b)],h=dh().dc||[],k=!1;if(g&&0<h.length){var l=Ic.joined_au=Ic.joined_au||{},m=b||"_gcl";if(!l[m])for(var n=0;n<h.length;n++){var p="https://adservice.google.com/ddm/regclk",t=p=p+"?gclid="+h[n]+"&auiddc="+g;Ia.sendBeacon&&Ia.sendBeacon(t)||Pa(t);k=l[m]=
  191. !0}}null==a&&(a=k);if(a&&g){var q=qg(b),r=pg[q];r&&sg(q,r,c,d,e)}};var rh;if(3===Hc.Ab.length)rh="g";else{var sh="G";sh="g";rh=sh}
  192. var th={"":"n",UA:"u",AW:"a",DC:"d",G:"e",GF:"f",HA:"h",GTM:rh,OPT:"o"},uh=function(a){var b=Hc.i.split("-"),c=b[0].toUpperCase(),d=th[c]||"i",e=a&&"GTM"===c?b[1]:"OPT"===c?b[1]:"",g;if(3===Hc.Ab.length){var h=void 0;h=h||(Ad()?"s":"o");g="2"+(h||"w")}else g=
  193. "";return g+d+Hc.Ab+e};
  194. var vh=function(a){return!(void 0===a||null===a||0===(a+"").length)},wh=function(a,b){var c;if(2===b.L)return a("ord",oa(1E11,1E13)),!0;if(3===b.L)return a("ord","1"),a("num",oa(1E11,1E13)),!0;if(4===b.L)return vh(b.sessionId)&&a("ord",b.sessionId),!0;if(5===b.L)c="1";else if(6===b.L)c=b.Rc;else return!1;vh(c)&&a("qty",c);vh(b.Eb)&&a("cost",b.Eb);vh(b.transactionId)&&a("ord",b.transactionId);return!0},xh=encodeURIComponent,yh=function(a,b){function c(n,p,t){g.hasOwnProperty(n)||(p+="",e+=";"+n+"="+
  195. (t?p:xh(p)))}var d=a.xc,e=a.protocol;e+=a.Qb?"//"+d+".fls.doubleclick.net/activityi":"//ad.doubleclick.net/activity";e+=";src="+xh(d)+(";type="+xh(a.zc))+(";cat="+xh(a.Va));var g=a.Ff||{};ra(g,function(n,p){e+=";"+xh(n)+"="+xh(p+"")});if(wh(c,a)){vh(a.Wb)&&c("u",a.Wb);vh(a.Vb)&&c("tran",a.Vb);c("gtm",uh());!1===a.cf&&c("npa","1");if(a.wc){var h=nh("dc",a.za);h&&h.length&&c("gcldc",h.join("."));var k=nh("aw",a.za);k&&k.length&&c("gclaw",k.join("."));var l=oh();l&&c("gac",l);tg(a.za,void 0,a.Bf,a.Cf);
  196. var m=pg[qg(a.za)];m&&c("auiddc",m)}vh(a.Nc)&&c("prd",a.Nc,!0);ra(a.Yc,function(n,p){c(n,p)});e+=b||"";vh(a.Ob)&&c("~oref",a.Ob);a.Qb?Oa(e+"?",a.I):Pa(e+"?",a.I,a.R)}else D(a.R)};var zh=["input","select","textarea"],Ah=["button","hidden","image","reset","submit"],Bh=function(a){var b=a.tagName.toLowerCase();return!ma(zh,function(c){return c===b})||"input"===b&&ma(Ah,function(c){return c===a.type.toLowerCase()})?!1:!0},Ch=function(a){return a.form?a.form.tagName?a.form:C.getElementById(a.form):Ya(a,["form"],100)},Dh=function(a,b,c){if(!a.elements)return 0;for(var d=b.getAttribute(c),e=0,g=1;e<a.elements.length;e++){var h=a.elements[e];if(Bh(h)){if(h.getAttribute(c)===d)return g;
  197. g++}}return 0};var Fh=function(a){var b="/pagead/conversion/"+Eh(a.conversion_id)+"/?",c=Eh(JSON.stringify(a.conversion_data)),d="https://www.googletraveladservices.com/travel/flights/clk"+b+"conversion_data="+c;if(a.conversionLinkerEnabled){var e=nh("gf",a.cookiePrefix);if(e&&e.length)for(var g=0;g<e.length;g++)d+="&gclgf="+Eh(e[g])}Pa(d,a.onSuccess,a.onFailure)},Eh=function(a){return null===a||void 0===a||0===String(a).length?"":encodeURIComponent(String(a))};
  198. var Gh=!!u.MutationObserver,Hh=void 0,Ih=function(a){if(!Hh){var b=function(){var c=C.body;if(c)if(Gh)(new MutationObserver(function(){for(var e=0;e<Hh.length;e++)D(Hh[e])})).observe(c,{childList:!0,subtree:!0});else{var d=!1;Qa(c,"DOMNodeInserted",function(){d||(d=!0,D(function(){d=!1;for(var e=0;e<Hh.length;e++)D(Hh[e])}))})}};Hh=[];C.body?b():D(b)}Hh.push(a)};var ji=u.clearTimeout,ki=u.setTimeout,L=function(a,b,c){if(Ad()){b&&D(b)}else return Ma(a,b,c)},li=function(){return new Date},mi=function(){return u.location.href},ni=function(a){return hb(jb(a),"fragment")},oi=function(a){return gb(jb(a))},pi=null;
  199. var qi=function(a,b){return qd(a,b||2)},ri=function(a,b,c){b&&(a.eventCallback=b,c&&(a.eventTimeout=c));return zf(a)},si=function(a,b){u[a]=b},M=function(a,b,c){b&&(void 0===u[a]||c&&!u[a])&&(u[a]=b);return u[a]},ti=function(a,b,c){return kb(a,b,void 0===c?!0:!!c)},ui=function(a,b,c,d){var e={prefix:a,path:b,domain:c,Zd:d},g=dh();eh(g,e);kh(e)},vi=function(a,b,c,d,e){for(var g=Qg(),h=bh(b),k=0;k<a.length;++k){var l=a[k];if(void 0!==ah[l]){var m=fh(l,h),
  200. n=g[m];if(n){var p=Math.min(gh(n),wa()),t;b:{for(var q=p,r=kb(m,C.cookie),v=0;v<r.length;++v)if(gh(r[v])>q){t=!0;break b}t=!1}t||rb(m,n,c,d,0==e?void 0:new Date(p+1E3*(null==e?7776E3:e)),!0)}}}var w={prefix:b,path:c,domain:d};eh(ch(g.gclid,g.gclsrc),w);},wi=function(a,b,c,d,e){ih(a,b,c,d,e);},xi=function(a,b){if(Ad()){
  201. b&&D(b)}else Oa(a,b)},yi=function(a){return!!ig(a,"init",!1)},zi=function(a){gg(a,"init",!0)},Ai=function(a,b,c){var d=(void 0===c?0:c)?"www.googletagmanager.com/gtag/js":Mc;d+="?id="+encodeURIComponent(a)+"&l=dataLayer";b&&ra(b,function(e,g){g&&(d+="&"+e+"="+encodeURIComponent(g))});L(H("https://","http://",d))},Bi=function(a,b){var c=a[b];return c};var Ci=function(a,b,c,d,e,g){var h={config:a,gtm:uh()};c&&(tg(d,void 0,e,g),h.auiddc=pg[qg(d)]);b&&(h.loadInsecure=b);M("__dc_ns_processor",[]).push(h);L((b?"http":"https")+"://www.googletagmanager.com/dclk/ns/v1.js")};
  202. var Di=bg.ig;
  203. var Ei=new pa,Fi=function(a,b){function c(h){var k=jb(h),l=hb(k,"protocol"),m=hb(k,"host",!0),n=hb(k,"port"),p=hb(k,"path").toLowerCase().replace(/\/$/,"");if(void 0===l||"http"==l&&"80"==n||"https"==l&&"443"==n)l="web",n="default";return[l,m,n,p]}for(var d=c(String(a)),e=c(String(b)),g=0;g<d.length;g++)if(d[g]!==e[g])return!1;return!0},Gi=function(a){var b=a.arg0,c=a.arg1;if(a.any_of&&ka(c)){for(var d=0;d<c.length;d++)if(Gi({"function":a["function"],arg0:b,arg1:c[d]}))return!0;return!1}switch(a["function"]){case "_cn":return 0<=
  204. String(b).indexOf(String(c));case "_css":var e;a:{if(b){var g=["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"];try{for(var h=0;h<g.length;h++)if(b[g[h]]){e=b[g[h]](c);break a}}catch(v){}}e=!1}return e;case "_ew":var k,l;k=String(b);l=String(c);var m=k.length-l.length;return 0<=m&&k.indexOf(l,m)==m;case "_eq":return String(b)==String(c);case "_ge":return Number(b)>=Number(c);case "_gt":return Number(b)>Number(c);case "_lc":var n;n=String(b).split(",");
  205. return 0<=la(n,String(c));case "_le":return Number(b)<=Number(c);case "_lt":return Number(b)<Number(c);case "_re":var p;var t=a.ignore_case?"i":void 0;try{var q=String(c)+t,r=Ei.get(q);r||(r=new RegExp(c,t),Ei.set(q,r));p=r.test(b)}catch(v){p=!1}return p;case "_sw":return 0==String(b).indexOf(String(c));case "_um":return Fi(b,c)}return!1};var Ii=function(a,b){var c=function(){};c.prototype=a.prototype;var d=new c;a.apply(d,Array.prototype.slice.call(arguments,1));return d};var Ji={},Ki=encodeURI,W=encodeURIComponent,Li=Pa;var Mi=function(a,b){if(!a)return!1;var c=hb(jb(a),"host");if(!c)return!1;for(var d=0;b&&d<b.length;d++){var e=b[d]&&b[d].toLowerCase();if(e){var g=c.length-e.length;0<g&&"."!=e.charAt(0)&&(g--,e="."+e);if(0<=g&&c.indexOf(e,g)==g)return!0}}return!1};
  206. var Ni=function(a,b,c){for(var d={},e=!1,g=0;a&&g<a.length;g++)a[g]&&a[g].hasOwnProperty(b)&&a[g].hasOwnProperty(c)&&(d[a[g][b]]=a[g][c],e=!0);return e?d:null};Ji.fg=function(){var a=!1;return a};var mj=function(){var a=u.gaGlobal=u.gaGlobal||{};a.hid=a.hid||oa();return a.hid};var Dj=function(a,b,c,d){this.n=a;this.t=b;this.p=c;this.d=d},Ej=function(){this.c=1;this.e=[];this.p2=this.p=null};function Fj(a){var b=Ic,c=b.gss=b.gss||{};return c[a]=c[a]||new Ej}
  207. var Gj=function(a){if(Fj(a).p&&!Fj(a).p2){var b=Fj(a).p;Fj(a).p2=function(c,d,e){b(c,d,e.eventModel)}}return Fj(a).p2},Hj=function(a,b){Fj(a).p2=b;Fj(a).p=function(c,d,e){return b(c,d,new Le(e))}},Ij=function(a){var b=Fj(a),c=Gj(a);if(c){var d=b.e,e=[];b.e=[];var g=function(h){for(var k=0;k<h.length;k++)try{var l=h[k];l.d?(l.d=!1,e.push(l)):c(l.n,l.t,new Le(l.p))}catch(m){}};g(d);g(e)}};var bk=window,ck=document,dk=function(a){var b=bk._gaUserPrefs;if(b&&b.ioo&&b.ioo()||a&&!0===bk["ga-disable-"+a])return!0;try{var c=bk.external;if(c&&c._gaUserPrefs&&"oo"==c._gaUserPrefs)return!0}catch(g){}for(var d=kb("AMP_TOKEN",ck.cookie,!0),e=0;e<d.length;e++)if("$OPT_OUT"==d[e])return!0;return ck.getElementById("__gaOptOutExtension")?!0:!1};var ik=!1;ik=!0;
  208. var kk=function(a,b,c){if(ik)Me().push("event",[c,b],a,void 0);else{jk(a);var d=Math.floor(wa()/1E3);Fj(a).e.push(new Dj(b,d,c,void 0));Ij(a)}},lk=function(a,b,c){if(ik)Me().push("event",[c,b],a,!0);else{jk(a);var d=Math.floor(wa()/1E3);Fj(a).e.push(new Dj(b,d,c,!0))}},jk=function(a){if(1===Fj(a).c&&(Fj(a).c=2,!Ad())){var b=encodeURIComponent(a);Ma(("http:"!=u.location.protocol?"https:":"http:")+("//www.googletagmanager.com/gtag/js?id="+b+"&l=dataLayer&cx=c"))}},nk=function(a,b){},mk=function(a,b){},ok=function(a){return"_"===a.charAt(0)},pk=function(a){ra(a,function(c){ok(c)&&
  209. delete a[c]});var b=a[G.vb]||{};ra(b,function(c){ok(c)&&delete b[c]})};var Y={a:{}};
  210.  
  211. Y.a.gtagha=["google"],function(){function a(h){function k(m,n){void 0!==n&&l.push(m+"="+n)}if(void 0===h)return"";var l=[];k("hct_base_price",h.Qd);k("hct_booking_xref",h.Rd);k("hct_checkin_date",h.Vf);k("hct_checkout_date",h.Wf);k("hct_currency_code",h.Xf);k("hct_partner_hotel_id",h.Sd);k("hct_total_price",h.Td);return l.join(";")}function b(h,k,l,m){var n=W(h),p=W(a(k)),t="https://www.googletraveladservices.com/travel/clk/pagead/conversion/"+n+"/?data="+p;l&&(t+=nh("ha",m).map(function(q){return"&gclha="+
  212. W(q)}).join(""));return t}function c(h,k,l,m,n,p){/^\d+$/.test(h)?Li(b(h,k,l,m),n,p):D(p)}function d(h,k,l,m){var n={};ia(h)?n.Rd=h:"number"===typeof h&&(n.Rd=String(h));ia(l)&&(n.Xf=l);ia(k)?n.Td=n.Qd=k:"number"===typeof k&&(n.Td=n.Qd=String(k));if(!ka(m)||0==m.length)return n;var p=m[0];if(!Ha(p))return n;ia(p.id)?n.Sd=p.id:"number"===typeof p.id&&(n.Sd=String(p.id));ia(p.start_date)&&(n.Vf=p.start_date);ia(p.end_date)&&(n.Wf=p.end_date);return n}function e(h){var k=Pc,l=h.vtp_gtmOnSuccess,m=h.vtp_gtmOnFailure,
  213. n=h.vtp_conversionId,p=n.containerId,t=function(z){return sd(z,p,n.id)},q=!1!==t(G.Ka),r=t(G.Ja)||t(G.P),v=t(G.N),w=t(G.O);if(k===G.T){var x=t(G.fa)||{};q&&(Wg(x[G.Oa],!!x[G.B])&&vi(g,r,void 0,v,w),ui(r,void 0,v,w));x[G.B]&&wi(g,x[G.B],x[G.Qa],!!x[G.Pa],r);D(l)}else if("purchase"===k){var y=d(t(G.Sa),t(G.ia),t(G.sa),t(G.W));c(n.ba[0],y,q,r,l,m)}else D(m)}var g=["ha"];Y.__gtagha=e;Y.__gtagha.b="gtagha";Y.__gtagha.g=!0;Y.__gtagha.priorityOverride=0;}();
  214. Y.a.e=["google"],function(){(function(a){Y.__e=a;Y.__e.b="e";Y.__e.g=!0;Y.__e.priorityOverride=0})(function(a){return String(zd(a.vtp_gtmEventId,"event"))})}();
  215.  
  216.  
  217. Y.a.v=["google"],function(){(function(a){Y.__v=a;Y.__v.b="v";Y.__v.g=!0;Y.__v.priorityOverride=0})(function(a){var b=a.vtp_name;if(!b||!b.replace)return!1;var c=qi(b.replace(/\\\./g,"."),a.vtp_dataLayerVersion||1);return void 0!==c?c:a.vtp_defaultValue})}();
  218.  
  219.  
  220.  
  221.  
  222.  
  223. Y.a.gtagaw=["google"],function(){var a=!1,b=[],c=["aw","dc"],d=function(l){var m=M("google_trackConversion"),n=l.gtm_onFailure;"function"==typeof m?m(l)||n():n()},e=function(){for(;0<b.length;)d(b.shift())},g=function(){a||(a=!0,he(),L(H("https://","http://","www.googleadservices.com/pagead/conversion_async.js"),function(){e();b={push:d}},function(){e();a=!1}))},h=function(l){if(l){for(var m=[],n=0;n<l.length;++n){var p=l[n];p&&m.push({item_id:p.id,quantity:p.quantity,value:p.price,start_date:p.start_date,
  224. end_date:p.end_date})}return m}},k=function(l){var m=l.vtp_conversionId,n=Pc,p=n==G.T,t=m.ba[0],q=m.ba[1],r=void 0!==q,v=m.containerId,w=r?m.id:void 0,x=function(N){return sd(N,v,w)},y=!1!==x(G.Ka),z=x(G.Ja)||x(G.P),B=x(G.N),A=x(G.O);if(p){var E=x(G.fa)||{};y&&(Wg(E[G.Oa],!!E[G.B])&&vi(c,z,void 0,B,A),ui(z,void 0,B,A));E[G.B]&&wi(c,E[G.B],E[G.Qa],!!E[G.Pa],z);r&&Id(m)}var F=!1===x(G.hd)||!1===x(G.Ra);if(!p||!r&&!F)if(!0===x(G.jd)&&(r=!1),!1!==x(G.M)||r){var I={google_conversion_id:t,google_remarketing_only:!r,
  225. onload_callback:l.vtp_gtmOnSuccess,gtm_onFailure:l.vtp_gtmOnFailure,google_conversion_format:"3",google_conversion_color:"ffffff",google_conversion_domain:"",google_conversion_label:q,google_conversion_language:x(G.Na),google_conversion_value:x(G.ia),google_conversion_currency:x(G.sa),google_conversion_order_id:x(G.Sa),google_user_id:x(G.X),google_conversion_page_url:x(G.rb),google_conversion_referrer_url:x(G.sb),google_gtm:uh()};Ad()&&(I.opt_image_generator=function(){return new Image},I.google_enable_display_cookie_match=
  226. !1);!1===x(G.M)&&(I.google_allow_ad_personalization_signals=!1);I.google_read_gcl_cookie_opt_out=!y;y&&z&&(I.google_gcl_cookie_prefix=z);var S=function(){var N=x(G.ob),K={event:n};if(ka(N)){for(var J=0;J<N.length;++J){var P=N[J],U=x(P);void 0!==U&&(K[P]=U)}return K}var X=x("eventModel");if(!X)return null;f(X,K);for(var Z=0;Z<G.bd.length;++Z)delete K[G.bd[Z]];return K}();S&&(I.google_custom_params=S);!r&&x(G.W)&&(I.google_gtag_event_data={items:x(G.W),value:x(G.ia)});if(r&&"purchase"==n){I.google_conversion_merchant_id=
  227. x(G.nd);I.google_basket_feed_country=x(G.ld);I.google_basket_feed_language=x(G.md);I.google_basket_discount=x(G.kd);I.google_basket_transaction_type=n;I.google_disable_merchant_reported_conversions=!0===x(G.pd);Ad()&&(I.google_disable_merchant_reported_conversions=!0);var T=h(x(G.W));T&&(I.google_conversion_items=T)}var V=function(N,K){void 0!=K&&""!==K&&(I.google_additional_conversion_params=I.google_additional_conversion_params||{},I.google_additional_conversion_params[N]=K)};r&&("boolean"==typeof x(G.gc)&&
  228. V("vdnc",x(G.gc)),V("vdltv",x(G.od)));var Q=!0;Q&&b.push(I)}g()};Y.__gtagaw=k;Y.__gtagaw.b="gtagaw";Y.__gtagaw.g=!0;Y.__gtagaw.priorityOverride=0}();
  229.  
  230.  
  231. Y.a.get=["google"],function(){function a(e,g){var h=sd(G.ob,e,void 0);if(ka(h))for(var k=0;k<h.length;k++){var l=h[k],m=sd(l,e,void 0);void 0!==m&&(g[l]=m)}else{var n=qi("eventModel");f(n,g)}}function b(e,g){for(var h=G.xd,k=0;k<h.length;k++){var l=sd(h[k],e,void 0);void 0!==l&&(g[h[k]]=l)}}var c=!0;c=!1;var d=function(e){if(e.vtp_isAutoTag){var g=String(e.vtp_trackingId),h=Pc||"";if(ok(h))return;var k={};
  232. c?(b(g,k),a(g,k),pk(k),kk(g,h,f(k))):h===G.T?(b(g,k),Me().push("config",[k],g)):(a(g,k),pk(k),kk(g,h,k))}else{var l=e.vtp_settings,m=l.eventParameters,n=l.userProperties;f(Ni(e.vtp_eventParameters,"name","value"),m);f(Ni(e.vtp_userProperties,"name","value"),n);m[G.vb]=n;var p=String(e.vtp_eventName),t=e.vtp_allowSystemNames;if(!t&&ok(p))return;t||pk(m);(e.vtp_deferrable?lk:kk)(String(l.streamId),p,m)}e.vtp_gtmOnSuccess()};Y.__get=d;Y.__get.b="get";Y.__get.g=!0;Y.__get.priorityOverride=0;}();
  233.  
  234.  
  235. Y.a.gtagfl=[],function(){function a(e){var g=/^DC-(\d+)(\/([\w-]+)\/([\w-]+)\+(\w+))?$/.exec(e);if(g){var h={standard:2,unique:3,per_session:4,transactions:5,items_sold:6,"":1}[(g[5]||"").toLowerCase()];if(h)return{containerId:"DC-"+g[1],na:g[3]?e:"",Xe:g[1],We:g[3]||"",Va:g[4]||"",L:h}}}function b(e,g){function h(t,q,r){void 0!==r&&0!==(r+"").length&&k.push(t+q+":"+e(r+""))}var k=[],l=g(G.W)||[];if(ka(l))for(var m=0;m<l.length;m++){var n=l[m],p=m+1;h("i",p,n.id);h("p",p,n.price);h("q",p,n.quantity);
  236. h("c",p,g(G.ye));h("l",p,g(G.Na))}return k.join("|")}function c(e,g,h){var k=/^u([1-9]\d?|100)$/,l=e(G.ze)||{},m=wd(g,h),n={},p={};if(Ha(l))for(var t in l)if(l.hasOwnProperty(t)&&k.test(t)){var q=l[t];ia(q)&&(n[t]=q)}for(var r=0;r<m.length;r++){var v=m[r];k.test(v)&&(n[v]=v)}for(var w in n)n.hasOwnProperty(w)&&(p[w]=e(n[w]));return p}var d=["aw","dc"];(function(e){Y.__gtagfl=e;Y.__gtagfl.b="gtagfl";Y.__gtagfl.g=!0;Y.__gtagfl.priorityOverride=0})(function(e){var g=e.vtp_gtmOnSuccess,h=e.vtp_gtmOnFailure,
  237. k=a(e.vtp_targetId);if(k){var l=function(T){return sd(T,k.containerId,k.na||void 0)},m=!1!==l(G.Ka),n=l(G.Ja)||l(G.P),p=l(G.N),t=l(G.O),q=l(G.Be),r=3===Bd();if(Pc===G.T){var v=l(G.fa)||{},w=l(G.La),x=void 0===w?!0:!!w;m&&(Wg(v[G.Oa],!!v[G.B])&&vi(d,n,void 0,p,t),ui(n,void 0,p,t),ph(x,n,void 0,p,t));v[G.B]&&wi(d,v[G.B],v[G.Qa],!!v[G.Pa],n);q&&q.exclusion_parameters&&q.engines&&Ci(q,r,m,n,p,t);D(g)}else{var y={},z=l(G.Ae);if(Ha(z))for(var B in z)if(z.hasOwnProperty(B)){var A=z[B];void 0!==A&&null!==
  238. A&&(y[B]=A)}var E="";if(5===k.L||6===k.L)E=b(W,l);var F=c(l,k.containerId,k.na),I=!0===l(G.ue);if(Ad()&&I){I=!1}var S={Va:k.Va,wc:m,Bf:p,Cf:t,za:n,Eb:l(G.ia),L:k.L,Ff:y,xc:k.Xe,zc:k.We,R:h,I:g,Ob:oi(mi()),Nc:E,protocol:r?"http:":"https:",Rc:l(G.Le),Qb:I,sessionId:l(G.tb),Vb:void 0,transactionId:l(G.Sa),Wb:void 0,Yc:F,cf:!1!==l(G.M)};yh(S)}}else D(h)})}();
  239.  
  240.  
  241. Y.a.gtaggf=["google"],function(){var a=/.*\.google\.com(:\d+)?\/booking\/flights.*/,b=function(c){if(c){for(var d=[],e=0,g=0;g<c.length;++g){var h=c[g];!h||void 0!==h.category&&""!==h.category&&"FlightSegment"!==h.category||(d[e]={cabin:h.travel_class,fare_product:h.fare_product,booking_code:h.booking_code,flight_number:h.flight_number,origin:h.origin,destination:h.destination,departure_date:h.start_date},e++)}return d}};(function(c){Y.__gtaggf=c;Y.__gtaggf.b="gtaggf";Y.__gtaggf.g=!0;Y.__gtaggf.priorityOverride=
  242. 0})(function(c){var d=Pc,e=c.vtp_gtmOnSuccess,g=c.vtp_gtmOnFailure,h=c.vtp_conversionId,k=h.ba[0],l=h.containerId,m=function(y){return sd(y,l,h.id)},n=!1!==m(G.Ka),p=m(G.Ja)||m(G.P),t=m(G.N),q=m(G.O);if(d===G.T)n&&ui(p,void 0,t,q),D(e);else{var r={conversion_id:k,onFailure:g,onSuccess:e,conversionLinkerEnabled:n,cookiePrefix:p};if("purchase"===d){var v=a.test(mi()),w={partner_id:k,trip_type:m(G.Oe),total_price:m(G.ia),currency:m(G.sa),is_direct_booking:v,flight_segment:b(m(G.W))},x=m(G.Ke);x&&"object"===
  243. typeof x&&(w.passengers_total=x.total,w.passengers_adult=x.adult,w.passengers_child=x.child,w.passengers_infant_in_seat=x.infant_in_seat,w.passengers_infant_in_lap=x.infant_in_lap);r.conversion_data=w}Fh(r)}})}();
  244.  
  245.  
  246.  
  247.  
  248. Y.a.gtagua=["google"],function(){var a,b={},c={client_id:1,client_storage:"storage",cookie_name:1,cookie_domain:1,cookie_expires:1,cookie_path:1,cookie_update:1,sample_rate:1,site_speed_sample_rate:1,use_amp_client_id:1,store_gac:1,conversion_linker:"storeGac"},d={anonymize_ip:1,app_id:1,app_installer_id:1,app_name:1,app_version:1,campaign:{name:"campaignName",source:"campaignSource",medium:"campaignMedium",term:"campaignTerm",content:"campaignContent",id:"campaignId"},currency:"currencyCode",description:"exDescription",
  249. fatal:"exFatal",language:1,non_interaction:1,page_hostname:"hostname",page_referrer:"referrer",page_path:"page",page_location:"location",page_title:"title",screen_name:1,transport_type:"transport",user_id:1},e={content_id:1,event_category:1,event_action:1,event_label:1,link_attribution:1,linker:1,method:1,name:1,send_page_view:1,value:1},g={cookie_name:1,cookie_expires:"duration",levels:1},h={anonymize_ip:1,fatal:1,non_interaction:1,use_amp_client_id:1,send_page_view:1,store_gac:1,conversion_linker:1},
  250. k=function(v,w,x,y){if(void 0!==x)if(h[w]&&(x=ta(x)),"anonymize_ip"!=w||x||(x=void 0),1===v)y[l(w)]=x;else if(ia(v))y[v]=x;else for(var z in v)v.hasOwnProperty(z)&&void 0!==x[z]&&(y[v[z]]=x[z])},l=function(v){return v&&ia(v)?v.replace(/(_[a-z])/g,function(w){return w[1].toUpperCase()}):v},m=function(v,w,x){v.hasOwnProperty(w)||(v[w]=x)},n=function(v,w,x){var y={},z={},B={},A;var E=vd(G.He,v);if(ka(E)){for(var F=[],I=0;I<E.length;I++){var S=E[I];if(void 0!=S){var T=S.id,V=S.variant;void 0!=T&&void 0!=
  251. V&&F.push(String(T)+"."+String(V))}}A=0<F.length?F.join("!"):void 0}else A=void 0;var Q=A;Q&&m(z,"exp",Q);var N=vd("custom_map",v);if(Ha(N))for(var K in N)if(N.hasOwnProperty(K)&&/^(dimension|metric)\d+$/.test(K)&&void 0!=N[K]){var J=vd(String(N[K]),v);void 0!==J&&m(z,K,J)}for(var P=wd(v),U=0;U<P.length;++U){var X=P[U],Z=vd(X,v);e.hasOwnProperty(X)?k(e[X],X,Z,y):d.hasOwnProperty(X)?k(d[X],X,Z,z):c.hasOwnProperty(X)?k(c[X],X,Z,B):/^(dimension|metric|content_group)\d+$/.test(X)?k(1,X,Z,z):X===G.P&&
  252. 0>la(P,G.nb)&&(B.cookieName=Z+"_ga")}var ca=String(Pc);m(B,"cookieDomain","auto");m(z,"forceSSL",!0);var Ca="general";0<=la("add_payment_info add_to_cart add_to_wishlist begin_checkout checkout_progress purchase refund remove_from_cart set_checkout_option".split(" "),ca)?Ca="ecommerce":0<=la("generate_lead login search select_content share sign_up view_item view_item_list view_promotion view_search_results".split(" "),ca)?Ca="engagement":"exception"==ca&&(Ca="error");m(y,"eventCategory",Ca);0<=la(["view_item",
  253. "view_item_list","view_promotion","view_search_results"],ca)&&m(z,"nonInteraction",!0);"login"==ca||"sign_up"==ca||"share"==ca?m(y,"eventLabel",vd(G.Ie,v)):"search"==ca||"view_search_results"==ca?m(y,"eventLabel",vd(G.Me,v)):"select_content"==ca&&m(y,"eventLabel",vd(G.xe,v));var R=y[G.fa]||{},O=R[G.Oa];O||0!=O&&R[G.B]?B.allowLinker=!0:!1===O&&m(B,"useAmpClientId",!1);if(!1===vd(G.ve,v)||!1===vd(G.M,v))z.allowAdFeatures=!1;B.name=w;z["&gtm"]=uh(!0);z.hitCallback=x;var na=vd("_x_19",v)||qi("gtag.remote_config."+
  254. v+".url"),Va=vd("_x_20",v)||qi("gtag.remote_config."+v+".dualId");na&&(B._x_19=na);Va&&(B._x_20=Va);y.aa=z;y.Aa=B;return y},p=function(v){function w(J){var P=f(J);P.list=J.list_name;P.listPosition=J.list_position;P.position=J.list_position||J.creative_slot;P.creative=J.creative_name;return P}function x(J){for(var P=[],U=0;J&&U<J.length;U++)J[U]&&P.push(w(J[U]));return P.length?P:void 0}function y(J){return{id:B(z.Sa),affiliation:B(z.Ce),revenue:B(z.ia),tax:B(z.Ge),shipping:B(z.Fe),coupon:B(z.De),
  255. list:B(z.Zb)||J}}for(var z=G,B=function(J){return sd(J,v,void 0)},A=B(z.W),E,F=0;A&&F<A.length&&!(E=A[F][z.Zb]);F++);var I=B("custom_map");if(Ha(I))for(var S=0;A&&S<A.length;++S){var T=A[S],V;for(V in I)I.hasOwnProperty(V)&&/^(dimension|metric)\d+$/.test(V)&&void 0!=I[V]&&m(T,V,T[I[V]])}var Q=null,N=Pc,K=B(z.Ee);"purchase"==N||"refund"==N?Q={action:N,Ua:y(),Fa:x(A)}:"add_to_cart"==N?Q={action:"add",Fa:x(A)}:"remove_from_cart"==N?Q={action:"remove",Fa:x(A)}:"view_item"==N?Q={action:"detail",Ua:y(E),
  256. Fa:x(A)}:"view_item_list"==N?Q={action:"impressions",$f:x(A)}:"view_promotion"==N?Q={action:"promo_view",Oc:x(K)}:"select_content"==N&&K&&0<K.length?Q={action:"promo_click",Oc:x(K)}:"select_content"==N?Q={action:"click",Ua:{list:B(z.Zb)||E},Fa:x(A)}:"begin_checkout"==N||"checkout_progress"==N?Q={action:"checkout",Fa:x(A),Ua:{step:"begin_checkout"==N?1:B(z.rd),option:B(z.qd)}}:"set_checkout_option"==N&&(Q={action:"checkout_option",Ua:{step:B(z.rd),option:B(z.qd)}});Q&&(Q.gh=B(z.sa));return Q},t={},
  257. q=function(v,w){var x=t[v];t[v]=f(w);if(!x)return!1;for(var y in w)if(w.hasOwnProperty(y)&&w[y]!==x[y])return!0;for(var z in x)if(x.hasOwnProperty(z)&&x[z]!==w[z])return!0;return!1},r=function(v){var w=v.vtp_trackingId,x="https://www.google-analytics.com/analytics.js",y=oe();if(ha(y)){var z="gtag_"+w.split("-").join("_"),B=function(Q){var N=[].slice.call(arguments,0);N[0]=z+"."+N[0];y.apply(window,N)},A=function(){var Q=function(P,U){for(var X=0;U&&X<U.length;X++)B(P,U[X])},N=p(w);if(N){var K=N.action;
  258. if("impressions"==K)Q("ec:addImpression",N.$f);else if("promo_click"==K||"promo_view"==K){var J=N.Oc;Q("ec:addPromo",N.Oc);J&&0<J.length&&"promo_click"==K&&B("ec:setAction",K)}else Q("ec:addProduct",N.Fa),B("ec:setAction",K,N.Ua)}},E=function(){if(Ad()){}else{var Q=vd(G.Je,w);Q&&(B("require",Q,{dataLayer:"dataLayer"}),B("require","render"))}},F=n(w,z,v.vtp_gtmOnSuccess);q(z,F.Aa)&&(y(function(){me()&&me().remove(z)}),
  259. b[z]=!1);y("create",w,F.Aa);(function(){var Q=vd("custom_map",w);y(function(){if(Ha(Q)){var N=F.aa,K=me().getByName(z),J;for(J in Q)if(Q.hasOwnProperty(J)&&/^(dimension|metric)\d+$/.test(J)&&void 0!=Q[J]){var P=K.get(l(Q[J]));m(N,J,P)}}})})();(function(Q){if(Q){var N={};if(Ha(Q))for(var K in g)g.hasOwnProperty(K)&&k(g[K],K,Q[K],N);B("require",
  260. "linkid",N)}})(F.linkAttribution);var I=F[G.fa];if(I&&I[G.B]){var S=I[G.Qa];pe(z+".",I[G.B],void 0===S?!!I.use_anchor:"fragment"===S,!!I[G.Pa])}var T=function(Q,N,K){K&&(N=""+N);F.aa[Q]=N},V=Pc;V==G.Yb?(E(),B("send","pageview",F.aa)):V==G.T?(E(),Id(w),0!=F.sendPageView&&B("send","pageview",F.aa)):"screen_view"==V?B("send","screenview",F.aa):"timing_complete"==V?(T("timingCategory",F.eventCategory,!0),T("timingVar",F.name,!0),T("timingValue",sa(F.value)),void 0!==F.eventLabel&&T("timingLabel",F.eventLabel,
  261. !0),B("send","timing",F.aa)):"exception"==V?B("send","exception",F.aa):"optimize.callback"!=V&&(0<=la("view_item_list select_content view_item add_to_cart remove_from_cart begin_checkout set_checkout_option purchase refund view_promotion checkout_progress".split(" "),V)&&(B("require","ec","ec.js"),A()),T("eventCategory",F.eventCategory,!0),T("eventAction",F.eventAction||V,!0),void 0!==F.eventLabel&&T("eventLabel",F.eventLabel,!0),void 0!==F.value&&T("eventValue",sa(F.value)),B("send","event",F.aa));
  262. a||(a=!0,he(),L(x,function(){me().loaded||v.vtp_gtmOnFailure()},v.vtp_gtmOnFailure))}else D(v.vtp_gtmOnFailure)};Y.__gtagua=r;Y.__gtagua.b="gtagua";Y.__gtagua.g=!0;Y.__gtagua.priorityOverride=0}();
  263.  
  264. var qk={};qk.macro=function(a){if(bg.kc.hasOwnProperty(a))return bg.kc[a]},qk.onHtmlSuccess=bg.Hd(!0),qk.onHtmlFailure=bg.Hd(!1);qk.dataLayer=rd;qk.callback=function(a){Rc.hasOwnProperty(a)&&ha(Rc[a])&&Rc[a]();delete Rc[a]};qk.pf=function(){Ic[Hc.i]=qk;za(Sc,Y.a);Yb=Yb||bg;Zb=Rd};
  265. qk.ag=function(){Xg.gtm_3pds=!0;Ic=u.google_tag_manager=u.google_tag_manager||{};if(Ic[Hc.i]){var a=Ic.zones;a&&a.unregisterChild(Hc.i)}else{for(var b=data.resource||{},c=b.macros||[],d=0;d<c.length;d++)Qb.push(c[d]);for(var e=b.tags||[],g=0;g<e.length;g++)Tb.push(e[g]);for(var h=b.predicates||[],
  266. k=0;k<h.length;k++)Sb.push(h[k]);for(var l=b.rules||[],m=0;m<l.length;m++){for(var n=l[m],p={},t=0;t<n.length;t++)p[n[t][0]]=Array.prototype.slice.call(n[t],1);Rb.push(p)}Vb=Y;Wb=Gi;qk.pf();Ff();Ud=!1;Vd=0;if("interactive"==C.readyState&&!C.createEventObject||"complete"==C.readyState)Xd();else{Qa(C,"DOMContentLoaded",Xd);Qa(C,"readystatechange",Xd);if(C.createEventObject&&C.documentElement.doScroll){var q=!0;try{q=!u.frameElement}catch(x){}q&&Yd()}Qa(u,"load",Xd)}tf=!1;"complete"===C.readyState?vf():
  267. Qa(u,"load",vf);a:{if(!gd)break a;u.setInterval(hd,864E5);}
  268. Oc=(new Date).getTime();}};(0,qk.ag)();
  269.  
  270. })()
  271.  
  272. </script>
  273. <script>
  274. window.dataLayer = window.dataLayer || [];
  275. function gtag(){dataLayer.push(arguments);}
  276. gtag("js", new Date());
  277.  
  278. gtag("config", "UA-42620757-2");
  279. </script>
  280.  
  281. <style>
  282. @import url(fonts/clear-sans.css);
  283. html, body {
  284. margin: 0;
  285. padding: 0;
  286. background: #faf8ef;
  287. color: #776e65;
  288. font-family: "Clear Sans", "Helvetica Neue", Arial, sans-serif;
  289. font-size: 18px; }
  290.  
  291. body {
  292. margin: 80px 0; }
  293.  
  294. input {
  295. display: inline-block;
  296. background: #8f7a66;
  297. border-radius: 3px;
  298. padding: 0 20px;
  299. text-decoration: none;
  300. color: #f9f6f2;
  301. height: 40px;
  302. line-height: 42px;
  303. cursor: pointer;
  304. font: inherit;
  305. border: none;
  306. outline: none;
  307. box-sizing: border-box;
  308. font-weight: bold;
  309. margin: 0;
  310. -webkit-appearance: none;
  311. -moz-appearance: none;
  312. appearance: none; }
  313. input[type="text"], input[type="email"] {
  314. cursor: auto;
  315. background: #fcfbf9;
  316. font-weight: normal;
  317. color: #776e65;
  318. padding: 0 15px; }
  319. input[type="text"]::-webkit-input-placeholder, input[type="email"]::-webkit-input-placeholder {
  320. color: #9d948c; }
  321. input[type="text"]::-moz-placeholder, input[type="email"]::-moz-placeholder {
  322. color: #9d948c; }
  323. input[type="text"]:-ms-input-placeholder, input[type="email"]:-ms-input-placeholder {
  324. color: #9d948c; }
  325.  
  326. .heading:after {
  327. content: "";
  328. display: block;
  329. clear: both; }
  330.  
  331. h1.title {
  332. font-size: 80px;
  333. font-weight: bold;
  334. margin: 0;
  335. display: block;
  336. float: left; }
  337.  
  338. @-webkit-keyframes move-up {
  339. 0% {
  340. top: 25px;
  341. opacity: 1; }
  342.  
  343. 100% {
  344. top: -50px;
  345. opacity: 0; } }
  346. @-moz-keyframes move-up {
  347. 0% {
  348. top: 25px;
  349. opacity: 1; }
  350.  
  351. 100% {
  352. top: -50px;
  353. opacity: 0; } }
  354. @keyframes move-up {
  355. 0% {
  356. top: 25px;
  357. opacity: 1; }
  358.  
  359. 100% {
  360. top: -50px;
  361. opacity: 0; } }
  362. .scores-container {
  363. float: right;
  364. text-align: right; }
  365.  
  366. .score-container, .best-container {
  367. position: relative;
  368. display: inline-block;
  369. background: #bbada0;
  370. padding: 15px 25px;
  371. font-size: 25px;
  372. height: 25px;
  373. line-height: 47px;
  374. font-weight: bold;
  375. border-radius: 3px;
  376. color: white;
  377. margin-top: 8px;
  378. text-align: center; }
  379. .score-container:after, .best-container:after {
  380. position: absolute;
  381. width: 100%;
  382. top: 10px;
  383. left: 0;
  384. text-transform: uppercase;
  385. font-size: 13px;
  386. line-height: 13px;
  387. text-align: center;
  388. color: #eee4da; }
  389. .score-container .score-addition, .best-container .score-addition {
  390. position: absolute;
  391. right: 30px;
  392. color: red;
  393. font-size: 25px;
  394. line-height: 25px;
  395. font-weight: bold;
  396. color: rgba(119, 110, 101, 0.9);
  397. z-index: 100;
  398. -webkit-animation: move-up 600ms ease-in;
  399. -moz-animation: move-up 600ms ease-in;
  400. animation: move-up 600ms ease-in;
  401. -webkit-animation-fill-mode: both;
  402. -moz-animation-fill-mode: both;
  403. animation-fill-mode: both; }
  404.  
  405. .score-container:after {
  406. content: "Score"; }
  407.  
  408. .best-container:after {
  409. content: "Best"; }
  410.  
  411. p {
  412. margin-top: 0;
  413. margin-bottom: 10px;
  414. line-height: 1.65; }
  415.  
  416. a {
  417. color: #776e65;
  418. font-weight: bold;
  419. text-decoration: underline;
  420. cursor: pointer; }
  421.  
  422. strong.important {
  423. text-transform: uppercase; }
  424.  
  425. hr {
  426. border: none;
  427. border-bottom: 1px solid #d8d4d0;
  428. margin-top: 20px;
  429. margin-bottom: 30px; }
  430.  
  431. .container {
  432. width: 500px;
  433. margin: 0 auto; }
  434.  
  435. @-webkit-keyframes fade-in {
  436. 0% {
  437. opacity: 0; }
  438.  
  439. 100% {
  440. opacity: 1; } }
  441. @-moz-keyframes fade-in {
  442. 0% {
  443. opacity: 0; }
  444.  
  445. 100% {
  446. opacity: 1; } }
  447. @keyframes fade-in {
  448. 0% {
  449. opacity: 0; }
  450.  
  451. 100% {
  452. opacity: 1; } }
  453. @-webkit-keyframes slide-up {
  454. 0% {
  455. margin-top: 32%; }
  456.  
  457. 100% {
  458. margin-top: 20%; } }
  459. @-moz-keyframes slide-up {
  460. 0% {
  461. margin-top: 32%; }
  462.  
  463. 100% {
  464. margin-top: 20%; } }
  465. @keyframes slide-up {
  466. 0% {
  467. margin-top: 32%; }
  468.  
  469. 100% {
  470. margin-top: 20%; } }
  471. .game-container {
  472. margin-top: 40px;
  473. position: relative;
  474. padding: 15px;
  475. cursor: default;
  476. -webkit-touch-callout: none;
  477. -ms-touch-callout: none;
  478. -webkit-user-select: none;
  479. -moz-user-select: none;
  480. -ms-user-select: none;
  481. -ms-touch-action: none;
  482. touch-action: none;
  483. background: #bbada0;
  484. border-radius: 6px;
  485. width: 500px;
  486. height: 500px;
  487. -webkit-box-sizing: border-box;
  488. -moz-box-sizing: border-box;
  489. box-sizing: border-box; }
  490.  
  491. .game-message {
  492. display: none;
  493. position: absolute;
  494. top: 0;
  495. right: 0;
  496. bottom: 0;
  497. left: 0;
  498. background: rgba(238, 228, 218, 0.73);
  499. z-index: 100;
  500. padding-top: 40px;
  501. text-align: center;
  502. -webkit-animation: fade-in 800ms ease 1200ms;
  503. -moz-animation: fade-in 800ms ease 1200ms;
  504. animation: fade-in 800ms ease 1200ms;
  505. -webkit-animation-fill-mode: both;
  506. -moz-animation-fill-mode: both;
  507. animation-fill-mode: both; }
  508. .game-message p {
  509. font-size: 60px;
  510. font-weight: bold;
  511. height: 60px;
  512. line-height: 60px;
  513. margin-top: 222px; }
  514. .game-message .lower {
  515. display: block;
  516. margin-top: 29px; }
  517. .game-message .mailing-list {
  518. margin-top: 52px; }
  519. .game-message .mailing-list strong {
  520. display: block;
  521. margin-bottom: 10px; }
  522. .game-message .mailing-list .mailing-list-email-field {
  523. width: 230px;
  524. margin-right: 5px; }
  525. .game-message a {
  526. display: inline-block;
  527. background: #8f7a66;
  528. border-radius: 3px;
  529. padding: 0 20px;
  530. text-decoration: none;
  531. color: #f9f6f2;
  532. height: 40px;
  533. line-height: 42px;
  534. cursor: pointer;
  535. margin-left: 9px; }
  536. .game-message a.keep-playing-button {
  537. display: none; }
  538. .game-message .score-sharing {
  539. display: inline-block;
  540. vertical-align: middle;
  541. margin-left: 10px; }
  542. .game-message.game-won {
  543. background: rgba(237, 194, 46, 0.5);
  544. color: #f9f6f2; }
  545. .game-message.game-won a.keep-playing-button {
  546. display: inline-block; }
  547. .game-message.game-won, .game-message.game-over {
  548. display: block; }
  549. .game-message.game-won p, .game-message.game-over p {
  550. -webkit-animation: slide-up 1.5s ease-in-out 2500ms;
  551. -moz-animation: slide-up 1.5s ease-in-out 2500ms;
  552. animation: slide-up 1.5s ease-in-out 2500ms;
  553. -webkit-animation-fill-mode: both;
  554. -moz-animation-fill-mode: both;
  555. animation-fill-mode: both; }
  556. .game-message.game-won .mailing-list, .game-message.game-over .mailing-list {
  557. -webkit-animation: fade-in 1.5s ease-in-out 2500ms;
  558. -moz-animation: fade-in 1.5s ease-in-out 2500ms;
  559. animation: fade-in 1.5s ease-in-out 2500ms;
  560. -webkit-animation-fill-mode: both;
  561. -moz-animation-fill-mode: both;
  562. animation-fill-mode: both; }
  563.  
  564. .grid-container {
  565. position: absolute;
  566. z-index: 1; }
  567.  
  568. .grid-row {
  569. margin-bottom: 15px; }
  570. .grid-row:last-child {
  571. margin-bottom: 0; }
  572. .grid-row:after {
  573. content: "";
  574. display: block;
  575. clear: both; }
  576.  
  577. .grid-cell {
  578. width: 106.25px;
  579. height: 106.25px;
  580. margin-right: 15px;
  581. float: left;
  582. border-radius: 3px;
  583. background: rgba(238, 228, 218, 0.35); }
  584. .grid-cell:last-child {
  585. margin-right: 0; }
  586.  
  587. .tile-container {
  588. position: absolute;
  589. z-index: 2; }
  590.  
  591. .tile, .tile .tile-inner {
  592. width: 107px;
  593. height: 107px;
  594. line-height: 107px; }
  595. .tile.tile-position-1-1 {
  596. -webkit-transform: translate(0px, 0px);
  597. -moz-transform: translate(0px, 0px);
  598. -ms-transform: translate(0px, 0px);
  599. transform: translate(0px, 0px); }
  600. .tile.tile-position-1-2 {
  601. -webkit-transform: translate(0px, 121px);
  602. -moz-transform: translate(0px, 121px);
  603. -ms-transform: translate(0px, 121px);
  604. transform: translate(0px, 121px); }
  605. .tile.tile-position-1-3 {
  606. -webkit-transform: translate(0px, 242px);
  607. -moz-transform: translate(0px, 242px);
  608. -ms-transform: translate(0px, 242px);
  609. transform: translate(0px, 242px); }
  610. .tile.tile-position-1-4 {
  611. -webkit-transform: translate(0px, 363px);
  612. -moz-transform: translate(0px, 363px);
  613. -ms-transform: translate(0px, 363px);
  614. transform: translate(0px, 363px); }
  615. .tile.tile-position-2-1 {
  616. -webkit-transform: translate(121px, 0px);
  617. -moz-transform: translate(121px, 0px);
  618. -ms-transform: translate(121px, 0px);
  619. transform: translate(121px, 0px); }
  620. .tile.tile-position-2-2 {
  621. -webkit-transform: translate(121px, 121px);
  622. -moz-transform: translate(121px, 121px);
  623. -ms-transform: translate(121px, 121px);
  624. transform: translate(121px, 121px); }
  625. .tile.tile-position-2-3 {
  626. -webkit-transform: translate(121px, 242px);
  627. -moz-transform: translate(121px, 242px);
  628. -ms-transform: translate(121px, 242px);
  629. transform: translate(121px, 242px); }
  630. .tile.tile-position-2-4 {
  631. -webkit-transform: translate(121px, 363px);
  632. -moz-transform: translate(121px, 363px);
  633. -ms-transform: translate(121px, 363px);
  634. transform: translate(121px, 363px); }
  635. .tile.tile-position-3-1 {
  636. -webkit-transform: translate(242px, 0px);
  637. -moz-transform: translate(242px, 0px);
  638. -ms-transform: translate(242px, 0px);
  639. transform: translate(242px, 0px); }
  640. .tile.tile-position-3-2 {
  641. -webkit-transform: translate(242px, 121px);
  642. -moz-transform: translate(242px, 121px);
  643. -ms-transform: translate(242px, 121px);
  644. transform: translate(242px, 121px); }
  645. .tile.tile-position-3-3 {
  646. -webkit-transform: translate(242px, 242px);
  647. -moz-transform: translate(242px, 242px);
  648. -ms-transform: translate(242px, 242px);
  649. transform: translate(242px, 242px); }
  650. .tile.tile-position-3-4 {
  651. -webkit-transform: translate(242px, 363px);
  652. -moz-transform: translate(242px, 363px);
  653. -ms-transform: translate(242px, 363px);
  654. transform: translate(242px, 363px); }
  655. .tile.tile-position-4-1 {
  656. -webkit-transform: translate(363px, 0px);
  657. -moz-transform: translate(363px, 0px);
  658. -ms-transform: translate(363px, 0px);
  659. transform: translate(363px, 0px); }
  660. .tile.tile-position-4-2 {
  661. -webkit-transform: translate(363px, 121px);
  662. -moz-transform: translate(363px, 121px);
  663. -ms-transform: translate(363px, 121px);
  664. transform: translate(363px, 121px); }
  665. .tile.tile-position-4-3 {
  666. -webkit-transform: translate(363px, 242px);
  667. -moz-transform: translate(363px, 242px);
  668. -ms-transform: translate(363px, 242px);
  669. transform: translate(363px, 242px); }
  670. .tile.tile-position-4-4 {
  671. -webkit-transform: translate(363px, 363px);
  672. -moz-transform: translate(363px, 363px);
  673. -ms-transform: translate(363px, 363px);
  674. transform: translate(363px, 363px); }
  675.  
  676. .tile {
  677. position: absolute;
  678. -webkit-transition: 100ms ease-in-out;
  679. -moz-transition: 100ms ease-in-out;
  680. transition: 100ms ease-in-out;
  681. -webkit-transition-property: -webkit-transform;
  682. -moz-transition-property: -moz-transform;
  683. transition-property: transform; }
  684. .tile .tile-inner {
  685. border-radius: 3px;
  686. background: #eee4da;
  687. text-align: center;
  688. font-weight: bold;
  689. z-index: 10;
  690. font-size: 55px; }
  691. .tile.tile-2 .tile-inner {
  692. background: #eee4da;
  693. box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0), inset 0 0 0 1px rgba(255, 255, 255, 0); }
  694. .tile.tile-4 .tile-inner {
  695. background: #ede0c8;
  696. box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0), inset 0 0 0 1px rgba(255, 255, 255, 0); }
  697. .tile.tile-8 .tile-inner {
  698. color: #f9f6f2;
  699. background: #f2b179; }
  700. .tile.tile-16 .tile-inner {
  701. color: #f9f6f2;
  702. background: #f59563; }
  703. .tile.tile-32 .tile-inner {
  704. color: #f9f6f2;
  705. background: #f67c5f; }
  706. .tile.tile-64 .tile-inner {
  707. color: #f9f6f2;
  708. background: #f65e3b; }
  709. .tile.tile-128 .tile-inner {
  710. color: #f9f6f2;
  711. background: #edcf72;
  712. box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.2381), inset 0 0 0 1px rgba(255, 255, 255, 0.14286);
  713. font-size: 45px; }
  714. @media screen and (max-width: 520px) {
  715. .tile.tile-128 .tile-inner {
  716. font-size: 25px; } }
  717. .tile.tile-256 .tile-inner {
  718. color: #f9f6f2;
  719. background: #edcc61;
  720. box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.31746), inset 0 0 0 1px rgba(255, 255, 255, 0.19048);
  721. font-size: 45px; }
  722. @media screen and (max-width: 520px) {
  723. .tile.tile-256 .tile-inner {
  724. font-size: 25px; } }
  725. .tile.tile-512 .tile-inner {
  726. color: #f9f6f2;
  727. background: #edc850;
  728. box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.39683), inset 0 0 0 1px rgba(255, 255, 255, 0.2381);
  729. font-size: 45px; }
  730. @media screen and (max-width: 520px) {
  731. .tile.tile-512 .tile-inner {
  732. font-size: 25px; } }
  733. .tile.tile-1024 .tile-inner {
  734. color: #f9f6f2;
  735. background: #edc53f;
  736. box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.47619), inset 0 0 0 1px rgba(255, 255, 255, 0.28571);
  737. font-size: 35px; }
  738. @media screen and (max-width: 520px) {
  739. .tile.tile-1024 .tile-inner {
  740. font-size: 15px; } }
  741. .tile.tile-2048 .tile-inner {
  742. color: #f9f6f2;
  743. background: #edc22e;
  744. box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.55556), inset 0 0 0 1px rgba(255, 255, 255, 0.33333);
  745. font-size: 35px; }
  746. @media screen and (max-width: 520px) {
  747. .tile.tile-2048 .tile-inner {
  748. font-size: 15px; } }
  749. .tile.tile-super .tile-inner {
  750. color: #f9f6f2;
  751. background: #3c3a32;
  752. font-size: 30px; }
  753. @media screen and (max-width: 520px) {
  754. .tile.tile-super .tile-inner {
  755. font-size: 10px; } }
  756.  
  757. @-webkit-keyframes appear {
  758. 0% {
  759. opacity: 0;
  760. -webkit-transform: scale(0);
  761. -moz-transform: scale(0);
  762. -ms-transform: scale(0);
  763. transform: scale(0); }
  764.  
  765. 100% {
  766. opacity: 1;
  767. -webkit-transform: scale(1);
  768. -moz-transform: scale(1);
  769. -ms-transform: scale(1);
  770. transform: scale(1); } }
  771. @-moz-keyframes appear {
  772. 0% {
  773. opacity: 0;
  774. -webkit-transform: scale(0);
  775. -moz-transform: scale(0);
  776. -ms-transform: scale(0);
  777. transform: scale(0); }
  778.  
  779. 100% {
  780. opacity: 1;
  781. -webkit-transform: scale(1);
  782. -moz-transform: scale(1);
  783. -ms-transform: scale(1);
  784. transform: scale(1); } }
  785. @keyframes appear {
  786. 0% {
  787. opacity: 0;
  788. -webkit-transform: scale(0);
  789. -moz-transform: scale(0);
  790. -ms-transform: scale(0);
  791. transform: scale(0); }
  792.  
  793. 100% {
  794. opacity: 1;
  795. -webkit-transform: scale(1);
  796. -moz-transform: scale(1);
  797. -ms-transform: scale(1);
  798. transform: scale(1); } }
  799. .tile-new .tile-inner {
  800. -webkit-animation: appear 200ms ease 100ms;
  801. -moz-animation: appear 200ms ease 100ms;
  802. animation: appear 200ms ease 100ms;
  803. -webkit-animation-fill-mode: backwards;
  804. -moz-animation-fill-mode: backwards;
  805. animation-fill-mode: backwards; }
  806.  
  807. @-webkit-keyframes pop {
  808. 0% {
  809. -webkit-transform: scale(0);
  810. -moz-transform: scale(0);
  811. -ms-transform: scale(0);
  812. transform: scale(0); }
  813.  
  814. 50% {
  815. -webkit-transform: scale(1.2);
  816. -moz-transform: scale(1.2);
  817. -ms-transform: scale(1.2);
  818. transform: scale(1.2); }
  819.  
  820. 100% {
  821. -webkit-transform: scale(1);
  822. -moz-transform: scale(1);
  823. -ms-transform: scale(1);
  824. transform: scale(1); } }
  825. @-moz-keyframes pop {
  826. 0% {
  827. -webkit-transform: scale(0);
  828. -moz-transform: scale(0);
  829. -ms-transform: scale(0);
  830. transform: scale(0); }
  831.  
  832. 50% {
  833. -webkit-transform: scale(1.2);
  834. -moz-transform: scale(1.2);
  835. -ms-transform: scale(1.2);
  836. transform: scale(1.2); }
  837.  
  838. 100% {
  839. -webkit-transform: scale(1);
  840. -moz-transform: scale(1);
  841. -ms-transform: scale(1);
  842. transform: scale(1); } }
  843. @keyframes pop {
  844. 0% {
  845. -webkit-transform: scale(0);
  846. -moz-transform: scale(0);
  847. -ms-transform: scale(0);
  848. transform: scale(0); }
  849.  
  850. 50% {
  851. -webkit-transform: scale(1.2);
  852. -moz-transform: scale(1.2);
  853. -ms-transform: scale(1.2);
  854. transform: scale(1.2); }
  855.  
  856. 100% {
  857. -webkit-transform: scale(1);
  858. -moz-transform: scale(1);
  859. -ms-transform: scale(1);
  860. transform: scale(1); } }
  861. .tile-merged .tile-inner {
  862. z-index: 20;
  863. -webkit-animation: pop 200ms ease 100ms;
  864. -moz-animation: pop 200ms ease 100ms;
  865. animation: pop 200ms ease 100ms;
  866. -webkit-animation-fill-mode: backwards;
  867. -moz-animation-fill-mode: backwards;
  868. animation-fill-mode: backwards; }
  869.  
  870. .above-game:after {
  871. content: "";
  872. display: block;
  873. clear: both; }
  874.  
  875. .game-intro {
  876. float: left;
  877. line-height: 42px;
  878. margin-bottom: 0; }
  879.  
  880. .restart-button {
  881. display: inline-block;
  882. background: #8f7a66;
  883. border-radius: 3px;
  884. padding: 0 20px;
  885. text-decoration: none;
  886. color: #f9f6f2;
  887. height: 40px;
  888. line-height: 42px;
  889. cursor: pointer;
  890. display: block;
  891. text-align: center;
  892. float: right; }
  893.  
  894. .game-explanation {
  895. margin-top: 30px; }
  896.  
  897. .sharing {
  898. margin-top: 20px;
  899. text-align: center; }
  900. .sharing > iframe, .sharing > span, .sharing > form {
  901. display: inline-block;
  902. vertical-align: middle; }
  903.  
  904. @media screen and (max-width: 520px) {
  905. html, body {
  906. font-size: 15px; }
  907.  
  908. body {
  909. margin-top: 0;
  910. padding: 20px; }
  911.  
  912. h1.title {
  913. font-size: 27px;
  914. margin-top: 15px; }
  915.  
  916. .container {
  917. width: 280px;
  918. margin: 0 auto; }
  919.  
  920. .score-container, .best-container {
  921. margin-top: 0;
  922. padding: 15px 10px;
  923. min-width: 40px; }
  924.  
  925. .heading {
  926. margin-bottom: 10px; }
  927.  
  928. .game-intro {
  929. width: 55%;
  930. display: block;
  931. box-sizing: border-box;
  932. line-height: 1.65; }
  933.  
  934. .restart-button {
  935. width: 42%;
  936. padding: 0;
  937. display: block;
  938. box-sizing: border-box;
  939. margin-top: 2px; }
  940.  
  941. .game-container {
  942. margin-top: 17px;
  943. position: relative;
  944. padding: 10px;
  945. cursor: default;
  946. -webkit-touch-callout: none;
  947. -ms-touch-callout: none;
  948. -webkit-user-select: none;
  949. -moz-user-select: none;
  950. -ms-user-select: none;
  951. -ms-touch-action: none;
  952. touch-action: none;
  953. background: #bbada0;
  954. border-radius: 6px;
  955. width: 280px;
  956. height: 280px;
  957. -webkit-box-sizing: border-box;
  958. -moz-box-sizing: border-box;
  959. box-sizing: border-box; }
  960.  
  961. .game-message {
  962. display: none;
  963. position: absolute;
  964. top: 0;
  965. right: 0;
  966. bottom: 0;
  967. left: 0;
  968. background: rgba(238, 228, 218, 0.73);
  969. z-index: 100;
  970. padding-top: 40px;
  971. text-align: center;
  972. -webkit-animation: fade-in 800ms ease 1200ms;
  973. -moz-animation: fade-in 800ms ease 1200ms;
  974. animation: fade-in 800ms ease 1200ms;
  975. -webkit-animation-fill-mode: both;
  976. -moz-animation-fill-mode: both;
  977. animation-fill-mode: both; }
  978. .game-message p {
  979. font-size: 60px;
  980. font-weight: bold;
  981. height: 60px;
  982. line-height: 60px;
  983. margin-top: 222px; }
  984. .game-message .lower {
  985. display: block;
  986. margin-top: 29px; }
  987. .game-message .mailing-list {
  988. margin-top: 52px; }
  989. .game-message .mailing-list strong {
  990. display: block;
  991. margin-bottom: 10px; }
  992. .game-message .mailing-list .mailing-list-email-field {
  993. width: 230px;
  994. margin-right: 5px; }
  995. .game-message a {
  996. display: inline-block;
  997. background: #8f7a66;
  998. border-radius: 3px;
  999. padding: 0 20px;
  1000. text-decoration: none;
  1001. color: #f9f6f2;
  1002. height: 40px;
  1003. line-height: 42px;
  1004. cursor: pointer;
  1005. margin-left: 9px; }
  1006. .game-message a.keep-playing-button {
  1007. display: none; }
  1008. .game-message .score-sharing {
  1009. display: inline-block;
  1010. vertical-align: middle;
  1011. margin-left: 10px; }
  1012. .game-message.game-won {
  1013. background: rgba(237, 194, 46, 0.5);
  1014. color: #f9f6f2; }
  1015. .game-message.game-won a.keep-playing-button {
  1016. display: inline-block; }
  1017. .game-message.game-won, .game-message.game-over {
  1018. display: block; }
  1019. .game-message.game-won p, .game-message.game-over p {
  1020. -webkit-animation: slide-up 1.5s ease-in-out 2500ms;
  1021. -moz-animation: slide-up 1.5s ease-in-out 2500ms;
  1022. animation: slide-up 1.5s ease-in-out 2500ms;
  1023. -webkit-animation-fill-mode: both;
  1024. -moz-animation-fill-mode: both;
  1025. animation-fill-mode: both; }
  1026. .game-message.game-won .mailing-list, .game-message.game-over .mailing-list {
  1027. -webkit-animation: fade-in 1.5s ease-in-out 2500ms;
  1028. -moz-animation: fade-in 1.5s ease-in-out 2500ms;
  1029. animation: fade-in 1.5s ease-in-out 2500ms;
  1030. -webkit-animation-fill-mode: both;
  1031. -moz-animation-fill-mode: both;
  1032. animation-fill-mode: both; }
  1033.  
  1034. .grid-container {
  1035. position: absolute;
  1036. z-index: 1; }
  1037.  
  1038. .grid-row {
  1039. margin-bottom: 10px; }
  1040. .grid-row:last-child {
  1041. margin-bottom: 0; }
  1042. .grid-row:after {
  1043. content: "";
  1044. display: block;
  1045. clear: both; }
  1046.  
  1047. .grid-cell {
  1048. width: 57.5px;
  1049. height: 57.5px;
  1050. margin-right: 10px;
  1051. float: left;
  1052. border-radius: 3px;
  1053. background: rgba(238, 228, 218, 0.35); }
  1054. .grid-cell:last-child {
  1055. margin-right: 0; }
  1056.  
  1057. .tile-container {
  1058. position: absolute;
  1059. z-index: 2; }
  1060.  
  1061. .tile, .tile .tile-inner {
  1062. width: 58px;
  1063. height: 58px;
  1064. line-height: 58px; }
  1065. .tile.tile-position-1-1 {
  1066. -webkit-transform: translate(0px, 0px);
  1067. -moz-transform: translate(0px, 0px);
  1068. -ms-transform: translate(0px, 0px);
  1069. transform: translate(0px, 0px); }
  1070. .tile.tile-position-1-2 {
  1071. -webkit-transform: translate(0px, 67px);
  1072. -moz-transform: translate(0px, 67px);
  1073. -ms-transform: translate(0px, 67px);
  1074. transform: translate(0px, 67px); }
  1075. .tile.tile-position-1-3 {
  1076. -webkit-transform: translate(0px, 135px);
  1077. -moz-transform: translate(0px, 135px);
  1078. -ms-transform: translate(0px, 135px);
  1079. transform: translate(0px, 135px); }
  1080. .tile.tile-position-1-4 {
  1081. -webkit-transform: translate(0px, 202px);
  1082. -moz-transform: translate(0px, 202px);
  1083. -ms-transform: translate(0px, 202px);
  1084. transform: translate(0px, 202px); }
  1085. .tile.tile-position-2-1 {
  1086. -webkit-transform: translate(67px, 0px);
  1087. -moz-transform: translate(67px, 0px);
  1088. -ms-transform: translate(67px, 0px);
  1089. transform: translate(67px, 0px); }
  1090. .tile.tile-position-2-2 {
  1091. -webkit-transform: translate(67px, 67px);
  1092. -moz-transform: translate(67px, 67px);
  1093. -ms-transform: translate(67px, 67px);
  1094. transform: translate(67px, 67px); }
  1095. .tile.tile-position-2-3 {
  1096. -webkit-transform: translate(67px, 135px);
  1097. -moz-transform: translate(67px, 135px);
  1098. -ms-transform: translate(67px, 135px);
  1099. transform: translate(67px, 135px); }
  1100. .tile.tile-position-2-4 {
  1101. -webkit-transform: translate(67px, 202px);
  1102. -moz-transform: translate(67px, 202px);
  1103. -ms-transform: translate(67px, 202px);
  1104. transform: translate(67px, 202px); }
  1105. .tile.tile-position-3-1 {
  1106. -webkit-transform: translate(135px, 0px);
  1107. -moz-transform: translate(135px, 0px);
  1108. -ms-transform: translate(135px, 0px);
  1109. transform: translate(135px, 0px); }
  1110. .tile.tile-position-3-2 {
  1111. -webkit-transform: translate(135px, 67px);
  1112. -moz-transform: translate(135px, 67px);
  1113. -ms-transform: translate(135px, 67px);
  1114. transform: translate(135px, 67px); }
  1115. .tile.tile-position-3-3 {
  1116. -webkit-transform: translate(135px, 135px);
  1117. -moz-transform: translate(135px, 135px);
  1118. -ms-transform: translate(135px, 135px);
  1119. transform: translate(135px, 135px); }
  1120. .tile.tile-position-3-4 {
  1121. -webkit-transform: translate(135px, 202px);
  1122. -moz-transform: translate(135px, 202px);
  1123. -ms-transform: translate(135px, 202px);
  1124. transform: translate(135px, 202px); }
  1125. .tile.tile-position-4-1 {
  1126. -webkit-transform: translate(202px, 0px);
  1127. -moz-transform: translate(202px, 0px);
  1128. -ms-transform: translate(202px, 0px);
  1129. transform: translate(202px, 0px); }
  1130. .tile.tile-position-4-2 {
  1131. -webkit-transform: translate(202px, 67px);
  1132. -moz-transform: translate(202px, 67px);
  1133. -ms-transform: translate(202px, 67px);
  1134. transform: translate(202px, 67px); }
  1135. .tile.tile-position-4-3 {
  1136. -webkit-transform: translate(202px, 135px);
  1137. -moz-transform: translate(202px, 135px);
  1138. -ms-transform: translate(202px, 135px);
  1139. transform: translate(202px, 135px); }
  1140. .tile.tile-position-4-4 {
  1141. -webkit-transform: translate(202px, 202px);
  1142. -moz-transform: translate(202px, 202px);
  1143. -ms-transform: translate(202px, 202px);
  1144. transform: translate(202px, 202px); }
  1145.  
  1146. .tile .tile-inner {
  1147. font-size: 35px; }
  1148.  
  1149. .game-message {
  1150. padding-top: 0; }
  1151. .game-message p {
  1152. font-size: 30px !important;
  1153. height: 30px !important;
  1154. line-height: 30px !important;
  1155. margin-top: 32% !important;
  1156. margin-bottom: 0 !important; }
  1157. .game-message .lower {
  1158. margin-top: 10px !important; }
  1159. .game-message.game-won .score-sharing {
  1160. margin-top: 10px; }
  1161. .game-message.game-over .mailing-list {
  1162. margin-top: 25px; }
  1163. .game-message .mailing-list {
  1164. margin-top: 10px; }
  1165. .game-message .mailing-list .mailing-list-email-field {
  1166. width: 180px; }
  1167.  
  1168. .sharing > iframe, .sharing > span, .sharing > form {
  1169. display: block;
  1170. margin: 0 auto;
  1171. margin-bottom: 20px; } }
  1172. .pp-donate button {
  1173. -webkit-appearance: none;
  1174. -moz-appearance: none;
  1175. appearance: none;
  1176. border: none;
  1177. font: inherit;
  1178. color: inherit;
  1179. display: inline-block;
  1180. background: #8f7a66;
  1181. border-radius: 3px;
  1182. padding: 0 20px;
  1183. text-decoration: none;
  1184. color: #f9f6f2;
  1185. height: 40px;
  1186. line-height: 42px;
  1187. cursor: pointer; }
  1188. .pp-donate button img {
  1189. vertical-align: -4px;
  1190. margin-right: 8px; }
  1191.  
  1192. .btc-donate {
  1193. position: relative;
  1194. margin-left: 10px;
  1195. display: inline-block;
  1196. background: #8f7a66;
  1197. border-radius: 3px;
  1198. padding: 0 20px;
  1199. text-decoration: none;
  1200. color: #f9f6f2;
  1201. height: 40px;
  1202. line-height: 42px;
  1203. cursor: pointer; }
  1204. .btc-donate img {
  1205. vertical-align: -4px;
  1206. margin-right: 8px; }
  1207. .btc-donate a {
  1208. color: #f9f6f2;
  1209. text-decoration: none;
  1210. font-weight: normal; }
  1211. .btc-donate .address {
  1212. cursor: auto;
  1213. position: absolute;
  1214. width: 340px;
  1215. right: 50%;
  1216. margin-right: -170px;
  1217. padding-bottom: 7px;
  1218. top: -30px;
  1219. opacity: 0;
  1220. pointer-events: none;
  1221. -webkit-transition: 400ms ease;
  1222. -moz-transition: 400ms ease;
  1223. transition: 400ms ease;
  1224. -webkit-transition-property: top, opacity;
  1225. -moz-transition-property: top, opacity;
  1226. transition-property: top, opacity; }
  1227. .btc-donate .address:after {
  1228. position: absolute;
  1229. border-top: 10px solid #bbada0;
  1230. border-right: 7px solid transparent;
  1231. border-left: 7px solid transparent;
  1232. content: "";
  1233. bottom: 0px;
  1234. left: 50%;
  1235. margin-left: -7px; }
  1236. .btc-donate .address code {
  1237. background-color: #bbada0;
  1238. padding: 10px 15px;
  1239. width: 100%;
  1240. border-radius: 3px;
  1241. line-height: 1;
  1242. font-weight: normal;
  1243. font-size: 15px;
  1244. font-family: Consolas, "Liberation Mono", Courier, monospace;
  1245. text-align: center; }
  1246. .btc-donate:hover .address, .btc-donate .address:hover .address {
  1247. opacity: 1;
  1248. top: -45px;
  1249. pointer-events: auto; }
  1250. @media screen and (max-width: 520px) {
  1251. .btc-donate {
  1252. width: 120px; }
  1253. .btc-donate .address {
  1254. margin-right: -150px;
  1255. width: 300px; }
  1256. .btc-donate .address code {
  1257. font-size: 13px; }
  1258. .btc-donate .address:after {
  1259. left: 50%;
  1260. bottom: 2px; } }
  1261.  
  1262. @-webkit-keyframes pop-in-big {
  1263. 0% {
  1264. -webkit-transform: scale(0) translateZ(0);
  1265. -moz-transform: scale(0) translateZ(0);
  1266. transform: scale(0) translateZ(0);
  1267. opacity: 0;
  1268. margin-top: -40px; }
  1269.  
  1270. 100% {
  1271. -webkit-transform: scale(1) translateZ(0);
  1272. -moz-transform: scale(1) translateZ(0);
  1273. transform: scale(1) translateZ(0);
  1274. opacity: 1;
  1275. margin-top: 30px; } }
  1276. @-moz-keyframes pop-in-big {
  1277. 0% {
  1278. -webkit-transform: scale(0) translateZ(0);
  1279. -moz-transform: scale(0) translateZ(0);
  1280. transform: scale(0) translateZ(0);
  1281. opacity: 0;
  1282. margin-top: -40px; }
  1283.  
  1284. 100% {
  1285. -webkit-transform: scale(1) translateZ(0);
  1286. -moz-transform: scale(1) translateZ(0);
  1287. transform: scale(1) translateZ(0);
  1288. opacity: 1;
  1289. margin-top: 30px; } }
  1290. @keyframes pop-in-big {
  1291. 0% {
  1292. -webkit-transform: scale(0) translateZ(0);
  1293. -moz-transform: scale(0) translateZ(0);
  1294. transform: scale(0) translateZ(0);
  1295. opacity: 0;
  1296. margin-top: -40px; }
  1297.  
  1298. 100% {
  1299. -webkit-transform: scale(1) translateZ(0);
  1300. -moz-transform: scale(1) translateZ(0);
  1301. transform: scale(1) translateZ(0);
  1302. opacity: 1;
  1303. margin-top: 30px; } }
  1304. @-webkit-keyframes pop-in-small {
  1305. 0% {
  1306. -webkit-transform: scale(0) translateZ(0);
  1307. -moz-transform: scale(0) translateZ(0);
  1308. transform: scale(0) translateZ(0);
  1309. opacity: 0;
  1310. margin-top: -40px; }
  1311.  
  1312. 100% {
  1313. -webkit-transform: scale(1) translateZ(0);
  1314. -moz-transform: scale(1) translateZ(0);
  1315. transform: scale(1) translateZ(0);
  1316. opacity: 1;
  1317. margin-top: 10px; } }
  1318. @-moz-keyframes pop-in-small {
  1319. 0% {
  1320. -webkit-transform: scale(0) translateZ(0);
  1321. -moz-transform: scale(0) translateZ(0);
  1322. transform: scale(0) translateZ(0);
  1323. opacity: 0;
  1324. margin-top: -40px; }
  1325.  
  1326. 100% {
  1327. -webkit-transform: scale(1) translateZ(0);
  1328. -moz-transform: scale(1) translateZ(0);
  1329. transform: scale(1) translateZ(0);
  1330. opacity: 1;
  1331. margin-top: 10px; } }
  1332. @keyframes pop-in-small {
  1333. 0% {
  1334. -webkit-transform: scale(0) translateZ(0);
  1335. -moz-transform: scale(0) translateZ(0);
  1336. transform: scale(0) translateZ(0);
  1337. opacity: 0;
  1338. margin-top: -40px; }
  1339.  
  1340. 100% {
  1341. -webkit-transform: scale(1) translateZ(0);
  1342. -moz-transform: scale(1) translateZ(0);
  1343. transform: scale(1) translateZ(0);
  1344. opacity: 1;
  1345. margin-top: 10px; } }
  1346. .app-notice {
  1347. position: relative;
  1348. -webkit-animation: pop-in-big 700ms ease 2s both;
  1349. -moz-animation: pop-in-big 700ms ease 2s both;
  1350. animation: pop-in-big 700ms ease 2s both;
  1351. background: #edc53f;
  1352. color: white;
  1353. padding: 10px;
  1354. margin-top: 30px;
  1355. height: 40px;
  1356. box-sizing: border-box;
  1357. border-radius: 3px; }
  1358. .app-notice:after {
  1359. content: "";
  1360. display: block;
  1361. clear: both; }
  1362. .app-notice .notice-close-button {
  1363. float: right;
  1364. font-weight: bold;
  1365. cursor: pointer;
  1366. margin-left: 10px;
  1367. opacity: 0.7; }
  1368. .app-notice p {
  1369. margin-bottom: 0; }
  1370. .app-notice, .app-notice p {
  1371. line-height: 20px; }
  1372. .app-notice a {
  1373. color: white; }
  1374. @media screen and (max-width: 520px) {
  1375. .app-notice {
  1376. -webkit-animation: pop-in-small 700ms ease 2s both;
  1377. -moz-animation: pop-in-small 700ms ease 2s both;
  1378. animation: pop-in-small 700ms ease 2s both;
  1379. margin-top: 10px;
  1380. height: 40px; } }
  1381.  
  1382. .links {
  1383. text-align: center;
  1384. margin-top: 20px; }
  1385.  
  1386. .privacy {
  1387. word-wrap: break-word; }
  1388.  
  1389. /* extras */
  1390. .sidebar {
  1391. width: 180px;
  1392. top: 0;
  1393. bottom: 0;
  1394. right: 0;
  1395. position: fixed;
  1396. display: flex;
  1397. align-items: center;
  1398. justify-content: center; }
  1399.  
  1400. @media (max-width: 880px) {
  1401. .sidebar,
  1402. .sidebar .adsbygoogle {
  1403. display: none; } }
  1404.  
  1405.  
  1406. .under-board-container {
  1407. margin-top: 38px; }
  1408.  
  1409. .under-board-container,
  1410. .under-board-container .adsbygoogle {
  1411. width: 100%;
  1412. height: 80px;
  1413. display: none; }
  1414.  
  1415. @media (max-width: 880px) {
  1416. .under-board-container,
  1417. .under-board-container .adsbygoogle {
  1418. display: block; } }
  1419.  
  1420. .cookie-notice {
  1421. position: fixed;
  1422. font-size: 15px;
  1423. z-index: 999;
  1424. right: 20px;
  1425. bottom: 20px;
  1426. width: 20%;
  1427. min-width: 460px;
  1428. background: #e8e5db;
  1429. padding: 10px;
  1430. margin-top: 30px;
  1431. box-sizing: border-box;
  1432. border-radius: 3px;
  1433. display: flex;
  1434. align-items: center;
  1435. justify-content: center; }
  1436. @media screen and (max-width: 520px) {
  1437. .cookie-notice {
  1438. width: auto;
  1439. left: 20px;
  1440. min-width: auto; } }
  1441. .cookie-notice, .cookie-notice p a {
  1442. color: #a09488; }
  1443. .cookie-notice p {
  1444. margin-bottom: 0;
  1445. flex: 1; }
  1446. .cookie-notice, .cookie-notice p {
  1447. line-height: 20px; }
  1448.  
  1449. .cookie-notice-dismiss-button {
  1450. display: inline-block;
  1451. background: #8f7a66;
  1452. border-radius: 3px;
  1453. padding: 0 20px;
  1454. text-decoration: none;
  1455. color: #f9f6f2;
  1456. height: 40px;
  1457. line-height: 42px;
  1458. cursor: pointer;
  1459. flex: 0 0 auto;
  1460. margin-left: 20px; }
  1461.  
  1462. </style>
  1463. <meta name="apple-mobile-web-app-capable" content="yes">
  1464. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  1465.  
  1466. <meta name="HandheldFriendly" content="True">
  1467. <meta name="MobileOptimized" content="320">
  1468. <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0, maximum-scale=1, user-scalable=no, minimal-ui">
  1469. <meta name="format-detection" content="telephone=no">
  1470.  
  1471. <script charset="utf-8">
  1472. (window.__twttrll=window.__twttrll||[]).push([[3],{166:function(t,e,a){var r=a(37),n=a(170),s=a(7);(r=Object.create(r)).build=s(r.build,null,n),t.exports=r},167:function(t,e,a){var r=a(36),n=a(33),s=a(35),i=a(0),o=a(7),u=a(32),c=a(4),l=a(174);t.exports=function(t){t.params({partner:{fallback:o(u.val,u,"partner")}}),t.define("scribeItems",function(){return{}}),t.define("scribeNamespace",function(){return{client:"tfw"}}),t.define("scribeData",function(){return{widget_origin:s.rootDocumentLocation(),widget_frame:s.isFramed()&&s.currentDocumentLocation(),widget_partner:this.params.partner,widget_site_screen_name:l(u.val("site")),widget_site_user_id:c.asNumber(u.val("site:id")),widget_creator_screen_name:l(u.val("creator")),widget_creator_user_id:c.asNumber(u.val("creator:id"))}}),t.define("scribe",function(t,e,a){t=i.aug(this.scribeNamespace(),t||{}),e=i.aug(this.scribeData(),e||{}),r.scribe(t,e,!1,a)}),t.define("scribeInteraction",function(t,e,a){var r=n.extractTermsFromDOM(t.target);r.action=t.type,"url"===r.element&&(r.element=n.clickEventElement(t.target)),this.scribe(r,e,a)})}},169:function(t,e,a){var r=a(4),n=a(0);t.exports=function(t){t.define("widgetDataAttributes",function(){return{}}),t.define("setDataAttributes",function(){var t=this.sandbox.sandboxEl;n.forIn(this.widgetDataAttributes(),function(e,a){r.hasValue(a)&&t.setAttribute("data-"+e,a)})}),t.after("render",function(){this.setDataAttributes()})}},170:function(t,e,a){var r=a(38),n=a(0),s=a(171);function i(){r.apply(this,arguments),this.Widget=this.Component}i.prototype=Object.create(r.prototype),n.aug(i.prototype,{factory:s,build:function(){return r.prototype.build.apply(this,arguments)},selectors:function(t){var e=this.Widget.prototype.selectors;t=t||{},this.Widget.prototype.selectors=n.aug({},t,e)}}),t.exports=i},171:function(t,e,a){var r=a(6),n=a(34),s=a(39),i=a(0),o=a(7),u=a(172),c="twitter-widget-";t.exports=function(){var t=s();function e(e,a){t.apply(this,arguments),this.id=c+u(),this.sandbox=a}return e.prototype=Object.create(t.prototype),i.aug(e.prototype,{selectors:{},hydrate:function(){return r.resolve()},prepForInsertion:function(){},render:function(){return r.resolve()},show:function(){return r.resolve()},resize:function(){return r.resolve()},select:function(t,e){return 1===arguments.length&&(e=t,t=this.el),t?(e=this.selectors[e]||e,i.toRealArray(t.querySelectorAll(e))):[]},selectOne:function(){return this.select.apply(this,arguments)[0]},selectLast:function(){return this.select.apply(this,arguments).pop()},on:function(t,e,a){var r,s=this.el;this.el&&(t=(t||"").split(/\s+/),2===arguments.length?a=e:r=e,r=this.selectors[r]||r,a=o(a,this),t.forEach(r?function(t){n.delegate(s,t,r,a)}:function(t){s.addEventListener(t,a,!1)}))}}),e}},172:function(t,e){var a=0;t.exports=function(){return String(a++)}},174:function(t,e){t.exports=function(t){return t&&"@"===t[0]?t.substr(1):t}},212:function(t,e){var a=/\{\{([\w_]+)\}\}/g;t.exports=function(t,e){return t.replace(a,function(t,a){return void 0!==e[a]?e[a]:t})}},216:function(t,e,a){var r=a(6),n=a(166),s=a(32),i=a(19),o=a(212),u=a(0),c=a(11),l=a(7),p=a(70),h=a(68),m=p.followButtonHtmlPath,f="Twitter Follow Button",d="twitter-follow-button";function g(t){return"large"===t?"l":"m"}t.exports=n.couple(a(167),a(169),function(t){t.params({screenName:{required:!0},lang:{required:!0,transform:h.matchLanguage,fallback:"en"},size:{fallback:"medium",transform:g},showScreenName:{fallback:!0},showCount:{fallback:!0},partner:{fallback:l(s.val,s,"partner")},count:{},preview:{}}),t.define("getUrlParams",function(){return u.compact({id:this.id,lang:this.params.lang,size:this.params.size,screen_name:this.params.screenName,show_count:"none"!==this.params.count&&this.params.showCount,show_screen_name:this.params.showScreenName,preview:this.params.preview,partner:this.params.partner,dnt:i.enabled(),time:+new Date})}),t.around("widgetDataAttributes",function(t){return u.aug({"screen-name":this.params.screenName},t())}),t.around("scribeNamespace",function(t){return u.aug(t(),{page:"button",section:"follow"})}),t.define("scribeImpression",function(){this.scribe({action:"impression"},{language:this.params.lang,message:[this.params.size,"none"===this.params.count?"nocount":"withcount"].join(":")+":"})}),t.override("render",function(){var t=o(m,{lang:this.params.lang}),e=c.encode(this.getUrlParams()),a=p.resourceBaseUrl+t+"#"+e;return this.scribeImpression(),r.all([this.sandbox.setTitle(f),this.sandbox.addClass(d),this.sandbox.loadDocument(a)])})})},250:function(t,e,a){var r=a(6),n=a(5),s=a(8),i=a(32),o=a(19),u=a(212),c=a(76),l=a(0),p=a(11),h=a(3),m=a(166),f=a(7),d=a(70),g=a(68),b=d.tweetButtonHtmlPath,w="Twitter Tweet Button",v="twitter-tweet-button",y="twitter-share-button",_="twitter-hashtag-button",x="twitter-mention-button",N=["share","hashtag","mention"];function D(t){return"large"===t?"l":"m"}function k(t){return l.contains(N,t)}function z(t){return h.hashTag(t,!1)}function A(t){return/\+/.test(t)&&!/ /.test(t)?t.replace(/\+/g," "):t}t.exports=m.couple(a(167),a(169),function(t){t.params({lang:{required:!0,transform:g.matchLanguage,fallback:"en"},size:{fallback:"medium",transform:D},type:{fallback:"share",validate:k},text:{transform:A},screenName:{transform:h.screenName},buttonHashtag:{transform:z},partner:{fallback:f(i.val,i,"partner")},via:{},related:{},hashtags:{},url:{}}),t.define("getUrlParams",function(){var t=this.params.text,e=this.params.url,a=this.params.via,r=this.params.related,i=c.getScreenNameFromPage();return"share"===this.params.type?(t=t||n.title,e=e||c.getCanonicalURL()||s.href,a=a||i):i&&(r=r?i+","+r:i),l.compact({id:this.id,lang:this.params.lang,size:this.params.size,type:this.params.type,text:t,url:e,via:a,related:r,button_hashtag:this.params.buttonHashtag,screen_name:this.params.screenName,hashtags:this.params.hashtags,partner:this.params.partner,original_referer:s.href,dnt:o.enabled(),time:+new Date})}),t.around("widgetDataAttributes",function(t){return"mention"==this.params.type?l.aug({"screen-name":this.params.screenName},t()):"hashtag"==this.params.type?l.aug({hashtag:this.params.buttonHashtag},t()):l.aug({url:this.params.url},t())}),t.around("scribeNamespace",function(t){return l.aug(t(),{page:"button",section:this.params.type})}),t.define("scribeImpression",function(){this.scribe({action:"impression"},{language:this.params.lang,message:[this.params.size,"nocount"].join(":")+":"})}),t.override("render",function(){var t,e=u(b,{lang:this.params.lang}),a=p.encode(this.getUrlParams()),n=d.resourceBaseUrl+e+"#"+a;switch(this.params.type){case"hashtag":t=_;break;case"mention":t=x;break;default:t=y}return this.scribeImpression(),r.all([this.sandbox.setTitle(w),this.sandbox.addClass(v),this.sandbox.addClass(t),this.sandbox.loadDocument(n)])})})},85:function(t,e,a){var r=a(166);t.exports=r.build([a(216)])},90:function(t,e,a){var r=a(166);t.exports=r.build([a(250)])}}]);
  1473. </script></head>
  1474. <body data-gr-c-s-loaded="true">
  1475.  
  1476.  
  1477.  
  1478. <div class="container">
  1479. <div class="heading">
  1480. <h1 class="title">2048</h1>
  1481. <div class="scores-container">
  1482. <div class="score-container">0</div>
  1483. <div class="best-container">0</div>
  1484. </div>
  1485. </div>
  1486.  
  1487. <div class="above-game">
  1488. <p class="game-intro">Join the numbers and get to the <strong>2048 tile!</strong></p>
  1489. <a class="restart-button">New Game</a>
  1490. </div>
  1491.  
  1492. <div class="game-container">
  1493. <div class="game-message">
  1494. <p></p>
  1495. <div class="lower">
  1496. <a class="keep-playing-button">Keep going</a>
  1497. <a class="retry-button">Try again</a>
  1498. </div>
  1499. </div>
  1500.  
  1501. <div class="grid-container">
  1502. <div class="grid-row">
  1503. <div class="grid-cell"></div>
  1504. <div class="grid-cell"></div>
  1505. <div class="grid-cell"></div>
  1506. <div class="grid-cell"></div>
  1507. </div>
  1508. <div class="grid-row">
  1509. <div class="grid-cell"></div>
  1510. <div class="grid-cell"></div>
  1511. <div class="grid-cell"></div>
  1512. <div class="grid-cell"></div>
  1513. </div>
  1514. <div class="grid-row">
  1515. <div class="grid-cell"></div>
  1516. <div class="grid-cell"></div>
  1517. <div class="grid-cell"></div>
  1518. <div class="grid-cell"></div>
  1519. </div>
  1520. <div class="grid-row">
  1521. <div class="grid-cell"></div>
  1522. <div class="grid-cell"></div>
  1523. <div class="grid-cell"></div>
  1524. <div class="grid-cell"></div>
  1525. </div>
  1526. </div>
  1527.  
  1528. <div class="tile-container"><div class="tile tile-2 tile-position-2-4 tile-new"><div class="tile-inner">2</div></div><div class="tile tile-2 tile-position-4-2 tile-new"><div class="tile-inner">2</div></div></div>
  1529. </div>
  1530.  
  1531. <p class="game-explanation">
  1532. <strong class="important">How to play:</strong> Use your <strong>arrow keys</strong> to move the tiles. When two tiles with the same number touch, they <strong>merge into one!</strong>
  1533. </p>
  1534. <hr>
  1535. <script>
  1536. Function.prototype.bind = Function.prototype.bind || function (target) {
  1537. var self = this;
  1538. return function (args) {
  1539. if (!(args instanceof Array)) {
  1540. args = [args];
  1541. }
  1542. self.apply(target, args);
  1543. };
  1544. };
  1545.  
  1546. </script>
  1547. <script>
  1548. (function () {
  1549. if (typeof window.Element === "undefined" ||
  1550. "classList" in document.documentElement) {
  1551. return;
  1552. }
  1553.  
  1554. var prototype = Array.prototype,
  1555. push = prototype.push,
  1556. splice = prototype.splice,
  1557. join = prototype.join;
  1558.  
  1559. function DOMTokenList(el) {
  1560. this.el = el;
  1561. // The className needs to be trimmed and split on whitespace
  1562. // to retrieve a list of classes.
  1563. var classes = el.className.replace(/^\s+|\s+$/g, '').split(/\s+/);
  1564. for (var i = 0; i < classes.length; i++) {
  1565. push.call(this, classes[i]);
  1566. }
  1567. }
  1568.  
  1569. DOMTokenList.prototype = {
  1570. add: function (token) {
  1571. if (this.contains(token)) return;
  1572. push.call(this, token);
  1573. this.el.className = this.toString();
  1574. },
  1575. contains: function (token) {
  1576. return this.el.className.indexOf(token) != -1;
  1577. },
  1578. item: function (index) {
  1579. return this[index] || null;
  1580. },
  1581. remove: function (token) {
  1582. if (!this.contains(token)) return;
  1583. for (var i = 0; i < this.length; i++) {
  1584. if (this[i] == token) break;
  1585. }
  1586. splice.call(this, i, 1);
  1587. this.el.className = this.toString();
  1588. },
  1589. toString: function () {
  1590. return join.call(this, ' ');
  1591. },
  1592. toggle: function (token) {
  1593. if (!this.contains(token)) {
  1594. this.add(token);
  1595. } else {
  1596. this.remove(token);
  1597. }
  1598.  
  1599. return this.contains(token);
  1600. }
  1601. };
  1602.  
  1603. window.DOMTokenList = DOMTokenList;
  1604.  
  1605. function defineElementGetter(obj, prop, getter) {
  1606. if (Object.defineProperty) {
  1607. Object.defineProperty(obj, prop, {
  1608. get: getter
  1609. });
  1610. } else {
  1611. obj.__defineGetter__(prop, getter);
  1612. }
  1613. }
  1614.  
  1615. defineElementGetter(HTMLElement.prototype, 'classList', function () {
  1616. return new DOMTokenList(this);
  1617. });
  1618. })();
  1619.  
  1620. </script>
  1621. <script>
  1622. (function () {
  1623. var lastTime = 0;
  1624. var vendors = ['webkit', 'moz'];
  1625. for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
  1626. window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
  1627. window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] ||
  1628. window[vendors[x] + 'CancelRequestAnimationFrame'];
  1629. }
  1630.  
  1631. if (!window.requestAnimationFrame) {
  1632. window.requestAnimationFrame = function (callback) {
  1633. var currTime = new Date().getTime();
  1634. var timeToCall = Math.max(0, 16 - (currTime - lastTime));
  1635. var id = window.setTimeout(function () {
  1636. callback(currTime + timeToCall);
  1637. },
  1638. timeToCall);
  1639. lastTime = currTime + timeToCall;
  1640. return id;
  1641. };
  1642. }
  1643.  
  1644. if (!window.cancelAnimationFrame) {
  1645. window.cancelAnimationFrame = function (id) {
  1646. clearTimeout(id);
  1647. };
  1648. }
  1649. }());
  1650.  
  1651. </script>
  1652. <script>
  1653. function KeyboardInputManager() {
  1654. this.events = {};
  1655.  
  1656. if (window.navigator.msPointerEnabled) {
  1657. //Internet Explorer 10 style
  1658. this.eventTouchstart = "MSPointerDown";
  1659. this.eventTouchmove = "MSPointerMove";
  1660. this.eventTouchend = "MSPointerUp";
  1661. } else {
  1662. this.eventTouchstart = "touchstart";
  1663. this.eventTouchmove = "touchmove";
  1664. this.eventTouchend = "touchend";
  1665. }
  1666.  
  1667. this.listen();
  1668. }
  1669.  
  1670. KeyboardInputManager.prototype.on = function (event, callback) {
  1671. if (!this.events[event]) {
  1672. this.events[event] = [];
  1673. }
  1674. this.events[event].push(callback);
  1675. };
  1676.  
  1677. KeyboardInputManager.prototype.emit = function (event, data) {
  1678. var callbacks = this.events[event];
  1679. if (callbacks) {
  1680. callbacks.forEach(function (callback) {
  1681. callback(data);
  1682. });
  1683. }
  1684. };
  1685.  
  1686. KeyboardInputManager.prototype.listen = function () {
  1687. var self = this;
  1688.  
  1689. var map = {
  1690. 38: 0, // Up
  1691. 39: 1, // Right
  1692. 40: 2, // Down
  1693. 37: 3, // Left
  1694. 75: 0, // Vim up
  1695. 76: 1, // Vim right
  1696. 74: 2, // Vim down
  1697. 72: 3, // Vim left
  1698. 87: 0, // W
  1699. 68: 1, // D
  1700. 83: 2, // S
  1701. 65: 3 // A
  1702. };
  1703.  
  1704. // Respond to direction keys
  1705. document.addEventListener("keydown", function (event) {
  1706. var modifiers = event.altKey || event.ctrlKey || event.metaKey ||
  1707. event.shiftKey;
  1708. var mapped = map[event.which];
  1709.  
  1710. // Ignore the event if it's happening in a text field
  1711. if (self.targetIsInput(event)) return;
  1712.  
  1713. if (!modifiers) {
  1714. if (mapped !== undefined) {
  1715. event.preventDefault();
  1716. self.emit("move", mapped);
  1717. }
  1718. }
  1719.  
  1720. // R key restarts the game
  1721. if (!modifiers && event.which === 82) {
  1722. self.restart.call(self, event);
  1723. }
  1724. });
  1725.  
  1726. // Respond to button presses
  1727. this.bindButtonPress(".retry-button", this.restart);
  1728. this.bindButtonPress(".restart-button", this.restart);
  1729. this.bindButtonPress(".keep-playing-button", this.keepPlaying);
  1730.  
  1731. // Respond to swipe events
  1732. var touchStartClientX, touchStartClientY;
  1733. var gameContainer = document.getElementsByClassName("game-container")[0];
  1734.  
  1735. gameContainer.addEventListener(this.eventTouchstart, function (event) {
  1736. if ((!window.navigator.msPointerEnabled && event.touches.length > 1) ||
  1737. event.targetTouches.length > 1 ||
  1738. self.targetIsInput(event)) {
  1739. return; // Ignore if touching with more than 1 finger or touching input
  1740. }
  1741.  
  1742. if (window.navigator.msPointerEnabled) {
  1743. touchStartClientX = event.pageX;
  1744. touchStartClientY = event.pageY;
  1745. } else {
  1746. touchStartClientX = event.touches[0].clientX;
  1747. touchStartClientY = event.touches[0].clientY;
  1748. }
  1749.  
  1750. event.preventDefault();
  1751. });
  1752.  
  1753. gameContainer.addEventListener(this.eventTouchmove, function (event) {
  1754. event.preventDefault();
  1755. });
  1756.  
  1757. gameContainer.addEventListener(this.eventTouchend, function (event) {
  1758. if ((!window.navigator.msPointerEnabled && event.touches.length > 0) ||
  1759. event.targetTouches.length > 0 ||
  1760. self.targetIsInput(event)) {
  1761. return; // Ignore if still touching with one or more fingers or input
  1762. }
  1763.  
  1764. var touchEndClientX, touchEndClientY;
  1765.  
  1766. if (window.navigator.msPointerEnabled) {
  1767. touchEndClientX = event.pageX;
  1768. touchEndClientY = event.pageY;
  1769. } else {
  1770. touchEndClientX = event.changedTouches[0].clientX;
  1771. touchEndClientY = event.changedTouches[0].clientY;
  1772. }
  1773.  
  1774. var dx = touchEndClientX - touchStartClientX;
  1775. var absDx = Math.abs(dx);
  1776.  
  1777. var dy = touchEndClientY - touchStartClientY;
  1778. var absDy = Math.abs(dy);
  1779.  
  1780. if (Math.max(absDx, absDy) > 10) {
  1781. // (right : left) : (down : up)
  1782. self.emit("move", absDx > absDy ? (dx > 0 ? 1 : 3) : (dy > 0 ? 2 : 0));
  1783. }
  1784. });
  1785. };
  1786.  
  1787. KeyboardInputManager.prototype.restart = function (event) {
  1788. event.preventDefault();
  1789. this.emit("restart");
  1790. };
  1791.  
  1792. KeyboardInputManager.prototype.keepPlaying = function (event) {
  1793. event.preventDefault();
  1794. this.emit("keepPlaying");
  1795. };
  1796.  
  1797. KeyboardInputManager.prototype.bindButtonPress = function (selector, fn) {
  1798. var button = document.querySelector(selector);
  1799. button.addEventListener("click", fn.bind(this));
  1800. button.addEventListener(this.eventTouchend, fn.bind(this));
  1801. };
  1802.  
  1803. KeyboardInputManager.prototype.targetIsInput = function (event) {
  1804. return event.target.tagName.toLowerCase() === "input";
  1805. };
  1806.  
  1807. </script>
  1808. <script>
  1809. function HTMLActuator() {
  1810. this.tileContainer = document.querySelector(".tile-container");
  1811. this.scoreContainer = document.querySelector(".score-container");
  1812. this.bestContainer = document.querySelector(".best-container");
  1813. this.messageContainer = document.querySelector(".game-message");
  1814. this.sharingContainer = document.querySelector(".score-sharing");
  1815.  
  1816. this.score = 0;
  1817. }
  1818.  
  1819. HTMLActuator.prototype.actuate = function (grid, metadata) {
  1820. var self = this;
  1821.  
  1822. window.requestAnimationFrame(function () {
  1823. self.clearContainer(self.tileContainer);
  1824.  
  1825. grid.cells.forEach(function (column) {
  1826. column.forEach(function (cell) {
  1827. if (cell) {
  1828. self.addTile(cell);
  1829. }
  1830. });
  1831. });
  1832.  
  1833. self.updateScore(metadata.score);
  1834. self.updateBestScore(metadata.bestScore);
  1835.  
  1836. if (metadata.terminated) {
  1837. if (metadata.over) {
  1838. self.message(false); // You lose
  1839. } else if (metadata.won) {
  1840. self.message(true); // You win!
  1841. }
  1842. }
  1843.  
  1844. });
  1845. };
  1846.  
  1847. // Continues the game (both restart and keep playing)
  1848. HTMLActuator.prototype.continueGame = function () {
  1849. if (typeof gtag !== "undefined") {
  1850. gtag("event", "restart", {
  1851. event_category: "game",
  1852. });
  1853. }
  1854.  
  1855. this.clearMessage();
  1856. };
  1857.  
  1858. HTMLActuator.prototype.clearContainer = function (container) {
  1859. while (container.firstChild) {
  1860. container.removeChild(container.firstChild);
  1861. }
  1862. };
  1863.  
  1864. HTMLActuator.prototype.addTile = function (tile) {
  1865. var self = this;
  1866.  
  1867. var wrapper = document.createElement("div");
  1868. var inner = document.createElement("div");
  1869. var position = tile.previousPosition || { x: tile.x, y: tile.y };
  1870. var positionClass = this.positionClass(position);
  1871.  
  1872. // We can't use classlist because it somehow glitches when replacing classes
  1873. var classes = ["tile", "tile-" + tile.value, positionClass];
  1874.  
  1875. if (tile.value > 2048) classes.push("tile-super");
  1876.  
  1877. this.applyClasses(wrapper, classes);
  1878.  
  1879. inner.classList.add("tile-inner");
  1880. inner.textContent = tile.value;
  1881.  
  1882. if (tile.previousPosition) {
  1883. // Make sure that the tile gets rendered in the previous position first
  1884. window.requestAnimationFrame(function () {
  1885. classes[2] = self.positionClass({ x: tile.x, y: tile.y });
  1886. self.applyClasses(wrapper, classes); // Update the position
  1887. });
  1888. } else if (tile.mergedFrom) {
  1889. classes.push("tile-merged");
  1890. this.applyClasses(wrapper, classes);
  1891.  
  1892. // Render the tiles that merged
  1893. tile.mergedFrom.forEach(function (merged) {
  1894. self.addTile(merged);
  1895. });
  1896. } else {
  1897. classes.push("tile-new");
  1898. this.applyClasses(wrapper, classes);
  1899. }
  1900.  
  1901. // Add the inner part of the tile to the wrapper
  1902. wrapper.appendChild(inner);
  1903.  
  1904. // Put the tile on the board
  1905. this.tileContainer.appendChild(wrapper);
  1906. };
  1907.  
  1908. HTMLActuator.prototype.applyClasses = function (element, classes) {
  1909. element.setAttribute("class", classes.join(" "));
  1910. };
  1911.  
  1912. HTMLActuator.prototype.normalizePosition = function (position) {
  1913. return { x: position.x + 1, y: position.y + 1 };
  1914. };
  1915.  
  1916. HTMLActuator.prototype.positionClass = function (position) {
  1917. position = this.normalizePosition(position);
  1918. return "tile-position-" + position.x + "-" + position.y;
  1919. };
  1920.  
  1921. HTMLActuator.prototype.updateScore = function (score) {
  1922. this.clearContainer(this.scoreContainer);
  1923.  
  1924. var difference = score - this.score;
  1925. this.score = score;
  1926.  
  1927. this.scoreContainer.textContent = this.score;
  1928.  
  1929. if (difference > 0) {
  1930. var addition = document.createElement("div");
  1931. addition.classList.add("score-addition");
  1932. addition.textContent = "+" + difference;
  1933.  
  1934. this.scoreContainer.appendChild(addition);
  1935. }
  1936. };
  1937.  
  1938. HTMLActuator.prototype.updateBestScore = function (bestScore) {
  1939. this.bestContainer.textContent = bestScore;
  1940. };
  1941.  
  1942. HTMLActuator.prototype.message = function (won) {
  1943. var type = won ? "game-won" : "game-over";
  1944. var message = won ? "You win!" : "Game over!";
  1945.  
  1946. if (typeof gtag !== "undefined") {
  1947. gtag("event", "end", {
  1948. event_category: "game",
  1949. event_label: type,
  1950. value: this.score,
  1951. });
  1952. }
  1953.  
  1954. this.messageContainer.classList.add(type);
  1955. this.messageContainer.getElementsByTagName("p")[0].textContent = message;
  1956.  
  1957. this.clearContainer(this.sharingContainer);
  1958. this.sharingContainer.appendChild(this.scoreTweetButton());
  1959. twttr.widgets.load();
  1960. };
  1961.  
  1962. HTMLActuator.prototype.clearMessage = function () {
  1963. // IE only takes one value to remove at a time.
  1964. this.messageContainer.classList.remove("game-won");
  1965. this.messageContainer.classList.remove("game-over");
  1966. };
  1967.  
  1968. HTMLActuator.prototype.scoreTweetButton = function () {
  1969. var tweet = document.createElement("a");
  1970. tweet.classList.add("twitter-share-button");
  1971. tweet.setAttribute("href", "https://twitter.com/share");
  1972. tweet.setAttribute("data-via", "gabrielecirulli");
  1973. tweet.setAttribute("data-url", "http://git.io/2048");
  1974. tweet.setAttribute("data-counturl", "http://gabrielecirulli.github.io/2048/");
  1975. tweet.textContent = "Tweet";
  1976.  
  1977. var text = "I scored " + this.score + " points at 2048, a game where you " +
  1978. "join numbers to score high! #2048game";
  1979. tweet.setAttribute("data-text", text);
  1980.  
  1981. return tweet;
  1982. };
  1983.  
  1984. </script>
  1985. <script>
  1986. function Grid(size, previousState) {
  1987. this.size = size;
  1988. this.cells = previousState ? this.fromState(previousState) : this.empty();
  1989. }
  1990.  
  1991. // Build a grid of the specified size
  1992. Grid.prototype.empty = function () {
  1993. var cells = [];
  1994.  
  1995. for (var x = 0; x < this.size; x++) {
  1996. var row = cells[x] = [];
  1997.  
  1998. for (var y = 0; y < this.size; y++) {
  1999. row.push(null);
  2000. }
  2001. }
  2002.  
  2003. return cells;
  2004. };
  2005.  
  2006. Grid.prototype.fromState = function (state) {
  2007. var cells = [];
  2008.  
  2009. for (var x = 0; x < this.size; x++) {
  2010. var row = cells[x] = [];
  2011.  
  2012. for (var y = 0; y < this.size; y++) {
  2013. var tile = state[x][y];
  2014. row.push(tile ? new Tile(tile.position, tile.value) : null);
  2015. }
  2016. }
  2017.  
  2018. return cells;
  2019. };
  2020.  
  2021. // Find the first available random position
  2022. Grid.prototype.randomAvailableCell = function () {
  2023. var cells = this.availableCells();
  2024.  
  2025. if (cells.length) {
  2026. return cells[Math.floor(Math.random() * cells.length)];
  2027. }
  2028. };
  2029.  
  2030. Grid.prototype.availableCells = function () {
  2031. var cells = [];
  2032.  
  2033. this.eachCell(function (x, y, tile) {
  2034. if (!tile) {
  2035. cells.push({ x: x, y: y });
  2036. }
  2037. });
  2038.  
  2039. return cells;
  2040. };
  2041.  
  2042. // Call callback for every cell
  2043. Grid.prototype.eachCell = function (callback) {
  2044. for (var x = 0; x < this.size; x++) {
  2045. for (var y = 0; y < this.size; y++) {
  2046. callback(x, y, this.cells[x][y]);
  2047. }
  2048. }
  2049. };
  2050.  
  2051. // Check if there are any cells available
  2052. Grid.prototype.cellsAvailable = function () {
  2053. return !!this.availableCells().length;
  2054. };
  2055.  
  2056. // Check if the specified cell is taken
  2057. Grid.prototype.cellAvailable = function (cell) {
  2058. return !this.cellOccupied(cell);
  2059. };
  2060.  
  2061. Grid.prototype.cellOccupied = function (cell) {
  2062. return !!this.cellContent(cell);
  2063. };
  2064.  
  2065. Grid.prototype.cellContent = function (cell) {
  2066. if (this.withinBounds(cell)) {
  2067. return this.cells[cell.x][cell.y];
  2068. } else {
  2069. return null;
  2070. }
  2071. };
  2072.  
  2073. // Inserts a tile at its position
  2074. Grid.prototype.insertTile = function (tile) {
  2075. this.cells[tile.x][tile.y] = tile;
  2076. };
  2077.  
  2078. Grid.prototype.removeTile = function (tile) {
  2079. this.cells[tile.x][tile.y] = null;
  2080. };
  2081.  
  2082. Grid.prototype.withinBounds = function (position) {
  2083. return position.x >= 0 && position.x < this.size &&
  2084. position.y >= 0 && position.y < this.size;
  2085. };
  2086.  
  2087. Grid.prototype.serialize = function () {
  2088. var cellState = [];
  2089.  
  2090. for (var x = 0; x < this.size; x++) {
  2091. var row = cellState[x] = [];
  2092.  
  2093. for (var y = 0; y < this.size; y++) {
  2094. row.push(this.cells[x][y] ? this.cells[x][y].serialize() : null);
  2095. }
  2096. }
  2097.  
  2098. return {
  2099. size: this.size,
  2100. cells: cellState
  2101. };
  2102. };
  2103.  
  2104. </script>
  2105. <script>
  2106. function Tile(position, value) {
  2107. this.x = position.x;
  2108. this.y = position.y;
  2109. this.value = value || 2;
  2110.  
  2111. this.previousPosition = null;
  2112. this.mergedFrom = null; // Tracks tiles that merged together
  2113. }
  2114.  
  2115. Tile.prototype.savePosition = function () {
  2116. this.previousPosition = { x: this.x, y: this.y };
  2117. };
  2118.  
  2119. Tile.prototype.updatePosition = function (position) {
  2120. this.x = position.x;
  2121. this.y = position.y;
  2122. };
  2123.  
  2124. Tile.prototype.serialize = function () {
  2125. return {
  2126. position: {
  2127. x: this.x,
  2128. y: this.y
  2129. },
  2130. value: this.value
  2131. };
  2132. };
  2133.  
  2134. </script>
  2135. <script>
  2136. window.fakeStorage = {
  2137. _data: {},
  2138.  
  2139. setItem: function (id, val) {
  2140. return this._data[id] = String(val);
  2141. },
  2142.  
  2143. getItem: function (id) {
  2144. return this._data.hasOwnProperty(id) ? this._data[id] : undefined;
  2145. },
  2146.  
  2147. removeItem: function (id) {
  2148. return delete this._data[id];
  2149. },
  2150.  
  2151. clear: function () {
  2152. return this._data = {};
  2153. }
  2154. };
  2155.  
  2156. function LocalStorageManager() {
  2157. this.bestScoreKey = "bestScore";
  2158. this.gameStateKey = "gameState";
  2159. this.noticeClosedKey = "noticeClosed";
  2160. this.cookieNoticeClosedKey = "cookieNoticeClosed";
  2161.  
  2162. var supported = this.localStorageSupported();
  2163. this.storage = supported ? window.localStorage : window.fakeStorage;
  2164. }
  2165.  
  2166. LocalStorageManager.prototype.localStorageSupported = function () {
  2167. var testKey = "test";
  2168. var storage = window.localStorage;
  2169.  
  2170. try {
  2171. storage.setItem(testKey, "1");
  2172. storage.removeItem(testKey);
  2173. return true;
  2174. } catch (error) {
  2175. return false;
  2176. }
  2177. };
  2178.  
  2179. // Best score getters/setters
  2180. LocalStorageManager.prototype.getBestScore = function () {
  2181. return this.storage.getItem(this.bestScoreKey) || 0;
  2182. };
  2183.  
  2184. LocalStorageManager.prototype.setBestScore = function (score) {
  2185. this.storage.setItem(this.bestScoreKey, score);
  2186. };
  2187.  
  2188. // Game state getters/setters and clearing
  2189. LocalStorageManager.prototype.getGameState = function () {
  2190. var stateJSON = this.storage.getItem(this.gameStateKey);
  2191. return stateJSON ? JSON.parse(stateJSON) : null;
  2192. };
  2193.  
  2194. LocalStorageManager.prototype.setGameState = function (gameState) {
  2195. this.storage.setItem(this.gameStateKey, JSON.stringify(gameState));
  2196. };
  2197.  
  2198. LocalStorageManager.prototype.clearGameState = function () {
  2199. this.storage.removeItem(this.gameStateKey);
  2200. };
  2201.  
  2202. LocalStorageManager.prototype.setNoticeClosed = function (noticeClosed) {
  2203. this.storage.setItem(this.noticeClosedKey, JSON.stringify(noticeClosed));
  2204. };
  2205.  
  2206. LocalStorageManager.prototype.getNoticeClosed = function () {
  2207. return JSON.parse(this.storage.getItem(this.noticeClosedKey) || "false");
  2208. };
  2209.  
  2210. LocalStorageManager.prototype.setCookieNoticeClosed = function (cookieNoticeClosed) {
  2211. this.storage.setItem(this.cookieNoticeClosedKey, JSON.stringify(cookieNoticeClosed));
  2212. };
  2213.  
  2214. LocalStorageManager.prototype.getCookieNoticeClosed = function () {
  2215. return JSON.parse(this.storage.getItem(this.cookieNoticeClosedKey) || "false");
  2216. };
  2217.  
  2218. </script>
  2219. <script>
  2220. function GameManager(size, InputManager, Actuator, StorageManager) {
  2221. this.size = size; // Size of the grid
  2222. this.inputManager = new InputManager;
  2223. this.storageManager = new StorageManager;
  2224. this.actuator = new Actuator;
  2225.  
  2226. this.startTiles = 2;
  2227.  
  2228. this.inputManager.on("move", this.move.bind(this));
  2229. this.inputManager.on("restart", this.restart.bind(this));
  2230. this.inputManager.on("keepPlaying", this.keepPlaying.bind(this));
  2231.  
  2232. this.setup();
  2233. }
  2234.  
  2235. // Restart the game
  2236. GameManager.prototype.restart = function () {
  2237. this.storageManager.clearGameState();
  2238. this.actuator.continueGame(); // Clear the game won/lost message
  2239. this.setup();
  2240. };
  2241.  
  2242. // Keep playing after winning (allows going over 2048)
  2243. GameManager.prototype.keepPlaying = function () {
  2244. this.keepPlaying = true;
  2245. this.actuator.continueGame(); // Clear the game won/lost message
  2246. };
  2247.  
  2248. // Return true if the game is lost, or has won and the user hasn't kept playing
  2249. GameManager.prototype.isGameTerminated = function () {
  2250. return this.over || (this.won && !this.keepPlaying);
  2251. };
  2252.  
  2253. // Set up the game
  2254. GameManager.prototype.setup = function () {
  2255. var previousState = this.storageManager.getGameState();
  2256.  
  2257. // Reload the game from a previous game if present
  2258. if (previousState) {
  2259. this.grid = new Grid(previousState.grid.size,
  2260. previousState.grid.cells); // Reload grid
  2261. this.score = previousState.score;
  2262. this.over = previousState.over;
  2263. this.won = previousState.won;
  2264. this.keepPlaying = previousState.keepPlaying;
  2265. } else {
  2266. this.grid = new Grid(this.size);
  2267. this.score = 0;
  2268. this.over = false;
  2269. this.won = false;
  2270. this.keepPlaying = false;
  2271.  
  2272. // Add the initial tiles
  2273. this.addStartTiles();
  2274. }
  2275.  
  2276. // Update the actuator
  2277. this.actuate();
  2278. };
  2279.  
  2280. // Set up the initial tiles to start the game with
  2281. GameManager.prototype.addStartTiles = function () {
  2282. for (var i = 0; i < this.startTiles; i++) {
  2283. this.addRandomTile();
  2284. }
  2285. };
  2286.  
  2287. // Adds a tile in a random position
  2288. GameManager.prototype.addRandomTile = function () {
  2289. if (this.grid.cellsAvailable()) {
  2290. var value = Math.random() < 0.9 ? 2 : 4;
  2291. var tile = new Tile(this.grid.randomAvailableCell(), value);
  2292.  
  2293. this.grid.insertTile(tile);
  2294. }
  2295. };
  2296.  
  2297. // Sends the updated grid to the actuator
  2298. GameManager.prototype.actuate = function () {
  2299. if (this.storageManager.getBestScore() < this.score) {
  2300. this.storageManager.setBestScore(this.score);
  2301. }
  2302.  
  2303. // Clear the state when the game is over (game over only, not win)
  2304. if (this.over) {
  2305. this.storageManager.clearGameState();
  2306. } else {
  2307. this.storageManager.setGameState(this.serialize());
  2308. }
  2309.  
  2310. this.actuator.actuate(this.grid, {
  2311. score: this.score,
  2312. over: this.over,
  2313. won: this.won,
  2314. bestScore: this.storageManager.getBestScore(),
  2315. terminated: this.isGameTerminated()
  2316. });
  2317.  
  2318. };
  2319.  
  2320. // Represent the current game as an object
  2321. GameManager.prototype.serialize = function () {
  2322. return {
  2323. grid: this.grid.serialize(),
  2324. score: this.score,
  2325. over: this.over,
  2326. won: this.won,
  2327. keepPlaying: this.keepPlaying
  2328. };
  2329. };
  2330.  
  2331. // Save all tile positions and remove merger info
  2332. GameManager.prototype.prepareTiles = function () {
  2333. this.grid.eachCell(function (x, y, tile) {
  2334. if (tile) {
  2335. tile.mergedFrom = null;
  2336. tile.savePosition();
  2337. }
  2338. });
  2339. };
  2340.  
  2341. // Move a tile and its representation
  2342. GameManager.prototype.moveTile = function (tile, cell) {
  2343. this.grid.cells[tile.x][tile.y] = null;
  2344. this.grid.cells[cell.x][cell.y] = tile;
  2345. tile.updatePosition(cell);
  2346. };
  2347.  
  2348. // Move tiles on the grid in the specified direction
  2349. GameManager.prototype.move = function (direction) {
  2350. // 0: up, 1: right, 2: down, 3: left
  2351. var self = this;
  2352.  
  2353. if (this.isGameTerminated()) return; // Don't do anything if the game's over
  2354.  
  2355. var cell, tile;
  2356.  
  2357. var vector = this.getVector(direction);
  2358. var traversals = this.buildTraversals(vector);
  2359. var moved = false;
  2360.  
  2361. // Save the current tile positions and remove merger information
  2362. this.prepareTiles();
  2363.  
  2364. // Traverse the grid in the right direction and move tiles
  2365. traversals.x.forEach(function (x) {
  2366. traversals.y.forEach(function (y) {
  2367. cell = { x: x, y: y };
  2368. tile = self.grid.cellContent(cell);
  2369.  
  2370. if (tile) {
  2371. var positions = self.findFarthestPosition(cell, vector);
  2372. var next = self.grid.cellContent(positions.next);
  2373.  
  2374. // Only one merger per row traversal?
  2375. if (next && next.value === tile.value && !next.mergedFrom) {
  2376. var merged = new Tile(positions.next, tile.value * 2);
  2377. merged.mergedFrom = [tile, next];
  2378.  
  2379. self.grid.insertTile(merged);
  2380. self.grid.removeTile(tile);
  2381.  
  2382. // Converge the two tiles' positions
  2383. tile.updatePosition(positions.next);
  2384.  
  2385. // Update the score
  2386. self.score += merged.value;
  2387.  
  2388. // The mighty 2048 tile
  2389. if (merged.value === 2048) self.won = true;
  2390. } else {
  2391. self.moveTile(tile, positions.farthest);
  2392. }
  2393.  
  2394. if (!self.positionsEqual(cell, tile)) {
  2395. moved = true; // The tile moved from its original cell!
  2396. }
  2397. }
  2398. });
  2399. });
  2400.  
  2401. if (moved) {
  2402. this.addRandomTile();
  2403.  
  2404. if (!this.movesAvailable()) {
  2405. this.over = true; // Game over!
  2406. }
  2407.  
  2408. this.actuate();
  2409. }
  2410. };
  2411.  
  2412. // Get the vector representing the chosen direction
  2413. GameManager.prototype.getVector = function (direction) {
  2414. // Vectors representing tile movement
  2415. var map = {
  2416. 0: { x: 0, y: -1 }, // Up
  2417. 1: { x: 1, y: 0 }, // Right
  2418. 2: { x: 0, y: 1 }, // Down
  2419. 3: { x: -1, y: 0 } // Left
  2420. };
  2421.  
  2422. return map[direction];
  2423. };
  2424.  
  2425. // Build a list of positions to traverse in the right order
  2426. GameManager.prototype.buildTraversals = function (vector) {
  2427. var traversals = { x: [], y: [] };
  2428.  
  2429. for (var pos = 0; pos < this.size; pos++) {
  2430. traversals.x.push(pos);
  2431. traversals.y.push(pos);
  2432. }
  2433.  
  2434. // Always traverse from the farthest cell in the chosen direction
  2435. if (vector.x === 1) traversals.x = traversals.x.reverse();
  2436. if (vector.y === 1) traversals.y = traversals.y.reverse();
  2437.  
  2438. return traversals;
  2439. };
  2440.  
  2441. GameManager.prototype.findFarthestPosition = function (cell, vector) {
  2442. var previous;
  2443.  
  2444. // Progress towards the vector direction until an obstacle is found
  2445. do {
  2446. previous = cell;
  2447. cell = { x: previous.x + vector.x, y: previous.y + vector.y };
  2448. } while (this.grid.withinBounds(cell) &&
  2449. this.grid.cellAvailable(cell));
  2450.  
  2451. return {
  2452. farthest: previous,
  2453. next: cell // Used to check if a merge is required
  2454. };
  2455. };
  2456.  
  2457. GameManager.prototype.movesAvailable = function () {
  2458. return this.grid.cellsAvailable() || this.tileMatchesAvailable();
  2459. };
  2460.  
  2461. // Check for available matches between tiles (more expensive check)
  2462. GameManager.prototype.tileMatchesAvailable = function () {
  2463. var self = this;
  2464.  
  2465. var tile;
  2466.  
  2467. for (var x = 0; x < this.size; x++) {
  2468. for (var y = 0; y < this.size; y++) {
  2469. tile = this.grid.cellContent({ x: x, y: y });
  2470.  
  2471. if (tile) {
  2472. for (var direction = 0; direction < 4; direction++) {
  2473. var vector = self.getVector(direction);
  2474. var cell = { x: x + vector.x, y: y + vector.y };
  2475.  
  2476. var other = self.grid.cellContent(cell);
  2477.  
  2478. if (other && other.value === tile.value) {
  2479. return true; // These two tiles can be merged
  2480. }
  2481. }
  2482. }
  2483. }
  2484. }
  2485.  
  2486. return false;
  2487. };
  2488.  
  2489. GameManager.prototype.positionsEqual = function (first, second) {
  2490. return first.x === second.x && first.y === second.y;
  2491. };
  2492.  
  2493. </script>
  2494. <script>
  2495. // Wait till the browser is ready to render the game (avoids glitches)
  2496. window.requestAnimationFrame(function () {
  2497. new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager);
  2498.  
  2499. // TODO: This code is in need of a refactor (along with the rest)
  2500. var storage = new LocalStorageManager;
  2501. var noticeClose = document.querySelector(".notice-close-button");
  2502. var notice = document.querySelector(".app-notice");
  2503. var cookieNotice = document.querySelector(".cookie-notice");
  2504. var cookieNoticeClose = document.querySelector(".cookie-notice-dismiss-button");
  2505.  
  2506. if (storage.getNoticeClosed()) {
  2507. notice.parentNode.removeChild(notice);
  2508. } else {
  2509. noticeClose.addEventListener("click", function () {
  2510. notice.parentNode.removeChild(notice);
  2511. storage.setNoticeClosed(true);
  2512. if (typeof gtag !== undefined){
  2513. gtag("event", "closed", {
  2514. event_category: "notice",
  2515. });
  2516. }
  2517. });
  2518. }
  2519.  
  2520. if (storage.getCookieNoticeClosed()) {
  2521. cookieNotice.parentNode.removeChild(cookieNotice);
  2522. } else {
  2523. cookieNoticeClose.addEventListener("click", function () {
  2524. cookieNotice.parentNode.removeChild(cookieNotice);
  2525. storage.setCookieNoticeClosed(true);
  2526. if (typeof gtag !== undefined){
  2527. gtag("event", "closed", {
  2528. event_category: "cookie-notice",
  2529. });
  2530. }
  2531. })
  2532. }
  2533. });
  2534.  
  2535. </script>
  2536.  
  2537.  
  2538. </body></html>
Add Comment
Please, Sign In to add comment