#removeEventListener
Explore tagged Tumblr posts
Text
Does anyone else get
t.googletag.pubads().removeEventListener is not a function
as an error any time they try to make a post or do anything?? It's pretty annoying, it started happening when I started getting the new menu-on-left layout, but it might be extensions fucking w something
13 notes
·
View notes
Text
anyone else constantly having this appear whenever they do literally *A N Y T H I N G* on tumblr desktop
Unexpected Application Error!
t.googletag?.pubads(...)?.removeEventListener is not a function
TypeError: t.googletag?.pubads…?.removeEventListener is not a function at P (https://assets.tumblr.com/pop/js/modern/7442-1a9efa87.js:1:1862) at o7 (https://assets.tumblr.com/pop/js/modern/vendor-cb7b2923.js:22:94269) at lr (https://assets.tumblr.com/pop/js/modern/vendor-cb7b2923.js:22:95969) at sp (https://assets.tumblr.com/pop/js/modern/vendor-cb7b2923.js:22:113422) at l9 (https://assets.tumblr.com/pop/js/modern/vendor-cb7b2923.js:22:108341) at ib (https://assets.tumblr.com/pop/js/modern/vendor-cb7b2923.js:22:47327) at l1 (https://assets.tumblr.com/pop/js/modern/vendor-cb7b2923.js:22:105721) at od (https://assets.tumblr.com/pop/js/modern/vendor-cb7b2923.js:22:68736) at https://assets.tumblr.com/pop/js/modern/post-form-208bf420.js:1:116090
4 notes
·
View notes
Text
Does anyone keep getting this shit when they click on a picture now?
Even turning off adblockers and xkit doesn’t fix it.
copypasted text below the cut:
Unexpected Application Error! t.googletag.pubads().removeEventListener is not a function
P@https://assets.tumblr.com/pop/js/modern/7442-20e3dd6b.js:1:1881 o7@https://assets.tumblr.com/pop/js/modern/vendor-85586743.js:22:94314 lr@https://assets.tumblr.com/pop/js/modern/vendor-85586743.js:22:96014 sp@https://assets.tumblr.com/pop/js/modern/vendor-85586743.js:22:113469 l9@https://assets.tumblr.com/pop/js/modern/vendor-85586743.js:22:108386 ib@https://assets.tumblr.com/pop/js/modern/vendor-85586743.js:22:47329 sp@https://assets.tumblr.com/pop/js/modern/vendor-85586743.js:22:114344 98348/sd/<@https://assets.tumblr.com/pop/js/modern/vendor-85586743.js:22:112480 S@https://assets.tumblr.com/pop/js/modern/vendor-85586743.js:64:1365 A@https://assets.tumblr.com/pop/js/modern/vendor-85586743.js:64:1894 @https://assets.tumblr.com/pop/js/modern/vendor-85586743.js:14:61514 P@https://assets.tumblr.com/pop/js/modern/vendor-85586743.js:14:61282 T@https://assets.tumblr.com/pop/js/modern/vendor-85586743.js:14:61342
3 notes
·
View notes
Text
How to use JavaScript for data visualization
Data visualization is the process of transforming data into graphical or visual representations, such as charts, graphs, maps, etc. Data visualization can help us understand, analyze, and communicate data more effectively and efficiently.
JavaScript is a powerful and popular programming language that can be used for creating dynamic and interactive data visualizations in web browsers. JavaScript can manipulate the HTML and CSS elements of a web page, as well as fetch data from external sources, such as APIs, databases, or files.
To use JavaScript for data visualization, we need to learn how to:
Select and manipulate HTML elements: We can use JavaScript to select HTML elements by their id, class, tag name, attribute, or CSS selector. We can use methods such as getElementById(), getElementsByClassName(), getElementsByTagName(), querySelector(), or querySelectorAll() to return one or more elements. We can then use properties and methods such as innerHTML, style, setAttribute(), removeAttribute(), appendChild(), removeChild(), etc. to manipulate the selected elements.
Create and modify SVG elements: SVG (Scalable Vector Graphics) is a standard for creating vector graphics in XML format. SVG elements can be scaled without losing quality, and can be styled and animated with CSS and JavaScript. We can use JavaScript to create and modify SVG elements, such as , , , , , etc. We can use methods such as createElementNS(), setAttributeNS(), appendChild(), etc. to manipulate the SVG elements.
Handle events: We can use JavaScript to handle events that occur on the web page, such as mouse clicks, keyboard presses, window resizing, page loading, etc. We can use methods such as addEventListener() or removeEventListener() to attach or detach event handlers to elements. We can also use properties such as onclick, onkeyup, onload, etc. to assign event handlers to elements. An event handler is a function that runs when an event occurs. We can use the event object to access information about the event, such as its type, target, coordinates, key code, etc.
Use AJAX: We can use AJAX (Asynchronous JavaScript and XML) to send and receive data from a server without reloading the web page. We can use objects such as XMLHttpRequest or Fetch API to create and send requests to a server. We can also use methods such as open(), send(), then(), catch(), etc. to specify the request parameters, send the request, and handle the response. We can use properties such as readyState, status, responseText, responseJSON, etc. to access the state, status, and data of the response.
These are some of the basic skills we need to use JavaScript for data visualization. However, writing JavaScript code from scratch for data visualization can be challenging and time-consuming. That’s why many developers use JavaScript libraries and frameworks that provide pre-written code and templates for creating various types of data visualizations.
Some of the most popular JavaScript libraries and frameworks for data visualization are:
D3.js: D3.js (short for Data-Driven Documents) is a JavaScript library for producing dynamic and interactive data visualizations in web browsers. It makes use of SVG, HTML5, and CSS standards. D3.js allows us to bind data to DOM elements, apply data-driven transformations to them, and create custom visualizations with unparalleled flexibility1.
Chart.js: Chart.js is a JavaScript library for creating simple and responsive charts in web browsers. It uses HTML5 canvas element to render the charts. Chart.js supports various types of charts, such as line, bar, pie, doughnut, radar, polar area, bubble, scatter, etc.2
Highcharts: Highcharts is a JavaScript library for creating interactive and high-quality charts in web browsers. It supports SVG and canvas rendering modes. Highcharts supports various types of charts, such as line, spline, area, column, bar, pie, scatter, bubble, gauge, heatmap, treemap, etc. Highcharts also provides features such as zooming, panning, exporting, annotations, drilldowns, etc.
These are some of the popular JavaScript libraries and frameworks for data visualization. To use them in your web development project, you need to follow these steps:
Choose the right library or framework for your project: Depending on your project’s requirements, goals, and preferences, you need to select the most suitable library or framework that can help you create the data visualizations you want. You should consider factors such as the learning curve, documentation, community support, performance, compatibility, scalability, etc. of each library or framework before making a decision.
Add the library or framework to your web page: You can add a library or framework to your web page using either a script tag or an external file. The script tag can be placed either in the head or the body section of the HTML document. The external file can be linked to the HTML document using the src attribute of the script tag.
Learn how to use the library or framework features and functionalities: You need to read the documentation and guides of the library or framework you are using to understand how to use its features and functionalities effectively. You should also follow some tutorials and examples to get familiar with the syntax, conventions, patterns, and best practices of the library or framework.
Write your application code using the library or framework: You need to write your application code using the library or framework functions, methods, objects, components, etc. You should also test and debug your code regularly to ensure its functionality and quality.
These are some of the ways you can use JavaScript for data visualization. To learn more about JavaScript and data visualization, you can visit some of the online resources that offer tutorials, examples, exercises, and quizzes. Some of them are:
[W3Schools]: A website that provides free web development tutorials and references for HTML, CSS, JavaScript, and other web technologies.
[MDN Web Docs]: A website that provides documentation and guides for web developers, covering topics such as HTML, CSS, JavaScript, Web APIs, and more.
[Data Visualization with D3.js]: A website that provides a comprehensive course on data visualization with D3.js.
[e-Tutitions]: A website that provides online courses and for web , development, Learn JavaScript and you can book a free demo class.
[Codecademy]: A website that provides interactive online courses and projects for various programming languages and technologies.
0 notes
Text
Why cant I browse tumblr?
Every time I click anything, anywhere, I get this page.
Unexpected Application Error!
t.googletag?.pubads(...)?.removeEventListener is not a function
TypeError: t.googletag?.pubads(...)?.removeEventListener is not a function at P (https://assets.tumblr.com/pop/js/modern/7368-3a8ca742.js:1:1862) at o7 (https://assets.tumblr.com/pop/js/modern/vendor-a3a6e9c4.js:22:94269) at lr (https://assets.tumblr.com/pop/js/modern/vendor-a3a6e9c4.js:22:95969) at sp (https://assets.tumblr.com/pop/js/modern/vendor-a3a6e9c4.js:22:113422) at l9 (https://assets.tumblr.com/pop/js/modern/vendor-a3a6e9c4.js:22:108341) at ib (https://assets.tumblr.com/pop/js/modern/vendor-a3a6e9c4.js:22:47327) at l1 (https://assets.tumblr.com/pop/js/modern/vendor-a3a6e9c4.js:22:105721) at od (https://assets.tumblr.com/pop/js/modern/vendor-a3a6e9c4.js:22:68736) at https://assets.tumblr.com/pop/js/modern/post-form-b8635973.js:1:116090
should I not be posting this, is this a code a secret code? What is this? is this ad blocker cxck blxcking me?
0 notes
Text
i have seen it so many times, i expect the unexpected application error!
t.googletag.pubads().removeEventListener is not a function
(probably a Waterfox tracker-blocking thing)
0 notes
Text
Having a bizzare issue rn
For some reason, any time I do anything on Tumblr that takes me from one page to another, I just get a white screen with
Unexpected Application Error!
t.googletag.pubads().removeEventListener is not a function
at the top, and then a bunch of urls in a block below it.
Any idea what's happening??
0 notes
Text
Unexpected Application Error!
t.googletag.pubads().removeEventListener is not a function
0 notes
Text
Does anybody know (exactly) what this is?
There is also invisible (black text on black) error message:
Unexpected Application Error!
t.googletag.pubads().removeEventListener is not a function
1 note
·
View note
Text
JavaScript Event Listeners. Everything You Need To Know
JavaScript Event Listeners. Everything You Need To Know #javascript #js #javascriptutorial #javascripteventlisteners #eventlisteners #javascripteventlistener #seteventlisterjavascript #removeeventlistenerjavascript #learnjavascript #learnjs #learnwebdev
The event listeners are simply like event handlers, except that you can assign as many event listener s as you want on a event on certain element. In order for you to better understand how event listeners work here’s a simple example that executes functions on click of a button using the onclick event handler: <button id="myBtn">Click Me</button> <script> // Defining custom functions function…
View On WordPress
#addeventlistener#coding#javascript#javascriptdev#javascripteventlistener#javascripttutorial#jstutorial#removeeventlistener#tutorial#web#webdev#webdevelopment#website#webtutorial
0 notes
Text
We’re making Tumblr more accessible!
If you’re an avid user of Tumblr on mobile web, then you might’ve noticed some improvements we made. Bigger font sizes and higher contrast text? Your screen reader actually reads what you hope it would? You’ve guessed it, we’re making Tumblr ✨accessible✨.
Why?
Since we’re rewriting the web, we wanted to make sure we did so with accessibility in mind. I could give you a long description why, but plenty of articles explain better than I can. Put simply: the web should be made useable for everyone.
We began with using the accessibility auditing tool in Google Lighthouse to check the improvements that could be made. Initially, our score wasn’t that great: 62. If you factored in areas that need to be manually checked then our score would have been abysmal. However, we’ve made great strides since then and are on our way to achieving that coveted 💯
We had inaccessible menus and poorly described elements, among other things. Using a tool like VoiceOver or TalkBalk you can see what experiencing Tumblr on mobile web with a screen reader was like. Here's a gif showing what the mobile web experience on Tumblr was like prior to the changes.
What we did
Some of the more noticeable improvements we made were introducing design changes to increase readability and making improvements following WAI-ARIA guidelines. We'll walk through a few other changes we made using React.
Visual order on the page follows DOM order
One of the larger changes we made was to revamp modals and popovers (e.g., the post activity screen). Originally we used React Portals but it isn't always the most friendly for accessibility. Ideally you want to have elements appear in logical DOM order and Portals provides a way to circumvent that. So, no more Portals!
The user's focus is directed to new content added to the page
Next step was to provide a way to manage focus. We want to a) direct focus to the modal when it's opened and b) return focus to the element that opened the fullscreen modal. Using React's lifecycle methods and refs, this is simple enough to implement. In your modal component:
public targetEl: HTMLElement; // The element used to open the modal public buttonEl: HTMLElement;
public componentDidMount() { // We add an event listener to get the element that opened the modal document.addEventListener('focus', this.setOriginalTargetEl, true); // We set focus to some element inside your modal this.buttonEl.focus(); }
public componentWillUnmount() { // Return focus to the element that opened the modal if (this.targetEl) { this.targetEl.focus(); } }
public setOriginalTargetEl = event => { // Only set it once to get the initial target if (!this.targetEl) { this.targetEl = event.relatedTarget; document.removeEventListener('focus', this.setOriginalTargetEl, true); } };
public render() { return ( <div> <button ref={(el) => this.buttonEl = el}> Back </button> <div>Your content</div> </div> ); }
This can make navigation a lot easier.
Tada!
Of course, we’re still fine-tuning different elements of the site since accessibility is more than just a number. A lot of these changes will be even more noticeable when the new Tumblr dashboard comes to your desktop. There’s still more to come, so keep your eyes open!
Think there’s a way to make Tumblr more accessible? Hit us up at tumblr.com/jobs and come work with us!
- Nora Mohamed / @nomo
428 notes
·
View notes
Text
JavaScript Event
JavaScript Event : Imagine an interface where the only way to find out whether a key on the keyboard is being pressed is to read the current state of that key. To be able to react to keypresses, you would have to constantly read the key’s state so that you’d catch it before it’s released again. It would be dangerous to perform other time-intensive computations since you might miss a keypress.
A…
View On WordPress
0 notes
Text
New Post has been published on https://eazybeauty.net/1179-2/
[] <![CDATA[ ;window.NREUM||(NREUM=);NREUM.init=distributed_tracing:enabled:true,privacy:cookies_enabled:true,ajax:deny_list:["bam.nr-data.net"]; ;NREUM.loader_config=accountID:"3734716",trustKey:"687234",agentID:"718337696",licenseKey:"NRJS-03692b871131343c231",applicationID:"718337696" ;NREUM.info=beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"NRJS-03692b871131343c231",applicationID:"718337696",sa:1 window.NREUM||(NREUM=),__nr_require=function(t,e,n)function r(n)if(!e[n])var o=e[n]=exports:;t[n][0].call(o.exports,function(e)var o=t[n][1][e];return r(o,o,o.exports)return e[n].exportsif("function"==typeof __nr_require)return __nr_require;for(var o=0;o0&&(l-=1)),s.on("internal-error",function(t)i("ierr",[t,c.now(),!0]))}},],3:[function(t,e,n)(r.features.ins=!0),],4:[function(t,e,n)function r()U++,L=g.hash,this[u]=y.now()function o()U--,g.hash!==L&&i(0,!0);var t=y.now();this[h]=~~this[h]+t-this[u],this[d]=tfunction i(t,e)E.emit("newURL",[""+g,e])function a(t,e)t.on(e,function()this[e]=y.now())var s="-start",c="-end",f="-body",u="fn"+s,d="fn"+c,p="cb"+s,l="cb"+c,h="jsTime",m="fetch",v="addEventListener",w=window,g=w.location,y=t("loader");if(w[v]&&y.xhrWrappable&&!y.disabled)var x=t(11),b=t(12),E=t(9),R=t(7),O=t(14),T=t(8),S=t(15),P=t(10),M=t("ee"),C=M.get("tracer"),N=t(23);t(17),y.features.spa=!0;var L,U=0;M.on(u,r),b.on(p,r),P.on(p,r),M.on(d,o),b.on(l,o),P.on(l,o),M.buffer([u,d,"xhr-resolved"]),R.buffer([u]),O.buffer(["setTimeout"+c,"clearTimeout"+s,u]),S.buffer([u,"new-xhr","send-xhr"+s]),T.buffer([m+s,m+"-done",m+f+s,m+f+c]),E.buffer(["newURL"]),x.buffer([u]),b.buffer(["propagate",p,l,"executor-err","resolve"+s]),C.buffer([u,"no-"+u]),P.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"]),a(T,m+s),a(T,m+"-done"),a(P,"new-jsonp"),a(P,"jsonp-end"),a(P,"cb-start"),E.on("pushState-end",i),E.on("replaceState-end",i),w[v]("hashchange",i,N(!0)),w[v]("load",i,N(!0)),w[v]("popstate",function()i(0,U>1),N(!0)),],5:[function(t,e,n)function r()var t=new PerformanceObserver(function(t,e)var n=t.getEntries();s(v,[n]));tryt.observe(entryTypes:[“resource”])catch(e)function o(t)if(s(v,[window.performance.getEntriesByType(w)]),window.performance[“c”+p])trywindow.performance[h](m,o,!1)catch(t)else trywindow.performance[h](“webkit”+m,o,!1)catch(t)function i(t)if(window.performance&&window.performance.timing&&window.performance.getEntriesByType)var a=t(“ee”),s=t(“handle”),c=t(14),f=t(13),u=t(6),d=t(23),p=”learResourceTimings”,l=”addEventListener”,h=”removeEventListener”,m=”resourcetimingbufferfull”,v=”bstResource”,w=”resource”,g=”-start”,y=”-end”,x=”fn”+g,b=”fn”+y,E=”bstTimer”,R=”pushState”,O=t(“loader”);if(!O.disabled)O.features.stn=!0,t(9),”addEventListener”in window&&t(7);var T=NREUM.o.EV;a.on(x,function(t,e)var n=t[0];n instanceof T&&(this.bstStart=O.now())),a.on(b,function(t,e)var n=t[0];n instanceof T&&s(“bst”,[n,e,this.bstStart,O.now()])),c.on(x,function(t,e,n)this.bstStart=O.now(),this.bstType=n),c.on(b,function(t,e)s(E,[e,this.bstStart,O.now(),this.bstType])),f.on(x,function()this.bstStart=O.now()),f.on(b,function(t,e)s(E,[e,this.bstStart,O.now(),”requestAnimationFrame”])),a.on(R+g,function(t)this.time=O.now(),this.startPath=location.pathname+location.hash),a.on(R+y,function(t)s(“bstHist”,[location.pathname+location.hash,this.startPath,this.time])),u()?(s(v,[window.performance.getEntriesByType(“resource”)]),r()):l in window.performance&&(window.performance[“c”+p]?window.performance[l](m,o,d(!1)):window.performance[l](“webkit”+m,o,d(!1))),document[l](“scroll”,i,d(!1)),document[l](“keypress”,i,d(!1)),document[l](“click”,i,d(!1)),],6:[function(t,e,n)e.exports=function()return”PerformanceObserver”in window&&”function”==typeof window.PerformanceObserver,],7:[function(t,e,n)function r(t)for(var e=t;e&&!e.hasOwnProperty(u);)e=Object.getPrototypeOf(e);e&&o(e)function o(t)s.inPlace(t,[u,d],”-“,i)function i(t,e)return t[1]var a=t(“ee”).get(“events”),s=t(“wrap-function”)(a,!0),c=t(“gos”),f=XMLHttpRequest,u=”addEventListener”,d=”removeEventListener”;e.exports=a,”getPrototypeOf”in Object?(r(document),r(window),r(f.prototype)):f.prototype.hasOwnProperty(u)&&(o(window),o(f.prototype)),a.on(u+”-start”,function(t,e)var n=t[1];if(null!==n&&(“function”==typeof n),a.on(d+”-start”,function(t)t[1]),],8:[function(t,e,n)function r(t,e,n)var r=t[e];”function”==typeof r&&(t[e]=function()var t=i(arguments),e=;o.emit(n+���before-start”,[t],e);var a;e[m]&&e[m].dt&&(a=e[m].dt);var s=r.apply(this,t);return o.emit(n+”start”,[t,a],s),s.then(function(t)return o.emit(n+”end”,[null,t],s),t,function(t)throw o.emit(n+”end”,[t],s),t))var o=t(“ee”).get(“fetch”),i=t(32),a=t(31);e.exports=o;var s=window,c=”fetch-“,f=c+”body-“,u=[“arrayBuffer”,”blob”,”json”,”text”,”formData”],d=s.Request,p=s.Response,l=s.fetch,h=”prototype”,m=”nr@context”;d&&p&&l&&(a(u,function(t,e)r(d[h],e,f),r(p[h],e,f)),r(s,”fetch”,c),o.on(c+”end”,function(t,e)var n=this;if(e)var r=e.headers.get(“content-length”);null!==r&&(n.rxSize=r),o.emit(c+”done”,[null,e],n)else o.emit(c+”done”,[t],n))),],9:[function(t,e,n)var r=t(“ee”).get(“history”),o=t(“wrap-function”)(r);e.exports=r;var i=window.history&&window.history.constructor&&window.history.constructor.prototype,a=window.history;i&&i.pushState&&i.replaceState&&(a=i),o.inPlace(a,[“pushState”,”replaceState”],”-“),],10:[function(t,e,n)function r(t)function e()f.emit(“jsonp-end”,[],l),t.removeEventListener(“load”,e,c(!1)),t.removeEventListener(“error”,n,c(!1))function n()f.emit(“jsonp-error”,[],l),f.emit(“jsonp-end”,[],l),t.removeEventListener(“load”,e,c(!1)),t.removeEventListener(“error”,n,c(!1))var r=t&&”string”==typeof t.nodeName&&”script”===t.nodeName.toLowerCase();if(r)var o=”function”==typeof t.addEventListener;if(o)var a=i(t.src);if(a)var d=s(a),p=”function”==typeof d.parent[d.key];if(p)var l=;u.inPlace(d.parent,[d.key],”cb-“,l),t.addEventListener(“load”,e,c(!1)),t.addEventListener(“error”,n,c(!1)),f.emit(“new-jsonp”,[t.src],l)function o()return”addEventListener”in windowfunction i(t)var e=t.match(d);return e?e[1]:nullfunction a(t,e)var n=t.match(l),r=n[1],o=n[3];return o?a(o,e[r]):e[r]function s(t)var e=t.match(p);return e&&e.length>=3?key:e[2],parent:a(e[1],window):key:t,parent:windowvar c=t(23),f=t(“ee”).get(“jsonp”),u=t(“wrap-function”)(f);if(e.exports=f,o())var d=/[?&](?:callback,],11:[function(t,e,n)var r=t(“ee”).get(“mutation”),o=t(“wrap-function”)(r),i=NREUM.o.MO;e.exports=r,i&&(window.MutationObserver=function(t)return this instanceof i?new i(o(t,”fn-“)):i.apply(this,arguments),MutationObserver.prototype=i.prototype),],12:[function(t,e,n)function r(t)var e=i.context(),n=s(t,”executor-“,e,null,!1),r=new f(n);return i.context(r).getCtx=function()return e,rvar o=t(“wrap-function”),i=t(“ee”).get(“promise”),a=t(“ee”).getOrSetContext,s=o(i),c=t(31),f=NREUM.o.PR;e.exports=i,f&&(window.Promise=r,[“all”,”race”].forEach(function(t)var e=f[t];f[t]=function(n)function r(t)return function()!tvar o=!1;c(n,function(e,n)Promise.resolve(n).then(r(“all”===t),r(!1)));var a=e.apply(f,arguments),s=f.resolve(a);return s),[“resolve”,”reject”].forEach(function(t)var e=f[t];f[t]=function(t)var n=e.apply(f,arguments);return t!==n&&i.emit(“propagate”,[t,!0],n,!1,!1),n),f.prototype[“catch”]=function(t)return this.then(null,t),f.prototype=Object.create(f.prototype,constructor:value:r),c(Object.getOwnPropertyNames(f),function(t,e)tryr[e]=f[e]catch(n)),o.wrapInPlace(f.prototype,”then”,function(t)return function()var e=this,n=o.argsToArray.apply(this,arguments),r=a(e);r.promise=e,n[0]=s(n[0],”cb-“,r,null,!1),n[1]=s(n[1],”cb-“,r,null,!1);var c=t.apply(this,n);return r.nextPromise=c,i.emit(“propagate”,[e,!0],c,!1,!1),c),i.on(“executor-start”,function(t)t[0]=s(t[0],”resolve-“,this,null,!1),t[1]=s(t[1],”resolve-“,this,null,!1)),i.on(“executor-err”,function(t,e,n)t[1](n)),i.on(“cb-end”,function(t,e,n)i.emit(“propagate”,[n,!0],this.nextPromise,!1,!1)),i.on(“propagate”,function(t,e,n)),r.toString=function()return””+f),],13:[function(t,e,n)var r=t(“ee”).get(“raf”),o=t(“wrap-function”)(r),i=”equestAnimationFrame”;e.exports=r,o.inPlace(window,[“r”+i,”mozR”+i,”webkitR”+i,”msR”+i],”raf-“),r.on(“raf-start”,function(t)t[0]=o(t[0],”fn-“)),],14:[function(t,e,n)function r(t,e,n)t[0]=a(t[0],”fn-“,null,n)function o(t,e,n)this.method=n,this.timerDuration=isNaN(t[1])?0:+t[1],t[0]=a(t[0],”fn-“,this,n)var i=t(“ee”).get(“timer”),a=t(“wrap-function”)(i),s=”setTimeout”,c=”setInterval”,f=”clearTimeout”,u=”-start”,d=”-“;e.exports=i,a.inPlace(window,[s,”setImmediate”],s+d),a.inPlace(window,[c],c+d),a.inPlace(window,[f,”clearImmediate”],f+d),i.on(c+u,r),i.on(s+u,o),],15:[function(t,e,n)function r(t,e)d.inPlace(e,[“onreadystatechange”],”fn-“,s)function o()var t=this,e=u.context(t);t.readyState>3&&!e.resolved&&(e.resolved=!0,u.emit(“xhr-resolved”,[],t)),d.inPlace(t,y,”fn-“,s)function i(t)x.push(t),m&&(E?E.then(a):w?w(a):(R=-R,O.data=R))function a()for(var t=0;t1?t[1]=i:t.push(i)else t[0]&&t[0].headers&&e(t[0].headers,o)&&(this.dt=o)),u.on(“fetch-start”,function(t,e),i=this.target;if(“string”==typeof i?n=i:”object”==typeof i&&i instanceof y?n=i.url:window.URL&&”object”==typeof i&&i instanceof URL&&(n=i.href),o(this,n),”data”!==this.params.protocol)0),u.on(“fetch-done”,function(t,e)if(this.endTime=a.now(),this.params)},],18:[function(t,e,n)var r=;e.exports=function(t),],19:[function(t,e,n)function r(t,e)”json”===n?o(t.response):”text”===nvar o=t(22);e.exports=r,],20:[function(t,e,n)function r()function o(t,e,n,r)return function()return u.recordSupportability(“API/”+e+”/called”),i(t+e,[f.now()].concat(s(arguments)),n?null:this,r),n?void 0:thisvar i=t(“handle”),a=t(31),s=t(32),c=t(“ee”).get(“tracer”),f=t(“loader”),u=t(25),d=NREUM;”undefined”==typeof window.newrelic&&(newrelic=d);var p=[“setPageViewName”,”setCustomAttribute”,”setErrorHandler”,”finished”,”addToTrace”,”inlineHit”,”addRelease”],l=”api-“,h=l+”ixn-“;a(p,function(t,e)d[e]=o(l,e,!0,”api”)),d.addPageAction=o(l,”addPageAction”,!0),d.setCurrentRouteName=o(l,”routeName”,!0),e.exports=newrelic,d.interaction=function()return(new r).get();var m=r.prototype=createTracer:function(t,e)var n=,r=this,o=”function”==typeof e;return i(h+”tracer”,[f.now(),t,n],r),function()if(c.emit((o?””:”no-“)+”fn-start”,[f.now(),r,o],n),o)tryreturn e.apply(this,arguments)catch(t)throw c.emit(“fn-err”,[arguments,this,t],n),tfinallyc.emit(“fn-end”,[f.now()],n);a(“actionText,setName,setAttribute,save,ignore,onEnd,getContext,end,get”.split(“,”),function(t,e)m[e]=o(h,e)),newrelic.noticeError=function(t,e)“string”==typeof t&&(t=new Error(t)),u.recordSupportability(“API/noticeError/called”),i(“err”,[t,f.now(),!1,e]),],21:[function(t,e,n){function r(t)if(NREUM.init)for(var e=NREUM.init,n=t.split(“.”),r=0;r0)var r=n[n.length-1];if(f&&f
0 notes
Text
December 24,… – First Presbyterian Church of Bellefonte

0)for(var c=0;c0&&(X=X.concat(Y),t(X),Y=[]);j()||(n(“ssr_inline_injector_ready”),ea(),s(),m())}function p(a){e||(window.qpl_tag&&window.qpl_tag([“hasUseMatchViewportCheck”]),e=!0);return!window.matchMedia?!1:a.every(function(a){var b=a.dimension,c=a.numPixels,d=a.operation;a=a.result;d=q(d,b,c);return window.matchMedia(d).matches===a})}function q(a,b,c){return”(“+a+”-“+b+”: “+c+”px)”}function r(a){typeof window.requestIdleCallback===”function”&&(n(“ssr_prerender_queued”),window.__SSRForceLayoutCallbackID=window.requestIdleCallback(function(){n(“ssr_prerender_start”),window.__SSRForceLayoutCallbackID=null,a.offsetTop,n(“ssr_prerender_end”)}))}function s(){var b=z($,a.ROOT);if(!b){l(“Error locating root suspense node for ROOT”);return}H(b);f&&b.nextSibling instanceof HTMLElement&&r(b.nextSibling);if(a.gks.comet_ssr_use_progressive_loading)for(var c in Z)if(!y(c)){l(“Boundary marker for “+c+” was not fulfilled”);return}X.length===1&&Y.length===0?n(“ssr_injected”):X.length!==1?l(“Error combining boundaries, multiple roots found: “+X.length):l(“Delayed boundaries were not injected: “+Y.map(function(a){return a.id}).join(“, “))}function t(a){var b=a.length;for(var c=0;c11&&a.push(d.id.substring(5,e))}}return a}function F(a){return A(z($,a))}function G(a){if(!$)return;var b=z($,a);if(!B(b))return;I($,a);J(b,ca)}function H(a){aa(function(){J(a,N)})}function I(a,b){var c=a.querySelector(“#”+O(b));if(c==null)return;a=a.querySelector(“#”+P(b));c=c.nextSibling;a=a==null?void 0:a.previousSibling;if(!B(c)||!B(a)||!A(c)){l(“Error Looking for suspense boundary “+b);return}var d=c==null?void 0:c.parentNode;if(!d){l(“Error Looking for parentNode in suspense boundary “+b);return}b=c==null?void 0:c.nextSibling;while(b){if(b===a)break;c=b;b=b.nextSibling;d.removeChild(c)}}function J(a,b){a&&A(a)&&(a.textContent=b,a._reactRetry&&a._reactRetry())}function K(a){var b=document.createDocumentFragment(),c=document.getElementById(da(a));if(c!=null){c=c.childNodes;while(c.length)b.appendChild(c[0])}else l(“Error: content not found for boundary: “+a);return{content:b,id:a}}function L(a){f?a.style[“content-visibility”]=”hidden”:a.style.display=”none”}var M=[];function aa(b){if(!a.gks.comet_ssr_wait_for_dev){b();return}M.push(b);typeof window.__comet_ssr_continue!==”function”&&(window.__comet_ssr_continue=function(){var a=M.pop(),b=M.length;a&&a();return b})}var N=”$”,ba=”$?”,ca=”$!”,da=function(a){return”ssrb_”+a+”_content”},O=function(a){return”ssrb_”+a+”_start”},P=function(a){return”ssrb_”+a+”_end”},Q=function(a){var b=document.createElement(“span”);b.id=a;b.setAttribute(“style”,”display:none”);return b};function R(){var b=function(a){return document.createComment(a)},c=document.createDocumentFragment();c.appendChild(b(“$”));c.appendChild(Q(O(a.ROOT)));c.appendChild(b(“$?”));c.appendChild(b(“/$”));c.appendChild(Q(P(a.ROOT)));c.appendChild(b(“/$”));return c}var S,T={total:0},U=[];function ea(){var a=”click”,b=function(a){if(a.target instanceof HTMLElement){var b=a.target,c=b;while(c!==null&&c.tagName!==”A”&&c.tagName!==”BODY”){var d;c=(d=c)==null?void 0:d.parentNode}((d=c)==null?void 0:d.tagName)===”BODY”&&(a.preventDefault(),a.stopPropagation(),U.push(b),T.total++)}};$&&($.addEventListener(a,b),S=function(){$.removeEventListener(a,b),window.setTimeout(function(){U.forEach(function(a){a.click()})},0)})}var V={ARRIVED:”ARRIVED”,PENDING:”PENDING”},W=[],X=[],Y=[],Z={};Z[a.ROOT]=V.PENDING;(!a.success_status||!a.ROOT||!a.eid)&&l(“Error receiving SSRData: missing keys”);var $=document.getElementById(a.eid);$?a.gks.mwp_ssr_enabled?(a.gks.comet_ssr_use_progressive_loading||L($),$.appendChild(R()),X.push({content:$,id:”document”})):($.appendChild(R()),k()):l(“Error locating root element: “+a.eid);window.__onSSRPayload=o;window.__onSSRCompleted=h;window.__invalidateSSR=l;typeof window.requireLazy===”function”&&window.requireLazy([“ReactDOMComet”],function(a){n(“ssr_reactdom_ready”)})};]]> December 24,… – First Presbyterian Church of Bellefonte hc&&document.documentElement.classList.add(“_8ykn”);]]> Source
The post December 24,… – First Presbyterian Church of Bellefonte appeared first on Best Reviews and Recommendations.
https://hiccupsandkicks.co.uk/wp-content/uploads/2022/01/269597173_245713147669476_2726595846294330331_n-150x150.jpg https://hiccupsandkicks.co.uk/2022/01/17/december-24-first-presbyterian-church-of-bellefonte/
0 notes
Text
Design your own Runtime
The Elm Architecture is one of the great innovations Elm brought to the software industry. But one of the questions that often comes up is how to scale it up for bigger applications. In this article I want to show various ideas that allow you to enhance the Elm architecture to make developing larger applications easier.
But first, we should discuss the Runtime. Elm, as a programming language is completely pure (with some mostly insignificant exceptions). To make it useful, we pair it with the Elm runtime, that performs effects on our behalf and calls our code with the results.
We set this relationship up when we define main, by calling (typically) a function from elm/browser. These functions that elm/browser exposes are our hooks into the runtime, telling it what functions to call when, and from which functions to accept instructions as to which effects to perform.
However, these runtimes aren't all magic. In fact they form a hierarchy where each successive version can be implemented on top of the previous runtime. The most basic one we have access to is Platform.worker:
worker : { init : flags -> ( model, Cmd msg ) , update : msg -> model -> ( model, Cmd msg ) , subscriptions : model -> Sub msg } -> Program flags model msg
The first thing you'll notice is that there is no view function! But this function gives us the basics we need:
it tells the runtime how to initialise the main loop
it tells the runtime how to update the loop
it tells the runtime where to execute effects from and how to receive input from outside
Now imagine that Elm gave us the following function renderHTML : Html msg -> Cmd msg. We can now make our next runtime in the hierarchy, Browser.element:
renderAfterUpdate : (model -> Html msg) -> (model, Cmd msg) -> (model, Cmd msg) renderAfterUpdate view (model, cmds) = ( model, Cmd.batch [ renderHtml (view model), cmds ] ) element : { init : flags -> ( model, Cmd msg ) , view : model -> Html msg , update : msg -> model -> ( model, Cmd msg ) , subscriptions : model -> Sub msg } -> Program flags model msg element config = Platform.worker { init = config.init >> renderAfterUpdate config.view , update = \msg model -> config.update msg model |> renderAfterUpdate config.view , subscriptions = config.subscriptions }
(To see how you would actually build this using ports if you didn't have the above mentioned magical renderHTML function, I have written an article just about that.)
In a similar manner you can then build all the other functions in the Browser module, slowly layering on more functionality, that declaratively makes the applications more powerful. In the rest of this article, we are going to explore some ideas how you can also layer on more functionality and give your application superpowers.
Effect Types
I mentioned previously that your pure Elm program instructs the runtime which (side) effects you would like it to run. This is achieved through the Cmd type. However, the Cmd type has a few features that can make it challenging to use in some situations:
It is opaque, so there is no way to see inside it.
It can contain functions, so it can't even be reliably =='d.
Effect Types circumvent these problems, and involve creating a custom Effect type, that enumerates all the possible effects that your application can perform. Then you change the signature of your update functions to update : Msg -> Model -> (Model, Effect Msg). Finally, you make a wrapper that actually evaluates these effects by turning them into Cmds.
This has the following benefits:
Testing your application either as a whole or even just testing individual update functions becomes straightforward, as all you need to do is provide a fake implementation of the function that runs effects. You can check out avh4/elm-program-test for some testing goodness based on this idea.
You can treat things as effects that aren't. For example notifications are typically much easier to model as an effect that is managed by the runtime, even if the implementation is just some model field that get's modified and a regular Elm view. Likewise there can be top-level state (we'll talk about this more a bit later), that components might want to modify as an effect (for instance switching a colour theme).
You can describe effects at the right level of abstraction. For instance sometimes request/response pairs of ports are unavoidable, but you can't implement them as a Cmd Msg (meaning you can't make it a Cmd that gives you a Msg back, you have to manually manage the corresponding subscription). However, nothing is stopping you implementing an Effect that stores a "request" in the model, ads the corresponding subscriptions, handles matching request/response semantics by id, timeouts and error handling, and packages all this as a single Msg back to the caller.
In a similar manner, you can also do things like if an effect consists of making several HTTP requests in parallel, the machinery for that can also be abstracted away.
You can make your effects composable by implementing batch and map, or skip that if you don't want it. There is a lot of flexibility in the approach.
Declarative Effects
As mentioned above, Elm treats some effects specially by not using Cmds, most notably HTML rendering. Instead a declarative abstraction is offered, which runs a function of the model, then compares the current result with the previous result, and runs effects based on the diff.
In fact you could think even of subscriptions as implemented like that:
worker : { init : flags -> ( model, Cmd msg ) , update : msg -> model -> ( model, Cmd msg ) , subscriptions : model -> Sub msg } -> Program flags ({model : model, subs: List (Sub msg)}) msg worker config = primitiveProgram { init = config.init >> Tuple.mapFirst (\m -> {model = m, subs = []}) update = \msg model -> let newSubs = config.subscriptions model.model (added, removed) = diffSubs model.subs newSubs (newModel, cmds) = config.update msg model.model in ( { model = newModel, subs = newSubs } , Cmd.batch [ cmds , List.map addEventListener added |> Cmd.batch , List.map removeEventListener removed |> Cmd.batch ] ) }
The code above features a bunch of imaginary primitives and indeed all of this is actually implemented in Kernel code, but I think it illustrates how one might think of building declarative effects in their own app.
Some use-cases that I've seen is for example a function that renders web audio, but perhaps this could also be used for declaratively changing the URL for routing, or non-HTML based rendering (a PDF renderer?).
Automatic effects
Evan Czaplicki's TodoMVC implementation also sort of includes a custom runtime, and this does a simple thing: after anything happens, it serialises the model and saves it to localStorage. Similarly, your runtime can automatically do things, and your code doesn't have to worry about it.
Context
Another useful addition you can do (often in combination) with effects is providing your functions read only values from the runtime. For instance, it can be powerful to know what the window dimensions are in the view, or what the name of the current user is in the update, without having to write model logic to deal with these things is great.
view : Context -> Model -> Html Msg update : Context -> Msg -> Model -> (Model, Effect Msg) -- etc for init, subscriptions
You can of course provide Effects to allow the app to modify these values.
(Master) View Types
The standard Elm runtime mandates that you return Html from your views. However, Html is a format designed for writing scientific articles in the early nineties, and as such might not be the ideal thing to express highly dynamic applications in. Furthermore, to make HTML actually work practically, it has to be coupled to CSS, a language designed to separate the formatting of documents from the act of writing them. Thankfully, as elm-ui has demonstrated, we are not limited to the past.
You can design your own view language. This is particularly nice if you are already using a design system with predefined components and layout patterns. You can then translate these into a system of Elm modules that implement the system directly.
module View exposing (View, Attribute, Background, TextColor, Padding , render ) type View msg = Box { background : Background, padding : Padding} | Text {textColor: TextColor, text : String} -- ... | EscapeHatch (Html msg) type Background = Level1 | Level2 type TextColor = Primary | Secondary | Disabled | Active render : View msg -> Html msg
and so on.
Doing this has some interesting benefits. First of all, you can ensure that your teams produces highly cohesive interfaces, since the system either nudges or enforces this (depending if you provide an escape hatch).
Secondly, testing becomes more high level, since your views are now a custom type that you can write matching functions for trivially, and their semantics are more obvious (i.e. a tabbed interface will be a Tab constructor, rather than a see of divs with some arbitrary classes applies to them).
Taking this further
Once your views are defined in your own types, you can start building a lot of interesting capabilities on top of these. One experiment that I wrote allowed you to include local state for these view types.
The trick to doing that is to actually call the users view function in update, then traverse the resulting tree and match it up to the component state. Then you run each components update function on its own state and save the resulting tree in the model. When it comes time to calling view, you simply transform this resulting tree into Html. Most of the code is simply bookkeeping to match the view tree to the state tree. Is this is a good idea? I think a lot more testing would be needed to find out.
Another useful thing that is easy to implement is extending the context idea into the view:
withDeviceDimensions : ({ width : Int, height : Int } -> View msg) -> View msg -- view = row [ ] [ withDeviceDimensions (\{width, height} -> svgDrawing [ text_ [ x (width / 2) ] [ text "Hello from the middle of the screen!" ] ] )]
This can be particularly helpful for localisation, as it frees you from needing to pass the locale all over the place.
I would like to also see if these tricks could be nicely combined with animation, so we can have neat enter and leaving animations without giving up the Virtual DOM style of programming.
URL Coders
I have to admit that one of my least favourite core Elm apis is Browser.application. Even after years of using it, I still find the combination of onUrlRequest and onUrlChange and how they interact with pushUrl confusing. Every time I need to use a Url.Parser, I stare at its type signatures with puzzlement. Perhaps frontend routing is confusing simply by its nature.
However, that doesn't mean we can't try fixing it. I've written a very rough sketch of an alternative API, that would be suitable for some kinds of apps. I foresee it most useful for apps that truly have a central model, like calculators, dashboards, maps, etc. On the other hand content based apps might want to stick with the builtin (or just with server side routing).
The main idea is to treat URLs as a encoded version of the model. And for encoding and decoding we have very nice tools in Elm: encoders and decoders. Leonardo Taglialegne has extended this idea into that of Codecs, which combine encoders and decoders into a single structure, that (mostly) guarantees that they are mutually compatible. So the idea is to build a codec for URLs, but of course we typically don't want to store the whole model in the URL, hence we would call it a lossy encoding.
That means that the encoders would lose data from the model, and the decoders would need ways to recover a model (possibly not the same one). This recovery can either simply be providing a default value, or it can be a side-effect like reading something from the environment (i.e. flags or Browser.getViewport) or recovering the whole value by fetching the data from a server.
This would allow to get rid of init, onUrlRequest, onUrlChange, pushUrl, replaceUrl and Url.Parser at the cost of providing a single URLCodec, that unifies all those things.
Admittedly this is the least fleshed out idea out of all of the above, but the point is to encourage you to find better APIs that fit the app you want to write.
Make it your own
This wasn't meant as a list of things you need to do, but more a menu of delicius dishes that you can combine into making your application code clean and expressing the ideas that it represents rather than a lot of mechanical details mixed in with the business logic. Feel free to discuss this article on the Elm slack.
0 notes
Text
World and International News
1)},!0)}},{}],5:[function(t,e,n){function r(t){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var o=t(“ee”),i=t(“handle”),a=t(13),c=t(12),s=”learResourceTimings”,f=”addEventListener”,u=”resourcetimingbufferfull”,d=”bstResource”,p=”resource”,h=”-start”,l=”-end”,m=”fn”+h,v=”fn”+l,w=”bstTimer”,y=”pushState”,b=t(“loader”);b.features.stn=!0,t(8);var g=NREUM.o.EV;o.on(m,function(t,e){var n=t[0];n instanceof g&&(this.bstStart=b.now())}),o.on(v,function(t,e){var n=t[0];n instanceof g&&i(“bst”,[n,e,this.bstStart,b.now()])}),a.on(m,function(t,e,n){this.bstStart=b.now(),this.bstType=n}),a.on(v,function(t,e){i(w,[e,this.bstStart,b.now(),this.bstType])}),c.on(m,function(){this.bstStart=b.now()}),c.on(v,function(t,e){i(w,[e,this.bstStart,b.now(),”requestAnimationFrame”])}),o.on(y+h,function(t){this.time=b.now(),this.startPath=location.pathname+location.hash}),o.on(y+l,function(t){i(“bstHist”,[location.pathname+location.hash,this.startPath,this.time])}),f in window.performance&&(window.performance[“c”+s]?window.performance[f](u,function(t){i(d,[window.performance.getEntriesByType(p)]),window.performance[“c”+s]()},!1):window.performance[f](“webkit”+u,function(t){i(d,[window.performance.getEntriesByType(p)]),window.performance[“webkitC”+s]()},!1)),document[f](“scroll”,r,{passive:!0}),document[f](“keypress”,r,!1),document[f](“click”,r,!1)}},{}],6:[function(t,e,n){function r(t){for(var e=t;e&&!e.hasOwnProperty(u);)e=Object.getPrototypeOf(e);e&&o(e)}function o(t){c.inPlace(t,[u,d],”-“,i)}function i(t,e){return t[1]}var a=t(“ee”).get(“events”),c=t(23)(a,!0),s=t(“gos”),f=XMLHttpRequest,u=”addEventListener”,d=”removeEventListener”;e.exports=a,”getPrototypeOf”in Object?(r(document),r(window),r(f.prototype)):f.prototype.hasOwnProperty(u)&&(o(window),o(f.prototype)),a.on(u+”-start”,function(t,e){var n=t[1],r=s(n,”nr@wrapped”,function(){function t(){if(“function”==typeof n.handleEvent)return n.handleEvent.apply(n,arguments)}var e={object:t,”function”:n}[typeof n];return e?c(e,”fn-“,null,e.name||”anonymous”):n});this.wrapped=t[1]=r}),a.on(d+”-start”,function(t){t[1]=this.wrapped||t[1]})},{}],7:[function(t,e,n){function r(t,e,n){var r=t[e];”function”==typeof r&&(t[e]=function(){var t=r.apply(this,arguments);return o.emit(n+”start”,arguments,t),t.then(function(e){return o.emit(n+”end”,[null,e],t),e},function(e){throw o.emit(n+”end”,[e],t),e})})}var o=t(“ee”).get(“fetch”),i=t(20);e.exports=o;var a=window,c=”fetch-“,s=c+”body-“,f=[“arrayBuffer”,”blob”,”json”,”text”,”formData”],u=a.Request,d=a.Response,p=a.fetch,h=”prototype”;u&&d&&p&&(i(f,function(t,e){r(u[h],e,s),r(d[h],e,s)}),r(a,”fetch”,c),o.on(c+”end”,function(t,e){var n=this;e?e.clone().arrayBuffer().then(function(t){n.rxSize=t.byteLength,o.emit(c+”done”,[null,e],n)}):o.emit(c+”done”,[t],n)}))},{}],8:[function(t,e,n){var r=t(“ee”).get(“history”),o=t(23)®;e.exports=r,o.inPlace(window.history,[“pushState”,”replaceState”],”-“)},{}],9:[function(t,e,n){function r(t){function e(){s.emit(“jsonp-end”,[],p),t.removeEventListener(“load”,e,!1),t.removeEventListener(“error”,n,!1)}function n(){s.emit(“jsonp-error”,[],p),s.emit(“jsonp-end”,[],p),t.removeEventListener(“load”,e,!1),t.removeEventListener(“error”,n,!1)}var r=t&&”string”==typeof t.nodeName&&”script”===t.nodeName.toLowerCase();if®{var o=”function”==typeof t.addEventListener;if(o){var a=i(t.src);if(a){var u=c(a),d=”function”==typeof u.parent[u.key];if(d){var p={};f.inPlace(u.parent,[u.key],”cb-“,p),t.addEventListener(“load”,e,!1),t.addEventListener(“error”,n,!1),s.emit(“new-jsonp”,[t.src],p)}}}}}function o(){return”addEventListener”in window}function i(t){var e=t.match(u);return e?e[1]:null}function a(t,e){var n=t.match(p),r=n[1],o=n[3];return o?a(o,e[r]):e[r]}function c(t){var e=t.match(d);return e&&e.length>=3?{key:e[2],parent:a(e[1],window)}:{key:t,parent:window}}var s=t(“ee”).get(“jsonp”),f=t(23)(s);if(e.exports=s,o()){var u=/[?&](?:callback|cb)=([^&#]+)/,d=/(.*).([^.]+)/,p=/^(w+)(.|$)(.*)$/,h=[“appendChild”,”insertBefore”,”replaceChild”];f.inPlace(HTMLElement.prototype,h,”dom-“),f.inPlace(HTMLHeadElement.prototype,h,”dom-“),f.inPlace(HTMLBodyElement.prototype,h,”dom-“),s.on(“dom-start”,function(t){r(t[0])})}},{}],10:[function(t,e,n){var r=t(“ee”).get(“mutation”),o=t(23)®,i=NREUM.o.MO;e.exports=r,i&&(window.MutationObserver=function(t){return this instanceof i?new i(o(t,”fn-“)):i.apply(this,arguments)},MutationObserver.prototype=i.prototype)},{}],11:[function(t,e,n){function r(t){var e=a.context(),n=c(t,”executor-“,e),r=new f(n);return a.context®.getCtx=function(){return e},a.emit(“new-promise”,[r,e],e),r}function o(t,e){return e}var i=t(23),a=t(“ee”).get(“promise”),c=i(a),s=t(20),f=NREUM.o.PR;e.exports=a,f&&(window.Promise=r,[“all”,”race”].forEach(function(t){var e=f[t];f[t]=function(n){function r(t){return function(){a.emit(“propagate”,[null,!o],i),o=o||!t}}var o=!1;s(n,function(e,n){Promise.resolve(n).then(r(“all”===t),r(!1))});var i=e.apply(f,arguments),c=f.resolve(i);return c}}),[“resolve”,”reject”].forEach(function(t){var e=f[t];f[t]=function(t){var n=e.apply(f,arguments);return t!==n&&a.emit(“propagate”,[t,!0],n),n}}),f.prototype[“catch”]=function(t){return this.then(null,t)},f.prototype=Object.create(f.prototype,{constructor:{value:r}}),s(Object.getOwnPropertyNames(f),function(t,e){try{r[e]=f[e]}catch(n){}}),a.on(“executor-start”,function(t){t[0]=c(t[0],”resolve-“,this),t[1]=c(t[1],”resolve-“,this)}),a.on(“executor-err”,function(t,e,n){t[1](n)}),c.inPlace(f.prototype,[“then”],”then-“,o),a.on(“then-start”,function(t,e){this.promise=e,t[0]=c(t[0],”cb-“,this),t[1]=c(t[1],”cb-“,this)}),a.on(“then-end”,function(t,e,n){this.nextPromise=n;var r=this.promise;a.emit(“propagate”,[r,!0],n)}),a.on(“cb-end”,function(t,e,n){a.emit(“propagate”,[n,!0],this.nextPromise)}),a.on(“propagate”,function(t,e,n){this.getCtx&&!e||(this.getCtx=function(){if(t instanceof Promise)var e=a.context(t);return e&&e.getCtx?e.getCtx():this})}),r.toString=function(){return””+f})},{}],12:[function(t,e,n){var r=t(“ee”).get(“raf”),o=t(23)®,i=”equestAnimationFrame”;e.exports=r,o.inPlace(window,[“r”+i,”mozR”+i,”webkitR”+i,”msR”+i],”raf-“),r.on(“raf-start”,function(t){t[0]=o(t[0],”fn-“)})},{}],13:[function(t,e,n){function r(t,e,n){t[0]=a(t[0],”fn-“,null,n)}function o(t,e,n){this.method=n,this.timerDuration=isNaN(t[1])?0:+t[1],t[0]=a(t[0],”fn-“,this,n)}var i=t(“ee”).get(“timer”),a=t(23)(i),c=”setTimeout”,s=”setInterval”,f=”clearTimeout”,u=”-start”,d=”-“;e.exports=i,a.inPlace(window,[c,”setImmediate”],c+d),a.inPlace(window,[s],s+d),a.inPlace(window,[f,”clearImmediate”],f+d),i.on(s+u,r),i.on(c+u,o)},{}],14:[function(t,e,n){function r(t,e){d.inPlace(e,[“onreadystatechange”],”fn-“,c)}function o(){var t=this,e=u.context(t);t.readyState>3&&!e.resolved&&(e.resolved=!0,u.emit(“xhr-resolved”,[],t)),d.inPlace(t,y,”fn-“,c)}function i(t){b.push(t),l&&(x?x.then(a):v?v(a):(E=-E,P.data=E))}function a(){for(var t=0;t div[id^=’ut_container’]”, “adblock_cookie”: “WhiteListed”, “sourcepoint”: {“aamtargeting”: [{“segments”: [“1235”, “1236”, “1237”, “1238”, “1239”, “1240”], “key”: “casual”}, {“segments”: [“1241”, “1242”, “1243”], “key”: “dedicated”}], “content_control_enabled”: false, “account”: 308, “messaging_script_url”: “//7q1z79gxsi.global.ssl.fastly.net/7q1z79gxsi-m.js”, “mms_script_url”: “//7q1z79gxsi.global.ssl.fastly.net/7q1z79gxsi-c.js”, “enabled”: true, “domain”: “sp.usatoday.com”, “onCards”: true, “onMedia”: true, “onOverlay”: true, “content_control_url”: “https://www.gannett-cdn.com/partner/vendor/sourcepoint/sp-content-control/index.html”}, “progressive_gallery_refresh_rate”: 1, “google_pts”: {“enabled”: true}, “blockThrough”: {“enabled”: false, “scriptUrl”: “https://gannett-com.videoplayerhub.com/galleryplayer.js”}, “poster_scroll_refresh_disabled”: true, “scroll”: {“enabled”: true}, “leaderboard_on_sponsored”: false, “ttfc”: false, “confiant”: {“refreshBlocked”: true, “enabled”: true, “scriptUrl”: “https://confiant-integrations.global.ssl.fastly.net/r5TdgVvkbv-PeaJCKaQfCh5Xsto/gpt_and_prebid_v3l/config.js”}, “front_leaderboard_enabled”: true, “partner_send2news”: {“ABtestScriptUrl”: “https://embed.sendtonews.com/player3/embedcode.js?fk=cjuOTqpG&cid=8694&sound=off&offsetx=0&offsety=0&floatwidth=400&floatposition=bottom-right&float=on”, “playerTimeout”: 5000, “priority_player_subsection”: {“mlb”: {“customClass”: “gyhyyD0W”}, “tennis”: {“customClass”: “I0YmqoIo”}, “golf”: {“customClass”: “bo2HKNzP”}, “nhl”: {“customClass”: “GeHgmUir”}, “nfl”: {“customClass”: “4DDMhuQH”}, “wnba”: {“customClass”: “QO0kxSlo”}, “nba”: {“customClass”: “Citq8634”}, “soccer”: {“customClass”: “vKWrE1aZ”}, “boxing”: {“customClass”: “77lbbniI”}}, “enabled”: false, “ABtestS2N”: false, “priority_player_scriptUrl”: “https://embed.sendtonews.com/player3/embedcode.js?cid=5176&offsetx=0&offsety=0&floatwidth=400&floatposition=bottom-right&floatwidth=400”, “ABtest_player_class”: “s2nPlayer k-cjuOTqpG”, “scriptUrl”: “https://embed.sendtonews.com/player3/embedcode.js?fk=1ZJAuM2m&cid=5176&offsetx=0&offsety=0&floatwidth=400&floatposition=bottom-right”, “subsection_name”: “mlb”, “player_class”: “s2nPlayer k-1ZJAuM2m”, “priorityEnabled”: true}, “pubmatic”: {“url”: “http://ads.pubmatic.com/AdServer/js/gshowad.js”, “enabled”: true, “account”: “57752”, “group”: “1”, “slots”: [“ATF@728×90”, “BTF@728×90”, “ATF@300×250”, “BTF@300×250”, “ATF@300×600”, “ROS@970×250”, “ROS@300×1050”]}, “sponsor_button”: {“enabled”: false}}, “REFRESH_RATE”: 7, “site_key”: “usatoday”, “userAuthentication”: {“login”: {“url”: “https://login.usatoday.com/USAT-GUP/authenticate/”, “cancel_qsp”: “cancel-url”, “success_qsp”: “success-url”}, “logout”: {“url”: “https://user.usatoday.com/USAT-GUP/user/logout/”, “return_qsp”: “return-url”}, “user”: {“url”: “https://user.usatoday.com/USAT-GUP/user/”, “response_user_path”: [“response”, “user”]}, “personal_link”: {“url”: “https://login.usatoday.com/USAT-GUP/authenticate/”, “qsp”: “for-guid-disabled”, “enabled”: false}}, “twitter”: {“account_prefix”: “usatoday”, “default_account”: “usatoday”}, “ELECTIONS”: {}, “uw_redirects”: [“/sports/winter-olympics-2018/”, “/sports/winter-olympics-2018/medals”, “/sports/winter-olympics-2018/schedule-and-results”, “/story/sports/winter-olympics-2018/”, “/picture-gallery/sports/winter-olympics-2018/”, “/videos/sports/winter-olympics-2018/”, “/story/news/2018/05/18/cincinnati-zoo-travels-congo-where-gorillas-live/570218002/”, “/picture-gallery/news/2018/05/17/where-the-gorillas-live-cincinnati-zoo-travels-to-the-congo/35010897/”, “/money/usaandmain/”, “/story/news/nation/2018/07/19/artificial-light-dark-sky-park-night-sky/773451002/”, “news/investigations/”, “deadly-deliveries/videos/”, “deadly-deliveries/interactive/how-hospitals-are-failing-new-moms-in-graphics”, “nfl/rankings/fan-rankings/”, “nfl/rankings/fans/”, “sports/nfl/rankings/fan-rankings/”, “sports/nfl/rankings/fans/”, “nfl/rankings/h2hComp/”, “/videos/”, “/list/”, “/story/sponsor-story/”, “/staff/”, “/sitemap/”], “ad_free_entitlements”: [“paid_subscriber_basicplus”, “paid_subscriber_premiumplus”, “paid_shared_subscriber_premiumplus”], “analytics”: [“tealium”, “pong”, “taboola”], “featured_newsletter”: {“climatepoint”: {“fbid”: 0}, “shortlist”: {“fbid”: “1613278598987210”}, “fourth_and_monday”: {“fbid”: 0}, “usa_main”: {“fbid”: 0}, “postcards_from_westeros”: {“fbid”: 0}, “breaking_long”: {“fbid”: 0}, “storytellers”: {“fbid”: 0}, “irma”: {“fbid”: 0}, “thanksgiving”: {“fbid”: 0}, “on_politics”: {“fbid”: “1613278598987210”}, “rigged”: {“fbid”: 0}, “policing_the_usa”: {“fbid”: 0}, “humankind”: {“fbid”: 0}, “i_am_an_american”: {“fbid”: 0}, “one_nation”: {“fbid”: 0}, “nba”: {“fbid”: 0}, “behindthestory”: {“fbid”: 0}, “animalkind”: {“fbid”: 0}, “consumer_tech”: {“fbid”: “1613278598987210”}, “weekly_elvis”: {“fbid”: 0}}, “search”: {“ENABLED”: true}, “property_type”: “publishing”, “cam_messaging”: {“masthead_url”: “https://subscribe.usatoday.com/”, “masthead_enabled”: true, “section_colors_enabled”: true, “inline_roadblock_enabled”: false, “enabled”: true, “persistent_meter_enabled”: false, “platform_code”: “/cp/”}, “THIRDPARTYAPI”: {“FIREFLY”: {“flyoutOverrideArticleViewsRemaining”: [], “gps”: {“tweener_singular”: “CPPWSUB1L”, “custom”: “CPPWSUB30”, “tweener”: “CPPWSUB30”, “last”: “CPPWSUBFIN”, “first”: “CPPWFIRST”}, “ENABLED”: false, “autoplayEnabled”: true, “flyoutMessageOverrides”: {“tweener_singular”: ” article left”, “tweener”: ” articles left”, “last”: “This is your last article!”, “first”: “Enjoy a limited number of articles over the next 30 days”}}, “Iris”: {“skip_forward”: false, “enabled”: true, “thumbs_up”: false, “number”: 5, “enable_by_section”: false, “thumbs_down”: false, “skip_back”: false, “client_token”: “K14PWQZ819”, “script_url”: “https://ovp.iris.tv/libs/adaptive/v2/iris.adaptive”}, “FORMSTACK”: {“ENABLED”: true}, “parsely”: {“enabled”: false}, “CXENSE”: {“persisted_query_id”: “1a966b551c0201fba9829b3fea1b662417ccf3aa”, “origin”: “gci-web”, “insider_site_id”: “000”, “site_id”: “9222363239123726877”}, “COMSCORE”: {“customerC2”: “6035223”, “script_url”: “https://www.gannett-cdn.com/360player/comscore/streamsense.5.1.1.160316.min”, “site”: “”}, “PING”: {“url”: “https://api.gannett-cdn.com/ping/v1/”}, “CAREERBUILDER”: {“lr”: {}, “siteid”: {}}, “GOOGLEPLUS”: {“APPPACKAGENAME”: “com.usatoday.android.news”, “JSLIBURL”: “https://apis.google.com/js/client.js”, “CLIENTID”: “383230156302.apps.googleusercontent.com”, “COOKIEPOLICY”: “none”, “LOGOUT_URL”: “https://accounts.google.com/o/oauth2/revoke”, “TURNON”: true}, “NEON”: {“script_url”: “https://www.gannett-cdn.com/neon/prod/neonoptimizer_1600036805_20160129.js”}, “MYCAPTURE”: {“SITE_OVERRIDE”: null, “PRICING_SHEET_ID”: “”, “ENABLED”: false}, “CORALTALKCOMMENTS”: {“GUPUAID”: “GUP-CORAL”, “ENABLED”: false, “SERVICE”: “https://gannett.staging.coral.coralproject.net”, “REQUIRESMARKETACCESS”: false}, “FACEBOOK”: {“COMMENTSENABLED”: false, “PERMISSIONS”: “email,user_about_me”, “ENABLED”: true, “APPID”: “215046668549694”}, “Taboola”: {“apiBase”: “//api.taboola.com/1.1/json/”, “presto_recommendation”: true, “widget”: true, “apiKey”: “90393b522c6937bd3b1e815ead8d189cea03650”, “newsroom_sections”: [], “ENABLED”: true, “newsroom_enabled”: false, “api_id”: “usatodaydemo”, “sidebar_widget_mode”: “thumbnails-f”, “newsroom_enable_on_sub_sections”: false, “publisher_id”: “usatodaydemo”}, “ADSENSE”: {“pubId”: “partner-usatoday_js”}, “PIANO”: {“enabled”: false}, “GOOGLECONSUMERSURVEY”: {“ad_block_cookie”: “__adblocker”, “relief_period”: 86400000, “gravity_override”: true, “need_market_access”: false, “ENABLED”: true, “content_protection_blacklist”: [], “publisher_id”: “nmnssbqebo6ut5cuerdxxl4rm4”}, “BX”: {“autoplayEnabled”: false}, “PONG”: {“url”: “https://pong.gannettdigital.com/pong/v1/”}}, “INFO”: null, “aws_site_name”: “usat”, “utility_bar_modules”: [{“name”: “utility-bar-module-share”, “options”: {“submodules”: [{“name”: “share-facebook”}, {“name”: “share-email”}]}}, {“name”: “utility-bar-module-comments”}, {“name”: “utility-bar-module-print”}, {“name”: “utility-bar-module-feedback”}], “display_name”: “USA TODAY”, “taboola_exchange”: {“disclaimer”: “These sites are part of the USA TODAY NETWORK. Their content is produced independently from our newsrooms.”, “enabled”: false, “title”: “From The USA TODAY NETWORK”}, “site_env”: “prod”, “market_id”: “USAT”, “site_code”: “USAT”, “html5video”: {“uwIframe”: {“configParams”: “sitelabel=reimagine”, “basePath”: “/embed/video/”, “baseUrl”: “https://uw-media”, “taboolaTimeout”: 300}, “scrollingPlayer”: {“nextVideoText”: “TOP TRENDING”, “dockedWidth”: 400, “videoTitleLength”: 85, “dockedHeight”: 225, “docked”: true, “nextVideoTitleLength”: 60, “nextVideoType”: “most-popular”, “nextVideoAPI”: “https://api.gannett-cdn.com/ping/v1/{TYPE}/{SITE_ID}/{SECTION}/?t=video&api_key={KEY}”, “titleBar”: true, “scrollBreakpoint”: 0.8, “adBlacklist”: [“447257088”]}, “userInactivityTimeout”: 2000, “teal”: {“playerStyles”: “https://www.gannett-cdn.com/gannett-web/apps/teal/dist/tealplayer-78be17dc.css”, “playerScript”: “https://www.gannett-cdn.com/gannett-web/apps/teal/dist/bundle-31843d23.js”}, “playerId”: “rJmr0Xc9”, “checkBrowserTabInactivity”: true, “three60”: {“moreLinkUrl”: “”, “appPromoAppleText”: “DOWNLOAD FROM THE APP STORE”, “showPromoLinks”: false, “hlsSupport”: “https://www.gannett-cdn.com/360player/hls/0.6.2-4/hls.min”, “appPromoTextSecondLine”: “Please use Google Chrome, Firefox, or Microsoft Edge.”, “appPromoText”: “360 Video is not supported in this browser.”, “vrStoriesAppUrl”: “https://itunes.apple.com/us/app/vr-stories-by-usa-today/id975006820?mt=8”, “userEdDisplayDuration”: 5000, “fov”: 70, “usatAppPromoText”: “
USA TODAY NETWORK presents VRtually There, a weekly virtual reality series that delivers amazing adventures, extreme nature, sports fantasies and the world’s most fascinating people. We don’t just tell incredible stories, we let you live the experience in fully immersive environments. Use your VR headset, laptop or smart phone to experience in 360u00b0 video and virtual reality. Download the USA TODAY app, now with virtual reality and subscribe to our YouTube page. Three new thrilling VR experiences each week. Immerse yourself.”, “appPromoHeader”: “Put Yourself Inside the Story”, “moreLinkText”: “More from VR Stories “, “endslateHeader”: “Like this 360° experience? You may also like:”, “usatAppPromoHeader”: “VRtually There”, “usatPlayStoreUrl”: “https://play.google.com/store/apps/details?id=com.usatoday.android.news”, “vrStoriesAppText”: “Get the VR Stories App”, “inactiveTimer”: 15000, “usatAppPromoUrl”: “https://itunes.apple.com/us/app/usa-today/id504631398?mt=8”, “appPromoGoogleText”: “DOWNLOAD FROM GOOGLE PLAY STORE”, “playerUrl”: “https://www.gannett-cdn.com/360player/axis/dist/axis-1.20.7”, “appPromoYouTubeText”: “SUBSCRIBE TO OUR YOUTUBE CHANNEL”, “userEdText”: “This is a 360° video experience. Use your mouse or the arrow keys on your keyboard to see the entire 360° view.”, “controlCollapseDelay”: 1000, “vrStoriesPlayStoreUrl”: “https://play.google.com/store/apps/details?id=com.gannett.vrstories&hl=en”, “vrStoriesAppPromoText”: “Download our USA TODAY VR Stories app to experience 360° content on your smartphone. Navigate using your finger or simply move the phone around. To get an even more immersive experience, you can put your phone into a cardboard viewer or a headset and fully dive into the world of virtual reality.”, “usatYouTubeUrl”: “https://www.youtube.com/vrtuallythere”}, “ima3”: {“requestMode”: “ondemand”, “minimumAdLength”: 10, “adRule”: 0, “debug”: false, “adTechOrder”: [“html5”, “flash”], “requiredSkipAdLength”: 25, “prerollTimeout”: 3000, “loadingSpinner”: true, “timeout”: 3000, “numRedirects”: 4, “vpaidMode”: “INSECURE”, “output”: “xml_vast3”, “nopostroll”: true, “cmsId”: “12768”, “secondsBeforeSkip”: 15, “hardTimeouts”: true}, “accountId”: “29906170001”}, “base_url”: “usatoday.com”, “SMARTPLAYER”: true, “abtests”: [], “flags”: {“light_header”: true, “elections_primary_2016_enabled”: false, “masthead_special_offer_flicker_control”: false, “themed_list_fronts”: true, “progressive_gallery”: true, “trial_expired_registration”: false, “neon”: false, “expired_credit_card_modal”: false, “video_thumbnail_headline”: false, “breaking_live_video_ribbon”: true, “expired_trial_static”: true, “content_override_processing”: true, “lb_above_fw”: false, “markitondemand_usat_money_autocomplete”: false, “enable_election_chatbot”: false, “dr_styling”: true, “show_dynamic_video_playlist”: true, “elections_primary_2016_route”: “”, “ll_video_carousel”: true, “recommended_flyout”: false, “topic_page_related_topic_embed”: false, “privacy_notice_enabled”: false, “comscore_video”: true, “storyrightrail_morestories_add_nationnowstory”: false, “enable_concierge”: false, “disable_swap_fade”: true, “neon_carousel”: false, “fl_ad_cleanup”: true, “disable_ad_animations”: true, “markitondemand_usat_money_stock_asset_page”: true, “html5video”: true, “tempo”: false, “new_automated_topic_pages”: true, “sponsor_name_from_ssts_taxo”: true, “adFreeExperience”: false, “lazy_load”: true, “enable_ajax”: false, “mediaVoice_content”: false, “cp_postfixed_fronts”: true, “atoms_inline_cta”: true, “disable_front_animations”: true, “progressive_gallery_fronts”: true, “newsletter_inline_cta”: false, “breaking_live_video_sidebar”: false, “traffic_cop_defer”: true, “related_topic_embed”: false, “feed_stories_right_rail_module”: true, “disable_lede”: “2019-01-10T09:00:00.000Z”, “disable_overlay_animations”: true, “ll_comp_gallery”: true, “disable_overlay_preload”: true, “cxense_parsing”: false, “related_topic_photo_gallery”: false, “hero_video”: true, “solr_for_metric_ranked_assets”: true}, “DATASPHERE”: {}, “version”: “5017.2.0”, “siteid”: 1, “WEATHER”: {}, “moduleOptions”: [{“moduleName”: “feed-stories”, “optionSets”: [{“metric”: “trending”, “displayName”: “POPULAR STORIES”, “id”: “default”, “provider”: “solr”}]}, {“moduleName”: “taboola-recommendations”, “optionSets”: [{“id”: “default”, “taboolaWidgets”: {“belowArticle”: [{“placement”: “Below Article Thumbnails – Taboola Feed”, “container”: “taboola-short-article-2×5”, “mode”: “thumbnails-u”, “target_type”: “mix”}]}}]}, {“moduleName”: “taboola”, “optionSets”: [{“id”: “default”, “taboolaWidgets”: {“belowSectionFront”: [{“placement”: “Section Front Feed”, “container”: “taboola-section-front-thumbnails”, “mode”: “thumbnails-g”, “target_type”: “mix”}], “belowHomeFront”: [{“placement”: “Homepage Feed”, “container”: “taboola-homepage-thumbnails”, “mode”: “thumbnails-s”, “target_type”: “mix”}]}}]}], “sections”: “news|sports|entertainment|money|tech|life|travel|opinion|home|weather|marketplace|elections-2016|policing|network|vrstories|vrtuallythere|pr|olympics-rio-2016|insider|lightpost|washington|stevestrauss|steve-strauss|animalkind|college|bistro|militarykind|elections|super-bowl|oscars|graphics|inequity-in-silicon-valley|sportskind|womenofthecentury|kindalert”, “gupUAID”: “USAT-GUP”, “contentOverrides”: [], “autoplay”: {“default”: [“atoms”, “sourcepoint”, “high-impact-ad”, “google-survey”, “bounce-exchange”, “firefly”, “pluto-video”, “brightcove-video”]}}; window.section_arrows = ‘news|sports|life|money|tech|travel|opinion|weather|home’; window.section_arrows_display = ‘news|sports|life|money|tech|travel|opinion|weather|home’; window.section_display_names = {“sec”: “SEC”, “pga”: “PGA”, “nhl”: “NHL”, “gamehunters”: “Game Hunters”, “BR”: “Book Review”, “highschool”: “High School”, “action-sports”: “Action Sports”, “personal”: “Personal Tech”, “driveon”: “Drive On”, “mwac”: “MWAC”, “idolchatter”: “Idol Chatter”, “theoval”: “The Oval”, “have-you-seen”: “Have You Seen”, “lifelinelive”: “Lifeline Live”, “thehuddle”: “The Huddle”, “horse-racing”: “Horse Racing”, “mlb”: “MLB”, “fantasywindup”: “Fantasy Windup”, “wac”: “WAC”, “happyeverafter”: “Happy Ever After”, “nfl”: “NFL”, “gameon”: “For The Win”, “mls”: “MLS”, “ondeadline”: “On Deadline”, “fantasyjoe”: “Fantasy Joe”, “wnba”: “WNBA”, “hotelcheckin”: “Hotel Checkin”, “nascar”: “NASCAR”, “pac12”: “PAC-12”, “horseracing”: “Horse Racing”, “nba”: “NBA”, “campusrivalry”: “Campus Rivalry”, “dailypitch”: “Daily Pitch”, “personal-finance”: “Personal Finance”, “onpolitics”: “On Politics”, “usanow”: “USA NOW”, “personal-tech”: “Personal Tech”, “ufc”: “UFC”, “reviewed-com”: “Reviewed.com”, “motor-sports”: “Motor Sports”, “todayinthesky”: “Today in the Sky”, “lpga”: “LPGA”, “awardcentral”: “Awards Central”, “livefrom”: “Live From”, “mma”: “MMA”, “acc”: “ACC”, “high-school”: “High School”, “ncaab”: “NCAAB”, “sciencefair”: “Science Fair”, “popcandy”: “Pop Candy”, “personalfinance”: “Personal Finance”, “ncaaf”: “NCAAF”, “faith&reason”: “Faith & Reason”, “lifestages”: “Life Stages”, “technologylive”: “Technology Live”, “food-and-wine”: “Food and Wine”, “ncaaw”: “NCAAW”}; window.site_static_url = ‘https://www.gannett-cdn.com/uxstatic/usatoday/usat-web-static-5017.2.0/’; window.site_static_path = ‘/uxstatic/usatoday/usat-web-static-5017.2.0/’; window.site_static_version = ‘5017.2.0’; window.firefly_urls = {“samSubscribeURL”: “https://subscribe.usatoday.com/”, “onSuccessRedirectURL”: “https://www.usatoday.com/news/world/”, “samAccountURL”: “https://account.usatoday.com/”, “samServiceURL”: “https://accountsolution.usatoday.com/”, “configURL”: “https://platform-config.gannettdigital.com/gci-platform-config/deployments/prod/USAT-CAM.json”}; window.use_minified_css = true; window.isAdDebug = false; window.defaultWeatherLocation = “McLean, VA” window.gciAnalyticsUAID = site_vars.site_code + ‘-TEALIUM-CP’; window.tealium_url = ‘https://www.gannett-cdn.com/dcjs/prod/main.js’; window.Modernizr=function(a,b,c){function B(a){j.cssText=a}function C(a,b){return B(m.join(a+”;”)+(b||””))}function D(a,b){return typeof a===b}function E(a,b){return!!~(“”+a).indexOf(b)}function F(a,b){for(var d in a){var e=a[d];if(!E(e,”-“)&&j[e]!==c)return b==”pfx”?e:!0}return!1}function G(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:D(f,”function”)?f.bind(d||b):f}return!1}function H(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+” “+o.join(d+” “)+d).split(” “);return D(b,”string”)||D(b,”undefined”)?F(e,b):(e=(a+” “+p.join(d+” “)+d).split(” “),G(e,b,c))}function I(){e.input=function©{for(var d=0,e=c.length;d
World and International News published first on http://landofourfathers.com/
0 notes