devxlogo

Roll Your Own Swing-based XML Editor (Part I)

Roll Your Own Swing-based XML Editor (Part I)

Editor’s note: This is the first of a three-part series about how to build your own XML editor.

f you’ve been looking for a cross-platform, open-source XML editor, you’ve likely come up short. In the following series of three articles, I will walk you through the development of a simple, no frills, XML editor, utilizing several of the most common Java 2 Swing components. This series will be beneficial to anyone wanting to write their own XML editor, or just to those of you looking to learn or brush up on Swing.

In this first article, we will briefly discuss XML and why a tree structure is appropriate to display XML, and then we will take a look at the JAXP API and how to set up your environment with the necessary XML classes. Then we will learn about the JTree Swing component that displays a graphical tree (a common component in many XML editors). Finally, we will build a reusable class that extends the JTree component that is capable of parsing an XML document and displaying its data in a JTree.

In the second article, we will create the framework for our XML editor. In order to do so, we will cover a variety of Swing components (including JSplitPanes, JScrollPanes, JButtons, and JTextAreas).

In the third and final article, we will add the finishing touches to our editor by building a JMenu component and adding it to the editor. Additionally, we will construct JFileChooser components to access the underlying file system to allow XML documents to be saved and new documents to be opened.



How can I create a visual representation of an XML document?



Create a custom class that extends JTree, capable of parsing an XML file into a DOM object and constructing a JTree from that object.

Handling XML Data
(Editor’s note: If you already know how to work with XML data and you have downloaded the latest version of the xerces.jar from the Apache Group, then you may move on to the next page.)

One of the most common misunderstandings about the eXtensible Markup Language (XML) is that it is a new way of displaying data in a Web browser, akin to HTML or Cascading Style Sheets (CSS). The truth is that XML is a data-representation language, not a data-presentation language. It allows you to describe your data in a meaningful way. XML enables you to declare that “these three words constitute a heading,” “this is the byline,” and “this section constitutes the article body.” XML allows you to declare what a particular piece of data is, rather than how that data should appear in a Web page.

Consider the following XML sample:

Roll Your Own Swing-based XML Editor (Part 1 of 3)<subtitle> Part 1 – Displaying XML with a JTree</subtitle> Kyle Gabhart

This is the article body

Notice that these elements are different from standard HTML, but they look similar to HTML. This is because both HTML and XML have the same origin, SGML. The difference is that HTML has a predefined tag set, and XML’s grammar is flexible, allowing you to surround data with a meaningful tag (like ). Also notice, the way in which every element descends from the root element (

) and that some elements are nested even further ( is nested within ). This organization is useful for three reasons: The data is more meaningful, the data is more maintainable, and the data can be easily represented as a tree structure. This is why we will be using a JTree object to graphically display the XML data. For a more thorough introduction to XML, consult “<A href="http://www.xml.com/pub/a/98/10/guide0.html">A Technical Introduction to XML</A>.” <P>The Java API for XML Processing (JAXP) enables applications to parse and transform XML documents using a pure Java API that is independent of a particular XML processor implementation. It functions similar to the JDBC API, in that the developer is abstracted from the details of the underlying vendor specific component (an XML parser in the case of JAXP). The Apache Group’s Xerces parser provides the most up-to-date support for the JAXP API. In order to run the code developed later in this article, you will need to download the 1.3.1 Xerces binaries for your system (2.0 is still in alpha stage) from <A href="http://xml.apache.org/dist/xerces-j/">this link.</A> Once you have downloaded the archive, extract the xerces.jar file and place it somewhere in your classpath. You can also download the xerces.jar via a link at the end of this article. <P>Next, we’ll learn how to use the JTree Swing component.</P><P class=Body><B>Working with the JTree Component</B><BR>In nature, a tree has a common trunk from which branches extend. From those branches more branches extend. Every branch is related to every other branch in some way because they all have a common source, the trunk. This hierarchical relationship is not unique to trees; human genealogies follow much the same pattern. From a common set of parents, extend one or more children, each of those children potentially have one or more children, and the pattern continues ad infinitum. <P>In terms of data storage, a tree is a way of storing data that is organized in a manner similar to a genealogical tree. Each branch of the tree is called a node. The common parent node to all child nodes is called the root node. Every node that has child nodes is called a parent node (even if it, in turn, is a child of another node). A JTree component is simply a visual representation of a tree data structure. <P><A href="javascript:showSupportItem('figure1')">Figure 1</A> shows a screen shot of a JTree component. <P>Almost every XML editor includes a visual tree structure like this one that allows you to edit and navigate through the elements contained in the XML document. We will construct one of these in the next section, but first we need to learn a little more about the JTree component. <P>A node stores data at a particular position in the tree. In addition to containing data, it knows about its parent node and any child nodes for which it is a parent. The javax.swing.tree package defines a handful of interfaces that provide a common way of building and manipulating a tree structure. <P><UL><LI>TreeNode?declares methods used to access information about a tree node <LI>MutableTreeNode?declares methods used on a mutable tree (one that can add and remove child nodes) <LI>TreeModel?declares methods used to create and manage the data model associated with a tree.</LI></UL><P>Next, we’ll create a class that extends JTree and provides methods that allow an XML document to be parsed and displayed as visual nodes in a JTree component. <P><B>Creating the XTree Component</B><BR>The XTree class consists of one constructor and three methods. Our simple implementation of the XTree component merely builds an Xtree; it does not provide for any manipulation of tree nodes after the tree has initially been built. As such, every method within the XTree class is called from the constructor. <P>Here’s a look at XTree API: <P><B>Field Summary</B><BR><UL><LI>private DefaultMutableTreeNode treeNode?This member stores the TreeNode object used to create the model for the JTree. The DefaultMutableTreeNode class is defined in the javax.swing.tree package and provides a default implementation of the MutableTreeNode interface. <LI>private DocumentBuilderFactory dbf <LI>private DocumentBuilder db <LI>private Document doc?These three members are a part of the JAXP API and are used to parse the XML text into a DOM object (of type Document).</LI></UL><P><B>Constructor Summary</B><BR><UL><LI>public XTree( String text )?This single constructor builds an XTree object using the XML text passed in through the constructor. After initializing some of the basic display properties that relate to the JTree superclass and the DOM parsing objects, the constructor builds a TreeModel object to create the actual visual tree. To do this, a root node is created by passing the DOM object into the createTreeNode() method which returns an object of type DefaultMutableTreeNode. This object is then used to create the tree’s TreeModel via the setModel() method inherited from the JTree class.</LI></UL><P><B>Method Summary</B><BR><UL><LI>private DefaultMutableTreeNode createTreeNode( Node root )?This method takes a DOM Node and recurses through the children until each one is added to a DefaultMutableTreeNode. This is a recursive method, calling itself for each child node found beneath the root node. The JTree then uses the DefaultMutableTreeNode object as a tree model. <LI>private String getNodeType( Node node ) ?This method is used by createTreeNode() to associate a string of text with a particular type of node. <LI>private Node parseXml()?This method performs the actual parsing of the XML text string. It returns an object of type Node that can then be passed into the createTreeNode() method.</LI></UL><P>There you have it: a class that extends JTree, adding XML text parsing capabilities. In the next two articles we will build additional components and extend upon this component to create a simple, platform-independent XML editor. <P>Below, you will find links to two java source files, a sample XML file, and the xerces.jar with the JAXP classes and Xerces parser. To experiment with the XTree class, follow the following steps: <UL><LI><a href="/assets/sourcecode/12723.zip">download the four files</a>; <LI>make sure the xerces.jar file is in your classpath; <LI>compile the two java source files; <LI>run the XTreeTester class and pass the sample XML file as an argument like this: java XTreeTester sample.xml <P>XTree.java?The XTree component class.<BR>XTreeTester.java?This file contains a main() method and is used to test the XTree class by parsing an XML file.<BR>Sample.xml?A sample XML file to pass into the XTreeTester class.<BR>xerces.jar?This jar file contains the Xerces parser and the JAXP classes required by the XTree class. It must be in your classpath for the application to successfully compile and execute.</P></LI></UL></p> </div> </div> <div class="elementor-element elementor-element-9809e6b elementor-align-right elementor-widget elementor-widget-button" data-id="9809e6b" data-element_type="widget" data-widget_type="button.default"> <div class="elementor-widget-container"> <div class="elementor-button-wrapper"> <a class="elementor-button elementor-button-link elementor-size-sm" href="https://www.devx.com/disclosure/"> <span class="elementor-button-content-wrapper"> <span class="elementor-button-icon elementor-align-icon-left"> <i aria-hidden="true" class="far fa-money-bill-alt"></i> </span> <span class="elementor-button-text">Disclosure</span> </span> </a> </div> </div> </div> <div class="elementor-element elementor-element-2298440 elementor-widget elementor-widget-image" data-id="2298440" data-element_type="widget" data-widget_type="image.default"> <div class="elementor-widget-container"> <img width="150" height="68" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="attachment-thumbnail size-thumbnail wp-image-24484 ewww_webp" alt="devxblackblue" srcset="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== 1w" sizes="(max-width: 150px) 100vw, 150px" data-src-img="https://www.devx.com/wp-content/uploads/DevX-1-150x68.png" data-src-webp="https://www.devx.com/wp-content/uploads/DevX-1-150x68.png.webp" data-srcset-webp="https://www.devx.com/wp-content/uploads/DevX-1-150x68.png.webp 150w, https://www.devx.com/wp-content/uploads/DevX-1-300x135.png.webp 300w, https://www.devx.com/wp-content/uploads/DevX-1-1024x461.png.webp 1024w, https://www.devx.com/wp-content/uploads/DevX-1-768x346.png.webp 768w, https://www.devx.com/wp-content/uploads/DevX-1-1536x691.png.webp 1536w, https://www.devx.com/wp-content/uploads/DevX-1.png.webp 2000w" data-srcset-img="https://www.devx.com/wp-content/uploads/DevX-1-150x68.png 150w, https://www.devx.com/wp-content/uploads/DevX-1-300x135.png 300w, https://www.devx.com/wp-content/uploads/DevX-1-1024x461.png 1024w, https://www.devx.com/wp-content/uploads/DevX-1-768x346.png 768w, https://www.devx.com/wp-content/uploads/DevX-1-1536x691.png 1536w, https://www.devx.com/wp-content/uploads/DevX-1.png 2000w" data-eio="j" /><noscript><img width="150" height="68" src="https://www.devx.com/wp-content/uploads/DevX-1-150x68.png" class="attachment-thumbnail size-thumbnail wp-image-24484" alt="devxblackblue" srcset="https://www.devx.com/wp-content/uploads/DevX-1-150x68.png 150w, https://www.devx.com/wp-content/uploads/DevX-1-300x135.png 300w, https://www.devx.com/wp-content/uploads/DevX-1-1024x461.png 1024w, https://www.devx.com/wp-content/uploads/DevX-1-768x346.png 768w, https://www.devx.com/wp-content/uploads/DevX-1-1536x691.png 1536w, https://www.devx.com/wp-content/uploads/DevX-1.png 2000w" sizes="(max-width: 150px) 100vw, 150px" /></noscript> </div> </div> <div class="elementor-element elementor-element-b24b1f0 elementor-widget elementor-widget-heading" data-id="b24b1f0" data-element_type="widget" data-widget_type="heading.default"> <div class="elementor-widget-container"> <h2 class="elementor-heading-title elementor-size-default">About Our Editorial Process</h2> </div> </div> <div class="elementor-element elementor-element-bf49e8d elementor-widget elementor-widget-text-editor" data-id="bf49e8d" data-element_type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <style>/*! elementor - v3.20.0 - 10-04-2024 */ .elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}</style> <p>At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.</p><p>See our full <a href="https://www.devx.com/publication-guidelines/">editorial policy</a>.</p> </div> </div> <div class="elementor-element elementor-element-0f1a6bf elementor-widget elementor-widget-heading" data-id="0f1a6bf" data-element_type="widget" data-widget_type="heading.default"> <div class="elementor-widget-container"> <h2 class="elementor-heading-title elementor-size-default">About Our Journalist</h2> </div> </div> <div class="elementor-element elementor-element-4b5870b elementor-author-box--link-yes elementor-author-box--align-left elementor-author-box--name-yes elementor-author-box--biography-yes elementor-widget elementor-widget-author-box" data-id="4b5870b" data-element_type="widget" data-widget_type="author-box.default"> <div class="elementor-widget-container"> <div class="elementor-author-box"> <div class="elementor-author-box__text"> <a href="https://www.devx.com/author/devx-admin/"> <h3 class="elementor-author-box__name"> Charlie Frank </h3> </a> <div class="elementor-author-box__bio"> Charlie has over a decade of experience in website administration and technology management. As the site admin, he oversees all technical aspects of running a high-traffic online platform, ensuring optimal performance, security, and user experience. </div> <a class="elementor-author-box__button elementor-button elementor-size-xs" href="https://www.devx.com/author/devx-admin/"> View Author </a> </div> </div> </div> </div> </div> </div> </div> </section> <div class="elementor-element elementor-element-39bd7056 elementor-grid-1 elementor-posts--thumbnail-left elementor-grid-tablet-1 elementor-grid-mobile-1 load-more-align-center elementor-widget elementor-widget-posts" data-id="39bd7056" data-element_type="widget" data-settings="{"classic_columns":"1","classic_row_gap":{"unit":"px","size":0,"sizes":[]},"pagination_type":"load_more_on_click","classic_columns_tablet":"1","classic_columns_mobile":"1","classic_row_gap_tablet":{"unit":"px","size":"","sizes":[]},"classic_row_gap_mobile":{"unit":"px","size":"","sizes":[]},"load_more_spinner":{"value":"fas fa-spinner","library":"fa-solid"}}" data-widget_type="posts.classic"> <div class="elementor-widget-container"> <link rel="stylesheet" href="https://www.devx.com/wp-content/plugins/elementor-pro/assets/css/widget-posts.min.css"> <div class="elementor-posts-container elementor-posts elementor-posts--skin-classic elementor-grid"> <article class="elementor-post elementor-grid-item post-53309 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/harriss-vp-choice-may-shape-climate-agenda/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53307 ewww_webp" alt="VP Climate" data-src-img="https://www.devx.com/wp-content/uploads/VP-Climate-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/VP-Climate-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/VP-Climate-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53307" alt="VP Climate" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/harriss-vp-choice-may-shape-climate-agenda/" > Harris’s VP choice may shape climate agenda </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Noah Nguyen </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 5:45 PM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53292 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/salesforce-and-workday-announce-ai-partnership/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53289 ewww_webp" alt="AI Partnership" data-src-img="https://www.devx.com/wp-content/uploads/AI-Partnership-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/AI-Partnership-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/AI-Partnership-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53289" alt="AI Partnership" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/salesforce-and-workday-announce-ai-partnership/" > Salesforce and Workday announce AI partnership </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 5:18 PM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53288 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/pil-partners-with-wavebl-for-ebl-digitization/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53287 ewww_webp" alt="WaveBL Digitization" data-src-img="https://www.devx.com/wp-content/uploads/WaveBL-Digitization-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/WaveBL-Digitization-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/WaveBL-Digitization-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53287" alt="WaveBL Digitization" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/pil-partners-with-wavebl-for-ebl-digitization/" > Pil partners with WaveBL for eBL digitization </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Rashan Dixon </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 1:48 PM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53294 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/musk-activates-internet-in-gaza-hospital/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53291 ewww_webp" alt="Internet Hospital" data-src-img="https://www.devx.com/wp-content/uploads/Internet-Hospital-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Internet-Hospital-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Internet-Hospital-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53291" alt="Internet Hospital" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/musk-activates-internet-in-gaza-hospital/" > Musk activates internet in Gaza hospital </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 1:44 PM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53318 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/experts-debate-ai-impact-on-cybersecurity/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53315 ewww_webp" alt="AI Cybersecurity Debate" data-src-img="https://www.devx.com/wp-content/uploads/AI-Cybersecurity-Debate-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/AI-Cybersecurity-Debate-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/AI-Cybersecurity-Debate-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53315" alt="AI Cybersecurity Debate" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/experts-debate-ai-impact-on-cybersecurity/" > Experts debate AI impact on cybersecurity </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Noah Nguyen </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 1:43 PM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53280 post type-post status-publish format-standard has-post-thumbnail hentry category-news tag-c3-ai tag-palantir-technologies"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/palantir-and-c3-ai-high-potential-ai-stocks/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53279 ewww_webp" alt="AI Stocks" data-src-img="https://www.devx.com/wp-content/uploads/AI-Stocks-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/AI-Stocks-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/AI-Stocks-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53279" alt="AI Stocks" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/palantir-and-c3-ai-high-potential-ai-stocks/" > Palantir and C3.ai: high-potential AI stocks </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Rashan Dixon </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 11:35 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53293 post type-post status-publish format-standard has-post-thumbnail hentry category-cybersecurity category-data-and-privacy category-news tag-carl-windsor tag-eddy-zervigon tag-fortinet tag-new-quantum-security tag-patricia-diez-munoz tag-quantum-xchange tag-telefonica tag-warpcom"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/telefonica-unveils-new-quantum-security-solution/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53290 ewww_webp" alt="Quantum Security" data-src-img="https://www.devx.com/wp-content/uploads/Quantum-Security-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Quantum-Security-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Quantum-Security-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53290" alt="Quantum Security" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/telefonica-unveils-new-quantum-security-solution/" > Telefónica unveils new quantum security solution </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Noah Nguyen </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 11:34 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53284 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/musk-updates-tesla-roadster-production-timeline/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53282 ewww_webp" alt="Tesla Roadster" data-src-img="https://www.devx.com/wp-content/uploads/Tesla-Roadster-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Tesla-Roadster-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Tesla-Roadster-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53282" alt="Tesla Roadster" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/musk-updates-tesla-roadster-production-timeline/" > Musk updates Tesla Roadster production timeline </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 11:26 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53317 post type-post status-publish format-standard has-post-thumbnail hentry category-news tag-ai tag-higher-workload tag-kelly-monahan-upwork"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/employees-report-ai-increases-their-workload/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53314 ewww_webp" alt="Report Workload" data-src-img="https://www.devx.com/wp-content/uploads/Report-Workload-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Report-Workload-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Report-Workload-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53314" alt="Report Workload" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/employees-report-ai-increases-their-workload/" > Employees report AI increases their workload </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Rashan Dixon </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 11:24 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53308 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/protect-your-online-privacy-with-vpn/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53304 ewww_webp" alt="Online Privacy" data-src-img="https://www.devx.com/wp-content/uploads/Online-Privacy-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Online-Privacy-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Online-Privacy-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53304" alt="Online Privacy" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/protect-your-online-privacy-with-vpn/" > Protect your online privacy with VPN </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 11:24 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53269 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/amd-announces-ryzen-ai-9-hx-375/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53266 ewww_webp" alt="Ryzen AI" data-src-img="https://www.devx.com/wp-content/uploads/Ryzen-AI-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Ryzen-AI-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Ryzen-AI-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53266" alt="Ryzen AI" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/amd-announces-ryzen-ai-9-hx-375/" > Amd announces Ryzen AI 9 HX 375 </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Noah Nguyen </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 11:19 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53324 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/us-faces-hurdles-to-meet-climate-goals/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53323 ewww_webp" alt="Climate Hurdles" data-src-img="https://www.devx.com/wp-content/uploads/Climate-Hurdles-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Climate-Hurdles-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Climate-Hurdles-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53323" alt="Climate Hurdles" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/us-faces-hurdles-to-meet-climate-goals/" > US faces hurdles to meet climate goals </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 11:13 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53270 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/elon-musks-xai-launches-memphis-supercomputer/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53267 ewww_webp" alt="xAI Supercomputer" data-src-img="https://www.devx.com/wp-content/uploads/xAI-Supercomputer-2-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/xAI-Supercomputer-2-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/xAI-Supercomputer-2-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53267" alt="xAI Supercomputer" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/elon-musks-xai-launches-memphis-supercomputer/" > Elon Musk’s xAI launches Memphis supercomputer </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 11:08 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53271 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/switzerland-mandates-open-source-software-for-government/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53268 ewww_webp" alt="Open-Source Switzerland" data-src-img="https://www.devx.com/wp-content/uploads/Open-Source-Switzerland-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Open-Source-Switzerland-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Open-Source-Switzerland-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53268" alt="Open-Source Switzerland" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/switzerland-mandates-open-source-software-for-government/" > Switzerland mandates open-source software for government </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Noah Nguyen </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 8:53 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53283 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/reddit-blocks-most-search-engines-except-google/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53281 ewww_webp" alt="Reddit Google" data-src-img="https://www.devx.com/wp-content/uploads/Reddit-Google-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Reddit-Google-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Reddit-Google-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53281" alt="Reddit Google" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/reddit-blocks-most-search-engines-except-google/" > Reddit blocks most search engines except Google </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 8:46 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53296 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/monday-sets-record-for-hottest-day/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53295 ewww_webp" alt="Hottest Monday" data-src-img="https://www.devx.com/wp-content/uploads/Hottest-Monday-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Hottest-Monday-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Hottest-Monday-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53295" alt="Hottest Monday" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/monday-sets-record-for-hottest-day/" > Monday sets record for hottest day </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 8:02 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53303 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/ibm-stock-rises-on-strong-q2-earnings/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53301 ewww_webp" alt="IBM rises" data-src-img="https://www.devx.com/wp-content/uploads/IBM-rises-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/IBM-rises-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/IBM-rises-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53301" alt="IBM rises" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/ibm-stock-rises-on-strong-q2-earnings/" > IBM stock rises on strong Q2 earnings </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 7:47 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53305 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/wiz-declines-23-billion-offer-from-alphabet/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53302 ewww_webp" alt="Wiz Declines" data-src-img="https://www.devx.com/wp-content/uploads/Wiz-Declines-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Wiz-Declines-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Wiz-Declines-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53302" alt="Wiz Declines" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/wiz-declines-23-billion-offer-from-alphabet/" > Wiz declines $23 billion offer from Alphabet </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 7:23 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53319 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/military-crackdown-leaves-200-dead-in-bangladesh/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53316 ewww_webp" alt="Military Crackdown" data-src-img="https://www.devx.com/wp-content/uploads/Military-Crackdown-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Military-Crackdown-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Military-Crackdown-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53316" alt="Military Crackdown" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/military-crackdown-leaves-200-dead-in-bangladesh/" > Military crackdown leaves 200 dead in Bangladesh </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 7:19 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53275 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/elon-musk-attends-netanyahus-address-to-congress/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53273 ewww_webp" alt="Musk Congress" data-src-img="https://www.devx.com/wp-content/uploads/Musk-Congress-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Musk-Congress-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Musk-Congress-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53273" alt="Musk Congress" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/elon-musk-attends-netanyahus-address-to-congress/" > Elon Musk attends Netanyahu’s address to Congress </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Rashan Dixon </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 7:16 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53274 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/ai-powered-gr-supras-complete-tandem-drift/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53272 ewww_webp" alt="Tandem Drift" data-src-img="https://www.devx.com/wp-content/uploads/Tandem-Drift-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Tandem-Drift-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Tandem-Drift-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53272" alt="Tandem Drift" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/ai-powered-gr-supras-complete-tandem-drift/" > Ai-powered GR Supras complete tandem drift </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> April Isaacs </span> <span class="elementor-post-date"> July 26, 2024 </span> <span class="elementor-post-time"> 7:11 AM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53212 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/mega-cap-tech-stocks-under-pressure/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53211 ewww_webp" alt="Tech Pressure" data-src-img="https://www.devx.com/wp-content/uploads/Tech-Pressure-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Tech-Pressure-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Tech-Pressure-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53211" alt="Tech Pressure" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/mega-cap-tech-stocks-under-pressure/" > Mega-cap tech stocks under pressure </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> April Isaacs </span> <span class="elementor-post-date"> July 25, 2024 </span> <span class="elementor-post-time"> 5:45 PM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53184 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/new-ibm-cybersecurity-certificate-at-community-colleges/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53181 ewww_webp" alt="Cybersecurity Certificate" data-src-img="https://www.devx.com/wp-content/uploads/Cybersecurity-Certificate-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Cybersecurity-Certificate-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Cybersecurity-Certificate-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53181" alt="Cybersecurity Certificate" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/new-ibm-cybersecurity-certificate-at-community-colleges/" > New IBM cybersecurity certificate at community colleges </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> April Isaacs </span> <span class="elementor-post-date"> July 25, 2024 </span> <span class="elementor-post-time"> 5:37 PM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53185 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/eviden-unveils-qaptiva-quantum-emulator-for-researchers/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53183 ewww_webp" alt="Qaptiva Quantum" data-src-img="https://www.devx.com/wp-content/uploads/Qaptiva-Quantum-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Qaptiva-Quantum-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Qaptiva-Quantum-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53183" alt="Qaptiva Quantum" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/eviden-unveils-qaptiva-quantum-emulator-for-researchers/" > Eviden unveils Qaptivaâ„¢ quantum emulator for researchers </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> July 25, 2024 </span> <span class="elementor-post-time"> 5:29 PM </span> </div> </div> </article> <article class="elementor-post elementor-grid-item post-53194 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/telefonica-tech-secures-global-bbva-cybersecurity-deal/" > <div class="elementor-post__thumbnail"><img width="300" height="171" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" class="elementor-animation-grow attachment-medium size-medium wp-image-53192 ewww_webp" alt="Global Cybersecurity" data-src-img="https://www.devx.com/wp-content/uploads/Global-Cybersecurity-300x171.jpg" data-src-webp="https://www.devx.com/wp-content/uploads/Global-Cybersecurity-300x171.jpg.webp" data-eio="j" /><noscript><img width="300" height="171" src="https://www.devx.com/wp-content/uploads/Global-Cybersecurity-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-53192" alt="Global Cybersecurity" /></noscript></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.devx.com/news/telefonica-tech-secures-global-bbva-cybersecurity-deal/" > Telefónica Tech secures global BBVA cybersecurity deal </a> </h3> <div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> July 25, 2024 </span> <span class="elementor-post-time"> 5:27 PM </span> </div> </div> </article> </div> <span class="e-load-more-spinner"> <i aria-hidden="true" class="fas fa-spinner"></i> </span> <div class="e-load-more-anchor" data-page="1" data-max-page="828" data-next-page="https://www.devx.com/get-help/16694/2/"></div> <div class="elementor-button-wrapper"> <a href="#" class="elementor-button-link elementor-button elementor-animation-grow" role="button"> <span class="elementor-button-content-wrapper"> <span class="elementor-button-text">Show More</span> </span> </a> </div> <div class="e-load-more-message"></div> </div> </div> </div> </div> <div class="elementor-column elementor-col-20 elementor-top-column elementor-element elementor-element-270dc71" data-id="270dc71" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> <div class="elementor-column elementor-col-20 elementor-top-column elementor-element elementor-element-8905b95 elementor-hidden-tablet" data-id="8905b95" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-2f83f51 elementor-widget elementor-widget-html" data-id="2f83f51" data-element_type="widget" data-widget_type="html.default"> <div class="elementor-widget-container"> <ins style="display: block; width: 100%" class="direqt-embed" data-bot-id="660c2a84041d59991d8be45b" data-start-hint="poll" data-story-id="auto" data-gtm="true" data-layout="overlay" ></ins> </div> </div> </div> </div> </div> </section> </div> </div> <footer data-elementor-type="footer" data-elementor-id="23300" class="elementor elementor-23300 elementor-location-footer"> <div class="elementor-section-wrap"> <footer class="elementor-section elementor-top-section elementor-element elementor-element-1588a538 elementor-section-height-min-height elementor-section-content-middle elementor-section-full_width elementor-section-height-default elementor-section-items-middle" data-id="1588a538" data-element_type="section" data-settings="{"background_background":"classic"}"> <div class="elementor-container elementor-column-gap-no"> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-9d2a788" data-id="9d2a788" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-2e0ce949" data-id="2e0ce949" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-4f9ec08 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="4f9ec08" data-element_type="widget" data-widget_type="divider.default"> <div class="elementor-widget-container"> <style>/*! elementor - v3.20.0 - 10-04-2024 */ .elementor-widget-divider{--divider-border-style:none;--divider-border-width:1px;--divider-color:#0c0d0e;--divider-icon-size:20px;--divider-element-spacing:10px;--divider-pattern-height:24px;--divider-pattern-size:20px;--divider-pattern-url:none;--divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(--divider-element-spacing);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(--divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider--view-line_icon .elementor-divider-separator,.elementor-widget-divider--view-line_text .elementor-divider-separator{align-items:center}.elementor-widget-divider--view-line_icon .elementor-divider-separator:after,.elementor-widget-divider--view-line_icon .elementor-divider-separator:before,.elementor-widget-divider--view-line_text .elementor-divider-separator:after,.elementor-widget-divider--view-line_text .elementor-divider-separator:before{display:block;content:"";border-block-end:0;flex-grow:1;border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider--element-align-start .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-start .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-start .elementor-divider__element{margin-inline-start:0}.elementor-widget-divider--element-align-end .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-end .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-end .elementor-divider__element{margin-inline-end:0}.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator{border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--separator-type-pattern{--divider-border-style:none}.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before,.elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator{width:100%;min-height:var(--divider-pattern-height);-webkit-mask-size:var(--divider-pattern-size) 100%;mask-size:var(--divider-pattern-size) 100%;-webkit-mask-repeat:var(--divider-pattern-repeat);mask-repeat:var(--divider-pattern-repeat);background-color:var(--divider-color);-webkit-mask-image:var(--divider-pattern-url);mask-image:var(--divider-pattern-url)}.elementor-widget-divider--no-spacing{--divider-pattern-size:auto}.elementor-widget-divider--bg-round{--divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}.e-con-inner>.elementor-widget-divider,.e-con>.elementor-widget-divider{width:var(--container-widget-width,100%);--flex-grow:var(--container-widget-flex-grow)}</style> <div class="elementor-divider"> <span class="elementor-divider-separator"> </span> </div> </div> </div> <section class="elementor-section elementor-inner-section elementor-element elementor-element-73a9986 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="73a9986" data-element_type="section"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-7f08930" data-id="7f08930" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-269b367 elementor-nav-menu__align-right elementor-nav-menu--dropdown-tablet elementor-nav-menu__text-align-aside elementor-nav-menu--toggle elementor-nav-menu--burger elementor-widget elementor-widget-nav-menu" data-id="269b367" data-element_type="widget" data-settings="{"layout":"horizontal","submenu_icon":{"value":"<i class=\"fas fa-caret-down\"><\/i>","library":"fa-solid"},"toggle":"burger"}" data-widget_type="nav-menu.default"> <div class="elementor-widget-container"> <nav class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-underline e--animation-fade"> <ul id="menu-1-269b367" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-23808"><a href="https://www.devx.com/" class="elementor-item">Home</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23809"><a href="https://www.devx.com/advertise/" class="elementor-item">Advertise</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23816"><a href="https://www.devx.com/about/" class="elementor-item">About</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-46262"><a href="https://www.devx.com/publication-guidelines/" class="elementor-item">Guidelines</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-47967"><a href="https://www.devx.com/expert-review-board/" class="elementor-item">Experts</a></li> </ul> </nav> <div class="elementor-menu-toggle" role="button" tabindex="0" aria-label="Menu Toggle" aria-expanded="false"> <i aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--open eicon-menu-bar"></i><i aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--close eicon-close"></i> <span class="elementor-screen-only">Menu</span> </div> <nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true"> <ul id="menu-2-269b367" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-23808"><a href="https://www.devx.com/" class="elementor-item" tabindex="-1">Home</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23809"><a href="https://www.devx.com/advertise/" class="elementor-item" tabindex="-1">Advertise</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23816"><a href="https://www.devx.com/about/" class="elementor-item" tabindex="-1">About</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-46262"><a href="https://www.devx.com/publication-guidelines/" class="elementor-item" tabindex="-1">Guidelines</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-47967"><a href="https://www.devx.com/expert-review-board/" class="elementor-item" tabindex="-1">Experts</a></li> </ul> </nav> </div> </div> </div> </div> <div class="elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-21928d3" data-id="21928d3" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> <div class="elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-869862d" data-id="869862d" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-5d5f4dc5 e-grid-align-left elementor-shape-rounded elementor-grid-0 elementor-widget elementor-widget-social-icons" data-id="5d5f4dc5" data-element_type="widget" data-widget_type="social-icons.default"> <div class="elementor-widget-container"> <style>/*! elementor - v3.20.0 - 10-04-2024 */ .elementor-widget-social-icons.elementor-grid-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-mobile-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-tablet-0 .elementor-widget-container{line-height:1;font-size:0}.elementor-widget-social-icons:not(.elementor-grid-0):not(.elementor-grid-tablet-0):not(.elementor-grid-mobile-0) .elementor-grid{display:inline-grid}.elementor-widget-social-icons .elementor-grid{grid-column-gap:var(--grid-column-gap,5px);grid-row-gap:var(--grid-row-gap,5px);grid-template-columns:var(--grid-template-columns);justify-content:var(--justify-content,center);justify-items:var(--justify-content,center)}.elementor-icon.elementor-social-icon{font-size:var(--icon-size,25px);line-height:var(--icon-size,25px);width:calc(var(--icon-size, 25px) + 2 * var(--icon-padding, .5em));height:calc(var(--icon-size, 25px) + 2 * var(--icon-padding, .5em))}.elementor-social-icon{--e-social-icon-icon-color:#fff;display:inline-flex;background-color:#69727d;align-items:center;justify-content:center;text-align:center;cursor:pointer}.elementor-social-icon i{color:var(--e-social-icon-icon-color)}.elementor-social-icon svg{fill:var(--e-social-icon-icon-color)}.elementor-social-icon:last-child{margin:0}.elementor-social-icon:hover{opacity:.9;color:#fff}.elementor-social-icon-android{background-color:#a4c639}.elementor-social-icon-apple{background-color:#999}.elementor-social-icon-behance{background-color:#1769ff}.elementor-social-icon-bitbucket{background-color:#205081}.elementor-social-icon-codepen{background-color:#000}.elementor-social-icon-delicious{background-color:#39f}.elementor-social-icon-deviantart{background-color:#05cc47}.elementor-social-icon-digg{background-color:#005be2}.elementor-social-icon-dribbble{background-color:#ea4c89}.elementor-social-icon-elementor{background-color:#d30c5c}.elementor-social-icon-envelope{background-color:#ea4335}.elementor-social-icon-facebook,.elementor-social-icon-facebook-f{background-color:#3b5998}.elementor-social-icon-flickr{background-color:#0063dc}.elementor-social-icon-foursquare{background-color:#2d5be3}.elementor-social-icon-free-code-camp,.elementor-social-icon-freecodecamp{background-color:#006400}.elementor-social-icon-github{background-color:#333}.elementor-social-icon-gitlab{background-color:#e24329}.elementor-social-icon-globe{background-color:#69727d}.elementor-social-icon-google-plus,.elementor-social-icon-google-plus-g{background-color:#dd4b39}.elementor-social-icon-houzz{background-color:#7ac142}.elementor-social-icon-instagram{background-color:#262626}.elementor-social-icon-jsfiddle{background-color:#487aa2}.elementor-social-icon-link{background-color:#818a91}.elementor-social-icon-linkedin,.elementor-social-icon-linkedin-in{background-color:#0077b5}.elementor-social-icon-medium{background-color:#00ab6b}.elementor-social-icon-meetup{background-color:#ec1c40}.elementor-social-icon-mixcloud{background-color:#273a4b}.elementor-social-icon-odnoklassniki{background-color:#f4731c}.elementor-social-icon-pinterest{background-color:#bd081c}.elementor-social-icon-product-hunt{background-color:#da552f}.elementor-social-icon-reddit{background-color:#ff4500}.elementor-social-icon-rss{background-color:#f26522}.elementor-social-icon-shopping-cart{background-color:#4caf50}.elementor-social-icon-skype{background-color:#00aff0}.elementor-social-icon-slideshare{background-color:#0077b5}.elementor-social-icon-snapchat{background-color:#fffc00}.elementor-social-icon-soundcloud{background-color:#f80}.elementor-social-icon-spotify{background-color:#2ebd59}.elementor-social-icon-stack-overflow{background-color:#fe7a15}.elementor-social-icon-steam{background-color:#00adee}.elementor-social-icon-stumbleupon{background-color:#eb4924}.elementor-social-icon-telegram{background-color:#2ca5e0}.elementor-social-icon-threads{background-color:#000}.elementor-social-icon-thumb-tack{background-color:#1aa1d8}.elementor-social-icon-tripadvisor{background-color:#589442}.elementor-social-icon-tumblr{background-color:#35465c}.elementor-social-icon-twitch{background-color:#6441a5}.elementor-social-icon-twitter{background-color:#1da1f2}.elementor-social-icon-viber{background-color:#665cac}.elementor-social-icon-vimeo{background-color:#1ab7ea}.elementor-social-icon-vk{background-color:#45668e}.elementor-social-icon-weibo{background-color:#dd2430}.elementor-social-icon-weixin{background-color:#31a918}.elementor-social-icon-whatsapp{background-color:#25d366}.elementor-social-icon-wordpress{background-color:#21759b}.elementor-social-icon-x-twitter{background-color:#000}.elementor-social-icon-xing{background-color:#026466}.elementor-social-icon-yelp{background-color:#af0606}.elementor-social-icon-youtube{background-color:#cd201f}.elementor-social-icon-500px{background-color:#0099e5}.elementor-shape-rounded .elementor-icon.elementor-social-icon{border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{border-radius:50%}</style> <div class="elementor-social-icons-wrapper elementor-grid"> <span class="elementor-grid-item"> <a class="elementor-icon elementor-social-icon elementor-social-icon-linkedin elementor-repeater-item-5c0ce3c" href="https://www.linkedin.com/company/devx" target="_blank"> <span class="elementor-screen-only">Linkedin</span> <i class="fab fa-linkedin"></i> </a> </span> <span class="elementor-grid-item"> <a class="elementor-icon elementor-social-icon elementor-social-icon-twitter elementor-repeater-item-828f132" href="https://twitter.com/DevX_Com" target="_blank"> <span class="elementor-screen-only">Twitter</span> <i class="fab fa-twitter"></i> </a> </span> </div> </div> </div> </div> </div> </div> </section> <section class="elementor-section elementor-inner-section elementor-element elementor-element-e509954 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e509954" data-element_type="section"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-f77ca98" data-id="f77ca98" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-c500cdf elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="c500cdf" data-element_type="widget" data-widget_type="divider.default"> <div class="elementor-widget-container"> <div class="elementor-divider"> <span class="elementor-divider-separator"> </span> </div> </div> </div> <div class="elementor-element elementor-element-fbeb59f elementor-nav-menu__align-center elementor-nav-menu--dropdown-tablet elementor-nav-menu__text-align-aside elementor-nav-menu--toggle elementor-nav-menu--burger elementor-widget elementor-widget-nav-menu" data-id="fbeb59f" data-element_type="widget" data-settings="{"layout":"horizontal","submenu_icon":{"value":"<i class=\"fas fa-caret-down\"><\/i>","library":"fa-solid"},"toggle":"burger"}" data-widget_type="nav-menu.default"> <div class="elementor-widget-container"> <nav class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-underline e--animation-fade"> <ul id="menu-1-fbeb59f" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27045"><a href="https://www.devx.com/a-terms/" class="elementor-item">A</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27044"><a href="https://www.devx.com/b-terms/" class="elementor-item">B</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27043"><a href="https://www.devx.com/c-terms/" class="elementor-item">C</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27152"><a href="https://www.devx.com/d-terms/" class="elementor-item">D</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27153"><a href="https://www.devx.com/e-terms/" class="elementor-item">E</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27154"><a href="https://www.devx.com/f-terms/" class="elementor-item">F</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27155"><a href="https://www.devx.com/g-terms/" class="elementor-item">G</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27156"><a href="https://www.devx.com/h-terms/" class="elementor-item">H</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27157"><a href="https://www.devx.com/i-terms/" class="elementor-item">I</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27158"><a href="https://www.devx.com/j-terms/" class="elementor-item">J</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27159"><a href="https://www.devx.com/k-terms/" class="elementor-item">K</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27137"><a href="https://www.devx.com/l-terms/" class="elementor-item">L</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27151"><a href="https://www.devx.com/m-terms/" class="elementor-item">M</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27150"><a href="https://www.devx.com/n-terms/" class="elementor-item">N</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27149"><a href="https://www.devx.com/o-terms/" class="elementor-item">O</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27148"><a href="https://www.devx.com/p-terms/" class="elementor-item">P</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27147"><a href="https://www.devx.com/q-terms/" class="elementor-item">Q</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27146"><a href="https://www.devx.com/r-terms/" class="elementor-item">R</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27145"><a href="https://www.devx.com/s-terms/" class="elementor-item">S</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27144"><a href="https://www.devx.com/t-terms/" class="elementor-item">T</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27143"><a href="https://www.devx.com/u-terms/" class="elementor-item">U</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27142"><a href="https://www.devx.com/v-terms/" class="elementor-item">V</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27141"><a href="https://www.devx.com/w-terms/" class="elementor-item">W</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27140"><a href="https://www.devx.com/x-terms/" class="elementor-item">X</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27139"><a href="https://www.devx.com/y-terms/" class="elementor-item">Y</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27138"><a href="https://www.devx.com/z-terms/" class="elementor-item">Z</a></li> </ul> </nav> <div class="elementor-menu-toggle" role="button" tabindex="0" aria-label="Menu Toggle" aria-expanded="false"> <i aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--open eicon-menu-bar"></i><i aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--close eicon-close"></i> <span class="elementor-screen-only">Menu</span> </div> <nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true"> <ul id="menu-2-fbeb59f" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27045"><a href="https://www.devx.com/a-terms/" class="elementor-item" tabindex="-1">A</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27044"><a href="https://www.devx.com/b-terms/" class="elementor-item" tabindex="-1">B</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27043"><a href="https://www.devx.com/c-terms/" class="elementor-item" tabindex="-1">C</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27152"><a href="https://www.devx.com/d-terms/" class="elementor-item" tabindex="-1">D</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27153"><a href="https://www.devx.com/e-terms/" class="elementor-item" tabindex="-1">E</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27154"><a href="https://www.devx.com/f-terms/" class="elementor-item" tabindex="-1">F</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27155"><a href="https://www.devx.com/g-terms/" class="elementor-item" tabindex="-1">G</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27156"><a href="https://www.devx.com/h-terms/" class="elementor-item" tabindex="-1">H</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27157"><a href="https://www.devx.com/i-terms/" class="elementor-item" tabindex="-1">I</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27158"><a href="https://www.devx.com/j-terms/" class="elementor-item" tabindex="-1">J</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27159"><a href="https://www.devx.com/k-terms/" class="elementor-item" tabindex="-1">K</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27137"><a href="https://www.devx.com/l-terms/" class="elementor-item" tabindex="-1">L</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27151"><a href="https://www.devx.com/m-terms/" class="elementor-item" tabindex="-1">M</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27150"><a href="https://www.devx.com/n-terms/" class="elementor-item" tabindex="-1">N</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27149"><a href="https://www.devx.com/o-terms/" class="elementor-item" tabindex="-1">O</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27148"><a href="https://www.devx.com/p-terms/" class="elementor-item" tabindex="-1">P</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27147"><a href="https://www.devx.com/q-terms/" class="elementor-item" tabindex="-1">Q</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27146"><a href="https://www.devx.com/r-terms/" class="elementor-item" tabindex="-1">R</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27145"><a href="https://www.devx.com/s-terms/" class="elementor-item" tabindex="-1">S</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27144"><a href="https://www.devx.com/t-terms/" class="elementor-item" tabindex="-1">T</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27143"><a href="https://www.devx.com/u-terms/" class="elementor-item" tabindex="-1">U</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27142"><a href="https://www.devx.com/v-terms/" class="elementor-item" tabindex="-1">V</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27141"><a href="https://www.devx.com/w-terms/" class="elementor-item" tabindex="-1">W</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27140"><a href="https://www.devx.com/x-terms/" class="elementor-item" tabindex="-1">X</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27139"><a href="https://www.devx.com/y-terms/" class="elementor-item" tabindex="-1">Y</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27138"><a href="https://www.devx.com/z-terms/" class="elementor-item" tabindex="-1">Z</a></li> </ul> </nav> </div> </div> <div class="elementor-element elementor-element-6963de5 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="6963de5" data-element_type="widget" data-widget_type="divider.default"> <div class="elementor-widget-container"> <div class="elementor-divider"> <span class="elementor-divider-separator"> </span> </div> </div> </div> </div> </div> </div> </section> </div> </div> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-c5e10d2" data-id="c5e10d2" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> </div> </footer> <section class="elementor-section elementor-top-section elementor-element elementor-element-a4f01a6 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a4f01a6" data-element_type="section"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-a1bc5b1" data-id="a1bc5b1" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-e4f110b" data-id="e4f110b" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-4a914653 elementor-widget elementor-widget-heading" data-id="4a914653" data-element_type="widget" data-widget_type="heading.default"> <div class="elementor-widget-container"> <p class="elementor-heading-title elementor-size-default">©2024 Copyright DevX - All Rights Reserved. Registration or use of this site constitutes acceptance of our Terms of Service and Privacy Policy.</p> </div> </div> <div class="elementor-element elementor-element-d2cf216 elementor-widget elementor-widget-text-editor" data-id="d2cf216" data-element_type="widget" data-widget_type="text-editor.default"> <div class="elementor-widget-container"> <p><strong><a href="https://www.devx.com/sitemap/">Sitemap</a> — </strong><strong><a href="https://www.devx.com/privacy-policy/">Privacy Policy</a></strong></p> </div> </div> </div> </div> <div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-1daca18" data-id="1daca18" data-element_type="column"> <div class="elementor-widget-wrap"> </div> </div> </div> </section> </div> </footer> <!-- AdThrive - Override Elementor 100% iframe width --> <script> setInterval(() => { const elementorPage = document.querySelector('[class*="elementor"]') const adThriveLoaded = document.getElementsByTagName('body')[0].classList.contains('adthrive-device-phone') || document.getElementsByTagName('body')[0].classList.contains('adthrive-device-tablet') || document.getElementsByTagName('body')[0].classList.contains('adthrive-device-desktop') if (!adThriveLoaded) { console.log('Waiting for AdThrive...') return } if (elementorPage) { const ads = document.querySelectorAll(".adthrive-ad iframe"); ads.forEach(ad => { if (typeof ad.width !== "undefined" && ad.width !== "1") { ad.style.width = ad.width + "px"; } }) } }, 50); </script> <script data-no-optimize='1' data-cfasync='false' id='cls-insertion-09632a1'>'use strict';(function(){function v(c,a){function b(){this.constructor=c}if("function"!==typeof a&&null!==a)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");N(c,a);c.prototype=null===a?Object.create(a):(b.prototype=a.prototype,new b)}function S(c,a){var b={},d;for(d in c)Object.prototype.hasOwnProperty.call(c,d)&&0>a.indexOf(d)&&(b[d]=c[d]);if(null!=c&&"function"===typeof Object.getOwnPropertySymbols){var e=0;for(d=Object.getOwnPropertySymbols(c);e<d.length;e++)0> a.indexOf(d[e])&&Object.prototype.propertyIsEnumerable.call(c,d[e])&&(b[d[e]]=c[d[e]])}return b}function I(c,a,b,d){var e=arguments.length,f=3>e?a:null===d?d=Object.getOwnPropertyDescriptor(a,b):d,g;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)f=Reflect.decorate(c,a,b,d);else for(var h=c.length-1;0<=h;h--)if(g=c[h])f=(3>e?g(f):3<e?g(a,b,f):g(a,b))||f;return 3<e&&f&&Object.defineProperty(a,b,f),f}function B(c,a){if("object"===typeof Reflect&&"function"===typeof Reflect.metadata)return Reflect.metadata(c, a)}function L(c){var a="function"===typeof Symbol&&Symbol.iterator,b=a&&c[a],d=0;if(b)return b.call(c);if(c&&"number"===typeof c.length)return{next:function(){c&&d>=c.length&&(c=void 0);return{value:c&&c[d++],done:!c}}};throw new TypeError(a?"Object is not iterable.":"Symbol.iterator is not defined.");}function r(c,a){var b="function"===typeof Symbol&&c[Symbol.iterator];if(!b)return c;c=b.call(c);var d,e=[];try{for(;(void 0===a||0<a--)&&!(d=c.next()).done;)e.push(d.value)}catch(g){var f={error:g}}finally{try{d&& !d.done&&(b=c["return"])&&b.call(c)}finally{if(f)throw f.error;}}return e}function w(c,a,b){if(b||2===arguments.length)for(var d=0,e=a.length,f;d<e;d++)!f&&d in a||(f||(f=Array.prototype.slice.call(a,0,d)),f[d]=a[d]);return c.concat(f||Array.prototype.slice.call(a))}function T(c,a){void 0===a&&(a={});a=a.insertAt;if(c&&"undefined"!==typeof document){var b=document.head||document.getElementsByTagName("head")[0],d=document.createElement("style");d.type="text/css";"top"===a?b.firstChild?b.insertBefore(d, b.firstChild):b.appendChild(d):b.appendChild(d);d.styleSheet?d.styleSheet.cssText=c:d.appendChild(document.createTextNode(c))}}window.adthriveCLS.buildDate="2024-07-25";var N=function(c,a){N=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(b,d){b.__proto__=d}||function(b,d){for(var e in d)Object.prototype.hasOwnProperty.call(d,e)&&(b[e]=d[e])};return N(c,a)},y=function(){y=Object.assign||function(c){for(var a,b=1,d=arguments.length;b<d;b++){a=arguments[b];for(var e in a)Object.prototype.hasOwnProperty.call(a, e)&&(c[e]=a[e])}return c};return y.apply(this,arguments)};"function"===typeof SuppressedError?SuppressedError:function(c,a,b){b=Error(b);return b.name="SuppressedError",b.error=c,b.suppressed=a,b};var z=function(c){var a={};return function(){for(var b=[],d=0;d<arguments.length;d++)b[d]=arguments[d];d=JSON.stringify(b);if(a[d])return a[d];b=c.apply(this,b);return a[d]=b}},q=new (function(){function c(){}c.prototype.info=function(a,b){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];this.call.apply(this, w([console.info,a,b],r(d),!1))};c.prototype.warn=function(a,b){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];this.call.apply(this,w([console.warn,a,b],r(d),!1))};c.prototype.error=function(a,b){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];this.call.apply(this,w([console.error,a,b],r(d),!1));this.sendErrorLogToCommandQueue.apply(this,w([a,b],r(d),!1))};c.prototype.event=function(a,b){for(var d,e=2;e<arguments.length;e++);"debug"===(null===(d=window.adthriveCLS)||void 0=== d?void 0:d.bucket)&&this.info(a,b)};c.prototype.sendErrorLogToCommandQueue=function(a,b){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];window.adthrive=window.adthrive||{};window.adthrive.cmd=window.adthrive.cmd||[];window.adthrive.cmd.push(function(){void 0!==window.adthrive.logError&&"function"===typeof window.adthrive.logError&&window.adthrive.logError(a,b,d)})};c.prototype.call=function(a,b,d){for(var e=[],f=3;f<arguments.length;f++)e[f-3]=arguments[f];f=["%c".concat(b,"::").concat(d, " ")];var g=["color: #999; font-weight: bold;"];0<e.length&&"string"===typeof e[0]&&f.push(e.shift());g.push.apply(g,w([],r(e),!1));try{Function.prototype.apply.call(a,console,w([f.join("")],r(g),!1))}catch(h){console.error(h)}};return c}()),u=function(c,a){return null==c||c!==c?a:c},pa=function(c){var a=c.clientWidth;getComputedStyle&&(c=getComputedStyle(c,null),a-=parseFloat(c.paddingLeft||"0")+parseFloat(c.paddingRight||"0"));return a},qa=function(c){var a=c.offsetHeight,b=c.offsetWidth,d=c.getBoundingClientRect(), e=document.body,f=document.documentElement;c=Math.round(d.top+(window.pageYOffset||f.scrollTop||e.scrollTop)-(f.clientTop||e.clientTop||0));d=Math.round(d.left+(window.pageXOffset||f.scrollLeft||e.scrollLeft)-(f.clientLeft||e.clientLeft||0));return{top:c,left:d,bottom:c+a,right:d+b,width:b,height:a}},ra=function(c){void 0===c&&(c=window.location.search);var a=0===c.indexOf("?")?1:0;return c.slice(a).split("&").reduce(function(b,d){d=r(d.split("="),2);b.set(d[0],d[1]);return b},new Map)},sa=function(c){var a= {},b=ra().get(c);if(b)try{var d=decodeURIComponent(b).replace(/\+/g,"");a=JSON.parse(d);q.event("ExperimentOverridesUtil","getExperimentOverrides",c,a)}catch(e){}return a},ta=z(function(c){void 0===c&&(c=navigator.userAgent);return/Windows NT|Macintosh/i.test(c)}),E=z(function(){var c=navigator.userAgent,a=/Tablet|iPad|Playbook|Nook|webOS|Kindle|Android (?!.*Mobile).*Safari|CrOS/i.test(c);return/Mobi|iP(hone|od)|Opera Mini/i.test(c)&&!a}),ua=function(c){void 0===c&&(c=document);return(c===document? document.body:c).getBoundingClientRect().top},va=function(c){return c.includes(",")?c.split(","):[c]},wa=function(c){void 0===c&&(c=document);c=c.querySelectorAll("article");return 0===c.length?null:(c=Array.from(c).reduce(function(a,b){return b.offsetHeight>a.offsetHeight?b:a}))&&c.offsetHeight>1.5*window.innerHeight?c:null},xa=function(c,a,b){void 0===b&&(b=document);var d=wa(b),e=d?[d]:[],f=[];c.forEach(function(h){var k=Array.from(b.querySelectorAll(h.elementSelector)).slice(0,h.skip);va(h.elementSelector).forEach(function(l){var p= b.querySelectorAll(l);l=function(t){var n=p[t];if(a.map.some(function(x){return x.el.isEqualNode(n)}))return"continue";(t=n&&n.parentElement)&&t!==document.body?e.push(t):e.push(n);-1===k.indexOf(n)&&f.push({dynamicAd:h,element:n})};for(var m=0;m<p.length;m++)l(m)})});var g=ua(b);c=f.sort(function(h,k){return h.element.getBoundingClientRect().top-g-(k.element.getBoundingClientRect().top-g)});return[e,c]},ya=function(c,a,b){void 0===b&&(b=document);a=r(xa(c,a,b),2);c=a[0];a=a[1];if(0===c.length)throw Error("No Main Content Elements Found"); return[Array.from(c).reduce(function(d,e){return e.offsetHeight>d.offsetHeight?e:d})||document.body,a]},M=new (function(){function c(){var a=this;this.name="StorageHandler";this.disable=!1;this.removeLocalStorageValue=function(b){window.localStorage.removeItem("adthrive_".concat(b.toLowerCase()))};this.getLocalStorageValue=function(b,d,e,f,g){void 0===d&&(d=!0);void 0===e&&(e=!0);if(a.disable)return null;try{var h=window.localStorage.getItem("".concat(d?"adthrive_":"").concat(e?b.toLowerCase():b)); if(h){var k=JSON.parse(h),l=void 0!==f&&Date.now()-k.created>=f;if(k&&!l)return g&&a.setLocalStorageValue(b,k.value,d),k.value}}catch(p){}return null};this.setLocalStorageValue=function(b,d,e){void 0===e&&(e=!0);try{e=e?"adthrive_":"";var f={value:d,created:Date.now()};window.localStorage.setItem("".concat(e).concat(b.toLowerCase()),JSON.stringify(f))}catch(g){}};this.getOrSetLocalStorageValue=function(b,d,e,f,g,h,k){void 0===f&&(f=!0);void 0===g&&(g=!0);void 0===k&&(k=!0);e=a.getLocalStorageValue(b, k,f,e,g);if(null!==e)return e;d=d();a.setLocalStorageValue(b,d,k);h&&h(d);return d}}c.prototype.init=function(){};return c}()),D;(function(c){c.amznbid="amznbid";c.amzniid="amzniid";c.amznp="amznp";c.amznsz="amznsz"})(D||(D={}));var U;(function(c){c.ThirtyThreeAcross="33across";c.Adform="adform";c.Aidem="aidem";c.AidemServer="aidem_ss";c.AppNexus="appnexus";c.AmazonTAM="amazon";c.AmazonUAM="AmazonUAM";c.AmazonASR="AmazonASR";c.Colossus="colossus";c.ColossusServer="col_ss";c.Conversant="conversant"; c.Concert="concert";c.Criteo="criteo";c.GumGum="gumgum";c.ImproveDigital="improvedigital";c.ImproveDigitalServer="improve_ss";c.IndexExchange="ix";c.Kargo="kargo";c.KargoServer="krgo_ss";c.MediaGrid="grid";c.MediaGridVideo="gridvid";c.Nativo="nativo";c.OpenX="openx";c.Ogury="ogury";c.OpenXServer="opnx_ss";c.Ozone="ozone";c.Pubmatic="pubmatic";c.PubmaticServer="pubm_ss";c.ResetDigital="resetdigital";c.Rtbhouse="rtbhouse";c.Rubicon="rubicon";c.RubiconServer="rubi_ss";c.Sharethrough="sharethrough";c.Teads= "teads";c.Triplelift="triplelift";c.TripleliftServer="tripl_ss";c.TTD="ttd";c.Undertone="undertone";c.UndertoneServer="under_ss";c.Unruly="unruly";c.YahooSSP="yahoossp";c.YahooSSPServer="yah_ss";c.Verizon="verizon";c.Yieldmo="yieldmo"})(U||(U={}));var V;(function(c){c.Prebid="prebid";c.GAM="gam";c.Amazon="amazon";c.Marmalade="marmalade";c.Floors="floors";c.CMP="cmp";c.Optable="optable"})(V||(V={}));var W;(function(c){c.cm="cm";c.fbrap="fbrap";c.rapml="rapml"})(W||(W={}));var X;(function(c){c.lazy= "lazy";c.raptive="raptive";c.refresh="refresh";c.session="session";c.crossDomain="crossdomain";c.highSequence="highsequence";c.lazyBidPool="lazyBidPool"})(X||(X={}));var Y;(function(c){c.lazy="l";c.raptive="rapml";c.refresh="r";c.session="s";c.crossdomain="c";c.highsequence="hs";c.lazyBidPool="lbp"})(Y||(Y={}));var Z;(function(c){c.Version="Version";c.SharingNotice="SharingNotice";c.SaleOptOutNotice="SaleOptOutNotice";c.SharingOptOutNotice="SharingOptOutNotice";c.TargetedAdvertisingOptOutNotice="TargetedAdvertisingOptOutNotice"; c.SensitiveDataProcessingOptOutNotice="SensitiveDataProcessingOptOutNotice";c.SensitiveDataLimitUseNotice="SensitiveDataLimitUseNotice";c.SaleOptOut="SaleOptOut";c.SharingOptOut="SharingOptOut";c.TargetedAdvertisingOptOut="TargetedAdvertisingOptOut";c.SensitiveDataProcessing="SensitiveDataProcessing";c.KnownChildSensitiveDataConsents="KnownChildSensitiveDataConsents";c.PersonalDataConsents="PersonalDataConsents";c.MspaCoveredTransaction="MspaCoveredTransaction";c.MspaOptOutOptionMode="MspaOptOutOptionMode"; c.MspaServiceProviderMode="MspaServiceProviderMode";c.SubSectionType="SubsectionType";c.Gpc="Gpc"})(Z||(Z={}));var aa;(function(c){c[c.NA=0]="NA";c[c.OptedOut=1]="OptedOut";c[c.OptedIn=2]="OptedIn"})(aa||(aa={}));var C;(function(c){c.AdDensity="addensity";c.AdLayout="adlayout";c.FooterCloseButton="footerclose";c.Interstitial="interstitial";c.RemoveVideoTitleWrapper="removevideotitlewrapper";c.StickyOutstream="stickyoutstream";c.StickyOutstreamOnStickyPlayer="sospp";c.VideoAdvancePlaylistRelatedPlayer= "videoadvanceplaylistrp";c.MobileStickyPlayerPosition="mspp"})(C||(C={}));var J;(function(c){c.Desktop="desktop";c.Mobile="mobile"})(J||(J={}));var G;(function(c){c.Video_Collapse_Autoplay_SoundOff="Video_Collapse_Autoplay_SoundOff";c.Video_Individual_Autoplay_SOff="Video_Individual_Autoplay_SOff";c.Video_Coll_SOff_Smartphone="Video_Coll_SOff_Smartphone";c.Video_In_Post_ClicktoPlay_SoundOn="Video_In-Post_ClicktoPlay_SoundOn"})(G||(G={}));var ba;(ba||(ba={})).None="none";var ca;(function(c){c.Default= "default";c.AZ_Animals="5daf495ed42c8605cfc74b0b";c.Natashas_Kitchen="55bccc97303edab84afd77e2";c.RecipeTin_Eats="55cb7e3b4bc841bd0c4ea577";c.Sallys_Baking_Recipes="566aefa94856897050ee7303";c.Spend_With_Pennies="541917f5a90318f9194874cf"})(ca||(ca={}));var za=function(c,a){var b=c.adDensityEnabled;c=c.adDensityLayout.pageOverrides.find(function(d){return!!document.querySelector(d.pageSelector)&&(d[a].onePerViewport||"number"===typeof d[a].adDensity)});return b?!c:!0},da=function(c){try{return{valid:!0, elements:document.querySelectorAll(c)}}catch(a){return y({valid:!1},a)}},ea=function(c){return""===c?{valid:!0}:da(c)},Aa=function(c){var a=c.reduce(function(b,d){return d.weight?d.weight+b:b},0);return 0<c.length&&c.every(function(b){var d=b.value;b=b.weight;return!(void 0===d||null===d||"number"===typeof d&&isNaN(d)||!b)})&&100===a},Ba=["siteId","siteName","adOptions","breakpoints","adUnits"];z=function(){function c(){this._timeOrigin=0}c.prototype.resetTimeOrigin=function(){this._timeOrigin=window.performance.now()}; c.prototype.now=function(){try{return Math.round(window.performance.now()-this._timeOrigin)}catch(a){return 0}};return c}();window.adthrive.windowPerformance=window.adthrive.windowPerformance||new z;z=window.adthrive.windowPerformance;var O=z.now.bind(z),Ca=function(c){function a(b){var d=c.call(this)||this;d._featureRollouts=b.enabled?b.siteAds.featureRollouts||{}:{};return d}v(a,c);return a}(function(){function c(){this._featureRollouts={}}Object.defineProperty(c.prototype,"siteFeatureRollouts", {get:function(){return this._featureRollouts},enumerable:!1,configurable:!0});c.prototype.isRolloutEnabled=function(a){return this._featureRollouts&&this._featureRollouts[a]?this._featureRollouts[a].enabled:!1};c.prototype.getSiteRolloutConfig=function(a){var b;return this.isRolloutEnabled(a)?null!==(b=this._featureRollouts[a].data)&&void 0!==b?b:{}:{}};return c}()),fa=function(){function c(){this._clsGlobalData=window.adthriveCLS}Object.defineProperty(c.prototype,"enabled",{get:function(){var a; if(a=!!this._clsGlobalData&&!!this._clsGlobalData.siteAds)a:{a=this._clsGlobalData.siteAds;var b=void 0;void 0===b&&(b=Ba);if(a){for(var d=0;d<b.length;d++)if(!a[b[d]]){a=!1;break a}a=!0}else a=!1}return a},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"error",{get:function(){return!(!this._clsGlobalData||!this._clsGlobalData.error)},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"siteAds",{get:function(){return this._clsGlobalData.siteAds},set:function(a){this._clsGlobalData.siteAds= a},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"disableAds",{get:function(){return this._clsGlobalData.disableAds},set:function(a){this._clsGlobalData.disableAds=a},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"enabledLocations",{get:function(){return this._clsGlobalData.enabledLocations},set:function(a){this._clsGlobalData.enabledLocations=a},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"injectedFromPlugin",{get:function(){return this._clsGlobalData.injectedFromPlugin}, set:function(a){this._clsGlobalData.injectedFromPlugin=a},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"injectedFromSiteAds",{get:function(){return this._clsGlobalData.injectedFromSiteAds},set:function(a){this._clsGlobalData.injectedFromSiteAds=a},enumerable:!1,configurable:!0});c.prototype.overwriteInjectedSlots=function(a){this._clsGlobalData.injectedSlots=a};c.prototype.setInjectedSlots=function(a){this._clsGlobalData.injectedSlots=this._clsGlobalData.injectedSlots||[];this._clsGlobalData.injectedSlots.push(a)}; Object.defineProperty(c.prototype,"injectedSlots",{get:function(){return this._clsGlobalData.injectedSlots},enumerable:!1,configurable:!0});c.prototype.setInjectedVideoSlots=function(a){this._clsGlobalData.injectedVideoSlots=this._clsGlobalData.injectedVideoSlots||[];this._clsGlobalData.injectedVideoSlots.push(a)};Object.defineProperty(c.prototype,"injectedVideoSlots",{get:function(){return this._clsGlobalData.injectedVideoSlots},enumerable:!1,configurable:!0});c.prototype.setInjectedScripts=function(a){this._clsGlobalData.injectedScripts= this._clsGlobalData.injectedScripts||[];this._clsGlobalData.injectedScripts.push(a)};Object.defineProperty(c.prototype,"getInjectedScripts",{get:function(){return this._clsGlobalData.injectedScripts},enumerable:!1,configurable:!0});c.prototype.setExperiment=function(a,b,d){void 0===d&&(d=!1);this._clsGlobalData.experiments=this._clsGlobalData.experiments||{};this._clsGlobalData.siteExperiments=this._clsGlobalData.siteExperiments||{};(d?this._clsGlobalData.siteExperiments:this._clsGlobalData.experiments)[a]= b};c.prototype.getExperiment=function(a,b){void 0===b&&(b=!1);return(b=b?this._clsGlobalData.siteExperiments:this._clsGlobalData.experiments)&&b[a]};c.prototype.setWeightedChoiceExperiment=function(a,b,d){void 0===d&&(d=!1);this._clsGlobalData.experimentsWeightedChoice=this._clsGlobalData.experimentsWeightedChoice||{};this._clsGlobalData.siteExperimentsWeightedChoice=this._clsGlobalData.siteExperimentsWeightedChoice||{};(d?this._clsGlobalData.siteExperimentsWeightedChoice:this._clsGlobalData.experimentsWeightedChoice)[a]= b};c.prototype.getWeightedChoiceExperiment=function(a,b){var d,e;void 0===b&&(b=!1);return(b=b?null===(d=this._clsGlobalData)||void 0===d?void 0:d.siteExperimentsWeightedChoice:null===(e=this._clsGlobalData)||void 0===e?void 0:e.experimentsWeightedChoice)&&b[a]};Object.defineProperty(c.prototype,"branch",{get:function(){return this._clsGlobalData.branch},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"bucket",{get:function(){return this._clsGlobalData.bucket},enumerable:!1,configurable:!0}); Object.defineProperty(c.prototype,"videoDisabledFromPlugin",{get:function(){return this._clsGlobalData.videoDisabledFromPlugin},set:function(a){this._clsGlobalData.videoDisabledFromPlugin=a},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"targetDensityLog",{get:function(){return this._clsGlobalData.targetDensityLog},set:function(a){this._clsGlobalData.targetDensityLog=a},enumerable:!1,configurable:!0});c.prototype.shouldHalveIOSDensity=function(){var a=new Ca(this),b=void 0;void 0=== b&&(b=navigator.userAgent);return/iP(hone|od|ad)/i.test(b)&&a.isRolloutEnabled("iOS-Resolution")};c.prototype.getTargetDensity=function(a){return this.shouldHalveIOSDensity()?a/2:a};Object.defineProperty(c.prototype,"removeVideoTitleWrapper",{get:function(){return this._clsGlobalData.siteAds.adOptions.removeVideoTitleWrapper},enumerable:!1,configurable:!0});return c}(),Da=function(){function c(){}c.getScrollTop=function(){return(window.pageYOffset||document.documentElement.scrollTop)-(document.documentElement.clientTop|| 0)};c.getScrollBottom=function(){return this.getScrollTop()+(document.documentElement.clientHeight||0)};c.shufflePlaylist=function(a){for(var b=a.length,d,e;0!==b;)e=Math.floor(Math.random()*a.length),--b,d=a[b],a[b]=a[e],a[e]=d;return a};c.isMobileLandscape=function(){return window.matchMedia("(orientation: landscape) and (max-height: 480px)").matches};c.playerViewable=function(a){a=a.getBoundingClientRect();return this.isMobileLandscape()?window.innerHeight>a.top+a.height/2&&0<a.top+a.height/2: window.innerHeight>a.top+a.height/2};c.createQueryString=function(a){return Object.keys(a).map(function(b){return"".concat(b,"=").concat(a[b])}).join("&")};c.createEncodedQueryString=function(a){return Object.keys(a).map(function(b){return"".concat(b,"=").concat(encodeURIComponent(a[b]))}).join("&")};c.setMobileLocation=function(a){a=a||"bottom-right";"top-left"===a?a="adthrive-collapse-top-left":"top-right"===a?a="adthrive-collapse-top-right":"bottom-left"===a?a="adthrive-collapse-bottom-left":"bottom-right"=== a?a="adthrive-collapse-bottom-right":"top-center"===a&&(a=E()?"adthrive-collapse-top-center":"adthrive-collapse-bottom-right");return a};c.addMaxResolutionQueryParam=function(a){var b=E()?"320":"1280";b="max_resolution=".concat(b);var d=r(String(a).split("?"),2);a=d[0];b=(d=d[1])?d+"&".concat(b):b;return"".concat(a,"?").concat(b)};return c}(),Ea=function(){return function(c){this._clsOptions=c;this.removeVideoTitleWrapper=u(this._clsOptions.siteAds.adOptions.removeVideoTitleWrapper,!1);c=this._clsOptions.siteAds.videoPlayers; this.footerSelector=u(c&&c.footerSelector,"");this.players=u(c&&c.players.map(function(a){a.mobileLocation=Da.setMobileLocation(a.mobileLocation);return a}),[]);this.relatedSettings=c&&c.contextual}}(),Fa=function(){return function(c){this.relatedPlayerAdded=this.playlistPlayerAdded=this.mobileStickyPlayerOnPage=!1;this.footerSelector="";this.removeVideoTitleWrapper=!1;this.videoAdOptions=new Ea(c);this.players=this.videoAdOptions.players;this.relatedSettings=this.videoAdOptions.relatedSettings;this.removeVideoTitleWrapper= this.videoAdOptions.removeVideoTitleWrapper;this.footerSelector=this.videoAdOptions.footerSelector}}();D=function(){return function(){}}();var H=function(c){function a(b){var d=c.call(this)||this;d._probability=b;return d}v(a,c);a.prototype.get=function(){if(0>this._probability||1<this._probability)throw Error("Invalid probability: ".concat(this._probability));return Math.random()<this._probability};return a}(D);z=function(){function c(){this._clsOptions=new fa;this.shouldUseCoreExperimentsConfig= !1}c.prototype.setExperimentKey=function(a){void 0===a&&(a=!1);this._clsOptions.setExperiment(this.abgroup,this.result,a)};return c}();var Ga=function(c){function a(){var b=c.call(this)||this;b._result=!1;b._choices=[{choice:!0},{choice:!1}];b.key="RemoveLargeSize";b.abgroup="smhd100";b._result=b.run();b.setExperimentKey();return b}v(a,c);Object.defineProperty(a.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});a.prototype.run=function(){return(new H(.1)).get()}; return a}(z),ha=function(c,a,b,d,e,f){c=Math.round(f-e);a=[];e=[];a.push("(",b.map(function(){return"%o"}).join(", "),")");e.push.apply(e,w([],r(b),!1));void 0!==d&&(a.push(" => %o"),e.push(d));a.push(" %c(".concat(c,"ms)"));e.push("color: #999;")},ia=function(c,a,b){var d=void 0!==b.get?b.get:b.value;return function(){for(var e=[],f=0;f<arguments.length;f++)e[f]=arguments[f];try{var g=O(),h=d.apply(this,e);if(h instanceof Promise)return h.then(function(l){var p=O();ha(c,a,e,l,g,p);return Promise.resolve(l)}).catch(function(l){l.logged|| (q.error(c,a,l),l.logged=!0);throw l;});var k=O();ha(c,a,e,h,g,k);return h}catch(l){throw l.logged||(q.error(c,a,l),l.logged=!0),l;}}},P=function(c,a){void 0===a&&(a=!1);return function(b){var d,e=Object.getOwnPropertyNames(b.prototype).filter(function(m){return a||0!==m.indexOf("_")}).map(function(m){return[m,Object.getOwnPropertyDescriptor(b.prototype,m)]});try{for(var f=L(e),g=f.next();!g.done;g=f.next()){var h=r(g.value,2),k=h[0],l=h[1];void 0!==l&&"function"===typeof l.value?b.prototype[k]=ia(c, k,l):void 0!==l&&void 0!==l.get&&"function"===typeof l.get&&Object.defineProperty(b.prototype,k,y(y({},l),{get:ia(c,k,l)}))}}catch(m){var p={error:m}}finally{try{g&&!g.done&&(d=f.return)&&d.call(f)}finally{if(p)throw p.error;}}}},Ha=function(c){function a(b){var d=c.call(this)||this;d._result=!1;d.key="ParallaxAdsExperiment";d.abgroup="parallax";d._choices=[{choice:!0},{choice:!1}];d.weight=.5;E()&&b.largeFormatsMobile&&(d._result=d.run(),d.setExperimentKey());return d}v(a,c);Object.defineProperty(a.prototype, "result",{get:function(){return this._result},enumerable:!1,configurable:!0});a.prototype.run=function(){return(new H(this.weight)).get()};return a=I([P("ParallaxAdsExperiment"),B("design:paramtypes",[Object])],a)}(z),Ia=function(c){function a(){var b=c.call(this)||this;b._result=!1;b._choices=[{choice:!0},{choice:!1}];b.key="mrsf";b.abgroup="mrsf";E()&&(b._result=b.run(),b.setExperimentKey());return b}v(a,c);Object.defineProperty(a.prototype,"result",{get:function(){return this._result},enumerable:!1, configurable:!0});a.prototype.run=function(){return(new H(1)).get()};return a}(z),Ja=[[728,90],[300,250],[300,600],[320,50],[970,250],[160,600],[300,1050],[336,280],[970,90],[300,50],[320,100],[468,60],[250,250],[120,240],[1,1],[300,300],[552,334],[300,420],[728,250],[320,300],[300,390]],Ka=[[300,600],[160,600]],La=new Map([["Footer",1],["Header",2],["Sidebar",3],["Content",4],["Recipe",5],["Sidebar_sticky",6],["Below Post",7]]),Ma=function(c){return Ja.filter(function(a){a=r(a,2);var b=a[0],d=a[1]; return c.some(function(e){e=r(e,2);var f=e[1];return b===e[0]&&d===f})})},Na=function(c,a,b,d,e){a=r(a,2);var f=a[0],g=a[1],h=c.location;a=c.sequence;return"Footer"===h?!("phone"===b&&320===f&&100===g):"Header"===h?!(100<g&&d.result):"Recipe"===h?!(e.result&&"phone"===b&&(300===f&&390===g||320===f&&300===g)):"Sidebar"===h?(b=c.adSizes.some(function(k){return 300>=r(k,2)[1]}),(d=300<g)&&!b?!0:9===a?!0:a&&5>=a?d?c.sticky:!0:!d):!0},Oa=function(c,a){var b=c.location;c=c.sticky;if("Recipe"===b&&a){var d= a.recipeMobile;a=a.recipeDesktop;if(E()&&(null===d||void 0===d?0:d.enabled)||!E()&&(null===a||void 0===a?0:a.enabled))return!0}return"Footer"===b||c},Pa=function(c,a){var b=a.adUnits,d=a.adTypes?(new Ha(a.adTypes)).result:!1,e=new Ga,f=new Ia;return b.filter(function(g){return void 0!==g.dynamic&&g.dynamic.enabled}).map(function(g){var h=g.location.replace(/\s+/g,"_"),k="Sidebar"===h?0:2;return{auctionPriority:La.get(h)||8,location:h,sequence:u(g.sequence,1),sizes:Ma(g.adSizes).filter(function(l){return Na(g, l,c,e,f)}).concat(d&&"Content"===g.location?Ka:[]),devices:g.devices,pageSelector:u(g.dynamic.pageSelector,"").trim(),elementSelector:u(g.dynamic.elementSelector,"").trim(),position:u(g.dynamic.position,"beforebegin"),max:Math.floor(u(g.dynamic.max,0)),spacing:u(g.dynamic.spacing,0),skip:Math.floor(u(g.dynamic.skip,0)),every:Math.max(Math.floor(u(g.dynamic.every,1)),1),classNames:g.dynamic.classNames||[],sticky:Oa(g,a.adOptions.stickyContainerConfig),stickyOverlapSelector:u(g.stickyOverlapSelector, "").trim(),autosize:g.autosize,special:u(g.targeting,[]).filter(function(l){return"special"===l.key}).reduce(function(l,p){return l.concat.apply(l,w([],r(p.value),!1))},[]),lazy:u(g.dynamic.lazy,!1),lazyMax:u(g.dynamic.lazyMax,k),lazyMaxDefaulted:0===g.dynamic.lazyMax?!1:!g.dynamic.lazyMax,name:g.name}})},ja=function(c,a){var b=pa(a),d=c.sticky&&"Sidebar"===c.location;return c.sizes.filter(function(e){var f=d?e[1]<=window.innerHeight-100:!0;return(c.autosize?e[0]<=b||320>=e[0]:!0)&&f})},Qa=function(){return function(c){this.clsOptions= c;this.enabledLocations=["Below_Post","Content","Recipe","Sidebar"]}}(),Ra=function(c){var a=document.body;c="adthrive-device-".concat(c);if(!a.classList.contains(c))try{a.classList.add(c)}catch(b){q.error("BodyDeviceClassComponent","init",{message:b.message}),a="classList"in document.createElement("_"),q.error("BodyDeviceClassComponent","init.support",{support:a})}},Q=function(c){return"adthrive-".concat(c.location.replace("_","-").toLowerCase())},ka=function(c){return"".concat(Q(c),"-").concat(c.sequence)}, Sa=function(c){return T('\n .adthrive-device-phone .adthrive-sticky-content {\n height: 450px !important;\n margin-bottom: 100px !important;\n }\n .adthrive-content.adthrive-sticky {\n position: -webkit-sticky;\n position: sticky !important;\n top: 42px !important;\n margin-top: 42px !important;\n }\n .adthrive-content.adthrive-sticky:after {\n content: "\u2014 Advertisement. Scroll down to continue. \u2014";\n font-size: 10pt;\n margin-top: 5px;\n margin-bottom: 5px;\n display:block;\n color: #888;\n }\n .adthrive-sticky-container {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n min-height:'.concat(c? c:400,"px !important;\n margin: 10px 0 10px 0;\n background-color: #FAFAFA;\n padding-bottom:0px;\n }\n "))},la=function(c){return c.some(function(a){return null!==document.querySelector(a)})},Ta=function(c){function a(){var b=c.call(this)||this;b._result=!1;b._choices=[{choice:!0},{choice:!1}];b.key="RemoveRecipeCap";b.abgroup="rrc";b._result=b.run();b.setExperimentKey();return b}v(a,c);Object.defineProperty(a.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0}); a.prototype.run=function(){return(new H(1)).get()};return a}(z),R=function(c){function a(b,d){void 0===b&&(b=[]);var e=c.call(this)||this;e._choices=b;e._default=d;return e}v(a,c);a.fromArray=function(b,d){return new a(b.map(function(e){e=r(e,2);return{choice:e[0],weight:e[1]}}),d)};a.prototype.addChoice=function(b,d){this._choices.push({choice:b,weight:d})};a.prototype.get=function(){var b,d=100*Math.random(),e=0;try{for(var f=L(this._choices),g=f.next();!g.done;g=f.next()){var h=g.value,k=h.choice; e+=h.weight;if(e>=d)return k}}catch(p){var l={error:p}}finally{try{g&&!g.done&&(b=f.return)&&b.call(f)}finally{if(l)throw l.error;}}return this._default};Object.defineProperty(a.prototype,"totalWeight",{get:function(){return this._choices.reduce(function(b,d){return b+d.weight},0)},enumerable:!1,configurable:!0});return a}(D),Ua=function(c){for(var a=5381,b=c.length;b;)a=33*a^c.charCodeAt(--b);return a>>>0},Va=function(c){if(null===c)return null;c=c.map(function(a){return a.choice});return Ua(JSON.stringify(c)).toString(16)}, Wa=function(c,a){var b,d;return null!==(d=null===(b=c.find(function(e){return e.choice===a}))||void 0===b?void 0:b.weight)&&void 0!==d?d:null},ma=function(c){return void 0!==c&&null!==c&&!("number"===typeof c&&isNaN(c))},na=function(){return function(c,a,b){var d=b.value;d&&(b.value=function(){for(var e=[],f=0;f<arguments.length;f++)e[f]=arguments[f];f=Va(this._choices);var g=this._expConfigABGroup?this._expConfigABGroup:this.abgroup;g=g?g.toLowerCase():this.key?this.key.toLowerCase():"";f=f?"".concat(g, "_").concat(f):g;f=this.localStoragePrefix?"".concat(this.localStoragePrefix,"-").concat(f):f;g=M.getLocalStorageValue("branch");!1===(g&&g.enabled)&&M.removeLocalStorageValue(f);e=d.apply(this,e);g=Wa(this._choices,e);a:{var h=void 0,k;void 0===h&&(h=!0);h=M.getLocalStorageValue("abgroup",!0,!0,864E5,h);if(null!==h){var l=h[f],p=null!==(k=h["".concat(f,"_weight")])&&void 0!==k?k:null;if(ma(l)){var m=[l,p];break a}}k=y(y({},h),(m={},m[f]=e,m["".concat(f,"_weight")]=g,m));M.setLocalStorageValue("abgroup", k);m=[e,g]}k=r(m,2);m=k[0];k=k[1];this._stickyResult=m;this._stickyWeight=k;return m})}};D=function(c){function a(){var b=c.apply(this,w([],r(arguments),!1))||this;b._resultValidator=function(){return!0};return b}v(a,c);a.prototype._isValidResult=function(b){var d=this;return c.prototype._isValidResult.call(this,b,function(){return d._resultValidator(b)||"control"===b})};a.prototype.run=function(){if(!this.enabled)return q.error("CLSWeightedChoiceSiteExperiment","run","() => %o","No experiment config found. Defaulting to control."), "control";if(!this._mappedChoices||0===this._mappedChoices.length)return q.error("CLSWeightedChoiceSiteExperiment","run","() => %o","No experiment variants found. Defaulting to control."),"control";var b=(new R(this._mappedChoices)).get();if(this._isValidResult(b))return b;q.error("CLSWeightedChoiceSiteExperiment","run","() => %o","Invalid result from experiment choices. Defaulting to control.");return"control"};return a}(function(){function c(){}Object.defineProperty(c.prototype,"enabled",{get:function(){return void 0!== this.experimentConfig},enumerable:!1,configurable:!0});c.prototype._isValidResult=function(a,b){void 0===b&&(b=function(){return!0});return b()&&ma(a)};return c}());var oa=function(){function c(a){var b=this,d,e;this.siteExperiments=[];this._clsOptions=a;this._device=E()?"mobile":"desktop";this.siteExperiments=null!==(e=null===(d=this._clsOptions.siteAds.siteExperiments)||void 0===d?void 0:d.filter(function(f){var g=f.key;var h=b._device;if(f){var k=!!f.enabled,l=null==f.dateStart||Date.now()>=f.dateStart, p=null==f.dateEnd||Date.now()<=f.dateEnd,m=null===f.selector||""!==f.selector&&!!document.querySelector(f.selector),t="mobile"===f.platform&&"mobile"===h;h="desktop"===f.platform&&"desktop"===h;t=null===f.platform||"all"===f.platform||t||h;(h="bernoulliTrial"===f.experimentType?1===f.variants.length:Aa(f.variants))||q.error("SiteTest","validateSiteExperiment","experiment presented invalid choices for key:",f.key,f.variants);f=k&&l&&p&&m&&t&&h}else f=!1;a:switch(k=b._clsOptions.siteAds,g){case C.AdDensity:var n= za(k,b._device);break a;case C.StickyOutstream:var x,A;n=(g=null===(A=null===(x=null===(n=k.videoPlayers)||void 0===n?void 0:n.partners)||void 0===x?void 0:x.stickyOutstream)||void 0===A?void 0:A.blockedPageSelectors)?!document.querySelector(g):!0;break a;case C.Interstitial:n=(n=k.adOptions.interstitialBlockedPageSelectors)?!document.querySelector(n):!0;break a;default:n=!0}return f&&n}))&&void 0!==e?e:[]}c.prototype.getSiteExperimentByKey=function(a){var b=this.siteExperiments.filter(function(f){return f.key.toLowerCase()=== a.toLowerCase()})[0],d=sa("at_site_features"),e=typeof((null===b||void 0===b?0:b.variants[1])?null===b||void 0===b?void 0:b.variants[1].value:null===b||void 0===b?void 0:b.variants[0].value)===typeof d[a];b&&d[a]&&e&&(b.variants=[{displayName:"test",value:d[a],weight:100,id:0}]);return b};return c}(),Xa=function(c){function a(b){var d=c.call(this)||this;d._choices=[];d._mappedChoices=[];d._result="";d._resultValidator=function(e){return"string"===typeof e};d.key=C.AdLayout;d.abgroup=C.AdLayout;d._clsSiteExperiments= new oa(b);d.experimentConfig=d._clsSiteExperiments.getSiteExperimentByKey(d.key);d.enabled&&d.experimentConfig&&(d._choices=d.experimentConfig.variants,d._mappedChoices=d._mapChoices(),d._result=d.run(),b.setWeightedChoiceExperiment(d.abgroup,d._result,!0));return d}v(a,c);Object.defineProperty(a.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});a.prototype.run=function(){if(!this.enabled)return q.error("CLSAdLayoutSiteExperiment","run","() => %o","No experiment config found. Defaulting to empty class name."), "";var b=(new R(this._mappedChoices)).get();if(this._isValidResult(b))return b;q.error("CLSAdLayoutSiteExperiment","run","() => %o","Invalid result from experiment choices. Defaulting to empty class name.");return""};a.prototype._mapChoices=function(){return this._choices.map(function(b){return{weight:b.weight,choice:b.value}})};I([na(),B("design:type",Function),B("design:paramtypes",[]),B("design:returntype",void 0)],a.prototype,"run",null);return a}(D),Ya=function(c){function a(b){var d=c.call(this)|| this;d._choices=[];d._mappedChoices=[];d._result="control";d._resultValidator=function(e){return"number"===typeof e};d.key=C.AdDensity;d.abgroup=C.AdDensity;d._clsSiteExperiments=new oa(b);d.experimentConfig=d._clsSiteExperiments.getSiteExperimentByKey(d.key);d.enabled&&d.experimentConfig&&(d._choices=d.experimentConfig.variants,d._mappedChoices=d._mapChoices(),d._result=d.run(),b.setWeightedChoiceExperiment(d.abgroup,d._result,!0));return d}v(a,c);Object.defineProperty(a.prototype,"result",{get:function(){return this._result}, enumerable:!1,configurable:!0});a.prototype.run=function(){if(!this.enabled)return q.error("CLSTargetAdDensitySiteExperiment","run","() => %o","No experiment config found. Defaulting to control."),"control";var b=(new R(this._mappedChoices)).get();if(this._isValidResult(b))return b;q.error("CLSTargetAdDensitySiteExperiment","run","() => %o","Invalid result from experiment choices. Defaulting to control.");return"control"};a.prototype._mapChoices=function(){return this._choices.map(function(b){var d= b.value;return{weight:b.weight,choice:"number"===typeof d?(d||0)/100:"control"}})};I([na(),B("design:type",Function),B("design:paramtypes",[]),B("design:returntype",void 0)],a.prototype,"run",null);return a}(D),Za=function(c){function a(){var b=c.call(this)||this;b._result=!1;b.abgroup="scae";b.key="StickyContainerAds";b._choices=[{choice:!0},{choice:!1}];b.weight=.99;b._result=b.run();b.setExperimentKey();return b}v(a,c);Object.defineProperty(a.prototype,"result",{get:function(){return this._result}, enumerable:!1,configurable:!0});a.prototype.run=function(){return(new H(this.weight)).get()};return a=I([P("StickyContainerAdsExperiment"),B("design:paramtypes",[])],a)}(z),$a=function(c){function a(){var b=c.call(this)||this;b._result=!1;b.abgroup="scre";b.key="StickyContainerRecipe";b._choices=[{choice:!0},{choice:!1}];b.weight=.99;b._result=b.run();b.setExperimentKey();return b}v(a,c);Object.defineProperty(a.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0}); a.prototype.run=function(){return(new H(this.weight)).get()};return a=I([P("StickyContainerRecipeExperiment"),B("design:paramtypes",[])],a)}(z),cb=function(){function c(a,b){this._clsOptions=a;this._adInjectionMap=b;this._mainContentHeight=this._recipeCount=0;this._mainContentDiv=null;this._totalAvailableElements=[];this._minDivHeight=250;this._densityDevice=J.Desktop;this._pubLog={onePerViewport:!1,targetDensity:0,targetDensityUnits:0,combinedMax:0};this._densityMax=.99;this._smallerIncrementAttempts= 0;this._absoluteMinimumSpacingByDevice=250;this._usedAbsoluteMinimum=!1;this._infPageEndOffset=0;this.locationMaxLazySequence=new Map([["Recipe",5]]);this.locationToMinHeight={Below_Post:"250px",Content:"250px",Recipe:"250px",Sidebar:"250px"};b=this._clsOptions.siteAds.breakpoints;var d=b.tablet;var e=window.innerWidth;b=e>=b.desktop?"desktop":e>=d?"tablet":"phone";this._device=b;this._config=new Qa(a);this._clsOptions.enabledLocations=this._config.enabledLocations;this._clsTargetAdDensitySiteExperiment= this._clsOptions.siteAds.siteExperiments?new Ya(this._clsOptions):null;this._stickyContainerAdsExperiment=new Za;this._stickyContainerRecipeExperiment=new $a;this._removeRecipeCapExperiment=new Ta}c.prototype.start=function(){var a=this,b,d,e,f;try{Ra(this._device);var g=new Xa(this._clsOptions);if(g.enabled){var h=g.result,k=h.startsWith(".")?h.substring(1):h;if(/^[-_a-zA-Z]+[-_a-zA-Z0-9]*$/.test(k))try{document.body.classList.add(k)}catch(m){q.error("ClsDynamicAdsInjector","start","Uncaught CSS Class error: ".concat(m))}else q.error("ClsDynamicAdsInjector", "start","Invalid class name: ".concat(k))}var l=Pa(this._device,this._clsOptions.siteAds).filter(function(m){return a._locationEnabled(m)}).filter(function(m){return m.devices.includes(a._device)}).filter(function(m){return 0===m.pageSelector.length||null!==document.querySelector(m.pageSelector)}),p=this.inject(l);(null===(d=null===(b=this._clsOptions.siteAds.adOptions.stickyContainerConfig)||void 0===b?void 0:b.content)||void 0===d?0:d.enabled)&&this._stickyContainerAdsExperiment.result&&!la(this._clsOptions.siteAds.adOptions.stickyContainerConfig.blockedSelectors|| [])&&Sa(null===(f=null===(e=this._clsOptions.siteAds.adOptions.stickyContainerConfig)||void 0===e?void 0:e.content)||void 0===f?void 0:f.minHeight);p.forEach(function(m){return a._clsOptions.setInjectedSlots(m)})}catch(m){q.error("ClsDynamicAdsInjector","start",m)}};c.prototype.inject=function(a,b){void 0===b&&(b=document);this._densityDevice="desktop"===this._device?J.Desktop:J.Mobile;this._overrideDefaultAdDensitySettingsWithSiteExperiment();var d=this._clsOptions.siteAds,e=u(d.adDensityEnabled, !0),f=d.adDensityLayout&&e;d=a.filter(function(g){return f?"Content"!==g.location:g});a=a.filter(function(g){return f?"Content"===g.location:null});return w(w([],r(d.length?this._injectNonDensitySlots(d,b):[]),!1),r(a.length?this._injectDensitySlots(a,b):[]),!1)};c.prototype._injectNonDensitySlots=function(a,b){var d,e=this,f,g,h;void 0===b&&(b=document);var k=[],l=[];this._stickyContainerRecipeExperiment.result&&a.some(function(n){return"Recipe"===n.location&&n.sticky})&&!la((null===(f=this._clsOptions.siteAds.adOptions.stickyContainerConfig)|| void 0===f?void 0:f.blockedSelectors)||[])&&(f=this._clsOptions.siteAds.adOptions.stickyContainerConfig,f="phone"===this._device?null===(g=null===f||void 0===f?void 0:f.recipeMobile)||void 0===g?void 0:g.minHeight:null===(h=null===f||void 0===f?void 0:f.recipeDesktop)||void 0===h?void 0:h.minHeight,T("\n .adthrive-recipe.adthrive-sticky {\n position: -webkit-sticky;\n position: sticky !important;\n top: 42px !important;\n margin-top: 42px !important;\n }\n .adthrive-recipe-sticky-container {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n min-height:".concat(f? f:400,"px !important;\n margin: 10px 0 10px 0;\n background-color: #FAFAFA;\n padding-bottom:0px;\n }\n ")));try{for(var p=L(a),m=p.next();!m.done;m=p.next())this._insertNonDensityAds(m.value,k,l,b)}catch(n){var t={error:n}}finally{try{m&&!m.done&&(d=p.return)&&d.call(p)}finally{if(t)throw t.error;}}l.forEach(function(n){n.element.style.minHeight=e.locationToMinHeight[n.location]});return k};c.prototype._injectDensitySlots=function(a,b){void 0===b&&(b=document);try{this._calculateMainContentHeightAndAllElements(a, b)}catch(h){return[]}var d=this._getDensitySettings(a,b);a=d.onePerViewport;var e=d.targetAll,f=d.targetDensityUnits,g=d.combinedMax;d=d.numberOfUnits;this._absoluteMinimumSpacingByDevice=a?window.innerHeight:this._absoluteMinimumSpacingByDevice;if(!d)return[];this._adInjectionMap.filterUsed();this._findElementsForAds(d,a,e,g,f,b);return this._insertAds()};c.prototype._overrideDefaultAdDensitySettingsWithSiteExperiment=function(){var a;if(null===(a=this._clsTargetAdDensitySiteExperiment)||void 0=== a?0:a.enabled)a=this._clsTargetAdDensitySiteExperiment.result,"number"===typeof a&&(this._clsOptions.siteAds.adDensityEnabled=!0,this._clsOptions.siteAds.adDensityLayout[this._densityDevice].adDensity=a)};c.prototype._getDensitySettings=function(a,b){void 0===b&&(b=document);var d=this._clsOptions.siteAds.adDensityLayout,e=this._determineOverrides(d.pageOverrides);e=e.length?e[0]:d[this._densityDevice];d=this._clsOptions.getTargetDensity(e.adDensity);e=e.onePerViewport;var f=this._shouldTargetAllEligible(d), g=this._getTargetDensityUnits(d,f);a=this._getCombinedMax(a,b);b=Math.min.apply(Math,w([],r(w([this._totalAvailableElements.length,g],r(0<a?[a]:[]),!1)),!1));this._pubLog={onePerViewport:e,targetDensity:d,targetDensityUnits:g,combinedMax:a};return{onePerViewport:e,targetAll:f,targetDensityUnits:g,combinedMax:a,numberOfUnits:b}};c.prototype._determineOverrides=function(a){var b=this;return a.filter(function(d){var e=ea(d.pageSelector);return""===d.pageSelector||e.elements&&e.elements.length}).map(function(d){return d[b._densityDevice]})}; c.prototype._shouldTargetAllEligible=function(a){return a===this._densityMax};c.prototype._getTargetDensityUnits=function(a,b){return b?this._totalAvailableElements.length:Math.floor(a*this._mainContentHeight/(1-a)/this._minDivHeight)-this._recipeCount};c.prototype._getCombinedMax=function(a,b){void 0===b&&(b=document);return u(a.filter(function(d){try{var e=b.querySelector(d.elementSelector)}catch(f){}return e}).map(function(d){return Number(d.max)+Number(d.lazyMaxDefaulted?0:d.lazyMax)}).sort(function(d, e){return e-d})[0],0)};c.prototype._elementLargerThanMainContent=function(a){return a.offsetHeight>=this._mainContentHeight&&1<this._totalAvailableElements.length};c.prototype._elementDisplayNone=function(a){var b=window.getComputedStyle(a,null).display;return b&&"none"===b||"none"===a.style.display};c.prototype._isBelowMaxes=function(a,b){return this._adInjectionMap.map.length<a&&this._adInjectionMap.map.length<b};c.prototype._findElementsForAds=function(a,b,d,e,f,g){var h=this;void 0===g&&(g=document); this._clsOptions.targetDensityLog={onePerViewport:b,combinedMax:e,targetDensityUnits:f,targetDensityPercentage:this._pubLog.targetDensity,mainContentHeight:this._mainContentHeight,recipeCount:this._recipeCount,numberOfEls:this._totalAvailableElements.length};var k=function(l){var p;try{for(var m=L(h._totalAvailableElements),t=m.next();!t.done;t=m.next()){var n=t.value,x=n.dynamicAd,A=n.element;h._logDensityInfo(A,x.elementSelector,l);if(!(!d&&h._elementLargerThanMainContent(A)||h._elementDisplayNone(A)))if(h._isBelowMaxes(e, f))h._checkElementSpacing({dynamicAd:x,element:A,insertEvery:l,targetAll:d,target:g});else break}}catch(K){var F={error:K}}finally{try{t&&!t.done&&(p=m.return)&&p.call(m)}finally{if(F)throw F.error;}}!h._usedAbsoluteMinimum&&5>h._smallerIncrementAttempts&&(++h._smallerIncrementAttempts,k(h._getSmallerIncrement(l)))};a=this._getInsertEvery(a,b,f);k(a)};c.prototype._getSmallerIncrement=function(a){a*=.6;a<=this._absoluteMinimumSpacingByDevice&&(a=this._absoluteMinimumSpacingByDevice,this._usedAbsoluteMinimum= !0);return a};c.prototype._insertNonDensityAds=function(a,b,d,e){void 0===e&&(e=document);var f=0,g=0,h=0;0<a.spacing&&(g=f=window.innerHeight*a.spacing);for(var k=this._repeatDynamicAds(a),l=this.getElements(a.elementSelector,e),p=function(n){if(h+1>k.length)return"break";var x=l[n];if(0<f){n=qa(x).bottom;if(n<=g)return"continue";g=n+f}n=k[h];var A="".concat(n.location,"_").concat(n.sequence);b.some(function(ab){return ab.name===A})&&(h+=1);var F=m.getDynamicElementId(n),K=Q(a),bb=ka(a);K=w(["Sidebar"=== a.location&&a.sticky&&a.sequence&&5>=a.sequence?"adthrive-sticky-sidebar":"",m._stickyContainerRecipeExperiment.result&&"Recipe"===a.location&&a.sticky?"adthrive-recipe-sticky-container":"",K,bb],r(a.classNames),!1);if(x=m.addAd(x,F,a.position,K))F=ja(n,x),F.length&&(b.push({clsDynamicAd:a,dynamicAd:n,element:x,sizes:F,name:A,infinite:e!==document}),d.push({location:n.location,element:x}),"Recipe"===a.location&&++m._recipeCount,h+=1)},m=this,t=a.skip;t<l.length&&"break"!==p(t);t+=a.every);};c.prototype._insertAds= function(){var a=this,b=[];this._adInjectionMap.filterUsed();this._adInjectionMap.map.forEach(function(d,e){var f=d.el,g=d.dynamicAd;d=d.target;e=Number(g.sequence)+e;var h=g.max;h=g.lazy&&e>h;g.sequence=e;g.lazy=h;if(f=a._addContentAd(f,g,d))g.used=!0,b.push(f)});return b};c.prototype._getInsertEvery=function(a,b,d){this._moreAvailableElementsThanUnitsToInject(d,a)?(this._usedAbsoluteMinimum=!1,a=this._useWiderSpacing(d,a)):(this._usedAbsoluteMinimum=!0,a=this._useSmallestSpacing(b));return b&&window.innerHeight> a?window.innerHeight:a};c.prototype._useWiderSpacing=function(a,b){return this._mainContentHeight/Math.min(a,b)};c.prototype._useSmallestSpacing=function(a){return a&&window.innerHeight>this._absoluteMinimumSpacingByDevice?window.innerHeight:this._absoluteMinimumSpacingByDevice};c.prototype._moreAvailableElementsThanUnitsToInject=function(a,b){return this._totalAvailableElements.length>a||this._totalAvailableElements.length>b};c.prototype._logDensityInfo=function(a,b,d){a=this._pubLog;a.onePerViewport; a.targetDensity;a.combinedMax};c.prototype._checkElementSpacing=function(a){var b=a.dynamicAd,d=a.element,e=a.insertEvery,f=a.targetAll;a=a.target;a=void 0===a?document:a;(this._isFirstAdInjected()||this._hasProperSpacing(d,b,f,e))&&this._markSpotForContentAd(d,y({},b),a)};c.prototype._isFirstAdInjected=function(){return!this._adInjectionMap.map.length};c.prototype._markSpotForContentAd=function(a,b,d){void 0===d&&(d=document);this._adInjectionMap.add(a,this._getElementCoords(a,"beforebegin"===b.position|| "afterbegin"===b.position),b,d);this._adInjectionMap.sort()};c.prototype._hasProperSpacing=function(a,b,d,e){var f="beforebegin"===b.position||"afterbegin"===b.position;b="beforeend"===b.position||"afterbegin"===b.position;d=d||this._isElementFarEnoughFromOtherAdElements(a,e,f);f=b||this._isElementNotInRow(a,f);a=-1===a.id.indexOf("AdThrive_".concat("Below_Post"));return d&&f&&a};c.prototype._isElementFarEnoughFromOtherAdElements=function(a,b,d){a=this._getElementCoords(a,d);var e=!1;for(d=0;d<this._adInjectionMap.map.length&& !(e=this._adInjectionMap.map[d+1]&&this._adInjectionMap.map[d+1].coords,e=a-b>this._adInjectionMap.map[d].coords&&(!e||a+b<e));d++);return e};c.prototype._isElementNotInRow=function(a,b){var d=a.previousElementSibling,e=a.nextElementSibling;return(b=b?!d&&e||d&&a.tagName!==d.tagName?e:d:e)&&0===a.getBoundingClientRect().height?!0:b?a.getBoundingClientRect().top!==b.getBoundingClientRect().top:!0};c.prototype._calculateMainContentHeightAndAllElements=function(a,b){void 0===b&&(b=document);a=r(ya(a, this._adInjectionMap,b),2);b=a[1];this._mainContentDiv=a[0];this._totalAvailableElements=b;a=this._mainContentDiv;b=void 0;void 0===b&&(b="div #comments, section .comments");this._mainContentHeight=(b=a.querySelector(b))?a.offsetHeight-b.offsetHeight:a.offsetHeight};c.prototype._getElementCoords=function(a,b){void 0===b&&(b=!1);a=a.getBoundingClientRect();return(b?a.top:a.bottom)+window.scrollY};c.prototype._addContentAd=function(a,b,d){var e,f;void 0===d&&(d=document);var g=null,h=Q(b),k=ka(b),l= (null===(f=null===(e=this._clsOptions.siteAds.adOptions.stickyContainerConfig)||void 0===e?void 0:e.content)||void 0===f?0:f.enabled)&&this._stickyContainerAdsExperiment.result?"adthrive-sticky-container":"";if(a=this.addAd(a,this.getDynamicElementId(b),b.position,w([l,h,k],r(b.classNames),!1)))e=ja(b,a),e.length&&(a.style.minHeight=this.locationToMinHeight[b.location],g="".concat(b.location,"_").concat(b.sequence),g={clsDynamicAd:b,dynamicAd:b,element:a,sizes:e,name:g,infinite:d!==document});return g}; c.prototype.getDynamicElementId=function(a){return"".concat("AdThrive","_").concat(a.location,"_").concat(a.sequence,"_").concat(this._device)};c.prototype.getElements=function(a,b){void 0===b&&(b=document);return b.querySelectorAll(a)};c.prototype.addAd=function(a,b,d,e){void 0===e&&(e=[]);document.getElementById(b)||(e='<div id="'.concat(b,'" class="adthrive-ad ').concat(e.join(" "),'"></div>'),a.insertAdjacentHTML(d,e));return document.getElementById(b)};c.prototype._repeatDynamicAds=function(a){var b= [],d=this._removeRecipeCapExperiment.result&&"Recipe"===a.location?99:this.locationMaxLazySequence.get(a.location),e=a.lazy?u(d,0):0;d=a.max;var f=a.lazyMax;e=Math.max(d,0===e&&a.lazy?d+f:Math.min(Math.max(e-a.sequence+1,0),d+f));for(f=0;f<e;f++){var g=Number(a.sequence)+f,h=a.lazy&&f>=d;b.push(y(y({},a),{sequence:g,lazy:h}))}return b};c.prototype._locationEnabled=function(a){a=this._clsOptions.enabledLocations.includes(a.location);var b=this._clsOptions.disableAds&&this._clsOptions.disableAds.all|| document.body.classList.contains("adthrive-disable-all"),d=!document.body.classList.contains("adthrive-disable-content")&&!this._clsOptions.disableAds.reasons.has("content_plugin");return a&&!b&&d};return c}(),db=function(c){function a(b,d){var e=c.call(this,b,"ClsVideoInsertion")||this;e._videoConfig=b;e._clsOptions=d;e._IN_POST_SELECTOR=".adthrive-video-player";e._WRAPPER_BAR_HEIGHT=36;e._playersAddedFromPlugin=[];d.removeVideoTitleWrapper&&(e._WRAPPER_BAR_HEIGHT=0);return e}v(a,c);a.prototype.init= function(){this._initializePlayers()};a.prototype._wrapJWPlayerWithCLS=function(b,d,e){void 0===e&&(e=0);return b.parentNode?(d=this._createGenericCLSWrapper(.5625*b.offsetWidth,d,e),b.parentNode.insertBefore(d,b),d.appendChild(b),d):null};a.prototype._createGenericCLSWrapper=function(b,d,e){var f=document.createElement("div");f.id="cls-video-container-".concat(d);f.className="adthrive";f.style.minHeight="".concat(b+e,"px");return f};a.prototype._getTitleHeight=function(b){b.innerText="Title";b.style.visibility= "hidden";document.body.appendChild(b);var d=window.getComputedStyle(b),e=parseInt(d.height,10),f=parseInt(d.marginTop,10);d=parseInt(d.marginBottom,10);document.body.removeChild(b);return Math.min(e+d+f,50)};a.prototype._initializePlayers=function(){var b=document.querySelectorAll(this._IN_POST_SELECTOR);b.length&&this._initializeRelatedPlayers(b);this._shouldRunAutoplayPlayers()&&this._determineAutoplayPlayers()};a.prototype._createStationaryRelatedPlayer=function(b,d,e){var f="mobile"===this._device? [400,225]:[640,360],g=G.Video_In_Post_ClicktoPlay_SoundOn;d&&b.mediaOrPlaylistId&&(e="".concat(b.mediaOrPlaylistId,"_").concat(e),d=this._wrapJWPlayerWithCLS(d,e),this._playersAddedFromPlugin.push(b.mediaOrPlaylistId),d&&this._clsOptions.setInjectedVideoSlots({playerId:b.playerId,playerName:g,playerSize:f,element:d,type:"stationaryRelated"}))};a.prototype._createStickyRelatedPlayer=function(b,d){var e="mobile"===this._device?[400,225]:[640,360],f=G.Video_Individual_Autoplay_SOff;this._stickyRelatedOnPage= !0;this._videoConfig.mobileStickyPlayerOnPage="mobile"===this._device;if(d&&b.position&&b.mediaId){var g=document.createElement("div");d.insertAdjacentElement(b.position,g);d=document.createElement("h3");d.style.margin="10px 0";d=this._getTitleHeight(d);d=this._wrapJWPlayerWithCLS(g,b.mediaId,this._WRAPPER_BAR_HEIGHT+d);this._playersAddedFromPlugin.push(b.mediaId);d&&this._clsOptions.setInjectedVideoSlots({playlistId:b.playlistId,playerId:b.playerId,playerSize:e,playerName:f,element:g,type:"stickyRelated"})}}; a.prototype._createPlaylistPlayer=function(b,d){var e=b.playlistId,f="mobile"===this._device?G.Video_Coll_SOff_Smartphone:G.Video_Collapse_Autoplay_SoundOff,g="mobile"===this._device?[400,225]:[640,360];this._videoConfig.mobileStickyPlayerOnPage=!0;var h=document.createElement("div");d.insertAdjacentElement(b.position,h);d=this._wrapJWPlayerWithCLS(h,e,this._WRAPPER_BAR_HEIGHT);this._playersAddedFromPlugin.push("playlist-".concat(e));d&&this._clsOptions.setInjectedVideoSlots({playlistId:b.playlistId, playerId:b.playerId,playerSize:g,playerName:f,element:h,type:"stickyPlaylist"})};a.prototype._isVideoAllowedOnPage=function(){var b=this._clsOptions.disableAds;if(b&&b.video){var d="";b.reasons.has("video_tag")?d="video tag":b.reasons.has("video_plugin")?d="video plugin":b.reasons.has("video_page")&&(d="command queue");q.error(d?"ClsVideoInsertionMigrated":"ClsVideoInsertion","isVideoAllowedOnPage",Error("DBP: Disabled by publisher via ".concat(d||"other")));return!1}return this._clsOptions.videoDisabledFromPlugin? !1:!0};return a}(function(c){function a(b,d){var e=c.call(this)||this;e._videoConfig=b;e._component=d;e._stickyRelatedOnPage=!1;e._relatedMediaIds=[];e._device=ta()?"desktop":"mobile";e._potentialPlayerMap=e.setPotentialPlayersMap();return e}v(a,c);a.prototype.setPotentialPlayersMap=function(){var b=this._videoConfig.players||[],d=this._filterPlayerMap();b=b.filter(function(e){return"stationaryRelated"===e.type&&e.enabled});d.stationaryRelated=b;return this._potentialPlayerMap=d};a.prototype._filterPlayerMap= function(){var b=this,d=this._videoConfig.players,e={stickyRelated:[],stickyPlaylist:[],stationaryRelated:[]};return d&&d.length?d.filter(function(f){var g;return null===(g=f.devices)||void 0===g?void 0:g.includes(b._device)}).reduce(function(f,g){f[g.type]||(q.event(b._component,"constructor","Unknown Video Player Type detected",g.type),f[g.type]=[]);g.enabled&&f[g.type].push(g);return f},e):e};a.prototype._checkPlayerSelectorOnPage=function(b){var d=this;b=this._potentialPlayerMap[b].map(function(e){return{player:e, playerElement:d._getPlacementElement(e)}});return b.length?b[0]:{player:null,playerElement:null}};a.prototype._getOverrideElement=function(b,d,e){b&&d?(e=document.createElement("div"),d.insertAdjacentElement(b.position,e)):(d=this._checkPlayerSelectorOnPage("stickyPlaylist"),b=d.player,d=d.playerElement,b&&d&&(e=document.createElement("div"),d.insertAdjacentElement(b.position,e)));return e};a.prototype._shouldOverrideElement=function(b){b=b.getAttribute("override-embed");return"true"===b||"false"=== b?"true"===b:this._videoConfig.relatedSettings?this._videoConfig.relatedSettings.overrideEmbedLocation:!1};a.prototype._checkPageSelector=function(b,d,e){void 0===e&&(e=[]);return b&&d&&0===e.length?("/"!==window.location.pathname&&q.event("VideoUtils","getPlacementElement",Error("PSNF: ".concat(b," does not exist on the page"))),!1):!0};a.prototype._getElementSelector=function(b,d,e){if(d&&d.length>e)return d[e];q.event("VideoUtils","getPlacementElement",Error("ESNF: ".concat(b," does not exist on the page"))); return null};a.prototype._getPlacementElement=function(b){var d=b.pageSelector,e=b.elementSelector;b=b.skip;var f=ea(d),g=f.valid,h=f.elements;f=S(f,["valid","elements"]);var k=da(e),l=k.valid,p=k.elements;k=S(k,["valid","elements"]);return""===d||g?l?this._checkPageSelector(d,g,h)?this._getElementSelector(e,p,b)||null:null:(q.error("VideoUtils","getPlacementElement",Error("".concat(e," is not a valid selector")),k),null):(q.error("VideoUtils","getPlacementElement",Error("".concat(d," is not a valid selector")), f),null)};a.prototype._getEmbeddedPlayerType=function(b){(b=b.getAttribute("data-player-type"))&&"default"!==b||(b=this._videoConfig.relatedSettings?this._videoConfig.relatedSettings.defaultPlayerType:"static");this._stickyRelatedOnPage&&(b="static");return b};a.prototype._getMediaId=function(b){return(b=b.getAttribute("data-video-id"))?(this._relatedMediaIds.push(b),b):!1};a.prototype._createRelatedPlayer=function(b,d,e,f){"collapse"===d?this._createCollapsePlayer(b,e):"static"===d&&this._createStaticPlayer(b, e,f)};a.prototype._createCollapsePlayer=function(b,d){var e=this._checkPlayerSelectorOnPage("stickyRelated"),f=e.player;e=e.playerElement;var g=f?f:this._potentialPlayerMap.stationaryRelated[0];g&&g.playerId?(this._shouldOverrideElement(d)&&(d=this._getOverrideElement(f,e,d)),d=document.querySelector("#cls-video-container-".concat(b," > div"))||d,this._createStickyRelatedPlayer(y(y({},g),{mediaId:b}),d)):q.error(this._component,"_createCollapsePlayer","No video player found")};a.prototype._createStaticPlayer= function(b,d,e){this._potentialPlayerMap.stationaryRelated.length&&this._potentialPlayerMap.stationaryRelated[0].playerId?this._createStationaryRelatedPlayer(y(y({},this._potentialPlayerMap.stationaryRelated[0]),{mediaOrPlaylistId:b}),d,e):q.error(this._component,"_createStaticPlayer","No video player found")};a.prototype._shouldRunAutoplayPlayers=function(){return this._isVideoAllowedOnPage()&&(this._potentialPlayerMap.stickyRelated.length||this._potentialPlayerMap.stickyPlaylist.length)?!0:!1}; a.prototype._determineAutoplayPlayers=function(){var b=this._component,d="VideoManagerComponent"===b,e=this._config;if(this._stickyRelatedOnPage)q.event(b,"stickyRelatedOnPage",d&&{device:e&&e.context.device,isDesktop:this._device}||{});else{var f=this._checkPlayerSelectorOnPage("stickyPlaylist"),g=f.player;f=f.playerElement;g&&g.playerId&&g.playlistId&&f?this._createPlaylistPlayer(g,f):q.event(b,"noStickyPlaylist",d&&{vendor:"none",device:e&&e.context.device,isDesktop:this._device}||{})}};a.prototype._initializeRelatedPlayers= function(b){for(var d=new Map,e=0;e<b.length;e++){var f=b[e],g=f.offsetParent,h=this._getEmbeddedPlayerType(f),k=this._getMediaId(f);g&&k&&(g=(d.get(k)||0)+1,d.set(k,g),this._createRelatedPlayer(k,h,f,g))}};return a}(function(){function c(){}Object.defineProperty(c.prototype,"enabled",{get:function(){return!0},enumerable:!1,configurable:!0});return c}())),eb=function(c){function a(){return null!==c&&c.apply(this,arguments)||this}v(a,c);return a}(function(){function c(){this._map=[]}c.prototype.add= function(a,b,d,e){void 0===e&&(e=document);this._map.push({el:a,coords:b,dynamicAd:d,target:e})};Object.defineProperty(c.prototype,"map",{get:function(){return this._map},enumerable:!1,configurable:!0});c.prototype.sort=function(){this._map.sort(function(a,b){return a.coords-b.coords})};c.prototype.filterUsed=function(){this._map=this._map.filter(function(a){return!a.dynamicAd.used})};c.prototype.reset=function(){this._map=[]};return c}());try{(function(){var c=new fa;c&&c.enabled&&((new cb(c,new eb)).start(), (new db(new Fa(c),c)).init())})()}catch(c){q.error("CLS","pluginsertion-iife",c),window.adthriveCLS&&(window.adthriveCLS.injectedFromPlugin=!1)}})() </script><script data-no-optimize="1" data-cfasync="false">(function () {var clsElements = document.querySelectorAll("script[id^='cls-']"); window.adthriveCLS && clsElements && clsElements.length === 0 ? window.adthriveCLS.injectedFromPlugin = false : ""; })();</script><link rel='stylesheet' id='e-animations-css' href='https://www.devx.com/wp-content/plugins/elementor/assets/lib/animations/animations.min.css?ver=3.20.4' type='text/css' media='all' /> <script type="text/javascript" id="wpil-frontend-script-js-extra"> /* <![CDATA[ */ var wpilFrontend = {"ajaxUrl":"\/wp-admin\/admin-ajax.php","postId":"10987","postType":"post","openInternalInNewTab":"0","openExternalInNewTab":"0","disableClicks":"0","openLinksWithJS":"0","trackAllElementClicks":"0","clicksI18n":{"imageNoText":"Image in link: No Text","imageText":"Image Title: ","noText":"No Anchor Text Found"}}; /* ]]> */ </script> <script type="text/javascript" src="https://www.devx.com/wp-content/plugins/link-whisper-premium/js/frontend.min.js?ver=1712228365" id="wpil-frontend-script-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-content/themes/devxnew/assets/js/hello-frontend.min.js?ver=1.0.0" id="hello-theme-frontend-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor-pro/assets/lib/smartmenus/jquery.smartmenus.min.js?ver=1.0.1" id="smartmenus-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-includes/js/imagesloaded.min.js?ver=5.0.0" id="imagesloaded-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver=3.12.3" id="elementor-pro-webpack-runtime-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=3.20.4" id="elementor-webpack-runtime-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.20.4" id="elementor-frontend-modules-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-includes/js/dist/hooks.min.js?ver=2810c76e705dd1a53b18" id="wp-hooks-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-includes/js/dist/i18n.min.js?ver=5e580eb46a90c2b997e6" id="wp-i18n-js"></script> <script type="text/javascript" id="wp-i18n-js-after"> /* <![CDATA[ */ wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); /* ]]> */ </script> <script type="text/javascript" id="elementor-pro-frontend-js-before"> /* <![CDATA[ */ var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/www.devx.com\/wp-admin\/admin-ajax.php","nonce":"1bd25dcc68","urls":{"assets":"https:\/\/www.devx.com\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/www.devx.com\/wp-json\/"},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"}},"facebook_sdk":{"lang":"en_US","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/www.devx.com\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}}; /* ]]> */ </script> <script type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=3.12.3" id="elementor-pro-frontend-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor/assets/lib/waypoints/waypoints.min.js?ver=4.0.2" id="elementor-waypoints-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3" id="jquery-ui-core-js"></script> <script type="text/javascript" id="elementor-frontend-js-before"> /* <![CDATA[ */ var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnTwitter":"Share on Twitter","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close","a11yCarouselWrapperAriaLabel":"Carousel | Horizontal scrolling: Arrow Left & Right","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}}},"version":"3.20.4","is_static":false,"experimentalFeatures":{"e_optimized_assets_loading":true,"e_optimized_css_loading":true,"additional_custom_breakpoints":true,"e_swiper_latest":true,"theme_builder_v2":true,"hello-theme-header-footer":true,"block_editor_assets_optimize":true,"ai-layout":true,"landing-pages":true,"e_image_loading_optimization":true,"page-transitions":true,"notes":true,"loop":true,"form-submissions":true,"e_scroll_snap":true},"urls":{"assets":"https:\/\/www.devx.com\/wp-content\/plugins\/elementor\/assets\/"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"body_background_background":"classic","active_breakpoints":["viewport_mobile","viewport_tablet"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description","hello_header_logo_type":"logo","hello_header_menu_layout":"horizontal","hello_footer_logo_type":"logo"},"post":{"id":10987,"title":"Roll%20Your%20Own%20Swing-based%20XML%20Editor%20%28Part%20I%29%20-%20DevX","excerpt":"","featuredImage":"https:\/\/www.devx.com\/wp-content\/uploads\/2022\/02\/thumbnail.jpg"}}; /* ]]> */ </script> <script type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=3.20.4" id="elementor-frontend-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=3.12.3" id="pro-elements-handlers-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=3.12.3" id="e-sticky-js"></script> <script>!function(){"use strict";!function(e){if(-1===e.cookie.indexOf("__adblocker")){e.cookie="__adblocker=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";var t=new XMLHttpRequest;t.open("GET","https://ads.adthrive.com/abd/abd.js",!0),t.onreadystatechange=function(){if(XMLHttpRequest.DONE===t.readyState)if(200===t.status){var a=e.createElement("script");a.innerHTML=t.responseText,e.getElementsByTagName("head")[0].appendChild(a)}else{var n=new Date;n.setTime(n.getTime()+3e5),e.cookie="__adblocker=true; expires="+n.toUTCString()+"; path=/"}},t.send()}}(document)}(); </script><script>!function(){"use strict";var e;e=document,function(){var t,n;function r(){var t=e.createElement("script");t.src="https://cafemedia-com.videoplayerhub.com/galleryplayer.js",e.head.appendChild(t)}function a(){var t=e.cookie.match("(^|[^;]+)\\s*__adblocker\\s*=\\s*([^;]+)");return t&&t.pop()}function c(){clearInterval(n)}return{init:function(){var e;"true"===(t=a())?r():(e=0,n=setInterval((function(){100!==e&&"false"!==t||c(),"true"===t&&(r(),c()),t=a(),e++}),50))}}}().init()}(); </script> </body> </html> <!-- Dynamic page generated in 6.909 seconds. --> <!-- Cached page generated by WP-Super-Cache on 2024-07-27 00:25:12 --> <!-- Compression = gzip -->