Files
nexus/sreweekly/articles/120/04-gremlin-s-tammy-bütow-on-the-business-side-of-chaos-engineering.html
2026-09-12 17:23:01 +08:00

9859 lines
1.2 MiB
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en-US">
<head>
<!-- Preconnects and Prefetches -->
<link rel="preconnect" href="https://cdn.thenewstack.io">
<link rel="dns-prefetch" href="https://cdn.thenewstack.io">
<link rel="preconnect" href="https://www.googletagmanager.com">
<link rel="dns-prefetch" href="https://www.googletagmanager.com">
<link rel="preconnect" href="https://www.google-analytics.com">
<link rel="dns-prefetch" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://gstatic.com">
<link rel="dns-prefetch" href="https://gstatic.com">
<link rel="preconnect" href="https://google.com">
<link rel="dns-prefetch" href="https://google.com">
<link rel="preconnect" href="https://pagead2.googlesyndication.com">
<link rel="dns-prefetch" href="https://pagead2.googlesyndication.com">
<link rel="preconnect" href="https://securepubads.g.doubleclick.net">
<link rel="dns-prefetch" href="https://securepubads.g.doubleclick.net">
<link rel="preconnect" href="https://static.cloudflareinsights.com">
<link rel="dns-prefetch" href="https://static.cloudflareinsights.com">
<link rel="preconnect" href="https://connect.facebook.net">
<link rel="dns-prefetch" href="https://connect.facebook.net">
<link rel="preconnect" href="https://snap.licdn.com">
<link rel="dns-prefetch" href="https://snap.licdn.com">
<link rel="preconnect" href="https://challenges.cloudflare.com">
<link rel="dns-prefetch" href="https://challenges.cloudflare.com">
<link rel="preconnect" href="https://www.clarity.ms">
<link rel="dns-prefetch" href="https://www.clarity.ms">
<link rel="preconnect" href="https://bat.bing.com">
<link rel="dns-prefetch" href="https://bat.bing.com">
<link rel="preconnect" href="https://analytics.twitter.com">
<link rel="dns-prefetch" href="https://analytics.twitter.com">
<link rel="preconnect" href="https://static.trueanthem.com">
<link rel="dns-prefetch" href="https://static.trueanthem.com">
<link rel="preconnect" href="https://js.hs-scripts.com">
<link rel="dns-prefetch" href="https://js.hs-scripts.com">
<!-- BlueConic -->
<script src="https://v923.thenewstack.io/script.js"></script>
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
categories : 'cloud-native,containers,microservices'
});
</script>
<!-- Google Tag Manager (Container ID: GTM-NJH9PKQS) -->
<script>window.dataLayer = window.dataLayer || [];</script>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.setAttributeNode(d.createAttribute('data-ot-ignore'));
j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-NJH9PKQS');</script>
<!-- End Google Tag Manager -->
<script>
(function() {
try {
/// Ensure dataLayer exists
window.dataLayer = window.dataLayer || [];
/// Preserve original push
var originalPush = window.dataLayer.push.bind(window.dataLayer);
var tnsCategories = 'cloud-native,containers,microservices';
function readCookie(key) {
try {
/// Prefer site utility if available
if (window.tns && typeof window.tns.getCookie === 'function') {
return window.tns.getCookie(key);
}
/// Fallback cookie read
var match = document.cookie
.split('; ')
.find(function(row) { return row.indexOf(key + '=') === 0; });
return match ? match.split('=')[1] : undefined;
} catch (e) {
return undefined;
}
}
function attachUserIdToItem(item) {
try {
if (item && typeof item === 'object' && !Array.isArray(item)) {
var uid = readCookie('tns-user-id');
if (uid && item.user_id == null) {
item.user_id = uid;
}
}
} catch (e) {
/// noop
}
return item;
}
function attachCategoriesToItem(item) {
try {
if (item && typeof item === 'object' && !Array.isArray(item)) {
if (tnsCategories && item.categories == null) {
item.categories = tnsCategories;
}
}
} catch (e) {
/// noop
}
return item;
}
/// Wrap dataLayer.push to auto-attach user_id and categories when available
window.dataLayer.push = function() {
var args = Array.prototype.slice.call(arguments);
for (var i = 0; i < args.length; i++) {
args[i] = attachCategoriesToItem(attachUserIdToItem(args[i]));
}
return originalPush.apply(window.dataLayer, args);
};
/// Push current user_id state early so GTM variables can read it
function pushUserIdState() {
var uid = readCookie('tns-user-id');
if (uid) {
/// Use originalPush to avoid re-wrapping
originalPush({ user_id: uid });
}
}
/// Attempt immediately and on DOMContentLoaded
pushUserIdState();
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', pushUserIdState);
}
} catch (err) {
/// Fail closed: never block the page or GTM
// console.warn('[TNS] dataLayer user_id wrapper error', err);
}
})();
</script>
<meta name="x-tns-path" content="/introduction-to-cloud-native-computing/">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Key Imagery Preloads -->
<link rel="preload" href="https://cdn.thenewstack.io/media/2025/03/9d9aabe3-intro-to-cloud-native-computing--1024x585.png" as="image">
<link rel="profile" href="//gmpg.org/xfn/11">
<link rel="pingback" href="https://thenewstack.io/xmlrpc.php">
<style>
*{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html,body,main,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}ul,ol{margin-left:40px}textarea,select,input[type="date"],input[type="datetime"],input[type="datetime-local"],input[type="email"],input[type="month"],input[type="number"],input[type="password"],input[type="search"],input[type="tel"],input[type="text"],input[type="time"],input[type="url"],input[type="week"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-background-clip:padding;-moz-background-clip:padding;-webkit-background-clip:padding;-moz-background-clip:padding;background-clip:padding-box;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;-webkit-appearance:none;-moz-appearance:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;color:#000;outline:0;margin:0;padding:0;text-align:left;vertical-align:middle}div,main,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{display:block;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;background:#eae9e5}body{display:block;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:16px;font-weight:500;line-height:133%;letter-spacing:.5px;color:#142640;-webkit-font-smoothing:subpixel-antialiased;-webkit-backface-visibility:hidden;-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow-x:hidden;overflow-y:auto}main,div{display:block;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}p{margin-bottom:18px}h1{font-size:60px;line-height:90%;margin-bottom:24px}@media (max-width:767px){h1{font-size:50px}}@media (max-width:413px){h1{font-size:40px}}h2{font-size:42px;line-height:100%;letter-spacing:1px;margin-bottom:20px}h3{font-size:21px;line-height:90%;margin-bottom:15px}h4{font-size:16px;line-height:120%;margin-bottom:15px}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}img{display:block;position:relative}pre{font-family:'Courier New',monospace;font-weight:bold;font-size:15px}.clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.clearfix{display:inline-block}* html .clearfix{height:1%}.clearfix{display:block}:focus{outline-color:transparent;outline-style:none}.greyscale{-webkit-filter:grayscale(100%);filter:grayscale(100%)}strong{font-weight:bold}em{font-style:italic}img{max-width:100%}.tns-gradient-blue{background:#05aef4;background:-webkit-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-moz-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-o-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-ms-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:linear-gradient(145deg, #05aef4 0%, #4bc8fa 100%)}.tns-gradient-blue-dark{background:#6dd5ff;background:-webkit-linear-gradient(0deg, #6dd5ff 0%, #138bb6 100%);background:-moz-linear-gradient(0deg, #6dd5ff 0%, #138bb6 100%);background:-o-linear-gradient(0deg, #6dd5ff 0%, #138bb6 100%);background:-ms-linear-gradient(0deg, #6dd5ff 0%, #138bb6 100%);background:linear-gradient(90deg, #6dd5ff 0%, #138bb6 100%)}.tns-gradient-pink{background:#ff3287;background:-webkit-linear-gradient(280deg, #ff3287 0%, #f27866 100%);background:-moz-linear-gradient(280deg, #ff3287 0%, #f27866 100%);background:-o-linear-gradient(280deg, #ff3287 0%, #f27866 100%);background:-ms-linear-gradient(280deg, #ff3287 0%, #f27866 100%);background:linear-gradient(170deg, #ff3287 0%, #f27866 100%)}h1{display:block;font-size:36px;margin-bottom:10px}h2{display:block;font-size:21px;font-weight:700;line-height:1.33;margin-bottom:10px}@media (max-width:599px){h2{font-size:24px}}h3{display:block;font-size:17px;font-weight:700;line-height:1.33;margin-top:12px;margin-bottom:7px}h4{display:block;font-size:15px;font-weight:700;margin-top:10px;margin-bottom:7px}p{font-size:17px;line-height:1.45;letter-spacing:.3px;margin-bottom:30px}@media (max-width:599px){p{font-size:20px}}b{font-weight:700}hr{margin-bottom:25px}ul,ol{font-size:16px;margin-bottom:30px}li{margin-bottom:10px}a{color:#ff3287;text-decoration:none}a:hover{color:#01aff4}blockquote{margin-top:30px;border-top:1px solid #01aff4;padding-top:25px;padding-bottom:25px;border-bottom:1px solid #01aff4;margin-bottom:30px}blockquote p{font-size:21px;color:#01aff4;margin-bottom:0}.quote-attribution{margin-top:-23px;color:#01aff4;font-size:14px;margin-bottom:23px}.wp-caption{min-width:100%;max-width:100%}p.attribution{color:#a5a9b0;font-size:12px}p.attribution a{color:#01aff4}p.attribution a:hover{color:#ff3287}code,pre{padding:3px 5px 3px 5px;color:#032f62;font-family:'courier new',courier,monospace;font-size:15px;font-weight:600;background:#eaeff3}body .syntaxhighlighter a,body .syntaxhighlighter div,body .syntaxhighlighter code,body .syntaxhighlighter table,body .syntaxhighlighter table td,body .syntaxhighlighter table tr,body .syntaxhighlighter table tbody,body .syntaxhighlighter table thead,body .syntaxhighlighter table caption,body .syntaxhighlighter textarea{font-family:'courier new',courier,monospace !important}.section-heading{display:block;color:#3c3c3c;font-size:14px;line-height:1.33;font-weight:700;text-transform:uppercase;border-top:solid 1px #3c3c3c;padding-top:7px;margin-bottom:20px}.section-heading-sidebar{font-size:13px;margin-bottom:15px}.media-direct-link{display:none !important}.podcast-embed-subscription-links{display:none !important}ul.page-numbers{list-style-type:none}ul.page-numbers li{display:inline-block}ul.page-numbers span{display:inline-block;font-size:21px;color:#ff3287;margin-right:7px}ul.page-numbers span.page-numbers.dots{color:#a5a9b0}ul.page-numbers a{display:inline-block;font-size:21px;color:#01aff4;margin-right:7px}ul.page-numbers a:hover{color:#ff3287}.post-categories{padding-top:3px;font-size:9px;color:#a5a9b0;color:#18191d;font-weight:400;line-height:1;text-transform:uppercase;letter-spacing:1.2px;margin-bottom:2px}.post-title{display:block;color:#3c3c3c;font-size:16px;line-height:1.3;text-decoration:none;margin-bottom:3px}.post-byline{margin-bottom:4px}.post-byline .post-date,.post-byline .post-author{color:#a5a9b0;font-size:10px;letter-spacing:1.2px;line-height:1;vertical-align:middle;text-transform:uppercase}.post-byline .post-date a,.post-byline .post-author a{text-decoration:none}.post-byline .post-date{margin-bottom:3px}.sponsored-badge{font-size:9px;color:#111215;font-weight:400;line-height:1;text-transform:uppercase;letter-spacing:1.2px}html{background:#fff}body{background:#fff}.content{display:block;width:100%}.content-column{display:block;width:100%;max-width:1260px;padding:0 30px 0 30px;margin:0 auto 0 auto}.row{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}.col{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:100%;max-width:100%}.col-90{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:90%;max-width:90%}.col-80{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:80%;max-width:80%}.col-75{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:75%;max-width:75%}.col-70{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:70%;max-width:70%}.col-66{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:66.666%;max-width:66.666%}.col-60{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:60%;max-width:60%}.col-50{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:50%;max-width:50%}.col-40{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:40%;max-width:40%}.col-33{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:33.333%;max-width:33.333%}.col-30{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:30%;max-width:30%}.col-25{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:25%;max-width:25%}.col-20{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:20%;max-width:20%}.col-15{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:15%;max-width:15%}.col-10{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:10%;max-width:10%}.youtube-embed-wrapper{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;background:#f6f8fa}.youtube-embed-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%}.table-scroll-wrap{width:100%;overflow:hidden;overflow-x:auto;margin-bottom:30px;border:1px solid #a5a9b0}.table-scroll-wrap table{min-width:100%}.table-scroll-wrap table thead{position:relative}.table-scroll-wrap table thead th{min-width:120px;border:1px solid #a5a9b0;border-top:0;text-align:left;padding:5px;background:#f6f8fa}.table-scroll-wrap table thead th:first-child{border-left:0}.table-scroll-wrap table thead th:last-child{border-right:0}.table-scroll-wrap table tbody{position:relative}.table-scroll-wrap table tbody tr:first-child td{border-top:0}.table-scroll-wrap table tbody tr:last-child td{border-bottom:0}.table-scroll-wrap table tbody td{min-width:120px;font-size:14px;line-height:120%;padding:5px;border:1px solid #a5a9b0}.table-scroll-wrap table tbody td:first-child{border-left:0}.table-scroll-wrap table tbody td:last-child{border-right:0}.table-scroll-wrap table tbody tr.crayon-row td{min-width:0}input[type="text"],input[type="email"]{position:relative;display:block;width:100%;height:40px;color:#3c3c3c;font-size:16px;letter-spacing:.7px;padding-left:14px;margin-bottom:20px;border:1px solid #ff3287}input[type="text"]::placeholder,input[type="email"]::placeholder{font-size:16px;color:#a5a9b0}textarea{width:100%;min-height:150px;padding:10px;font-size:16px;resize:none}input[type="submit"],button,.tns-button{position:relative;display:block;width:100%;height:40px;color:#fff;font-size:18px;font-weight:500;line-height:35px;text-align:center;padding:none;border:none;border-radius:5px;background-color:#ff3287;cursor:pointer}input[type="submit"]:hover,button:hover,.tns-button:hover{background-color:#01aff4}.button-pill-wrap{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}.button-pill{display:inline-block;margin:0 auto 0 auto;padding-left:15px;padding-right:15px;height:20px;color:#111215;font-size:12px;line-height:20px;font-weight:700;text-align:center;background:#eaeff3;border-radius:10px;cursor:pointer}.button-pill:hover{color:#ff3287}@media (max-width:767px){.button-pill{font-size:15px}}.button-spinner{margin-top:9px;border:2px solid rgba(255,255,255,0.33);border-top:2px solid #fff;border-radius:50%;width:20px;height:20px;-webkit-animation:buttonspinner 333ms linear infinite;-moz-animation:buttonspinner 333ms linear infinite;-o-animation:buttonspinner 333ms linear infinite;-ms-animation:buttonspinner 333ms linear infinite;animation:buttonspinner 333ms linear infinite;display:inline-block}@-moz-keyframes buttonspinner{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes buttonspinner{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes buttonspinner{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes buttonspinner{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}#tns-subscribe-popover-screen{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.93);z-index:8000;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);display:none}#tns-subscribe-popover-screen #tns-subscribe-popover{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:100%;max-width:375px;height:auto;background:#fff;border-radius:5px;z-index:8001;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);display:none}@media (max-width:499px){#tns-subscribe-popover-screen #tns-subscribe-popover{max-width:80%}}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-subscribe-popover-title{position:relative;width:100%;height:40px;line-height:40px;padding-left:20px;color:#3c3c3c;font-size:14px;font-weight:700;text-transform:uppercase;border-bottom:1px solid #a5a9b0}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-subscribe-popover-close{position:absolute;top:7px;right:11px;width:12px;cursor:pointer;z-index:2}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-subscribe-popover-close svg{width:100%;height:auto;fill:#fff;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50)}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-subscribe-popover-close:hover svg{opacity:1;-ms-filter:none;filter:none}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-subscribe-popover-content{position:relative;width:100%;min-height:60px;padding:20px;color:#3c3c3c;font-size:15px}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-subscribe-popover-buttons{position:relative;width:100%;height:60px;padding:10px}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-promo-daily{margin-top:0;max-width:100%}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-promo-daily .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-promo-daily .row .col{min-width:100%;max-width:100%}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-promo-daily .banner .title{margin-bottom:10px}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-promo-daily .banner .copy{margin-bottom:10px}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-promo-daily .banner .subscribe-col{padding-left:0}#tns-modal-screen{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.93);z-index:12000;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);display:none}#tns-modal-screen #tns-modal{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:100%;max-width:450px;height:auto;background:#fff;border-radius:5px;z-index:12001;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);display:none}@media (max-width:499px){#tns-modal-screen #tns-modal{max-width:80%}}#tns-modal-screen #tns-modal .tns-modal-title{position:relative;width:100%;height:40px;line-height:40px;padding-left:20px;color:#3c3c3c;font-size:14px;font-weight:700;text-transform:uppercase;border-bottom:1px solid #a5a9b0}#tns-modal-screen #tns-modal .tns-modal-close{position:absolute;top:11px;right:14px;width:12px;cursor:pointer;z-index:2}#tns-modal-screen #tns-modal .tns-modal-close svg{width:100%;height:auto;fill:#515151}#tns-modal-screen #tns-modal .tns-modal-close:hover svg{fill:#ff3287}#tns-modal-screen #tns-modal .tns-modal-content{position:relative;width:100%;min-height:60px;padding:20px;color:#3c3c3c;font-size:15px}#tns-modal-screen #tns-modal .tns-modal-buttons{position:relative;width:100%;height:60px;padding:10px}.tns-voxpop-screen{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.9);z-index:9000;display:none}.tns-voxpop-screen .tns-voxpop-modal{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:100%;max-width:450px;background:#fff;background:#f4fbff;background:-webkit-linear-gradient(270deg, #f4fbff 0%, #fff 100%);background:-moz-linear-gradient(270deg, #f4fbff 0%, #fff 100%);background:-o-linear-gradient(270deg, #f4fbff 0%, #fff 100%);background:-ms-linear-gradient(270deg, #f4fbff 0%, #fff 100%);background:linear-gradient(180deg, #f4fbff 0%, #fff 100%);border-radius:5px;z-index:9001}@media (max-width:499px){.tns-voxpop-screen .tns-voxpop-modal{width:calc(100vw - 10px)}}.tns-voxpop-screen .tns-voxpop-modal .header{position:absolute;top:0;left:0;right:0;height:40px}.tns-voxpop-screen .tns-voxpop-modal .header .title{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);height:40px;line-height:40px;color:#3c3c3c;font-size:13px;font-weight:800;text-transform:uppercase}.tns-voxpop-screen .tns-voxpop-modal .header .close-icon{position:absolute;top:11px;right:14px;width:12px;cursor:pointer;z-index:2}.tns-voxpop-screen .tns-voxpop-modal .header .close-icon svg{width:100%;height:auto;fill:#515151}.tns-voxpop-screen .tns-voxpop-modal .header .close-icon:hover svg{fill:#ff3287}.tns-voxpop-screen .tns-voxpop-modal .content{position:absolute;top:40px;left:0;right:0;bottom:20px;padding:20px;padding-bottom:0;padding-top:0;color:#3c3c3c;font-size:15px;overflow-x:hidden;overflow-y:auto}.tns-voxpop-screen .tns-voxpop-modal .content .content-block{position:relative;min-height:100%}.tns-voxpop-screen .tns-voxpop-modal .footer{position:absolute;left:0;right:0;bottom:0;height:20px}body.search-hidden{overflow:hidden}#tns-header{position:relative}#tns-header .header-fixed{position:fixed;width:100%;z-index:100}#tns-header .header-footprint{display:block;width:100%;height:150px;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms}@media (max-width:1023px){#tns-header .header-footprint{height:60px}}#tns-header #tns-header-masthead{position:absolute;width:100%;background:#fff;z-index:7;-webkit-transition:all 90ms;-moz-transition:all 90ms;-o-transition:all 90ms;-ms-transition:all 90ms;transition:all 90ms}#tns-header #tns-header-masthead.dark{background:#111215}#tns-header #tns-header-masthead.dark .masthead{border-bottom:1px solid #18191d}#tns-header #tns-header-masthead .masthead{width:100%;border-bottom:1px solid #c3c5ca}#tns-header #tns-header-masthead .masthead-block{position:relative;width:100%;max-width:1260px;height:80px;margin:0 auto 0 auto;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms}@media (max-width:1023px){#tns-header #tns-header-masthead .masthead-block{height:60px}}#tns-header #tns-header-masthead #tns-header-masthead-menu{display:block;position:absolute;top:50%;left:20px;-webkit-transform:translate(0%,-50%);-moz-transform:translate(0%,-50%);-o-transform:translate(0%,-50%);-ms-transform:translate(0%,-50%);transform:translate(0%,-50%)}#tns-header #tns-header-masthead #tns-header-masthead-menu .masthead-menu-icon{display:inline;color:#515151;font-size:14px;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms;cursor:pointer}#tns-header #tns-header-masthead #tns-header-masthead-menu .masthead-menu-icon:hover path{fill:#ff3287}#tns-header #tns-header-masthead #tns-header-masthead-menu .masthead-menu-icon.active path{fill:#ff3287}#tns-header #tns-header-masthead #tns-header-masthead-menu .masthead-menu-close-icon{display:inline;color:#515151;cursor:pointer;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);display:none}#tns-header #tns-header-masthead #tns-header-masthead-menu .masthead-menu-close-icon svg{width:16px;height:auto}#tns-header #tns-header-masthead #tns-header-masthead-menu .masthead-menu-close-icon path{fill:#ff3287}#tns-header #tns-header-masthead #tns-header-masthead-menu .masthead-menu-close-icon:hover path{fill:#ff3287}#tns-header #tns-header-masthead #tns-header-masthead-logo{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:265px;height:auto;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms}@media (max-width:1023px){#tns-header #tns-header-masthead #tns-header-masthead-logo{width:175px;height:auto}}#tns-header #tns-header-masthead #tns-header-masthead-logo .tns-logo{position:relative;display:block}#tns-header #tns-header-masthead #tns-header-masthead-logo .tns-logo svg{display:block;width:100%;height:auto}#tns-header #tns-header-masthead #tns-masthead-utility-nav{position:absolute;top:50%;right:20px;-webkit-transform:translate(0%,-50%);-moz-transform:translate(0%,-50%);-o-transform:translate(0%,-50%);-ms-transform:translate(0%,-50%);transform:translate(0%,-50%);font-size:16px;color:#515151;line-height:120%;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-login-button{position:absolute;color:#01aff4;padding:0;height:25px;line-height:25px;font-size:13px;font-weight:600;right:27px;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-o-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:color 0.2s ease;-moz-transition:color 0.2s ease;-o-transition:color 0.2s ease;-ms-transition:color 0.2s ease;transition:color 0.2s ease;border:none;cursor:pointer}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-login-button:hover{color:#ff69b4}#tns-header #tns-header-masthead #tns-masthead-utility-nav #stackie-flag{position:absolute;z-index:9999;pointer-events:none;top:0;right:30px;-webkit-transform:translate(0,-155%) scaleX(0) scaleY(0);-moz-transform:translate(0,-155%) scaleX(0) scaleY(0);-o-transform:translate(0,-155%) scaleX(0) scaleY(0);-ms-transform:translate(0,-155%) scaleX(0) scaleY(0);transform:translate(0,-155%) scaleX(0) scaleY(0);-webkit-transform-origin:right center;-moz-transform-origin:right center;-o-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}#tns-header #tns-header-masthead #tns-masthead-utility-nav #stackie-flag .flag-content{background-color:#ff3287;color:#fff;padding:8px 12px;font-size:14px;font-weight:bold;border-radius:5px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,0.15);box-shadow:0 2px 8px rgba(0,0,0,0.15);position:relative;pointer-events:auto;white-space:nowrap}#tns-header #tns-header-masthead #tns-masthead-utility-nav #stackie-flag .flag-pointer{content:'';position:absolute;right:-8px;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-o-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;border-left:8px solid #ff3287}#tns-header #tns-header-masthead #tns-masthead-utility-nav #stackie-flag.animate{-webkit-animation:growFromRight .21s ease-out forwards 1.2s,shrinkToRight .21s ease-in forwards 4s;-moz-animation:growFromRight .21s ease-out forwards 1.2s,shrinkToRight .21s ease-in forwards 4s;-o-animation:growFromRight .21s ease-out forwards 1.2s,shrinkToRight .21s ease-in forwards 4s;-ms-animation:growFromRight .21s ease-out forwards 1.2s,shrinkToRight .21s ease-in forwards 4s;animation:growFromRight .21s ease-out forwards 1.2s,shrinkToRight .21s ease-in forwards 4s}@-moz-keyframes growFromRight{0%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}100%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}}@-webkit-keyframes growFromRight{0%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}100%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}}@-o-keyframes growFromRight{0%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}100%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}}@keyframes growFromRight{0%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}100%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}}@-moz-keyframes shrinkToRight{0%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}100%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}}@-webkit-keyframes shrinkToRight{0%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}100%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}}@-o-keyframes shrinkToRight{0%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}100%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}}@keyframes shrinkToRight{0%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}100%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-icon{color:#515151;cursor:pointer;-webkit-transition:color 333ms;-moz-transition:color 333ms;-o-transition:color 333ms;-ms-transition:color 333ms;transition:color 333ms}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-icon:hover{color:#ff3287}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-icon svg{width:39px;height:auto;-webkit-transform:translate(20px,5px);-moz-transform:translate(20px,5px);-o-transform:translate(20px,5px);-ms-transform:translate(20px,5px);transform:translate(20px,5px)}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-icon-highlight{color:#ff3287}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-icon.active path{fill:#ff3287}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-close-icon{color:#515151;cursor:pointer;display:none}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-close-icon svg{width:16px;height:auto}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-close-icon path{fill:#ff3287}#tns-header .header-fixed.collapsed #tns-header-masthead .masthead-block{height:60px}#tns-header .header-fixed.collapsed #tns-header-masthead .masthead-block #tns-header-masthead-logo{width:175px;height:auto}#tns-header .header-fixed.collapsed #tns-header-masthead .masthead-block #tns-header-masthead-menu .menu-icon{display:inline;opacity:1;-ms-filter:none;filter:none}#tns-header #tns-header-search{position:absolute;top:0;left:0;width:100%;height:auto;color:#fff;z-index:6}#tns-header #tns-header-search .search-dropdown{height:60px;color:#fff;padding-bottom:60px;background:#111215;overflow:hidden}#tns-header #tns-header-search .search-dropdown .content-column{padding-top:120px;max-width:960px;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-form{position:fixed;margin:0 0 0 -10px;max-width:900px;width:100%;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-o-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);z-index:99;top:62px;background-color:#111215;padding:30px 0 0;display:none}@media (max-width:1200px){#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-form{padding:12px 12px 0 30px;top:60px}}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-form .search-form{padding-top:10px}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-form .search-form .search-input{display:block;width:100%;height:40px;color:#fff;line-height:40px;padding-left:15px;font-size:17px;font-weight:500;border:1px solid #01aff4;border-right:none}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-form .search-form .search-submit{height:40px;color:#01aff4;font-size:15px;text-transform:uppercase;border-radius:0;border:1px solid #01aff4;background:transparent}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-form .search-form .search-submit:hover{color:#ff3287}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-form.active-search{display:block}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results{position:relative;margin:21px 0 0 0;height:100vh;padding:30px 0 300px 0;overflow-x:hidden}@media (max-width:1023.98px){#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results{margin:0}}@media (max-width:767.98px){#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results{position:absolute;padding-right:30px}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .col-75{min-width:100%;max-width:100%}}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-item-link{display:block;color:#01aff4;margin-bottom:40px}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-item-link:hover{color:#ff3287}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-item-link .search-results-item-thumbnail-col{min-width:100px;max-width:100px;display:none}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-item-link .search-results-item-thumbnail-col img{display:block;height:50px;width:auto}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-item-link .search-results-item-title{font-size:17px;font-weight:600}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-item-link .search-results-item-byline{color:#eaeff3;font-size:14px;opacity:.7;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";filter:alpha(opacity=70)}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-item-link .search-results-item-excerpt{color:#fff;font-size:15px}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-more-button{display:none;max-width:150px;font-size:14px;font-weight:500;text-transform:uppercase;border:1px solid #01aff4;background:transparent}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-more-button:hover{border:1px solid #ff3287;color:#ff3287}#tns-header #tns-header-mobile-nav{position:absolute;top:0;left:0;width:100%;height:auto;z-index:5}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown{height:60px;color:#fff;background:#111215;overflow:hidden}@media (max-width:768px){#tns-header #tns-header-mobile-nav .mobile-nav-dropdown{overflow-y:auto}}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column{padding-top:150px;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms}@media (max-width:1023px){#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column{padding-top:100px}}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col{margin-bottom:60px}@media (max-width:1023px){#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col{min-width:33.333%;max-width:33.333%}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col:nth-child(4){-webkit-box-ordinal-group:1;-moz-box-ordinal-group:1;-o-box-ordinal-group:1;-ms-flex-order:1;-webkit-order:1;order:1}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col:nth-child(1){-webkit-box-ordinal-group:2;-moz-box-ordinal-group:2;-o-box-ordinal-group:2;-ms-flex-order:2;-webkit-order:2;order:2}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col:nth-child(2){-webkit-box-ordinal-group:3;-moz-box-ordinal-group:3;-o-box-ordinal-group:3;-ms-flex-order:3;-webkit-order:3;order:3}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col:nth-child(3){-webkit-box-ordinal-group:4;-moz-box-ordinal-group:4;-o-box-ordinal-group:4;-ms-flex-order:4;-webkit-order:4;order:4}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col:nth-child(5){-webkit-box-ordinal-group:5;-moz-box-ordinal-group:5;-o-box-ordinal-group:5;-ms-flex-order:5;-webkit-order:5;order:5}}@media (max-width:768px){#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col{min-width:50%;max-width:50%}}@media (max-width:599px){#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col{min-width:100%;max-width:100%}}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-header{font-size:12px;font-weight:600;margin-bottom:20px}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-menu a{display:block;color:#fff;font-size:14px;text-decoration:none;margin-bottom:10px}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-menu a:hover{color:#ff3287}#tns-header #tns-header-nav-channels{position:absolute;top:0;left:0;width:100%;height:115px;background:#fff;border-bottom:1px solid #d2d4d8;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms;z-index:4}@media (max-width:1023px){#tns-header #tns-header-nav-channels{height:60px}}@media (max-width:767px){#tns-header #tns-header-nav-channels{display:none}}#tns-header #tns-header-nav-channels .channels-nav{position:absolute;left:0;bottom:0;width:100%;height:35px;line-height:35px}#tns-header #tns-header-nav-channels .channels-nav-block{width:100%;max-width:1200px;margin:0 auto 0 auto;text-align:center}#tns-header #tns-header-nav-channels .channels-nav-block a,#tns-header #tns-header-nav-channels display inline-block{color:#0e1013;font-size:14px;font-weight:600;letter-spacing:1.2px;margin:0 7px 0 7px;text-decoration:none}#tns-header #tns-header-nav-channels .channels-nav-block a:hover{color:#01aff4}#tns-header .header-fixed.collapsed #tns-header-nav-channels{height:60px}#tns-header #tns-header-nav-channels-dropdown{position:absolute;top:0;left:0;width:100%;z-index:3;-webkit-box-shadow:5px 10px #888;box-shadow:5px 10px #888}#tns-header #tns-header-nav-topics{position:absolute;top:0;left:0;width:100%;height:150px;background:#fff;border-bottom:1px solid #e9eaeb;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms;z-index:2}@media (max-width:1023px){#tns-header #tns-header-nav-topics{height:60px}}@media (max-width:767px){#tns-header #tns-header-nav-topics{display:none}}#tns-header #tns-header-nav-topics .topics-nav{position:absolute;left:0;bottom:0;width:100%;height:35px;line-height:35px}#tns-header #tns-header-nav-topics .topics-nav-block{width:100%;max-width:1200px;margin:0 auto 0 auto;text-align:center}#tns-header #tns-header-nav-topics .topics-nav-block a{display:inline-block;font-size:13px;font-weight:500;letter-spacing:1.6px;color:#3c3c3c;margin:0 7px 0 7px;text-decoration:none;-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}#tns-header #tns-header-nav-topics .topics-nav-block a:hover{color:#ff3287}#tns-header #tns-header-nav-topics .topics-nav-block a.active{color:#ff3287}#tns-header .header-fixed.collapsed #tns-header-nav-topics{height:60px}#tns-header #tns-header-nav-topics-dropdown{position:absolute;top:150px;left:0;width:100%;height:auto;z-index:1}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown{width:100%;height:0;overflow:hidden}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .content{width:100%;max-width:720px;padding:40px 30px 0 30px;margin:0 auto 0 auto;display:none;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .content a{display:block;width:100%;height:30px;line-height:30px;padding-left:10px;border-radius:5px;color:#fff;font-size:12px;margin-bottom:1px;text-decoration:none;-webkit-transition:all 133ms;-moz-transition:all 133ms;-o-transition:all 133ms;-ms-transition:all 133ms;transition:all 133ms}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .content a:hover{opacity:1;-ms-filter:none;filter:none;background:rgba(255,255,255,0.072)}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .col-topics{padding-right:20px}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .col-topics ul{list-style-type:none;padding:0;margin:0}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .col-topics a{font-weight:600;text-transform:uppercase;opacity:.63;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=63)";filter:alpha(opacity=63)}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .col-topics a.active{opacity:1;-ms-filter:none;filter:none;background:rgba(255,255,255,0.072)}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .col-latest-stories a{height:auto;font-size:14px;font-weight:500;line-height:133%;padding-left:0;opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";filter:alpha(opacity=90);-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .col-latest-stories a:hover{background:rgba(255,255,255,0)}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .topic-latest-stories{display:none;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .topics-latest-story{margin-bottom:20px}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .topics-latest-story .byline{color:#fff;font-size:11px;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50)}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .topics-latest-story .byline a{display:inline;font-size:11px;margin:none;padding:none;-webkit-transition:all 121ms;-moz-transition:all 121ms;-o-transition:all 121ms;-ms-transition:all 121ms;transition:all 121ms}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .topics-latest-story .byline a:hover{opacity:1;-ms-filter:none;filter:none}.ad-container.native-top{position:relative;width:100%;min-height:70px}#tns-footer{display:block;width:100%;padding:50px 0 150px 0;background:#1e2329}#tns-footer .content-column{min-height:auto}#tns-footer #tns-footer-logo .footer-logo .logo{max-width:214px;display:block;height:auto;max-width:115px;width:100%}@media (max-width:639.98px){#tns-footer #tns-footer-logo .footer-logo .logo{margin-bottom:30px}}#tns-footer #tns-footer-nav-menus{color:#fff}#tns-footer #tns-footer-nav-menus .footer-nav-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-col{margin-bottom:50px;padding-right:15px}@media (max-width:1023px){#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-col{min-width:33.333%;max-width:33.333%}}@media (max-width:768px){#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-col{min-width:50%;max-width:50%}}@media (max-width:599px){#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-col{min-width:100%;max-width:100%}}#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-header{font-size:13px;font-weight:600;margin-bottom:20px}#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-menu a{display:block;color:#fff;font-size:13px;font-weight:400px;line-height:1.2;text-decoration:none;margin-bottom:5px}@media (max-width:1023px){#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-menu a{font-size:17px}}#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-menu a:hover{color:#ff3287}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-link{display:block;color:#fff;line-height:20px}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-link:hover{color:#fff}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-link:hover .footer-nav-header{color:#ff3287}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-link svg{vertical-align:middle;width:20px;height:auto;margin-right:5px}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-copy,#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-copy p{font-size:13px;line-height:1.2}@media (max-width:1023px){#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-copy,#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-copy p{font-size:17px}}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-page-link{display:block;color:#fff;font-size:13px;line-height:1.2;margin-bottom:7px}@media (max-width:1023px){#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-page-link{font-size:17px}}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-page-link svg{height:8px;width:auto}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-page-link svg path{fill:#fff}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-page-link:hover{color:#ff3287}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-page-link:hover svg path{fill:#ff3287}#tns-footer #tns-footer-legal{width:100%}#tns-footer #tns-footer-legal .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (max-width:899px){#tns-footer #tns-footer-legal .row{-webkit-box-direction:reverse;-moz-box-direction:reverse;-o-box-direction:reverse;-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media (max-width:899px){#tns-footer #tns-footer-legal .row .col-75,#tns-footer #tns-footer-legal .row .col-25{min-width:100%;max-width:100%}}#tns-footer #tns-footer-legal .copyright{font-size:14px;color:#a5a9b0;letter-spacing:.2px;line-height:133%;font-weight:300;margin-bottom:5px}@media (max-width:768px){#tns-footer #tns-footer-legal .copyright{margin-bottom:15px}}#tns-footer #tns-footer-legal .terms{width:100%}#tns-footer #tns-footer-legal .terms a{color:#a5a9b0;font-size:14px;letter-spacing:.2px;line-height:133%;font-weight:300;margin-right:10px;text-decoration:none}#tns-footer #tns-footer-legal .terms a:hover,#tns-footer #tns-footer-legal .terms a:focus,#tns-footer #tns-footer-legal .terms a:active,#tns-footer #tns-footer-legal .terms a:focus:active{color:#ff3287}@media (max-width:768px){#tns-footer #tns-footer-legal .terms a{font-size:16px;margin-bottom:5px;display:block}}#tns-footer #tns-footer-legal .footer-nav-header{color:#fff;font-size:13px;font-weight:600}#tns-footer #tns-footer-legal .social-links{margin-left:-7px}@media (max-width:899px){#tns-footer #tns-footer-legal .social-links{margin-bottom:50px}}#tns-footer #tns-footer-legal .social-links .follow-icon{width:30px;height:30px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;vertical-align:middle}#tns-footer #tns-footer-legal .social-links .follow-icon svg{height:19px}#tns-footer #tns-footer-legal .social-links .follow-icon .fill path{fill:rgba(255,255,255,0.63);stroke-width:0}#tns-footer #tns-footer-legal .social-links .follow-icon .stroke path{fill:rgba(255,255,255,0.63);fill:none}#tns-footer #tns-footer-legal .social-links .follow-icon:hover .fill path{fill:#01aff4}#tns-footer #tns-footer-legal .social-links .follow-icon:hover .stroke path{stroke:#01aff4}#tns-footer #tns-footer-legal .social-links .follow-icon-mastadon:hover .fill path{fill:#5e54ea}#tns-footer #tns-footer-legal .social-links .follow-icon-mastadon:hover .stroke path{stroke:#5e54ea}#tns-footer #tns-footer-legal .social-links .follow-icon-twitter:hover .fill path{fill:#1c9bf0}#tns-footer #tns-footer-legal .social-links .follow-icon-twitter:hover .stroke path{stroke:#1c9bf0}#tns-footer #tns-footer-legal .social-links .follow-icon-hackernews:hover .fill path{fill:#fe6600}#tns-footer #tns-footer-legal .social-links .follow-icon-hackernews:hover .stroke path{stroke:#fe6600}#tns-footer #tns-footer-legal .social-links .follow-icon-linkedin:hover .fill path{fill:#0a66c2}#tns-footer #tns-footer-legal .social-links .follow-icon-linkedin:hover .stroke path{stroke:#0a66c2}#tns-footer #tns-footer-legal .social-links .follow-icon-reddit:hover .fill path{fill:#ff4500}#tns-footer #tns-footer-legal .social-links .follow-icon-reddit:hover .stroke path{stroke:#ff4500}#tns-footer #tns-footer-legal .social-links .follow-icon-facebook:hover .fill path{fill:#3c5998}#tns-footer #tns-footer-legal .social-links .follow-icon-facebook:hover .stroke path{stroke:#3c5998}#tns-footer #tns-footer-legal .social-links .follow-icon-instagram:hover .fill path{fill:#66b6fa}#tns-footer #tns-footer-legal .social-links .follow-icon-instagram:hover .stroke path{stroke:#66b6fa}#tns-footer #tns-footer-legal .social-links .follow-icon-youtube{vertical-align:top}#tns-footer #tns-footer-legal .social-links .follow-icon-youtube svg{height:27px}#tns-footer #tns-footer-legal .social-links .follow-icon-youtube:hover .fill path{fill:#f10001}#tns-footer #tns-footer-legal .social-links .follow-icon-youtube:hover .stroke path{stroke:#f10001}#tns-footer-bar{position:fixed;display:block;left:0;right:0;bottom:-150px;width:100%;color:#fff;background:#18191d;z-index:1000}#tns-footer-bar .social-heading{font-size:12px;font-weight:700}#tns-footer-bar .social-links{margin-left:-7px}#tns-footer-bar .social-links .follow-icon svg{height:22px}#tns-footer-bar .social-links .follow-icon .fill path{fill:rgba(255,255,255,0.63);stroke-width:0}#tns-footer-bar .social-links .follow-icon .stroke path{stroke:rgba(255,255,255,0.63);fill:none}#tns-footer-bar .social-links .follow-icon-mastadon svg{height:26px}#tns-footer-bar .social-links .follow-icon-mastadon:hover .fill path{fill:#5e54ea}#tns-footer-bar .social-links .follow-icon-mastadon:hover .stroke path{stroke:#5e54ea}#tns-footer-bar .social-links .follow-icon-twitter{margin-left:-5px;height:16px}#tns-footer-bar .social-links .follow-icon-twitter:hover .fill path{fill:#1c9bf0}#tns-footer-bar .social-links .follow-icon-twitter:hover .stroke path{stroke:#1c9bf0}#tns-footer-bar .social-links .follow-icon-hackernews:hover .fill path{fill:#fe6600}#tns-footer-bar .social-links .follow-icon-hackernews:hover .stroke path{stroke:#fe6600}#tns-footer-bar .social-links .follow-icon-linkedin:hover .fill path{fill:#0a66c2}#tns-footer-bar .social-links .follow-icon-linkedin:hover .stroke path{stroke:#0a66c2}@media (max-width:499px){#tns-footer-bar .social-links .follow-icon-instagram{display:none}}#tns-footer-bar .social-links .follow-icon-instagram:hover .fill path{fill:#66b6fa}#tns-footer-bar .social-links .follow-icon-instagram:hover .stroke path{stroke:#66b6fa}#tns-footer-bar .social-links .follow-icon-reddit:hover .fill path{fill:#ff4500}#tns-footer-bar .social-links .follow-icon-reddit:hover .stroke path{stroke:#ff4500}#tns-footer-bar .social-links .follow-icon-facebook:hover .fill path{fill:#3c5998}#tns-footer-bar .social-links .follow-icon-facebook:hover .stroke path{stroke:#3c5998}@media (max-width:389px){#tns-footer-bar .social-links .follow-icon-facebook{display:none}}#tns-footer-bar .social-links .follow-icon-youtube{vertical-align:top}#tns-footer-bar .social-links .follow-icon-youtube svg{height:27px}#tns-footer-bar .social-links .follow-icon-youtube:hover .fill path{fill:#f10001}#tns-footer-bar .social-links .follow-icon-youtube:hover .stroke path{stroke:#f10001}#tns-footer-bar .content-subscribe{position:absolute;top:0;right:0;width:100%;max-width:200px;padding-right:10px;min-height:100%}@media (max-width:569px){#tns-footer-bar .content-subscribe{max-width:110px}}#tns-footer-bar .content-subscribe .subscribe-heading{padding-top:10px;font-size:12px;font-weight:700}#tns-maintenance{position:relative}#tns-404{min-height:calc(100vh - 150px);padding:100px 0 70px}#tns-404 .content-column{max-width:830px}#tns-404 .heading{font-size:36px;font-weight:900;margin-bottom:20px}#tns-404 .sub-heading{margin-bottom:30px}#tns-404 .sub-heading img{display:inline;width:21px;height:auto;vertical-align:top}#tns-404 .help-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-404 .help-row .help-col{padding-right:15px}@media (max-width:599px){#tns-404 .help-row .help-col{min-width:100%;max-width:100%;margin-bottom:30px}}#tns-404 .help-row .help-col .help-heading{font-weight:700;margin-bottom:5px}#tns-403{min-height:calc(100vh - 150px);padding:100px 0 70px}#tns-403 .content-column{max-width:830px}#tns-403 .heading{font-size:36px;font-weight:900;margin-bottom:20px}#tns-403 .sub-heading{margin-bottom:30px}#tns-403 .sub-heading img{display:inline;width:21px;height:auto;vertical-align:top}#tns-403 .help-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-403 .help-row .help-col{padding-right:15px}@media (max-width:599px){#tns-403 .help-row .help-col{min-width:100%;max-width:100%;margin-bottom:30px}}#tns-403 .help-row .help-col .help-heading{font-weight:700;margin-bottom:5px}#tns-about{padding-top:50px;padding-bottom:50px}@media (max-width:767px){#tns-about{padding-top:30px}}#tns-about #tns-about-content{position:relative}#tns-about #tns-about-content .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-about #tns-about-content .col-50{padding:0 20px 0 0}@media (max-width:1023.98px){#tns-about #tns-about-content .col-50{min-width:75%;max-width:75%}}@media (max-width:767.98px){#tns-about #tns-about-content .col-50{padding:0;min-width:100%;max-width:100%}}@media (max-width:1023.98px){#tns-about #tns-about-content .col-25:first-child{min-width:100%;max-width:100%;-webkit-box-ordinal-group:-1;-moz-box-ordinal-group:-1;-o-box-ordinal-group:-1;-ms-flex-order:-1;-webkit-order:-1;order:-1}}@media (max-width:767.98px){#tns-about #tns-about-content .col-25{padding:0;min-width:100%;max-width:100%;-webkit-box-ordinal-group:-1;-moz-box-ordinal-group:-1;-o-box-ordinal-group:-1;-ms-flex-order:-1;-webkit-order:-1;order:-1}}#tns-about #tns-about-content #tns-about-left-sidebar{position:relative}@media (min-width:992px){#tns-about #tns-about-content #tns-about-left-sidebar{padding-right:20px}}#tns-about #tns-about-content #tns-about-left-sidebar .main-title{font-size:38px;font-weight:normal;width:100%;line-height:1.2;color:#01aff4;margin-bottom:20px}@media (max-width:1199.98px){#tns-about #tns-about-content #tns-about-left-sidebar .main-title{font-size:32px}}@media (max-width:991.98px){#tns-about #tns-about-content #tns-about-left-sidebar .main-title{font-size:28px}}@media (max-width:767.98px){#tns-about #tns-about-content #tns-about-left-sidebar .main-title{font-size:26px}}#tns-about #tns-about-content #tns-about-main-content{position:relative}#tns-about #tns-about-content #tns-about-main-content .main-title{font-size:22px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:25px;letter-spacing:0}#tns-about #tns-about-content #tns-about-main-content .section-heading{font-size:22px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:25px;letter-spacing:0;padding:0;margin-bottom:0;border:0;text-transform:none}#tns-about #tns-about-content #tns-about-main-content .description{font-size:14px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:20px;letter-spacing:0}#tns-about #tns-about-content #tns-about-main-content .description h1,#tns-about #tns-about-content #tns-about-main-content .description h2,#tns-about #tns-about-content #tns-about-main-content .description h3,#tns-about #tns-about-content #tns-about-main-content .description h4,#tns-about #tns-about-content #tns-about-main-content .description h5,#tns-about #tns-about-content #tns-about-main-content .description h6{font-weight:normal;color:#3c3c3c}#tns-about #tns-about-content #tns-about-main-content .description h1:not(:first-child),#tns-about #tns-about-content #tns-about-main-content .description h2:not(:first-child),#tns-about #tns-about-content #tns-about-main-content .description h3:not(:first-child),#tns-about #tns-about-content #tns-about-main-content .description h4:not(:first-child),#tns-about #tns-about-content #tns-about-main-content .description h5:not(:first-child),#tns-about #tns-about-content #tns-about-main-content .description h6:not(:first-child){border-top:1px solid rgba(60,60,60,0.5);margin-top:0;margin-bottom:20px;padding-top:20px}#tns-about #tns-about-content #tns-about-main-content .description p,#tns-about #tns-about-content #tns-about-main-content .description li{font-size:14px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:20px;letter-spacing:0;display:inline-block}#tns-about #tns-about-content #tns-about-main-content .description p a,#tns-about #tns-about-content #tns-about-main-content .description li a{color:#01aff4;font-size:16px;word-break:break-word;width:100%}#tns-about #tns-about-content #tns-about-main-content .description p a:first-letter,#tns-about #tns-about-content #tns-about-main-content .description li a:first-letter{text-transform:capitalize}#tns-about #tns-about-content #tns-about-main-content .description li{margin:0 0 0 5px}#tns-about #tns-about-content #tns-about-right-sidebar{position:relative;padding-left:20px}@media (max-width:1023.98px){#tns-about #tns-about-content #tns-about-right-sidebar{margin:10px 0 20px;padding:0}}#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap{display:inline-block;border:1px solid #01aff4;padding:20px 15px;width:100%}#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description{display:inline-block;margin:0;width:100%;font-size:14px;font-weight:normal;color:#3c3c3c;line-height:1.3}#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description h1,#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description h2,#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description h3,#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description h4,#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description h5,#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description h6{color:#3c3c3c;font-size:14px;line-height:1.3;margin-top:0}#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description p{width:100%;display:inline-block;font-size:14px;color:#3c3c3c;line-height:1.33;margin-bottom:15px}#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description a{font-size:14px;color:#3c3c3c;line-height:1.33}#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description a:hover{color:#01aff4}#tns-about #tns-about-content #tns-about-right-sidebar .social-share{width:100%;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-about #tns-about-content #tns-about-right-sidebar .social-share .social-share-wrap{width:100%;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;margin:15px 0;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}#tns-about #tns-about-content #tns-about-right-sidebar .social-share .social-share-wrap .link{width:30px;height:30px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;margin-right:5px}#tns-about #tns-about-content #tns-about-right-sidebar .social-share .social-share-wrap .link svg{height:17px;width:19px}#tns-about #tns-about-content #tns-about-right-sidebar .social-share .social-share-wrap .link svg.stroke{fill:none;stroke:#3c3c3c}#tns-about #tns-about-content #tns-about-right-sidebar .social-share .social-share-wrap .link svg.fill{stroke:none;fill:#3c3c3c}#tns-about #tns-about-content #tns-about-right-sidebar .social-share .social-share-wrap .link:hover .stroke{stroke:#01aff4}#tns-about #tns-about-content #tns-about-right-sidebar .social-share .social-share-wrap .link:hover .fill{fill:#01aff4}#tns-about #tns-about-content #tns-about-our-founders-team{position:relative;padding:30px 0;border-top:1px solid rgba(60,60,60,0.5);border-bottom:1px solid rgba(60,60,60,0.5)}#tns-about #tns-about-content #tns-about-our-founders-team .content +.content{border-top:1px solid rgba(60,60,60,0.5);padding-top:30px;margin-top:40px}#tns-about #tns-about-content #tns-about-our-founders-team .section-heading{font-size:22px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:25px;letter-spacing:0;padding:0;margin-bottom:0;border:0;text-transform:none}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block{width:calc(100% / 2 - 10px);display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-top:30px}@media (max-width:767.98px){#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block{width:100%;margin-top:20px}}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block:nth-child(even){margin-left:20px}@media (max-width:767.98px){#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block:nth-child(even){margin-left:0}}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-media{width:80px;height:80px}@media (max-width:767.98px){#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-media{width:75px;height:75px}}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-media .default-image,#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-media img{aspect-ratio:1/1;display:block;object-fit:cover}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-content{width:calc(100% - 80px);padding-left:15px}@media (max-width:767.98px){#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-content{width:calc(100% - 75px)}}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-name,#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-designation{font-size:14px;display:block;line-height:1.33;width:100%;font-weight:bold;letter-spacing:0;color:#3c3c3c}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-name a,#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-designation a{font-size:14px;display:inline-block;line-height:1.33;width:100%;font-weight:bold;vertical-align:middle;letter-spacing:0;color:#3c3c3c}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-name a:hover,#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-designation a:hover{color:#01aff4}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-designation{font-weight:normal;text-transform:none}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link{width:100%;margin:5px 0 0;display:inline-block;vertical-align:top}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link .link{width:25px;height:25px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:start;justify-content:start;margin-right:2px}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link .link svg{width:18px;height:18px;position:relative;top:2px}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link .link svg.stroke{fill:none;stroke:#3c3c3c}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link .link svg.fill{stroke:none;fill:#3c3c3c}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link .link.twitter svg{width:15px;height:15px;position:static}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link .link:hover .stroke{stroke:#01aff4}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link .link:hover .fill{fill:#01aff4}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-stories-link{display:inline-block;vertical-align:top}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-stories-link a{font-size:14px;color:#3c3c3c;display:inline-block;padding:3px 0;line-height:1.3;margin:0;vertical-align:middle;letter-spacing:0}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-stories-link a span{text-transform:capitalize}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-stories-link a svg{position:relative;top:2px;height:12px;fill:#3c3c3c}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-stories-link a:hover{color:#01aff4}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-stories-link a:hover svg{fill:#01aff4}#tns-about #tns-about-content #tns-about-founding-sponsors{position:relative;padding:30px 0 0}#tns-about #tns-about-content #tns-about-founding-sponsors .heading{font-size:22px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:15px;letter-spacing:0}#tns-about #tns-about-content #tns-about-founding-sponsors .heading h1,#tns-about #tns-about-content #tns-about-founding-sponsors .heading h2,#tns-about #tns-about-content #tns-about-founding-sponsors .heading h3,#tns-about #tns-about-content #tns-about-founding-sponsors .heading h4,#tns-about #tns-about-content #tns-about-founding-sponsors .heading h5,#tns-about #tns-about-content #tns-about-founding-sponsors .heading h6{margin:0 0 15px;font-weight:normal;font-size:22px;width:100%;line-height:1.35}#tns-about #tns-about-content #tns-about-founding-sponsors .heading p{font-size:16px;color:#3c3c3c;display:inline-block;width:100%;margin-bottom:5px}#tns-about #tns-about-content #tns-about-founding-sponsors .sponsors-logos-list{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;list-style:none;margin:0;padding:15px 0 0;-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}@media (max-width:767.98px){#tns-about #tns-about-content #tns-about-founding-sponsors .sponsors-logos-list{padding:0}}#tns-about #tns-about-content #tns-about-founding-sponsors .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 3 - 20px);width:100%;margin:0;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;min-height:45px;margin-bottom:45px}#tns-about #tns-about-content #tns-about-founding-sponsors .sponsors-logos-list .sponsor-logo .default-image,#tns-about #tns-about-content #tns-about-founding-sponsors .sponsors-logos-list .sponsor-logo img{max-height:45px}@media (max-width:1199.98px){#tns-about #tns-about-content #tns-about-founding-sponsors .sponsors-logos-list .sponsor-logo{margin-bottom:20px}}@media (max-width:767.98px){#tns-about #tns-about-content #tns-about-founding-sponsors .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 3 - 10px);margin:10px 0}}#tns-category .content-column{margin-top:50px;margin-bottom:50px}@media (max-width:767px){#tns-category .content-column{margin-top:30px;margin-bottom:30px}}#tns-category .category-story-card-link{display:block;padding-bottom:10px;margin-bottom:20px;border-bottom:1px solid #c2c2c2}#tns-category .category-story-card-link:last-child{border-bottom:none}#tns-category .category-story-card-link:hover .headline{color:#01aff4}#tns-category .category-story-card-link .col-thumb img{display:block;width:100%;height:auto}#tns-category .category-story-card-link .col-headline{color:#515151;padding-left:15px}#tns-category .category-story-card-link .col-headline .post-title{padding:0;margin-top:-3px;font-size:18px;font-weight:500;text-decoration:none}#tns-category .category-story-card-link .col-headline .excerpt{margin-top:7px;color:#3c3c3c;font-size:14px;line-height:1.2}#tns-category .category-story-card-link:hover .post-title{color:#01aff4}#tns-category .category-footer-spacer{margin-bottom:50px}@media (max-width:767px){#tns-category .category-footer-spacer{margin-bottom:30px}}#tns-category #tns-category-heading{position:relative;margin-bottom:50px}#tns-category #tns-category-heading .title h1{line-height:1.12}@media (max-width:767px){#tns-category #tns-category-heading{margin-bottom:30px}}@media (max-width:1023px){#tns-category #tns-category-heading .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-category #tns-category-heading .row .title{min-width:100%;max-width:100%}#tns-category #tns-category-heading .row .definition{min-width:80%;max-width:80%}#tns-category #tns-category-heading .row .empty{min-width:20%;max-width:20%}}@media (max-width:1023px){#tns-category #tns-category-heading .row .definition{min-width:90%;max-width:90%}#tns-category #tns-category-heading .row .empty{min-width:10%;max-width:10%}}#tns-category #tns-category-frame{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}@media (max-width:899px){#tns-category #tns-category-frame .nav{display:none}#tns-category #tns-category-frame .content{min-width:65%;max-width:65%}#tns-category #tns-category-frame .sidebar{min-width:35%;max-width:35%}}@media (max-width:767px){#tns-category #tns-category-frame .nav{display:none}#tns-category #tns-category-frame .content{min-width:100%;max-width:100%}#tns-category #tns-category-frame .sidebar{display:none}}#tns-category #tns-category-frame #tns-category-frame-nav{position:sticky;top:110px;padding-right:40px}#tns-category #tns-category-frame #tns-category-frame-nav .heading-text{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-category #tns-category-frame #tns-category-frame-nav .category-nav-option{display:block;color:#000}#tns-category #tns-category-frame #tns-category-frame-nav .category-nav-option:hover{color:#ff3287}#tns-category #tns-category-frame #tns-category-frame-nav .category-nav-option.active{color:#ff3287}#tns-category #tns-category-frame #tns-category-frame-content{position:relative}#tns-category #tns-category-frame #tns-category-frame-content .category-content-block{margin-bottom:40px}#tns-category #tns-category-frame #tns-category-frame-content .category-story-card{margin-top:10px;padding-bottom:10px;border-bottom:1px solid #c2c2c2}#tns-category #tns-category-frame #tns-category-frame-content .category-story-card:first-child{margin-top:0}#tns-category #tns-category-frame #tns-category-frame-content .category-story-card:last-child{border-bottom:none}#tns-category #tns-category-frame #tns-category-frame-content .category-story-card .col-thumb{min-width:100px;max-width:100px}@media (max-width:767px){#tns-category #tns-category-frame #tns-category-frame-content .category-story-card .col-thumb{min-width:70px;max-width:70px}}#tns-category #tns-category-frame #tns-category-frame-content .category-story-card .col-thumb .thumb{width:100px;height:50px;background:#f6f8fa}@media (max-width:767px){#tns-category #tns-category-frame #tns-category-frame-content .category-story-card .col-thumb .thumb{width:70px;height:35px}}#tns-category #tns-category-frame #tns-category-frame-content .category-story-card .col-headline .headline{padding-left:10px;font-size:16px;font-weight:500}@media (max-width:767px){#tns-category #tns-category-frame #tns-category-frame-content .category-story-card .col-headline .headline{font-size:15px}}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-essential-reading{position:relative}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-overview{position:relative}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-overview .overview-block{position:relative;width:100%;height:250px;margin-bottom:15px;overflow:hidden}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-overview .overview-block .fade{position:absolute;left:0;right:0;bottom:0;width:100%;height:90px;background:#fff;background:-webkit-linear-gradient(270deg, rgba(255,255,255,0) 0%, #fff 100%);background:-moz-linear-gradient(270deg, rgba(255,255,255,0) 0%, #fff 100%);background:-o-linear-gradient(270deg, rgba(255,255,255,0) 0%, #fff 100%);background:-ms-linear-gradient(270deg, rgba(255,255,255,0) 0%, #fff 100%);background:linear-gradient(180deg, rgba(255,255,255,0) 0%, #fff 100%);z-index:2}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-getting-started{position:relative}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-tutorials{position:relative}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-faq{position:relative}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-faq .question{font-weight:700}#tns-category #tns-category-frame #tns-category-frame-sidebar{position:sticky;top:110px;padding-left:40px}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors{position:relative;margin-bottom:30px}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo{display:block}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo:hover .copy{color:#ff3287}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo:hover .copy svg path{fill:#ff3287}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo .logo-frame{width:100%;max-height:120px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;background:#eaeff3;margin-bottom:10px}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo .logo-frame .logo-img{aspect-ratio:1.86/1;object-fit:contain;max-width:80%;max-height:70%}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo .copy{color:#515151;font-size:14px;line-height:1.33}@media (max-width:767px){#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo .copy{font-size:17px}}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo .copy svg{height:8px;vertical-align:baseline}@media (max-width:767px){#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo .copy svg{height:10px}}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo .copy svg path{fill:#515151}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-share{position:relative;margin-bottom:30px}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-share .section-heading{margin-bottom:10px}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-promo{position:relative}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-trending-stories{position:relative}#tns-category #tns-category-stories-archive{position:relative}#tns-category #tns-category-stories-archive .section-heading{margin-bottom:26px}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row-wrap > .row:last-child:after{display:none}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -15px}@media (max-width:1199.98px){#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25{min-width:33.333%;max-width:33.333%}}@media (max-width:1023.98px){#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25{min-width:50%;max-width:50%}}@media (max-width:767.98px){#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row{-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25{min-width:100%;max-width:100%}}@media (max-width:639.98px){#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row{-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25{padding:0 15px}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25:nth-child(4n+4){border-right:none}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card{display:block;margin-bottom:30px;cursor:pointer}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card figure{object-position:top}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card figure img{display:block;margin-bottom:12px;width:100%;aspect-ratio:1.86/1;object-fit:cover}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card:hover .post-title{color:#01aff4}@media (max-width:767.98px){#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card{border-bottom:1px solid #c2c2c2;margin-bottom:0;padding:7px 0 12px}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card .latest-post-media{width:76px;height:76px;aspect-ratio:1/1;display:inline-block;vertical-align:middle;padding-top:4px}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card .latest-post-media img{width:100%;aspect-ratio:1/1;object-fit:cover;object-position:top;display:inline-block;vertical-align:middle}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card .latest-post-content{display:inline-block;width:calc(100% - 81px);padding-left:12px;vertical-align:top}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card .latest-post-content .post-title{display:block;color:#3c3c3c;text-decoration:none;margin-bottom:5px}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card .latest-post-content .sponsored-badge{margin:7px 0 0}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25:last-child .story-card{border:none}}#tns-category #tns-category-stories-archive .load-more-stories-link{text-decoration:none}#tns-category #tns-category-stories-archive .load-more-stories-link svg{width:12px;vertical-align:middle;fill:#ff3287}#tns-category #tns-category-stories-archive .load-more-stories-link:hover svg{fill:#01aff4}@media (max-width:767.98px){#tns-category #tns-category-stories-archive .load-more-stories-link{font-size:14px}}#tns-category #tns-category-pagination{position:relative;text-align:center}#tns-category #tns-category-pagination .navigation.pagination .screen-reader-text{display:none}#tns-category .tns-category-trending-stories{position:fixed;bottom:50px;left:0;right:0;-webkit-box-shadow:0 0 5px #a5a9b0;box-shadow:0 0 5px #a5a9b0;z-index:3;display:none}@media (max-width:768px){#tns-category .tns-category-trending-stories{display:block}}#tns-category .tns-category-trending-stories .tns-category-trending-stories-close{position:absolute;top:15px;right:15px;z-index:2;cursor:pointer}#tns-category .tns-category-trending-stories .tns-category-trending-stories-close svg{height:14px}#tns-category .tns-category-trending-stories .tns-category-trending-stories-close svg path{fill:#8da6c0}#tns-category .tns-category-trending-stories .tns-category-trending-stories-close:hover svg path{fill:#ff3287}#tns-contributions{position:relative;padding-top:50px;padding-bottom:50px}@media (max-width:767px){#tns-contributions{padding-top:30px;padding-bottom:30px}}#tns-contributions #tns-contributions-content{position:relative}#tns-contributions #tns-contributions-content .content-column{min-height:unset}#tns-contributions #tns-contributions-content .content-column .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:991.98px){#tns-contributions #tns-contributions-content .content-column .row .col-25,#tns-contributions #tns-contributions-content .content-column .row .col-50{min-width:100%;max-width:100%}}#tns-contributions #tns-contributions-content #tns-contributions-left-sidebar{position:relative}@media (min-width:992px){#tns-contributions #tns-contributions-content #tns-contributions-left-sidebar{padding-right:20px}}#tns-contributions #tns-contributions-content #tns-contributions-left-sidebar .main-title{font-size:38px;font-weight:normal;width:100%;line-height:1.2;color:#01aff4;margin-bottom:20px}#tns-contributions #tns-contributions-content #tns-contributions-main-content{position:relative;scroll-behavior:smooth}@media (min-width:992px){#tns-contributions #tns-contributions-content #tns-contributions-main-content{padding-right:15px;padding-left:15px}}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content{width:100%;margin-bottom:30px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .default-image{display:block;width:100%;height:auto}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .image-disclosure,#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .image-disclosure .attribution{color:#a5a9b0;font-size:12px;line-height:1.33}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .image-disclosure a,#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .image-disclosure .attribution a{color:#01aff4;text-decoration:none}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .image-disclosure a:hover,#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .image-disclosure .attribution a:hover{color:#ff3287}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .image-disclosure{padding-top:7px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav{background:#f6f8fa;color:#515151;padding:20px 24px;border-radius:0;margin-bottom:24px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav .nav-heading{font-size:15px;font-weight:700;line-height:1.4;color:#3c3c3c;margin-bottom:12px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav .nav-links{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav .nav-links .anchor-link{display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;gap:8px;font-size:15px;font-weight:600;color:#01aff4;text-decoration:none;-webkit-transition:color 0.2s ease;-moz-transition:color 0.2s ease;-o-transition:color 0.2s ease;-ms-transition:color 0.2s ease;transition:color 0.2s ease}#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav .nav-links .anchor-link span{display:inline}#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav .nav-links .anchor-link svg{height:12px;width:12px;fill:currentColor}#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav .nav-links .anchor-link:hover,#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav .nav-links .anchor-link:focus{color:#ff3287;text-decoration:none;outline:none}#tns-contributions #tns-contributions-content #tns-contributions-main-content .nav-keyline{border-top:1px solid #c2c2c2;margin:0 0 24px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-body{margin-top:24px;scroll-margin-top:120px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .brand-body{margin-top:40px;scroll-margin-top:120px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .brand-body .brand-intro{font-size:17px;line-height:1.45;color:#3c3c3c;margin-bottom:20px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .brand-body .brand-details .brand-keyline{border-top:1px solid #c2c2c2;margin:20px 0 30px;height:1px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .brand-body .brand-details .brand-cta{margin-top:20px;margin-bottom:30px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .brand-body .brand-details h3{font-size:18px;font-weight:700;margin-bottom:12px;color:#3c3c3c}#tns-contributions #tns-contributions-content #tns-contributions-main-content .brand-body .brand-details p{font-size:16px;line-height:1.5;color:#515151;margin-bottom:16px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-title{font-size:22px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:25px;letter-spacing:0}#tns-contributions #tns-contributions-content #tns-contributions-main-content .description{font-size:14px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:20px;letter-spacing:0}#tns-contributions #tns-contributions-content #tns-contributions-main-content .description p{width:100%;font-size:17px;line-height:1.45;letter-spacing:.3px;margin-bottom:15px}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar{position:relative}@media (min-width:992px){#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar{padding-left:20px}}@media (max-width:991.98px){#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar{margin-top:25px}}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap{display:inline-block;border:1px solid #01aff4;padding:20px}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .description{display:inline-block;margin:0;width:100%;font-size:14px;font-weight:normal;color:#3c3c3c;line-height:1.3}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .description .title{font-size:17px;font-weight:600;letter-spacing:.3;margin-bottom:15px}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .description p{width:100%;display:inline-block;font-size:15px;color:#3c3c3c;line-height:1.33;margin-bottom:15px}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .become-sponsor-action{width:100%;text-align:left}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .become-sponsor-action .link{display:inline-block;color:#01aff4;font-size:14px;font-weight:500;line-height:1.3;text-decoration:none}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .become-sponsor-action .link svg{display:inline-block;height:10px;width:auto;fill:#01aff4}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .become-sponsor-action .link:hover{color:#ff3287}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .become-sponsor-action .link:hover svg{fill:#ff3287}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .note{width:100%;font-size:15px;line-height:1.33;margin-bottom:10px}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor{position:relative;border-top:2px solid #ff3287;margin-top:50px;padding:30px 0 40px}@media (max-width:1024.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor{margin-top:30px;padding:30px 0}}@media (max-width:767.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor{margin-top:25px;padding:25px 0}}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .content{max-width:940px}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-subtitle{font-size:16px;color:#ff3287;font-weight:bold;text-align:center;line-height:1.3;width:100%;margin:0 auto 30px}@media (max-width:1023.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-subtitle{margin-bottom:25px}}@media (max-width:767.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-subtitle{font-size:14px}}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-title{font-size:36px;color:#ff3287;font-weight:600;text-align:center;line-height:1.3;width:100%;margin:0 auto 40px}@media (max-width:1023.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-title{font-size:32px;margin-bottom:30px}}@media (max-width:767.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-title{font-size:28px}}@media (max-width:575.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-title{font-size:26px}}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-action{width:100%;text-align:center}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-action .link{font-size:16px;color:#ff3287;font-weight:bold;text-align:center;line-height:1.45;padding:8px 10px;text-decoration:none;letter-spacing:0;display:inline-block}@media (max-width:767.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-action .link{font-size:14px}}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-action .link svg{display:inline-block;height:10px;width:auto;fill:#ff3287}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-action .link:hover{color:#01aff4}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-action .link:hover svg{fill:#01aff4}#tns-ebooks{position:relative;margin-bottom:50px}#tns-ebooks #tns-ebooks-cover{position:relative;padding-top:50px;margin-bottom:50px}@media (max-width:1023px){#tns-ebooks #tns-ebooks-cover{padding-top:30px}}#tns-ebooks #tns-ebooks-cover .featured-column{padding-right:30px}@media (max-width:1023px){#tns-ebooks #tns-ebooks-cover .featured-column{min-width:100%;padding-right:0}}@media (max-width:1023px){#tns-ebooks #tns-ebooks-cover .sidebar-column{display:none}}#tns-ebooks #tns-ebooks-cover .section-heading{color:#fff;border-top:1px solid #fff;opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook{position:relative}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (max-width:639px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover{min-width:100%;max-width:100%;margin-bottom:30px}}@media (max-width:499px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover{margin-bottom:20px}}@media (max-width:639px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover .cover-mobile-column{min-width:33.333%;max-width:33.333%}}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover .cover-mobile-column .coming-soon-banner{position:absolute;top:-3px;right:-3px;width:80px;height:auto;z-index:2}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover .cover-mobile-column img{display:block;width:100%;height:auto;margin:0 auto 0 auto}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover .title-mobile-column{padding-left:20px;display:none}@media (max-width:639px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover .title-mobile-column{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover .title-mobile-column .title-mobile{color:#fff;font-size:24px;font-weight:500;line-height:1.2;margin-bottom:10px}@media (max-width:499px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover .title-mobile-column .title-mobile{font-size:18px;font-weight:600}}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details{padding-left:30px}@media (max-width:639px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details{min-width:100%;max-width:100%;padding-left:0}}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .title{color:#fff;font-size:33px;font-weight:500;line-height:1.2;margin-bottom:10px}@media (max-width:639px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .title{font-size:24px;display:none}}@media (max-width:639px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .title{font-size:22px;font-weight:600}}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .description{color:#fff;font-size:17px;font-weight:500;line-height:1.45;margin-bottom:30px}@media (max-width:499px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .description{font-size:15px}}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .featured-ebook-download-button{max-width:75%;color:#ff3287;line-height:40px;background:#fff}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .featured-ebook-download-button:hover{color:#fff;background:#ff3287}@media (max-width:599px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .featured-ebook-download-button{max-width:100%}}#tns-ebooks #tns-ebooks-cover #tns-ebooks-cover-sidebar{position:relative}#tns-ebooks #tns-ebooks-cover #tns-ebooks-cover-sidebar .related-ebooks-list{position:relative;width:100%}#tns-ebooks #tns-ebooks-cover #tns-ebooks-cover-sidebar .related-ebooks-list a{display:block;width:100%;color:#fff;text-decoration:none}#tns-ebooks #tns-ebooks-cover #tns-ebooks-cover-sidebar .related-ebooks-list a:hover{color:#ff3287}#tns-ebooks #tns-ebooks-cover #tns-ebooks-cover-sidebar .related-ebooks-list .related-ebook{margin-bottom:20px}#tns-ebooks #tns-ebooks-cover #tns-ebooks-cover-sidebar .related-ebooks-list .related-ebook .related-ebook-cover img{display:block;width:100%;height:auto}#tns-ebooks #tns-ebooks-cover #tns-ebooks-cover-sidebar .related-ebooks-list .related-ebook .related-ebook-title{padding-left:10px;margin-top:-3px}#tns-ebooks #tns-ebooks-sponsors{position:relative;padding-top:30px;margin-bottom:30px}@media (max-width:767.98px){#tns-ebooks #tns-ebooks-sponsors{padding-top:25px;padding-bottom:15px}}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-content{position:relative}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-content .sponsors-title{width:100%;font-size:18px;font-weight:600;line-height:1.35;text-align:center;margin-bottom:20px}@media (max-width:1023.98px){#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-content .sponsors-title{font-size:20px}}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos{position:relative;padding:0 10% 0 10%}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos .sponsors-logos-list{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;list-style:none;margin:0;-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 6 - 20px);width:100%;margin:0;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;display:none;margin-bottom:30px}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos .sponsors-logos-list .sponsor-logo .default-image,#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos .sponsors-logos-list .sponsor-logo img{max-height:45px}@media (max-width:1023.98px){#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 2 - 20px);width:100%}}@media (max-width:767.98px){#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 3 - 20px);margin:25px 0}}@media (max-width:479.98px){#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 2 - 20px)}}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-cta{position:relative;padding-top:20px}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-cta .cta{width:100%;text-align:center}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-cta .cta .cta-link{color:#515151;font-size:15px;text-decoration:none}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-cta .cta .cta-link svg{height:10px;width:auto;fill:#515151}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-cta .cta .cta-link:hover{color:#ff3287}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-cta .cta .cta-link:hover svg{fill:#ff3287}#tns-ebooks #tns-ebooks-list{position:relative}@media (max-width:767px){#tns-ebooks #tns-ebooks-list .ebooks-list-series{display:none}}@media (max-width:767px){#tns-ebooks #tns-ebooks-list .ebooks-list-books{min-width:100%}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-series{position:sticky;top:100px;padding-right:30px}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-series .ebooks-series-nav .ebooks-series-nav-option{display:block;color:#3c3c3c;font-size:20px;line-height:1.3;text-decoration:none;margin-bottom:3px}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-series .ebooks-series-nav .ebooks-series-nav-option:hover{color:#ff3287}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-series .ebooks-series-nav .ebooks-series-nav-option.active{color:#ff3287}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books{position:relative}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block{position:relative}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .title{border:0;text-transform:none;font-size:28px;margin:0 0 58px;letter-spacing:0;padding:0}@media (max-width:1023.98px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .title{font-size:18px;margin:0 0 22px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block{margin-bottom:60px;cursor:pointer}@media (max-width:1023.98px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block{margin-bottom:30px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block:hover .ebook-title{color:#01aff4 !important}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block:hover .ebooks-download-link{color:#01aff4}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block:hover .ebooks-download-link svg{fill:#01aff4 !important}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .left-column{padding-right:30px}@media (max-width:539px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .left-column{min-width:120px;padding-right:20px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .left-column .coming-soon-banner{position:absolute;top:-2px;right:28px;width:60px;height:auto;z-index:2;border:none}@media (max-width:539px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .left-column .coming-soon-banner{right:18px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .left-column img{display:block;width:100%;height:auto;border:1px solid #a5a9b0}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column{padding-right:30px}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column .ebook-title{color:#3c3c3c;font-size:28px;font-weight:600;line-height:1.2;margin-bottom:5px}@media (max-width:1023.98px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column .ebook-title{font-size:18px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column p{font-size:17px;line-height:1.45;margin-bottom:20px}@media (max-width:539px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column p{font-size:15px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column li{font-size:17px;line-height:1.45;margin-bottom:10px}@media (max-width:539px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column li{font-size:15px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column a{font-size:17px}@media (max-width:539px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column a{font-size:15px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column .ebooks-download-link svg{height:12px;fill:#ff3287}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column .ebooks-download-link:hover svg{fill:#01aff4}#tns-ebooks #tns-digest-newsletter{position:relative}#tns-ebooks-book{position:relative;padding-top:70px}@media (max-width:1023px){#tns-ebooks-book{padding-top:50px}}@media (max-width:767px){#tns-ebooks-book{padding-top:30px}}#tns-ebooks-book #tns-ebooks-book-details{position:relative}#tns-ebooks-book #tns-ebooks-book-details .content-column.details{max-width:830px}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .series-title{color:#3c3c3c;font-size:14px;line-height:1.33;font-weight:700;text-transform:uppercase;margin-bottom:20px}#tns-ebooks-book #tns-ebooks-book-details .content-column.details h1{line-height:1.2;margin-bottom:30px}@media (max-width:767px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details h1{margin-bottom:15px}}@media (max-width:499px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details h1{font-size:30px}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .sub-header-mobile{margin-bottom:30px;display:none}@media (max-width:767px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .sub-header-mobile{display:block}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details{padding:60px 90px 60px 90px;margin-bottom:30px}@media (max-width:599px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details{padding:30px}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;color:#fff;font-size:17px;font-weight:500}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .cover{position:relative;padding-right:30px}@media (max-width:767px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .cover{min-width:100%;max-width:100%;padding-right:0}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .cover .coming-soon-banner{position:absolute;top:-2px;right:28px;width:60px;height:auto;z-index:2}@media (max-width:767px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .cover .coming-soon-banner{right:-2px}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .cover .cover-image{display:block;width:100%;height:auto;margin:0 auto 0 auto}@media (max-width:767px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .download-form{min-width:100%;max-width:100%;padding-right:0;padding-top:30px}}@media (max-width:767px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .download-form .sub-header-copy{display:none}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .download-form .sub-header-copy p{font-size:16px;margin-bottom:15px}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .download-form .newsletter-copy p{font-size:16px;margin-bottom:20px}@media (max-width:539px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .download-form .newsletter-copy p{font-size:15px}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .body-copy-row{margin-bottom:50px}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .body-copy-row li{font-size:17px;font-weight:500;line-height:1.45}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .body-copy-row .body-copy{padding-right:30px}@media (max-width:599px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .body-copy-row .body-copy{min-width:100%;max-width:100%;font-size:17px;font-weight:500;line-height:1.45;padding-right:0}}@media (max-width:599px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .body-copy-row .sidebar{display:none}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .body-copy-row .sidebar .sidebar-series-nav-item{display:block;color:#3c3c3c;font-size:17px;font-weight:500;margin-bottom:5px}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .body-copy-row .sidebar .sidebar-series-nav-item:hover{color:#ff3287}#tns-ebooks-book #tns-ebooks-book-form{position:relative}#tns-ebooks-book #tns-ebooks-book-form .ebook-download-input{color:#fff;font-weight:600;border:2px solid #fff}#tns-ebooks-book #tns-ebooks-book-form .ebook-download-input.error{border:2px solid #ff3287}#tns-ebooks-book #tns-ebooks-book-form .ebook-download-input::placeholder{color:#fff;font-weight:600;opacity:.7;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";filter:alpha(opacity=70)}#tns-ebooks-book #tns-ebooks-book-form .ebook-download-button{color:#ff3287;background:#fff;margin-bottom:15px}#tns-ebooks-book #tns-ebooks-book-form .ebook-download-button:hover{color:#fff;background:#ff3287}#tns-ebooks-book #tns-ebooks-book-form .legal{font-size:11px;line-height:1.33;opacity:.7;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";filter:alpha(opacity=70)}#tns-ebooks-book #tns-ebooks-book-form .legal a{color:#fff;font-size:11px;font-weight:600}#tns-ebooks-book #tns-ebooks-book-form .legal a:hover{color:#fff;text-decoration:underline}#tns-ebooks-book #tns-ebooks-book-series-nav{position:relative;margin-bottom:30px}#tns-ebooks-book #tns-ebooks-book-series-nav .series-ebooks{width:100%;height:auto;overflow-y:hidden;overflow-x:auto;white-space:nowrap}#tns-ebooks-book #tns-ebooks-book-series-nav .ebook-series-title{font-size:14px;font-weight:600;text-transform:uppercase;margin-bottom:10px}#tns-ebooks-book #tns-ebooks-book-series-nav .series-nav-book{display:inline-block;margin-right:10px;cursor:pointer}#tns-ebooks-book #tns-ebooks-book-series-nav .series-nav-book .border{position:absolute;top:0;left:0;right:0;bottom:0;border:2px solid transparent;z-index:1}#tns-ebooks-book #tns-ebooks-book-series-nav .series-nav-book img{display:block;width:60px;height:auto;border:1px solid #a5a9b0}@media (max-width:767px){#tns-ebooks-book #tns-ebooks-book-series-nav .series-nav-book img{width:90px}}#tns-ebooks-book #tns-ebooks-book-series-nav .series-nav-book.active .border{border:2px solid #01aff4}#tns-ebooks-book #tns-ebooks-book-sponsors{position:relative;padding-top:50px;padding-bottom:50px;background:#f6f8fa}#tns-ebooks-book #tns-ebooks-book-sponsors .content-column{max-width:830px}#tns-ebooks-book #tns-ebooks-book-sponsors .ebooks-sponsors-heading{font-size:15px;font-weight:600;text-align:center;margin-bottom:15px}#tns-ebooks-book #tns-ebooks-book-sponsors .ebooks-sponsors-row{text-align:center;margin-bottom:30px}#tns-ebooks-book #tns-ebooks-book-sponsors .ebooks-sponsors-row:last-child{margin-bottom:0}#tns-ebooks-book #tns-ebooks-book-sponsors .ebooks-sponsors-row a{display:inline-block;margin-left:12px;margin-right:12px;margin-bottom:15px}@media (max-width:699px){#tns-ebooks-book #tns-ebooks-book-sponsors .ebooks-sponsors-row a{margin-bottom:20px}}#tns-ebooks-book #tns-ebooks-book-sponsors .ebooks-sponsors-row a img{display:block;width:auto;max-height:33px}#tns-ebooks-thank-you{padding-top:70px;padding-bottom:50px}@media (max-width:1279.98px){#tns-ebooks-thank-you{padding-top:50px}}@media (max-width:767.98px){#tns-ebooks-thank-you{padding-top:30px;padding-bottom:30px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-thank-you{position:relative}#tns-ebooks-thank-you #tns-ebooks-thank-you-thank-you .thank-you-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-ebooks-thank-you #tns-ebooks-thank-you-thank-you .thank-you-row .thank-you-col{padding-right:30px;margin-bottom:30px}@media (max-width:767px){#tns-ebooks-thank-you #tns-ebooks-thank-you-thank-you .thank-you-row .thank-you-col{min-width:100%;max-width:100%;padding-right:0}}#tns-ebooks-thank-you #tns-ebooks-thank-you-thank-you .thank-you-row .thank-you-col .thank-you-heading{color:#01aff4;font-size:20px;line-height:1.2;padding-right:20px}#tns-ebooks-thank-you #tns-ebooks-thank-you-thank-you .thank-you-row .more-series-col{position:relative}@media (max-width:767px){#tns-ebooks-thank-you #tns-ebooks-thank-you-thank-you .thank-you-row .more-series-col{min-width:100%;max-width:100%}}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav{position:relative;margin-bottom:30px}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-ebooks{width:100%;height:auto;overflow-y:hidden;overflow-x:auto;white-space:nowrap}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .ebook-series-title{font-size:14px;font-weight:600;text-transform:uppercase;margin-bottom:10px}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book{display:inline-block;margin-right:20px;text-align:center;cursor:pointer}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book:hover .series-nav-download-link{color:#01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book:hover .series-nav-download-link svg g,#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book:hover .series-nav-download-link svg line{stroke:#01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book:hover .series-nav-download-link svg path{fill:#01aff4;stroke:#01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book .coming-soon-banner{position:absolute;top:-2px;right:-2px;width:60px;height:auto;z-index:2;border:none}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book .border{position:absolute;top:0;left:0;right:0;bottom:0;border:2px solid transparent;z-index:1}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book img{display:block;width:120px;height:auto;border:1px solid #a5a9b0;margin-bottom:7px}@media (max-width:767px){#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book img{width:120px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book .series-nav-download-link{color:#ff3287;font-size:17px;font-weight:500;padding-right:3px}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book .series-nav-download-link svg{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);height:15px;width:15px;vertical-align:-2px}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book .series-nav-download-link svg g,#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book .series-nav-download-link svg line{stroke:#ff3287}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book .series-nav-download-link svg path{fill:#ff3287;stroke:#ff3287}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book.active .border{border:2px solid #01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-list{position:relative}@media (max-width:767px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list .ebooks-list-series{display:none}}@media (max-width:767px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list .ebooks-list-books{min-width:100%}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-series{position:sticky;top:100px;padding-right:30px}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-series .ebooks-series-nav .ebooks-series-nav-option{display:block;color:#3c3c3c;font-size:20px;line-height:1.3;text-decoration:none;margin-bottom:3px}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-series .ebooks-series-nav .ebooks-series-nav-option:hover{color:#ff3287}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-series .ebooks-series-nav .ebooks-series-nav-option.active{color:#ff3287}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books{position:relative}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block{position:relative}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .title{border:0;text-transform:none;font-size:28px;margin:0 0 58px;letter-spacing:0;padding:0}@media (max-width:1023.98px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .title{font-size:18px;margin:0 0 22px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block{margin-bottom:60px;cursor:pointer}@media (max-width:1023.98px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block{margin-bottom:30px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block:hover .ebook-title{color:#01aff4 !important}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block:hover .ebooks-download-link{color:#01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block:hover .ebooks-download-link svg g,#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block:hover .ebooks-download-link svg line{stroke:#01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block:hover .ebooks-download-link svg path{fill:#01aff4;stroke:#01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .left-column{padding-right:30px}@media (max-width:539px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .left-column{min-width:120px;padding-right:20px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .left-column .coming-soon-banner{position:absolute;top:-2px;right:28px;width:60px;height:auto;z-index:2;border:none}@media (max-width:539px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .left-column .coming-soon-banner{right:18px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .left-column img{display:block;width:100%;height:auto;border:1px solid #a5a9b0}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column{padding-right:30px}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column .ebook-title{color:#3c3c3c;font-size:28px;font-weight:600;line-height:1.2;margin-bottom:5px}@media (max-width:1023.98px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column .ebook-title{font-size:18px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column p{font-size:17px;line-height:1.45;margin-bottom:20px}@media (max-width:539px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column p{font-size:15px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column li{font-size:17px;line-height:1.45;margin-bottom:10px}@media (max-width:539px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column li{font-size:15px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column a{font-size:17px}@media (max-width:539px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column a{font-size:15px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column .ebooks-download-link svg{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);height:15px;width:15px;fill:#ff3287;vertical-align:-2px}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column .ebooks-download-link:hover svg{fill:#01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-newsletter{position:relative}#tns-event .content-column{margin-top:50px;margin-bottom:50px}@media (max-width:767px){#tns-event .content-column{margin-top:30px;margin-bottom:30px}}#tns-event .event-story-card-link{display:block;padding-bottom:10px;margin-bottom:20px;border-bottom:1px solid #c2c2c2}#tns-event .event-story-card-link:last-child{border-bottom:none}#tns-event .event-story-card-link:hover .headline{color:#01aff4}#tns-event .event-story-card-link .col-thumb img{display:block;width:100%;height:auto}#tns-event .event-story-card-link .col-headline{color:#515151;padding-left:15px}#tns-event .event-story-card-link .col-headline .post-title{padding:0;margin-top:-3px;font-size:18px;font-weight:500;text-decoration:none}#tns-event .event-story-card-link .col-headline .excerpt{margin-top:7px;color:#3c3c3c;font-size:14px;line-height:1.2}#tns-event .event-story-card-link:hover .post-title{color:#01aff4}#tns-event .event-footer-spacer{margin-bottom:50px}@media (max-width:767px){#tns-event .event-footer-spacer{margin-bottom:30px}}#tns-event #tns-event-heading{position:relative;margin-bottom:50px}#tns-event #tns-event-heading .title h1{line-height:1.12;font-weight:700}@media (max-width:767px){#tns-event #tns-event-heading{margin-bottom:30px}}@media (max-width:1023px){#tns-event #tns-event-heading .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-event #tns-event-heading .row .title{min-width:100%;max-width:100%}#tns-event #tns-event-heading .row .definition{min-width:80%;max-width:80%}#tns-event #tns-event-heading .row .empty{min-width:20%;max-width:20%}}@media (max-width:1023px){#tns-event #tns-event-heading .row .definition{min-width:90%;max-width:90%}#tns-event #tns-event-heading .row .empty{min-width:10%;max-width:10%}}#tns-event #tns-event-frame{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}@media (max-width:899px){#tns-event #tns-event-frame .nav{display:none}#tns-event #tns-event-frame .content{min-width:65%;max-width:65%}#tns-event #tns-event-frame .sidebar{min-width:35%;max-width:35%}}@media (max-width:767px){#tns-event #tns-event-frame .nav{display:none}#tns-event #tns-event-frame .content{min-width:100%;max-width:100%}#tns-event #tns-event-frame .sidebar{display:none}}#tns-event #tns-event-frame #tns-event-frame-nav{position:sticky;top:110px;padding-right:40px}#tns-event #tns-event-frame #tns-event-frame-nav .heading-text{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-event #tns-event-frame #tns-event-frame-nav .event-nav-option{display:block;color:#000}#tns-event #tns-event-frame #tns-event-frame-nav .event-nav-option:hover{color:#ff3287}#tns-event #tns-event-frame #tns-event-frame-nav .event-nav-option.active{color:#ff3287}#tns-event #tns-event-frame #tns-event-frame-content{position:relative}#tns-event #tns-event-frame #tns-event-frame-content .event-content-block{margin-bottom:40px}#tns-event #tns-event-frame #tns-event-frame-content .event-story-card{margin-top:10px;padding-bottom:10px;border-bottom:1px solid #c2c2c2}#tns-event #tns-event-frame #tns-event-frame-content .event-story-card:first-child{margin-top:0}#tns-event #tns-event-frame #tns-event-frame-content .event-story-card:last-child{border-bottom:none}#tns-event #tns-event-frame #tns-event-frame-content .event-story-card .col-thumb{min-width:100px;max-width:100px}@media (max-width:767px){#tns-event #tns-event-frame #tns-event-frame-content .event-story-card .col-thumb{min-width:70px;max-width:70px}}#tns-event #tns-event-frame #tns-event-frame-content .event-story-card .col-thumb .thumb{width:100px;height:50px;background:#f6f8fa}@media (max-width:767px){#tns-event #tns-event-frame #tns-event-frame-content .event-story-card .col-thumb .thumb{width:70px;height:35px}}#tns-event #tns-event-frame #tns-event-frame-content .event-story-card .col-headline .headline{padding-left:10px;font-size:16px;font-weight:500}@media (max-width:767px){#tns-event #tns-event-frame #tns-event-frame-content .event-story-card .col-headline .headline{font-size:15px}}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-featured-programming{position:relative}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-featured-programming .section-heading{text-transform:uppercase}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-highlights{position:relative}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-highlights .section-heading{text-transform:uppercase}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-related-stories{position:relative}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-related-stories .section-heading{text-transform:uppercase}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-related-stories .post-excerpt{margin-bottom:7px}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-spotlight{position:relative}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-spotlight .section-heading{text-transform:uppercase}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-spotlight .post-excerpt{margin-bottom:7px}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-information{position:relative}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-information .register-button{background:#ff3287;display:block;text-align:center;color:#fff;font-weight:500;line-height:35px;font-size:16px;margin:20px auto 20px;padding:1px 6px;letter-spacing:1px;border-radius:5px;text-decoration:none}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-information .register-button:hover{background:#01aff4}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-information img{width:100%;height:auto}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-information .description{margin:20px 0 0 0}#tns-event #tns-event-frame #tns-event-frame-sidebar{position:sticky;top:110px;padding-left:40px}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors{position:relative;margin-bottom:30px}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo{display:block}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo:hover .copy{color:#ff3287}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo:hover .copy svg path{fill:#ff3287}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo .logo-frame{width:100%;max-height:120px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;background:#eaeff3;margin-bottom:10px}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo .logo-frame .logo-img{aspect-ratio:1.86/1;object-fit:contain;max-width:80%;max-height:70%}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo .copy{color:#515151;font-size:14px;line-height:1.33}@media (max-width:767px){#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo .copy{font-size:17px}}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo .copy svg{height:8px;vertical-align:baseline}@media (max-width:767px){#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo .copy svg{height:10px}}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo .copy svg path{fill:#515151}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-subscribe{position:relative}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-subscribe .description p{font-weight:normal;font-size:14px}#tns-events{position:relative}#tns-events #tns-events-cover{position:relative;padding-top:50px;margin-bottom:50px}@media (max-width:767px){#tns-events #tns-events-cover{padding-top:30px}}#tns-events #tns-events-cover .featured-column{padding-right:20px}@media (max-width:767px){#tns-events #tns-events-cover .featured-column{min-width:100%;padding-right:0}}@media (max-width:767px){#tns-events #tns-events-cover .sidebar-column{display:none}}#tns-events #tns-events-cover #tns-events-featured-event{position:relative}#tns-events #tns-events-cover #tns-events-featured-event .section-heading{color:#fff;border-top:1px solid #fff;opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}#tns-events #tns-events-cover #tns-events-featured-event .wrap-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:767.98px){#tns-events #tns-events-cover #tns-events-featured-event .wrap-row >.col-50{max-width:100%;min-width:100%;padding:0}}#tns-events #tns-events-cover #tns-events-featured-event .wrap-row >.col-50:first-child{padding-right:15px}@media (max-width:767.98px){#tns-events #tns-events-cover #tns-events-featured-event .wrap-row >.col-50:first-child{padding:0}}#tns-events #tns-events-cover #tns-events-featured-event .wrap-row >.col-50:last-child{padding-left:15px}@media (max-width:767.98px){#tns-events #tns-events-cover #tns-events-featured-event .wrap-row >.col-50:last-child{padding:0}}#tns-events #tns-events-cover #tns-events-featured-event .wrap-row .desktop-hide{margin-bottom:15px}@media (min-width:768px){#tns-events #tns-events-cover #tns-events-featured-event .wrap-row .desktop-hide{display:none}}@media (max-width:767.98px){#tns-events #tns-events-cover #tns-events-featured-event .wrap-row .mobile-hide{display:none}}#tns-events #tns-events-cover #tns-events-featured-event .heading{display:block;color:#fff;font-size:14px;line-height:1.33;font-weight:700;text-transform:uppercase;margin-bottom:20px}#tns-events #tns-events-cover #tns-events-featured-event .image{display:block;width:100%;height:auto}@media (max-width:767px){#tns-events #tns-events-cover #tns-events-featured-event .image{margin-bottom:30px}}#tns-events #tns-events-cover #tns-events-featured-event .title{width:100%;color:#fff;font-size:36px;font-weight:600;line-height:1.12;margin-bottom:12px;text-transform:capitalize}@media (max-width:1023px){#tns-events #tns-events-cover #tns-events-featured-event .title{font-size:27px}}@media (max-width:767px){#tns-events #tns-events-cover #tns-events-featured-event .title{font-size:24px}}#tns-events #tns-events-cover #tns-events-featured-event .event-meta{width:100%;margin-bottom:30px}#tns-events #tns-events-cover #tns-events-featured-event .event-meta .date,#tns-events #tns-events-cover #tns-events-featured-event .event-meta .location{color:#fff;font-size:18px;line-height:1.35;text-transform:uppercase;margin-right:10px}@media (max-width:991.98px){#tns-events #tns-events-cover #tns-events-featured-event .event-meta .date,#tns-events #tns-events-cover #tns-events-featured-event .event-meta .location{font-size:16px}}@media (max-width:991.98px){#tns-events #tns-events-cover #tns-events-featured-event .event-meta{font-size:28px}}#tns-events #tns-events-cover #tns-events-featured-event .description{width:100%;color:#fff}#tns-events #tns-events-cover #tns-events-featured-event .description p,#tns-events #tns-events-cover #tns-events-featured-event .description a{color:#fff;font-size:20px;line-height:1.33}#tns-events #tns-events-cover #tns-events-featured-event .description a:hover{color:#ff3287}#tns-events #tns-events-cover #tns-events-featured-event .register-button{position:relative;display:block;width:100%;height:40px;color:#ff3287;font-size:18px;font-weight:500;line-height:40px;text-align:center;border:none;border-radius:5px;background-color:#fff;cursor:pointer}#tns-events #tns-events-cover #tns-events-featured-event .register-button:hover{color:#fff;background-color:#ff3287}#tns-events #tns-events-cover #tns-events-cover-sidebar{position:relative}#tns-events #tns-events-cover #tns-events-cover-sidebar .section-heading{color:#fff;border-top:1px solid #fff;opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}#tns-events #tns-events-cover #tns-events-upcoming-events{position:relative;padding-bottom:50px}#tns-events #tns-events-cover #tns-events-upcoming-events.hide{display:none}#tns-events #tns-events-cover #tns-events-upcoming-events .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card{position:relative;display:block;width:100%;height:auto;padding-top:15px;padding-bottom:15px;cursor:pointer}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card:not(:nth-last-child(-n+2)){border-bottom:1px solid #a5a9b0}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card .col-33{padding-right:15px}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card .col-66{padding-left:15px}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-left:auto;margin-right:auto;text-decoration:none}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-row:hover{text-decoration:none}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-row:hover .events-card-content .event-title{color:#01aff4}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-row:hover .events-card-content .event-register-cta{color:#01aff4}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-row:hover .events-card-content .event-register-cta svg path{fill:#01aff4}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-poster{position:relative}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-poster img{width:100%;height:auto}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;width:100%;vertical-align:middle}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-title{width:100%;-webkit-align-self:flex-end;align-self:flex-end;-ms-flex-item-align:end;color:#3c3c3c;font-size:27px;line-height:1.2;letter-spacing:0;text-decoration:none;margin-bottom:5px}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-title:hover{color:#01aff4}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-meta{width:100%;line-height:80%;margin-bottom:20px}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-meta .date,#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-meta .location{display:inline-block;width:100%;color:#3c3c3c;font-size:14px;font-weight:bold;line-height:1.33;text-transform:uppercase}@media (max-width:1023px){#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-meta .date,#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-meta .location{font-size:12px}}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-meta .location{font-weight:normal}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-description{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-description p,#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-description a{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-description a{color:#ff3287;text-decoration:none}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-description a:hover{color:#01aff4;text-decoration:none}@media (max-width:991.98px){#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-description{font-size:13px}}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-register-cta{font-size:16px;font-weight:500}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-register-cta svg{height:10px;vertical-align:baseline}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-register-cta svg path{fill:#ff3287}#tns-events #tns-events-cover #tns-events-upcoming-events .no-data{padding:0 15px}#tns-events .content-column{min-height:unset}#tns-events .content-column >.row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-events .content-column >.row >.col-75{padding-right:15px}@media (max-width:991.98px){#tns-events .content-column >.row >.col-75{max-width:100%;min-width:100%;padding-right:0}}#tns-events .content-column >.row >.col-25{padding-left:15px}@media (max-width:991.98px){#tns-events .content-column >.row >.col-25{max-width:100%;min-width:100%;padding-left:0}}#tns-events .events-list{margin-bottom:60px}#tns-events .events-list #tns-events-upcoming-events{position:relative;padding-bottom:50px}#tns-events .events-list #tns-events-upcoming-events.hide{display:none}#tns-events .events-list #tns-events-upcoming-events .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-events .events-list #tns-events-upcoming-events .events-card{position:relative;display:block;width:100%;height:auto;padding-top:15px;padding-bottom:15px;cursor:pointer}#tns-events .events-list #tns-events-upcoming-events .events-card:not(:nth-last-child(-n+2)){border-bottom:1px solid #a5a9b0}#tns-events .events-list #tns-events-upcoming-events .events-card .col-33{padding-right:15px}#tns-events .events-list #tns-events-upcoming-events .events-card .col-66{padding-left:15px}#tns-events .events-list #tns-events-upcoming-events .events-card-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-left:auto;margin-right:auto;text-decoration:none}#tns-events .events-list #tns-events-upcoming-events .events-card-row:hover{text-decoration:none}#tns-events .events-list #tns-events-upcoming-events .events-card-row:hover .events-card-content .event-title{color:#01aff4}#tns-events .events-list #tns-events-upcoming-events .events-card-row:hover .events-card-content .event-register-cta{color:#01aff4}#tns-events .events-list #tns-events-upcoming-events .events-card-row:hover .events-card-content .event-register-cta svg path{fill:#01aff4}#tns-events .events-list #tns-events-upcoming-events .events-card-poster{position:relative}#tns-events .events-list #tns-events-upcoming-events .events-card-poster img{width:100%;height:auto}#tns-events .events-list #tns-events-upcoming-events .events-card-content{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;width:100%;vertical-align:middle}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-title{width:100%;-webkit-align-self:flex-end;align-self:flex-end;-ms-flex-item-align:end;color:#3c3c3c;font-size:27px;line-height:1.2;letter-spacing:0;text-decoration:none;margin-bottom:5px}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-title:hover{color:#01aff4}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-meta{width:100%;line-height:80%;margin-bottom:20px}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-meta .date,#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-meta .location{display:inline-block;width:100%;color:#3c3c3c;font-size:14px;font-weight:bold;line-height:1.33;text-transform:uppercase}@media (max-width:1023px){#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-meta .date,#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-meta .location{font-size:12px}}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-meta .location{font-weight:normal}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-description{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-description p,#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-description a{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-description a{color:#ff3287;text-decoration:none}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-description a:hover{color:#01aff4;text-decoration:none}@media (max-width:991.98px){#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-description{font-size:13px}}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-register-cta{font-size:16px;font-weight:500}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-register-cta svg{height:10px;vertical-align:baseline}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-register-cta svg path{fill:#ff3287}#tns-events .events-list #tns-events-upcoming-events .no-data{padding:0 15px}#tns-events .events-list #tns-events-past-events{position:relative;padding-bottom:50px}#tns-events .events-list #tns-events-past-events.hide{display:none}#tns-events .events-list #tns-events-past-events .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-events .events-list #tns-events-past-events .events-card{position:relative;display:block;width:100%;height:auto;padding-top:15px;padding-bottom:15px}#tns-events .events-list #tns-events-past-events .events-card:not(:nth-last-child(-n+2)){border-bottom:1px solid #a5a9b0}#tns-events .events-list #tns-events-past-events .events-card .col-33{padding-right:15px}@media (max-width:499px){#tns-events .events-list #tns-events-past-events .events-card .col-33{min-width:100%;max-width:100%;padding-right:0}}#tns-events .events-list #tns-events-past-events .events-card .col-66{padding-left:15px}@media (max-width:499px){#tns-events .events-list #tns-events-past-events .events-card .col-66{min-width:100%;max-width:100%;padding-left:0}}#tns-events .events-list #tns-events-past-events .events-card-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-left:auto;margin-right:auto;text-decoration:none}#tns-events .events-list #tns-events-past-events .events-card-poster{position:relative}#tns-events .events-list #tns-events-past-events .events-card-poster img{width:100%;height:auto}@media (max-width:499px){#tns-events .events-list #tns-events-past-events .events-card-poster img{margin-bottom:20px}}#tns-events .events-list #tns-events-past-events .events-card-content{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;width:100%;vertical-align:middle}#tns-events .events-list #tns-events-past-events .events-card-content .event-title{width:100%;-webkit-align-self:flex-end;align-self:flex-end;-ms-flex-item-align:end;color:#3c3c3c;font-size:27px;line-height:1.2;letter-spacing:0;text-decoration:none;margin-bottom:5px}#tns-events .events-list #tns-events-past-events .events-card-content .event-meta{width:100%;line-height:80%;margin-bottom:20px}#tns-events .events-list #tns-events-past-events .events-card-content .event-meta .date,#tns-events .events-list #tns-events-past-events .events-card-content .event-meta .location{display:inline-block;width:100%;color:#3c3c3c;font-size:14px;font-weight:bold;line-height:1.33;text-transform:uppercase}@media (max-width:1023px){#tns-events .events-list #tns-events-past-events .events-card-content .event-meta .date,#tns-events .events-list #tns-events-past-events .events-card-content .event-meta .location{font-size:12px}}#tns-events .events-list #tns-events-past-events .events-card-content .event-meta .location{font-weight:normal}#tns-events .events-list #tns-events-past-events .events-card-content .event-description{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-events .events-list #tns-events-past-events .events-card-content .event-description p,#tns-events .events-list #tns-events-past-events .events-card-content .event-description a{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-events .events-list #tns-events-past-events .events-card-content .event-description a{color:#ff3287;text-decoration:none}@media (max-width:991.98px){#tns-events .events-list #tns-events-past-events .events-card-content .event-description{font-size:13px}}#tns-events .events-list #tns-events-past-events .events-card-content .event-register-cta{font-size:16px;font-weight:500}@media (max-width:499px){#tns-events .events-list #tns-events-past-events .events-card-content .event-register-cta{margin-bottom:30px}}#tns-events .events-list #tns-events-past-events .events-card-content .event-register-cta svg{height:10px;vertical-align:baseline}#tns-events .events-list #tns-events-past-events .events-card-content .event-register-cta svg path{fill:#ff3287}#tns-events .events-list #tns-events-past-events .no-data{padding:0 15px}#tns-events .events-list #tns-events-sidebar{position:sticky;top:0}#tns-events .events-list #tns-events-sidebar #tns-newsletter-shortcode,#tns-events .events-list #tns-events-sidebar input[type="email"],#tns-events .events-list #tns-events-sidebar input[type="text"]{border-color:#01aff4}#tns-events .events-list #tns-events-sidebar input[type="submit"],#tns-events .events-list #tns-events-sidebar button,#tns-events .events-list #tns-events-sidebar .tns-button{background:#01aff4}#tns-events .events-list #tns-events-sidebar input[type="submit"]:hover,#tns-events .events-list #tns-events-sidebar button:hover,#tns-events .events-list #tns-events-sidebar .tns-button:hover{background:#ff3287}#tns-webinar .content-column{margin-top:50px;margin-bottom:50px}@media (max-width:767px){#tns-webinar .content-column{margin-top:30px;margin-bottom:30px}}#tns-webinar .webinar-story-card-link{display:block;padding-bottom:10px;margin-bottom:20px;border-bottom:1px solid #c2c2c2}#tns-webinar .webinar-story-card-link:last-child{border-bottom:none}#tns-webinar .webinar-story-card-link:hover .headline{color:#01aff4}#tns-webinar .webinar-story-card-link .col-thumb img{display:block;width:100%;height:auto}#tns-webinar .webinar-story-card-link .col-headline{color:#515151;padding-left:15px}#tns-webinar .webinar-story-card-link .col-headline .post-title{padding:0;margin-top:-3px;font-size:18px;font-weight:500;text-decoration:none}#tns-webinar .webinar-story-card-link .col-headline .excerpt{margin-top:7px;color:#3c3c3c;font-size:14px;line-height:1.2}#tns-webinar .webinar-story-card-link:hover .post-title{color:#01aff4}#tns-webinar .webinar-footer-spacer{margin-bottom:50px}@media (max-width:767px){#tns-webinar .webinar-footer-spacer{margin-bottom:30px}}#tns-webinar #tns-webinar-heading{position:relative;margin-bottom:50px}#tns-webinar #tns-webinar-heading .title h1{line-height:1.12;font-weight:700}@media (max-width:767px){#tns-webinar #tns-webinar-heading{margin-bottom:30px}}@media (max-width:1023px){#tns-webinar #tns-webinar-heading .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-webinar #tns-webinar-heading .row .title{min-width:100%;max-width:100%}#tns-webinar #tns-webinar-heading .row .definition{min-width:80%;max-width:80%}#tns-webinar #tns-webinar-heading .row .empty{min-width:20%;max-width:20%}}@media (max-width:1023px){#tns-webinar #tns-webinar-heading .row .definition{min-width:90%;max-width:90%}#tns-webinar #tns-webinar-heading .row .empty{min-width:10%;max-width:10%}}#tns-webinar #tns-webinar-frame{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}@media (max-width:899px){#tns-webinar #tns-webinar-frame .webinar-nav{display:none}#tns-webinar #tns-webinar-frame .webinar-content{min-width:65%;max-width:65%}#tns-webinar #tns-webinar-frame .webinar-sidebar{min-width:35%;max-width:35%}}@media (max-width:767px){#tns-webinar #tns-webinar-frame .webinar-nav{display:none}#tns-webinar #tns-webinar-frame .webinar-content{min-width:100%;max-width:100%}#tns-webinar #tns-webinar-frame .webinar-sidebar{display:none}}#tns-webinar #tns-webinar-frame #tns-webinar-frame-nav{position:sticky;top:110px;padding-right:40px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-nav .heading-text{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-webinar #tns-webinar-frame #tns-webinar-frame-nav .webinar-nav-option{display:block;color:#000}#tns-webinar #tns-webinar-frame #tns-webinar-frame-nav .webinar-nav-option:hover{color:#ff3287}#tns-webinar #tns-webinar-frame #tns-webinar-frame-nav .webinar-nav-option.active{color:#ff3287}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content{position:relative}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-content-block{margin-bottom:40px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card{margin-top:10px;padding-bottom:10px;border-bottom:1px solid #c2c2c2}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card:first-child{margin-top:0}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card:last-child{border-bottom:none}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card .col-thumb{min-width:100px;max-width:100px}@media (max-width:767px){#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card .col-thumb{min-width:70px;max-width:70px}}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card .col-thumb .thumb{width:100px;height:50px;background:#f6f8fa}@media (max-width:767px){#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card .col-thumb .thumb{width:70px;height:35px}}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card .col-headline .headline{padding-left:10px;font-size:16px;font-weight:500}@media (max-width:767px){#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card .col-headline .headline{font-size:15px}}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-information{position:relative}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-information .register-button{display:block;background:#ff3287;display:block;text-align:center;color:#fff;font-weight:500;line-height:35px;font-size:16px;margin:20px auto 20px;padding:1px 6px;letter-spacing:1px;border-radius:5px;text-decoration:none}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-information .register-button:hover{background:#01aff4}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-information img{width:100%;height:auto}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-information .description{margin:20px 0 0 0}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-information .form-embed-container{display:block;margin-bottom:30px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-container{padding:20px;background:#dae9f2}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-inner{padding:20px;background:#fff;border-radius:5px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-container[hidden],#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-webinar-form[hidden],#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-success[hidden],#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-video[hidden]{display:none !important}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-profile-fields[hidden],#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-job-more-fields[hidden],#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-state-field[hidden]{display:none !important}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-webinar-name{font-weight:700;font-size:16px;margin-bottom:5px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-webinar-time{font-size:14px;margin-bottom:20px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-webinar-time svg{vertical-align:middle}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-questions p{margin:0 0 8px 0;font-size:14px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-questions p .airmeet-required{color:#f00}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-questions select{display:block;width:100%;padding:10px 28px 10px 10px;border:1px solid #ff3287;margin-bottom:20px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAGCAYAAAD68A/GAAAAJElEQVR4nGNgYGD4z0AY/Mdg4FOETzFOA9Al8DrrPzGKcJoEAJCsCvaQZB9yAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:right 12px center}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-register[disabled]{opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50);cursor:not-allowed;pointer-events:none}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-success{background:#eafaf2;color:#22b573;text-align:center;padding:20px 15px 15px 15px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-success p{margin:10px 0 0 0}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-video{width:100%;aspect-ratio:16/9}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-video iframe{width:100%;height:100%;display:block}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-highlights{position:relative}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-highlights .section-heading{text-transform:uppercase}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-featured-programming{position:relative}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-featured-programming .section-heading{text-transform:uppercase}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-spotlight{position:relative}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-spotlight .section-heading{text-transform:uppercase}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-spotlight .post-excerpt{margin-bottom:7px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-related-stories{position:relative}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-related-stories .section-heading{text-transform:uppercase}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-related-stories .post-excerpt{margin-bottom:7px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar{position:sticky;top:110px;padding-left:40px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors{position:relative;margin-bottom:30px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo{display:block}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo:hover .copy{color:#ff3287}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo:hover .copy svg path{fill:#ff3287}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo .logo-frame{width:100%;max-height:120px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;background:#eaeff3;margin-bottom:10px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo .logo-frame .logo-img{aspect-ratio:1.86/1;object-fit:contain;max-width:80%;max-height:70%}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo .copy{color:#515151;font-size:14px;line-height:1.33}@media (max-width:767px){#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo .copy{font-size:17px}}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo .copy svg{height:8px;vertical-align:baseline}@media (max-width:767px){#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo .copy svg{height:10px}}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo .copy svg path{fill:#515151}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-subscribe{position:relative}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-subscribe .description p{font-weight:normal;font-size:14px}#tns-webinars{position:relative}#tns-webinars #tns-webinars-cover{position:relative;padding-top:50px;margin-bottom:50px}@media (max-width:767px){#tns-webinars #tns-webinars-cover{padding-top:30px}}#tns-webinars #tns-webinars-cover .featured-column{padding-right:20px}@media (max-width:767px){#tns-webinars #tns-webinars-cover .featured-column{min-width:100%;padding-right:0}}@media (max-width:767px){#tns-webinars #tns-webinars-cover .sidebar-column{display:none}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar{position:relative}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .section-heading{color:#fff;border-top:1px solid #fff;opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:767.98px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row >.col-50{max-width:100%;min-width:100%;padding:0}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row >.col-50:first-child{padding-right:15px}@media (max-width:767.98px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row >.col-50:first-child{padding:0}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row >.col-50:last-child{padding-left:15px}@media (max-width:767.98px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row >.col-50:last-child{padding:0}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row .desktop-hide{margin-bottom:15px}@media (min-width:768px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row .desktop-hide{display:none}}@media (max-width:767.98px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row .mobile-hide{display:none}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .heading{display:block;color:#fff;font-size:14px;line-height:1.33;font-weight:700;text-transform:uppercase;margin-bottom:20px}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .image{display:block;width:100%;height:auto}@media (max-width:767px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .image{margin-bottom:30px}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .title{width:100%;color:#fff;font-size:36px;font-weight:600;line-height:1.12;margin-bottom:12px;text-transform:capitalize}@media (max-width:1023px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .title{font-size:27px}}@media (max-width:767px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .title{font-size:24px}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .webinar-meta{width:100%;margin-bottom:30px}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .webinar-meta .date,#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .webinar-meta .location{color:#fff;font-size:18px;line-height:1.35;text-transform:uppercase;margin-right:10px}@media (max-width:991.98px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .webinar-meta .date,#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .webinar-meta .location{font-size:16px}}@media (max-width:991.98px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .webinar-meta{font-size:28px}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .description{width:100%;color:#fff}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .description p,#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .description a{color:#fff;font-size:20px;line-height:1.33}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .description a:hover{color:#ff3287}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .more-info-button{position:relative;display:block;width:100%;height:40px;color:#ff3287;font-size:18px;font-weight:500;line-height:40px;text-align:center;border:none;border-radius:5px;background-color:#fff;cursor:pointer}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .more-info-button:hover{color:#fff;background-color:#ff3287}#tns-webinars #tns-webinars-cover #tns-webinars-cover-sidebar{position:relative}#tns-webinars #tns-webinars-cover #tns-webinars-cover-sidebar .section-heading{color:#fff;border-top:1px solid #fff;opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars{position:relative;padding-bottom:50px}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars.hide{display:none}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card{position:relative;display:block;width:100%;height:auto;padding-top:15px;padding-bottom:15px;cursor:pointer}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card:not(:nth-last-child(-n+2)){border-bottom:1px solid #a5a9b0}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card .col-33{padding-right:15px}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card .col-66{padding-left:15px}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-left:auto;margin-right:auto;text-decoration:none}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-row:hover{text-decoration:none}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-row:hover .webinars-card-content .webinar-title{color:#01aff4}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-row:hover .webinars-card-content .webinar-register-cta{color:#01aff4}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-row:hover .webinars-card-content .webinar-register-cta svg path{fill:#01aff4}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-poster{position:relative}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-poster img{width:100%;height:auto}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;width:100%;vertical-align:middle}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-title{width:100%;-webkit-align-self:flex-end;align-self:flex-end;-ms-flex-item-align:end;color:#3c3c3c;font-size:27px;line-height:1.2;letter-spacing:0;text-decoration:none;margin-bottom:5px}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-title:hover{color:#01aff4}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta{width:100%;line-height:80%;margin-bottom:20px}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .date,#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .location{display:inline-block;width:100%;color:#3c3c3c;font-size:14px;font-weight:bold;line-height:1.33;text-transform:uppercase}@media (max-width:1023px){#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .date,#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .location{font-size:12px}}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .location{font-weight:normal}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description p,#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description a{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description a{color:#ff3287;text-decoration:none}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description a:hover{color:#01aff4;text-decoration:none}@media (max-width:991.98px){#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description{font-size:13px}}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-register-cta{font-size:16px;font-weight:500}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-register-cta svg{height:10px;vertical-align:baseline}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-register-cta svg path{fill:#ff3287}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .no-data{padding:0 15px}#tns-webinars .content-column{min-height:unset}#tns-webinars .content-column >.row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-webinars .content-column >.row >.col-75{padding-right:15px}@media (max-width:991.98px){#tns-webinars .content-column >.row >.col-75{max-width:100%;min-width:100%;padding-right:0}}#tns-webinars .content-column >.row >.col-25{padding-left:15px}@media (max-width:991.98px){#tns-webinars .content-column >.row >.col-25{max-width:100%;min-width:100%;padding-left:0}}#tns-webinars .webinars-list{margin-bottom:60px}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars{position:relative;padding-bottom:50px}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars.hide{display:none}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card{position:relative;display:block;width:100%;height:auto;padding-top:15px;padding-bottom:15px;cursor:pointer}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card:not(:nth-last-child(-n+2)){border-bottom:1px solid #a5a9b0}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card .col-33{padding-right:15px}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card .col-66{padding-left:15px}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-left:auto;margin-right:auto;text-decoration:none}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-row:hover{text-decoration:none}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-row:hover .webinars-card-content .webinar-title{color:#01aff4}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-row:hover .webinars-card-content .webinar-register-cta{color:#01aff4}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-row:hover .webinars-card-content .webinar-register-cta svg path{fill:#01aff4}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-poster{position:relative}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-poster img{width:100%;height:auto}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;width:100%;vertical-align:middle}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-title{width:100%;-webkit-align-self:flex-end;align-self:flex-end;-ms-flex-item-align:end;color:#3c3c3c;font-size:27px;line-height:1.2;letter-spacing:0;text-decoration:none;margin-bottom:5px}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-title:hover{color:#01aff4}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta{width:100%;line-height:80%;margin-bottom:20px}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .date,#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .location{display:inline-block;width:100%;color:#3c3c3c;font-size:14px;font-weight:bold;line-height:1.33;text-transform:uppercase}@media (max-width:1023px){#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .date,#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .location{font-size:12px}}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .location{font-weight:normal}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description p,#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description a{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description a{color:#ff3287;text-decoration:none}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description a:hover{color:#01aff4;text-decoration:none}@media (max-width:991.98px){#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description{font-size:13px}}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-register-cta{font-size:16px;font-weight:500}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-register-cta svg{height:10px;vertical-align:baseline}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-register-cta svg path{fill:#ff3287}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .no-data{padding:0 15px}#tns-webinars .webinars-list #tns-webinars-past-webinars{position:relative;padding-bottom:50px}#tns-webinars .webinars-list #tns-webinars-past-webinars.hide{display:none}#tns-webinars .webinars-list #tns-webinars-past-webinars .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card{position:relative;display:block;width:100%;height:auto;padding-top:15px;padding-bottom:15px}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card:not(:nth-last-child(-n+2)){border-bottom:1px solid #a5a9b0}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card .col-33{padding-right:15px}@media (max-width:499px){#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card .col-33{min-width:100%;max-width:100%;padding-right:0}}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card .col-66{padding-left:15px}@media (max-width:499px){#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card .col-66{min-width:100%;max-width:100%;padding-left:0}}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-left:auto;margin-right:auto;text-decoration:none}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-poster{position:relative}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-poster img{width:100%;height:auto}@media (max-width:499px){#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-poster img{margin-bottom:20px}}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;width:100%;vertical-align:middle}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-title{width:100%;-webkit-align-self:flex-end;align-self:flex-end;-ms-flex-item-align:end;color:#3c3c3c;font-size:27px;line-height:1.2;letter-spacing:0;text-decoration:none;margin-bottom:5px}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-meta{width:100%;line-height:80%;margin-bottom:20px}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-meta .date,#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-meta .location{display:inline-block;width:100%;color:#3c3c3c;font-size:14px;font-weight:bold;line-height:1.33;text-transform:uppercase}@media (max-width:1023px){#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-meta .date,#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-meta .location{font-size:12px}}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-meta .location{font-weight:normal}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-description{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-description p,#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-description a{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-description a{color:#ff3287;text-decoration:none}@media (max-width:991.98px){#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-description{font-size:13px}}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-register-cta{font-size:16px;font-weight:500}@media (max-width:499px){#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-register-cta{margin-bottom:30px}}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-register-cta svg{height:10px;vertical-align:baseline}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-register-cta svg path{fill:#ff3287}#tns-webinars .webinars-list #tns-webinars-past-webinars .no-data{padding:0 15px}#tns-webinars .webinars-list #tns-webinars-sidebar{position:sticky;top:0}#tns-webinars .webinars-list #tns-webinars-sidebar .tns-newsletter-shortcode .title{font-size:30px;color:#01aff4}#tns-webinars .webinars-list #tns-webinars-sidebar .tns-newsletter-shortcode,#tns-webinars .webinars-list #tns-webinars-sidebar input[type="email"],#tns-webinars .webinars-list #tns-webinars-sidebar input[type="text"]{border-color:#01aff4}#tns-webinars .webinars-list #tns-webinars-sidebar input[type="submit"],#tns-webinars .webinars-list #tns-webinars-sidebar button,#tns-webinars .webinars-list #tns-webinars-sidebar .tns-button{background:#01aff4}#tns-webinars .webinars-list #tns-webinars-sidebar input[type="submit"]:hover,#tns-webinars .webinars-list #tns-webinars-sidebar button:hover,#tns-webinars .webinars-list #tns-webinars-sidebar .tns-button:hover{background:#ff3287}#tns-webinars .webinars-list #tns-webinars-sidebar .webinars-sales-cta{padding-top:30px}#tns-webinars .webinars-list #tns-webinars-sidebar .webinars-sales-cta a{color:#515151;font-size:15px}#tns-webinars .webinars-list #tns-webinars-sidebar .webinars-sales-cta a:hover{color:#ff3287}#tns-frontpage{position:relative}#tns-frontpage #tns-frontpage-promo{display:relative;margin-bottom:30px}#tns-frontpage #tns-frontpage-page-one{position:relative}#tns-frontpage #tns-frontpage-page-one .content-column{padding-top:30px}@media (max-width:1279.98px){#tns-frontpage #tns-frontpage-page-one .content-column{padding-left:30px;padding-right:30px}}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-page-one .content-column{padding-top:30px}}#tns-frontpage #tns-frontpage-page-one .content-column > .cover-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-bottom:20px}#tns-frontpage #tns-frontpage-page-one .page-one-left-col{padding-right:20px}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-one .page-one-left-col{min-width:100%;max-width:100%;padding-right:0}}#tns-frontpage #tns-frontpage-page-one .page-one-right-col{padding-left:20px;position:relative}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-one .page-one-right-col{min-width:100%;max-width:100%;padding-left:0;padding-top:30px}}#tns-frontpage #tns-frontpage-page-one .page-one-right-col:before{position:absolute;content:'';left:0;top:0;height:100%;width:1px;background:transparent}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-one .page-one-right-col:before{display:none}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured{position:relative}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;margin-bottom:20px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead > .content{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:575.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead > .content .blocks{min-width:100%;max-width:100%;margin-bottom:20px}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content{position:relative}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;text-decoration:none;cursor:pointer}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block:hover .lead-details-block .post-title,#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block:focus .lead-details-block .post-title{color:#01aff4}@media (max-width:959.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-media-block{display:none}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-media-block .lead-media{width:100%}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-media-block .lead-media .thumbnail-image{width:100%;height:auto}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block{padding-left:20px}@media (max-width:959.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block{min-width:100%;max-width:100%;padding-left:0}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block .post-categories{padding-top:0;margin-bottom:7px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block .post-title{display:inline-block;width:100%;color:#3c3c3c;font-size:30px;line-height:110%;margin-top:-5px;margin-bottom:10px;text-decoration:none;-webkit-transition:color 99ms;-moz-transition:color 99ms;-o-transition:color 99ms;-ms-transition:color 99ms;transition:color 99ms}@media (max-width:1199px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block .post-title{font-size:34px;margin-bottom:20px}}@media (max-width:1023px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block .post-title{font-size:28px;margin-bottom:15px}}@media (max-width:767px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block .post-title{font-size:36px;margin-bottom:15px}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block .post-excerpt{color:#3c3c3c;margin-bottom:10px}@media (max-width:1023.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block .post-excerpt{font-size:18px}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured{position:relative}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured .more-featured-content{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block{position:relative;display:block;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;gap:20px 40px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;padding-right:20px;margin:20px 0;cursor:pointer}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block a{display:block}@media (max-width:575.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block{min-width:100%;max-width:100%;padding:0}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block:nth-child(even){padding-right:0;padding-left:20px}@media (max-width:575.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block:nth-child(even){padding-left:0}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block:nth-child(even):before{position:absolute;content:'';height:100%;width:1px;background:#c2c2c2;top:0;left:0}@media (max-width:575.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block:nth-child(even):before{display:none}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block::after{position:absolute;content:'';height:1px;width:100%;background:#c2c2c2;top:-20px;left:0}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block:nth-child(even)::after{left:-40px;width:calc(100% + 40px)}@media (max-width:575.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block:nth-child(even)::after{left:0;width:100%}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block .content{text-decoration:none}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block .content:hover .post-title{color:#01aff4;-webkit-transition:color 99ms;-moz-transition:color 99ms;-o-transition:color 99ms;-ms-transition:color 99ms;transition:color 99ms}@media (max-width:1199.98){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block .content:hover .post-title{color:#3c3c3c}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block .block-media{display:inline-block;width:100%;aspect-ratio:11/5;background:#a5a9b0;margin-bottom:10px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block .block-media .thumbnail-image{object-fit:cover;object-position:top;max-width:100%;aspect-ratio:11/5;display:block;width:100%}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block .block-content .post-title{display:inline-block;width:100%;color:#3c3c3c;font-size:20px;line-height:1.2;margin-bottom:7px;text-decoration:none}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block.ad-container{min-height:250px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-social{position:relative;margin-bottom:30px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-social .copy{font-size:15px;margin-bottom:12px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest{position:relative}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-header{position:relative}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content{position:relative}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row{-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}}@media (max-width:639.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row{-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap{display:inline-block;padding:0;margin:0;width:100%;height:auto;padding-top:7px;padding-bottom:12px;border-top:1px solid #c2c2c2}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap:first-child{padding-top:0;border-top:1px solid transparent}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-block{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;cursor:pointer}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-block{min-width:calc(50% - 10px);max-width:calc(50% - 10px)}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-block:nth-child(2){padding-top:0;border-top:1px solid transparent}}@media (max-width:639.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-block{min-width:100%;max-width:100%}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-block:nth-child(2){padding-top:12px;border-top:1px solid #c2c2c2}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-block > .content{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;text-decoration:none}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-block > .content:hover .post-title{color:#01aff4;-webkit-transition:color 99ms;-moz-transition:color 99ms;-o-transition:color 99ms;-ms-transition:color 99ms;transition:color 99ms}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-media{width:76px;aspect-ratio:1/1;display:inline-block;vertical-align:middle;padding-top:4px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-media .thumbnail-image{width:100%;aspect-ratio:1/1;object-fit:cover;object-position:top;display:inline-block;vertical-align:middle}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-content{display:inline-block;width:calc(100% - 76px);padding-left:12px;vertical-align:middle}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap.ad-container{min-height:100px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-trending{position:relative;min-height:300px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-trending ol .trending-story-link{font-size:17px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors{position:relative;padding-top:50px;padding-bottom:50px;background:#f6f8fa}@media (max-width:539px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors{padding-top:30px;padding-bottom:30px}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-content{position:relative;max-width:900px;margin:0 auto 0 auto;text-align:center}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{display:inline-block;width:100%;color:#8da6c0;font-size:16px;font-weight:600;line-height:1.35;text-align:center;margin-bottom:30px}@media (max-width:1023px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{font-size:16px}}@media (max-width:599px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{font-size:15px}}@media (max-width:499px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{font-size:14px;padding-left:15%;padding-right:15%}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-logos{position:relative;max-width:900px;padding-left:30px;padding-right:30px;margin:0 auto 0 auto}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-bottom:30px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo{display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;max-width:calc(100% / 5 - 40px);width:100%;margin:0}@media (max-width:639px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 4 - 30px)}}@media (max-width:539px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 3 - 20px)}}@media (max-width:639px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo:nth-child(5){display:none}}@media (max-width:539px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo:nth-child(4){display:none}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-cta{position:relative}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta{width:100%;text-align:center}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link{color:#b3c4d5;font-size:14px;font-weight:500;text-decoration:none}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link svg{height:10px;width:auto;fill:#b3c4d5}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link:hover{color:#ff3287}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link:hover svg{fill:#ff3287}#tns-frontpage #tns-frontpage-trending-stories{position:relative;background:#f6f8fa}#tns-frontpage #tns-frontpage-streaming{position:relative;min-height:350px}#tns-frontpage #tns-frontpage-streaming .content-column{min-height:unset}#tns-frontpage #tns-frontpage-sponsors{position:relative;padding-top:50px;padding-bottom:50px;background:#f6f8fa}@media (max-width:539px){#tns-frontpage #tns-frontpage-sponsors{padding-top:30px;padding-bottom:30px}}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-content{position:relative;max-width:900px;margin:0 auto 0 auto;text-align:center}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{display:inline-block;width:100%;color:#8da6c0;font-size:16px;font-weight:600;line-height:1.35;text-align:center;margin-bottom:30px}@media (max-width:1023px){#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{font-size:16px}}@media (max-width:599px){#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{font-size:15px}}@media (max-width:499px){#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{font-size:14px;padding-left:15%;padding-right:15%}}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-logos{position:relative;max-width:900px;padding-left:30px;padding-right:30px;margin:0 auto 0 auto}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-bottom:30px}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo{display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;max-width:calc(100% / 5 - 40px);width:100%;margin:0}@media (max-width:639px){#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 4 - 30px)}}@media (max-width:539px){#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 3 - 20px)}}@media (max-width:639px){#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo:nth-child(5){display:none}}@media (max-width:539px){#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo:nth-child(4){display:none}}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-cta{position:relative}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta{width:100%;text-align:center}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link{color:#b3c4d5;font-size:14px;font-weight:500;text-decoration:none}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link svg{height:10px;width:auto;fill:#b3c4d5}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link:hover{color:#ff3287}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link:hover svg{fill:#ff3287}#tns-frontpage #tns-frontpage-page-two{position:relative;padding-top:69px;padding-bottom:30px}@media (max-width:1279.98px){#tns-frontpage #tns-frontpage-page-two{padding-top:50px;padding-bottom:60px}}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-page-two{padding-top:30px;padding-bottom:40px}}@media (max-width:1279.98px){#tns-frontpage #tns-frontpage-page-two .content-column{padding-left:30px;padding-right:30px}}#tns-frontpage #tns-frontpage-page-two .cover-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-frontpage #tns-frontpage-page-two .page-two-left-col{padding-right:20px}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-page-two .page-two-left-col{min-width:100%;max-width:100%;padding-right:0}}#tns-frontpage #tns-frontpage-page-two .page-two-right-col{padding-left:20px;position:relative}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-page-two .page-two-right-col{min-width:100%;max-width:100%;padding-left:0;padding-top:30px}}#tns-frontpage #tns-frontpage-page-two .page-two-right-col:before{position:absolute;content:'';left:0;top:0;height:100%;width:1px;background:#3c3c3c;background:transparent}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-page-two .page-two-right-col:before{display:none}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts{position:relative}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-heading{position:relative}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-heading .section-heading{margin-bottom:3px}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;gap:0 40px}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concepts-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;position:relative;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;padding-top:17px;padding-bottom:16px;padding-right:20px;margin-bottom:10px}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept .title{font-size:12px;font-weight:900;margin-bottom:10px;text-transform:uppercase}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept .title:hover{color:#ff3287}@media (max-width:767px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept .title{font-weight:700}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept a{display:block;color:#3c3c3c;font-size:15px;-webkit-transition:color 99ms;-moz-transition:color 99ms;-o-transition:color 99ms;-ms-transition:color 99ms;transition:color 99ms;margin-bottom:14px}@media (max-width:767px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept a{font-size:17px;margin-bottom:18px}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept a:hover{color:#01aff4}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept{min-width:100%;max-width:100%;padding-right:0;margin-bottom:0}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:nth-child(even){padding-right:0;padding-left:20px}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:nth-child(even){padding-left:0}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:after{position:absolute;content:'';height:1px;width:calc(100% - 20px);background:#c2c2c2;bottom:0;left:0}@media (max-width:1023.98px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:after{bottom:5px}}@media (max-width:575.98px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:after{width:100%}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:nth-child(even)::after{width:calc(100% - 20px);left:20px}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:nth-child(even)::after{width:100%;left:0}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:nth-last-child(-n+2):after{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:nth-last-child(-n+3):after{opacity:1;-ms-filter:none;filter:none}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:last-child:after{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories{position:relative}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-header{position:relative}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content{position:relative}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content > .more-stories-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content > .more-stories-row{-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}}@media (max-width:639.98px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content > .more-stories-row{-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap{display:inline-block;padding:0;margin:0;width:100%;height:auto;padding-top:7px;padding-bottom:12px;border-top:1px solid #c2c2c2}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap:first-child{padding-top:0;border-top:1px solid transparent}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-block{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;cursor:pointer}@media (max-width:767px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-block{max-width:calc(50% - 10px);min-width:calc(50% - 10px)}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-block:nth-child(2){padding-top:0;border-top:1px solid transparent}}@media (max-width:639.98px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-block{max-width:100%;min-width:100%}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-block:nth-child(2){padding-top:12px;border-top:1px solid #c2c2c2}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-block > .content{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;text-decoration:none}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-block > .content:hover .post-title{color:#01aff4;-webkit-transition:color 99ms;-moz-transition:color 99ms;-o-transition:color 99ms;-ms-transition:color 99ms;transition:color 99ms}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-media{width:76px;aspect-ratio:1/1;display:inline-block;vertical-align:middle;padding-top:4px}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-media .thumbnail-image{width:100%;aspect-ratio:1/1;object-fit:cover;object-position:top;display:inline-block;vertical-align:middle}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-content{display:inline-block;width:calc(100% - 76px);padding-left:12px;vertical-align:middle}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap.ad-container{min-height:100px}#tns-frontpage #tns-frontpage-pagination{position:relative;padding:30px;text-align:center}#tns-frontpage #tns-frontpage-events{position:relative;min-height:350px}#tns-frontpage #tns-frontpage-newsletter{position:relative}#tns-frontpage #tns-frontpage-newsletter .content-column{min-height:unset}#tns-frontpage #tns-frontpage-ebooks{position:relative;margin-bottom:25px}#tns-frontpage #tns-frontpage-ebooks .content-column{min-height:unset}#tns-frontpage #tns-frontpage-disclosure{position:relative;padding-top:60px;padding-bottom:60px}@media (max-width:1023.98px){#tns-frontpage #tns-frontpage-disclosure{padding-top:50px;padding-bottom:50px}}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-disclosure{padding-top:30px;padding-bottom:30px}}#tns-frontpage #tns-frontpage-disclosure .content{max-width:800px;margin-left:auto;margin-right:auto}@media (max-width:991.98px){#tns-frontpage #tns-frontpage-disclosure .content{padding-left:30px;padding-right:30px}}#tns-frontpage #tns-frontpage-disclosure .content .disclosure{color:#515151;font-size:12px;font-style:italic;text-align:left;line-height:133%;margin-bottom:20px}#tns-frontpage #tns-frontpage-archive{position:relative;margin-top:50px}@media (max-width:767px){#tns-frontpage #tns-frontpage-archive{margin-top:30px}}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row-wrap > .row:last-child:after{display:none}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -15px;padding-bottom:40px}@media (max-width:1199.98px){#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25{min-width:33.333%;max-width:33.333%}}@media (max-width:1023.98px){#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25{min-width:50%;max-width:50%}}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row{-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25{min-width:100%;max-width:100%}}@media (max-width:639.98px){#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row{-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25{padding:0 15px}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25:nth-child(4n+4){border-right:none}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card{margin-bottom:30px;cursor:pointer}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card figure{object-position:top}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card figure img{display:block;margin-bottom:12px;width:100%;aspect-ratio:1.86/1;object-fit:cover}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card:hover .post-title{color:#01aff4}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card{border-bottom:1px solid #c2c2c2;margin-bottom:0;padding:7px 0 12px}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card .latest-post-media{width:76px;height:76px;aspect-ratio:1/1;display:inline-block;vertical-align:middle;padding-top:4px}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card .latest-post-media img{width:100%;aspect-ratio:1/1;object-fit:cover;object-position:top;display:inline-block;vertical-align:middle}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card .latest-post-content{display:inline-block;width:calc(100% - 81px);padding-left:12px;vertical-align:top}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25:last-child .story-card{border:none}}#tns-frontpage #tns-frontpage-archive-pagination{position:relative;padding:30px;text-align:center}.legal-page-content{max-width:830px;padding-top:50px;padding-bottom:50px}@media (max-width:767px){.legal-page-content{padding-top:30px;padding-bottom:30px}}.legal-page-content h1{font-size:36px;font-weight:normal;line-height:1.33;color:#3c3c3c}@media (max-width:767.98px){.legal-page-content h1{font-size:28px}}.legal-page-content .description{position:relative}.legal-page-content .description h2,.legal-page-content .description h3,.legal-page-content .description h4,.legal-page-content .description h5,.legal-page-content .description h6{line-height:1.3;font-weight:normal;color:#3c3c3c}.legal-page-content .description p,.legal-page-content .description li{color:#3c3c3c;font-weight:normal;line-height:1.4;font-size:16px}@media (max-width:767.98px){.legal-page-content .description p,.legal-page-content .description li{font-size:14px}}@media (max-width:830px){.legal-page-content .description table,.legal-page-content .description thead,.legal-page-content .description tbody,.legal-page-content .description th,.legal-page-content .description td,.legal-page-content .description tr{display:block}}@media (max-width:830px){.legal-page-content .description thead tr{position:absolute !important;top:-9999px !important;left:-9999px !important;z-index:-9999 !important}}@media (max-width:830px){.legal-page-content .description td{border:none !important;border-bottom:1px solid #d7d7d7 !important;width:100% !important}}@media (max-width:830px){.legal-page-content .description td:before{content:attr(data-label);font-weight:bold;height:100%;width:40%;padding-right:10px}}#tns-newsletter{position:relative;padding-top:30px}@media (max-width:1279.98px){#tns-newsletter{padding-top:30px}}@media (max-width:767.98px){#tns-newsletter{padding-top:30px}}@media (min-width:1200px) and (max-width:1260px){#tns-newsletter .content-column{padding:0 30px}}#tns-newsletter #tns-newsletter-promo{position:relative;margin-bottom:50px}#tns-newsletter #tns-newstack-update{position:relative}#tns-newsletter #tns-newstack-update .title{color:#3c3c3c;font-size:18px;font-weight:600;margin-bottom:30px}#tns-newsletter #tns-newstack-update .newstack-update{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}@media (max-width:767.98px){#tns-newsletter #tns-newstack-update .newstack-update{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}#tns-newsletter #tns-newstack-update .newstack-left{width:100%;max-width:500px}@media (max-width:767.98px){#tns-newsletter #tns-newstack-update .newstack-left{max-width:100%;padding-bottom:30px}}#tns-newsletter #tns-newstack-update .newstack-left .left-title{color:#3c3c3c;font-size:42px;font-weight:bold;line-height:1.2}@media (max-width:767.98px){#tns-newsletter #tns-newstack-update .newstack-left .left-title{font-size:30px}}@media (max-width:539px){#tns-newsletter #tns-newstack-update .newstack-left .left-title{padding-right:0}}#tns-newsletter #tns-newstack-update .newstack-right{max-width:510px;width:100%}@media (max-width:1023.98px){#tns-newsletter #tns-newstack-update .newstack-right{max-width:280px}}@media (max-width:767.98px){#tns-newsletter #tns-newstack-update .newstack-right{max-width:100%}}#tns-newsletter #tns-newstack-update .newstack-right .subtitle{font-size:28px;color:#3c3c3c;line-height:1.3;margin:0 0 70px}@media (max-width:1023.98px){#tns-newsletter #tns-newstack-update .newstack-right .subtitle{font-size:16px;margin:0 0 20px}}@media (max-width:767.98px){#tns-newsletter #tns-newstack-update .newstack-right .subtitle{margin:0 0 30px}}#tns-newsletter #tns-newstack-update .newstack-right .newsletter-form-inputs{max-width:100%}#tns-newsletter #tns-past-newsletters{position:relative;padding-bottom:100px}@media (max-width:1024.98px){#tns-newsletter #tns-past-newsletters{padding-bottom:70px}}@media (max-width:767.98px){#tns-newsletter #tns-past-newsletters{padding-bottom:50px}}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block{display:block;padding:20px;padding-left:0;text-decoration:none;border-bottom:1px solid #a5a9b0}@media (max-width:767.98px){#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block{padding-left:0}}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block .title{color:#3c3c3c;font-size:28px;line-height:1.3;margin-bottom:3px}@media (max-width:767px){#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block .title{font-size:18px;margin-bottom:0}}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block .dateline{display:block;color:#3c3c3c;text-transform:uppercase}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block .dateline .issue{display:inline-block;width:auto;color:#515151;font-size:14px;font-weight:500}@media (max-width:767px){#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block .dateline .issue{font-size:12px}}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block .dateline .date{display:inline-block;width:auto;color:#a5a9b0;font-size:14px;font-weight:500;margin-left:10px}@media (max-width:767px){#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block .dateline .date{font-size:12px}}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block:hover .title{color:#01aff4}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-archive-link{margin-top:30px;padding:10px 0;font-size:16px;text-decoration:none;display:inline-block;font-weight:600}@media (max-width:1023.98px){#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-archive-link{font-size:14px}}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-archive-link svg{fill:#ff3287;height:14px;display:inline-block;margin-left:6px;position:relative;top:2px}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-archive-link:hover{color:#01aff4}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-archive-link:hover svg{fill:#01aff4}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-load-more{margin-top:20px}#tns-newsletter #tns-featured-newsletter{position:relative}#tns-newsletter #tns-featured-newsletter .featured-newsletter{display:block;position:relative;width:100%;height:auto;padding:40px;margin-top:60px;margin-bottom:60px;border:1px solid #01aff4}@media (max-width:699px){#tns-newsletter #tns-featured-newsletter .featured-newsletter{padding:30px}}@media (max-width:499px){#tns-newsletter #tns-featured-newsletter .featured-newsletter{padding:20px}}#tns-newsletter #tns-featured-newsletter .featured-newsletter:hover{border:1px solid #ff3287}#tns-newsletter #tns-featured-newsletter .featured-newsletter:hover .title{color:#ff3287}#tns-newsletter #tns-featured-newsletter .issue{color:#01aff4;text-transform:uppercase;font-size:18px;font-weight:600;display:inline-block;width:100%;margin:0 0 60px;line-height:1;vertical-align:top}@media (max-width:1023.98px){#tns-newsletter #tns-featured-newsletter .issue{font-size:16px;margin:0 0 20px}}@media (max-width:767.98px){#tns-newsletter #tns-featured-newsletter .issue{font-size:14px}}#tns-newsletter #tns-featured-newsletter .title{display:block;width:100%;color:#3c3c3c;font-size:46px;font-weight:600;line-height:1.2}@media (max-width:1023.98px){#tns-newsletter #tns-featured-newsletter .title{font-size:32px}}@media (max-width:767.98px){#tns-newsletter #tns-featured-newsletter .title{font-size:30px}}@media (max-width:699px){#tns-newsletter #tns-featured-newsletter .title{font-size:24px}}@media (max-width:499px){#tns-newsletter #tns-featured-newsletter .title{font-size:20px}}@media (max-width:399px){#tns-newsletter #tns-featured-newsletter .title{font-size:18px}}#tns-newsletter #tns-featured-newsletter .dateline{position:relative;color:#a5a9b0;font-size:14px;font-weight:500;line-height:1.3;letter-spacing:1.2px;vertical-align:middle;text-transform:uppercase}#tns-podcasts{position:relative;margin-bottom:50px}#tns-podcasts #tns-podcasts-cover{position:relative;padding-top:50px;padding-bottom:50px}@media (max-width:767px){#tns-podcasts #tns-podcasts-cover{padding-top:30px;padding-bottom:30px}}#tns-podcasts #tns-podcasts-cover .featured-column{padding-right:30px}@media (max-width:767px){#tns-podcasts #tns-podcasts-cover .featured-column{min-width:100%;max-width:100%;padding-right:0}}@media (max-width:767px){#tns-podcasts #tns-podcasts-cover .sidebar-column{display:none}}#tns-podcasts #tns-podcasts-cover .section-heading{color:#fff;border-top:1px solid #fff;opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast{position:relative}@media (max-width:499px){#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-podcast-image-column{display:none}}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-podcast-image-column .featured-podcast-image{display:block;width:100%;height:auto;border:1px solid #fff}@media (max-width:499px){#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column{min-width:100%;max-width:100%}}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details{display:block;height:auto;color:#fff;padding-left:20px}@media (max-width:499px){#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details{padding-left:0}}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .episode-title{display:block;color:#fff;font-size:27px;font-weight:500;line-height:1.2;margin-bottom:10px}@media (max-width:767px){#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .episode-title{font-size:24px;margin-bottom:30px}}@media (max-width:767px){#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .episode-description{display:none}}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .listen-now-button{display:inline-block;background-color:#fff;text-decoration:none;border-radius:24px;padding:12px 25px;font-size:18px;color:#01aff4;font-weight:500;-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .listen-now-button svg{height:14px;width:20px;fill:#01aff4;-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .listen-now-button .play-icon{margin-right:10px;-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .listen-now-button:hover{background-color:#ff3287;color:#fff}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .listen-now-button:hover svg{fill:#fff}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar{position:relative}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video{padding:0 0 23px;margin:0 0 23px;border-bottom:1px solid #c2c2c2;text-decoration:none;display:block}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video:last-child{border-bottom:0;padding:0;margin:0}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .image{position:relative;margin-bottom:10px;border:2px solid transparent}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .image .play-icon{position:absolute;left:50%;top:50%;color:#fff;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-size:30px;z-index:1}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .image .play-icon svg{fill:#fff;width:35px}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .image img{display:block;width:100%;height:auto}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .content{position:relative}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .content .title{color:#fff;font-size:18px;line-height:1.28}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .content .dateline{display:block;color:#fff;font-size:12px;font-weight:500;letter-spacing:1.2px;text-transform:uppercase}@media (max-width:1023.98px){#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .content .dateline{font-size:10px}}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video:hover .image{border:2px solid #fff}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video:hover .content .title{color:#fff;-webkit-transition:all 99ms ease-in-out;-moz-transition:all 99ms ease-in-out;-o-transition:all 99ms ease-in-out;-ms-transition:all 99ms ease-in-out;transition:all 99ms ease-in-out}#tns-podcasts #tns-podcasts-subscribe{position:relative}#tns-podcasts #tns-episodes{position:relative;padding:0 0 53px}@media (max-width:767.98px){#tns-podcasts #tns-episodes{left:-30px;width:calc(100% + 60px);padding:0 0 30px}}#tns-podcasts #tns-episodes .row{margin:0 -21px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .row{margin:0 -16px}}@media (max-width:767.98px){#tns-podcasts #tns-episodes .row{margin:0;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}#tns-podcasts #tns-episodes .row .col-66{padding:0 20px}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .row .col-66{padding:0 16px;width:calc(100% - 279px);min-width:inherit}}@media (max-width:767.98px){#tns-podcasts #tns-episodes .row .col-66{padding:0;width:100%;min-width:fit-content}}#tns-podcasts #tns-episodes .row .col-33{padding:0 20px}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .row .col-33{padding:0 16px;max-width:312px;width:100%;min-width:inherit}}@media (max-width:767.98px){#tns-podcasts #tns-episodes .row .col-33{padding:0;max-width:100%}}#tns-podcasts #tns-episodes .tns-makers{position:relative}@media (max-width:767.98px){#tns-podcasts #tns-episodes .tns-makers{padding:0 30px 30px}}#tns-podcasts #tns-episodes .tns-makers .makers-title{margin-bottom:30px}#tns-podcasts #tns-episodes .tns-makers .makers-main{margin-bottom:30px}#tns-podcasts #tns-episodes .tns-makers .more-podcasts-link{text-decoration:none;display:inline-block;color:#ff3287;text-transform:capitalize;cursor:pointer}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-makers .more-podcasts-link{margin:20px 0 0;font-size:14px}}@media (max-width:767.98px){#tns-podcasts #tns-episodes .tns-makers .more-podcasts-link{margin:30px 0 0}}#tns-podcasts #tns-episodes .tns-makers .more-podcasts-link svg{fill:#ff3287;display:inline-block;height:12px}#tns-podcasts #tns-episodes .tns-makers .more-podcasts-link:hover{color:#01aff4;-webkit-transition:all 99ms ease-in-out;-moz-transition:all 99ms ease-in-out;-o-transition:all 99ms ease-in-out;-ms-transition:all 99ms ease-in-out;transition:all 99ms ease-in-out}#tns-podcasts #tns-episodes .tns-makers .more-podcasts-link:hover svg{fill:#01aff4}#tns-podcasts #tns-episodes .tns-makers .podcast-episode{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;text-decoration:none;padding-bottom:23px;margin-bottom:23px;border-bottom:1px solid #c2c2c2}#tns-podcasts #tns-episodes .tns-makers .podcast-episode:last-child{border-bottom:0;padding:0;margin:0}#tns-podcasts #tns-episodes .tns-makers .podcast-episode .icon{position:relative;width:80px;height:80px;border-radius:100%;background:transparent -webkit-linear-gradient(283deg, #e74886 0%, #f78b5a 69%, #e74886 100%) 0% 0% no-repeat padding-box;background:transparent -moz-linear-gradient(283deg, #e74886 0%, #f78b5a 69%, #e74886 100%) 0% 0% no-repeat padding-box;background:transparent -o-linear-gradient(283deg, #e74886 0%, #f78b5a 69%, #e74886 100%) 0% 0% no-repeat padding-box;background:transparent -ms-linear-gradient(283deg, #e74886 0%, #f78b5a 69%, #e74886 100%) 0% 0% no-repeat padding-box;background:transparent linear-gradient(167deg, #e74886 0%, #f78b5a 69%, #e74886 100%) 0% 0% no-repeat padding-box}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-makers .podcast-episode .icon{height:60px;width:60px}}#tns-podcasts #tns-episodes .tns-makers .podcast-episode .icon .play-icon{position:absolute;top:50%;left:50%;-webkit-transform:translate(-10px,-25px);-moz-transform:translate(-10px,-25px);-o-transform:translate(-10px,-25px);-ms-transform:translate(-10px,-25px);transform:translate(-10px,-25px)}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-makers .podcast-episode .icon .play-icon{-webkit-transform:translate(-8px,-25px);-moz-transform:translate(-8px,-25px);-o-transform:translate(-8px,-25px);-ms-transform:translate(-8px,-25px);transform:translate(-8px,-25px)}}#tns-podcasts #tns-episodes .tns-makers .podcast-episode .icon .play-icon svg{width:30px;fill:#fff}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-makers .podcast-episode .icon .play-icon svg{width:25px}}#tns-podcasts #tns-episodes .tns-makers .podcast-episode .content{width:calc(100% - 100px);padding-left:42px}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-makers .podcast-episode .content{width:calc(100% - 63px);padding-left:25px}}#tns-podcasts #tns-episodes .tns-makers .podcast-episode .content .episode-title{color:#3c3c3c;font-size:20px;line-height:1.28}#tns-podcasts #tns-episodes .tns-makers .podcast-episode .content .episode-dateline{display:block;color:#a5a9b0;font-size:12px;font-weight:500;letter-spacing:1.2px;text-transform:uppercase;margin-bottom:7px}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-makers .podcast-episode .content .episode-dateline{font-size:10px}}#tns-podcasts #tns-episodes .tns-makers .podcast-episode .content p{color:#3c3c3c;font-size:16px;line-height:1.33;margin-bottom:15px}#tns-podcasts #tns-episodes .tns-makers .podcast-episode:hover .content .episode-title{color:#01aff4;-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}#tns-podcasts #tns-episodes .tns-videos{position:relative}@media (max-width:767.98px){#tns-podcasts #tns-episodes .tns-videos{padding:0 30px}}#tns-podcasts #tns-episodes .tns-videos .videos-title{margin-bottom:30px}@media (max-width:767.98px){#tns-podcasts #tns-episodes .tns-videos .videos-title{padding-right:30px}}#tns-podcasts #tns-episodes .tns-videos .videos-main-block{position:relative}#tns-podcasts #tns-episodes .tns-videos .videos-main{position:relative;margin-bottom:30px}#tns-podcasts #tns-episodes .tns-videos .videos-single{padding:0 0 23px;margin:0 0 23px;border-bottom:1px solid #c2c2c2;text-decoration:none;display:block}#tns-podcasts #tns-episodes .tns-videos .videos-single:last-child{border-bottom:0;padding:0;margin:0}#tns-podcasts #tns-episodes .tns-videos .videos-single .image{position:relative;margin-bottom:10px}#tns-podcasts #tns-episodes .tns-videos .videos-single .image .play-icon{position:absolute;left:50%;top:50%;color:#fff;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-size:30px;z-index:1}#tns-podcasts #tns-episodes .tns-videos .videos-single .image .play-icon svg{fill:#fff;width:35px}#tns-podcasts #tns-episodes .tns-videos .videos-single .image img{display:block;width:100%;height:auto}#tns-podcasts #tns-episodes .tns-videos .videos-single .image .eyebrow{position:absolute;right:16px;top:16px;height:50px;width:50px;background-color:#fff;border-radius:100%;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;font-size:12px;color:#ff3287;font-weight:600;text-transform:uppercase;letter-spacing:1.2px}#tns-podcasts #tns-episodes .tns-videos .videos-single .content{position:relative}#tns-podcasts #tns-episodes .tns-videos .videos-single .content .video-title{color:#3c3c3c;font-size:18px;line-height:1.28}#tns-podcasts #tns-episodes .tns-videos .videos-single .content .video-dateline{display:block;color:#a5a9b0;font-size:12px;font-weight:500;letter-spacing:1.2px;text-transform:uppercase}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-videos .videos-single .content .video-dateline{font-size:10px}}#tns-podcasts #tns-episodes .tns-videos .videos-single:hover .content .video-title{color:#01aff4;-webkit-transition:all 99ms ease-in-out;-moz-transition:all 99ms ease-in-out;-o-transition:all 99ms ease-in-out;-ms-transition:all 99ms ease-in-out;transition:all 99ms ease-in-out}#tns-podcasts #tns-episodes .tns-videos .tns-videos-slider{padding-right:90px}@media (min-width:767.98px){#tns-podcasts #tns-episodes .tns-videos .tns-videos-slider{display:none}}#tns-podcasts #tns-episodes .tns-videos .more-videos-link{text-decoration:none;display:inline-block;color:#ff3287;text-transform:capitalize}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-videos .more-videos-link{margin:30px 0 0;font-size:14px}}@media (max-width:767.98px){#tns-podcasts #tns-episodes .tns-videos .more-videos-link{margin:20px 0 0}}#tns-podcasts #tns-episodes .tns-videos .more-videos-link svg{fill:#ff3287;display:inline-block;height:12px}#tns-podcasts #tns-episodes .tns-videos .more-videos-link:hover{color:#01aff4;-webkit-transition:all 99ms ease-in-out;-moz-transition:all 99ms ease-in-out;-o-transition:all 99ms ease-in-out;-ms-transition:all 99ms ease-in-out;transition:all 99ms ease-in-out}#tns-podcasts #tns-episodes .tns-videos .more-videos-link:hover svg{fill:#01aff4}#tns-podcasts #tns-podcasts-sponsor-spotlight{position:relative}#tns-podcasts #tns-podcasts-events{position:relative}#tns-podcasts #tns-podcasts-newsletter{position:relative}#tns-rss-feeds{position:relative;padding-top:50px;padding-bottom:50px}@media (max-width:767px){#tns-rss-feeds{padding-top:30px;padding-bottom:30px}}#tns-rss-feeds .content-column{max-width:830px}#tns-post{position:relative;padding-top:50px;padding-bottom:60px}#tns-post .content-column-post-body{min-height:unset;max-width:930px}#tns-post .content-column-post-body #tns-post-headline{position:relative}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-breadcrumb{position:relative;margin-bottom:20px}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-breadcrumb .breadcrumb{width:100%;color:#a5a9b0;font-size:13px;font-weight:600;letter-spacing:.03px;text-transform:uppercase}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-breadcrumb .breadcrumb a{vertical-align:baseline;text-decoration:none;color:#a5a9b0}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-breadcrumb .breadcrumb a:hover{color:#01aff4}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-title{position:relative}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-title .title{display:block;width:100%;color:#3c3c3c;font-size:45px;font-weight:500;line-height:1.07;letter-spacing:.7px;margin-bottom:15px}@media (max-width:1023.98px){#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-title .title{font-size:40px}}@media (max-width:767.98px){#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-title .title{font-size:30px}}@media (max-width:399.98px){#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-title .title{font-size:27px}}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-title .post-excerpt{color:#515151;padding-right:10%;margin-bottom:10px}@media (max-width:767.98px){#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-title .post-excerpt{padding-right:0}}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-byline{position:relative;padding-right:10%;margin-bottom:30px}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-byline .date{width:100%;color:#515151;font-size:13px;font-weight:500;letter-spacing:.03px}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-byline .author{width:100%;color:#515151;font-size:13px;font-weight:500;letter-spacing:.03px;margin:0;padding:0}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-byline .author a{vertical-align:baseline;text-decoration:none;color:#01aff4}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-byline .author a:hover{color:#ff3287}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-byline .sponsor-badge{font-size:12px;color:#ff3287;display:inline-block;width:100%;vertical-align:middle;text-align:left;text-transform:uppercase;font-weight:normal;margin:0;padding:0;letter-spacing:.2px}#tns-post .content-column-post-body #tns-post-key-media{position:relative;margin-bottom:30px}#tns-post .content-column-post-body #tns-post-key-media .content-column{min-height:unset}#tns-post .content-column-post-body #tns-post-key-media img{display:block;width:100%;height:auto}#tns-post .content-column-post-body #tns-post-key-media .image-disclosure,#tns-post .content-column-post-body #tns-post-key-media .image-disclosure .attribution{color:#a5a9b0;font-size:12px;line-height:1.33}#tns-post .content-column-post-body #tns-post-key-media .image-disclosure a,#tns-post .content-column-post-body #tns-post-key-media .image-disclosure .attribution a{color:#01aff4;text-decoration:none}#tns-post .content-column-post-body #tns-post-key-media .image-disclosure a:hover,#tns-post .content-column-post-body #tns-post-key-media .image-disclosure .attribution a:hover{color:#ff3287}#tns-post .content-column-post-body #tns-post-key-media .image-disclosure{padding-top:7px}#tns-post .content-column-post-body #tns-post-body{position:relative}#tns-post .content-column-post-body #tns-post-body .copy-column{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:0%}#tns-post .content-column-post-body #tns-post-body .sidebar-column{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:0 0 315px;-ms-flex:0 0 315px;flex:0 0 315px}@media (max-width:767px){#tns-post .content-column-post-body #tns-post-body .sidebar-column{display:none}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content{position:relative;padding-right:15px;padding-bottom:20px}@media (max-width:767.98px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content{padding-right:0}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .editors-note{color:#515151;font-size:14px;font-style:italic;margin-bottom:30px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .sponsored-post-disclosure{display:none}@media (max-width:767px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .sponsored-post-disclosure{display:block}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content h1{margin-bottom:20px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content img.alignnone,#tns-post .content-column-post-body #tns-post-body #tns-post-body-content img.aligncenter{width:100%;height:auto}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignnone,#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.aligncenter{display:block;width:100%;padding:0;margin:0}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignnone img,#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.aligncenter img{display:block;width:100%;height:auto}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption-text{padding-top:5px;font-size:12px;font-style:italic}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignleft{float:left;min-width:0;margin-right:10px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignleft img{display:block;width:auto}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignleft .wp-caption-text{margin-bottom:0}@media (max-width:499px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignleft{min-width:100%;float:none;margin-left:0;margin-right:0}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignleft img{width:100%;height:auto}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignleft .wp-caption-text{margin-bottom:30px}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignright{float:right;min-width:0;margin-left:10px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignright img{display:block;width:auto}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignright .wp-caption-text{margin-bottom:0}@media (max-width:499px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignright{min-width:100%;float:none;margin-left:0;margin-right:0}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignright img{width:100%;height:auto}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignright .wp-caption-text{margin-bottom:30px}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .infoBlock{display:none}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-logo-slug svg{display:block;width:21px;height:auto;margin-bottom:30px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .ad-container--inline{margin-bottom:10px;border-bottom:1px solid #c2c2c2;border-top:1px solid #c2c2c2;padding:10px 0;text-align:center}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .ad-container--inline div{height:195px !important}@media (min-width:768px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .ad-container--inline{display:none}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content iframe{width:100%;aspect-ratio:16/9;display:inline-block}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .media-direct-link{display:block;font-size:15px;font-weight:500;margin:0}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .media-direct-link a{color:#01aff4}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .media-direct-link a:hover{color:#ff3287}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .podcast-embed-subscription-links{position:relative;color:#515151;font-size:13px;margin:0;margin-bottom:30px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .podcast-embed-subscription-links a{color:#01aff4;font-size:13px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .podcast-embed-subscription-links a:hover{color:#ff3287}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:1px;width:100%;padding:15px;background:#f6f8fa;cursor:pointer}@media (max-width:499px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block{padding:15px}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block:hover .copy .heading{color:#ff3287}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block:hover .button button{background:#ff3287}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .copy{padding-right:20px;color:#515151}@media (max-width:499px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .copy{min-width:100%;max-width:100%;padding-right:0}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .copy .heading{font-size:11px;font-weight:800;color:#8da6c0}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .copy .cta{font-size:14px;line-height:1.33}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .button{padding-top:25px}@media (max-width:499px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .button{min-width:100%;max-width:100%;padding-top:15px}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .button .youtube-subscribe-button{font-size:13px;font-weight:800;line-height:27px;height:30px;background:#01aff4}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .button .youtube-subscribe-button svg{display:inline-block;height:12px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .button .youtube-subscribe-button svg path{fill:#fff}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author{position:relative;border-top:1px solid #a5a9b0;padding-top:30px;margin-bottom:20px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link{display:block;color:#3c3c3c}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link .author-profile-photo-column{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:60px;max-width:60px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link .author-profile-photo-column img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:30px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link .post-author-bio-column{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding-left:20px;font-size:13px;color:#3c3c3c;display:inline-block;line-height:135%}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link .post-author-bio-column .post-author-bio-wrap{position:relative}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link .post-author-bio-column .post-author-bio-wrap .post-author-bio{position:relative}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link .post-author-bio-column .author-more-cta{color:#3c3c3c;margin-top:20px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link .post-author-bio-column .author-more-cta svg{height:8px;width:auto;fill:#3c3c3c}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link:hover{color:#3c3c3c}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link:hover .post-author-bio-column .author-more-cta{color:#ff3287}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link:hover .post-author-bio-column .author-more-cta svg{fill:#ff3287}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar{position:sticky;top:110px;padding-left:15px;padding-bottom:45px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar #div-gpt-ad-native-sidebar-1{min-height:250px;margin-bottom:20px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar .tns-post-body-sidebar-trending-stories{position:relative}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar #tns-post-body-sidebar-related-stories{position:relative}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar #tns-post-body-sidebar-related-stories .section-heading{font-size:13px;font-weight:700;margin-bottom:15px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar #tns-post-body-content{position:relative}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar #tns-post-body-sidebar-share{position:relative;margin-bottom:30px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar #tns-post-body-sidebar-share .section-heading{font-size:13px;font-weight:700;margin-bottom:10px}#tns-post .content-column-mobile-footer{display:none}@media (max-width:767px){#tns-post .content-column-mobile-footer{display:block}}#tns-post .content-column-mobile-footer .mobile-share{margin-bottom:40px}#tns-post .content-column-mobile-footer .mobile-share .section-heading{margin-bottom:15px}#tns-post .content-column-mobile-footer .mobile-share .share-media-icon{margin-right:15px}#tns-post .content-column-mobile-footer .mobile-share .share-media-icon svg{height:25px}#tns-post .content-column-mobile-footer .mobile-related-stories .related-story{font-size:17px;font-weight:500}#tns-post .content-column-post-footer #tns-post-newsletter{position:relative}.tns-sponsored-post-disclosure{position:relative}.tns-sponsored-post-disclosure .sponsor-disclosure{color:#a5a9b0;font-size:12px;line-height:1.2;margin-bottom:10px}.tns-sponsored-post-disclosure .sponsor-disclosure a{color:#01aff4;text-decoration:none}.tns-sponsored-post-disclosure .sponsor-disclosure a:hover{color:#ff3287}.tns-sponsored-post-disclosure .sponsor-disclosure:last-child{margin-bottom:20px}.tns-sponsor-mention-disclosure{position:relative}.tns-sponsor-mention-disclosure .sponsor-disclosure{color:#a5a9b0;font-size:12px;line-height:1.2;margin-bottom:10px}.tns-sponsor-mention-disclosure .sponsor-disclosure a{color:#01aff4;text-decoration:none}.tns-sponsor-mention-disclosure .sponsor-disclosure a:hover{color:#ff3287}.tns-insight-portcos-disclosure{position:relative}@media (max-width:1023px){.tns-insight-portcos-disclosure{padding-bottom:30px}}.tns-insight-portcos-disclosure .content{max-width:870px;margin-left:auto;margin-right:auto}.tns-insight-portcos-disclosure .content .sponsor-disclosure{margin-bottom:7px}.tns-insight-portcos-disclosure .content .disclosure{color:#a5a9b0;font-size:12px;text-align:left;line-height:133%;margin-bottom:7px}.tns-insight-portcos-disclosure .content .disclosure:last-child{margin-bottom:0}#tns-popover{position:fixed;display:block;right:30px;bottom:90px;max-width:330px;background:#eef6fc;-webkit-box-shadow:5px 5px 10px rgba(30,35,41,0.21);box-shadow:5px 5px 10px rgba(30,35,41,0.21);z-index:1001}#tns-popover .close{position:absolute;top:5px;right:5px;z-index:2;cursor:pointer}#tns-popover .close svg{height:14px}#tns-popover .close svg path{fill:#8da6c0}#tns-popover .close:hover svg path{fill:#ff3287}#tns-popover .sponsor-popover-link .content{text-align:left;line-height:1.2;letter-spacing:0}#tns-popover .sponsor-popover-link .content .logo{display:block;max-height:33px;margin-bottom:10px}#tns-popover .sponsor-popover-link .content .copy-col{padding:15px;padding-top:10px;padding-right:40px;padding-bottom:10px}#tns-popover .sponsor-popover-link .content .headline{color:#0e1013;font-size:15px;font-weight:800}#tns-popover .sponsor-popover-link .content .copy{color:#0e1013;font-size:15px}#tns-popover .sponsor-popover-link:hover .headline{color:#ff3287}#tns-popover .sponsor-popover-link:hover .copy{color:#ff3287}#tns-sponsor .some-class-here{position:relative}#tns-sponsors{position:relative;padding-top:50px;padding-bottom:50px}@media (max-width:767px){#tns-sponsors{padding-top:30px}}#tns-sponsors .content-column{min-height:unset}#tns-sponsors .content-column >.row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-sponsors .content-column .col-75{padding-right:15px}@media (max-width:991.98px){#tns-sponsors .content-column .col-75{min-width:100%;max-width:100%;padding:0}}#tns-sponsors .content-column .col-25{padding-left:15px}@media (max-width:991.98px){#tns-sponsors .content-column .col-25{min-width:100%;max-width:100%;padding:0}}#tns-sponsors #tns-sponsors-grid .sponsors-grid-wrap{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;margin:0 -14px}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card{width:calc(100% / 3);margin-bottom:40px;padding:0 14px}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card{width:calc(100% / 2);margin-bottom:30px}}@media (max-width:575.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card{width:100%}}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-logo{width:100%;aspect-ratio:1.86/1;background:#eaeff3;margin-bottom:15px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-logo{margin-bottom:10px}}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-logo .logo-img{aspect-ratio:1.86/1;object-fit:contain;max-width:70%}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content{width:100%}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-title{width:100%;font-size:26px;color:#3c3c3c;font-weight:normal;line-height:1.35;text-transform:capitalize;margin:0 0 15px 0;display:inline-block;text-decoration:none}@media (max-width:1024.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-title{font-size:22px}}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-title{margin-bottom:10px;font-size:20px}}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-title:hover{color:#01aff4}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description{width:100%;color:#3c3c3c;font-size:16px;line-height:1.3;font-weight:normal}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description{font-size:14px}}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description p,#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description a{width:100%;font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.3;margin-bottom:15px}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description p,#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description a{font-size:14px}}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description a{color:#ff3287;margin-bottom:0;text-decoration:none}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description a:hover{color:#01aff4;text-decoration:none}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-action{width:100%}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-action .anchor-link{font-size:16px;color:#ff3287;font-weight:bold;line-height:100%;display:inline-block;text-decoration:none;padding:8px 8px 8px 0}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-action .anchor-link{font-size:14px}}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-action .anchor-link:hover{color:#01aff4}#tns-sponsors #tns-sponsors-sponsorship-cta{position:relative;border-top:2px solid #ff3287;margin-top:60px;padding:40px 0 60px}@media (max-width:1024.98px){#tns-sponsors #tns-sponsors-sponsorship-cta{margin-top:40px;padding:30px 0 50px}}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-sponsorship-cta{margin-top:30px;padding:30px 0}}#tns-sponsors #tns-sponsors-sponsorship-cta .content{max-width:940px}#tns-sponsors #tns-sponsors-sponsorship-cta .subtitle{font-size:18px;color:#ff3287;font-weight:bold;text-align:center;line-height:1.3;width:100%;margin:0 auto 40px}@media (max-width:1023.98px){#tns-sponsors #tns-sponsors-sponsorship-cta .subtitle{margin-bottom:30px}}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-sponsorship-cta .subtitle{font-size:16px}}#tns-sponsors #tns-sponsors-sponsorship-cta .title{font-size:42px;color:#ff3287;font-weight:600;text-align:center;line-height:1.3;width:100%;margin:0 auto 50px}@media (max-width:1023.98px){#tns-sponsors #tns-sponsors-sponsorship-cta .title{font-size:36px;margin-bottom:35px}}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-sponsorship-cta .title{font-size:32px}}@media (max-width:575.98px){#tns-sponsors #tns-sponsors-sponsorship-cta .title{font-size:28px}}#tns-sponsors #tns-sponsors-sponsorship-cta .action{width:100%;text-align:center}#tns-sponsors #tns-sponsors-sponsorship-cta .action .link{font-size:18px;color:#ff3287;font-weight:bold;text-align:center;line-height:1.3;padding:8px 10px;text-decoration:none;letter-spacing:0}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-sponsorship-cta .action .link{font-size:16px}}#tns-sponsors #tns-sponsors-sponsorship-cta .action .link:hover{color:#01aff4}#tns-sponsors #tns-sponsors-sponsorship-cta .action .link:hover svg{fill:#01aff4}#tns-sponsors #tns-sponsors-sponsorship-cta .action .link svg{display:inline-block;height:12px;fill:#ff3287}#tns-sponsors #tns-sponsors-founding-sponsors{position:relative;padding-top:30px;border-top:1px solid #a5a9b0}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-founding-sponsors{padding-top:25px;padding-bottom:15px}}#tns-sponsors #tns-sponsors-founding-sponsors .cover-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-founding-sponsors .blocks{min-width:100%;max-width:100%}}#tns-sponsors #tns-sponsors-founding-sponsors .link-action{margin-top:15px;width:100%}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-founding-sponsors .link-action{margin-top:10px;text-align:center}}#tns-sponsors #tns-sponsors-founding-sponsors .link-action .anchored-link{display:inline-block;text-decoration:none;color:#ff3287;position:relative;font-size:16px;font-weight:bold;padding:8px 8px 8px 0}#tns-sponsors #tns-sponsors-founding-sponsors .link-action .anchored-link span{color:#3c3c3c;font-weight:normal}@media (max-width:1199.98px){#tns-sponsors #tns-sponsors-founding-sponsors .link-action .anchored-link{font-size:15px}}@media (max-width:1023.98px){#tns-sponsors #tns-sponsors-founding-sponsors .link-action .anchored-link{font-size:14px}}#tns-sponsors #tns-sponsors-founding-sponsors .link-action .anchored-link:hover{color:#01aff4}#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-content{position:relative}#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-content .title{font-size:24px;line-height:1.35;display:inline-block;width:100%;margin-bottom:10px}@media (max-width:1023.98px){#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-content .title{font-size:20px}}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-content .title{font-size:18px;text-align:center}}#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos{position:relative}#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;list-style:none;margin:0;padding:0 0 0 20px;-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list{padding-left:0}}#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 3 - 20px);width:100%;margin:0;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;min-height:45px;margin-bottom:45px}#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list .sponsor-logo .default-image,#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list .sponsor-logo img{max-height:45px}@media (max-width:1199.98px){#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list .sponsor-logo{margin-bottom:30px}}@media (max-width:1023.98px){#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 2 - 20px);width:100%}}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 3 - 20px);margin:25px 0}}@media (max-width:479.98px){#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 2 - 20px)}}#tns-sponsors #tns-sponsors-sidebar{border-top:2px solid #01aff4;padding-top:35px;position:sticky;top:30px}@media (max-width:991.98px){#tns-sponsors #tns-sponsors-sidebar{margin-top:30px}}#tns-sponsors #tns-sponsors-sidebar .subtitle{text-transform:uppercase;display:block;font-size:16px;letter-spacing:1.8px;font-weight:600;color:#01aff4;margin:0 0 30px;text-align:center}@media (max-width:1023.98px){#tns-sponsors #tns-sponsors-sidebar .subtitle{font-size:14px}}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-sidebar .subtitle{margin:0 0 20px}}#tns-sponsors #tns-sponsors-sidebar .title{font-size:28px;color:#01aff4;font-weight:600;text-align:center;line-height:1.3;max-width:990px;width:100%;margin:0 auto 40px}@media (max-width:1023.98px){#tns-sponsors #tns-sponsors-sidebar .title{font-size:22px;margin:0 auto 25px}}#tns-sponsors #tns-sponsors-sidebar .action-button{width:100%;text-align:center}#tns-sponsors #tns-sponsors-sidebar .action-button .blue-button{display:inline-block;padding:12px 30px;background:#01aff4;border-radius:30px;color:#fff;font-size:16px;font-weight:bold;text-decoration:none;line-height:100%}#tns-sponsors #tns-sponsors-sidebar .action-button .blue-button:hover{background:#ff3287}#tns-sponsorship{position:relative;padding-top:50px;padding-bottom:50px}@media (max-width:767px){#tns-sponsorship{padding-top:30px;padding-bottom:30px}}#tns-sponsorship #tns-sponsorship-content{position:relative}#tns-sponsorship #tns-sponsorship-content .content-column{min-height:unset}#tns-sponsorship #tns-sponsorship-content .content-column .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:991.98px){#tns-sponsorship #tns-sponsorship-content .content-column .row .col-25{max-width:100%;min-width:100%}}@media (max-width:991.98px){#tns-sponsorship #tns-sponsorship-content .content-column .row .col-50{max-width:100%;min-width:100%}}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-become-sponsor{position:relative}@media (min-width:992px){#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-become-sponsor{padding-right:20px}}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-become-sponsor .bas-main-title{font-size:36px;font-weight:normal;width:100%;line-height:1;color:#01aff4;margin-bottom:20px;letter-spacing:0}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-become-sponsor .bas-subtitle{font-size:20px;font-weight:normal;width:100%;line-height:1.35;color:#01aff4;margin-bottom:20px;letter-spacing:0}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form{position:relative}@media (min-width:992px){#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form{padding-right:15px;padding-left:15px}}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .main-title{width:100%;color:#3c3c3c;font-size:20px;line-height:1.33;letter-spacing:0;margin-bottom:15px}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .description{width:100%;color:#3c3c3c;font-size:15px;letter-spacing:0;line-height:1.45}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .description ul{margin-bottom:0}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form{width:100%;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form legend{font-size:22px;font-weight:normal;width:100%;line-height:1.35;color:#01aff4;padding:45px 0;margin:0;letter-spacing:0}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-row{width:100%;margin-bottom:30px;display:inline-block;vertical-align:middle}@media (max-width:767.98px){#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-row{margin-bottom:20px}}@media (min-width:768px){#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-row.half-width:not(.full-width){width:calc(100% / 2 - 15px)}}@media (min-width:768px){#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-row.half-width:not(.full-width):nth-child(even){margin-left:30px}}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-input{border:1px solid #01aff4;margin-bottom:0}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-textarea{border:1px solid #01aff4}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-checkbox{font-size:14px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;color:#3c3c3c;cursor:pointer}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-checkbox input[type="checkbox"],#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-checkbox input[type="radio"]{width:20px;height:20px;border:1px solid #01aff4;margin:3px 10px 0 0;cursor:pointer}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-checkbox span{font-size:14px;color:#3c3c3c;letter-spacing:.2px;font-weight:bold;width:calc(100% - 30px);display:inline-block}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .error{color:#ff3287;background:rgba(255,50,135,0.12);border:1px solid #ff3287}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .error::placeholder{color:#ff3287}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .sponsorship-submit-button{min-width:200px;color:#fff;text-transform:capitalize;background:#01aff4;border-radius:5px}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .sponsorship-submit-button:hover,#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .sponsorship-submit-button:focus{background:#ff3287}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .sponsorship-submit-button:disabled{background:#58a2bf}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar{position:relative}@media (min-width:992px){#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar{padding-left:20px}}@media (max-width:991.98px){#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar{margin-top:25px}}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .media-content{width:80px;margin-right:15px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;aspect-ratio:1/1;border-radius:40px;overflow:hidden}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .media-content .default-image{aspect-ratio:1/1;width:100%;object-fit:cover}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content{width:calc(100% - 95px)}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .title,#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .department,#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .designation,#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .description{font-size:12px;color:#3c3c3c;width:100%;line-height:1.3;font-weight:normal;letter-spacing:0}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .title,#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .description{font-weight:bold}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .social-share{width:100%;margin:5px 0;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .social-share .link{width:30px;height:30px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .social-share .link svg{width:19px}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .social-share .link svg.stroke{fill:none;stroke:#3c3c3c}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .social-share .link svg.fill{stroke:none;fill:#3c3c3c}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .social-share .link:hover .stroke{stroke:#01aff4}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .social-share .link:hover .fill{fill:#01aff4}#tns-sponsorship #tns-sponsorship-case-studies{position:relative;padding-top:40px;padding-bottom:0}#tns-sponsorship #tns-sponsorship-case-studies .tns-sponsorship-case-study-swiper{margin:0 -15px}#tns-sponsorship #tns-sponsorship-case-studies .tns-sponsorship-case-study-swiper .swiper-slide{padding:0 15px}#tns-sponsorship #tns-sponsorship-case-studies .content-column{min-height:unset}#tns-sponsorship #tns-sponsorship-case-studies .case-study-card{display:inline-block;width:100%;text-decoration:none}#tns-sponsorship #tns-sponsorship-case-studies .case-study-card:hover .case-study-cta{color:#ff3287}#tns-sponsorship #tns-sponsorship-case-studies .case-study-card:hover .case-study-cta svg{fill:#ff3287}#tns-sponsorship #tns-sponsorship-case-studies .case-study-heading{font-size:17px;font-weight:normal;line-height:1.35;text-transform:uppercase;width:100%;color:#01aff4;text-align:center;display:inline-block;letter-spacing:.5px;display:none}#tns-sponsorship #tns-sponsorship-case-studies .case-study-logo{position:relative;display:block;width:100%;height:150px;background:#eaeff3;margin-bottom:10px}#tns-sponsorship #tns-sponsorship-case-studies .case-study-logo img{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);max-width:75%}#tns-sponsorship #tns-sponsorship-case-studies .case-study-testimonial{width:100%;color:#3c3c3c;font-size:15px;line-height:1.33;text-align:left;padding-right:10px;margin-bottom:15px}#tns-sponsorship #tns-sponsorship-case-studies .case-study-testimonial-author,#tns-sponsorship #tns-sponsorship-case-studies .case-study-testimonial-organization{display:block;color:#0e1013;font-size:14px;text-align:left}#tns-sponsorship #tns-sponsorship-case-studies .case-study-testimonial-author{font-weight:600}#tns-sponsorship #tns-sponsorship-case-studies .case-study-testimonial-organization{margin-bottom:20px}#tns-sponsorship #tns-sponsorship-case-studies .case-study-cta{font-size:13px;color:#01aff4}#tns-sponsorship #tns-sponsorship-case-studies .case-study-cta svg{height:9px;fill:#01aff4;vertical-align:baseline}#tns-sponsorship #tns-sponsorship-disclaimer{position:relative}#tns-sponsorship #tns-sponsorship-disclaimer .content-column{min-height:unset;border-top:1px solid #a5a9b0}#tns-sponsorship #tns-sponsorship-disclaimer .content-column .description{font-size:9px;color:#3c3c3c;width:100%;display:inline-block;line-height:1.3;letter-spacing:0;padding-top:20px}#tns-sponsorship-case-study{position:relative;padding:70px 0 70px 0}@media (max-width:1023px){#tns-sponsorship-case-study{padding:50px 0 50px 0}}#tns-sponsorship-case-study .content-column{max-width:630px}#tns-sponsorship-case-study .content-column h1{margin-bottom:30px}#tns-sponsorship-case-study .content-column img{display:block;width:100%;height:auto}#tns-tag .some-class-here{position:relative}#tns-videos .some-class-here{position:relative}#tns-author{position:relative;padding-top:50px;padding-bottom:50px}@media (max-width:575.98px){#tns-author{padding-top:30px;padding-bottom:30px}}#tns-author #tns-author-profile{position:relative;padding-bottom:50px}@media (max-width:767.98px){#tns-author #tns-author-profile{padding-bottom:40px}}@media (max-width:575.98px){#tns-author #tns-author-profile{padding-bottom:10px}}#tns-author #tns-author-profile .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-author #tns-author-profile .row .author-image-column{padding-right:15px}@media (max-width:767.98px){#tns-author #tns-author-profile .row .author-image-column{min-width:100%;max-width:100%;padding-right:0;margin-bottom:20px}}#tns-author #tns-author-profile .row .author-image-column .author-media .author-image{margin-bottom:30px}#tns-author #tns-author-profile .row .author-image-column .author-media .author-profile-image{display:block;width:100%;height:auto}#tns-author #tns-author-profile .row .author-bio-column{padding-left:15px;padding-right:15px}@media (max-width:767.98px){#tns-author #tns-author-profile .row .author-bio-column{padding-left:0;min-width:100%;max-width:100%}}#tns-author #tns-author-profile .row .author-bio-column.no-profile-photo{padding-left:0}#tns-author #tns-author-profile .row .author-bio-column .author-title{margin-top:-6px;width:100%;color:#3c3c3c;font-size:24px;line-height:1.33;text-transform:capitalize;margin-bottom:7px}@media (max-width:767px){#tns-author #tns-author-profile .row .author-bio-column .author-title{font-size:36px}}#tns-author #tns-author-profile .row .author-bio-column .author-description{width:100%}#tns-author #tns-author-profile .row .author-social-column{padding-top:30px;padding-left:15px}@media (max-width:767.98px){#tns-author #tns-author-profile .row .author-social-column{min-width:100%;max-width:100%;padding-top:0;padding-left:0;padding-bottom:30px}}#tns-author #tns-author-profile .row .author-social-column .social-share{display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;width:100%}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon{display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;width:30px;height:30px;margin-right:5px}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon svg{width:19px;height:auto}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon svg.stroke{fill:none;stroke:#3c3c3c}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon svg.fill{stroke:none;fill:#3c3c3c}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon:hover .stroke{stroke:#01aff4}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon:hover .fill{fill:#01aff4}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon-twitter svg{margin-top:-1px;width:17px}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon-linkedin{margin-top:-1px}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon-linkedin svg{width:16px;height:auto}#tns-author #tns-author-stories{position:relative;padding-bottom:50px}#tns-author #tns-author-stories .content-column{min-height:unset;padding:0}#tns-author #tns-author-stories .content-column .author-stories-wrap{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin:0 -15px;padding:0 15px}#tns-author #tns-author-stories .content-column .story-wrap{width:calc(100% / 4);display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex}@media (max-width:991.98px){#tns-author #tns-author-stories .content-column .story-wrap{width:calc(100% / 2)}}@media (max-width:767.98px){#tns-author #tns-author-stories .content-column .story-wrap{border-bottom:1px solid #c2c2c2}#tns-author #tns-author-stories .content-column .story-wrap:last-child{border:none}}@media (max-width:575.98px){#tns-author #tns-author-stories .content-column .story-wrap{width:100%}}#tns-author #tns-author-stories .content-column .story-wrap .story-post-block{display:block;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;position:relative;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;padding:0 15px;margin:15px 0;cursor:pointer;width:100%}@media (max-width:767.98px){#tns-author #tns-author-stories .content-column .story-wrap .story-post-block{padding:0 10px}}@media (max-width:575.98px){#tns-author #tns-author-stories .content-column .story-wrap .story-post-block{padding:7px 0;margin:0}}#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .content{text-decoration:none;position:relative;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;width:100%}#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .content:hover .post-title{color:#01aff4;-webkit-transition:color 99ms;-moz-transition:color 99ms;-o-transition:color 99ms;-ms-transition:color 99ms;transition:color 99ms}#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .block-media{display:inline-block;width:100%;aspect-ratio:1.86/1}@media (max-width:575.98px){#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .block-media{width:76px;aspect-ratio:1/1}}#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .block-media .thumbnail-image{display:block;width:100%;max-width:100%;aspect-ratio:1.86/1;object-fit:cover;object-position:top;margin-bottom:12px}@media (max-width:575.98px){#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .block-media .thumbnail-image{width:100px;aspect-ratio:1/1}}#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .block-content{width:100%}@media (max-width:575.98px){#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .block-content{width:calc(100% - 76px);padding-left:12px}}#tns-author #tns-author-stories .content-column .story-wrap:nth-child(4n+1) .story-post-block{padding-left:0}@media (min-width:992px){#tns-author #tns-author-stories .content-column .story-wrap:nth-child(4n) .story-post-block{padding-right:0;border-right:0}}@media (max-width:991.98px){#tns-author #tns-author-stories .content-column .story-wrap:nth-child(2n) .story-post-block{padding-right:0;border-right:0}}#tns-author #tns-author-stories .load-more-stories-link{text-decoration:none}#tns-author #tns-author-stories .load-more-stories-link svg{width:12px;vertical-align:middle;fill:#ff3287}#tns-author #tns-author-stories .load-more-stories-link:hover svg{fill:#01aff4}@media (max-width:767.98px){#tns-author #tns-author-stories .load-more-stories-link{font-size:14px}}#tns-author #tns-author-pagination{position:relative;text-align:center}#tns-author #tns-author-pagination .navigation.pagination .screen-reader-text{display:none}#tns-sitemap{padding:50px 0 50px 0}#tns-sitemap .content-column{max-width:900px}#tns-sitemap .heading{font-size:36px;font-weight:900;margin-bottom:20px}#tns-sitemap .sitemap-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:50px}#tns-sitemap .sitemap-row .sitemap-section{padding-right:20px;margin-bottom:30px}#tns-sitemap .sitemap-row .sitemap-section a{display:block}#tns-sitemap #tns-sitemap-chrono{position:relative}#tns-sitemap #tns-sitemap-chrono .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (max-width:767px){#tns-sitemap #tns-sitemap-chrono .col-25{min-width:100%;max-width:100%}}#tns-sitemap #tns-sitemap-month{position:relative}#tns-sitemap #tns-sitemap-topics{position:relative}#tns-sitemap #tns-sitemap-topics .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (max-width:767px){#tns-sitemap #tns-sitemap-topics .col-33{min-width:100%;max-width:100%}}#tns-sitemap #tns-sitemap-index{position:relative}#tns-sitemap #tns-sitemap-index .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (max-width:767px){#tns-sitemap #tns-sitemap-index .col-33{min-width:100%;max-width:100%}}.tns-psa{width:100%}.tns-psa .psa-block{position:relative;display:block;width:100%;max-width:1199px;min-height:60px;margin:0 auto 30px auto;padding:20px 20px 20px 20px;color:#515151;font-size:14px;line-height:1.33;background:#f6f8fa;border:1px solid #8da6c0;border:1px solid #c2cfdd;cursor:pointer}@media (max-width:767px){.tns-psa .psa-block{padding:20px 20px 20px 20px}}.tns-psa .psa-block:hover .psa-cta{color:#ff3287}.tns-psa .psa-block:hover .psa-cta svg{color:#ff3287}.tns-psa .psa-block:hover .psa-cta svg path{fill:#ff3287}.tns-psa .psa-block .icon-col{max-width:75px;min-width:75px;padding-right:15px}.tns-psa .psa-block .icon-col svg{width:100%;height:auto}.tns-psa .psa-block .copy-col{min-width:auto;max-width:auto}.tns-psa .psa-block .tns-psa-hide{position:absolute;top:5px;right:5px;cursor:pointer;z-index:2;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50)}.tns-psa .psa-block .tns-psa-hide svg{height:10px}.tns-psa .psa-block .tns-psa-hide svg path{fill:#8da6c0}.tns-psa .psa-block .tns-psa-hide:hover{color:#ff3287}.tns-psa .psa-block .tns-psa-hide:hover svg path{fill:#ff3287}.tns-psa .psa-block .section-heading{padding-top:0;border-top:none;color:#8da6c0;margin-bottom:5px}.tns-psa .psa-block .psa-body{position:relative;max-width:350px;margin-bottom:10px}.tns-psa .psa-block .psa-cta{color:#515151;font-size:12px}.tns-psa .psa-block .psa-cta svg{margin-left:5px;color:#515151;height:8px;width:auto}.tns-psa .psa-block .psa-cta svg path{fill:#515151}#tns-post .tns-psa{margin-bottom:33px}#tns-key-concepts .content-column{margin-top:50px;margin-bottom:50px}@media (max-width:767px){#tns-key-concepts .content-column{margin-top:30px;margin-bottom:30px}}#tns-key-concepts #tns-key-concepts-heading{position:relative;margin-bottom:50px}@media (max-width:767px){#tns-key-concepts #tns-key-concepts-heading{margin-bottom:30px}}#tns-key-concepts #tns-key-concepts-heading .description{max-width:45%}#tns-key-concepts #tns-key-concepts-frame{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-nav{position:sticky;top:110px;padding-right:40px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-nav .heading-text{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-nav .key-concepts-nav-option{display:block;color:#000}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-nav .key-concepts-nav-option:hover{color:#ff3287}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-nav .key-concepts-nav-option.active{color:#ff3287}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content .key-concepts-content-block{margin-bottom:40px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content .key-concepts-story-card{margin-top:10px;padding-bottom:10px;border-bottom:1px solid #c2c2c2}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content .key-concepts-story-card:first-child{margin-top:0}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content .key-concepts-story-card:last-child{border-bottom:none}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content .key-concepts-story-card .col-thumb{min-width:100px;max-width:100px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content .key-concepts-story-card .col-thumb .thumb{width:100px;height:50px;background:#f6f8fa}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content .key-concepts-story-card .col-headline .headline{padding-left:10px;font-size:16px;font-weight:500}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-trending-stories{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link{display:block;padding-bottom:10px;margin-bottom:20px;border-bottom:1px solid #c2c2c2}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link:last-child{border-bottom:none}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link:hover .headline{color:#01aff4}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link .col-thumb img{display:block;width:100%;height:auto}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link .col-headline{color:#515151;padding-left:15px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link .col-headline .headline{padding:0;font-size:18px;line-height:1.33}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link .col-headline .byline{color:#a5a9b0;font-size:12px;margin-top:-2px;margin-bottom:3px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link .col-headline .excerpt{color:#515151;font-size:14px;font-weight:600;line-height:1.27;opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-origins{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-overview{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-getting-started{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-tutorials{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar{position:sticky;top:110px;padding-left:40px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo{position:relative;margin-bottom:30px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo{display:block}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo:hover .copy{color:#ff3287}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo:hover .copy svg path{fill:#ff3287}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo .logo-frame{width:100%;max-height:120px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;background:#eaeff3;margin-bottom:10px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo .logo-frame .logo-img{aspect-ratio:1.86/1;object-fit:contain;max-width:80%;max-height:70%}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo .copy{color:#515151;font-size:14px;line-height:1.33}@media (max-width:767px){#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo .copy{font-size:17px}}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo .copy svg{height:8px;vertical-align:baseline}@media (max-width:767px){#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo .copy svg{height:10px}}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo .copy svg path{fill:#515151}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-share{position:relative;margin-bottom:30px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-share .section-heading{margin-bottom:10px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-trending-stories{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-trending-stories .stories a{color:#3c3c3c;font-size:14px;font-weight:600;line-height:1.27}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-trending-stories .stories a:hover{color:#01aff4}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-trending-stories .stories ol{margin-left:27px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-trending-stories .stories ol li{color:#3c3c3c;font-size:14px;font-weight:600;line-height:1.27}#tns-search{display:block}#tns-search .content-column-search{max-width:900px}#tns-search .section-heading{border-top:0}#tns-search .search-item{display:block;margin-bottom:30px}#tns-search .search-item .search-item-title{font-size:17px;font-weight:600;color:#01aff4}#tns-search .search-item .search-item-excerpt{font-size:15px;font-weight:500;color:#3c3c3c}#tns-search .search-item .search-item-byline{font-size:14px;font-weight:500;color:#a5a9b0}#tns-search .search-item:hover .search-item-title{color:#ff3287}#tns-search #tns-search-form{display:block;border-bottom:1px solid #a5a9b0}#tns-search #tns-search-form .search-form{padding-top:30px}#tns-search #tns-search-form .search-form .search-input{display:block;width:100%;height:40px;color:#000;line-height:40px;padding-left:15px;font-size:17px;font-weight:500;border:1px solid #515151;border-right:none}#tns-search #tns-search-form .search-form .search-input:focus{border:1px solid #01aff4;border-right:none}#tns-search #tns-search-form .search-form .search-submit{height:40px;color:#000;font-size:15px;text-transform:uppercase;border-radius:0;border:1px solid #515151;background:transparent}#tns-search #tns-search-form .search-form .search-submit:hover{color:#ff3287}#tns-search #tns-search-overview{height:0;overflow:hidden;background:#f6f8fa}#tns-search #tns-search-overview .content-column-search{padding-top:30px;padding-bottom:40px}#tns-search #tns-search-overview .content-column-search .search-overview-loading-layout{display:none}#tns-search #tns-search-overview .content-column-search .search-overview-loading-layout .search-overview-loading{width:100%;text-align:center}#tns-search #tns-search-overview .content-column-search .search-overview-loading-layout .search-overview-loading .button-spinner{border:2px solid rgba(1,175,244,0.33);border-top:2px solid #01aff4}#tns-search #tns-search-overview .content-column-search .search-overview-loading-layout .search-overview-loading .stackie-loading{font-size:14px;font-weight:500;color:#a5a9b0}@media (max-width:600px){#tns-search #tns-search-overview .content-column-search .search-overview-layout{-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}}@media (max-width:600px){#tns-search #tns-search-overview .content-column-search .search-overview-layout .search-overview-answer-col{min-width:100%;max-width:100%}}#tns-search #tns-search-overview .content-column-search .search-overview-layout .search-overview-answer-col .search-overview{font-size:17px;font-weight:500;padding-right:30px;min-height:90px}@media (max-width:600px){#tns-search #tns-search-overview .content-column-search .search-overview-layout .search-overview-answer-col .search-overview p{font-size:16px;padding-right:0}}@media (max-width:600px){#tns-search #tns-search-overview .content-column-search .search-overview-layout .search-overview-references-col{min-width:100%;max-width:100%}}#tns-search #tns-search-overview .content-column-search .search-overview-layout .search-overview-references-col .section-heading-references{padding-top:0;font-size:12px;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-search #tns-search-overview .content-column-search .search-overview-layout .search-overview-references-col .search-overview-references .search-overview-reference-item{display:block;color:#01aff4;font-size:14px;font-weight:700;line-height:1.33;margin-bottom:20px}#tns-search #tns-search-overview .content-column-search .search-overview-layout .search-overview-references-col .search-overview-references .search-overview-reference-item:hover{color:#ff3287}#tns-search #tns-search-overview .search-overview-more{position:absolute;left:0;right:0;bottom:0;width:100%;height:50px;line-height:100%;text-align:center;background:#f6f8fa;background:-webkit-linear-gradient(270deg, rgba(246,248,250,0) 0%, #f6f8fa 100%);background:-moz-linear-gradient(270deg, rgba(246,248,250,0) 0%, #f6f8fa 100%);background:-o-linear-gradient(270deg, rgba(246,248,250,0) 0%, #f6f8fa 100%);background:-ms-linear-gradient(270deg, rgba(246,248,250,0) 0%, #f6f8fa 100%);background:linear-gradient(180deg, rgba(246,248,250,0) 0%, #f6f8fa 100%);z-index:2}#tns-search #tns-search-overview .search-overview-more .search-overview-show-more{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);padding-left:20px;padding-right:20px;height:30px;line-height:30px;border-radius:15px;color:#fff;font-size:12px;font-weight:700;background:#01aff4;cursor:pointer;display:none}#tns-search #tns-search-overview .search-overview-more .search-overview-show-more:hover{background:#ff3287}#tns-search .search-disclaimer{padding-top:30px;padding-bottom:30px;color:#a5a9b0;font-size:11px;font-weight:400;line-height:120%;background:#f6f8fa;display:none}#tns-search #tns-search-results{display:none;padding-top:30px;padding-bottom:100px}@media (max-width:600px){#tns-search #tns-search-results .search-results-layout{-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}}@media (max-width:600px){#tns-search #tns-search-results .search-results-layout .search-results-col{min-width:100%;max-width:100%}}@media (max-width:600px){#tns-search #tns-search-results .search-results-layout .search-sidebar-col{min-width:100%;max-width:100%}}#tns-search #tns-search-results .search-results-layout .search-results{padding-right:0}#tns-search #tns-search-results .search-results-layout .search-results .search-item{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-search #tns-search-results .search-results-layout .search-results .search-item .search-byline{color:#515151}#tns-search #tns-search-results .search-results-layout .search-results-more .search-results-more-button{display:none;font-size:14px;font-weight:500;text-transform:uppercase;background:#ff3287}#tns-search #tns-search-results .search-results-layout .search-results-more .search-results-more-button:hover{background:#01aff4}#tns-search #tns-search-results .search-results-layout .search-results-more .search-results-more-button:disabled{background:#58a2bf !important}#tns-search #tns-search-trending{display:block;margin-top:30px;padding-bottom:100px}#tns-search #tns-search-trending .search-trending{padding-right:30px}.tns-newsletter-shortcode{padding:34px 0 32px;border-top:3px solid #ff3287;border-bottom:3px solid #ff3287;margin:50px 0 0}.tns-newsletter-shortcode .title{width:100%;max-width:990px;color:#ff3287;font-size:46px;font-weight:600;text-align:center;line-height:1.33;margin:0 auto 50px}@media (max-width:599px){.tns-newsletter-shortcode .title{font-size:36px;max-width:400px;margin:0 auto 60px}}@media (max-width:499px){.tns-newsletter-shortcode .title{font-size:27px}}.tns-newsletter-shortcode .title span{text-transform:uppercase;display:block;font-size:18px;letter-spacing:1.8px;font-weight:600;margin:0 0 25px}@media (max-width:767.98px){.tns-newsletter-shortcode .title span{margin:0 0 20px}}#tns-events-sidebar .tns-newsletter-shortcode{margin-top:0;border-top:3px solid #01aff4;border-bottom:3px solid #01aff4}#tns-events-sidebar .tns-newsletter-shortcode .title{font-size:30px;margin-bottom:60px;color:#01aff4}#tns-events-sidebar .tns-newsletter-shortcode .title span{font-size:14px;color:#01aff4}#tns-events-sidebar .tns-newsletter-shortcode .newsletter-form{padding:0}#tns-events-sidebar .tns-newsletter-shortcode .newsletter-form .tns-newsletter-form-email{border-bottom-color:#01aff4}#tns-events-sidebar .tns-newsletter-shortcode .newsletter-form .tns-newsletter-form-submit{background:#01aff4}#tns-events-sidebar .tns-newsletter-shortcode .newsletter-form .tns-newsletter-form-submit:hover{background:#ff3287}.newsletter-form{position:relative;width:100%}.newsletter-form .newsletter-form-inputs{width:100%;max-width:450px;margin:0 auto 0 auto}.newsletter-form .newsletter-form-inputs .tns-newsletter-form-email{width:100%;font-size:16px;letter-spacing:0;text-transform:none}.newsletter-form .newsletter-form-inputs .tns-newsletter-form-submit{font-size:16px;letter-spacing:1px;margin:20px auto 20px}.newsletter-form .newsletter-form-privacy{display:block;max-width:450px;color:#a5a9b0;font-size:10px;font-weight:400;line-height:1.2;margin:20px auto 9px auto}.newsletter-form .tns-newsletter-form-email.error{color:#ff3287;background:rgba(255,50,135,0.12)}.newsletter-form .tns-newsletter-form-email.error::placeholder{color:#ff3287}#shortcode-tns-streaming{position:relative;min-height:350px}#shortcode-tns-streaming .content{padding:45px 0}#shortcode-tns-streaming .content-column{min-height:unset}#shortcode-tns-streaming #shortcode-tns-streaming-header{position:relative}#shortcode-tns-streaming #shortcode-tns-streaming-header .content-column{margin:0 auto}#shortcode-tns-streaming #shortcode-tns-streaming-header .streaming-title{color:#fff;font-size:18px;font-weight:600;padding-bottom:26px}@media (max-width:1279px){#shortcode-tns-streaming #shortcode-tns-streaming-header .streaming-title{margin:0}}#shortcode-tns-streaming #shortcode-tns-streaming-content{position:relative}@media (max-width:767.98px){#shortcode-tns-streaming #shortcode-tns-streaming-content .content-column{padding:0 30px}}#shortcode-tns-streaming #shortcode-tns-streaming-content .swiper-slide{height:auto}#shortcode-tns-streaming #shortcode-tns-streaming-content .swiper-slide:not(.swiper-slide-active,#shortcode-tns-streaming #shortcode-tns-streaming-content .swiper-slide .swiper-slide-duplicate.swiper-slide-duplicate-active):before{position:absolute;content:'';width:1px;height:100%;background:transparent;left:0;top:0}#shortcode-tns-streaming #shortcode-tns-streaming-content .swiper-slide.swiper-slide-duplicate.swiper-slide-duplicate-active:before{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;max-width:100%;min-width:100%;margin-left:auto;margin-right:auto;text-decoration:none}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card:hover{text-decoration:none}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card:hover .streaming-card-poster:before{border-color:#fff}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media{position:relative;width:100%;height:auto;display:inline-block;margin-bottom:20px}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media .live-badge{position:absolute;z-index:0;top:15px;right:12px;width:45px;height:45px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;background:#fff;border-radius:50%;color:#ff3287;font-size:12px;font-weight:normal;text-transform:uppercase}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media .play-btn{position:absolute;top:50%;left:50%;width:40px;height:40px;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#fff;cursor:pointer;z-index:1;margin-top:-16px}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media .play-btn svg{width:100%;heigth:100%}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media .play-btn svg path{fill:#fff}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media .streaming-card-poster{width:100%;position:relative}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media .streaming-card-poster:before{position:absolute;content:'';left:0;top:0;width:calc(100% - 8px);height:calc(100% - 8px);border:4px solid transparent;z-index:1}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media .streaming-card-poster .thumbnail-image{width:100%;height:100%;aspect-ratio:16/9;object-fit:cover}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-content{position:relative;width:100%;display:inline-block;vertical-align:middle}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-content .card-title{color:#fff;font-size:18px;line-height:1.33}@media (max-width:1199.98px){#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-content .card-title{font-size:16px}}#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-prev,#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-next{position:absolute;top:20%;color:#fff;right:-50px;cursor:pointer;z-index:2;width:30px;height:30px;text-align:left}#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-prev [class^="icon-"]:before,#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-next [class^="icon-"]:before,#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-prev [class*=" icon-"]:before,#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-next [class*=" icon-"]:before{margin:0}@media (max-width:1279px){#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-prev,#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-next{display:none}}#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-prev{right:auto;left:-60px;text-align:right}#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-prev path{fill:#fff}@media (max-width:1279px){#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-prev{left:0}}#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-next path{fill:#fff}#shortcode-tns-streaming #shortcode-tns-streaming-content .swiper-pagination{bottom:0}#shortcode-tns-streaming #shortcode-tns-streaming-content .swiper-pagination span{background-color:#fff}#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper{padding-bottom:30px;width:100%}#shortcode-tns-events{position:relative;margin-top:40px;z-index:0}#shortcode-tns-events .content{padding:45px 0}#shortcode-tns-events .content-column{min-height:unset}#shortcode-tns-events #shortcode-tns-events-header{position:relative}#shortcode-tns-events #shortcode-tns-events-header .content-column{margin:0 auto}#shortcode-tns-events #shortcode-tns-events-header .events-title{color:#fff;font-size:18px;font-weight:600;padding-bottom:26px}#shortcode-tns-events #shortcode-tns-events-content{position:relative}#shortcode-tns-events #shortcode-tns-events-content .swiper-slide{height:auto}#shortcode-tns-events #shortcode-tns-events-content .swiper-slide:not(.swiper-slide-active):before{position:absolute;content:'';width:1px;height:100%;background:transparent;left:0;top:0}#shortcode-tns-events #shortcode-tns-events-content .swiper-slide.swiper-slide-next + .swiper-slide + .swiper-slide + .swiper-slide:before{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#shortcode-tns-events #shortcode-tns-events-content .events-card{max-width:100%;min-width:100%;position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-left:auto;margin-right:auto;text-decoration:none}#shortcode-tns-events #shortcode-tns-events-content .events-card:hover{text-decoration:none}#shortcode-tns-events #shortcode-tns-events-content .events-card:hover .events-card-content .card-title{color:#fff}#shortcode-tns-events #shortcode-tns-events-content .events-card:hover .events-card-poster:before{border-color:#fff}#shortcode-tns-events #shortcode-tns-events-content .events-card-media{position:relative;width:100%;display:inline-block;vertical-align:middle;margin-bottom:12px}#shortcode-tns-events #shortcode-tns-events-content .events-card-media .live-badge{position:absolute;z-index:0;top:15px;right:12px;width:45px;height:45px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;background:#fff;border-radius:50%;color:#ff3287;font-size:12px;font-weight:normal;text-transform:uppercase}#shortcode-tns-events #shortcode-tns-events-content .events-card-media .play-btn{position:absolute;z-index:2;font-size:35px;color:#fff;background:transparent;border:0;padding:0;margin:0;width:40px;height:40px;margin:auto;left:0;right:0;top:0;bottom:0;cursor:pointer}#shortcode-tns-events #shortcode-tns-events-content .events-card-media .events-card-poster{position:relative;width:100%}#shortcode-tns-events #shortcode-tns-events-content .events-card-media .events-card-poster:before{position:absolute;content:'';left:0;top:0;width:calc(100% - 8px);height:calc(100% - 8px);border:4px solid transparent;z-index:1}#shortcode-tns-events #shortcode-tns-events-content .events-card-media .events-card-poster .default-image,#shortcode-tns-events #shortcode-tns-events-content .events-card-media .events-card-poster img{aspect-ratio:1/1;width:100%;object-fit:cover;height:100%}#shortcode-tns-events #shortcode-tns-events-content .events-card-content{position:relative;width:100%;display:inline-block;vertical-align:middle;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#shortcode-tns-events #shortcode-tns-events-content .events-card-content .card-title{color:#fff;font-size:18px;line-height:1.33;-webkit-align-self:flex-end;align-self:flex-end;-ms-flex-item-align:end;margin-bottom:10px;width:100%}#shortcode-tns-events #shortcode-tns-events-content .events-card-content .event-meta{margin-bottom:10px;width:100%;line-height:80%}#shortcode-tns-events #shortcode-tns-events-content .events-card-content .event-meta .date,#shortcode-tns-events #shortcode-tns-events-content .events-card-content .event-meta .location{font-size:12px;color:#fff;font-weight:bold;text-transform:uppercase;width:100%;display:inline-block;line-height:1.35}#shortcode-tns-events #shortcode-tns-events-content .events-card-content .event-meta .location{font-weight:normal}#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-prev,#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-next{position:absolute;top:30%;font-size:30px;color:#fff;right:-60px;cursor:pointer;z-index:2;width:40px;height:32px;text-align:left}#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-prev [class^="icon-"]:before,#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-next [class^="icon-"]:before,#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-prev [class*=" icon-"]:before,#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-next [class*=" icon-"]:before{margin:0}@media (max-width:1279px){#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-prev,#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-next{display:none}}#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-prev{right:auto;left:-60px;text-align:right}#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-prev path{fill:#fff}@media (max-width:1279px){#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-prev{left:0}}#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-next path{fill:#fff}#shortcode-tns-events #shortcode-tns-events-content .swiper-pagination-events{bottom:0}#shortcode-tns-events #shortcode-tns-events-content .swiper-pagination-events span{background-color:#fff}#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper{padding-bottom:30px;width:100%}.tns-related-stories{padding-bottom:20px}.tns-related-stories .related-story-link{display:block;color:#515151;font-size:14px;font-weight:600;line-height:1.27;text-decoration:none;margin-bottom:20px}.tns-related-stories .related-story-link:hover{color:#01aff4}@media (max-width:767px){.tns-related-stories .related-story-link{font-size:17px}}.tns-trending-stories-block{padding-bottom:20px}.tns-trending-stories-block ol{padding-left:0;margin-left:23px}.tns-trending-stories-block ol li:nth-child(1)::marker{color:#fe3488}.tns-trending-stories-block ol li:nth-child(2)::marker{color:#ed4492}.tns-trending-stories-block ol li:nth-child(3)::marker{color:#d558a1}.tns-trending-stories-block ol li:nth-child(4)::marker{color:#c165ad}.tns-trending-stories-block ol li:nth-child(5)::marker{color:#ad72b9}.tns-trending-stories-block ol .trending-story-link{display:block;color:#515151;font-size:14px;font-weight:600;line-height:1.27;text-decoration:none;margin-bottom:20px}.tns-trending-stories-block ol .trending-story-link:hover{color:#01aff4}@media (max-width:767px){.tns-trending-stories-block ol .trending-story-link{font-size:17px}}.tns-trending-stories-block.sidebar,.tns-trending-stories-block.bottom{position:relative}.tns-trending-stories-block.sidebar .section-heading,.tns-trending-stories-block.bottom .section-heading{font-size:13px}.tns-trending-stories-block.sidebar .tns-trending-stories-list li::marker,.tns-trending-stories-block.bottom .tns-trending-stories-list li::marker{font-size:14px}.tns-trending-stories-block.inline,.tns-trending-stories-block.category-popover{padding:30px;padding-right:75px;background:#f6f8fa;margin-bottom:20px}@media (max-width:1023px){.tns-trending-stories-block.inline,.tns-trending-stories-block.category-popover{padding-right:50px}}.tns-trending-stories-block.inline .section-heading,.tns-trending-stories-block.category-popover .section-heading{color:#8da6c0;font-size:13px;font-weight:700;margin-bottom:20px;border:0}.tns-trending-stories-block.inline .tns-trending-stories-list,.tns-trending-stories-block.category-popover .tns-trending-stories-list{padding-bottom:0}.tns-trending-stories-block.inline .tns-trending-stories-list ol,.tns-trending-stories-block.category-popover .tns-trending-stories-list ol{margin-bottom:10px}.tns-trending-stories-block.inline .tns-trending-stories-list li::marker,.tns-trending-stories-block.category-popover .tns-trending-stories-list li::marker{color:#b4c5d6;font-size:15px}@media (max-width:767px){.tns-trending-stories-block.inline .tns-trending-stories-list li::marker,.tns-trending-stories-block.category-popover .tns-trending-stories-list li::marker{font-size:17px}}.tns-trending-stories-block.inline .tns-trending-stories-list li:nth-child(1)::marker,.tns-trending-stories-block.category-popover .tns-trending-stories-list li:nth-child(1)::marker{color:#fe3488}.tns-trending-stories-block.inline .tns-trending-stories-list li:nth-child(2)::marker,.tns-trending-stories-block.category-popover .tns-trending-stories-list li:nth-child(2)::marker{color:#ed4492}.tns-trending-stories-block.inline .tns-trending-stories-list li:nth-child(3)::marker,.tns-trending-stories-block.category-popover .tns-trending-stories-list li:nth-child(3)::marker{color:#d558a1}.tns-trending-stories-block.inline .tns-trending-stories-list li:nth-child(4)::marker,.tns-trending-stories-block.category-popover .tns-trending-stories-list li:nth-child(4)::marker{color:#c165ad}.tns-trending-stories-block.inline .tns-trending-stories-list li:nth-child(5)::marker,.tns-trending-stories-block.category-popover .tns-trending-stories-list li:nth-child(5)::marker{color:#ad72b9}.tns-trending-stories-block.inline .tns-trending-stories-list li a,.tns-trending-stories-block.category-popover .tns-trending-stories-list li a{color:#019ddb;font-size:15px;line-height:1.2;margin-bottom:15px}.tns-trending-stories-block.inline .tns-trending-stories-list li a:hover,.tns-trending-stories-block.category-popover .tns-trending-stories-list li a:hover{color:#ff3287}@media (max-width:767px){.tns-trending-stories-block.inline .tns-trending-stories-list li a,.tns-trending-stories-block.category-popover .tns-trending-stories-list li a{font-size:17px}}.tns-trending-stories-block.inline .tns-trending-stories-list li:last-child,.tns-trending-stories-block.category-popover .tns-trending-stories-list li:last-child{margin-bottom:0}.tns-trending-stories-block.inline .tns-trending-stories-list li:last-child a,.tns-trending-stories-block.category-popover .tns-trending-stories-list li:last-child a{margin-bottom:0}.tns-trending-stories-by-category{position:relative;width:100%;min-height:300px;padding:30px;padding-left:0;padding-right:0}.tns-trending-stories-by-category .heading{color:#3c3c3c;font-size:13px;font-weight:700;margin-bottom:20px}.tns-trending-stories-by-category .categories{padding-right:20px;overflow-y:hidden;overflow-x:auto}.tns-trending-stories-by-category .categories .category-stories{padding-right:20px}@media (max-width:767px){.tns-trending-stories-by-category .categories .category-stories{min-width:275px;max-width:275px}}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-block .section-heading{border:0;color:#8da6c0;font-size:13px;font-weight:700}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list{padding-bottom:0}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list ol{margin-bottom:10px}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list li::marker{color:#b4c5d6;font-size:15px}@media (max-width:767px){.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list li::marker{font-size:17px}}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list li a{color:#019ddb;font-size:15px;line-height:1.2;margin-bottom:15px}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list li a:hover{color:#ff3287}@media (max-width:767px){.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list li a{font-size:17px}}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list li:last-child{margin-bottom:0}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list li:last-child a{margin-bottom:0}.tns-podcast-subscribe{margin-top:60px;margin-bottom:60px}@media (max-width:767px){.tns-podcast-subscribe{margin-top:30px;margin-bottom:30px}}.tns-podcast-subscribe .subscribe-title{font-size:17px;font-weight:500;text-align:center;margin-bottom:20px}@media (max-width:767px){.tns-podcast-subscribe .subscribe-title{font-size:16px}}@media (max-width:614px){.tns-podcast-subscribe .subscribe-title{font-size:15px}}@media (max-width:539px){.tns-podcast-subscribe .subscribe-title{font-size:13px}}.tns-podcast-subscribe .subscribe-links{width:100%;text-align:center;vertical-align:middle}.tns-podcast-subscribe .subscribe-links a{display:inline-block;margin-left:20px;margin-right:20px}@media (max-width:767px){.tns-podcast-subscribe .subscribe-links a{margin-left:15px;margin-right:15px}}@media (max-width:539px){.tns-podcast-subscribe .subscribe-links a{margin-left:10px;margin-right:10px}}.tns-podcast-subscribe .subscribe-links a img{max-height:30px}@media (max-width:767px){.tns-podcast-subscribe .subscribe-links a img{max-height:25px}}@media (max-width:539px){.tns-podcast-subscribe .subscribe-links a img{max-height:22px}}@media (max-width:399px){.tns-podcast-subscribe .subscribe-links a img{max-height:20px}}@media (max-width:599px){.tns-podcast-subscribe .subscribe-links .subscribe-link-simplecast{display:none}}.key-concept-block{position:relative}.key-concept-block .title{font-size:14px;font-weight:700;margin-bottom:10px;text-transform:uppercase}.key-concept-block a{display:block;color:#3c3c3c;font-size:15px;text-decoration:none;margin-bottom:16px}.key-concept-block a:hover{color:#01aff4}.tns-sponsor-note{display:none}.tns-sponsor-note.injected{display:block}.tns-sponsor-note{position:relative;padding:20px;padding-top:30px;padding-left:30px;padding-right:30px;margin-top:35px;margin-bottom:30px;background:#f6f8fa}@media (max-width:499px){.tns-sponsor-note{padding:30px}}.tns-sponsor-note .sponsor-note-content-wrapper{padding-right:12%}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper{font-size:15px}}.tns-sponsor-note .sponsor-note-content-wrapper svg{height:8px;vertical-align:baseline}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper svg{height:10px}}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile{position:relative;cursor:pointer}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .section-heading{font-size:13px}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-logo{margin-bottom:20px}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-logo a{display:block}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-logo img{display:inline-block;width:auto;height:auto;max-height:35px;max-width:100%}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-content,.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-cta{color:#515151;font-size:14px;line-height:1.33}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-content,.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-cta{font-size:17px}}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-content{margin-bottom:10px}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-cta{font-size:12px}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile:hover .sponsor-note-cta{color:#ff3287}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile:hover .sponsor-note-cta svg path{fill:#ff3287}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss{position:relative;margin-top:30px}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-heading{color:#515151;font-size:11px;font-weight:700;margin-bottom:7px;text-transform:uppercase}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-heading{font-size:12px}}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-items{position:relative}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-items .sponsor-rss-link{display:block;color:#019ddb !important;font-size:14px;font-weight:600;line-height:1.33;margin-bottom:12px}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-items .sponsor-rss-link{font-size:17px}}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-items .sponsor-rss-link:hover{color:#ff3287 !important}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-items .sponsors-rss-byline{color:#a5a9b0;font-size:11px}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-items .sponsors-rss-byline{font-size:12px}}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links{position:relative;margin-top:30px}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-note-custom-links-heading{color:#515151;font-size:11px;font-weight:700;margin-bottom:7px;text-transform:uppercase}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-note-custom-links-heading{font-size:12px}}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-note-custom-links-items{position:relative}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-custom-link{display:block;color:#019ddb !important;font-size:14px;font-weight:600;line-height:1.33;margin-bottom:12px}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-custom-link{font-size:17px}}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-custom-link:hover{color:#ff3287 !important}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-custom-byline{color:#a5a9b0;font-size:11px}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-custom-byline{font-size:12px}}.tns-sponsor-note .sponsor-note-lead-form{position:relative;margin-top:30px;padding:20px;background:#05aef4;background:-webkit-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-moz-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-o-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-ms-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:linear-gradient(145deg, #05aef4 0%, #4bc8fa 100%);border-radius:3px}.tns-sponsor-note .sponsor-note-lead-form .sponsor-note-lead-form-text{color:#fff;font-size:11px;font-weight:700;margin-bottom:7px;text-transform:uppercase;text-align:left}@media (max-width:767px){.tns-sponsor-note .sponsor-note-lead-form .sponsor-note-lead-form-text{font-size:12px}}.tns-sponsor-note .sponsor-note-lead-form-input-wrapper{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:0;height:90px}.tns-sponsor-note .sponsor-note-lead-form-input-wrapper .sponsor-note-lead-form-input{width:100%;padding:12px 15px;margin:0;margin-bottom:10px;border:none;border-radius:1px;font-size:15px;font-weight:500;background:rgba(255,255,255,0.33);border:1px solid rgba(255,255,255,0.5);color:#fff;outline:none}.tns-sponsor-note .sponsor-note-lead-form-input-wrapper .sponsor-note-lead-form-input:focus{border:1px solid #fff}.tns-sponsor-note .sponsor-note-lead-form-input-wrapper .sponsor-note-lead-form-input::placeholder{color:#fff}.tns-sponsor-note .sponsor-note-lead-form-input-wrapper .sponsor-note-lead-form-submit{width:100%;padding:12px 20px;margin:0;background:rgba(255,255,255,0.2);border:none;border-radius:5px;color:#fff;font-size:14px;font-weight:600;cursor:pointer;-webkit-transition:all 0.3s ease;-moz-transition:all 0.3s ease;-o-transition:all 0.3s ease;-ms-transition:all 0.3s ease;transition:all 0.3s ease;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}@media (max-width:767px){.tns-sponsor-note .sponsor-note-lead-form-input-wrapper .sponsor-note-lead-form-submit{font-size:17px}}.tns-sponsor-note .sponsor-note-lead-form-input-wrapper .sponsor-note-lead-form-submit:hover{background:rgba(255,255,255,0.33)}.tns-sponsor-note .sponsor-note-lead-form-status{display:none;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);height:90px;font-size:16px;color:#fff}.tns-contributor-note{display:none}.tns-contributor-note.injected{display:block}.tns-contributor-note{position:relative;padding:20px;padding-top:30px;padding-left:30px;padding-right:30px;margin-top:35px;margin-bottom:30px;background:#f6f8fa}@media (max-width:499px){.tns-contributor-note{padding:30px}}.tns-contributor-note .contributor-note-content-wrapper{padding-right:12%}@media (max-width:767px){.tns-contributor-note .contributor-note-content-wrapper{font-size:15px}}.tns-contributor-note .contributor-note-content-wrapper svg{height:8px;vertical-align:baseline}@media (max-width:767px){.tns-contributor-note .contributor-note-content-wrapper svg{height:10px}}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile{position:relative;cursor:pointer}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-logo{margin-bottom:20px}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-logo a{display:block}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-logo img{display:inline-block;width:auto;height:35px;max-height:35px}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-content,.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-cta{color:#515151;font-size:14px;line-height:1.33}@media (max-width:767px){.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-content,.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-cta{font-size:17px}}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-content{margin-bottom:10px}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-cta{font-size:12px}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile:hover .contributor-note-cta{color:#ff3287}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile:hover .contributor-note-cta svg path{fill:#ff3287}.tns-contributor-note.no-content .contributor-note-logo{margin-bottom:0}.tns-contributor-note.no-content .contributor-note-lead-form{margin-top:10px}.tns-contributor-note.no-content:not(:has(.contributor-note-content-wrapper)){padding-top:20px}.tns-contributor-note.no-content:not(:has(.contributor-note-content-wrapper)) .contributor-note-lead-form{margin-top:0}.tns-contributor-note .contributor-note-lead-form{position:relative;margin-top:30px;padding:20px;background:#05aef4;background:-webkit-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-moz-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-o-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-ms-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:linear-gradient(145deg, #05aef4 0%, #4bc8fa 100%);border-radius:3px}.tns-contributor-note .contributor-note-lead-form .contributor-note-lead-form-text{color:#fff;font-size:11px;font-weight:700;margin-bottom:7px;text-transform:uppercase;text-align:left}@media (max-width:767px){.tns-contributor-note .contributor-note-lead-form .contributor-note-lead-form-text{font-size:12px}}.tns-contributor-note .contributor-note-lead-form-input-wrapper{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:0;height:90px}.tns-contributor-note .contributor-note-lead-form-input-wrapper .contributor-note-lead-form-input{width:100%;padding:12px 15px;margin:0;margin-bottom:10px;border:none;border-radius:1px;font-size:15px;font-weight:500;background:rgba(255,255,255,0.33);border:1px solid rgba(255,255,255,0.5);color:#fff;outline:none}.tns-contributor-note .contributor-note-lead-form-input-wrapper .contributor-note-lead-form-input:focus{border:1px solid #fff}.tns-contributor-note .contributor-note-lead-form-input-wrapper .contributor-note-lead-form-input::placeholder{color:#fff}.tns-contributor-note .contributor-note-lead-form-input-wrapper .contributor-note-lead-form-submit{width:100%;padding:12px 20px;margin:0;background:rgba(255,255,255,0.2);border:none;border-radius:5px;color:#fff;font-size:14px;font-weight:600;cursor:pointer;-webkit-transition:all 0.3s ease;-moz-transition:all 0.3s ease;-o-transition:all 0.3s ease;-ms-transition:all 0.3s ease;transition:all 0.3s ease;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}@media (max-width:767px){.tns-contributor-note .contributor-note-lead-form-input-wrapper .contributor-note-lead-form-submit{font-size:17px}}.tns-contributor-note .contributor-note-lead-form-input-wrapper .contributor-note-lead-form-submit:hover{background:rgba(255,255,255,0.33)}.tns-contributor-note .contributor-note-lead-form-status{display:none;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);height:90px;font-size:16px;color:#fff}.tns-sponsors-rss{position:relative;padding:30px;padding-right:0;padding-bottom:40px;margin-top:35px;margin-bottom:60px;background:#f6f8fa}.tns-sponsors-rss .tns-sponsors-rss-block{max-width:800px;margin:0 auto 0 auto}.tns-sponsors-rss .section-heading{color:#8da6c0;font-size:13px;font-weight:700;margin-bottom:40px;border-top:none}.tns-sponsors-rss .sponsors-rss-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (max-width:767.98px){.tns-sponsors-rss .sponsors-rss-column{min-width:100%;max-width:100%;padding-right:25%;margin-bottom:40px}.tns-sponsors-rss .sponsors-rss-column:last-child{margin-bottom:0}}@media (max-width:399.98px){.tns-sponsors-rss .sponsors-rss-column{padding-right:10%}}.tns-sponsors-rss .sponsors-rss-block-logo{display:block;height:33px;width:auto;max-width:125px;margin-bottom:20px}@media (max-width:767.98px){.tns-sponsors-rss .sponsors-rss-block-logo{margin-bottom:15px}}.tns-sponsors-rss .sponsors-rss-block-single-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (max-width:767px){.tns-sponsors-rss .sponsors-rss-block-single-row .sponsors-rss-block-single-col{min-width:100%;max-width:100%;padding-right:25%}}@media (max-width:599px){.tns-sponsors-rss .sponsors-rss-block-single-row .sponsors-rss-block-single-col{padding-right:10%}}@media (max-width:767px){.tns-sponsors-rss .sponsors-rss-block-single-row .sponsors-rss-block-single-col:first-child{margin-bottom:40px}}.tns-sponsors-rss .sponsors-rss-block-single-profile p{position:relative;color:#515151;font-size:15px;line-height:1.33;padding-right:30px}@media (max-width:767px){.tns-sponsors-rss .sponsors-rss-block-single-profile p{font-size:17px}}.tns-sponsors-rss .sponsors-rss-block-profile-cta{color:#515151;font-size:13px}@media (max-width:767px){.tns-sponsors-rss .sponsors-rss-block-profile-cta{font-size:15px}}.tns-sponsors-rss .sponsors-rss-block-profile-cta svg{height:10px;fill:#515151}.tns-sponsors-rss .sponsors-rss-block-profile-cta:hover{color:#ff3287}.tns-sponsors-rss .sponsors-rss-block-profile-cta:hover svg{fill:#ff3287}.tns-sponsors-rss .sponsors-rss-block-profile-link{display:block}.tns-sponsors-rss .sponsors-rss-block-profile-link:hover .sponsors-rss-block-profile-cta{color:#ff3287}.tns-sponsors-rss .sponsors-rss-block-profile-link:hover .sponsors-rss-block-profile-cta svg{fill:#ff3287}.tns-sponsors-rss .sponsors-rss-items{margin-bottom:40px;padding-right:30px}@media (max-width:767px){.tns-sponsors-rss .sponsors-rss-items{padding-right:10%}}.tns-sponsors-rss .sponsors-rss-items:last-child{margin-bottom:0}.tns-sponsors-rss .sponsors-rss-link{display:block;color:#019ddb !important;font-size:14px;line-height:1.45;font-weight:600;text-decoration:none;margin-bottom:20px}@media (max-width:767px){.tns-sponsors-rss .sponsors-rss-link{font-size:18px;margin-bottom:20px}}.tns-sponsors-rss .sponsors-rss-link:last-child{margin-bottom:0}.tns-sponsors-rss .sponsors-rss-link .sponsors-rss-byline{color:#a5a9b0;font-size:12px}.tns-sponsors-rss .sponsors-rss-link:hover{color:#ff3287 !important}.tns-share{position:relative}.tns-share .share-media{position:relative}.tns-share .share-media .share-media-icon{width:30px;height:30px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-right:4px}.tns-share .share-media .share-media-icon svg{height:19px}.tns-share .share-media .share-media-icon-twitter .fill path{fill:#1c9bf0}.tns-share .share-media .share-media-icon-twitter .stroke path{stroke:#1c9bf0}.tns-share .share-media .share-media-icon-twitter:hover{opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}.tns-share .share-media .share-media-icon-hackernews .fill path{fill:#fe6600}.tns-share .share-media .share-media-icon-hackernews .stroke path{stroke:#fe6600}.tns-share .share-media .share-media-icon-hackernews:hover{opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}.tns-share .share-media .share-media-icon-linkedin .fill path{fill:#0a66c2}.tns-share .share-media .share-media-icon-linkedin .stroke path{stroke:#0a66c2}.tns-share .share-media .share-media-icon-linkedin:hover{opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}.tns-share .share-media .share-media-icon-reddit .fill path{fill:#ff4500}.tns-share .share-media .share-media-icon-reddit .stroke path{stroke:#ff4500}.tns-share .share-media .share-media-icon-reddit:hover{opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}.tns-share .share-media .share-media-icon-facebook .fill path{fill:#3c5998}.tns-share .share-media .share-media-icon-facebook .stroke path{stroke:#3c5998}.tns-share .share-media .share-media-icon-facebook:hover{opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}.tns-promo-daily{display:relative;margin-top:30px}@media (max-width:767px){.tns-promo-daily .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.tns-promo-daily .row .col{min-width:100%;max-width:100%}}.tns-promo-daily .banner{padding:30px;width:100%;color:#fff;background:#01aff4;background:-webkit-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-moz-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-o-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-ms-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:linear-gradient(145deg, #01aff4 0%, #ff3287 100%)}.tns-promo-daily .banner .heading{font-size:12px;font-weight:700}.tns-promo-daily .banner .title{font-size:46px;font-weight:800;line-height:.9}@media (max-width:767px){.tns-promo-daily .banner .title{margin-bottom:10px}}.tns-promo-daily .banner .copy{font-size:15px}@media (max-width:767px){.tns-promo-daily .banner .copy{margin-bottom:10px}}.tns-promo-daily .banner .subscribe-col{padding-left:30px}@media (max-width:767px){.tns-promo-daily .banner .subscribe-col{padding-left:0}}.tns-promo-daily .banner .subscribe-col .tns-promo-daily-email-input{margin-top:3px;color:#fff;border:1px solid rgba(255,255,255,0.63);margin-bottom:10px;-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}.tns-promo-daily .banner .subscribe-col .tns-promo-daily-email-input::placeholder{font-size:16px;color:#fff;opacity:.63;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=63)";filter:alpha(opacity=63)}.tns-promo-daily .banner .subscribe-col .tns-promo-daily-email-input:hover{border:1px solid #fff}.tns-promo-daily .banner .subscribe-col .tns-promo-daily-email-input:focus{border:1px solid #fff}.tns-promo-daily .banner .subscribe-col .tns-promo-daily-subscribe-button{color:#fff;background:rgba(255,255,255,0.33);-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}.tns-promo-daily .banner .subscribe-col .tns-promo-daily-subscribe-button:hover{color:#ff3287;background:#fff}#tns-post .tns-promo-daily{margin-bottom:30px}#tns-promo-voxpop{display:relative;margin-top:30px;overflow:hidden}@media (max-width:767px){#tns-promo-voxpop .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-promo-voxpop .row .col{min-width:100%;max-width:100%}}#tns-promo-voxpop .banner{width:100%;color:#fff;background:#01aff4;background:-webkit-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-moz-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-o-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-ms-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:linear-gradient(145deg, #01aff4 0%, #ff3287 100%)}#tns-promo-voxpop .banner .col-title{padding:30px}@media (max-width:767px){#tns-promo-voxpop .banner .col-title{padding:20px;padding-bottom:0}}#tns-promo-voxpop .banner .col-title .heading{font-size:14px;font-weight:700;letter-spacing:-1}#tns-promo-voxpop .banner .col-title .title{font-size:14px;font-weight:800}#tns-promo-voxpop .banner .col-title .brief{font-size:12px;line-height:1.2;opacity:.63;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=63)";filter:alpha(opacity=63);padding-right:10px}@media (max-width:767px){#tns-promo-voxpop .banner .col-title .brief{font-size:15px;padding-right:30px}}#tns-promo-voxpop .banner .col-copy{position:relative;font-size:15px;min-height:200px;overflow:hidden}@media (max-width:767px){#tns-promo-voxpop .banner .col-copy{margin-bottom:10px;min-height:220px}}#tns-promo-voxpop .banner .col-copy .vp-fade{position:absolute;left:10px;right:10px;bottom:0;height:50px;background:#808080;background:#fff;background:-webkit-linear-gradient(90deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(90deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(90deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(90deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0) 100%);background:linear-gradient(0deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0) 100%);z-index:2}@media (max-width:767px){#tns-promo-voxpop .banner .col-copy .vp-fade{left:20px;right:20px}}#tns-promo-voxpop .banner .col-copy .vp-graphic{position:absolute;top:20px;left:10px;right:10px;bottom:0;padding:20px;border-radius:5px 5px 0 0;background:#fff;background:rgba(255,255,255,0.93);background:#fff;background:-webkit-linear-gradient(270deg, #fff 73%, rgba(255,255,255,0.512) 100%);background:-moz-linear-gradient(270deg, #fff 73%, rgba(255,255,255,0.512) 100%);background:-o-linear-gradient(270deg, #fff 73%, rgba(255,255,255,0.512) 100%);background:-ms-linear-gradient(270deg, #fff 73%, rgba(255,255,255,0.512) 100%);background:linear-gradient(180deg, #fff 73%, rgba(255,255,255,0.512) 100%);-webkit-box-shadow:0 0 10px rgba(0,0,0,0.21);box-shadow:0 0 10px rgba(0,0,0,0.21);overflow:hidden}@media (max-width:767px){#tns-promo-voxpop .banner .col-copy .vp-graphic{left:20px;right:20px}}#tns-promo-voxpop .banner .col-copy .vp-graphic .question{color:#0e1013;font-size:16px;font-weight:600;line-height:1.18;margin-bottom:12px}@media (max-width:767px){#tns-promo-voxpop .banner .col-copy .vp-graphic .question{font-size:15px}}#tns-promo-voxpop .banner .col-copy .vp-graphic .context{color:#a5a9b0;font-weight:400;padding-right:50px;opacity:.81;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=81)";filter:alpha(opacity=81);display:none}@media (max-width:767px){#tns-promo-voxpop .banner .col-copy .vp-graphic .context{font-size:14px;margin-bottom:20px;padding-right:0}}#tns-promo-voxpop .banner .col-copy .vp-graphic .answers .answer{display:block;padding:12px;padding-right:20px;font-size:13px;font-weight:500;line-height:1.27;border-radius:5px;color:#004978;background:#e8f6ff;border:2px solid #d9f0ff;margin-bottom:4px;-webkit-transition:all 121ms;-moz-transition:all 121ms;-o-transition:all 121ms;-ms-transition:all 121ms;transition:all 121ms}@media (max-width:767px){#tns-promo-voxpop .banner .col-copy .vp-graphic .answers .answer{font-size:12px;padding-right:10px}}#tns-promo-voxpop .banner .col-cta{padding:30px}@media (max-width:767px){#tns-promo-voxpop .banner .col-cta{padding:20px;padding-top:0}}#tns-promo-voxpop .banner .col-cta .tns-promo-voxpop-launch-button{color:#fff;font-size:15px;font-weight:700;background:rgba(255,255,255,0.33);-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms;margin-bottom:7px}#tns-promo-voxpop .banner .col-cta .tns-promo-voxpop-launch-button:hover{color:#01aff4;background:#fff}#tns-promo-voxpop .banner .col-cta .nudge{font-size:12px;opacity:.72;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=72)";filter:alpha(opacity=72);text-align:center}#tns-post #tns-promo-voxpop{margin-bottom:30px}#tns-promo-survey{display:relative;margin-top:30px;overflow:hidden}@media (max-width:767px){#tns-promo-survey .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-promo-survey .row .col{min-width:100%;max-width:100%}}#tns-promo-survey .banner{width:100%;color:#fff;background:#01aff4;background:-webkit-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-moz-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-o-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-ms-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:linear-gradient(145deg, #01aff4 0%, #ff3287 100%)}#tns-promo-survey .banner .col-icon .survey-promo-icon{display:block;width:100%;max-height:100px;-webkit-transform:translate(0%,25%);-moz-transform:translate(0%,25%);-o-transform:translate(0%,25%);-ms-transform:translate(0%,25%);transform:translate(0%,25%)}#tns-promo-survey .banner .col-icon .survey-promo-icon path{fill:#fff}#tns-promo-survey .banner .col-copy{position:relative;padding-top:35px;padding-right:50px;font-size:15px;min-height:150px;overflow:hidden}@media (max-width:767px){#tns-promo-survey .banner .col-copy{margin-bottom:10px;padding-top:50px;padding-left:20px;padding-right:20px}}#tns-promo-survey .banner .col-copy .title{font-size:13px;font-weight:800}#tns-promo-survey .banner .col-copy .brief{line-height:1.2}#tns-promo-survey .banner .col-cta{padding:30px;padding-top:55px}@media (max-width:767px){#tns-promo-survey .banner .col-cta{padding:20px;padding-top:0}}#tns-promo-survey .banner .col-cta .tns-promo-survey-launch-button{color:#fff;font-size:15px;font-weight:700;background:rgba(255,255,255,0.33);-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms;margin-bottom:7px}#tns-promo-survey .banner .col-cta .tns-promo-survey-launch-button:hover{color:#01aff4;background:#fff}#tns-promo-survey .banner .col-cta .nudge{padding-left:20px;padding-right:20px;font-size:12px;line-height:1.3;opacity:.72;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=72)";filter:alpha(opacity=72);text-align:center}#tns-post #tns-promo-survey{margin-bottom:30px}.tns-follow-links{position:relative}.tns-follow-links .follow-links{position:relative}.tns-follow-links .follow-links .follow-icon{width:30px;height:30px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;vertical-align:middle;margin-right:4px}.tns-follow-links .follow-links .follow-icon svg{height:19px}.tns-follow-links .follow-links .follow-icon .fill path{fill:#3c3c3c;stroke-width:0}.tns-follow-links .follow-links .follow-icon .stroke path{stroke:#3c3c3c;fill:none}.tns-follow-links .follow-links .follow-icon:hover .fill path{fill:#01aff4}.tns-follow-links .follow-links .follow-icon:hover .stroke path{stroke:#01aff4}.tns-follow-links .follow-links .follow-icon-mastadon:hover .fill path{fill:#5e54ea}.tns-follow-links .follow-links .follow-icon-mastadon:hover .stroke path{stroke:#5e54ea}.tns-follow-links .follow-links .follow-icon-bluesky:hover .fill path{fill:#0185ff}.tns-follow-links .follow-links .follow-icon-bluesky:hover .stroke path{stroke:#0185ff}.tns-follow-links .follow-links .follow-icon-threads:hover svg{fill:#fff}.tns-follow-links .follow-links .follow-icon-threads:hover .fill path{fill:#fff}.tns-follow-links .follow-links .follow-icon-threads:hover .stroke path{stroke:#fff}.tns-follow-links .follow-links .follow-icon-twitter:hover .fill path{fill:#1c9bf0}.tns-follow-links .follow-links .follow-icon-twitter:hover .stroke path{stroke:#1c9bf0}.tns-follow-links .follow-links .follow-icon-hackernews:hover .fill path{fill:#fe6600}.tns-follow-links .follow-links .follow-icon-hackernews:hover .stroke path{stroke:#fe6600}.tns-follow-links .follow-links .follow-icon-linkedin:hover .fill path{fill:#0a66c2}.tns-follow-links .follow-links .follow-icon-linkedin:hover .stroke path{stroke:#0a66c2}.tns-follow-links .follow-links .follow-icon-reddit:hover .fill path{fill:#ff4500}.tns-follow-links .follow-links .follow-icon-reddit:hover .stroke path{stroke:#ff4500}.tns-follow-links .follow-links .follow-icon-facebook:hover .fill path{fill:#3c5998}.tns-follow-links .follow-links .follow-icon-facebook:hover .stroke path{stroke:#3c5998}.tns-follow-links .follow-links .follow-icon-instagram:hover .fill path{fill:#66b6fa}.tns-follow-links .follow-links .follow-icon-instagram:hover .stroke path{stroke:#66b6fa}.tns-follow-links .follow-links .follow-icon-spotify:hover svg{fill:#1cd760}.tns-follow-links .follow-links .follow-icon-spotify:hover .fill path{fill:#1cd760}.tns-follow-links .follow-links .follow-icon-spotify:hover .stroke path{stroke:#1cd760}.tns-follow-links .follow-links .follow-icon-youtube{vertical-align:top}.tns-follow-links .follow-links .follow-icon-youtube svg{height:27px}.tns-follow-links .follow-links .follow-icon-youtube:hover .fill path{fill:#f10001}.tns-follow-links .follow-links .follow-icon-youtube:hover .stroke path{stroke:#f10001}.tns-poll{position:relative;height:auto;border-top:1px solid #dcdcdc;margin-bottom:20px}.tns-poll .questions{margin-bottom:15px}.tns-poll .questions .page{position:realtive}.tns-poll .questions .page .question .col{font-size:17px;font-weight:500;line-height:1.33;padding:15px;padding-left:0;padding-bottom:5px}.tns-poll .questions .page .context{padding:15px;padding-top:0;padding-left:0;padding-bottom:20px;font-size:14px;line-height:1.27;color:#a3a7ae}.tns-poll .questions .page .answers .option{display:block;padding:15px;padding-left:24px;padding-right:72px;font-size:14px;font-weight:500;line-height:1.27;border-radius:5px;color:#004978;background:#e8f6ff;border:2px solid #d9f0ff;margin-bottom:4px;cursor:pointer;-webkit-transition:all 121ms;-moz-transition:all 121ms;-o-transition:all 121ms;-ms-transition:all 121ms;transition:all 121ms}@media (max-width:767px){.tns-poll .questions .page .answers .option{font-size:16px;padding-right:50px}}.tns-poll .questions .page .answers .option.active{color:#226727;border:2px solid #cdeecf;background:#d8f2da}.tns-poll .questions .page .answers .option .option-checkmark{position:absolute;top:15px;left:7px;color:#039cff;z-index:3;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-webkit-transition:opacity 121ms;-moz-transition:opacity 121ms;-o-transition:opacity 121ms;-ms-transition:opacity 121ms;transition:opacity 121ms}.tns-poll .questions .page .answers .option .option-percentage{position:absolute;top:50%;right:15px;-webkit-transform:translate(0%,-50%);-moz-transform:translate(0%,-50%);-o-transform:translate(0%,-50%);-ms-transform:translate(0%,-50%);transform:translate(0%,-50%);color:#039cff;z-index:3;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}.tns-poll .questions .page .answers .option .option-text{z-index:2}.tns-poll .questions .page .answers .option .option-results{position:absolute;top:0;left:0;bottom:0;width:0%;background:#c4e8ff;z-index:1}.tns-poll .questions .page .answers .option.active .option-percentage{color:#39ab42}.tns-poll .questions .page .answers .option.active .option-results{background:#bde9c1}.tns-poll .questions .page .answers .option.selected .option-checkmark{color:#039cff;opacity:1;-ms-filter:none;filter:none}.tns-poll .questions .page .answers .option.active.selected .option-checkmark{color:#39ab42;opacity:1;-ms-filter:none;filter:none}@media (hover:hover){.tns-poll .questions .page .answers .option:hover{color:#226727;border:2px solid #cdeecf;background:#d8f2da}.tns-poll .questions .page .answers .option:hover .option-checkmark{color:#39ab42;opacity:1;-ms-filter:none;filter:none}}.tns-poll .post-roll{height:0;overflow:hidden;border-top:1px solid #dcdcdc}.tns-poll .post-roll .post-roll-block{display:block}.tns-poll .post-roll .post-roll-block .newsletter-form{padding-top:15px;padding-bottom:20px}.tns-poll .post-roll .post-roll-block .newsletter-form .cta{font-size:14px;margin-bottom:7px}.tns-poll .post-roll .post-roll-block .newsletter-form input{margin:0}.tns-poll .post-roll .post-roll-block .newsletter-form input.error{color:#ff3287;background:rgba(255,50,135,0.12)}.tns-poll .post-roll .post-roll-block .newsletter-form button{border-radius:0;margin:0}.tns-poll .post-roll.open{border-bottom:1px solid #dcdcdc}.tns-poll a.poll-sponsor{position:relative;margin-top:20px;padding:15px;padding-top:45px;min-height:75px;color:#0e1013;font-size:14px;line-height:1.2;background:#f6f8fa;cursor:pointer}.tns-poll a.poll-sponsor .disclosure{position:absolute;top:15px;left:15px;color:#8da6c0;font-size:10px;font-weight:500}.tns-poll a.poll-sponsor .logo img{position:absolute;top:5px;left:0;max-width:85%}.tns-poll a.poll-sponsor .copy p{font-size:14px;margin-bottom:10px}.tns-poll a.poll-sponsor .cta{font-size:12px}@media (max-width:767px){.tns-poll a.poll-sponsor .cta{font-size:15px}}.tns-poll a.poll-sponsor .cta svg{height:8px;vertical-align:baseline}@media (max-width:767px){.tns-poll a.poll-sponsor .cta svg{height:10px}}.tns-poll a.poll-sponsor:hover .cta{color:#ff3287}.tns-poll a.poll-sponsor:hover .cta svg path{fill:#ff3287}.tns-poll.done .questions .page .answers .option{cursor:default;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms}.tns-poll.done .questions .page .answers .option:hover{color:#004978;background:#e8f6ff;border:2px solid #d9f0ff}.tns-poll.done .questions .page .answers .option:hover .option-checkmark{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}.tns-poll.done .questions .page .answers .option.active:hover{color:#226727;background:#d8f2da;border:2px solid #cdeecf}.tns-poll.done .questions .page .answers .option.selected:hover .option-checkmark{opacity:1;-ms-filter:none;filter:none}#tns-subscribe{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.9);z-index:10000;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);display:none}#tns-subscribe .modal{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:100%;max-width:500px;height:100%;max-height:370px;border-radius:5px;background:#fff;overflow:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);display:none}@media (max-width:500px){#tns-subscribe .modal{max-width:calc(100% - 20px)}}#tns-subscribe .modal .header{position:absolute;top:0;left:0;right:0;height:40px;border-bottom:1px solid #c2c2c2}#tns-subscribe .modal .header .title{position:absolute;left:15px;top:50%;-webkit-transform:translate(0%,-50%);-moz-transform:translate(0%,-50%);-o-transform:translate(0%,-50%);-ms-transform:translate(0%,-50%);transform:translate(0%,-50%);height:40px;line-height:40px;color:#3c3c3c;font-size:13px;font-weight:800}#tns-subscribe .modal .header .close{position:absolute;top:11px;right:14px;width:12px;cursor:pointer;z-index:2}#tns-subscribe .modal .header .close svg{width:100%;height:auto;fill:#515151}#tns-subscribe .modal .header .close:hover svg{fill:#ff3287}#tns-subscribe .modal .content{position:absolute;top:40px;left:0;right:0;bottom:0;overflow-x:hidden;overflow-y:auto}#tns-subscribe .modal .content .swiper{height:100%}#tns-subscribe .modal .content .swiper .swiper-wrapper{height:100%}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide{height:100%;padding:15px;overflow-x:hidden;overflow-y:auto}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .heading{font-size:20px;font-weight:700;margin-bottom:10px}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .heading-2{font-size:16px;font-weight:700;margin-bottom:10px}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .copy{font-size:15px;font-weight:400;margin-bottom:20px}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .follow-paragraph{margin-bottom:5px}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links{margin-left:-6px;margin-bottom:30px}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-mastadon .fill path{fill:#5e54ea}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-mastadon .stroke path{stroke:#5e54ea}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-linkedin .fill path{fill:#0a66c2}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-linkedin .stroke path{stroke:#0a66c2}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-twitter .fill path{fill:#1c9bf0}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-twitter .stroke path{stroke:#1c9bf0}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-facebook .fill path{fill:#3c5998}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-facebook .stroke path{stroke:#3c5998}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-instagram .fill path{fill:#66b6fa}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-instagram .stroke path{stroke:#66b6fa}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-youtube .fill path{fill:#f10001}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-youtube .stroke path{stroke:#f10001}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon:hover{opacity:75%;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=7500%)";filter:alpha(opacity=7500%)}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form{position:relative}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-button:disabled{background:#831844;cursor:default}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .form-field-email{display:block}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .form-field-resubscribe{display:none}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .form-field-info{color:#c2c2c2;font-size:10px;text-align:right}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .form-field-info.error{color:#ff3287}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form label{display:block;font-size:12px;font-weight:800;line-height:125%;margin-bottom:7px}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form input{border:1px solid #a5a9b0}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form input:focus{border:1px solid #000}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form input.error{border:1px solid #ff3287}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-form-privacy{display:block;max-width:450px;color:#a5a9b0;font-size:10px;font-weight:400;line-height:1.2;margin:20px auto 9px auto}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form select{width:100%;height:40px;font-size:15px;padding-left:15px;border:1px solid #a5a9b0;margin-bottom:20px}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form select:focus{border:1px solid #000}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form select.error{border:1px solid #ff3287}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-input-select-arrow{position:absolute;right:15px;top:31px;cursor:pointer;z-index:2}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-input-select-arrow svg{width:10px;height:auto;fill:#a5a9b0}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-input-select-arrow:hover svg{fill:#ff3287}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-job-level-other,#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-job-role-other,#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-organization-description-other,#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-industry-other{display:none}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-input-other-clear{position:absolute;right:15px;bottom:10px;cursor:pointer;z-index:2;display:none}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-input-other-clear svg{width:10px;height:auto;fill:#a5a9b0}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-input-other-clear:hover svg{fill:#ff3287}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .form-field-zipcode{display:none}#tns-subscribe .modal .footer{position:absolute;left:0;right:0;bottom:-60px;height:60px;border-top:1px solid #c2c2c2}#tns-subscribe .modal .footer .page-indicator{color:#a5a9b0;font-size:12px;line-height:60px;text-align:center}#tns-subscribe .modal .footer .swiper-button-col{padding-top:10px}#tns-subscribe .modal .footer .swiper-button-col .swiper-button{color:#fff;font-size:12px;font-weight:800;height:40px;line-height:40px;text-align:center;padding-left:10px;padding-right:10px;background:#000;border-radius:5px;cursor:pointer}#tns-subscribe .modal .footer .swiper-button-col:first-child{padding-left:15px}#tns-subscribe .modal .footer .swiper-button-col:last-child{padding-right:15px}.tns-cta-sponsored-content{display:block;width:100%;margin-top:35px;margin-bottom:30px;padding:24px 32px;background:#f6f8fa;color:#515151;text-align:center;text-decoration:none;-webkit-transition:color 0.2s ease;-moz-transition:color 0.2s ease;-o-transition:color 0.2s ease;-ms-transition:color 0.2s ease;transition:color 0.2s ease}.tns-cta-sponsored-content .center-copy{display:inline-block;width:100%;text-align:center;font-size:16px;line-height:1.3;color:inherit}.tns-cta-sponsored-content .center-copy .cta-text{display:inline;color:inherit}.tns-cta-sponsored-content .center-copy strong{color:inherit;font-weight:700}.tns-cta-sponsored-content:hover{color:#01aff4;text-decoration:none}#tns-ebooks-cover .tns-cta-sponsored-content,#tns-webinars-cover .tns-cta-sponsored-content,#tns-newstack-update .tns-cta-sponsored-content,#tns-events-cover .tns-cta-sponsored-content{position:relative;left:50%;width:100vw;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-o-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}@import "./assets/css/crayon.min.css";
@import "./assets/css/crayon-github-gist.css";
</style>
<meta name="x-tns-post-date" content="2025-06-19 05:05:14"><meta name="x-tns-categories" content="&lt;a href=&quot;https://thenewstack.io/cloud-native/&quot; alt=&quot;View all posts in Cloud Native Ecosystem&quot;&gt;Cloud Native Ecosystem&lt;/a&gt; / &lt;a href=&quot;https://thenewstack.io/containers/&quot; alt=&quot;View all posts in Containers&quot;&gt;Containers&lt;/a&gt; / &lt;a href=&quot;https://thenewstack.io/microservices/&quot; alt=&quot;View all posts in Microservices&quot;&gt;Microservices&lt;/a&gt;"><meta name="x-tns-category-names" content="Cloud Native Ecosystem,Containers,Microservices"><meta name="x-tns-authors" content="&lt;a href=&quot;https://thenewstack.io/author/tns-staff/&quot; title=&quot;Posts by TNS Staff&quot; class=&quot;author url fn&quot; rel=&quot;author&quot;&gt;TNS Staff&lt;/a&gt;"><meta name="x-tns-thumbnail" content="https://cdn.thenewstack.io/media/2025/03/9d9aabe3-intro-to-cloud-native-computing-.png"><meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
<script id="cookie-law-info-gcm-var-js">
var _ckyGcm = {"status":true,"default_settings":[{"analytics":"granted","advertisement":"granted","functional":"granted","necessary":"granted","ad_user_data":"granted","ad_personalization":"granted","regions":"All"}],"wait_for_update":2000,"url_passthrough":false,"ads_data_redaction":false}</script>
<script id="cookie-law-info-gcm-js" type="text/javascript" src="https://thenewstack.io/wp-content/plugins/cookie-law-info/lite/frontend/js/gcm.min.js"></script> <script id="cookieyes" type="text/javascript" src="https://cdn-cookieyes.com/client_data/bc916c1eddf6141a1f389fabdcc0e5d5/script.js"></script>
<!-- This site is optimized with the Yoast SEO Premium plugin v28.2 (Yoast SEO v28.2) - https://yoast.com/product/yoast-seo-premium-wordpress/ -->
<title>Introduction to Cloud Native Computing - The New Stack</title>
<meta name="description" content="Discover the power of cloud native computing! Learn how to build scalable, resilient apps using containers, microservices and Kubernetes. Future-proof your skills." />
<link rel="canonical" href="https://thenewstack.io/introduction-to-cloud-native-computing/" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Introduction to Cloud Native Computing" />
<meta property="og:description" content="Discover the power of cloud native computing! Learn how to build scalable, resilient apps using containers, microservices and Kubernetes. Future-proof your skills." />
<meta property="og:url" content="https://thenewstack.io/introduction-to-cloud-native-computing/" />
<meta property="og:site_name" content="The New Stack" />
<meta property="article:publisher" content="https://www.facebook.com/thenewstack" />
<meta property="article:published_time" content="2025-06-19T12:05:14+00:00" />
<meta property="og:image" content="https://cdn.thenewstack.io/media/2025/03/9d9aabe3-intro-to-cloud-native-computing-.png" />
<meta property="og:image:width" content="1792" />
<meta property="og:image:height" content="1024" />
<meta property="og:image:type" content="image/png" />
<meta name="author" content="TNS Staff" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:creator" content="@thenewstack" />
<meta name="twitter:site" content="@thenewstack" />
<meta name="twitter:label1" content="Written by" />
<meta name="twitter:data1" content="TNS Staff" />
<meta name="twitter:label2" content="Est. reading time" />
<meta name="twitter:data2" content="27 minutes" />
<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/thenewstack.io\/introduction-to-cloud-native-computing\/#article","isPartOf":{"@id":"https:\/\/thenewstack.io\/introduction-to-cloud-native-computing\/"},"author":[{"@id":"https:\/\/thenewstack.io\/#\/schema\/person\/1a61b300af64f3ad6c2b48f46ce16a9d"}],"headline":"Introduction to Cloud Native Computing","datePublished":"2025-06-19T12:05:14+00:00","mainEntityOfPage":{"@id":"https:\/\/thenewstack.io\/introduction-to-cloud-native-computing\/"},"wordCount":5315,"publisher":{"@id":"https:\/\/thenewstack.io\/#organization"},"image":{"@id":"https:\/\/thenewstack.io\/introduction-to-cloud-native-computing\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.thenewstack.io\/media\/2025\/03\/9d9aabe3-intro-to-cloud-native-computing-.png","articleSection":["Cloud Native Ecosystem","Containers","Microservices"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/thenewstack.io\/introduction-to-cloud-native-computing\/","url":"https:\/\/thenewstack.io\/introduction-to-cloud-native-computing\/","name":"Introduction to Cloud Native Computing - The New Stack","isPartOf":{"@id":"https:\/\/thenewstack.io\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thenewstack.io\/introduction-to-cloud-native-computing\/#primaryimage"},"image":{"@id":"https:\/\/thenewstack.io\/introduction-to-cloud-native-computing\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.thenewstack.io\/media\/2025\/03\/9d9aabe3-intro-to-cloud-native-computing-.png","datePublished":"2025-06-19T12:05:14+00:00","description":"Discover the power of cloud native computing! Learn how to build scalable, resilient apps using containers, microservices and Kubernetes. Future-proof your skills.","breadcrumb":{"@id":"https:\/\/thenewstack.io\/introduction-to-cloud-native-computing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thenewstack.io\/introduction-to-cloud-native-computing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thenewstack.io\/introduction-to-cloud-native-computing\/#primaryimage","url":"https:\/\/cdn.thenewstack.io\/media\/2025\/03\/9d9aabe3-intro-to-cloud-native-computing-.png","contentUrl":"https:\/\/cdn.thenewstack.io\/media\/2025\/03\/9d9aabe3-intro-to-cloud-native-computing-.png","width":1792,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/thenewstack.io\/introduction-to-cloud-native-computing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thenewstack.io\/"},{"@type":"ListItem","position":2,"name":"Introduction to Cloud Native Computing"}]},{"@type":"WebSite","@id":"https:\/\/thenewstack.io\/#website","url":"https:\/\/thenewstack.io\/","name":"The New Stack","description":"","publisher":{"@id":"https:\/\/thenewstack.io\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thenewstack.io\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/thenewstack.io\/#organization","name":"The New Stack","url":"https:\/\/thenewstack.io\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thenewstack.io\/#\/schema\/logo\/image\/","url":"https:\/\/cdn.thenewstack.io\/media\/2021\/11\/a9fbec84-the-new-stack-logo-rgb-screen.png","contentUrl":"https:\/\/cdn.thenewstack.io\/media\/2021\/11\/a9fbec84-the-new-stack-logo-rgb-screen.png","width":1032,"height":128,"caption":"The New Stack"},"image":{"@id":"https:\/\/thenewstack.io\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/thenewstack","https:\/\/x.com\/thenewstack"]},{"@type":"Person","@id":"https:\/\/thenewstack.io\/#\/schema\/person\/1a61b300af64f3ad6c2b48f46ce16a9d","name":"TNS Staff","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thenewstack.io\/wp-content\/uploads\/2026\/06\/d3c02c36-cropped-a1c2938a-download-96x96.pngca5110cb94df4e5f351d57d266cc888a","url":"https:\/\/thenewstack.io\/wp-content\/uploads\/2026\/06\/d3c02c36-cropped-a1c2938a-download-96x96.png","contentUrl":"https:\/\/thenewstack.io\/wp-content\/uploads\/2026\/06\/d3c02c36-cropped-a1c2938a-download-96x96.png","caption":"TNS Staff"},"sameAs":["http:\/\/www.thenewstack.io"],"url":"https:\/\/thenewstack.io\/author\/tns-staff\/"}]}</script>
<!-- / Yoast SEO Premium plugin. -->
<link rel='dns-prefetch' href='//www.googletagmanager.com' />
<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://thenewstack.io/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fthenewstack.io%2Fintroduction-to-cloud-native-computing%2F" />
<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://thenewstack.io/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fthenewstack.io%2Fintroduction-to-cloud-native-computing%2F&#038;format=xml" />
<style id='wp-img-auto-sizes-contain-inline-css' type='text/css'>
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<link rel="https://api.w.org/" href="https://thenewstack.io/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://thenewstack.io/wp-json/wp/v2/posts/22780745" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://thenewstack.io/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 6.9.7" />
<link rel='shortlink' href='https://thenewstack.io/?p=22780745' />
<meta name="generator" content="Site Kit by Google 1.185.0" /> <script>
const adSettings = {"post_id":22780745,"category":["cloud native ecosystem","containers","microservices"],"tag":[],"author":["TNS Staff"],"sponsored":"no","page_number":1,"page_type":"post","environment":"production"};
const AdManager = {
init: function() {
window.googletag = window.googletag || {};
googletag.cmd = googletag.cmd || [];
this.load();
},
sanitize: function (value = '') {
return String(value)
.trim()
// Remove characters forbidden at https://support.google.com/admanager/answer/10020177.
.replace(/'|\\|'|=|!|#|\*|~|;|\^|\(|\)|<|>|\[|\]|,|&/g, '')
// Extra spaces aren't forbidden, but rarely desired.
.replace(/\s+/, ' ')
// The + sign is also forbidden, but is being replaced with 'and' instead.
.replace('+', 'and')
// Maximum length of 40 for values.
.substring(0, 40);
},
sanitizeTargetingValue: function (value = '') {
if (Array.isArray(value)) {
return value.map(this.sanitize);
} else {
return this.sanitize(value);
}
},
load: function() {
const slots = {
'rootAdUnit' : '/22873384501/tns/',
'homepage' : [
// {
// 'adSlot': 'div-gpt-ad-native-inline-1',
// 'adUnit': 'native_inline_1',
// 'position': 'inline_1',
// },
// {
// 'adSlot': 'div-gpt-ad-native-inline-2',
// 'adUnit': 'native_inline_2',
// 'position': 'inline_2',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-1',
// 'adUnit': 'native_sidebar_1',
// 'position': 'sidebar_1',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-2',
// 'adUnit': 'native_sidebar_2',
// 'position': 'sidebar_2',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-3',
// 'adUnit': 'native_sidebar_3',
// 'position': 'sidebar_3',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-4',
// 'adUnit': 'native_sidebar_4',
// 'position': 'sidebar_4',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-5',
// 'adUnit': 'native_sidebar_5',
// 'position': 'sidebar_5',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-6',
// 'adUnit': 'native_sidebar_6',
// 'position': 'sidebar_6',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-7',
// 'adUnit': 'native_sidebar_7',
// 'position': 'sidebar_7',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-8',
// 'adUnit': 'native_sidebar_8',
// 'position': 'sidebar_8',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-9',
// 'adUnit': 'native_sidebar_9',
// 'position': 'sidebar_9',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-10',
// 'adUnit': 'native_sidebar_10',
// 'position': 'sidebar_10',
// },
],
'post': [
{
'adSlot': 'div-gpt-ad-native-sidebar-1',
'adUnit': 'native_sidebar_1',
'position': 'sidebar_1',
'sizes': ['fluid', [300, 250], [300, 600]],
},
]
};
googletag.cmd.push(() => {
// Configure all ad slots on the page to be expanded by default, but
// collapse slots that are unable to be filled with an ad.
googletag.pubads().collapseEmptyDivs();
googletag
.defineSlot('/22873384501/tns/native_top', ['fluid'], 'div-gpt-ad-native-top')
.setTargeting('position ', 'top')
.addService(googletag.pubads());
googletag
.defineSlot('/22873384501/tns/native_bottom', ['fluid'], 'div-gpt-ad-native-bottom')
.setTargeting('position ', 'bottom')
.addService(googletag.pubads());
// Define ad slots.
if (1 === parseInt(adSettings.page_number)) {
if (typeof slots[adSettings['page_type']] !== 'undefined') {
for (let slot of slots[adSettings['page_type']]) {
googletag
.defineSlot(slots.rootAdUnit + slot.adUnit, slot.sizes || ['fluid'], slot.adSlot)
.setTargeting('position ', slot.position)
.addService(googletag.pubads());
}
}
} else if (adSettings.page_type === 'homepage' || adSettings.page_type === 'post') {
for (let i = 1; i <= 20; i++) {
googletag
.defineSlot('/22873384501/tns/native_inline_'+i, ['fluid'], 'div-gpt-ad-native-inline-'+i)
.setTargeting('position', 'inline_'+i)
.addService(googletag.pubads());
}
}
// Set targeting for all ad slots on the page.
for (let key in adSettings) {
if (adSettings.hasOwnProperty(key)) {
googletag.pubads().setTargeting(key, this.sanitizeTargetingValue( adSettings[key] ));
}
}
googletag.pubads().addEventListener('slotRenderEnded', function (e) {
if (!e.isEmpty) {
return;
}
const slotId = e.slot.getSlotElementId();
if (slotId.includes('inline')) {
// Remove inline ad containers on the homepage from the DOM
// to prevent the nth-selector styling from being thrown off
// by the hidden ad container.
const slot = document.getElementById(slotId);
if (!slot) {
return;
}
slot.parentNode.removeChild(slot);
}
// The page layout shuffling on desktop article is causing the
// ad code to have trouble creating the empty iframe, so the
// ad slot is not getting collapsed. After a small delay,
// manually collapse the slot.
setTimeout(() => {
const adContainer = document.getElementById(slotId);
if (adContainer) {
adContainer.style.display = 'none';
}
}, 1800)
});
googletag.pubads().addEventListener('slotOnload', (event) => {
// - Native ads have a small chance of having the iframe within
// them set to have a height of 0.
// - After the ad signals that it has loaded, check whether its
// iframe's height is very small.
// - If it is, assume an error has happened and change the height
// to be the same as the container.
const slot = event.slot;
if (!slot) return;
setTimeout(() => {
const id = slot.getSlotElementId();
const container = document.getElementById(id);
if (!container) return;
let iframe = container.querySelector('iframe');
if (!iframe) return;
let iframeHeight = iframe.offsetHeight;
// Pick 10 instead of 0 just in case a border or something
// similar has made the iframe register as having a few
// pixels.
if (iframeHeight > 10) return;
else {
window.dataLayer.push({
'event' : 'gam_ad_unit_blank',
'context' : id
});
}
// Determine the height reserved by the ad container due to
// the page's styling, minus the vertical padding.
const containerStyle = getComputedStyle(container);
let reservedSpace = parseFloat(containerStyle.height) - parseFloat(containerStyle.paddingTop) - parseFloat(containerStyle.paddingBottom);
if (reservedSpace < 1) return;
iframe.style.height = reservedSpace + 'px';
iframe.style.minWidth = "100%";
}, 1200)
});
// Set targeting params from BlueConic (if any).
this.blueConicGAMConnection();
// Enable SRA and services.
googletag.pubads().enableSingleRequest();
googletag.pubads().enableLazyLoad();
googletag.enableServices();
// If BC callback happens later, update targeting params.
this.setupBlueConicGAMCallback();
});
},
/**
* Instantly connect BlueConic-supplied values to the GAM page-level targeting.
*/
blueConicGAMConnection() {
if (typeof Storage !== 'undefined') {
const targetingParamStr = localStorage.getItem('bcDFPTargetingParams');
if (targetingParamStr) {
const targetingParameters = JSON.parse(targetingParamStr); // set page-level targeting parameters.
targetingParameters.forEach((param) => {
window.googletag.pubads().setTargeting(param.key, param.value);
});
}
}
},
/**
* Listen for BlueConic DFP callback and update GAM targeting params.
*/
setupBlueConicGAMCallback() {
window.bcDFPCallback = function(params) {
if (!params || params.length === 0) return; // ignore empty callback
params.forEach(param => {
window.googletag.pubads().setTargeting(param.key, param.value);
});
};
},
};
window.AdManager = AdManager;
AdManager.init();
(function () {
let nativeAds = [];
/**
* Determine the current breakpoint.
*
* The native ad will set a CSS class on the ad's body tag based on the
* breakpoint returned here. If you return "large" then the class
* "breakpoint-large" will be set on the native ad.
*
* @returns string The name of the current breakpoint.
*/
function getBreakpoint() {
const width = window.innerWidth || document.body.clientWidth;
// Customize these breakpoints to match your site. They can be anything
// you want, so long as you style the native ad matching the classname
// `breakpoint-${thisReturnValue}`.
if (width >= 1400) {
return 'x-large';
} else if (width >= 1024) {
return 'large';
} else if (width >= 768) {
return 'medium';
} else {
return 'small';
}
}
/**
* Tell an iframe the current breakpoint using postMessage.
*
* @param {object} iframe An iframe's window object.
*/
function sendSize(iframe) {
const msg = `breakpoint:${getBreakpoint()}`;
iframe.postMessage(msg, '*');
}
/**
* Send the current breakpoint size to all native ads that have loaded.
*/
function notifyAllNativeAds() {
if (!nativeAds || nativeAds.length === 0) {
return;
}
nativeAds.forEach((nativeAd) => {
sendSize(nativeAd);
});
}
/**
* Initialize the necessary event listeners.
*/
function init() {
// The Native Ad has loaded. Immediately tell it the current breakpoint,
// and store it in an array so we can communicate it later if the browser
// resizes.
window.addEventListener(
'message',
function (e) {
if (e.data === 'initdfp') {
sendSize(e.source);
nativeAds.push(e.source);
}
}
);
// Send an updated breakpoint to all native ads that have previously
// loaded on the page.
window.addEventListener(
'resize',
notifyAllNativeAds,
{
passive: true,
}
);
}
init();
})();
</script>
<link rel="icon" href="https://cdn.thenewstack.io/media/2026/03/b2fc1b22-cropped-89b6d319-download-32x32.png" sizes="32x32" />
<link rel="icon" href="https://cdn.thenewstack.io/media/2026/03/b2fc1b22-cropped-89b6d319-download-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://cdn.thenewstack.io/media/2026/03/b2fc1b22-cropped-89b6d319-download-180x180.png" />
<meta name="msapplication-TileImage" content="https://cdn.thenewstack.io/media/2026/03/b2fc1b22-cropped-89b6d319-download-270x270.png" />
<script>
/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0;
}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{
marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g,sb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(sb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[\t\r\n\f]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/\r?\n/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(ac,"\r\n")}}):{name:b.name,value:c.replace(ac,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({
padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n});
</script>
<script>
(function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.async={})})(this,function(e){"use strict";function t(e,...t){return(...n)=>e(...t,...n)}function n(e){return function(...t){var n=t.pop();return e.call(this,t,n)}}function i(e){setTimeout(e,0)}function a(e){return(t,...n)=>e(()=>t(...n))}function r(e){return d(e)?function(...t){const n=t.pop(),i=e.apply(this,t);return s(i,n)}:n(function(t,n){var i;try{i=e.apply(this,t)}catch(t){return n(t)}return i&&"function"==typeof i.then?s(i,n):void n(null,i)})}function s(e,t){return e.then(e=>{l(t,null,e)},e=>{l(t,e&&e.message?e:new Error(e))})}function l(e,t,n){try{e(t,n)}catch(e){ve(t=>{throw t},e)}}function d(e){return"AsyncFunction"===e[Symbol.toStringTag]}function c(e){return"AsyncGenerator"===e[Symbol.toStringTag]}function u(e){return"function"==typeof e[Symbol.asyncIterator]}function o(e){if("function"!=typeof e)throw new Error("expected a function");return d(e)?r(e):e}function f(e){return function(t,...i){var a=n(function(n,i){var a=this;return e(t,(e,t)=>{o(e).apply(a,n.concat(t))},i)});return i.length?a.apply(this,i):a}}function p(e,t,n,i){t=t||[];var a=[],r=0,s=o(n);return e(t,(e,t,n)=>{var i=r++;s(e,(e,t)=>{a[i]=t,n(e)})},e=>{i(e,a)})}function h(e){return e&&"number"==typeof e.length&&0<=e.length&&0==e.length%1}function y(e){function t(...t){if(null!==e){var n=e;e=null,n.apply(this,t)}}return Object.assign(t,e),t}function m(e){return e[Symbol.iterator]&&e[Symbol.iterator]()}function g(e){var t=-1,n=e.length;return function(){return++t<n?{value:e[t],key:t}:null}}function k(e){var t=-1;return function(){var n=e.next();return n.done?null:(t++,{value:n.value,key:t})}}function S(e){var t=e?Object.keys(e):[],n=-1,a=t.length;return function(){var i=t[++n];return n<a?{value:e[i],key:i}:null}}function v(e){if(h(e))return g(e);var t=m(e);return t?k(t):S(e)}function L(e){return function(...t){if(null===e)throw new Error("Callback was already called.");var n=e;e=null,n.apply(this,t)}}function x(e,t,n,i){function a(){u>=t||c||l||(c=!0,e.next().then(({value:e,done:t})=>{if(!(d||l))return c=!1,t?(l=!0,void(0>=u&&i(null))):void(u++,n(e,o,r),o++,a())}).catch(s))}function r(e,t){return u-=1,d?void 0:e?s(e):!1===e?(l=!0,void(d=!0)):t===Le||l&&0>=u?(l=!0,i(null)):void a()}function s(e){d||(c=!1,l=!0,i(e))}let l=!1,d=!1,c=!1,u=0,o=0;a()}function E(e,t=e.length){function n(...n){return"function"==typeof n[t-1]?e.apply(this,n):new Promise((i,a)=>{n[t-1]=(e,...t)=>e?a(e):void i(1<t.length?t:t[0]),e.apply(this,n)})}if(!t)throw new Error("arity is undefined");return Object.defineProperty(n,"name",{value:`awaitable(${e.name})`}),n}function O(e,t,n){function i(e,t){!1===e&&(l=!0);!0===l||(e?n(e):(++r===s||t===Le)&&n(null))}n=y(n);var a=0,r=0,{length:s}=e,l=!1;for(0===s&&n(null);a<s;a++)t(e[a],a,L(i))}function b(e,t,n){return Ee(e,1/0,t,n)}function _(){function e(e,...i){return e?n(e):void t(1<i.length?i:i[0])}let t,n;return e[Be]=new Promise((e,i)=>{t=e,n=i}),e}function j(e,t,n){function i(e,t){g.push(()=>l(e,t))}function a(){if(!p){if(0===g.length&&0===f)return n(null,u);for(;g.length&&f<t;){var e=g.shift();e()}}}function r(e,t){var n=m[e];n||(n=m[e]=[]),n.push(t)}function s(e){var t=m[e]||[];t.forEach(e=>e()),a()}function l(e,t){if(!h){var i=L((t,...i)=>{if(f--,!1===t)return void(p=!0);if(2>i.length&&([i]=i),t){var a={};if(Object.keys(u).forEach(e=>{a[e]=u[e]}),a[e]=i,h=!0,m=Object.create(null),p)return;n(t,a)}else u[e]=i,s(e)});f++;var a=o(t[t.length-1]);1<t.length?a(u,i):a(i)}}function d(t){var n=[];return Object.keys(e).forEach(i=>{const a=e[i];Array.isArray(a)&&0<=a.indexOf(t)&&n.push(i)}),n}"number"!=typeof t&&(n=t,t=null),n=y(n||_());var c=Object.keys(e).length;if(!c)return n(null);t||(t=c);var u={},f=0,p=!1,h=!1,m=Object.create(null),g=[],k=[],S={};return Object.keys(e).forEach(t=>{var n=e[t];if(!Array.isArray(n))return i(t,[n]),void k.push(t);var a=n.slice(0,n.length-1),s=a.length;return 0===s?(i(t,n),void k.push(t)):void(S[t]=s,a.forEach(l=>{if(!e[l])throw new Error("async.auto task `"+t+"` has a non-existent dependency `"+l+"` in "+a.join(", "));r(l,()=>{s--,0===s&&i(t,n)})}))}),function(){for(var e,t=0;k.length;)e=k.pop(),t++,d(e).forEach(e=>{0==--S[e]&&k.push(e)});if(t!==c)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}(),a(),n[Be]}function I(e){const t=e.toString().replace(Pe,"");let n=t.match(Me);if(n||(n=t.match(Fe)),!n)throw new Error("could not parse args in autoInject\nSource:\n"+t);let[,i]=n;return i.replace(/\s/g,"").split(Te).map(e=>e.replace(we,"").trim())}function A(e,t){var n={};return Object.keys(e).forEach(t=>{function i(e,t){var n=a.map(t=>e[t]);n.push(t),o(r)(...n)}var a,r=e[t],s=d(r),l=!s&&1===r.length||s&&0===r.length;if(Array.isArray(r))a=[...r],r=a.pop(),n[t]=a.concat(0<a.length?i:r);else if(l)n[t]=r;else{if(a=I(r),0===r.length&&!s&&0===a.length)throw new Error("autoInject task functions require explicit parameters.");s||a.pop(),n[t]=a.concat(i)}}),j(n,t)}function B(e,t){e.length=1,e.head=e.tail=t}function M(e,t,n){function i(e,t,n){if(null!=n&&"function"!=typeof n)throw new Error("task callback must be a function");if(f.started=!0,Array.isArray(e)||(e=[e]),0===e.length&&f.idle())return ve(()=>f.drain());for(var a,r=0,s=e.length;r<s;r++)a={data:e[r],callback:n||Re},t?f._tasks.unshift(a):f._tasks.push(a);c||(c=!0,ve(()=>{c=!1,f.process()}))}function a(e){return function(t,...n){s-=1;for(var a=0,r=e.length;a<r;a++){var l=e[a],c=d.indexOf(l);0===c?d.shift():0<c&&d.splice(c,1),l.callback(t,...n),null!=t&&f.error(t,l.data)}s<=f.concurrency-f.buffer&&f.unsaturated(),f.idle()&&f.drain(),f.process()}}if(null==t)t=1;else if(0===t)throw new RangeError("Concurrency must not be zero");var r=o(e),s=0,d=[],c=!1,u=!1,f={_tasks:new ze,*[Symbol.iterator](){yield*f._tasks[Symbol.iterator]()},concurrency:t,payload:n,saturated:Re,unsaturated:Re,buffer:t/4,empty:Re,drain:Re,error:Re,started:!1,paused:!1,push(e,t){i(e,!1,t)},kill(){f.drain=Re,f._tasks.empty()},unshift(e,t){i(e,!0,t)},remove(e){f._tasks.remove(e)},process(){if(!u){for(u=!0;!f.paused&&s<f.concurrency&&f._tasks.length;){var e=[],t=[],n=f._tasks.length;f.payload&&(n=Math.min(n,f.payload));for(var c,o=0;o<n;o++)c=f._tasks.shift(),e.push(c),d.push(c),t.push(c.data);s+=1,0===f._tasks.length&&f.empty(),s===f.concurrency&&f.saturated();var p=L(a(e));r(t,p)}u=!1}},length(){return f._tasks.length},running(){return s},workersList(){return d},idle(){return 0===f._tasks.length+s},pause(){f.paused=!0},resume(){!1===f.paused||(f.paused=!1,ve(f.process))}};return f}function F(e,t){return M(e,1,t)}function T(e,t,n){return M(e,t,n)}function w(...e){var t=e.map(o);return function(...e){var n=this,i=e[e.length-1];return"function"==typeof i?e.pop():i=_(),Ve(t,e,(e,t,i)=>{t.apply(n,e.concat((e,...t)=>{i(e,t)}))},(e,t)=>i(e,...t)),i[Be]}}function P(...e){return w(...e.reverse())}function z(...e){return function(...t){var n=t.pop();return n(null,...e)}}function R(e,t){return(n,i,a,r)=>{var s,l=!1;const d=o(a);n(i,(n,i,a)=>{d(n,(i,r)=>i?a(i):e(r)&&!s?(l=!0,s=t(!0,n),a(null,Le)):void a())},e=>e?r(e):void r(null,l?s:t(!1)))}}function Y(e){return(t,...n)=>o(t)(...n,(t,...n)=>{"object"==typeof console&&(t?console.error&&console.error(t):console[e]&&n.forEach(t=>console[e](t)))})}function V(e,t,n){const i=o(t);return Ke(e,(...e)=>{const t=e.pop();i(...e,(e,n)=>t(e,!n))},n)}function q(e){return(t,n,i)=>e(t,i)}function C(e){return d(e)?e:function(...t){var n=t.pop(),i=!0;t.push((...e)=>{i?ve(()=>n(...e)):n(...e)}),e.apply(this,t),i=!1}}function Q(e,t,n,a){var r=Array(t.length);e(t,(e,t,i)=>{n(e,(e,n)=>{r[t]=!!n,i(e)})},e=>{if(e)return a(e);for(var n=[],s=0;s<t.length;s++)r[s]&&n.push(t[s]);a(null,n)})}function N(e,t,n,i){var a=[];e(t,(e,t,i)=>{n(e,(n,r)=>n?i(n):void(r&&a.push({index:t,value:e}),i()))},e=>e?i(e):void i(null,a.sort((e,t)=>e.index-t.index).map(e=>e.value)))}function D(e,t,n,i){var a=h(t)?Q:N;return a(e,t,o(n),i)}function U(e,t,n){return rt(e,1/0,t,n)}function W(e,t,n){return rt(e,1,t,n)}function G(e,t,n){return lt(e,1/0,t,n)}function K(e,t,n){return lt(e,1,t,n)}function X(e,t=e=>e){var a=Object.create(null),r=Object.create(null),i=o(e),s=n((e,n)=>{var s=t(...e);s in a?ve(()=>n(null,...a[s])):s in r?r[s].push(n):(r[s]=[n],i(...e,(e,...t)=>{e||(a[s]=t);var n=r[s];delete r[s];for(var d=0,c=n.length;d<c;d++)n[d](e,...t)}))});return s.memo=a,s.unmemoized=e,s}function H(e,t){return ct(Oe,e,t)}function Z(e,t,n){return ct(xe(t),e,n)}function $(e,t){var n=o(e);return M((e,t)=>{n(e[0],t)},t,1)}function J(e,t){var n=$(e,t);return n.push=function(e,t=0,a=()=>{}){if("function"!=typeof a)throw new Error("task callback must be a function");if(n.started=!0,Array.isArray(e)||(e=[e]),0===e.length)return ve(()=>n.drain());for(var r=n._tasks.head;r&&t>=r.priority;)r=r.next;for(var s,d=0,c=e.length;d<c;d++)s={data:e[d],priority:t,callback:a},r?n._tasks.insertBefore(r,s):n._tasks.push(s);ve(n.process)},delete n.unshift,n}function ee(e,t,n,i){var a=[...e].reverse();return Ve(a,t,n,i)}function te(e){var t=o(e);return n(function(e,n){return e.push((e,...t)=>{if(e)return n(null,{error:e});var i=t;1>=t.length&&([i]=t),n(null,{value:i})}),t.apply(this,e)})}function ne(e){var t;return Array.isArray(e)?t=e.map(te):(t={},Object.keys(e).forEach(n=>{t[n]=te.call(this,e[n])})),t}function ie(e,t,n,i){const a=o(n);return D(e,t,(e,t)=>{a(e,(e,n)=>{t(e,!n)})},i)}function ae(e){return function(){return e}}function re(e,t,n){function i(){r((e,...t)=>{!1===e||(e&&s++<a.times&&("function"!=typeof a.errorFilter||a.errorFilter(e))?setTimeout(i,a.intervalFunc(s)):n(e,...t))})}var a={times:ht,intervalFunc:ae(yt)};if(3>arguments.length&&"function"==typeof e?(n=t||_(),t=e):(se(a,e),n=n||_()),"function"!=typeof t)throw new Error("Invalid arguments for async.retry");var r=o(t),s=1;return i(),n[Be]}function se(e,n){if("object"==typeof n)e.times=+n.times||ht,e.intervalFunc="function"==typeof n.interval?n.interval:ae(+n.interval||yt),e.errorFilter=n.errorFilter;else if("number"==typeof n||"string"==typeof n)e.times=+n||ht;else throw new Error("Invalid arguments for async.retry")}function le(e,t){t||(t=e,e=null);let i=e&&e.arity||t.length;d(t)&&(i+=1);var a=o(t);return n((t,n)=>{function r(e){a(...t,e)}return(t.length<i-1||null==n)&&(t.push(n),n=_()),e?re(e,r,n):re(r,n),n[Be]})}function de(e,t){return ct(je,e,t)}function ce(e,t,i){var a=o(e);return n((n,r)=>{var s,l=!1;n.push((...e)=>{l||(r(...e),clearTimeout(s))}),s=setTimeout(function(){var t=e.name||"anonymous",n=new Error("Callback function \""+t+"\" timed out.");n.code="ETIMEDOUT",i&&(n.info=i),l=!0,r(n)},t),a(...n)})}function ue(e){for(var t=Array(e);e--;)t[e]=e;return t}function oe(e,t,n,i){var a=o(n);return qe(ue(e),t,a,i)}function fe(e,t,n){return oe(e,1/0,t,n)}function pe(e,t,n){return oe(e,1,t,n)}function he(e,t,n,i){3>=arguments.length&&"function"==typeof t&&(i=n,n=t,t=Array.isArray(e)?[]:{}),i=y(i||_());var a=o(n);return Oe(e,(e,n,i)=>{a(t,e,n,i)},e=>i(e,t)),i[Be]}function ye(e){return(...t)=>(e.unmemoized||e)(...t)}function me(e,t,n){const i=o(e);return Lt(e=>i((t,n)=>e(t,!n)),t,n)}var ge,ke="function"==typeof setImmediate&&setImmediate,Se="object"==typeof process&&"function"==typeof process.nextTick;ge=ke?setImmediate:Se?process.nextTick:i;var ve=a(ge);const Le={};var xe=e=>(t,n,i)=>{function a(e,t){if(!d)if(o-=1,e)l=!0,i(e);else if(!1===e)l=!0,d=!0;else{if(t===Le||l&&0>=o)return l=!0,i(null);f||r()}}function r(){for(f=!0;o<e&&!l;){var t=s();if(null===t)return l=!0,void(0>=o&&i(null));o+=1,n(t.value,t.key,L(a))}f=!1}if(i=y(i),0>=e)throw new RangeError("concurrency limit cannot be less than 1");if(!t)return i(null);if(c(t))return x(t,e,n,i);if(u(t))return x(t[Symbol.asyncIterator](),e,n,i);var s=v(t),l=!1,d=!1,o=0,f=!1;r()},Ee=E(function(e,t,n,i){return xe(t)(e,o(n),i)},4),Oe=E(function(e,t,n){var i=h(e)?O:b;return i(e,o(t),n)},3),be=E(function(e,t,n){return p(Oe,e,t,n)},3),_e=f(be),je=E(function(e,t,n){return Ee(e,1,t,n)},3),Ie=E(function(e,t,n){return p(je,e,t,n)},3),Ae=f(Ie);const Be=Symbol("promiseCallback");var Me=/^(?:async\s+)?(?:function)?\s*[^(]*\(\s*([^)]+)\s*\)(?:\s*{)/m,Fe=/^(?:async\s+)?\(?\s*([^)^=]+)\s*\)?(?:\s*=>)/m,Te=/,/,we=/(=.+)?(\s*)$/,Pe=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;class ze{constructor(){this.head=this.tail=null,this.length=0}removeLink(e){return e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev,e.prev=e.next=null,this.length-=1,e}empty(){for(;this.head;)this.shift();return this}insertAfter(e,t){t.prev=e,t.next=e.next,e.next?e.next.prev=t:this.tail=t,e.next=t,this.length+=1}insertBefore(e,t){t.prev=e.prev,t.next=e,e.prev?e.prev.next=t:this.head=t,e.prev=t,this.length+=1}unshift(e){this.head?this.insertBefore(this.head,e):B(this,e)}push(e){this.tail?this.insertAfter(this.tail,e):B(this,e)}shift(){return this.head&&this.removeLink(this.head)}pop(){return this.tail&&this.removeLink(this.tail)}toArray(){return[...this]}*[Symbol.iterator](){for(var e=this.head;e;)yield e.data,e=e.next}remove(e){for(var t=this.head;t;){var{next:n}=t;e(t)&&this.removeLink(t),t=n}return this}}const Re=()=>{};var Ye,Ve=E(function(e,t,n,i){i=y(i);var a=o(n);return je(e,(e,n,i)=>{a(t,e,(e,n)=>{t=n,i(e)})},e=>i(e,t))},4),qe=E(function(e,t,n,i){return p(xe(t),e,n,i)},4),Ce=E(function(e,t,n,a){var i=o(n);return qe(e,t,(e,t)=>{i(e,(e,...n)=>e?t(e):t(null,n))},(e,t)=>{for(var n=[],r=0;r<t.length;r++)t[r]&&(n=n.concat(...t[r]));return a(e,n)})},4),Qe=E(function(e,t,n){return Ce(e,1/0,t,n)},3),Ne=E(function(e,t,n){return Ce(e,1,t,n)},3),De=E(function(e,t,n){return R(e=>e,(e,t)=>t)(Oe,e,t,n)},3),Ue=E(function(e,t,n,i){return R(e=>e,(e,t)=>t)(xe(t),e,n,i)},4),We=E(function(e,t,n){return R(e=>e,(e,t)=>t)(xe(1),e,t,n)},3),Ge=Y("dir"),Ke=E(function(e,t,n){function i(e,...t){return e?n(e):void(!1===e||(r=t,l(...t,a)))}function a(e,t){return e?n(e):!1===e?void 0:t?void s(i):n(null,...r)}n=L(n);var r,s=o(e),l=o(t);return a(null,!0)},3),Xe=E(function(e,t,n){return Oe(e,q(o(t)),n)},3),He=E(function(e,t,n,i){return xe(t)(e,q(o(n)),i)},4),Ze=E(function(e,t,n){return He(e,1,t,n)},3),$e=E(function(e,t,n){return R(e=>!e,e=>!e)(Oe,e,t,n)},3),Je=E(function(e,t,n,i){return R(e=>!e,e=>!e)(xe(t),e,n,i)},4),et=E(function(e,t,n){return R(e=>!e,e=>!e)(je,e,t,n)},3),tt=E(function(e,t,n){return D(Oe,e,t,n)},3),nt=E(function(e,t,n,i){return D(xe(t),e,n,i)},4),it=E(function(e,t,n){return D(je,e,t,n)},3),at=E(function(e,t){function n(e){return e?i(e):void(!1===e||a(n))}var i=L(t),a=o(C(e));return n()},2),rt=E(function(e,t,n,a){var i=o(n);return qe(e,t,(e,t)=>{i(e,(n,i)=>n?t(n):t(null,{key:i,val:e}))},(e,t)=>{for(var n={},{hasOwnProperty:r}=Object.prototype,s=0;s<t.length;s++)if(t[s]){var{key:l}=t[s],{val:d}=t[s];r.call(n,l)?n[l].push(d):n[l]=[d]}return a(e,n)})},4),st=Y("log"),lt=E(function(e,t,n,i){i=y(i);var a={},r=o(n);return xe(t)(e,(e,t,n)=>{r(e,t,(e,i)=>e?n(e):void(a[t]=i,n()))},e=>i(e,a))},4);Ye=Se?process.nextTick:ke?setImmediate:i;var dt=a(Ye),ct=E((e,t,n)=>{var i=h(t)?[]:{};e(t,(e,t,n)=>{o(e)((e,...a)=>{2>a.length&&([a]=a),i[t]=a,n(e)})},e=>n(e,i))},3),ut=E(function(e,t){if(t=y(t),!Array.isArray(e))return t(new TypeError("First argument to race must be an array of functions"));if(!e.length)return t();for(var n=0,a=e.length;n<a;n++)o(e[n])(t)},2),ot=E(function(e,t,n){return ie(Oe,e,t,n)},3),ft=E(function(e,t,n,i){return ie(xe(t),e,n,i)},4),pt=E(function(e,t,n){return ie(je,e,t,n)},3);const ht=5,yt=0;var mt=E(function(e,t,n){return R(Boolean,e=>e)(Oe,e,t,n)},3),gt=E(function(e,t,n,i){return R(Boolean,e=>e)(xe(t),e,n,i)},4),kt=E(function(e,t,n){return R(Boolean,e=>e)(je,e,t,n)},3),St=E(function(e,t,n){function i(e,t){var n=e.criteria,i=t.criteria;return n<i?-1:n>i?1:0}var a=o(t);return be(e,(e,t)=>{a(e,(n,i)=>n?t(n):void t(null,{value:e,criteria:i}))},(e,t)=>e?n(e):void n(null,t.sort(i).map(e=>e.value)))},3),vt=E(function(e,t){var n,i=null;return Ze(e,(e,t)=>{o(e)((e,...a)=>{2>a.length?[n]=a:n=a,i=e,t(e?null:{})})},()=>t(i,n))}),Lt=E(function(e,t,n){function i(e,...t){if(e)return n(e);r=t;!1===e||l(a)}function a(e,t){return e?n(e):!1===e?void 0:t?void s(i):n(null,...r)}n=L(n);var r,s=o(t),l=o(e);return l(a)},3),xt=E(function(e,t){function n(t){var n=o(e[a++]);n(...t,L(i))}function i(i,...r){return!1===i?void 0:i||a===e.length?t(i,...r):void n(r)}if(t=y(t),!Array.isArray(e))return t(new Error("First argument to waterfall must be an array of functions"));if(!e.length)return t();var a=0;n([])});e.default={apply:t,applyEach:_e,applyEachSeries:Ae,asyncify:r,auto:j,autoInject:A,cargo:F,cargoQueue:T,compose:P,concat:Qe,concatLimit:Ce,concatSeries:Ne,constant:z,detect:De,detectLimit:Ue,detectSeries:We,dir:Ge,doUntil:V,doWhilst:Ke,each:Xe,eachLimit:He,eachOf:Oe,eachOfLimit:Ee,eachOfSeries:je,eachSeries:Ze,ensureAsync:C,every:$e,everyLimit:Je,everySeries:et,filter:tt,filterLimit:nt,filterSeries:it,forever:at,groupBy:U,groupByLimit:rt,groupBySeries:W,log:st,map:be,mapLimit:qe,mapSeries:Ie,mapValues:G,mapValuesLimit:lt,mapValuesSeries:K,memoize:X,nextTick:dt,parallel:H,parallelLimit:Z,priorityQueue:J,queue:$,race:ut,reduce:Ve,reduceRight:ee,reflect:te,reflectAll:ne,reject:ot,rejectLimit:ft,rejectSeries:pt,retry:re,retryable:le,seq:w,series:de,setImmediate:ve,some:mt,someLimit:gt,someSeries:kt,sortBy:St,timeout:ce,times:fe,timesLimit:oe,timesSeries:pe,transform:he,tryEach:vt,unmemoize:ye,until:me,waterfall:xt,whilst:Lt,all:$e,allLimit:Je,allSeries:et,any:mt,anyLimit:gt,anySeries:kt,find:De,findLimit:Ue,findSeries:We,forEach:Xe,forEachSeries:Ze,forEachLimit:He,forEachOf:Oe,forEachOfSeries:je,forEachOfLimit:Ee,inject:Ve,foldl:Ve,foldr:ee,select:tt,selectLimit:nt,selectSeries:it,wrapSync:r,during:Lt,doDuring:Ke},e.apply=t,e.applyEach=_e,e.applyEachSeries=Ae,e.asyncify=r,e.auto=j,e.autoInject=A,e.cargo=F,e.cargoQueue=T,e.compose=P,e.concat=Qe,e.concatLimit=Ce,e.concatSeries=Ne,e.constant=z,e.detect=De,e.detectLimit=Ue,e.detectSeries=We,e.dir=Ge,e.doUntil=V,e.doWhilst=Ke,e.each=Xe,e.eachLimit=He,e.eachOf=Oe,e.eachOfLimit=Ee,e.eachOfSeries=je,e.eachSeries=Ze,e.ensureAsync=C,e.every=$e,e.everyLimit=Je,e.everySeries=et,e.filter=tt,e.filterLimit=nt,e.filterSeries=it,e.forever=at,e.groupBy=U,e.groupByLimit=rt,e.groupBySeries=W,e.log=st,e.map=be,e.mapLimit=qe,e.mapSeries=Ie,e.mapValues=G,e.mapValuesLimit=lt,e.mapValuesSeries=K,e.memoize=X,e.nextTick=dt,e.parallel=H,e.parallelLimit=Z,e.priorityQueue=J,e.queue=$,e.race=ut,e.reduce=Ve,e.reduceRight=ee,e.reflect=te,e.reflectAll=ne,e.reject=ot,e.rejectLimit=ft,e.rejectSeries=pt,e.retry=re,e.retryable=le,e.seq=w,e.series=de,e.setImmediate=ve,e.some=mt,e.someLimit=gt,e.someSeries=kt,e.sortBy=St,e.timeout=ce,e.times=fe,e.timesLimit=oe,e.timesSeries=pe,e.transform=he,e.tryEach=vt,e.unmemoize=ye,e.until=me,e.waterfall=xt,e.whilst=Lt,e.all=$e,e.allLimit=Je,e.allSeries=et,e.any=mt,e.anyLimit=gt,e.anySeries=kt,e.find=De,e.findLimit=Ue,e.findSeries=We,e.forEach=Xe,e.forEachSeries=Ze,e.forEachLimit=He,e.forEachOf=Oe,e.forEachOfSeries=je,e.forEachOfLimit=Ee,e.inject=Ve,e.foldl=Ve,e.foldr=ee,e.select=tt,e.selectLimit=nt,e.selectSeries=it,e.wrapSync=r,e.during=Lt,e.doDuring=Ke,Object.defineProperty(e,"__esModule",{value:!0})});
</script>
<script>
;(function(global,factory){typeof exports==='object'&&typeof module!=='undefined'?module.exports=factory():typeof define==='function'&&define.amd?define(factory):global.moment=factory()}(this,(function(){'use strict';var hookCallback;function hooks(){return hookCallback.apply(null,arguments);}
function setHookCallback(callback){hookCallback=callback;}
function isArray(input){return input instanceof Array||Object.prototype.toString.call(input)==='[object Array]';}
function isObject(input){return input!=null&&Object.prototype.toString.call(input)==='[object Object]';}
function isObjectEmpty(obj){if(Object.getOwnPropertyNames){return(Object.getOwnPropertyNames(obj).length===0);}else{var k;for(k in obj){if(obj.hasOwnProperty(k)){return false;}}
return true;}}
function isUndefined(input){return input===void 0;}
function isNumber(input){return typeof input==='number'||Object.prototype.toString.call(input)==='[object Number]';}
function isDate(input){return input instanceof Date||Object.prototype.toString.call(input)==='[object Date]';}
function map(arr,fn){var res=[],i;for(i=0;i<arr.length;++i){res.push(fn(arr[i],i));}
return res;}
function hasOwnProp(a,b){return Object.prototype.hasOwnProperty.call(a,b);}
function extend(a,b){for(var i in b){if(hasOwnProp(b,i)){a[i]=b[i];}}
if(hasOwnProp(b,'toString')){a.toString=b.toString;}
if(hasOwnProp(b,'valueOf')){a.valueOf=b.valueOf;}
return a;}
function createUTC(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,true).utc();}
function defaultParsingFlags(){return{empty:false,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:false,invalidMonth:null,invalidFormat:false,userInvalidated:false,iso:false,parsedDateParts:[],meridiem:null,rfc2822:false,weekdayMismatch:false};}
function getParsingFlags(m){if(m._pf==null){m._pf=defaultParsingFlags();}
return m._pf;}
var some;if(Array.prototype.some){some=Array.prototype.some;}else{some=function(fun){var t=Object(this);var len=t.length>>>0;for(var i=0;i<len;i++){if(i in t&&fun.call(this,t[i],i,t)){return true;}}
return false;};}
function isValid(m){if(m._isValid==null){var flags=getParsingFlags(m);var parsedParts=some.call(flags.parsedDateParts,function(i){return i!=null;});var isNowValid=!isNaN(m._d.getTime())&&flags.overflow<0&&!flags.empty&&!flags.invalidMonth&&!flags.invalidWeekday&&!flags.weekdayMismatch&&!flags.nullInput&&!flags.invalidFormat&&!flags.userInvalidated&&(!flags.meridiem||(flags.meridiem&&parsedParts));if(m._strict){isNowValid=isNowValid&&flags.charsLeftOver===0&&flags.unusedTokens.length===0&&flags.bigHour===undefined;}
if(Object.isFrozen==null||!Object.isFrozen(m)){m._isValid=isNowValid;}
else{return isNowValid;}}
return m._isValid;}
function createInvalid(flags){var m=createUTC(NaN);if(flags!=null){extend(getParsingFlags(m),flags);}
else{getParsingFlags(m).userInvalidated=true;}
return m;}
var momentProperties=hooks.momentProperties=[];function copyConfig(to,from){var i,prop,val;if(!isUndefined(from._isAMomentObject)){to._isAMomentObject=from._isAMomentObject;}
if(!isUndefined(from._i)){to._i=from._i;}
if(!isUndefined(from._f)){to._f=from._f;}
if(!isUndefined(from._l)){to._l=from._l;}
if(!isUndefined(from._strict)){to._strict=from._strict;}
if(!isUndefined(from._tzm)){to._tzm=from._tzm;}
if(!isUndefined(from._isUTC)){to._isUTC=from._isUTC;}
if(!isUndefined(from._offset)){to._offset=from._offset;}
if(!isUndefined(from._pf)){to._pf=getParsingFlags(from);}
if(!isUndefined(from._locale)){to._locale=from._locale;}
if(momentProperties.length>0){for(i=0;i<momentProperties.length;i++){prop=momentProperties[i];val=from[prop];if(!isUndefined(val)){to[prop]=val;}}}
return to;}
var updateInProgress=false;function Moment(config){copyConfig(this,config);this._d=new Date(config._d!=null?config._d.getTime():NaN);if(!this.isValid()){this._d=new Date(NaN);}
if(updateInProgress===false){updateInProgress=true;hooks.updateOffset(this);updateInProgress=false;}}
function isMoment(obj){return obj instanceof Moment||(obj!=null&&obj._isAMomentObject!=null);}
function absFloor(number){if(number<0){return Math.ceil(number)||0;}else{return Math.floor(number);}}
function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;if(coercedNumber!==0&&isFinite(coercedNumber)){value=absFloor(coercedNumber);}
return value;}
function compareArrays(array1,array2,dontConvert){var len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0,i;for(i=0;i<len;i++){if((dontConvert&&array1[i]!==array2[i])||(!dontConvert&&toInt(array1[i])!==toInt(array2[i]))){diffs++;}}
return diffs+lengthDiff;}
function warn(msg){if(hooks.suppressDeprecationWarnings===false&&(typeof console!=='undefined')&&console.warn){console.warn('Deprecation warning: '+msg);}}
function deprecate(msg,fn){var firstTime=true;return extend(function(){if(hooks.deprecationHandler!=null){hooks.deprecationHandler(null,msg);}
if(firstTime){var args=[];var arg;for(var i=0;i<arguments.length;i++){arg='';if(typeof arguments[i]==='object'){arg+='\n['+i+'] ';for(var key in arguments[0]){arg+=key+': '+arguments[0][key]+', ';}
arg=arg.slice(0,-2);}else{arg=arguments[i];}
args.push(arg);}
warn(msg+'\nArguments: '+Array.prototype.slice.call(args).join('')+'\n'+(new Error()).stack);firstTime=false;}
return fn.apply(this,arguments);},fn);}
var deprecations={};function deprecateSimple(name,msg){if(hooks.deprecationHandler!=null){hooks.deprecationHandler(name,msg);}
if(!deprecations[name]){warn(msg);deprecations[name]=true;}}
hooks.suppressDeprecationWarnings=false;hooks.deprecationHandler=null;function isFunction(input){return input instanceof Function||Object.prototype.toString.call(input)==='[object Function]';}
function set(config){var prop,i;for(i in config){prop=config[i];if(isFunction(prop)){this[i]=prop;}else{this['_'+i]=prop;}}
this._config=config;this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+
'|'+(/\d{1,2}/).source);}
function mergeConfigs(parentConfig,childConfig){var res=extend({},parentConfig),prop;for(prop in childConfig){if(hasOwnProp(childConfig,prop)){if(isObject(parentConfig[prop])&&isObject(childConfig[prop])){res[prop]={};extend(res[prop],parentConfig[prop]);extend(res[prop],childConfig[prop]);}else if(childConfig[prop]!=null){res[prop]=childConfig[prop];}else{delete res[prop];}}}
for(prop in parentConfig){if(hasOwnProp(parentConfig,prop)&&!hasOwnProp(childConfig,prop)&&isObject(parentConfig[prop])){res[prop]=extend({},res[prop]);}}
return res;}
function Locale(config){if(config!=null){this.set(config);}}
var keys;if(Object.keys){keys=Object.keys;}else{keys=function(obj){var i,res=[];for(i in obj){if(hasOwnProp(obj,i)){res.push(i);}}
return res;};}
var defaultCalendar={sameDay:'[Today at] LT',nextDay:'[Tomorrow at] LT',nextWeek:'dddd [at] LT',lastDay:'[Yesterday at] LT',lastWeek:'[Last] dddd [at] LT',sameElse:'L'};function calendar(key,mom,now){var output=this._calendar[key]||this._calendar['sameElse'];return isFunction(output)?output.call(mom,now):output;}
var defaultLongDateFormat={LTS:'h:mm:ss A',LT:'h:mm A',L:'MM/DD/YYYY',LL:'MMMM D, YYYY',LLL:'MMMM D, YYYY h:mm A',LLLL:'dddd, MMMM D, YYYY h:mm A'};function longDateFormat(key){var format=this._longDateFormat[key],formatUpper=this._longDateFormat[key.toUpperCase()];if(format||!formatUpper){return format;}
this._longDateFormat[key]=formatUpper.replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1);});return this._longDateFormat[key];}
var defaultInvalidDate='Invalid date';function invalidDate(){return this._invalidDate;}
var defaultOrdinal='%d';var defaultDayOfMonthOrdinalParse=/\d{1,2}/;function ordinal(number){return this._ordinal.replace('%d',number);}
var defaultRelativeTime={future:'in %s',past:'%s ago',s:'a few seconds',ss:'%d seconds',m:'a minute',mm:'%d minutes',h:'an hour',hh:'%d hours',d:'a day',dd:'%d days',M:'a month',MM:'%d months',y:'a year',yy:'%d years'};function relativeTime(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return(isFunction(output))?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number);}
function pastFuture(diff,output){var format=this._relativeTime[diff>0?'future':'past'];return isFunction(format)?format(output):format.replace(/%s/i,output);}
var aliases={};function addUnitAlias(unit,shorthand){var lowerCase=unit.toLowerCase();aliases[lowerCase]=aliases[lowerCase+'s']=aliases[shorthand]=unit;}
function normalizeUnits(units){return typeof units==='string'?aliases[units]||aliases[units.toLowerCase()]:undefined;}
function normalizeObjectUnits(inputObject){var normalizedInput={},normalizedProp,prop;for(prop in inputObject){if(hasOwnProp(inputObject,prop)){normalizedProp=normalizeUnits(prop);if(normalizedProp){normalizedInput[normalizedProp]=inputObject[prop];}}}
return normalizedInput;}
var priorities={};function addUnitPriority(unit,priority){priorities[unit]=priority;}
function getPrioritizedUnits(unitsObj){var units=[];for(var u in unitsObj){units.push({unit:u,priority:priorities[u]});}
units.sort(function(a,b){return a.priority-b.priority;});return units;}
function zeroFill(number,targetLength,forceSign){var absNumber=''+Math.abs(number),zerosToFill=targetLength-absNumber.length,sign=number>=0;return(sign?(forceSign?'+':''):'-')+
Math.pow(10,Math.max(0,zerosToFill)).toString().substr(1)+absNumber;}
var formattingTokens=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;var localFormattingTokens=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;var formatFunctions={};var formatTokenFunctions={};function addFormatToken(token,padded,ordinal,callback){var func=callback;if(typeof callback==='string'){func=function(){return this[callback]();};}
if(token){formatTokenFunctions[token]=func;}
if(padded){formatTokenFunctions[padded[0]]=function(){return zeroFill(func.apply(this,arguments),padded[1],padded[2]);};}
if(ordinal){formatTokenFunctions[ordinal]=function(){return this.localeData().ordinal(func.apply(this,arguments),token);};}}
function removeFormattingTokens(input){if(input.match(/\[[\s\S]/)){return input.replace(/^\[|\]$/g,'');}
return input.replace(/\\/g,'');}
function makeFormatFunction(format){var array=format.match(formattingTokens),i,length;for(i=0,length=array.length;i<length;i++){if(formatTokenFunctions[array[i]]){array[i]=formatTokenFunctions[array[i]];}else{array[i]=removeFormattingTokens(array[i]);}}
return function(mom){var output='',i;for(i=0;i<length;i++){output+=isFunction(array[i])?array[i].call(mom,format):array[i];}
return output;};}
function formatMoment(m,format){if(!m.isValid()){return m.localeData().invalidDate();}
format=expandFormat(format,m.localeData());formatFunctions[format]=formatFunctions[format]||makeFormatFunction(format);return formatFunctions[format](m);}
function expandFormat(format,locale){var i=5;function replaceLongDateFormatTokens(input){return locale.longDateFormat(input)||input;}
localFormattingTokens.lastIndex=0;while(i>=0&&localFormattingTokens.test(format)){format=format.replace(localFormattingTokens,replaceLongDateFormatTokens);localFormattingTokens.lastIndex=0;i-=1;}
return format;}
var match1=/\d/;var match2=/\d\d/;var match3=/\d{3}/;var match4=/\d{4}/;var match6=/[+-]?\d{6}/;var match1to2=/\d\d?/;var match3to4=/\d\d\d\d?/;var match5to6=/\d\d\d\d\d\d?/;var match1to3=/\d{1,3}/;var match1to4=/\d{1,4}/;var match1to6=/[+-]?\d{1,6}/;var matchUnsigned=/\d+/;var matchSigned=/[+-]?\d+/;var matchOffset=/Z|[+-]\d\d:?\d\d/gi;var matchShortOffset=/Z|[+-]\d\d(?::?\d\d)?/gi;var matchTimestamp=/[+-]?\d+(\.\d{1,3})?/;var matchWord=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;var regexes={};function addRegexToken(token,regex,strictRegex){regexes[token]=isFunction(regex)?regex:function(isStrict,localeData){return(isStrict&&strictRegex)?strictRegex:regex;};}
function getParseRegexForToken(token,config){if(!hasOwnProp(regexes,token)){return new RegExp(unescapeFormat(token));}
return regexes[token](config._strict,config._locale);}
function unescapeFormat(s){return regexEscape(s.replace('\\','').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4;}));}
function regexEscape(s){return s.replace(/[-\/\\^$*+?.()|[\]{}]/g,'\\$&');}
var tokens={};function addParseToken(token,callback){var i,func=callback;if(typeof token==='string'){token=[token];}
if(isNumber(callback)){func=function(input,array){array[callback]=toInt(input);};}
for(i=0;i<token.length;i++){tokens[token[i]]=func;}}
function addWeekParseToken(token,callback){addParseToken(token,function(input,array,config,token){config._w=config._w||{};callback(input,config._w,config,token);});}
function addTimeToArrayFromToken(token,input,config){if(input!=null&&hasOwnProp(tokens,token)){tokens[token](input,config._a,config,token);}}
var YEAR=0;var MONTH=1;var DATE=2;var HOUR=3;var MINUTE=4;var SECOND=5;var MILLISECOND=6;var WEEK=7;var WEEKDAY=8;addFormatToken('Y',0,0,function(){var y=this.year();return y<=9999?''+y:'+'+y;});addFormatToken(0,['YY',2],0,function(){return this.year()%100;});addFormatToken(0,['YYYY',4],0,'year');addFormatToken(0,['YYYYY',5],0,'year');addFormatToken(0,['YYYYYY',6,true],0,'year');addUnitAlias('year','y');addUnitPriority('year',1);addRegexToken('Y',matchSigned);addRegexToken('YY',match1to2,match2);addRegexToken('YYYY',match1to4,match4);addRegexToken('YYYYY',match1to6,match6);addRegexToken('YYYYYY',match1to6,match6);addParseToken(['YYYYY','YYYYYY'],YEAR);addParseToken('YYYY',function(input,array){array[YEAR]=input.length===2?hooks.parseTwoDigitYear(input):toInt(input);});addParseToken('YY',function(input,array){array[YEAR]=hooks.parseTwoDigitYear(input);});addParseToken('Y',function(input,array){array[YEAR]=parseInt(input,10);});function daysInYear(year){return isLeapYear(year)?366:365;}
function isLeapYear(year){return(year%4===0&&year%100!==0)||year%400===0;}
hooks.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2000);};var getSetYear=makeGetSet('FullYear',true);function getIsLeapYear(){return isLeapYear(this.year());}
function makeGetSet(unit,keepTime){return function(value){if(value!=null){set$1(this,unit,value);hooks.updateOffset(this,keepTime);return this;}else{return get(this,unit);}};}
function get(mom,unit){return mom.isValid()?mom._d['get'+(mom._isUTC?'UTC':'')+unit]():NaN;}
function set$1(mom,unit,value){if(mom.isValid()&&!isNaN(value)){if(unit==='FullYear'&&isLeapYear(mom.year())&&mom.month()===1&&mom.date()===29){mom._d['set'+(mom._isUTC?'UTC':'')+unit](value,mom.month(),daysInMonth(value,mom.month()));}
else{mom._d['set'+(mom._isUTC?'UTC':'')+unit](value);}}}
function stringGet(units){units=normalizeUnits(units);if(isFunction(this[units])){return this[units]();}
return this;}
function stringSet(units,value){if(typeof units==='object'){units=normalizeObjectUnits(units);var prioritized=getPrioritizedUnits(units);for(var i=0;i<prioritized.length;i++){this[prioritized[i].unit](units[prioritized[i].unit]);}}else{units=normalizeUnits(units);if(isFunction(this[units])){return this[units](value);}}
return this;}
function mod(n,x){return((n%x)+x)%x;}
var indexOf;if(Array.prototype.indexOf){indexOf=Array.prototype.indexOf;}else{indexOf=function(o){var i;for(i=0;i<this.length;++i){if(this[i]===o){return i;}}
return-1;};}
function daysInMonth(year,month){if(isNaN(year)||isNaN(month)){return NaN;}
var modMonth=mod(month,12);year+=(month-modMonth)/12;return modMonth===1?(isLeapYear(year)?29:28):(31-modMonth%7%2);}
addFormatToken('M',['MM',2],'Mo',function(){return this.month()+1;});addFormatToken('MMM',0,0,function(format){return this.localeData().monthsShort(this,format);});addFormatToken('MMMM',0,0,function(format){return this.localeData().months(this,format);});addUnitAlias('month','M');addUnitPriority('month',8);addRegexToken('M',match1to2);addRegexToken('MM',match1to2,match2);addRegexToken('MMM',function(isStrict,locale){return locale.monthsShortRegex(isStrict);});addRegexToken('MMMM',function(isStrict,locale){return locale.monthsRegex(isStrict);});addParseToken(['M','MM'],function(input,array){array[MONTH]=toInt(input)-1;});addParseToken(['MMM','MMMM'],function(input,array,config,token){var month=config._locale.monthsParse(input,token,config._strict);if(month!=null){array[MONTH]=month;}else{getParsingFlags(config).invalidMonth=input;}});var MONTHS_IN_FORMAT=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/;var defaultLocaleMonths='January_February_March_April_May_June_July_August_September_October_November_December'.split('_');function localeMonths(m,format){if(!m){return isArray(this._months)?this._months:this._months['standalone'];}
return isArray(this._months)?this._months[m.month()]:this._months[(this._months.isFormat||MONTHS_IN_FORMAT).test(format)?'format':'standalone'][m.month()];}
var defaultLocaleMonthsShort='Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');function localeMonthsShort(m,format){if(!m){return isArray(this._monthsShort)?this._monthsShort:this._monthsShort['standalone'];}
return isArray(this._monthsShort)?this._monthsShort[m.month()]:this._monthsShort[MONTHS_IN_FORMAT.test(format)?'format':'standalone'][m.month()];}
function handleStrictParse(monthName,format,strict){var i,ii,mom,llc=monthName.toLocaleLowerCase();if(!this._monthsParse){this._monthsParse=[];this._longMonthsParse=[];this._shortMonthsParse=[];for(i=0;i<12;++i){mom=createUTC([2000,i]);this._shortMonthsParse[i]=this.monthsShort(mom,'').toLocaleLowerCase();this._longMonthsParse[i]=this.months(mom,'').toLocaleLowerCase();}}
if(strict){if(format==='MMM'){ii=indexOf.call(this._shortMonthsParse,llc);return ii!==-1?ii:null;}else{ii=indexOf.call(this._longMonthsParse,llc);return ii!==-1?ii:null;}}else{if(format==='MMM'){ii=indexOf.call(this._shortMonthsParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._longMonthsParse,llc);return ii!==-1?ii:null;}else{ii=indexOf.call(this._longMonthsParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._shortMonthsParse,llc);return ii!==-1?ii:null;}}}
function localeMonthsParse(monthName,format,strict){var i,mom,regex;if(this._monthsParseExact){return handleStrictParse.call(this,monthName,format,strict);}
if(!this._monthsParse){this._monthsParse=[];this._longMonthsParse=[];this._shortMonthsParse=[];}
for(i=0;i<12;i++){mom=createUTC([2000,i]);if(strict&&!this._longMonthsParse[i]){this._longMonthsParse[i]=new RegExp('^'+this.months(mom,'').replace('.','')+'$','i');this._shortMonthsParse[i]=new RegExp('^'+this.monthsShort(mom,'').replace('.','')+'$','i');}
if(!strict&&!this._monthsParse[i]){regex='^'+this.months(mom,'')+'|^'+this.monthsShort(mom,'');this._monthsParse[i]=new RegExp(regex.replace('.',''),'i');}
if(strict&&format==='MMMM'&&this._longMonthsParse[i].test(monthName)){return i;}else if(strict&&format==='MMM'&&this._shortMonthsParse[i].test(monthName)){return i;}else if(!strict&&this._monthsParse[i].test(monthName)){return i;}}}
function setMonth(mom,value){var dayOfMonth;if(!mom.isValid()){return mom;}
if(typeof value==='string'){if(/^\d+$/.test(value)){value=toInt(value);}else{value=mom.localeData().monthsParse(value);if(!isNumber(value)){return mom;}}}
dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value));mom._d['set'+(mom._isUTC?'UTC':'')+'Month'](value,dayOfMonth);return mom;}
function getSetMonth(value){if(value!=null){setMonth(this,value);hooks.updateOffset(this,true);return this;}else{return get(this,'Month');}}
function getDaysInMonth(){return daysInMonth(this.year(),this.month());}
var defaultMonthsShortRegex=matchWord;function monthsShortRegex(isStrict){if(this._monthsParseExact){if(!hasOwnProp(this,'_monthsRegex')){computeMonthsParse.call(this);}
if(isStrict){return this._monthsShortStrictRegex;}else{return this._monthsShortRegex;}}else{if(!hasOwnProp(this,'_monthsShortRegex')){this._monthsShortRegex=defaultMonthsShortRegex;}
return this._monthsShortStrictRegex&&isStrict?this._monthsShortStrictRegex:this._monthsShortRegex;}}
var defaultMonthsRegex=matchWord;function monthsRegex(isStrict){if(this._monthsParseExact){if(!hasOwnProp(this,'_monthsRegex')){computeMonthsParse.call(this);}
if(isStrict){return this._monthsStrictRegex;}else{return this._monthsRegex;}}else{if(!hasOwnProp(this,'_monthsRegex')){this._monthsRegex=defaultMonthsRegex;}
return this._monthsStrictRegex&&isStrict?this._monthsStrictRegex:this._monthsRegex;}}
function computeMonthsParse(){function cmpLenRev(a,b){return b.length-a.length;}
var shortPieces=[],longPieces=[],mixedPieces=[],i,mom;for(i=0;i<12;i++){mom=createUTC([2000,i]);shortPieces.push(this.monthsShort(mom,''));longPieces.push(this.months(mom,''));mixedPieces.push(this.months(mom,''));mixedPieces.push(this.monthsShort(mom,''));}
shortPieces.sort(cmpLenRev);longPieces.sort(cmpLenRev);mixedPieces.sort(cmpLenRev);for(i=0;i<12;i++){shortPieces[i]=regexEscape(shortPieces[i]);longPieces[i]=regexEscape(longPieces[i]);}
for(i=0;i<24;i++){mixedPieces[i]=regexEscape(mixedPieces[i]);}
this._monthsRegex=new RegExp('^('+mixedPieces.join('|')+')','i');this._monthsShortRegex=this._monthsRegex;this._monthsStrictRegex=new RegExp('^('+longPieces.join('|')+')','i');this._monthsShortStrictRegex=new RegExp('^('+shortPieces.join('|')+')','i');}
function createDate(y,m,d,h,M,s,ms){var date;if(y<100&&y>=0){date=new Date(y+400,m,d,h,M,s,ms);if(isFinite(date.getFullYear())){date.setFullYear(y);}}else{date=new Date(y,m,d,h,M,s,ms);}
return date;}
function createUTCDate(y){var date;if(y<100&&y>=0){var args=Array.prototype.slice.call(arguments);args[0]=y+400;date=new Date(Date.UTC.apply(null,args));if(isFinite(date.getUTCFullYear())){date.setUTCFullYear(y);}}else{date=new Date(Date.UTC.apply(null,arguments));}
return date;}
function firstWeekOffset(year,dow,doy){var
fwd=7+dow-doy,fwdlw=(7+createUTCDate(year,0,fwd).getUTCDay()-dow)%7;return-fwdlw+fwd-1;}
function dayOfYearFromWeeks(year,week,weekday,dow,doy){var localWeekday=(7+weekday-dow)%7,weekOffset=firstWeekOffset(year,dow,doy),dayOfYear=1+7*(week-1)+localWeekday+weekOffset,resYear,resDayOfYear;if(dayOfYear<=0){resYear=year-1;resDayOfYear=daysInYear(resYear)+dayOfYear;}else if(dayOfYear>daysInYear(year)){resYear=year+1;resDayOfYear=dayOfYear-daysInYear(year);}else{resYear=year;resDayOfYear=dayOfYear;}
return{year:resYear,dayOfYear:resDayOfYear};}
function weekOfYear(mom,dow,doy){var weekOffset=firstWeekOffset(mom.year(),dow,doy),week=Math.floor((mom.dayOfYear()-weekOffset-1)/7)+1,resWeek,resYear;if(week<1){resYear=mom.year()-1;resWeek=week+weeksInYear(resYear,dow,doy);}else if(week>weeksInYear(mom.year(),dow,doy)){resWeek=week-weeksInYear(mom.year(),dow,doy);resYear=mom.year()+1;}else{resYear=mom.year();resWeek=week;}
return{week:resWeek,year:resYear};}
function weeksInYear(year,dow,doy){var weekOffset=firstWeekOffset(year,dow,doy),weekOffsetNext=firstWeekOffset(year+1,dow,doy);return(daysInYear(year)-weekOffset+weekOffsetNext)/7;}
addFormatToken('w',['ww',2],'wo','week');addFormatToken('W',['WW',2],'Wo','isoWeek');addUnitAlias('week','w');addUnitAlias('isoWeek','W');addUnitPriority('week',5);addUnitPriority('isoWeek',5);addRegexToken('w',match1to2);addRegexToken('ww',match1to2,match2);addRegexToken('W',match1to2);addRegexToken('WW',match1to2,match2);addWeekParseToken(['w','ww','W','WW'],function(input,week,config,token){week[token.substr(0,1)]=toInt(input);});function localeWeek(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week;}
var defaultLocaleWeek={dow:0,doy:6};function localeFirstDayOfWeek(){return this._week.dow;}
function localeFirstDayOfYear(){return this._week.doy;}
function getSetWeek(input){var week=this.localeData().week(this);return input==null?week:this.add((input-week)*7,'d');}
function getSetISOWeek(input){var week=weekOfYear(this,1,4).week;return input==null?week:this.add((input-week)*7,'d');}
addFormatToken('d',0,'do','day');addFormatToken('dd',0,0,function(format){return this.localeData().weekdaysMin(this,format);});addFormatToken('ddd',0,0,function(format){return this.localeData().weekdaysShort(this,format);});addFormatToken('dddd',0,0,function(format){return this.localeData().weekdays(this,format);});addFormatToken('e',0,0,'weekday');addFormatToken('E',0,0,'isoWeekday');addUnitAlias('day','d');addUnitAlias('weekday','e');addUnitAlias('isoWeekday','E');addUnitPriority('day',11);addUnitPriority('weekday',11);addUnitPriority('isoWeekday',11);addRegexToken('d',match1to2);addRegexToken('e',match1to2);addRegexToken('E',match1to2);addRegexToken('dd',function(isStrict,locale){return locale.weekdaysMinRegex(isStrict);});addRegexToken('ddd',function(isStrict,locale){return locale.weekdaysShortRegex(isStrict);});addRegexToken('dddd',function(isStrict,locale){return locale.weekdaysRegex(isStrict);});addWeekParseToken(['dd','ddd','dddd'],function(input,week,config,token){var weekday=config._locale.weekdaysParse(input,token,config._strict);if(weekday!=null){week.d=weekday;}else{getParsingFlags(config).invalidWeekday=input;}});addWeekParseToken(['d','e','E'],function(input,week,config,token){week[token]=toInt(input);});function parseWeekday(input,locale){if(typeof input!=='string'){return input;}
if(!isNaN(input)){return parseInt(input,10);}
input=locale.weekdaysParse(input);if(typeof input==='number'){return input;}
return null;}
function parseIsoWeekday(input,locale){if(typeof input==='string'){return locale.weekdaysParse(input)%7||7;}
return isNaN(input)?null:input;}
function shiftWeekdays(ws,n){return ws.slice(n,7).concat(ws.slice(0,n));}
var defaultLocaleWeekdays='Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');function localeWeekdays(m,format){var weekdays=isArray(this._weekdays)?this._weekdays:this._weekdays[(m&&m!==true&&this._weekdays.isFormat.test(format))?'format':'standalone'];return(m===true)?shiftWeekdays(weekdays,this._week.dow):(m)?weekdays[m.day()]:weekdays;}
var defaultLocaleWeekdaysShort='Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');function localeWeekdaysShort(m){return(m===true)?shiftWeekdays(this._weekdaysShort,this._week.dow):(m)?this._weekdaysShort[m.day()]:this._weekdaysShort;}
var defaultLocaleWeekdaysMin='Su_Mo_Tu_We_Th_Fr_Sa'.split('_');function localeWeekdaysMin(m){return(m===true)?shiftWeekdays(this._weekdaysMin,this._week.dow):(m)?this._weekdaysMin[m.day()]:this._weekdaysMin;}
function handleStrictParse$1(weekdayName,format,strict){var i,ii,mom,llc=weekdayName.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[];this._shortWeekdaysParse=[];this._minWeekdaysParse=[];for(i=0;i<7;++i){mom=createUTC([2000,1]).day(i);this._minWeekdaysParse[i]=this.weekdaysMin(mom,'').toLocaleLowerCase();this._shortWeekdaysParse[i]=this.weekdaysShort(mom,'').toLocaleLowerCase();this._weekdaysParse[i]=this.weekdays(mom,'').toLocaleLowerCase();}}
if(strict){if(format==='dddd'){ii=indexOf.call(this._weekdaysParse,llc);return ii!==-1?ii:null;}else if(format==='ddd'){ii=indexOf.call(this._shortWeekdaysParse,llc);return ii!==-1?ii:null;}else{ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null;}}else{if(format==='dddd'){ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._shortWeekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null;}else if(format==='ddd'){ii=indexOf.call(this._shortWeekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null;}else{ii=indexOf.call(this._minWeekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._shortWeekdaysParse,llc);return ii!==-1?ii:null;}}}
function localeWeekdaysParse(weekdayName,format,strict){var i,mom,regex;if(this._weekdaysParseExact){return handleStrictParse$1.call(this,weekdayName,format,strict);}
if(!this._weekdaysParse){this._weekdaysParse=[];this._minWeekdaysParse=[];this._shortWeekdaysParse=[];this._fullWeekdaysParse=[];}
for(i=0;i<7;i++){mom=createUTC([2000,1]).day(i);if(strict&&!this._fullWeekdaysParse[i]){this._fullWeekdaysParse[i]=new RegExp('^'+this.weekdays(mom,'').replace('.','\\.?')+'$','i');this._shortWeekdaysParse[i]=new RegExp('^'+this.weekdaysShort(mom,'').replace('.','\\.?')+'$','i');this._minWeekdaysParse[i]=new RegExp('^'+this.weekdaysMin(mom,'').replace('.','\\.?')+'$','i');}
if(!this._weekdaysParse[i]){regex='^'+this.weekdays(mom,'')+'|^'+this.weekdaysShort(mom,'')+'|^'+this.weekdaysMin(mom,'');this._weekdaysParse[i]=new RegExp(regex.replace('.',''),'i');}
if(strict&&format==='dddd'&&this._fullWeekdaysParse[i].test(weekdayName)){return i;}else if(strict&&format==='ddd'&&this._shortWeekdaysParse[i].test(weekdayName)){return i;}else if(strict&&format==='dd'&&this._minWeekdaysParse[i].test(weekdayName)){return i;}else if(!strict&&this._weekdaysParse[i].test(weekdayName)){return i;}}}
function getSetDayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN;}
var day=this._isUTC?this._d.getUTCDay():this._d.getDay();if(input!=null){input=parseWeekday(input,this.localeData());return this.add(input-day,'d');}else{return day;}}
function getSetLocaleDayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN;}
var weekday=(this.day()+7-this.localeData()._week.dow)%7;return input==null?weekday:this.add(input-weekday,'d');}
function getSetISODayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN;}
if(input!=null){var weekday=parseIsoWeekday(input,this.localeData());return this.day(this.day()%7?weekday:weekday-7);}else{return this.day()||7;}}
var defaultWeekdaysRegex=matchWord;function weekdaysRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,'_weekdaysRegex')){computeWeekdaysParse.call(this);}
if(isStrict){return this._weekdaysStrictRegex;}else{return this._weekdaysRegex;}}else{if(!hasOwnProp(this,'_weekdaysRegex')){this._weekdaysRegex=defaultWeekdaysRegex;}
return this._weekdaysStrictRegex&&isStrict?this._weekdaysStrictRegex:this._weekdaysRegex;}}
var defaultWeekdaysShortRegex=matchWord;function weekdaysShortRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,'_weekdaysRegex')){computeWeekdaysParse.call(this);}
if(isStrict){return this._weekdaysShortStrictRegex;}else{return this._weekdaysShortRegex;}}else{if(!hasOwnProp(this,'_weekdaysShortRegex')){this._weekdaysShortRegex=defaultWeekdaysShortRegex;}
return this._weekdaysShortStrictRegex&&isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex;}}
var defaultWeekdaysMinRegex=matchWord;function weekdaysMinRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,'_weekdaysRegex')){computeWeekdaysParse.call(this);}
if(isStrict){return this._weekdaysMinStrictRegex;}else{return this._weekdaysMinRegex;}}else{if(!hasOwnProp(this,'_weekdaysMinRegex')){this._weekdaysMinRegex=defaultWeekdaysMinRegex;}
return this._weekdaysMinStrictRegex&&isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex;}}
function computeWeekdaysParse(){function cmpLenRev(a,b){return b.length-a.length;}
var minPieces=[],shortPieces=[],longPieces=[],mixedPieces=[],i,mom,minp,shortp,longp;for(i=0;i<7;i++){mom=createUTC([2000,1]).day(i);minp=this.weekdaysMin(mom,'');shortp=this.weekdaysShort(mom,'');longp=this.weekdays(mom,'');minPieces.push(minp);shortPieces.push(shortp);longPieces.push(longp);mixedPieces.push(minp);mixedPieces.push(shortp);mixedPieces.push(longp);}
minPieces.sort(cmpLenRev);shortPieces.sort(cmpLenRev);longPieces.sort(cmpLenRev);mixedPieces.sort(cmpLenRev);for(i=0;i<7;i++){shortPieces[i]=regexEscape(shortPieces[i]);longPieces[i]=regexEscape(longPieces[i]);mixedPieces[i]=regexEscape(mixedPieces[i]);}
this._weekdaysRegex=new RegExp('^('+mixedPieces.join('|')+')','i');this._weekdaysShortRegex=this._weekdaysRegex;this._weekdaysMinRegex=this._weekdaysRegex;this._weekdaysStrictRegex=new RegExp('^('+longPieces.join('|')+')','i');this._weekdaysShortStrictRegex=new RegExp('^('+shortPieces.join('|')+')','i');this._weekdaysMinStrictRegex=new RegExp('^('+minPieces.join('|')+')','i');}
function hFormat(){return this.hours()%12||12;}
function kFormat(){return this.hours()||24;}
addFormatToken('H',['HH',2],0,'hour');addFormatToken('h',['hh',2],0,hFormat);addFormatToken('k',['kk',2],0,kFormat);addFormatToken('hmm',0,0,function(){return ''+hFormat.apply(this)+zeroFill(this.minutes(),2);});addFormatToken('hmmss',0,0,function(){return ''+hFormat.apply(this)+zeroFill(this.minutes(),2)+
zeroFill(this.seconds(),2);});addFormatToken('Hmm',0,0,function(){return ''+this.hours()+zeroFill(this.minutes(),2);});addFormatToken('Hmmss',0,0,function(){return ''+this.hours()+zeroFill(this.minutes(),2)+
zeroFill(this.seconds(),2);});function meridiem(token,lowercase){addFormatToken(token,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),lowercase);});}
meridiem('a',true);meridiem('A',false);addUnitAlias('hour','h');addUnitPriority('hour',13);function matchMeridiem(isStrict,locale){return locale._meridiemParse;}
addRegexToken('a',matchMeridiem);addRegexToken('A',matchMeridiem);addRegexToken('H',match1to2);addRegexToken('h',match1to2);addRegexToken('k',match1to2);addRegexToken('HH',match1to2,match2);addRegexToken('hh',match1to2,match2);addRegexToken('kk',match1to2,match2);addRegexToken('hmm',match3to4);addRegexToken('hmmss',match5to6);addRegexToken('Hmm',match3to4);addRegexToken('Hmmss',match5to6);addParseToken(['H','HH'],HOUR);addParseToken(['k','kk'],function(input,array,config){var kInput=toInt(input);array[HOUR]=kInput===24?0:kInput;});addParseToken(['a','A'],function(input,array,config){config._isPm=config._locale.isPM(input);config._meridiem=input;});addParseToken(['h','hh'],function(input,array,config){array[HOUR]=toInt(input);getParsingFlags(config).bigHour=true;});addParseToken('hmm',function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos));array[MINUTE]=toInt(input.substr(pos));getParsingFlags(config).bigHour=true;});addParseToken('hmmss',function(input,array,config){var pos1=input.length-4;var pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1));array[MINUTE]=toInt(input.substr(pos1,2));array[SECOND]=toInt(input.substr(pos2));getParsingFlags(config).bigHour=true;});addParseToken('Hmm',function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos));array[MINUTE]=toInt(input.substr(pos));});addParseToken('Hmmss',function(input,array,config){var pos1=input.length-4;var pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1));array[MINUTE]=toInt(input.substr(pos1,2));array[SECOND]=toInt(input.substr(pos2));});function localeIsPM(input){return((input+'').toLowerCase().charAt(0)==='p');}
var defaultLocaleMeridiemParse=/[ap]\.?m?\.?/i;function localeMeridiem(hours,minutes,isLower){if(hours>11){return isLower?'pm':'PM';}else{return isLower?'am':'AM';}}
var getSetHour=makeGetSet('Hours',true);var baseConfig={calendar:defaultCalendar,longDateFormat:defaultLongDateFormat,invalidDate:defaultInvalidDate,ordinal:defaultOrdinal,dayOfMonthOrdinalParse:defaultDayOfMonthOrdinalParse,relativeTime:defaultRelativeTime,months:defaultLocaleMonths,monthsShort:defaultLocaleMonthsShort,week:defaultLocaleWeek,weekdays:defaultLocaleWeekdays,weekdaysMin:defaultLocaleWeekdaysMin,weekdaysShort:defaultLocaleWeekdaysShort,meridiemParse:defaultLocaleMeridiemParse};var locales={};var localeFamilies={};var globalLocale;function normalizeLocale(key){return key?key.toLowerCase().replace('_','-'):key;}
function chooseLocale(names){var i=0,j,next,locale,split;while(i<names.length){split=normalizeLocale(names[i]).split('-');j=split.length;next=normalizeLocale(names[i+1]);next=next?next.split('-'):null;while(j>0){locale=loadLocale(split.slice(0,j).join('-'));if(locale){return locale;}
if(next&&next.length>=j&&compareArrays(split,next,true)>=j-1){break;}
j--;}
i++;}
return globalLocale;}
function loadLocale(name){var oldLocale=null;if(!locales[name]&&(typeof module!=='undefined')&&module&&module.exports){try{oldLocale=globalLocale._abbr;var aliasedRequire=require;aliasedRequire('./locale/'+name);getSetGlobalLocale(oldLocale);}catch(e){}}
return locales[name];}
function getSetGlobalLocale(key,values){var data;if(key){if(isUndefined(values)){data=getLocale(key);}
else{data=defineLocale(key,values);}
if(data){globalLocale=data;}
else{if((typeof console!=='undefined')&&console.warn){console.warn('Locale '+key+' not found. Did you forget to load it?');}}}
return globalLocale._abbr;}
function defineLocale(name,config){if(config!==null){var locale,parentConfig=baseConfig;config.abbr=name;if(locales[name]!=null){deprecateSimple('defineLocaleOverride','use moment.updateLocale(localeName, config) to change '+
'an existing locale. moment.defineLocale(localeName, '+
'config) should only be used for creating a new locale '+
'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');parentConfig=locales[name]._config;}else if(config.parentLocale!=null){if(locales[config.parentLocale]!=null){parentConfig=locales[config.parentLocale]._config;}else{locale=loadLocale(config.parentLocale);if(locale!=null){parentConfig=locale._config;}else{if(!localeFamilies[config.parentLocale]){localeFamilies[config.parentLocale]=[];}
localeFamilies[config.parentLocale].push({name:name,config:config});return null;}}}
locales[name]=new Locale(mergeConfigs(parentConfig,config));if(localeFamilies[name]){localeFamilies[name].forEach(function(x){defineLocale(x.name,x.config);});}
getSetGlobalLocale(name);return locales[name];}else{delete locales[name];return null;}}
function updateLocale(name,config){if(config!=null){var locale,tmpLocale,parentConfig=baseConfig;tmpLocale=loadLocale(name);if(tmpLocale!=null){parentConfig=tmpLocale._config;}
config=mergeConfigs(parentConfig,config);locale=new Locale(config);locale.parentLocale=locales[name];locales[name]=locale;getSetGlobalLocale(name);}else{if(locales[name]!=null){if(locales[name].parentLocale!=null){locales[name]=locales[name].parentLocale;}else if(locales[name]!=null){delete locales[name];}}}
return locales[name];}
function getLocale(key){var locale;if(key&&key._locale&&key._locale._abbr){key=key._locale._abbr;}
if(!key){return globalLocale;}
if(!isArray(key)){locale=loadLocale(key);if(locale){return locale;}
key=[key];}
return chooseLocale(key);}
function listLocales(){return keys(locales);}
function checkOverflow(m){var overflow;var a=m._a;if(a&&getParsingFlags(m).overflow===-2){overflow=a[MONTH]<0||a[MONTH]>11?MONTH:a[DATE]<1||a[DATE]>daysInMonth(a[YEAR],a[MONTH])?DATE:a[HOUR]<0||a[HOUR]>24||(a[HOUR]===24&&(a[MINUTE]!==0||a[SECOND]!==0||a[MILLISECOND]!==0))?HOUR:a[MINUTE]<0||a[MINUTE]>59?MINUTE:a[SECOND]<0||a[SECOND]>59?SECOND:a[MILLISECOND]<0||a[MILLISECOND]>999?MILLISECOND:-1;if(getParsingFlags(m)._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)){overflow=DATE;}
if(getParsingFlags(m)._overflowWeeks&&overflow===-1){overflow=WEEK;}
if(getParsingFlags(m)._overflowWeekday&&overflow===-1){overflow=WEEKDAY;}
getParsingFlags(m).overflow=overflow;}
return m;}
function defaults(a,b,c){if(a!=null){return a;}
if(b!=null){return b;}
return c;}
function currentDateArray(config){var nowValue=new Date(hooks.now());if(config._useUTC){return[nowValue.getUTCFullYear(),nowValue.getUTCMonth(),nowValue.getUTCDate()];}
return[nowValue.getFullYear(),nowValue.getMonth(),nowValue.getDate()];}
function configFromArray(config){var i,date,input=[],currentDate,expectedWeekday,yearToUse;if(config._d){return;}
currentDate=currentDateArray(config);if(config._w&&config._a[DATE]==null&&config._a[MONTH]==null){dayOfYearFromWeekInfo(config);}
if(config._dayOfYear!=null){yearToUse=defaults(config._a[YEAR],currentDate[YEAR]);if(config._dayOfYear>daysInYear(yearToUse)||config._dayOfYear===0){getParsingFlags(config)._overflowDayOfYear=true;}
date=createUTCDate(yearToUse,0,config._dayOfYear);config._a[MONTH]=date.getUTCMonth();config._a[DATE]=date.getUTCDate();}
for(i=0;i<3&&config._a[i]==null;++i){config._a[i]=input[i]=currentDate[i];}
for(;i<7;i++){config._a[i]=input[i]=(config._a[i]==null)?(i===2?1:0):config._a[i];}
if(config._a[HOUR]===24&&config._a[MINUTE]===0&&config._a[SECOND]===0&&config._a[MILLISECOND]===0){config._nextDay=true;config._a[HOUR]=0;}
config._d=(config._useUTC?createUTCDate:createDate).apply(null,input);expectedWeekday=config._useUTC?config._d.getUTCDay():config._d.getDay();if(config._tzm!=null){config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm);}
if(config._nextDay){config._a[HOUR]=24;}
if(config._w&&typeof config._w.d!=='undefined'&&config._w.d!==expectedWeekday){getParsingFlags(config).weekdayMismatch=true;}}
function dayOfYearFromWeekInfo(config){var w,weekYear,week,weekday,dow,doy,temp,weekdayOverflow;w=config._w;if(w.GG!=null||w.W!=null||w.E!=null){dow=1;doy=4;weekYear=defaults(w.GG,config._a[YEAR],weekOfYear(createLocal(),1,4).year);week=defaults(w.W,1);weekday=defaults(w.E,1);if(weekday<1||weekday>7){weekdayOverflow=true;}}else{dow=config._locale._week.dow;doy=config._locale._week.doy;var curWeek=weekOfYear(createLocal(),dow,doy);weekYear=defaults(w.gg,config._a[YEAR],curWeek.year);week=defaults(w.w,curWeek.week);if(w.d!=null){weekday=w.d;if(weekday<0||weekday>6){weekdayOverflow=true;}}else if(w.e!=null){weekday=w.e+dow;if(w.e<0||w.e>6){weekdayOverflow=true;}}else{weekday=dow;}}
if(week<1||week>weeksInYear(weekYear,dow,doy)){getParsingFlags(config)._overflowWeeks=true;}else if(weekdayOverflow!=null){getParsingFlags(config)._overflowWeekday=true;}else{temp=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy);config._a[YEAR]=temp.year;config._dayOfYear=temp.dayOfYear;}}
var extendedIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;var basicIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;var tzRegex=/Z|[+-]\d\d(?::?\d\d)?/;var isoDates=[['YYYYYY-MM-DD',/[+-]\d{6}-\d\d-\d\d/],['YYYY-MM-DD',/\d{4}-\d\d-\d\d/],['GGGG-[W]WW-E',/\d{4}-W\d\d-\d/],['GGGG-[W]WW',/\d{4}-W\d\d/,false],['YYYY-DDD',/\d{4}-\d{3}/],['YYYY-MM',/\d{4}-\d\d/,false],['YYYYYYMMDD',/[+-]\d{10}/],['YYYYMMDD',/\d{8}/],['GGGG[W]WWE',/\d{4}W\d{3}/],['GGGG[W]WW',/\d{4}W\d{2}/,false],['YYYYDDD',/\d{7}/]];var isoTimes=[['HH:mm:ss.SSSS',/\d\d:\d\d:\d\d\.\d+/],['HH:mm:ss,SSSS',/\d\d:\d\d:\d\d,\d+/],['HH:mm:ss',/\d\d:\d\d:\d\d/],['HH:mm',/\d\d:\d\d/],['HHmmss.SSSS',/\d\d\d\d\d\d\.\d+/],['HHmmss,SSSS',/\d\d\d\d\d\d,\d+/],['HHmmss',/\d\d\d\d\d\d/],['HHmm',/\d\d\d\d/],['HH',/\d\d/]];var aspNetJsonRegex=/^\/?Date\((\-?\d+)/i;function configFromISO(config){var i,l,string=config._i,match=extendedIsoRegex.exec(string)||basicIsoRegex.exec(string),allowTime,dateFormat,timeFormat,tzFormat;if(match){getParsingFlags(config).iso=true;for(i=0,l=isoDates.length;i<l;i++){if(isoDates[i][1].exec(match[1])){dateFormat=isoDates[i][0];allowTime=isoDates[i][2]!==false;break;}}
if(dateFormat==null){config._isValid=false;return;}
if(match[3]){for(i=0,l=isoTimes.length;i<l;i++){if(isoTimes[i][1].exec(match[3])){timeFormat=(match[2]||' ')+isoTimes[i][0];break;}}
if(timeFormat==null){config._isValid=false;return;}}
if(!allowTime&&timeFormat!=null){config._isValid=false;return;}
if(match[4]){if(tzRegex.exec(match[4])){tzFormat='Z';}else{config._isValid=false;return;}}
config._f=dateFormat+(timeFormat||'')+(tzFormat||'');configFromStringAndFormat(config);}else{config._isValid=false;}}
var rfc2822=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function extractFromRFC2822Strings(yearStr,monthStr,dayStr,hourStr,minuteStr,secondStr){var result=[untruncateYear(yearStr),defaultLocaleMonthsShort.indexOf(monthStr),parseInt(dayStr,10),parseInt(hourStr,10),parseInt(minuteStr,10)];if(secondStr){result.push(parseInt(secondStr,10));}
return result;}
function untruncateYear(yearStr){var year=parseInt(yearStr,10);if(year<=49){return 2000+year;}else if(year<=999){return 1900+year;}
return year;}
function preprocessRFC2822(s){return s.replace(/\([^)]*\)|[\n\t]/g,' ').replace(/(\s\s+)/g,' ').replace(/^\s\s*/,'').replace(/\s\s*$/,'');}
function checkWeekday(weekdayStr,parsedInput,config){if(weekdayStr){var weekdayProvided=defaultLocaleWeekdaysShort.indexOf(weekdayStr),weekdayActual=new Date(parsedInput[0],parsedInput[1],parsedInput[2]).getDay();if(weekdayProvided!==weekdayActual){getParsingFlags(config).weekdayMismatch=true;config._isValid=false;return false;}}
return true;}
var obsOffsets={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function calculateOffset(obsOffset,militaryOffset,numOffset){if(obsOffset){return obsOffsets[obsOffset];}else if(militaryOffset){return 0;}else{var hm=parseInt(numOffset,10);var m=hm%100,h=(hm-m)/100;return h*60+m;}}
function configFromRFC2822(config){var match=rfc2822.exec(preprocessRFC2822(config._i));if(match){var parsedArray=extractFromRFC2822Strings(match[4],match[3],match[2],match[5],match[6],match[7]);if(!checkWeekday(match[1],parsedArray,config)){return;}
config._a=parsedArray;config._tzm=calculateOffset(match[8],match[9],match[10]);config._d=createUTCDate.apply(null,config._a);config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm);getParsingFlags(config).rfc2822=true;}else{config._isValid=false;}}
function configFromString(config){var matched=aspNetJsonRegex.exec(config._i);if(matched!==null){config._d=new Date(+matched[1]);return;}
configFromISO(config);if(config._isValid===false){delete config._isValid;}else{return;}
configFromRFC2822(config);if(config._isValid===false){delete config._isValid;}else{return;}
hooks.createFromInputFallback(config);}
hooks.createFromInputFallback=deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), '+
'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are '+
'discouraged and will be removed in an upcoming major release. Please refer to '+
'http://momentjs.com/guides/#/warnings/js-date/ for more info.',function(config){config._d=new Date(config._i+(config._useUTC?' UTC':''));});hooks.ISO_8601=function(){};hooks.RFC_2822=function(){};function configFromStringAndFormat(config){if(config._f===hooks.ISO_8601){configFromISO(config);return;}
if(config._f===hooks.RFC_2822){configFromRFC2822(config);return;}
config._a=[];getParsingFlags(config).empty=true;var string=''+config._i,i,parsedInput,tokens,token,skipped,stringLength=string.length,totalParsedInputLength=0;tokens=expandFormat(config._f,config._locale).match(formattingTokens)||[];for(i=0;i<tokens.length;i++){token=tokens[i];parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0];if(parsedInput){skipped=string.substr(0,string.indexOf(parsedInput));if(skipped.length>0){getParsingFlags(config).unusedInput.push(skipped);}
string=string.slice(string.indexOf(parsedInput)+parsedInput.length);totalParsedInputLength+=parsedInput.length;}
if(formatTokenFunctions[token]){if(parsedInput){getParsingFlags(config).empty=false;}
else{getParsingFlags(config).unusedTokens.push(token);}
addTimeToArrayFromToken(token,parsedInput,config);}
else if(config._strict&&!parsedInput){getParsingFlags(config).unusedTokens.push(token);}}
getParsingFlags(config).charsLeftOver=stringLength-totalParsedInputLength;if(string.length>0){getParsingFlags(config).unusedInput.push(string);}
if(config._a[HOUR]<=12&&getParsingFlags(config).bigHour===true&&config._a[HOUR]>0){getParsingFlags(config).bigHour=undefined;}
getParsingFlags(config).parsedDateParts=config._a.slice(0);getParsingFlags(config).meridiem=config._meridiem;config._a[HOUR]=meridiemFixWrap(config._locale,config._a[HOUR],config._meridiem);configFromArray(config);checkOverflow(config);}
function meridiemFixWrap(locale,hour,meridiem){var isPm;if(meridiem==null){return hour;}
if(locale.meridiemHour!=null){return locale.meridiemHour(hour,meridiem);}else if(locale.isPM!=null){isPm=locale.isPM(meridiem);if(isPm&&hour<12){hour+=12;}
if(!isPm&&hour===12){hour=0;}
return hour;}else{return hour;}}
function configFromStringAndArray(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(config._f.length===0){getParsingFlags(config).invalidFormat=true;config._d=new Date(NaN);return;}
for(i=0;i<config._f.length;i++){currentScore=0;tempConfig=copyConfig({},config);if(config._useUTC!=null){tempConfig._useUTC=config._useUTC;}
tempConfig._f=config._f[i];configFromStringAndFormat(tempConfig);if(!isValid(tempConfig)){continue;}
currentScore+=getParsingFlags(tempConfig).charsLeftOver;currentScore+=getParsingFlags(tempConfig).unusedTokens.length*10;getParsingFlags(tempConfig).score=currentScore;if(scoreToBeat==null||currentScore<scoreToBeat){scoreToBeat=currentScore;bestMoment=tempConfig;}}
extend(config,bestMoment||tempConfig);}
function configFromObject(config){if(config._d){return;}
var i=normalizeObjectUnits(config._i);config._a=map([i.year,i.month,i.day||i.date,i.hour,i.minute,i.second,i.millisecond],function(obj){return obj&&parseInt(obj,10);});configFromArray(config);}
function createFromConfig(config){var res=new Moment(checkOverflow(prepareConfig(config)));if(res._nextDay){res.add(1,'d');res._nextDay=undefined;}
return res;}
function prepareConfig(config){var input=config._i,format=config._f;config._locale=config._locale||getLocale(config._l);if(input===null||(format===undefined&&input==='')){return createInvalid({nullInput:true});}
if(typeof input==='string'){config._i=input=config._locale.preparse(input);}
if(isMoment(input)){return new Moment(checkOverflow(input));}else if(isDate(input)){config._d=input;}else if(isArray(format)){configFromStringAndArray(config);}else if(format){configFromStringAndFormat(config);}else{configFromInput(config);}
if(!isValid(config)){config._d=null;}
return config;}
function configFromInput(config){var input=config._i;if(isUndefined(input)){config._d=new Date(hooks.now());}else if(isDate(input)){config._d=new Date(input.valueOf());}else if(typeof input==='string'){configFromString(config);}else if(isArray(input)){config._a=map(input.slice(0),function(obj){return parseInt(obj,10);});configFromArray(config);}else if(isObject(input)){configFromObject(config);}else if(isNumber(input)){config._d=new Date(input);}else{hooks.createFromInputFallback(config);}}
function createLocalOrUTC(input,format,locale,strict,isUTC){var c={};if(locale===true||locale===false){strict=locale;locale=undefined;}
if((isObject(input)&&isObjectEmpty(input))||(isArray(input)&&input.length===0)){input=undefined;}
c._isAMomentObject=true;c._useUTC=c._isUTC=isUTC;c._l=locale;c._i=input;c._f=format;c._strict=strict;return createFromConfig(c);}
function createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,false);}
var prototypeMin=deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',function(){var other=createLocal.apply(null,arguments);if(this.isValid()&&other.isValid()){return other<this?this:other;}else{return createInvalid();}});var prototypeMax=deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',function(){var other=createLocal.apply(null,arguments);if(this.isValid()&&other.isValid()){return other>this?this:other;}else{return createInvalid();}});function pickBy(fn,moments){var res,i;if(moments.length===1&&isArray(moments[0])){moments=moments[0];}
if(!moments.length){return createLocal();}
res=moments[0];for(i=1;i<moments.length;++i){if(!moments[i].isValid()||moments[i][fn](res)){res=moments[i];}}
return res;}
function min(){var args=[].slice.call(arguments,0);return pickBy('isBefore',args);}
function max(){var args=[].slice.call(arguments,0);return pickBy('isAfter',args);}
var now=function(){return Date.now?Date.now():+(new Date());};var ordering=['year','quarter','month','week','day','hour','minute','second','millisecond'];function isDurationValid(m){for(var key in m){if(!(indexOf.call(ordering,key)!==-1&&(m[key]==null||!isNaN(m[key])))){return false;}}
var unitHasDecimal=false;for(var i=0;i<ordering.length;++i){if(m[ordering[i]]){if(unitHasDecimal){return false;}
if(parseFloat(m[ordering[i]])!==toInt(m[ordering[i]])){unitHasDecimal=true;}}}
return true;}
function isValid$1(){return this._isValid;}
function createInvalid$1(){return createDuration(NaN);}
function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||normalizedInput.isoWeek||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._isValid=isDurationValid(normalizedInput);this._milliseconds=+milliseconds+
seconds*1e3+
minutes*6e4+
hours*1000*60*60;this._days=+days+
weeks*7;this._months=+months+
quarters*3+
years*12;this._data={};this._locale=getLocale();this._bubble();}
function isDuration(obj){return obj instanceof Duration;}
function absRound(number){if(number<0){return Math.round(-1*number)*-1;}else{return Math.round(number);}}
function offset(token,separator){addFormatToken(token,0,0,function(){var offset=this.utcOffset();var sign='+';if(offset<0){offset=-offset;sign='-';}
return sign+zeroFill(~~(offset/60),2)+separator+zeroFill(~~(offset)%60,2);});}
offset('Z',':');offset('ZZ','');addRegexToken('Z',matchShortOffset);addRegexToken('ZZ',matchShortOffset);addParseToken(['Z','ZZ'],function(input,array,config){config._useUTC=true;config._tzm=offsetFromString(matchShortOffset,input);});var chunkOffset=/([\+\-]|\d\d)/gi;function offsetFromString(matcher,string){var matches=(string||'').match(matcher);if(matches===null){return null;}
var chunk=matches[matches.length-1]||[];var parts=(chunk+'').match(chunkOffset)||['-',0,0];var minutes=+(parts[1]*60)+toInt(parts[2]);return minutes===0?0:parts[0]==='+'?minutes:-minutes;}
function cloneWithOffset(input,model){var res,diff;if(model._isUTC){res=model.clone();diff=(isMoment(input)||isDate(input)?input.valueOf():createLocal(input).valueOf())-res.valueOf();res._d.setTime(res._d.valueOf()+diff);hooks.updateOffset(res,false);return res;}else{return createLocal(input).local();}}
function getDateOffset(m){return-Math.round(m._d.getTimezoneOffset()/15)*15;}
hooks.updateOffset=function(){};function getSetOffset(input,keepLocalTime,keepMinutes){var offset=this._offset||0,localAdjust;if(!this.isValid()){return input!=null?this:NaN;}
if(input!=null){if(typeof input==='string'){input=offsetFromString(matchShortOffset,input);if(input===null){return this;}}else if(Math.abs(input)<16&&!keepMinutes){input=input*60;}
if(!this._isUTC&&keepLocalTime){localAdjust=getDateOffset(this);}
this._offset=input;this._isUTC=true;if(localAdjust!=null){this.add(localAdjust,'m');}
if(offset!==input){if(!keepLocalTime||this._changeInProgress){addSubtract(this,createDuration(input-offset,'m'),1,false);}else if(!this._changeInProgress){this._changeInProgress=true;hooks.updateOffset(this,true);this._changeInProgress=null;}}
return this;}else{return this._isUTC?offset:getDateOffset(this);}}
function getSetZone(input,keepLocalTime){if(input!=null){if(typeof input!=='string'){input=-input;}
this.utcOffset(input,keepLocalTime);return this;}else{return-this.utcOffset();}}
function setOffsetToUTC(keepLocalTime){return this.utcOffset(0,keepLocalTime);}
function setOffsetToLocal(keepLocalTime){if(this._isUTC){this.utcOffset(0,keepLocalTime);this._isUTC=false;if(keepLocalTime){this.subtract(getDateOffset(this),'m');}}
return this;}
function setOffsetToParsedOffset(){if(this._tzm!=null){this.utcOffset(this._tzm,false,true);}else if(typeof this._i==='string'){var tZone=offsetFromString(matchOffset,this._i);if(tZone!=null){this.utcOffset(tZone);}
else{this.utcOffset(0,true);}}
return this;}
function hasAlignedHourOffset(input){if(!this.isValid()){return false;}
input=input?createLocal(input).utcOffset():0;return(this.utcOffset()-input)%60===0;}
function isDaylightSavingTime(){return(this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset());}
function isDaylightSavingTimeShifted(){if(!isUndefined(this._isDSTShifted)){return this._isDSTShifted;}
var c={};copyConfig(c,this);c=prepareConfig(c);if(c._a){var other=c._isUTC?createUTC(c._a):createLocal(c._a);this._isDSTShifted=this.isValid()&&compareArrays(c._a,other.toArray())>0;}else{this._isDSTShifted=false;}
return this._isDSTShifted;}
function isLocal(){return this.isValid()?!this._isUTC:false;}
function isUtcOffset(){return this.isValid()?this._isUTC:false;}
function isUtc(){return this.isValid()?this._isUTC&&this._offset===0:false;}
var aspNetRegex=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/;var isoRegex=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function createDuration(input,key){var duration=input,match=null,sign,ret,diffRes;if(isDuration(input)){duration={ms:input._milliseconds,d:input._days,M:input._months};}else if(isNumber(input)){duration={};if(key){duration[key]=input;}else{duration.milliseconds=input;}}else if(!!(match=aspNetRegex.exec(input))){sign=(match[1]==='-')?-1:1;duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(absRound(match[MILLISECOND]*1000))*sign};}else if(!!(match=isoRegex.exec(input))){sign=(match[1]==='-')?-1:1;duration={y:parseIso(match[2],sign),M:parseIso(match[3],sign),w:parseIso(match[4],sign),d:parseIso(match[5],sign),h:parseIso(match[6],sign),m:parseIso(match[7],sign),s:parseIso(match[8],sign)};}else if(duration==null){duration={};}else if(typeof duration==='object'&&('from'in duration||'to'in duration)){diffRes=momentsDifference(createLocal(duration.from),createLocal(duration.to));duration={};duration.ms=diffRes.milliseconds;duration.M=diffRes.months;}
ret=new Duration(duration);if(isDuration(input)&&hasOwnProp(input,'_locale')){ret._locale=input._locale;}
return ret;}
createDuration.fn=Duration.prototype;createDuration.invalid=createInvalid$1;function parseIso(inp,sign){var res=inp&&parseFloat(inp.replace(',','.'));return(isNaN(res)?0:res)*sign;}
function positiveMomentsDifference(base,other){var res={};res.months=other.month()-base.month()+
(other.year()-base.year())*12;if(base.clone().add(res.months,'M').isAfter(other)){--res.months;}
res.milliseconds=+other-+(base.clone().add(res.months,'M'));return res;}
function momentsDifference(base,other){var res;if(!(base.isValid()&&other.isValid())){return{milliseconds:0,months:0};}
other=cloneWithOffset(other,base);if(base.isBefore(other)){res=positiveMomentsDifference(base,other);}else{res=positiveMomentsDifference(other,base);res.milliseconds=-res.milliseconds;res.months=-res.months;}
return res;}
function createAdder(direction,name){return function(val,period){var dur,tmp;if(period!==null&&!isNaN(+period)){deprecateSimple(name,'moment().'+name+'(period, number) is deprecated. Please use moment().'+name+'(number, period). '+
'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');tmp=val;val=period;period=tmp;}
val=typeof val==='string'?+val:val;dur=createDuration(val,period);addSubtract(this,dur,direction);return this;};}
function addSubtract(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=absRound(duration._days),months=absRound(duration._months);if(!mom.isValid()){return;}
updateOffset=updateOffset==null?true:updateOffset;if(months){setMonth(mom,get(mom,'Month')+months*isAdding);}
if(days){set$1(mom,'Date',get(mom,'Date')+days*isAdding);}
if(milliseconds){mom._d.setTime(mom._d.valueOf()+milliseconds*isAdding);}
if(updateOffset){hooks.updateOffset(mom,days||months);}}
var add=createAdder(1,'add');var subtract=createAdder(-1,'subtract');function getCalendarFormat(myMoment,now){var diff=myMoment.diff(now,'days',true);return diff<-6?'sameElse':diff<-1?'lastWeek':diff<0?'lastDay':diff<1?'sameDay':diff<2?'nextDay':diff<7?'nextWeek':'sameElse';}
function calendar$1(time,formats){var now=time||createLocal(),sod=cloneWithOffset(now,this).startOf('day'),format=hooks.calendarFormat(this,sod)||'sameElse';var output=formats&&(isFunction(formats[format])?formats[format].call(this,now):formats[format]);return this.format(output||this.localeData().calendar(format,this,createLocal(now)));}
function clone(){return new Moment(this);}
function isAfter(input,units){var localInput=isMoment(input)?input:createLocal(input);if(!(this.isValid()&&localInput.isValid())){return false;}
units=normalizeUnits(units)||'millisecond';if(units==='millisecond'){return this.valueOf()>localInput.valueOf();}else{return localInput.valueOf()<this.clone().startOf(units).valueOf();}}
function isBefore(input,units){var localInput=isMoment(input)?input:createLocal(input);if(!(this.isValid()&&localInput.isValid())){return false;}
units=normalizeUnits(units)||'millisecond';if(units==='millisecond'){return this.valueOf()<localInput.valueOf();}else{return this.clone().endOf(units).valueOf()<localInput.valueOf();}}
function isBetween(from,to,units,inclusivity){var localFrom=isMoment(from)?from:createLocal(from),localTo=isMoment(to)?to:createLocal(to);if(!(this.isValid()&&localFrom.isValid()&&localTo.isValid())){return false;}
inclusivity=inclusivity||'()';return(inclusivity[0]==='('?this.isAfter(localFrom,units):!this.isBefore(localFrom,units))&&(inclusivity[1]===')'?this.isBefore(localTo,units):!this.isAfter(localTo,units));}
function isSame(input,units){var localInput=isMoment(input)?input:createLocal(input),inputMs;if(!(this.isValid()&&localInput.isValid())){return false;}
units=normalizeUnits(units)||'millisecond';if(units==='millisecond'){return this.valueOf()===localInput.valueOf();}else{inputMs=localInput.valueOf();return this.clone().startOf(units).valueOf()<=inputMs&&inputMs<=this.clone().endOf(units).valueOf();}}
function isSameOrAfter(input,units){return this.isSame(input,units)||this.isAfter(input,units);}
function isSameOrBefore(input,units){return this.isSame(input,units)||this.isBefore(input,units);}
function diff(input,units,asFloat){var that,zoneDelta,output;if(!this.isValid()){return NaN;}
that=cloneWithOffset(input,this);if(!that.isValid()){return NaN;}
zoneDelta=(that.utcOffset()-this.utcOffset())*6e4;units=normalizeUnits(units);switch(units){case 'year':output=monthDiff(this,that)/12;break;case 'month':output=monthDiff(this,that);break;case 'quarter':output=monthDiff(this,that)/3;break;case 'second':output=(this-that)/1e3;break;case 'minute':output=(this-that)/6e4;break;case 'hour':output=(this-that)/36e5;break;case 'day':output=(this-that-zoneDelta)/864e5;break;case 'week':output=(this-that-zoneDelta)/6048e5;break;default:output=this-that;}
return asFloat?output:absFloor(output);}
function monthDiff(a,b){var wholeMonthDiff=((b.year()-a.year())*12)+(b.month()-a.month()),anchor=a.clone().add(wholeMonthDiff,'months'),anchor2,adjust;if(b-anchor<0){anchor2=a.clone().add(wholeMonthDiff-1,'months');adjust=(b-anchor)/(anchor-anchor2);}else{anchor2=a.clone().add(wholeMonthDiff+1,'months');adjust=(b-anchor)/(anchor2-anchor);}
return-(wholeMonthDiff+adjust)||0;}
hooks.defaultFormat='YYYY-MM-DDTHH:mm:ssZ';hooks.defaultFormatUtc='YYYY-MM-DDTHH:mm:ss[Z]';function toString(){return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');}
function toISOString(keepOffset){if(!this.isValid()){return null;}
var utc=keepOffset!==true;var m=utc?this.clone().utc():this;if(m.year()<0||m.year()>9999){return formatMoment(m,utc?'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]':'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');}
if(isFunction(Date.prototype.toISOString)){if(utc){return this.toDate().toISOString();}else{return new Date(this.valueOf()+this.utcOffset()*60*1000).toISOString().replace('Z',formatMoment(m,'Z'));}}
return formatMoment(m,utc?'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]':'YYYY-MM-DD[T]HH:mm:ss.SSSZ');}
function inspect(){if(!this.isValid()){return 'moment.invalid(/* '+this._i+' */)';}
var func='moment';var zone='';if(!this.isLocal()){func=this.utcOffset()===0?'moment.utc':'moment.parseZone';zone='Z';}
var prefix='['+func+'("]';var year=(0<=this.year()&&this.year()<=9999)?'YYYY':'YYYYYY';var datetime='-MM-DD[T]HH:mm:ss.SSS';var suffix=zone+'[")]';return this.format(prefix+year+datetime+suffix);}
function format(inputString){if(!inputString){inputString=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat;}
var output=formatMoment(this,inputString);return this.localeData().postformat(output);}
function from(time,withoutSuffix){if(this.isValid()&&((isMoment(time)&&time.isValid())||createLocal(time).isValid())){return createDuration({to:this,from:time}).locale(this.locale()).humanize(!withoutSuffix);}else{return this.localeData().invalidDate();}}
function fromNow(withoutSuffix){return this.from(createLocal(),withoutSuffix);}
function to(time,withoutSuffix){if(this.isValid()&&((isMoment(time)&&time.isValid())||createLocal(time).isValid())){return createDuration({from:this,to:time}).locale(this.locale()).humanize(!withoutSuffix);}else{return this.localeData().invalidDate();}}
function toNow(withoutSuffix){return this.to(createLocal(),withoutSuffix);}
function locale(key){var newLocaleData;if(key===undefined){return this._locale._abbr;}else{newLocaleData=getLocale(key);if(newLocaleData!=null){this._locale=newLocaleData;}
return this;}}
var lang=deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',function(key){if(key===undefined){return this.localeData();}else{return this.locale(key);}});function localeData(){return this._locale;}
var MS_PER_SECOND=1000;var MS_PER_MINUTE=60*MS_PER_SECOND;var MS_PER_HOUR=60*MS_PER_MINUTE;var MS_PER_400_YEARS=(365*400+97)*24*MS_PER_HOUR;function mod$1(dividend,divisor){return(dividend%divisor+divisor)%divisor;}
function localStartOfDate(y,m,d){if(y<100&&y>=0){return new Date(y+400,m,d)-MS_PER_400_YEARS;}else{return new Date(y,m,d).valueOf();}}
function utcStartOfDate(y,m,d){if(y<100&&y>=0){return Date.UTC(y+400,m,d)-MS_PER_400_YEARS;}else{return Date.UTC(y,m,d);}}
function startOf(units){var time;units=normalizeUnits(units);if(units===undefined||units==='millisecond'||!this.isValid()){return this;}
var startOfDate=this._isUTC?utcStartOfDate:localStartOfDate;switch(units){case 'year':time=startOfDate(this.year(),0,1);break;case 'quarter':time=startOfDate(this.year(),this.month()-this.month()%3,1);break;case 'month':time=startOfDate(this.year(),this.month(),1);break;case 'week':time=startOfDate(this.year(),this.month(),this.date()-this.weekday());break;case 'isoWeek':time=startOfDate(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case 'day':case 'date':time=startOfDate(this.year(),this.month(),this.date());break;case 'hour':time=this._d.valueOf();time-=mod$1(time+(this._isUTC?0:this.utcOffset()*MS_PER_MINUTE),MS_PER_HOUR);break;case 'minute':time=this._d.valueOf();time-=mod$1(time,MS_PER_MINUTE);break;case 'second':time=this._d.valueOf();time-=mod$1(time,MS_PER_SECOND);break;}
this._d.setTime(time);hooks.updateOffset(this,true);return this;}
function endOf(units){var time;units=normalizeUnits(units);if(units===undefined||units==='millisecond'||!this.isValid()){return this;}
var startOfDate=this._isUTC?utcStartOfDate:localStartOfDate;switch(units){case 'year':time=startOfDate(this.year()+1,0,1)-1;break;case 'quarter':time=startOfDate(this.year(),this.month()-this.month()%3+3,1)-1;break;case 'month':time=startOfDate(this.year(),this.month()+1,1)-1;break;case 'week':time=startOfDate(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case 'isoWeek':time=startOfDate(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case 'day':case 'date':time=startOfDate(this.year(),this.month(),this.date()+1)-1;break;case 'hour':time=this._d.valueOf();time+=MS_PER_HOUR-mod$1(time+(this._isUTC?0:this.utcOffset()*MS_PER_MINUTE),MS_PER_HOUR)-1;break;case 'minute':time=this._d.valueOf();time+=MS_PER_MINUTE-mod$1(time,MS_PER_MINUTE)-1;break;case 'second':time=this._d.valueOf();time+=MS_PER_SECOND-mod$1(time,MS_PER_SECOND)-1;break;}
this._d.setTime(time);hooks.updateOffset(this,true);return this;}
function valueOf(){return this._d.valueOf()-((this._offset||0)*60000);}
function unix(){return Math.floor(this.valueOf()/1000);}
function toDate(){return new Date(this.valueOf());}
function toArray(){var m=this;return[m.year(),m.month(),m.date(),m.hour(),m.minute(),m.second(),m.millisecond()];}
function toObject(){var m=this;return{years:m.year(),months:m.month(),date:m.date(),hours:m.hours(),minutes:m.minutes(),seconds:m.seconds(),milliseconds:m.milliseconds()};}
function toJSON(){return this.isValid()?this.toISOString():null;}
function isValid$2(){return isValid(this);}
function parsingFlags(){return extend({},getParsingFlags(this));}
function invalidAt(){return getParsingFlags(this).overflow;}
function creationData(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict};}
addFormatToken(0,['gg',2],0,function(){return this.weekYear()%100;});addFormatToken(0,['GG',2],0,function(){return this.isoWeekYear()%100;});function addWeekYearFormatToken(token,getter){addFormatToken(0,[token,token.length],0,getter);}
addWeekYearFormatToken('gggg','weekYear');addWeekYearFormatToken('ggggg','weekYear');addWeekYearFormatToken('GGGG','isoWeekYear');addWeekYearFormatToken('GGGGG','isoWeekYear');addUnitAlias('weekYear','gg');addUnitAlias('isoWeekYear','GG');addUnitPriority('weekYear',1);addUnitPriority('isoWeekYear',1);addRegexToken('G',matchSigned);addRegexToken('g',matchSigned);addRegexToken('GG',match1to2,match2);addRegexToken('gg',match1to2,match2);addRegexToken('GGGG',match1to4,match4);addRegexToken('gggg',match1to4,match4);addRegexToken('GGGGG',match1to6,match6);addRegexToken('ggggg',match1to6,match6);addWeekParseToken(['gggg','ggggg','GGGG','GGGGG'],function(input,week,config,token){week[token.substr(0,2)]=toInt(input);});addWeekParseToken(['gg','GG'],function(input,week,config,token){week[token]=hooks.parseTwoDigitYear(input);});function getSetWeekYear(input){return getSetWeekYearHelper.call(this,input,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy);}
function getSetISOWeekYear(input){return getSetWeekYearHelper.call(this,input,this.isoWeek(),this.isoWeekday(),1,4);}
function getISOWeeksInYear(){return weeksInYear(this.year(),1,4);}
function getWeeksInYear(){var weekInfo=this.localeData()._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy);}
function getSetWeekYearHelper(input,week,weekday,dow,doy){var weeksTarget;if(input==null){return weekOfYear(this,dow,doy).year;}else{weeksTarget=weeksInYear(input,dow,doy);if(week>weeksTarget){week=weeksTarget;}
return setWeekAll.call(this,input,week,weekday,dow,doy);}}
function setWeekAll(weekYear,week,weekday,dow,doy){var dayOfYearData=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),date=createUTCDate(dayOfYearData.year,0,dayOfYearData.dayOfYear);this.year(date.getUTCFullYear());this.month(date.getUTCMonth());this.date(date.getUTCDate());return this;}
addFormatToken('Q',0,'Qo','quarter');addUnitAlias('quarter','Q');addUnitPriority('quarter',7);addRegexToken('Q',match1);addParseToken('Q',function(input,array){array[MONTH]=(toInt(input)-1)*3;});function getSetQuarter(input){return input==null?Math.ceil((this.month()+1)/3):this.month((input-1)*3+this.month()%3);}
addFormatToken('D',['DD',2],'Do','date');addUnitAlias('date','D');addUnitPriority('date',9);addRegexToken('D',match1to2);addRegexToken('DD',match1to2,match2);addRegexToken('Do',function(isStrict,locale){return isStrict?(locale._dayOfMonthOrdinalParse||locale._ordinalParse):locale._dayOfMonthOrdinalParseLenient;});addParseToken(['D','DD'],DATE);addParseToken('Do',function(input,array){array[DATE]=toInt(input.match(match1to2)[0]);});var getSetDayOfMonth=makeGetSet('Date',true);addFormatToken('DDD',['DDDD',3],'DDDo','dayOfYear');addUnitAlias('dayOfYear','DDD');addUnitPriority('dayOfYear',4);addRegexToken('DDD',match1to3);addRegexToken('DDDD',match3);addParseToken(['DDD','DDDD'],function(input,array,config){config._dayOfYear=toInt(input);});function getSetDayOfYear(input){var dayOfYear=Math.round((this.clone().startOf('day')-this.clone().startOf('year'))/864e5)+1;return input==null?dayOfYear:this.add((input-dayOfYear),'d');}
addFormatToken('m',['mm',2],0,'minute');addUnitAlias('minute','m');addUnitPriority('minute',14);addRegexToken('m',match1to2);addRegexToken('mm',match1to2,match2);addParseToken(['m','mm'],MINUTE);var getSetMinute=makeGetSet('Minutes',false);addFormatToken('s',['ss',2],0,'second');addUnitAlias('second','s');addUnitPriority('second',15);addRegexToken('s',match1to2);addRegexToken('ss',match1to2,match2);addParseToken(['s','ss'],SECOND);var getSetSecond=makeGetSet('Seconds',false);addFormatToken('S',0,0,function(){return~~(this.millisecond()/100);});addFormatToken(0,['SS',2],0,function(){return~~(this.millisecond()/10);});addFormatToken(0,['SSS',3],0,'millisecond');addFormatToken(0,['SSSS',4],0,function(){return this.millisecond()*10;});addFormatToken(0,['SSSSS',5],0,function(){return this.millisecond()*100;});addFormatToken(0,['SSSSSS',6],0,function(){return this.millisecond()*1000;});addFormatToken(0,['SSSSSSS',7],0,function(){return this.millisecond()*10000;});addFormatToken(0,['SSSSSSSS',8],0,function(){return this.millisecond()*100000;});addFormatToken(0,['SSSSSSSSS',9],0,function(){return this.millisecond()*1000000;});addUnitAlias('millisecond','ms');addUnitPriority('millisecond',16);addRegexToken('S',match1to3,match1);addRegexToken('SS',match1to3,match2);addRegexToken('SSS',match1to3,match3);var token;for(token='SSSS';token.length<=9;token+='S'){addRegexToken(token,matchUnsigned);}
function parseMs(input,array){array[MILLISECOND]=toInt(('0.'+input)*1000);}
for(token='S';token.length<=9;token+='S'){addParseToken(token,parseMs);}
var getSetMillisecond=makeGetSet('Milliseconds',false);addFormatToken('z',0,0,'zoneAbbr');addFormatToken('zz',0,0,'zoneName');function getZoneAbbr(){return this._isUTC?'UTC':'';}
function getZoneName(){return this._isUTC?'Coordinated Universal Time':'';}
var proto=Moment.prototype;proto.add=add;proto.calendar=calendar$1;proto.clone=clone;proto.diff=diff;proto.endOf=endOf;proto.format=format;proto.from=from;proto.fromNow=fromNow;proto.to=to;proto.toNow=toNow;proto.get=stringGet;proto.invalidAt=invalidAt;proto.isAfter=isAfter;proto.isBefore=isBefore;proto.isBetween=isBetween;proto.isSame=isSame;proto.isSameOrAfter=isSameOrAfter;proto.isSameOrBefore=isSameOrBefore;proto.isValid=isValid$2;proto.lang=lang;proto.locale=locale;proto.localeData=localeData;proto.max=prototypeMax;proto.min=prototypeMin;proto.parsingFlags=parsingFlags;proto.set=stringSet;proto.startOf=startOf;proto.subtract=subtract;proto.toArray=toArray;proto.toObject=toObject;proto.toDate=toDate;proto.toISOString=toISOString;proto.inspect=inspect;proto.toJSON=toJSON;proto.toString=toString;proto.unix=unix;proto.valueOf=valueOf;proto.creationData=creationData;proto.year=getSetYear;proto.isLeapYear=getIsLeapYear;proto.weekYear=getSetWeekYear;proto.isoWeekYear=getSetISOWeekYear;proto.quarter=proto.quarters=getSetQuarter;proto.month=getSetMonth;proto.daysInMonth=getDaysInMonth;proto.week=proto.weeks=getSetWeek;proto.isoWeek=proto.isoWeeks=getSetISOWeek;proto.weeksInYear=getWeeksInYear;proto.isoWeeksInYear=getISOWeeksInYear;proto.date=getSetDayOfMonth;proto.day=proto.days=getSetDayOfWeek;proto.weekday=getSetLocaleDayOfWeek;proto.isoWeekday=getSetISODayOfWeek;proto.dayOfYear=getSetDayOfYear;proto.hour=proto.hours=getSetHour;proto.minute=proto.minutes=getSetMinute;proto.second=proto.seconds=getSetSecond;proto.millisecond=proto.milliseconds=getSetMillisecond;proto.utcOffset=getSetOffset;proto.utc=setOffsetToUTC;proto.local=setOffsetToLocal;proto.parseZone=setOffsetToParsedOffset;proto.hasAlignedHourOffset=hasAlignedHourOffset;proto.isDST=isDaylightSavingTime;proto.isLocal=isLocal;proto.isUtcOffset=isUtcOffset;proto.isUtc=isUtc;proto.isUTC=isUtc;proto.zoneAbbr=getZoneAbbr;proto.zoneName=getZoneName;proto.dates=deprecate('dates accessor is deprecated. Use date instead.',getSetDayOfMonth);proto.months=deprecate('months accessor is deprecated. Use month instead',getSetMonth);proto.years=deprecate('years accessor is deprecated. Use year instead',getSetYear);proto.zone=deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',getSetZone);proto.isDSTShifted=deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',isDaylightSavingTimeShifted);function createUnix(input){return createLocal(input*1000);}
function createInZone(){return createLocal.apply(null,arguments).parseZone();}
function preParsePostFormat(string){return string;}
var proto$1=Locale.prototype;proto$1.calendar=calendar;proto$1.longDateFormat=longDateFormat;proto$1.invalidDate=invalidDate;proto$1.ordinal=ordinal;proto$1.preparse=preParsePostFormat;proto$1.postformat=preParsePostFormat;proto$1.relativeTime=relativeTime;proto$1.pastFuture=pastFuture;proto$1.set=set;proto$1.months=localeMonths;proto$1.monthsShort=localeMonthsShort;proto$1.monthsParse=localeMonthsParse;proto$1.monthsRegex=monthsRegex;proto$1.monthsShortRegex=monthsShortRegex;proto$1.week=localeWeek;proto$1.firstDayOfYear=localeFirstDayOfYear;proto$1.firstDayOfWeek=localeFirstDayOfWeek;proto$1.weekdays=localeWeekdays;proto$1.weekdaysMin=localeWeekdaysMin;proto$1.weekdaysShort=localeWeekdaysShort;proto$1.weekdaysParse=localeWeekdaysParse;proto$1.weekdaysRegex=weekdaysRegex;proto$1.weekdaysShortRegex=weekdaysShortRegex;proto$1.weekdaysMinRegex=weekdaysMinRegex;proto$1.isPM=localeIsPM;proto$1.meridiem=localeMeridiem;function get$1(format,index,field,setter){var locale=getLocale();var utc=createUTC().set(setter,index);return locale[field](utc,format);}
function listMonthsImpl(format,index,field){if(isNumber(format)){index=format;format=undefined;}
format=format||'';if(index!=null){return get$1(format,index,field,'month');}
var i;var out=[];for(i=0;i<12;i++){out[i]=get$1(format,i,field,'month');}
return out;}
function listWeekdaysImpl(localeSorted,format,index,field){if(typeof localeSorted==='boolean'){if(isNumber(format)){index=format;format=undefined;}
format=format||'';}else{format=localeSorted;index=format;localeSorted=false;if(isNumber(format)){index=format;format=undefined;}
format=format||'';}
var locale=getLocale(),shift=localeSorted?locale._week.dow:0;if(index!=null){return get$1(format,(index+shift)%7,field,'day');}
var i;var out=[];for(i=0;i<7;i++){out[i]=get$1(format,(i+shift)%7,field,'day');}
return out;}
function listMonths(format,index){return listMonthsImpl(format,index,'months');}
function listMonthsShort(format,index){return listMonthsImpl(format,index,'monthsShort');}
function listWeekdays(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,'weekdays');}
function listWeekdaysShort(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,'weekdaysShort');}
function listWeekdaysMin(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,'weekdaysMin');}
getSetGlobalLocale('en',{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(number){var b=number%10,output=(toInt(number%100/10)===1)?'th':(b===1)?'st':(b===2)?'nd':(b===3)?'rd':'th';return number+output;}});hooks.lang=deprecate('moment.lang is deprecated. Use moment.locale instead.',getSetGlobalLocale);hooks.langData=deprecate('moment.langData is deprecated. Use moment.localeData instead.',getLocale);var mathAbs=Math.abs;function abs(){var data=this._data;this._milliseconds=mathAbs(this._milliseconds);this._days=mathAbs(this._days);this._months=mathAbs(this._months);data.milliseconds=mathAbs(data.milliseconds);data.seconds=mathAbs(data.seconds);data.minutes=mathAbs(data.minutes);data.hours=mathAbs(data.hours);data.months=mathAbs(data.months);data.years=mathAbs(data.years);return this;}
function addSubtract$1(duration,input,value,direction){var other=createDuration(input,value);duration._milliseconds+=direction*other._milliseconds;duration._days+=direction*other._days;duration._months+=direction*other._months;return duration._bubble();}
function add$1(input,value){return addSubtract$1(this,input,value,1);}
function subtract$1(input,value){return addSubtract$1(this,input,value,-1);}
function absCeil(number){if(number<0){return Math.floor(number);}else{return Math.ceil(number);}}
function bubble(){var milliseconds=this._milliseconds;var days=this._days;var months=this._months;var data=this._data;var seconds,minutes,hours,years,monthsFromDays;if(!((milliseconds>=0&&days>=0&&months>=0)||(milliseconds<=0&&days<=0&&months<=0))){milliseconds+=absCeil(monthsToDays(months)+days)*864e5;days=0;months=0;}
data.milliseconds=milliseconds%1000;seconds=absFloor(milliseconds/1000);data.seconds=seconds%60;minutes=absFloor(seconds/60);data.minutes=minutes%60;hours=absFloor(minutes/60);data.hours=hours%24;days+=absFloor(hours/24);monthsFromDays=absFloor(daysToMonths(days));months+=monthsFromDays;days-=absCeil(monthsToDays(monthsFromDays));years=absFloor(months/12);months%=12;data.days=days;data.months=months;data.years=years;return this;}
function daysToMonths(days){return days*4800/146097;}
function monthsToDays(months){return months*146097/4800;}
function as(units){if(!this.isValid()){return NaN;}
var days;var months;var milliseconds=this._milliseconds;units=normalizeUnits(units);if(units==='month'||units==='quarter'||units==='year'){days=this._days+milliseconds/864e5;months=this._months+daysToMonths(days);switch(units){case 'month':return months;case 'quarter':return months/3;case 'year':return months/12;}}else{days=this._days+Math.round(monthsToDays(this._months));switch(units){case 'week':return days/7+milliseconds/6048e5;case 'day':return days+milliseconds/864e5;case 'hour':return days*24+milliseconds/36e5;case 'minute':return days*1440+milliseconds/6e4;case 'second':return days*86400+milliseconds/1000;case 'millisecond':return Math.floor(days*864e5)+milliseconds;default:throw new Error('Unknown unit '+units);}}}
function valueOf$1(){if(!this.isValid()){return NaN;}
return(this._milliseconds+
this._days*864e5+
(this._months%12)*2592e6+
toInt(this._months/12)*31536e6);}
function makeAs(alias){return function(){return this.as(alias);};}
var asMilliseconds=makeAs('ms');var asSeconds=makeAs('s');var asMinutes=makeAs('m');var asHours=makeAs('h');var asDays=makeAs('d');var asWeeks=makeAs('w');var asMonths=makeAs('M');var asQuarters=makeAs('Q');var asYears=makeAs('y');function clone$1(){return createDuration(this);}
function get$2(units){units=normalizeUnits(units);return this.isValid()?this[units+'s']():NaN;}
function makeGetter(name){return function(){return this.isValid()?this._data[name]:NaN;};}
var milliseconds=makeGetter('milliseconds');var seconds=makeGetter('seconds');var minutes=makeGetter('minutes');var hours=makeGetter('hours');var days=makeGetter('days');var months=makeGetter('months');var years=makeGetter('years');function weeks(){return absFloor(this.days()/7);}
var round=Math.round;var thresholds={ss:44,s:45,m:45,h:22,d:26,M:11};function substituteTimeAgo(string,number,withoutSuffix,isFuture,locale){return locale.relativeTime(number||1,!!withoutSuffix,string,isFuture);}
function relativeTime$1(posNegDuration,withoutSuffix,locale){var duration=createDuration(posNegDuration).abs();var seconds=round(duration.as('s'));var minutes=round(duration.as('m'));var hours=round(duration.as('h'));var days=round(duration.as('d'));var months=round(duration.as('M'));var years=round(duration.as('y'));var a=seconds<=thresholds.ss&&['s',seconds]||seconds<thresholds.s&&['ss',seconds]||minutes<=1&&['m']||minutes<thresholds.m&&['mm',minutes]||hours<=1&&['h']||hours<thresholds.h&&['hh',hours]||days<=1&&['d']||days<thresholds.d&&['dd',days]||months<=1&&['M']||months<thresholds.M&&['MM',months]||years<=1&&['y']||['yy',years];a[2]=withoutSuffix;a[3]=+posNegDuration>0;a[4]=locale;return substituteTimeAgo.apply(null,a);}
function getSetRelativeTimeRounding(roundingFunction){if(roundingFunction===undefined){return round;}
if(typeof(roundingFunction)==='function'){round=roundingFunction;return true;}
return false;}
function getSetRelativeTimeThreshold(threshold,limit){if(thresholds[threshold]===undefined){return false;}
if(limit===undefined){return thresholds[threshold];}
thresholds[threshold]=limit;if(threshold==='s'){thresholds.ss=limit-1;}
return true;}
function humanize(withSuffix){if(!this.isValid()){return this.localeData().invalidDate();}
var locale=this.localeData();var output=relativeTime$1(this,!withSuffix,locale);if(withSuffix){output=locale.pastFuture(+this,output);}
return locale.postformat(output);}
var abs$1=Math.abs;function sign(x){return((x>0)-(x<0))||+x;}
function toISOString$1(){if(!this.isValid()){return this.localeData().invalidDate();}
var seconds=abs$1(this._milliseconds)/1000;var days=abs$1(this._days);var months=abs$1(this._months);var minutes,hours,years;minutes=absFloor(seconds/60);hours=absFloor(minutes/60);seconds%=60;minutes%=60;years=absFloor(months/12);months%=12;var Y=years;var M=months;var D=days;var h=hours;var m=minutes;var s=seconds?seconds.toFixed(3).replace(/\.?0+$/,''):'';var total=this.asSeconds();if(!total){return 'P0D';}
var totalSign=total<0?'-':'';var ymSign=sign(this._months)!==sign(total)?'-':'';var daysSign=sign(this._days)!==sign(total)?'-':'';var hmsSign=sign(this._milliseconds)!==sign(total)?'-':'';return totalSign+'P'+
(Y?ymSign+Y+'Y':'')+
(M?ymSign+M+'M':'')+
(D?daysSign+D+'D':'')+
((h||m||s)?'T':'')+
(h?hmsSign+h+'H':'')+
(m?hmsSign+m+'M':'')+
(s?hmsSign+s+'S':'');}
var proto$2=Duration.prototype;proto$2.isValid=isValid$1;proto$2.abs=abs;proto$2.add=add$1;proto$2.subtract=subtract$1;proto$2.as=as;proto$2.asMilliseconds=asMilliseconds;proto$2.asSeconds=asSeconds;proto$2.asMinutes=asMinutes;proto$2.asHours=asHours;proto$2.asDays=asDays;proto$2.asWeeks=asWeeks;proto$2.asMonths=asMonths;proto$2.asQuarters=asQuarters;proto$2.asYears=asYears;proto$2.valueOf=valueOf$1;proto$2._bubble=bubble;proto$2.clone=clone$1;proto$2.get=get$2;proto$2.milliseconds=milliseconds;proto$2.seconds=seconds;proto$2.minutes=minutes;proto$2.hours=hours;proto$2.days=days;proto$2.weeks=weeks;proto$2.months=months;proto$2.years=years;proto$2.humanize=humanize;proto$2.toISOString=toISOString$1;proto$2.toString=toISOString$1;proto$2.toJSON=toISOString$1;proto$2.locale=locale;proto$2.localeData=localeData;proto$2.toIsoString=deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',toISOString$1);proto$2.lang=lang;addFormatToken('X',0,0,'unix');addFormatToken('x',0,0,'valueOf');addRegexToken('x',matchSigned);addRegexToken('X',matchTimestamp);addParseToken('X',function(input,array,config){config._d=new Date(parseFloat(input,10)*1000);});addParseToken('x',function(input,array,config){config._d=new Date(toInt(input));});hooks.version='2.24.0';setHookCallback(createLocal);hooks.fn=proto;hooks.min=min;hooks.max=max;hooks.now=now;hooks.utc=createUTC;hooks.unix=createUnix;hooks.months=listMonths;hooks.isDate=isDate;hooks.locale=getSetGlobalLocale;hooks.invalid=createInvalid;hooks.duration=createDuration;hooks.isMoment=isMoment;hooks.weekdays=listWeekdays;hooks.parseZone=createInZone;hooks.localeData=getLocale;hooks.isDuration=isDuration;hooks.monthsShort=listMonthsShort;hooks.weekdaysMin=listWeekdaysMin;hooks.defineLocale=defineLocale;hooks.updateLocale=updateLocale;hooks.locales=listLocales;hooks.weekdaysShort=listWeekdaysShort;hooks.normalizeUnits=normalizeUnits;hooks.relativeTimeRounding=getSetRelativeTimeRounding;hooks.relativeTimeThreshold=getSetRelativeTimeThreshold;hooks.calendarFormat=getCalendarFormat;hooks.prototype=proto;hooks.HTML5_FMT={DATETIME_LOCAL:'YYYY-MM-DDTHH:mm',DATETIME_LOCAL_SECONDS:'YYYY-MM-DDTHH:mm:ss',DATETIME_LOCAL_MS:'YYYY-MM-DDTHH:mm:ss.SSS',DATE:'YYYY-MM-DD',TIME:'HH:mm',TIME_SECONDS:'HH:mm:ss',TIME_MS:'HH:mm:ss.SSS',WEEK:'GGGG-[W]WW',MONTH:'YYYY-MM'};return hooks;})));
</script>
<script>
/*!
* Copyright (c) 2015 Chris O'Hara <cohara87@gmail.com>
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
!function(t,e){"undefined"!=typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&"object"==typeof define.amd?define(e):this[t]=e()}("validator",function(t){"use strict";function e(t,e){t=t||{};for(var r in e)"undefined"==typeof t[r]&&(t[r]=e[r]);return t}function r(t){var e="(\\"+t.symbol.replace(/\./g,"\\.")+")"+(t.require_symbol?"":"?"),r="-?",n="[1-9]\\d*",i="[1-9]\\d{0,2}(\\"+t.thousands_separator+"\\d{3})*",o=["0",n,i],u="("+o.join("|")+")?",s="(\\"+t.decimal_separator+"\\d{2})?",a=u+s;return t.allow_negatives&&!t.parens_for_negatives&&(t.negative_sign_after_digits?a+=r:t.negative_sign_before_digits&&(a=r+a)),t.allow_negative_sign_placeholder?a="( (?!\\-))?"+a:t.allow_space_after_symbol?a=" ?"+a:t.allow_space_after_digits&&(a+="( (?!$))?"),t.symbol_after_digits?a+=e:a=e+a,t.allow_negatives&&(t.parens_for_negatives?a="(\\("+a+"\\)|"+a+")":t.negative_sign_before_digits||t.negative_sign_after_digits||(a=r+a)),new RegExp("^(?!-? )(?=.*\\d)"+a+"$")}t={version:"4.0.5"};var n=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i,i=/^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i,o=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i,u=/^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*$/i,s=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\.\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\.\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\s]*<(.+)>$/i,a=/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,l=/^[A-Z]{2}[0-9A-Z]{9}[0-9]$/,f=/^(?:[0-9]{9}X|[0-9]{10})$/,c=/^(?:[0-9]{13})$/,p=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/,g=/^[0-9A-F]{1,4}$/i,F={3:/^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,4:/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,5:/^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,all:/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i},d=/^[A-Z]+$/i,_=/^[0-9A-Z]+$/i,x=/^[-+]?[0-9]+$/,h=/^(?:[-+]?(?:0|[1-9][0-9]*))$/,v=/^(?:[-+]?(?:[0-9]+))?(?:\.[0-9]*)?(?:[eE][\+\-]?(?:[0-9]+))?$/,A=/^[0-9A-F]+$/i,m=/^[-+]?([0-9]+|\.[0-9]+|[0-9]+\.[0-9]+)$/,$=/^#?([0-9A-F]{3}|[0-9A-F]{6})$/i,w=/^[\x00-\x7F]+$/,b=/[^\x00-\x7F]/,D=/[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/,y=/[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/,E=/[\uD800-\uDBFF][\uDC00-\uDFFF]/,I=/^(?:[A-Z0-9+\/]{4})*(?:[A-Z0-9+\/]{2}==|[A-Z0-9+\/]{3}=|[A-Z0-9+\/]{4})$/i,O={"zh-CN":/^(\+?0?86\-?)?1[345789]\d{9}$/,"en-ZA":/^(\+?27|0)\d{9}$/,"en-AU":/^(\+?61|0)4\d{8}$/,"en-HK":/^(\+?852\-?)?[569]\d{3}\-?\d{4}$/,"fr-FR":/^(\+?33|0)[67]\d{8}$/,"pt-PT":/^(\+351)?9[1236]\d{7}$/,"el-GR":/^(\+30)?((2\d{9})|(69\d{8}))$/,"en-GB":/^(\+?44|0)7\d{9}$/,"en-US":/^(\+?1)?[2-9]\d{2}[2-9](?!11)\d{6}$/,"en-ZM":/^(\+26)?09[567]\d{7}$/,"ru-RU":/^(\+?7|8)?9\d{9}$/},C=/^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/;t.extend=function(e,r){t[e]=function(){var e=Array.prototype.slice.call(arguments);return e[0]=t.toString(e[0]),r.apply(t,e)}},t.init=function(){for(var e in t)"function"==typeof t[e]&&"toString"!==e&&"toDate"!==e&&"extend"!==e&&"init"!==e&&t.extend(e,t[e])},t.toString=function(t){return"object"==typeof t&&null!==t&&t.toString?t=t.toString():null===t||"undefined"==typeof t||isNaN(t)&&!t.length?t="":"string"!=typeof t&&(t+=""),t},t.toDate=function(t){return"[object Date]"===Object.prototype.toString.call(t)?t:(t=Date.parse(t),isNaN(t)?null:new Date(t))},t.toFloat=function(t){return parseFloat(t)},t.toInt=function(t,e){return parseInt(t,e||10)},t.toBoolean=function(t,e){return e?"1"===t||"true"===t:"0"!==t&&"false"!==t&&""!==t},t.equals=function(e,r){return e===t.toString(r)},t.contains=function(e,r){return e.indexOf(t.toString(r))>=0},t.matches=function(t,e,r){return"[object RegExp]"!==Object.prototype.toString.call(e)&&(e=new RegExp(e,r)),e.test(t)};var S={allow_display_name:!1,allow_utf8_local_part:!0,require_tld:!0};t.isEmail=function(r,a){if(a=e(a,S),a.allow_display_name){var l=r.match(s);l&&(r=l[1])}var f=r.split("@"),c=f.pop(),p=f.join("@"),g=c.toLowerCase();if(("gmail.com"===g||"googlemail.com"===g)&&(p=p.replace(/\./g,"").toLowerCase()),!t.isByteLength(p,0,64)||!t.isByteLength(c,0,256))return!1;if(!t.isFQDN(c,{require_tld:a.require_tld}))return!1;if('"'===p[0])return p=p.slice(1,p.length-1),a.allow_utf8_local_part?u.test(p):i.test(p);for(var F=a.allow_utf8_local_part?o:n,d=p.split("."),_=0;_<d.length;_++)if(!F.test(d[_]))return!1;return!0};var N={protocols:["http","https","ftp"],require_tld:!0,require_protocol:!1,require_valid_protocol:!0,allow_underscores:!1,allow_trailing_dot:!1,allow_protocol_relative_urls:!1};t.isURL=function(r,n){if(!r||r.length>=2083||/\s/.test(r))return!1;if(0===r.indexOf("mailto:"))return!1;n=e(n,N);var i,o,u,s,a,l,f;if(f=r.split("://"),f.length>1){if(i=f.shift(),n.require_valid_protocol&&-1===n.protocols.indexOf(i))return!1}else{if(n.require_protocol)return!1;n.allow_protocol_relative_urls&&"//"===r.substr(0,2)&&(f[0]=r.substr(2))}return r=f.join("://"),f=r.split("#"),r=f.shift(),f=r.split("?"),r=f.shift(),f=r.split("/"),r=f.shift(),f=r.split("@"),f.length>1&&(o=f.shift(),o.indexOf(":")>=0&&o.split(":").length>2)?!1:(s=f.join("@"),f=s.split(":"),u=f.shift(),f.length&&(l=f.join(":"),a=parseInt(l,10),!/^[0-9]+$/.test(l)||0>=a||a>65535)?!1:t.isIP(u)||t.isFQDN(u,n)||"localhost"===u?n.host_whitelist&&-1===n.host_whitelist.indexOf(u)?!1:n.host_blacklist&&-1!==n.host_blacklist.indexOf(u)?!1:!0:!1)},t.isIP=function(e,r){if(r=t.toString(r),!r)return t.isIP(e,4)||t.isIP(e,6);if("4"===r){if(!p.test(e))return!1;var n=e.split(".").sort(function(t,e){return t-e});return n[3]<=255}if("6"===r){var i=e.split(":"),o=!1,u=t.isIP(i[i.length-1],4),s=u?7:8;if(i.length>s)return!1;if("::"===e)return!0;"::"===e.substr(0,2)?(i.shift(),i.shift(),o=!0):"::"===e.substr(e.length-2)&&(i.pop(),i.pop(),o=!0);for(var a=0;a<i.length;++a)if(""===i[a]&&a>0&&a<i.length-1){if(o)return!1;o=!0}else if(u&&a==i.length-1);else if(!g.test(i[a]))return!1;return o?i.length>=1:i.length===s}return!1};var B={require_tld:!0,allow_underscores:!1,allow_trailing_dot:!1};t.isFQDN=function(t,r){r=e(r,B),r.allow_trailing_dot&&"."===t[t.length-1]&&(t=t.substring(0,t.length-1));var n=t.split(".");if(r.require_tld){var i=n.pop();if(!n.length||!/^([a-z\u00a1-\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(i))return!1}for(var o,u=0;u<n.length;u++){if(o=n[u],r.allow_underscores){if(o.indexOf("__")>=0)return!1;o=o.replace(/_/g,"")}if(!/^[a-z\u00a1-\uffff0-9-]+$/i.test(o))return!1;if(/[\uff01-\uff5e]/.test(o))return!1;if("-"===o[0]||"-"===o[o.length-1]||o.indexOf("---")>=0)return!1}return!0},t.isBoolean=function(t){return["true","false","1","0"].indexOf(t)>=0},t.isAlpha=function(t){return d.test(t)},t.isAlphanumeric=function(t){return _.test(t)},t.isNumeric=function(t){return x.test(t)},t.isDecimal=function(t){return""!==t&&m.test(t)},t.isHexadecimal=function(t){return A.test(t)},t.isHexColor=function(t){return $.test(t)},t.isLowercase=function(t){return t===t.toLowerCase()},t.isUppercase=function(t){return t===t.toUpperCase()},t.isInt=function(t,e){return e=e||{},h.test(t)&&(!e.hasOwnProperty("min")||t>=e.min)&&(!e.hasOwnProperty("max")||t<=e.max)},t.isFloat=function(t,e){return e=e||{},""!==t&&v.test(t)&&(!e.hasOwnProperty("min")||t>=e.min)&&(!e.hasOwnProperty("max")||t<=e.max)},t.isDivisibleBy=function(e,r){return t.toFloat(e)%t.toInt(r)===0},t.isNull=function(t){return 0===t.length},t.isLength=function(t,e,r){var n=t.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g)||[],i=t.length-n.length;return i>=e&&("undefined"==typeof r||r>=i)},t.isByteLength=function(t,e,r){var n=encodeURI(t).split(/%..|./).length-1;return n>=e&&("undefined"==typeof r||r>=n)},t.isUUID=function(t,e){var r=F[e?e:"all"];return r&&r.test(t)},t.isDate=function(t){return!isNaN(Date.parse(t))},t.isAfter=function(e,r){var n=t.toDate(r||new Date),i=t.toDate(e);return!!(i&&n&&i>n)},t.isBefore=function(e,r){var n=t.toDate(r||new Date),i=t.toDate(e);return i&&n&&n>i},t.isIn=function(e,r){var n;if("[object Array]"===Object.prototype.toString.call(r)){var i=[];for(n in r)i[n]=t.toString(r[n]);return i.indexOf(e)>=0}return"object"==typeof r?r.hasOwnProperty(e):r&&"function"==typeof r.indexOf?r.indexOf(e)>=0:!1},t.isCreditCard=function(t){var e=t.replace(/[^0-9]+/g,"");if(!a.test(e))return!1;for(var r,n,i,o=0,u=e.length-1;u>=0;u--)r=e.substring(u,u+1),n=parseInt(r,10),i?(n*=2,o+=n>=10?n%10+1:n):o+=n,i=!i;return!!(o%10===0?e:!1)},t.isISIN=function(t){if(!l.test(t))return!1;for(var e,r,n=t.replace(/[A-Z]/g,function(t){return parseInt(t,36)}),i=0,o=!0,u=n.length-2;u>=0;u--)e=n.substring(u,u+1),r=parseInt(e,10),o?(r*=2,i+=r>=10?r+1:r):i+=r,o=!o;return parseInt(t.substr(t.length-1),10)===(1e4-i)%10},t.isISBN=function(e,r){if(r=t.toString(r),!r)return t.isISBN(e,10)||t.isISBN(e,13);var n,i=e.replace(/[\s-]+/g,""),o=0;if("10"===r){if(!f.test(i))return!1;for(n=0;9>n;n++)o+=(n+1)*i.charAt(n);if(o+="X"===i.charAt(9)?100:10*i.charAt(9),o%11===0)return!!i}else if("13"===r){if(!c.test(i))return!1;var u=[1,3];for(n=0;12>n;n++)o+=u[n%2]*i.charAt(n);if(i.charAt(12)-(10-o%10)%10===0)return!!i}return!1},t.isMobilePhone=function(t,e){return e in O?O[e].test(t):!1};var j={symbol:"$",require_symbol:!1,allow_space_after_symbol:!1,symbol_after_digits:!1,allow_negatives:!0,parens_for_negatives:!1,negative_sign_before_digits:!1,negative_sign_after_digits:!1,allow_negative_sign_placeholder:!1,thousands_separator:",",decimal_separator:".",allow_space_after_digits:!1};t.isCurrency=function(t,n){return n=e(n,j),r(n).test(t)},t.isJSON=function(t){try{var e=JSON.parse(t);return!!e&&"object"==typeof e}catch(r){}return!1},t.isMultibyte=function(t){return b.test(t)},t.isAscii=function(t){return w.test(t)},t.isFullWidth=function(t){return D.test(t)},t.isHalfWidth=function(t){return y.test(t)},t.isVariableWidth=function(t){return D.test(t)&&y.test(t)},t.isSurrogatePair=function(t){return E.test(t)},t.isBase64=function(t){return I.test(t)},t.isMongoId=function(e){return t.isHexadecimal(e)&&24===e.length},t.isISO8601=function(t){return C.test(t)},t.ltrim=function(t,e){var r=e?new RegExp("^["+e+"]+","g"):/^\s+/g;return t.replace(r,"")},t.rtrim=function(t,e){var r=e?new RegExp("["+e+"]+$","g"):/\s+$/g;return t.replace(r,"")},t.trim=function(t,e){var r=e?new RegExp("^["+e+"]+|["+e+"]+$","g"):/^\s+|\s+$/g;return t.replace(r,"")},t.escape=function(t){return t.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\//g,"&#x2F;").replace(/\`/g,"&#96;")},t.stripLow=function(e,r){var n=r?"\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F":"\\x00-\\x1F\\x7F";return t.blacklist(e,n)},t.whitelist=function(t,e){return t.replace(new RegExp("[^"+e+"]+","g"),"")},t.blacklist=function(t,e){return t.replace(new RegExp("["+e+"]+","g"),"")};var q={lowercase:!0};return t.normalizeEmail=function(r,n){if(n=e(n,q),!t.isEmail(r))return!1;var i=r.split("@",2);if(i[1]=i[1].toLowerCase(),"gmail.com"===i[1]||"googlemail.com"===i[1]){if(i[0]=i[0].toLowerCase().replace(/\./g,""),"+"===i[0][0])return!1;i[0]=i[0].split("+")[0],i[1]="gmail.com"}else n.lowercase&&(i[0]=i[0].toLowerCase());return i.join("@")},t.init(),t});
</script>
<script>
!function(t,e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e(require("jquery")):e(t.jQuery)}(this,function(t){function e(t){if(t in p.style)return t;for(var e=["Moz","Webkit","O","ms"],n=t.charAt(0).toUpperCase()+t.substr(1),i=0;i<e.length;++i){var r=e[i]+n;if(r in p.style)return r}}function n(){return p.style[d.transform]="",p.style[d.transform]="rotateY(90deg)",""!==p.style[d.transform]}function i(t){return"string"==typeof t&&this.parse(t),this}function r(t,e,n){e===!0?t.queue(n):e?t.queue(e,n):t.each(function(){n.call(this)})}function s(e){var n=[];return t.each(e,function(e){e=t.camelCase(e),e=t.transit.propertyMap[e]||t.cssProps[e]||e,e=u(e),d[e]&&(e=u(d[e])),-1===t.inArray(e,n)&&n.push(e)}),n}function a(e,n,i,r){var a=s(e);t.cssEase[i]&&(i=t.cssEase[i]);var o=""+f(n)+" "+i;parseInt(r,10)>0&&(o+=" "+f(r));var u=[];return t.each(a,function(t,e){u.push(e+" "+o)}),u.join(", ")}function o(e,n){n||(t.cssNumber[e]=!0),t.transit.propertyMap[e]=d.transform,t.cssHooks[e]={get:function(n){var i=t(n).css("transit:transform");return i.get(e)},set:function(n,i){var r=t(n).css("transit:transform");r.setFromString(e,i),t(n).css({"transit:transform":r})}}}function u(t){return t.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}function c(t,e){return"string"!=typeof t||t.match(/^[\-0-9\.]+$/)?""+t+e:t}function f(e){var n=e;return"string"!=typeof n||n.match(/^[\-0-9\.]+/)||(n=t.fx.speeds[n]||t.fx.speeds._default),c(n,"ms")}t.transit={version:"0.9.12",propertyMap:{marginLeft:"margin",marginRight:"margin",marginBottom:"margin",marginTop:"margin",paddingLeft:"padding",paddingRight:"padding",paddingBottom:"padding",paddingTop:"padding"},enabled:!0,useTransitionEnd:!1};var p=document.createElement("div"),d={},l=navigator.userAgent.toLowerCase().indexOf("chrome")>-1;d.transition=e("transition"),d.transitionDelay=e("transitionDelay"),d.transform=e("transform"),d.transformOrigin=e("transformOrigin"),d.filter=e("Filter"),d.transform3d=n();var h={transition:"transitionend",MozTransition:"transitionend",OTransition:"oTransitionEnd",WebkitTransition:"webkitTransitionEnd",msTransition:"MSTransitionEnd"},b=d.transitionEnd=h[d.transition]||null;for(var y in d)d.hasOwnProperty(y)&&"undefined"==typeof t.support[y]&&(t.support[y]=d[y]);return p=null,t.cssEase={_default:"ease","in":"ease-in",out:"ease-out","in-out":"ease-in-out",snap:"cubic-bezier(0,1,.5,1)",easeInCubic:"cubic-bezier(.550,.055,.675,.190)",easeOutCubic:"cubic-bezier(.215,.61,.355,1)",easeInOutCubic:"cubic-bezier(.645,.045,.355,1)",easeInCirc:"cubic-bezier(.6,.04,.98,.335)",easeOutCirc:"cubic-bezier(.075,.82,.165,1)",easeInOutCirc:"cubic-bezier(.785,.135,.15,.86)",easeInExpo:"cubic-bezier(.95,.05,.795,.035)",easeOutExpo:"cubic-bezier(.19,1,.22,1)",easeInOutExpo:"cubic-bezier(1,0,0,1)",easeInQuad:"cubic-bezier(.55,.085,.68,.53)",easeOutQuad:"cubic-bezier(.25,.46,.45,.94)",easeInOutQuad:"cubic-bezier(.455,.03,.515,.955)",easeInQuart:"cubic-bezier(.895,.03,.685,.22)",easeOutQuart:"cubic-bezier(.165,.84,.44,1)",easeInOutQuart:"cubic-bezier(.77,0,.175,1)",easeInQuint:"cubic-bezier(.755,.05,.855,.06)",easeOutQuint:"cubic-bezier(.23,1,.32,1)",easeInOutQuint:"cubic-bezier(.86,0,.07,1)",easeInSine:"cubic-bezier(.47,0,.745,.715)",easeOutSine:"cubic-bezier(.39,.575,.565,1)",easeInOutSine:"cubic-bezier(.445,.05,.55,.95)",easeInBack:"cubic-bezier(.6,-.28,.735,.045)",easeOutBack:"cubic-bezier(.175, .885,.32,1.275)",easeInOutBack:"cubic-bezier(.68,-.55,.265,1.55)"},t.cssHooks["transit:transform"]={get:function(e){return t(e).data("transform")||new i},set:function(e,n){var r=n;r instanceof i||(r=new i(r)),e.style[d.transform]="WebkitTransform"!==d.transform||l?r.toString():r.toString(!0),t(e).data("transform",r)}},t.cssHooks.transform={set:t.cssHooks["transit:transform"].set},t.cssHooks.filter={get:function(t){return t.style[d.filter]},set:function(t,e){t.style[d.filter]=e}},t.fn.jquery<"1.8"&&(t.cssHooks.transformOrigin={get:function(t){return t.style[d.transformOrigin]},set:function(t,e){t.style[d.transformOrigin]=e}},t.cssHooks.transition={get:function(t){return t.style[d.transition]},set:function(t,e){t.style[d.transition]=e}}),o("scale"),o("scaleX"),o("scaleY"),o("translate"),o("rotate"),o("rotateX"),o("rotateY"),o("rotate3d"),o("perspective"),o("skewX"),o("skewY"),o("x",!0),o("y",!0),i.prototype={setFromString:function(t,e){var n="string"==typeof e?e.split(","):e.constructor===Array?e:[e];n.unshift(t),i.prototype.set.apply(this,n)},set:function(t){var e=Array.prototype.slice.apply(arguments,[1]);this.setter[t]?this.setter[t].apply(this,e):this[t]=e.join(",")},get:function(t){return this.getter[t]?this.getter[t].apply(this):this[t]||0},setter:{rotate:function(t){this.rotate=c(t,"deg")},rotateX:function(t){this.rotateX=c(t,"deg")},rotateY:function(t){this.rotateY=c(t,"deg")},scale:function(t,e){void 0===e&&(e=t),this.scale=t+","+e},skewX:function(t){this.skewX=c(t,"deg")},skewY:function(t){this.skewY=c(t,"deg")},perspective:function(t){this.perspective=c(t,"px")},x:function(t){this.set("translate",t,null)},y:function(t){this.set("translate",null,t)},translate:function(t,e){void 0===this._translateX&&(this._translateX=0),void 0===this._translateY&&(this._translateY=0),null!==t&&void 0!==t&&(this._translateX=c(t,"px")),null!==e&&void 0!==e&&(this._translateY=c(e,"px")),this.translate=this._translateX+","+this._translateY}},getter:{x:function(){return this._translateX||0},y:function(){return this._translateY||0},scale:function(){var t=(this.scale||"1,1").split(",");return t[0]&&(t[0]=parseFloat(t[0])),t[1]&&(t[1]=parseFloat(t[1])),t[0]===t[1]?t[0]:t},rotate3d:function(){for(var t=(this.rotate3d||"0,0,0,0deg").split(","),e=0;3>=e;++e)t[e]&&(t[e]=parseFloat(t[e]));return t[3]&&(t[3]=c(t[3],"deg")),t}},parse:function(t){var e=this;t.replace(/([a-zA-Z0-9]+)\((.*?)\)/g,function(t,n,i){e.setFromString(n,i)})},toString:function(t){var e=[];for(var n in this)if(this.hasOwnProperty(n)){if(!d.transform3d&&("rotateX"===n||"rotateY"===n||"perspective"===n||"transformOrigin"===n))continue;"_"!==n[0]&&e.push(t&&"scale"===n?n+"3d("+this[n]+",1)":t&&"translate"===n?n+"3d("+this[n]+",0)":n+"("+this[n]+")")}return e.join(" ")}},t.fn.transition=t.fn.transit=function(e,n,i,s){var o=this,u=0,c=!0,p=t.extend(!0,{},e);"function"==typeof n&&(s=n,n=void 0),"object"==typeof n&&(i=n.easing,u=n.delay||0,c="undefined"==typeof n.queue?!0:n.queue,s=n.complete,n=n.duration),"function"==typeof i&&(s=i,i=void 0),"undefined"!=typeof p.easing&&(i=p.easing,delete p.easing),"undefined"!=typeof p.duration&&(n=p.duration,delete p.duration),"undefined"!=typeof p.complete&&(s=p.complete,delete p.complete),"undefined"!=typeof p.queue&&(c=p.queue,delete p.queue),"undefined"!=typeof p.delay&&(u=p.delay,delete p.delay),"undefined"==typeof n&&(n=t.fx.speeds._default),"undefined"==typeof i&&(i=t.cssEase._default),n=f(n);var l=a(p,n,i,u),h=t.transit.enabled&&d.transition,y=h?parseInt(n,10)+parseInt(u,10):0;if(0===y){var g=function(t){o.css(p),s&&s.apply(o),t&&t()};return r(o,c,g),o}var m={},v=function(e){var n=!1,i=function(){n&&o.unbind(b,i),y>0&&o.each(function(){this.style[d.transition]=m[this]||null}),"function"==typeof s&&s.apply(o),"function"==typeof e&&e()};y>0&&b&&t.transit.useTransitionEnd?(n=!0,o.bind(b,i)):window.setTimeout(i,y),o.each(function(){y>0&&(this.style[d.transition]=l),t(this).css(p)})},z=function(t){this.offsetWidth,v(t)};return r(o,c,z),this},t.transit.getTransitionValue=a,t});
</script>
<script>
Date.prototype.getMonthName=function(){var month_names=['January','February','March','April','May','June','July','August','September','October','November','December'];return month_names[this.getMonth()];}
Date.prototype.getMonthAbbr=function(){var month_abbrs=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];return month_abbrs[this.getMonth()];}
Date.prototype.getDayFull=function(){var days_full=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];return days_full[this.getDay()];};Date.prototype.getDayAbbr=function(){var days_abbr=['Sun','Mon','Tue','Wed','Thur','Fri','Sat'];return days_abbr[this.getDay()];};Date.prototype.getDayOfYear=function(){var onejan=new Date(this.getFullYear(),0,1);return Math.ceil((this-onejan)/86400000);};Date.prototype.getDaySuffix=function(){var d=this.getDate();var sfx=["th","st","nd","rd"];var val=d%100;return(sfx[(val-20)%10]||sfx[val]||sfx[0]);};Date.prototype.getWeekOfYear=function(){var onejan=new Date(this.getFullYear(),0,1);return Math.ceil((((this-onejan)/86400000)+onejan.getDay()+1)/7);}
Date.prototype.isLeapYear=function(){var yr=this.getFullYear();if((parseInt(yr)%4)==0){if(parseInt(yr)%100==0){if(parseInt(yr)%400!=0){return false;}
if(parseInt(yr)%400==0){return true;}}
if(parseInt(yr)%100!=0){return true;}}
if((parseInt(yr)%4)!=0){return false;}};Date.prototype.getMonthDayCount=function(){var month_day_counts=[31,this.isLeapYear()?29:28,31,30,31,30,31,31,30,31,30,31];return month_day_counts[this.getMonth()];}
Date.prototype.format=function(dateFormat){dateFormat=dateFormat.split("");var date=this.getDate(),month=this.getMonth(),hours=this.getHours(),minutes=this.getMinutes(),seconds=this.getSeconds();var date_props={d:date<10?'0'+date:date,D:this.getDayAbbr(),j:this.getDate(),l:this.getDayFull(),S:this.getDaySuffix(),w:this.getDay(),z:this.getDayOfYear(),W:this.getWeekOfYear(),F:this.getMonthName(),m:month<10?'0'+(month+1):month+1,M:this.getMonthAbbr(),n:month+1,t:this.getMonthDayCount(),L:this.isLeapYear()?'1':'0',Y:this.getFullYear(),y:this.getFullYear()+''.substring(2,4),a:hours>12?'pm':'am',A:hours>12?'PM':'AM',g:hours%12>0?hours%12:12,G:hours>0?hours:"12",h:hours%12>0?hours%12:12,H:hours,i:minutes<10?'0'+minutes:minutes,s:seconds<10?'0'+seconds:seconds};var date_string="";for(var i=0;i<dateFormat.length;i++){var f=dateFormat[i];if(f.match(/[a-zA-Z]/g)){date_string+=date_props[f]?date_props[f]:'';}else{date_string+=f;}}
return date_string;};
</script>
<script id="swiper-js-inline-embed">
/**
* Swiper 8.2.4
* Most modern mobile touch slider and framework with hardware accelerated transitions
* https://swiperjs.com
*
* Copyright 2014-2022 Vladimir Kharlampidi
*
* Released under the MIT License
*
* Released on: June 13, 2022
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Swiper=t()}(this,(function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}class n extends Array{constructor(e){"number"==typeof e?super(e):(super(...e||[]),function(e){const t=e.__proto__;Object.defineProperty(e,"__proto__",{get:()=>t,set(e){t.__proto__=e}})}(this))}}function l(e){void 0===e&&(e=[]);const t=[];return e.forEach((e=>{Array.isArray(e)?t.push(...l(e)):t.push(e)})),t}function o(e,t){return Array.prototype.filter.call(e,t)}function d(e,t){const s=r(),i=a();let l=[];if(!t&&e instanceof n)return e;if(!e)return new n(l);if("string"==typeof e){const s=e.trim();if(s.indexOf("<")>=0&&s.indexOf(">")>=0){let e="div";0===s.indexOf("<li")&&(e="ul"),0===s.indexOf("<tr")&&(e="tbody"),0!==s.indexOf("<td")&&0!==s.indexOf("<th")||(e="tr"),0===s.indexOf("<tbody")&&(e="table"),0===s.indexOf("<option")&&(e="select");const t=i.createElement(e);t.innerHTML=s;for(let e=0;e<t.childNodes.length;e+=1)l.push(t.childNodes[e])}else l=function(e,t){if("string"!=typeof e)return[e];const s=[],a=t.querySelectorAll(e);for(let e=0;e<a.length;e+=1)s.push(a[e]);return s}(e.trim(),t||i)}else if(e.nodeType||e===s||e===i)l.push(e);else if(Array.isArray(e)){if(e instanceof n)return e;l=e}return new n(function(e){const t=[];for(let s=0;s<e.length;s+=1)-1===t.indexOf(e[s])&&t.push(e[s]);return t}(l))}d.fn=n.prototype;const c={addClass:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];const a=l(t.map((e=>e.split(" "))));return this.forEach((e=>{e.classList.add(...a)})),this},removeClass:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];const a=l(t.map((e=>e.split(" "))));return this.forEach((e=>{e.classList.remove(...a)})),this},hasClass:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];const a=l(t.map((e=>e.split(" "))));return o(this,(e=>a.filter((t=>e.classList.contains(t))).length>0)).length>0},toggleClass:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];const a=l(t.map((e=>e.split(" "))));this.forEach((e=>{a.forEach((t=>{e.classList.toggle(t)}))}))},attr:function(e,t){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(let s=0;s<this.length;s+=1)if(2===arguments.length)this[s].setAttribute(e,t);else for(const t in e)this[s][t]=e[t],this[s].setAttribute(t,e[t]);return this},removeAttr:function(e){for(let t=0;t<this.length;t+=1)this[t].removeAttribute(e);return this},transform:function(e){for(let t=0;t<this.length;t+=1)this[t].style.transform=e;return this},transition:function(e){for(let t=0;t<this.length;t+=1)this[t].style.transitionDuration="string"!=typeof e?`${e}ms`:e;return this},on:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];let[a,i,r,n]=t;function l(e){const t=e.target;if(!t)return;const s=e.target.dom7EventData||[];if(s.indexOf(e)<0&&s.unshift(e),d(t).is(i))r.apply(t,s);else{const e=d(t).parents();for(let t=0;t<e.length;t+=1)d(e[t]).is(i)&&r.apply(e[t],s)}}function o(e){const t=e&&e.target&&e.target.dom7EventData||[];t.indexOf(e)<0&&t.unshift(e),r.apply(this,t)}"function"==typeof t[1]&&([a,r,n]=t,i=void 0),n||(n=!1);const c=a.split(" ");let p;for(let e=0;e<this.length;e+=1){const t=this[e];if(i)for(p=0;p<c.length;p+=1){const e=c[p];t.dom7LiveListeners||(t.dom7LiveListeners={}),t.dom7LiveListeners[e]||(t.dom7LiveListeners[e]=[]),t.dom7LiveListeners[e].push({listener:r,proxyListener:l}),t.addEventListener(e,l,n)}else for(p=0;p<c.length;p+=1){const e=c[p];t.dom7Listeners||(t.dom7Listeners={}),t.dom7Listeners[e]||(t.dom7Listeners[e]=[]),t.dom7Listeners[e].push({listener:r,proxyListener:o}),t.addEventListener(e,o,n)}}return this},off:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];let[a,i,r,n]=t;"function"==typeof t[1]&&([a,r,n]=t,i=void 0),n||(n=!1);const l=a.split(" ");for(let e=0;e<l.length;e+=1){const t=l[e];for(let e=0;e<this.length;e+=1){const s=this[e];let a;if(!i&&s.dom7Listeners?a=s.dom7Listeners[t]:i&&s.dom7LiveListeners&&(a=s.dom7LiveListeners[t]),a&&a.length)for(let e=a.length-1;e>=0;e-=1){const i=a[e];r&&i.listener===r||r&&i.listener&&i.listener.dom7proxy&&i.listener.dom7proxy===r?(s.removeEventListener(t,i.proxyListener,n),a.splice(e,1)):r||(s.removeEventListener(t,i.proxyListener,n),a.splice(e,1))}}}return this},trigger:function(){const e=r();for(var t=arguments.length,s=new Array(t),a=0;a<t;a++)s[a]=arguments[a];const i=s[0].split(" "),n=s[1];for(let t=0;t<i.length;t+=1){const a=i[t];for(let t=0;t<this.length;t+=1){const i=this[t];if(e.CustomEvent){const t=new e.CustomEvent(a,{detail:n,bubbles:!0,cancelable:!0});i.dom7EventData=s.filter(((e,t)=>t>0)),i.dispatchEvent(t),i.dom7EventData=[],delete i.dom7EventData}}}return this},transitionEnd:function(e){const t=this;return e&&t.on("transitionend",(function s(a){a.target===this&&(e.call(this,a),t.off("transitionend",s))})),this},outerWidth:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetWidth+parseFloat(e.getPropertyValue("margin-right"))+parseFloat(e.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},outerHeight:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetHeight+parseFloat(e.getPropertyValue("margin-top"))+parseFloat(e.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},styles:function(){const e=r();return this[0]?e.getComputedStyle(this[0],null):{}},offset:function(){if(this.length>0){const e=r(),t=a(),s=this[0],i=s.getBoundingClientRect(),n=t.body,l=s.clientTop||n.clientTop||0,o=s.clientLeft||n.clientLeft||0,d=s===e?e.scrollY:s.scrollTop,c=s===e?e.scrollX:s.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}return null},css:function(e,t){const s=r();let a;if(1===arguments.length){if("string"!=typeof e){for(a=0;a<this.length;a+=1)for(const t in e)this[a].style[t]=e[t];return this}if(this[0])return s.getComputedStyle(this[0],null).getPropertyValue(e)}if(2===arguments.length&&"string"==typeof e){for(a=0;a<this.length;a+=1)this[a].style[e]=t;return this}return this},each:function(e){return e?(this.forEach(((t,s)=>{e.apply(t,[t,s])})),this):this},html:function(e){if(void 0===e)return this[0]?this[0].innerHTML:null;for(let t=0;t<this.length;t+=1)this[t].innerHTML=e;return this},text:function(e){if(void 0===e)return this[0]?this[0].textContent.trim():null;for(let t=0;t<this.length;t+=1)this[t].textContent=e;return this},is:function(e){const t=r(),s=a(),i=this[0];let l,o;if(!i||void 0===e)return!1;if("string"==typeof e){if(i.matches)return i.matches(e);if(i.webkitMatchesSelector)return i.webkitMatchesSelector(e);if(i.msMatchesSelector)return i.msMatchesSelector(e);for(l=d(e),o=0;o<l.length;o+=1)if(l[o]===i)return!0;return!1}if(e===s)return i===s;if(e===t)return i===t;if(e.nodeType||e instanceof n){for(l=e.nodeType?[e]:e,o=0;o<l.length;o+=1)if(l[o]===i)return!0;return!1}return!1},index:function(){let e,t=this[0];if(t){for(e=0;null!==(t=t.previousSibling);)1===t.nodeType&&(e+=1);return e}},eq:function(e){if(void 0===e)return this;const t=this.length;if(e>t-1)return d([]);if(e<0){const s=t+e;return d(s<0?[]:[this[s]])}return d([this[e]])},append:function(){let e;const t=a();for(let s=0;s<arguments.length;s+=1){e=s<0||arguments.length<=s?void 0:arguments[s];for(let s=0;s<this.length;s+=1)if("string"==typeof e){const a=t.createElement("div");for(a.innerHTML=e;a.firstChild;)this[s].appendChild(a.firstChild)}else if(e instanceof n)for(let t=0;t<e.length;t+=1)this[s].appendChild(e[t]);else this[s].appendChild(e)}return this},prepend:function(e){const t=a();let s,i;for(s=0;s<this.length;s+=1)if("string"==typeof e){const a=t.createElement("div");for(a.innerHTML=e,i=a.childNodes.length-1;i>=0;i-=1)this[s].insertBefore(a.childNodes[i],this[s].childNodes[0])}else if(e instanceof n)for(i=0;i<e.length;i+=1)this[s].insertBefore(e[i],this[s].childNodes[0]);else this[s].insertBefore(e,this[s].childNodes[0]);return this},next:function(e){return this.length>0?e?this[0].nextElementSibling&&d(this[0].nextElementSibling).is(e)?d([this[0].nextElementSibling]):d([]):this[0].nextElementSibling?d([this[0].nextElementSibling]):d([]):d([])},nextAll:function(e){const t=[];let s=this[0];if(!s)return d([]);for(;s.nextElementSibling;){const a=s.nextElementSibling;e?d(a).is(e)&&t.push(a):t.push(a),s=a}return d(t)},prev:function(e){if(this.length>0){const t=this[0];return e?t.previousElementSibling&&d(t.previousElementSibling).is(e)?d([t.previousElementSibling]):d([]):t.previousElementSibling?d([t.previousElementSibling]):d([])}return d([])},prevAll:function(e){const t=[];let s=this[0];if(!s)return d([]);for(;s.previousElementSibling;){const a=s.previousElementSibling;e?d(a).is(e)&&t.push(a):t.push(a),s=a}return d(t)},parent:function(e){const t=[];for(let s=0;s<this.length;s+=1)null!==this[s].parentNode&&(e?d(this[s].parentNode).is(e)&&t.push(this[s].parentNode):t.push(this[s].parentNode));return d(t)},parents:function(e){const t=[];for(let s=0;s<this.length;s+=1){let a=this[s].parentNode;for(;a;)e?d(a).is(e)&&t.push(a):t.push(a),a=a.parentNode}return d(t)},closest:function(e){let t=this;return void 0===e?d([]):(t.is(e)||(t=t.parents(e).eq(0)),t)},find:function(e){const t=[];for(let s=0;s<this.length;s+=1){const a=this[s].querySelectorAll(e);for(let e=0;e<a.length;e+=1)t.push(a[e])}return d(t)},children:function(e){const t=[];for(let s=0;s<this.length;s+=1){const a=this[s].children;for(let s=0;s<a.length;s+=1)e&&!d(a[s]).is(e)||t.push(a[s])}return d(t)},filter:function(e){return d(o(this,e))},remove:function(){for(let e=0;e<this.length;e+=1)this[e].parentNode&&this[e].parentNode.removeChild(this[e]);return this}};function p(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function u(){return Date.now()}function h(e,t){void 0===t&&(t="x");const s=r();let a,i,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(i=l.transform||l.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function m(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function f(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function g(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let s=1;s<arguments.length;s+=1){const a=s<0||arguments.length<=s?void 0:arguments[s];if(null!=a&&!f(a)){const s=Object.keys(Object(a)).filter((e=>t.indexOf(e)<0));for(let t=0,i=s.length;t<i;t+=1){const i=s[t],r=Object.getOwnPropertyDescriptor(a,i);void 0!==r&&r.enumerable&&(m(e[i])&&m(a[i])?a[i].__swiper__?e[i]=a[i]:g(e[i],a[i]):!m(e[i])&&m(a[i])?(e[i]={},a[i].__swiper__?e[i]=a[i]:g(e[i],a[i])):e[i]=a[i])}}}return e}function v(e,t,s){e.style.setProperty(t,s)}function w(e){let{swiper:t,targetPosition:s,side:a}=e;const i=r(),n=-t.translate;let l,o=null;const d=t.params.speed;t.wrapperEl.style.scrollSnapType="none",i.cancelAnimationFrame(t.cssModeFrameID);const c=s>n?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}let b,x,y;function E(){return b||(b=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch),passiveListener:function(){let t=!1;try{const s=Object.defineProperty({},"passive",{get(){t=!0}});e.addEventListener("testPassiveListener",null,s)}catch(e){}return t}(),gestures:"ongesturestart"in e}}()),b}function C(e){return void 0===e&&(e={}),x||(x=function(e){let{userAgent:t}=void 0===e?{}:e;const s=E(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),m="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!m&&(l.os="android",l.android=!0),(p||h||u)&&(l.os="ios",l.ios=!0),l}(e)),x}function T(){return y||(y=function(){const e=r();return{isSafari:function(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}(),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),y}Object.keys(c).forEach((e=>{Object.defineProperty(d.fn,e,{value:c[e],writable:!0})}));var $={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n<s;n++)r[n]=arguments[n];t.apply(a,r)}return i.__emitterProxy=t,a.on(e,i,s)},onAny(e,t){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof e)return s;const a=t?"unshift":"push";return s.eventsAnyListeners.indexOf(e)<0&&s.eventsAnyListeners[a](e),s},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const s=t.eventsAnyListeners.indexOf(e);return s>=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n<i;n++)r[n]=arguments[n];"string"==typeof r[0]||Array.isArray(r[0])?(t=r[0],s=r.slice(1,r.length),a=e):(t=r[0].events,s=r[0].data,a=r[0].context||e),s.unshift(a);return(Array.isArray(t)?t:t.split(" ")).forEach((t=>{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};var S={updateSize:function(){const e=this;let t,s;const a=e.$el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:a[0].clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:a[0].clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(a.css("padding-left")||0,10)-parseInt(a.css("padding-right")||0,10),s=s-parseInt(a.css("padding-top")||0,10)-parseInt(a.css("padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))},updateSlides:function(){const e=this;function t(t){return e.isHorizontal()?t:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[t]}function s(e,s){return parseFloat(e.getPropertyValue(t(s))||0)}const a=e.params,{$wrapperEl:i,size:r,rtlTranslate:n,wrongRTL:l}=e,o=e.virtual&&a.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=i.children(`.${e.params.slideClass}`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=a.slidesOffsetBefore;"function"==typeof f&&(f=a.slidesOffsetBefore.call(e));let g=a.slidesOffsetAfter;"function"==typeof g&&(g=a.slidesOffsetAfter.call(e));const w=e.snapGrid.length,b=e.slidesGrid.length;let x=a.spaceBetween,y=-f,E=0,C=0;if(void 0===r)return;"string"==typeof x&&x.indexOf("%")>=0&&(x=parseFloat(x.replace("%",""))/100*r),e.virtualSize=-x,n?c.css({marginLeft:"",marginBottom:"",marginTop:""}):c.css({marginRight:"",marginBottom:"",marginTop:""}),a.centeredSlides&&a.cssMode&&(v(e.wrapperEl,"--swiper-centered-offset-before",""),v(e.wrapperEl,"--swiper-centered-offset-after",""));const T=a.grid&&a.grid.rows>1&&e.grid;let $;T&&e.grid.initSlides(p);const S="auto"===a.slidesPerView&&a.breakpoints&&Object.keys(a.breakpoints).filter((e=>void 0!==a.breakpoints[e].slidesPerView)).length>0;for(let i=0;i<p;i+=1){$=0;const n=c.eq(i);if(T&&e.grid.updateSlide(i,n,p,t),"none"!==n.css("display")){if("auto"===a.slidesPerView){S&&(c[i].style[t("width")]="");const r=getComputedStyle(n[0]),l=n[0].style.transform,o=n[0].style.webkitTransform;if(l&&(n[0].style.transform="none"),o&&(n[0].style.webkitTransform="none"),a.roundLengths)$=e.isHorizontal()?n.outerWidth(!0):n.outerHeight(!0);else{const e=s(r,"width"),t=s(r,"padding-left"),a=s(r,"padding-right"),i=s(r,"margin-left"),l=s(r,"margin-right"),o=r.getPropertyValue("box-sizing");if(o&&"border-box"===o)$=e+i+l;else{const{clientWidth:s,offsetWidth:r}=n[0];$=e+t+a+i+l+(r-s)}}l&&(n[0].style.transform=l),o&&(n[0].style.webkitTransform=o),a.roundLengths&&($=Math.floor($))}else $=(r-(a.slidesPerView-1)*x)/a.slidesPerView,a.roundLengths&&($=Math.floor($)),c[i]&&(c[i].style[t("width")]=`${$}px`);c[i]&&(c[i].swiperSlideSize=$),m.push($),a.centeredSlides?(y=y+$/2+E/2+x,0===E&&0!==i&&(y=y-r/2-x),0===i&&(y=y-r/2-x),Math.abs(y)<.001&&(y=0),a.roundLengths&&(y=Math.floor(y)),C%a.slidesPerGroup==0&&u.push(y),h.push(y)):(a.roundLengths&&(y=Math.floor(y)),(C-Math.min(e.params.slidesPerGroupSkip,C))%e.params.slidesPerGroup==0&&u.push(y),h.push(y),y=y+$+x),e.virtualSize+=$+x,E=$,C+=1}}if(e.virtualSize=Math.max(e.virtualSize,r)+g,n&&l&&("slide"===a.effect||"coverflow"===a.effect)&&i.css({width:`${e.virtualSize+a.spaceBetween}px`}),a.setWrapperSize&&i.css({[t("width")]:`${e.virtualSize+a.spaceBetween}px`}),T&&e.grid.updateWrapperSize($,u,t),!a.centeredSlides){const t=[];for(let s=0;s<u.length;s+=1){let i=u[s];a.roundLengths&&(i=Math.floor(i)),u[s]<=e.virtualSize-r&&t.push(i)}u=t,Math.floor(e.virtualSize-r)-Math.floor(u[u.length-1])>1&&u.push(e.virtualSize-r)}if(0===u.length&&(u=[0]),0!==a.spaceBetween){const s=e.isHorizontal()&&n?"marginLeft":t("marginRight");c.filter(((e,t)=>!a.cssMode||t!==c.length-1)).css({[s]:`${x}px`})}if(a.centeredSlides&&a.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween;const t=e-r;u=u.map((e=>e<0?-f:e>t?t+g:e))}if(a.centerInsufficientSlides){let e=0;if(m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween,e<r){const t=(r-e)/2;u.forEach(((e,s)=>{u[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),a.centeredSlides&&a.cssMode&&!a.centeredSlidesBounds){v(e.wrapperEl,"--swiper-centered-offset-before",-u[0]+"px"),v(e.wrapperEl,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),u.length!==w&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==b&&e.emit("slidesGridLengthChange"),a.watchSlidesProgress&&e.updateSlidesOffset(),!(o||a.cssMode||"slide"!==a.effect&&"fade"!==a.effect)){const t=`${a.containerModifierClass}backface-hidden`,s=e.$el.hasClass(t);p<=a.maxBackfaceHiddenSlides?s||e.$el.addClass(t):s&&e.$el.removeClass(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides.filter((t=>parseInt(t.getAttribute("data-swiper-slide-index"),10)===e))[0]:t.slides.eq(e)[0];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||d([])).each((e=>{s.push(e)}));else for(i=0;i<Math.ceil(t.params.slidesPerView);i+=1){const e=t.activeIndex+i;if(e>t.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;i<s.length;i+=1)if(void 0!==s[i]){const e=s[i].offsetHeight;r=e>r?e:r}(r||0===r)&&t.$wrapperEl.css("height",`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides;for(let s=0;s<t.length;s+=1)t[s].swiperSlideOffset=e.isHorizontal()?t[s].offsetLeft:t[s].offsetTop},updateSlidesProgress:function(e){void 0===e&&(e=this&&this.translate||0);const t=this,s=t.params,{slides:a,rtlTranslate:i,snapGrid:r}=t;if(0===a.length)return;void 0===a[0].swiperSlideOffset&&t.updateSlidesOffset();let n=-e;i&&(n=e),a.removeClass(s.slideVisibleClass),t.visibleSlidesIndexes=[],t.visibleSlides=[];for(let e=0;e<a.length;e+=1){const l=a[e];let o=l.swiperSlideOffset;s.cssMode&&s.centeredSlides&&(o-=a[0].swiperSlideOffset);const d=(n+(s.centeredSlides?t.minTranslate():0)-o)/(l.swiperSlideSize+s.spaceBetween),c=(n-r[0]+(s.centeredSlides?t.minTranslate():0)-o)/(l.swiperSlideSize+s.spaceBetween),p=-(n-o),u=p+t.slidesSizesGrid[e];(p>=0&&p<t.size-1||u>1&&u<=t.size||p<=0&&u>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),a.eq(e).addClass(s.slideVisibleClass)),l.progress=i?-d:d,l.originalProgress=i?-c:c}t.visibleSlides=d(t.visibleSlides)},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n}=t;const l=r,o=n;0===a?(i=0,r=!0,n=!0):(i=(e-t.minTranslate())/a,r=i<=0,n=i>=1),Object.assign(t,{progress:i,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!l&&t.emit("reachBeginning toEdge"),n&&!o&&t.emit("reachEnd toEdge"),(l&&!r||o&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,$wrapperEl:a,activeIndex:i,realIndex:r}=e,n=e.virtual&&s.virtual.enabled;let l;t.removeClass(`${s.slideActiveClass} ${s.slideNextClass} ${s.slidePrevClass} ${s.slideDuplicateActiveClass} ${s.slideDuplicateNextClass} ${s.slideDuplicatePrevClass}`),l=n?e.$wrapperEl.find(`.${s.slideClass}[data-swiper-slide-index="${i}"]`):t.eq(i),l.addClass(s.slideActiveClass),s.loop&&(l.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass));let o=l.nextAll(`.${s.slideClass}`).eq(0).addClass(s.slideNextClass);s.loop&&0===o.length&&(o=t.eq(0),o.addClass(s.slideNextClass));let d=l.prevAll(`.${s.slideClass}`).eq(0).addClass(s.slidePrevClass);s.loop&&0===d.length&&(d=t.eq(-1),d.addClass(s.slidePrevClass)),s.loop&&(o.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass),d.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass)),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{slidesGrid:a,snapGrid:i,params:r,activeIndex:n,realIndex:l,snapIndex:o}=t;let d,c=e;if(void 0===c){for(let e=0;e<a.length;e+=1)void 0!==a[e+1]?s>=a[e]&&s<a[e+1]-(a[e+1]-a[e])/2?c=e:s>=a[e]&&s<a[e+1]&&(c=e+1):s>=a[e]&&(c=e);r.normalizeSlideIndex&&(c<0||void 0===c)&&(c=0)}if(i.indexOf(s)>=0)d=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,c);d=e+Math.floor((c-e)/r.slidesPerGroup)}if(d>=i.length&&(d=i.length-1),c===n)return void(d!==o&&(t.snapIndex=d,t.emit("snapIndexChange")));const p=parseInt(t.slides.eq(c).attr("data-swiper-slide-index")||c,10);Object.assign(t,{snapIndex:d,realIndex:p,previousIndex:n,activeIndex:c}),t.emit("activeIndexChange"),t.emit("snapIndexChange"),l!==p&&t.emit("realIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&t.emit("slideChange")},updateClickedSlide:function(e){const t=this,s=t.params,a=d(e).closest(`.${s.slideClass}`)[0];let i,r=!1;if(a)for(let e=0;e<t.slides.length;e+=1)if(t.slides[e]===a){r=!0,i=e;break}if(!a||!r)return t.clickedSlide=void 0,void(t.clickedIndex=void 0);t.clickedSlide=a,t.virtual&&t.params.virtual.enabled?t.clickedIndex=parseInt(d(a).attr("data-swiper-slide-index"),10):t.clickedIndex=i,s.slideToClickedSlide&&void 0!==t.clickedIndex&&t.clickedIndex!==t.activeIndex&&t.slideToClickedSlide()}};var M={getTranslate:function(e){void 0===e&&(e=this.isHorizontal()?"x":"y");const{params:t,rtlTranslate:s,translate:a,$wrapperEl:i}=this;if(t.virtualTranslate)return s?-a:a;if(t.cssMode)return a;let r=h(i[0],e);return s&&(r=-r),r||0},setTranslate:function(e,t){const s=this,{rtlTranslate:a,params:i,$wrapperEl:r,wrapperEl:n,progress:l}=s;let o,d=0,c=0;s.isHorizontal()?d=a?-e:e:c=e,i.roundLengths&&(d=Math.floor(d),c=Math.floor(c)),i.cssMode?n[s.isHorizontal()?"scrollLeft":"scrollTop"]=s.isHorizontal()?-d:-c:i.virtualTranslate||r.transform(`translate3d(${d}px, ${c}px, 0px)`),s.previousTranslate=s.translate,s.translate=s.isHorizontal()?d:c;const p=s.maxTranslate()-s.minTranslate();o=0===p?0:(e-s.minTranslate())/p,o!==l&&s.updateProgress(e),s.emit("setTranslate",s.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(e,t,s,a,i){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),void 0===a&&(a=!0);const r=this,{params:n,wrapperEl:l}=r;if(r.animating&&n.preventInteractionOnTransition)return!1;const o=r.minTranslate(),d=r.maxTranslate();let c;if(c=a&&e>o?o:a&&e<d?d:e,r.updateProgress(c),n.cssMode){const e=r.isHorizontal();if(0===t)l[e?"scrollLeft":"scrollTop"]=-c;else{if(!r.support.smoothScroll)return w({swiper:r,targetPosition:-c,side:e?"left":"top"}),!0;l.scrollTo({[e?"left":"top"]:-c,behavior:"smooth"})}return!0}return 0===t?(r.setTransition(0),r.setTranslate(c),s&&(r.emit("beforeTransitionStart",t,i),r.emit("transitionEnd"))):(r.setTransition(t),r.setTranslate(c),s&&(r.emit("beforeTransitionStart",t,i),r.emit("transitionStart")),r.animating||(r.animating=!0,r.onTranslateToWrapperTransitionEnd||(r.onTranslateToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onTranslateToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onTranslateToWrapperTransitionEnd),r.onTranslateToWrapperTransitionEnd=null,delete r.onTranslateToWrapperTransitionEnd,s&&r.emit("transitionEnd"))}),r.$wrapperEl[0].addEventListener("transitionend",r.onTranslateToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onTranslateToWrapperTransitionEnd))),!0}};function P(e){let{swiper:t,runCallbacks:s,direction:a,step:i}=e;const{activeIndex:r,previousIndex:n}=t;let l=a;if(l||(l=r>n?"next":r<n?"prev":"reset"),t.emit(`transition${i}`),s&&r!==n){if("reset"===l)return void t.emit(`slideResetTransition${i}`);t.emit(`slideChangeTransition${i}`),"next"===l?t.emit(`slideNextTransition${i}`):t.emit(`slidePrevTransition${i}`)}}var k={slideTo:function(e,t,s,a,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"number"!=typeof e&&"string"!=typeof e)throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof e}] given.`);if("string"==typeof e){const t=parseInt(e,10);if(!isFinite(t))throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${e}] given.`);e=t}const r=this;let n=e;n<0&&(n=0);const{params:l,snapGrid:o,slidesGrid:d,previousIndex:c,activeIndex:p,rtlTranslate:u,wrapperEl:h,enabled:m}=r;if(r.animating&&l.preventInteractionOnTransition||!m&&!a&&!i)return!1;const f=Math.min(r.params.slidesPerGroupSkip,n);let g=f+Math.floor((n-f)/r.params.slidesPerGroup);g>=o.length&&(g=o.length-1),(p||l.initialSlide||0)===(c||0)&&s&&r.emit("beforeSlideChangeStart");const v=-o[g];if(r.updateProgress(v),l.normalizeSlideIndex)for(let e=0;e<d.length;e+=1){const t=-Math.floor(100*v),s=Math.floor(100*d[e]),a=Math.floor(100*d[e+1]);void 0!==d[e+1]?t>=s&&t<a-(a-s)/2?n=e:t>=s&&t<a&&(n=e+1):t>=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&v<r.translate&&v<r.minTranslate())return!1;if(!r.allowSlidePrev&&v>r.translate&&v>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(b=n>p?"next":n<p?"prev":"reset",u&&-v===r.translate||!u&&v===r.translate)return r.updateActiveIndex(n),l.autoHeight&&r.updateAutoHeight(),r.updateSlidesClasses(),"slide"!==l.effect&&r.setTranslate(v),"reset"!==b&&(r.transitionStart(s,b),r.transitionEnd(s,b)),!1;if(l.cssMode){const e=r.isHorizontal(),s=u?v:-v;if(0===t){const t=r.virtual&&r.params.virtual.enabled;t&&(r.wrapperEl.style.scrollSnapType="none",r._immediateVirtual=!0),h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._swiperImmediateVirtual=!1}))}else{if(!r.support.smoothScroll)return w({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(v),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.$wrapperEl[0].addEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){const t=parseInt(e,10);if(!isFinite(t))throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${e}] given.`);e=t}const i=this;let r=e;return i.params.loop&&(r+=i.loopedSlides),i.slideTo(r,t,s,a)},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{animating:i,enabled:r,params:n}=a;if(!r)return a;let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndex<n.slidesPerGroupSkip?1:l;if(n.loop){if(i&&n.loopPreventsSlide)return!1;a.loopFix(),a._clientLeft=a.$wrapperEl[0].clientLeft}return n.rewind&&a.isEnd?a.slideTo(0,e,t,s):a.slideTo(a.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{params:i,animating:r,snapGrid:n,slidesGrid:l,rtlTranslate:o,enabled:d}=a;if(!d)return a;if(i.loop){if(r&&i.loopPreventsSlide)return!1;a.loopFix(),a._clientLeft=a.$wrapperEl[0].clientLeft}function c(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const p=c(o?a.translate:-a.translate),u=n.map((e=>c(e)));let h=n[u.indexOf(p)-1];if(void 0===h&&i.cssMode){let e;n.forEach(((t,s)=>{p>=t&&(e=s)})),void 0!==e&&(h=n[e>0?e-1:e])}let m=0;if(void 0!==h&&(m=l.indexOf(h),m<0&&(m=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(m=m-a.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return a.slideTo(m,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,a){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,$wrapperEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;if(t.loop){if(e.animating)return;i=parseInt(d(e.clickedSlide).attr("data-swiper-slide-index"),10),t.centeredSlides?r<e.loopedSlides-a/2||r>e.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),p((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),p((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var z={loopCreate:function(){const e=this,t=a(),{params:s,$wrapperEl:i}=e,r=i.children().length>0?d(i.children()[0].parentNode):i;r.children(`.${s.slideClass}.${s.slideDuplicateClass}`).remove();let n=r.children(`.${s.slideClass}`);if(s.loopFillGroupWithBlank){const e=s.slidesPerGroup-n.length%s.slidesPerGroup;if(e!==s.slidesPerGroup){for(let a=0;a<e;a+=1){const e=d(t.createElement("div")).addClass(`${s.slideClass} ${s.slideBlankClass}`);r.append(e)}n=r.children(`.${s.slideClass}`)}}"auto"!==s.slidesPerView||s.loopedSlides||(s.loopedSlides=n.length),e.loopedSlides=Math.ceil(parseFloat(s.loopedSlides||s.slidesPerView,10)),e.loopedSlides+=s.loopAdditionalSlides,e.loopedSlides>n.length&&(e.loopedSlides=n.length);const l=[],o=[];n.each(((t,s)=>{const a=d(t);s<e.loopedSlides&&o.push(t),s<n.length&&s>=n.length-e.loopedSlides&&l.push(t),a.attr("data-swiper-slide-index",s)}));for(let e=0;e<o.length;e+=1)r.append(d(o[e].cloneNode(!0)).addClass(s.slideDuplicateClass));for(let e=l.length-1;e>=0;e-=1)r.prepend(d(l[e].cloneNode(!0)).addClass(s.slideDuplicateClass))},loopFix:function(){const e=this;e.emit("beforeLoopFix");const{activeIndex:t,slides:s,loopedSlides:a,allowSlidePrev:i,allowSlideNext:r,snapGrid:n,rtlTranslate:l}=e;let o;e.allowSlidePrev=!0,e.allowSlideNext=!0;const d=-n[t]-e.getTranslate();if(t<a){o=s.length-3*a+t,o+=a;e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}else if(t>=s.length-a){o=-s.length+t+a,o+=a;e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}e.allowSlidePrev=i,e.allowSlideNext=r,e.emit("loopFix")},loopDestroy:function(){const{$wrapperEl:e,params:t,slides:s}=this;e.children(`.${t.slideClass}.${t.slideDuplicateClass},.${t.slideClass}.${t.slideBlankClass}`).remove(),s.removeAttr("data-swiper-slide-index")}};function L(e){const t=this,s=a(),i=r(),n=t.touchEventsData,{params:l,touches:o,enabled:c}=t;if(!c)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=e;p.originalEvent&&(p=p.originalEvent);let h=d(p.target);if("wrapper"===l.touchEventsTarget&&!h.closest(t.wrapperEl).length)return;if(n.isTouchEvent="touchstart"===p.type,!n.isTouchEvent&&"which"in p&&3===p.which)return;if(!n.isTouchEvent&&"button"in p&&p.button>0)return;if(n.isTouched&&n.isMoved)return;!!l.noSwipingClass&&""!==l.noSwipingClass&&p.target&&p.target.shadowRoot&&e.path&&e.path[0]&&(h=d(e.path[0]));const m=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!p.target||!p.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(m,h[0]):h.closest(m)[0]))return void(t.allowClick=!0);if(l.swipeHandler&&!h.closest(l.swipeHandler)[0])return;o.currentX="touchstart"===p.type?p.targetTouches[0].pageX:p.pageX,o.currentY="touchstart"===p.type?p.targetTouches[0].pageY:p.pageY;const g=o.currentX,v=o.currentY,w=l.edgeSwipeDetection||l.iOSEdgeSwipeDetection,b=l.edgeSwipeThreshold||l.iOSEdgeSwipeThreshold;if(w&&(g<=b||g>=i.innerWidth-b)){if("prevent"!==w)return;e.preventDefault()}if(Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),o.startX=g,o.startY=v,n.touchStartTime=u(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1),"touchstart"!==p.type){let e=!0;h.is(n.focusableElements)&&(e=!1,"SELECT"===h[0].nodeName&&(n.isTouched=!1)),s.activeElement&&d(s.activeElement).is(n.focusableElements)&&s.activeElement!==h[0]&&s.activeElement.blur();const a=e&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!a||h[0].isContentEditable||p.preventDefault()}t.params.freeMode&&t.params.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",p)}function O(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:o}=s;if(!o)return;let c=e;if(c.originalEvent&&(c=c.originalEvent),!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",c));if(i.isTouchEvent&&"touchmove"!==c.type)return;const p="touchmove"===c.type&&c.targetTouches&&(c.targetTouches[0]||c.changedTouches[0]),h="touchmove"===c.type?p.pageX:c.pageX,m="touchmove"===c.type?p.pageY:c.pageY;if(c.preventedByNestedSwiper)return n.startX=h,void(n.startY=m);if(!s.allowTouchMove)return d(c.target).is(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:h,startY:m,currentX:h,currentY:m}),i.touchStartTime=u()));if(i.isTouchEvent&&r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(m<n.startY&&s.translate<=s.maxTranslate()||m>n.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(h<n.startX&&s.translate<=s.maxTranslate()||h>n.startX&&s.translate>=s.minTranslate())return;if(i.isTouchEvent&&t.activeElement&&c.target===t.activeElement&&d(c.target).is(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);if(i.allowTouchCallbacks&&s.emit("touchMove",c),c.targetTouches&&c.targetTouches.length>1)return;n.currentX=h,n.currentY=m;const f=n.currentX-n.startX,g=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(f**2+g**2)<s.params.threshold)return;if(void 0===i.isScrolling){let e;s.isHorizontal()&&n.currentY===n.startY||s.isVertical()&&n.currentX===n.startX?i.isScrolling=!1:f*f+g*g>=25&&(e=180*Math.atan2(Math.abs(g),Math.abs(f))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",c),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation(),i.isMoved||(r.loop&&!r.cssMode&&s.loopFix(),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating&&s.$wrapperEl.trigger("webkitTransitionEnd transitionend"),i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)),s.emit("sliderMove",c),i.isMoved=!0;let v=s.isHorizontal()?f:g;n.diff=v,v*=r.touchRatio,l&&(v=-v),s.swipeDirection=v>0?"prev":"next",i.currentTranslate=v+i.startTranslate;let w=!0,b=r.resistanceRatio;if(r.touchReleaseOnEdges&&(b=0),v>0&&i.currentTranslate>s.minTranslate()?(w=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+v)**b)):v<0&&i.currentTranslate<s.maxTranslate()&&(w=!1,r.resistance&&(i.currentTranslate=s.maxTranslate()+1-(s.maxTranslate()-i.startTranslate-v)**b)),w&&(c.preventedByNestedSwiper=!0),!s.allowSlideNext&&"next"===s.swipeDirection&&i.currentTranslate<i.startTranslate&&(i.currentTranslate=i.startTranslate),!s.allowSlidePrev&&"prev"===s.swipeDirection&&i.currentTranslate>i.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(v)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),s.params.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function I(e){const t=this,s=t.touchEventsData,{params:a,touches:i,rtlTranslate:r,slidesGrid:n,enabled:l}=t;if(!l)return;let o=e;if(o.originalEvent&&(o=o.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",o),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&a.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);a.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const d=u(),c=d-s.touchStartTime;if(t.allowClick){const e=o.path||o.composedPath&&o.composedPath();t.updateClickedSlide(e&&e[0]||o.target),t.emit("tap click",o),c<300&&d-s.lastClickTime<300&&t.emit("doubleTap doubleClick",o)}if(s.lastClickTime=u(),p((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===i.diff||s.currentTranslate===s.startTranslate)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=a.followFinger?r?t.translate:-t.translate:-s.currentTranslate,a.cssMode)return;if(t.params.freeMode&&a.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});let m=0,f=t.slidesSizesGrid[0];for(let e=0;e<n.length;e+=e<a.slidesPerGroupSkip?1:a.slidesPerGroup){const t=e<a.slidesPerGroupSkip-1?1:a.slidesPerGroup;void 0!==n[e+t]?h>=n[e]&&h<n[e+t]&&(m=e,f=n[e+t]-n[e]):h>=n[e]&&(m=e,f=n[n.length-1]-n[n.length-2])}let g=null,v=null;a.rewind&&(t.isBeginning?v=t.params.virtual&&t.params.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(g=0));const w=(h-n[m])/f,b=m<a.slidesPerGroupSkip-1?1:a.slidesPerGroup;if(c>a.longSwipesMs){if(!a.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(w>=a.longSwipesRatio?t.slideTo(a.rewind&&t.isEnd?g:m+b):t.slideTo(m)),"prev"===t.swipeDirection&&(w>1-a.longSwipesRatio?t.slideTo(m+b):null!==v&&w<0&&Math.abs(w)>a.longSwipesRatio?t.slideTo(v):t.slideTo(m))}else{if(!a.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(o.target===t.navigation.nextEl||o.target===t.navigation.prevEl)?o.target===t.navigation.nextEl?t.slideTo(m+b):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(null!==g?g:m+b),"prev"===t.swipeDirection&&t.slideTo(null!==v?v:m))}}function A(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView>1)&&e.isEnd&&!e.isBeginning&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.run(),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function D(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function G(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}let N=!1;function B(){}const H=(e,t)=>{const s=a(),{params:i,touchEvents:r,el:n,wrapperEl:l,device:o,support:d}=e,c=!!i.nested,p="on"===t?"addEventListener":"removeEventListener",u=t;if(d.touch){const t=!("touchstart"!==r.start||!d.passiveListener||!i.passiveListeners)&&{passive:!0,capture:!1};n[p](r.start,e.onTouchStart,t),n[p](r.move,e.onTouchMove,d.passiveListener?{passive:!1,capture:c}:c),n[p](r.end,e.onTouchEnd,t),r.cancel&&n[p](r.cancel,e.onTouchEnd,t)}else n[p](r.start,e.onTouchStart,!1),s[p](r.move,e.onTouchMove,c),s[p](r.end,e.onTouchEnd,!1);(i.preventClicks||i.preventClicksPropagation)&&n[p]("click",e.onClick,!0),i.cssMode&&l[p]("scroll",e.onScroll),i.updateOnWindowResize?e[u](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",A,!0):e[u]("observerUpdate",A,!0)};var X={attachEvents:function(){const e=this,t=a(),{params:s,support:i}=e;e.onTouchStart=L.bind(e),e.onTouchMove=O.bind(e),e.onTouchEnd=I.bind(e),s.cssMode&&(e.onScroll=G.bind(e)),e.onClick=D.bind(e),i.touch&&!N&&(t.addEventListener("touchstart",B),N=!0),H(e,"on")},detachEvents:function(){H(this,"off")}};const Y=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var R={addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,$el:i,device:r,support:n}=e,l=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"pointer-events":!n.touch},{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...l),i.addClass([...t].join(" ")),e.emitContainerClasses()},removeClasses:function(){const{$el:e,classNames:t}=this;e.removeClass(t.join(" ")),this.emitContainerClasses()}};var W={init:!0,direction:"horizontal",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,loopPreventsSlide:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1};function j(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(["navigation","pagination","scrollbar"].indexOf(a)>=0&&!0===e[a]&&(e[a]={auto:!0}),a in e&&"enabled"in i?(!0===e[a]&&(e[a]={enabled:!0}),"object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),g(t,s)):g(t,s)):g(t,s)}}const _={eventsEmitter:$,update:S,translate:M,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||s.$wrapperEl.transition(e),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),P({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),P({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:k,loop:z,grabCursor:{setGrabCursor:function(e){const t=this;if(t.support.touch||!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;s.style.cursor="move",s.style.cursor=e?"grabbing":"grab"},unsetGrabCursor:function(){const e=this;e.support.touch||e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="")}},events:X,breakpoints:{setBreakpoint:function(){const e=this,{activeIndex:t,initialized:s,loopedSlides:a=0,params:i,$el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const l=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!l||e.currentBreakpoint===l)return;const o=(l in n?n[l]:void 0)||e.originalParams,d=Y(e,i),c=Y(e,o),p=i.enabled;d&&!c?(r.removeClass(`${i.containerModifierClass}grid ${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!d&&c&&(r.addClass(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.addClass(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{const s=i[t]&&i[t].enabled,a=o[t]&&o[t].enabled;s&&!a&&e[t].disable(),!s&&a&&e[t].enable()}));const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u);u&&s&&e.changeDirection(),g(e.params,o);const m=e.params.enabled;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=l,e.emit("_beforeBreakpoint",o),h&&s&&(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-a+e.loopedSlides,0,!1)),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;e<l.length;e+=1){const{point:r,value:n}=l[e];"window"===t?i.matchMedia(`(min-width: ${n}px)`).matches&&(a=r):n<=s.clientWidth&&(a=r)}return a||"max"}},checkOverflow:{checkOverflow:function(){const e=this,{isLocked:t,params:s}=e,{slidesOffsetBefore:a}=s;if(a){const t=e.slides.length-1,s=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*a;e.isLocked=e.size>s}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:R,images:{loadImage:function(e,t,s,a,i,n){const l=r();let o;function c(){n&&n()}d(e).parent("picture")[0]||e.complete&&i?c():t?(o=new l.Image,o.onload=c,o.onerror=c,a&&(o.sizes=a),s&&(o.srcset=s),t&&(o.src=t)):c()},preloadImages:function(){const e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(let s=0;s<e.imagesToLoad.length;s+=1){const a=e.imagesToLoad[s];e.loadImage(a,a.currentSrc||a.getAttribute("src"),a.srcset||a.getAttribute("srcset"),a.sizes||a.getAttribute("sizes"),!0,t)}}}},q={};class V{constructor(){let e,t;for(var s=arguments.length,a=new Array(s),i=0;i<s;i++)a[i]=arguments[i];if(1===a.length&&a[0].constructor&&"Object"===Object.prototype.toString.call(a[0]).slice(8,-1)?t=a[0]:[e,t]=a,t||(t={}),t=g({},t),e&&!t.el&&(t.el=e),t.el&&d(t.el).length>1){const e=[];return d(t.el).each((s=>{const a=g({},t,{el:s});e.push(new V(a))})),e}const r=this;r.__swiper__=!0,r.support=E(),r.device=C({userAgent:t.userAgent}),r.browser=T(),r.eventsListeners={},r.eventsAnyListeners=[],r.modules=[...r.__modules__],t.modules&&Array.isArray(t.modules)&&r.modules.push(...t.modules);const n={};r.modules.forEach((e=>{e({swiper:r,extendParams:j(t,n),on:r.on.bind(r),once:r.once.bind(r),off:r.off.bind(r),emit:r.emit.bind(r)})}));const l=g({},W,n);return r.params=g({},l,q,t),r.originalParams=g({},r.params),r.passedParams=g({},t),r.params&&r.params.on&&Object.keys(r.params.on).forEach((e=>{r.on(e,r.params.on[e])})),r.params&&r.params.onAny&&r.onAny(r.params.onAny),r.$=d,Object.assign(r,{enabled:r.params.enabled,el:e,classNames:[],slides:d(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===r.params.direction,isVertical:()=>"vertical"===r.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:r.params.allowSlideNext,allowSlidePrev:r.params.allowSlidePrev,touchEvents:function(){const e=["touchstart","touchmove","touchend","touchcancel"],t=["pointerdown","pointermove","pointerup"];return r.touchEventsTouch={start:e[0],move:e[1],end:e[2],cancel:e[3]},r.touchEventsDesktop={start:t[0],move:t[1],end:t[2]},r.support.touch||!r.params.simulateTouch?r.touchEventsTouch:r.touchEventsDesktop}(),touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:r.params.focusableElements,lastClickTime:u(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:r.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),r.emit("_swiper"),r.params.init&&r.init(),r}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.each((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if(s.centeredSlides){let e,t=a[l].swiperSlideSize;for(let s=l+1;s<a.length;s+=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e<a.length;e+=1){(t?i[e]+r[e]-i[l]<n:i[e]-i[l]<n)&&(o+=1)}else for(let e=l-1;e>=0;e-=1){i[l]-i[e]<n&&(o+=1)}return o}update(){const e=this;if(!e||e.destroyed)return;const{snapGrid:t,params:s}=e;function a(){const t=e.rtlTranslate?-1*e.translate:e.translate,s=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(s),e.updateActiveIndex(),e.updateSlidesClasses()}let i;s.breakpoints&&e.setBreakpoint(),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.params.freeMode&&e.params.freeMode.enabled?(a(),e.params.autoHeight&&e.updateAutoHeight()):(i=("auto"===e.params.slidesPerView||e.params.slidesPerView>1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),i||a()),s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.$el.removeClass(`${s.params.containerModifierClass}${a}`).addClass(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.each((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}mount(e){const t=this;if(t.mounted)return!0;const s=d(e||t.params.el);if(!(e=s[0]))return!1;e.swiper=t;const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(e&&e.shadowRoot&&e.shadowRoot.querySelector){const t=d(e.shadowRoot.querySelector(i()));return t.children=e=>s.children(e),t}return s.children?s.children(i()):d(s).children(i())})();if(0===r.length&&t.params.createElements){const e=a().createElement("div");r=d(e),e.className=t.params.wrapperClass,s.append(e),s.children(`.${t.params.slideClass}`).each((e=>{r.append(e)}))}return Object.assign(t,{$el:s,el:e,$wrapperEl:r,wrapperEl:r[0],mounted:!0,rtl:"rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction")),wrongRTL:"-webkit-box"===r.css("display")}),!0}init(e){const t=this;if(t.initialized)return t;return!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.params.loop&&t.loopCreate(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.preloadImages&&t.preloadImages(),t.params.loop?t.slideTo(t.params.initialSlide+t.loopedSlides,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.attachEvents(),t.initialized=!0,t.emit("init"),t.emit("afterInit")),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,$el:i,$wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i.removeAttr("style"),r.removeAttr("style"),n&&n.length&&n.removeClass([a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.$el[0].swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){g(q,e)}static get extendedDefaults(){return q}static get defaults(){return W}static installModule(e){V.prototype.__modules__||(V.prototype.__modules__=[]);const t=V.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>V.installModule(e))),V):(V.installModule(e),V)}}function F(e,t,s,i){const r=a();return e.params.createElements&&Object.keys(i).forEach((a=>{if(!s[a]&&!0===s.auto){let n=e.$el.children(`.${i[a]}`)[0];n||(n=r.createElement("div"),n.className=i[a],e.$el.append(n)),s[a]=n,t[a]=n}})),s}function U(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!\/])/g,"\\$1").replace(/ /g,".")}`}function K(e){const t=this,{$wrapperEl:s,params:a}=t;if(a.loop&&t.loopDestroy(),"object"==typeof e&&"length"in e)for(let t=0;t<e.length;t+=1)e[t]&&s.append(e[t]);else s.append(e);a.loop&&t.loopCreate(),a.observer||t.update()}function Z(e){const t=this,{params:s,$wrapperEl:a,activeIndex:i}=t;s.loop&&t.loopDestroy();let r=i+1;if("object"==typeof e&&"length"in e){for(let t=0;t<e.length;t+=1)e[t]&&a.prepend(e[t]);r=i+e.length}else a.prepend(e);s.loop&&t.loopCreate(),s.observer||t.update(),t.slideTo(r,0,!1)}function Q(e,t){const s=this,{$wrapperEl:a,params:i,activeIndex:r}=s;let n=r;i.loop&&(n-=s.loopedSlides,s.loopDestroy(),s.slides=a.children(`.${i.slideClass}`));const l=s.slides.length;if(e<=0)return void s.prependSlide(t);if(e>=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides.eq(t);e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;e<t.length;e+=1)t[e]&&a.append(t[e]);o=n>e?n+t.length:n}else a.append(t);for(let e=0;e<d.length;e+=1)a.append(d[e]);i.loop&&s.loopCreate(),i.observer||s.update(),i.loop?s.slideTo(o+s.loopedSlides,0,!1):s.slideTo(o,0,!1)}function J(e){const t=this,{params:s,$wrapperEl:a,activeIndex:i}=t;let r=i;s.loop&&(r-=t.loopedSlides,t.loopDestroy(),t.slides=a.children(`.${s.slideClass}`));let n,l=r;if("object"==typeof e&&"length"in e){for(let s=0;s<e.length;s+=1)n=e[s],t.slides[n]&&t.slides.eq(n).remove(),n<l&&(l-=1);l=Math.max(l,0)}else n=e,t.slides[n]&&t.slides.eq(n).remove(),n<l&&(l-=1),l=Math.max(l,0);s.loop&&t.loopCreate(),s.observer||t.update(),s.loop?t.slideTo(l+t.loopedSlides,0,!1):t.slideTo(l,0,!1)}function ee(){const e=this,t=[];for(let s=0;s<e.slides.length;s+=1)t.push(s);e.removeSlide(t)}function te(e){const{effect:t,swiper:s,on:a,setTranslate:i,setTransition:r,overwriteParams:n,perspective:l,recreateShadows:o,getEffectParams:d}=e;let c;a("beforeInit",(()=>{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.each((e=>{s.$(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").remove()})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function se(e,t){return e.transformEl?t.find(e.transformEl).css({"backface-visibility":"hidden","-webkit-backface-visibility":"hidden"}):t}function ae(e){let{swiper:t,duration:s,transformEl:a,allSlides:i}=e;const{slides:r,activeIndex:n,$wrapperEl:l}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a?r.find(a):r:a?r.eq(n).find(a):r.eq(n),e.transitionEnd((()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=["webkitTransitionEnd","transitionend"];for(let t=0;t<e.length;t+=1)l.trigger(e[t])}))}}function ie(e,t,s){const a="swiper-slide-shadow"+(s?`-${s}`:""),i=e.transformEl?t.find(e.transformEl):t;let r=i.children(`.${a}`);return r.length||(r=d(`<div class="swiper-slide-shadow${s?`-${s}`:""}"></div>`),i.append(r)),r}Object.keys(_).forEach((e=>{Object.keys(_[e]).forEach((t=>{V.prototype[t]=_[e][t]}))})),V.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,t){void 0===t&&(t={});const s=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(1===e.length)return void i("observerUpdate",e[0]);const t=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(t):l.setTimeout(t,0)}));s.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),n.push(s)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=t.$el.parents();for(let t=0;t<e.length;t+=1)o(e[t])}o(t.$el[0],{childList:t.params.observeSlideChildren}),o(t.$wrapperEl[0],{attributes:!1})}})),a("destroy",(()=>{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const re=[function(e){let t,{swiper:s,extendParams:a,on:i,emit:r}=e;function n(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];const i=a.renderSlide?d(a.renderSlide.call(s,e,t)):d(`<div class="${s.params.slideClass}" data-swiper-slide-index="${t}">${e}</div>`);return i.attr("data-swiper-slide-index")||i.attr("data-swiper-slide-index",t),a.cache&&(s.virtual.cache[t]=i),i}function l(e){const{slidesPerView:t,slidesPerGroup:a,centeredSlides:i}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:d,to:c,slides:p,slidesGrid:u,offset:h}=s.virtual;s.params.cssMode||s.updateActiveIndex();const m=s.activeIndex||0;let f,g,v;f=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",i?(g=Math.floor(t/2)+a+o,v=Math.floor(t/2)+a+l):(g=t+(a-1)+o,v=a+l);const w=Math.max((m||0)-v,0),b=Math.min((m||0)+g,p.length-1),x=(s.slidesGrid[w]||0)-(s.slidesGrid[0]||0);function y(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),s.lazy&&s.params.lazy.enabled&&s.lazy.load(),r("virtualUpdate")}if(Object.assign(s.virtual,{from:w,to:b,offset:x,slidesGrid:s.slidesGrid}),d===w&&c===b&&!e)return s.slidesGrid!==u&&x!==h&&s.slides.css(f,`${x}px`),s.updateProgress(),void r("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:x,from:w,to:b,slides:function(){const e=[];for(let t=w;t<=b;t+=1)e.push(p[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?y():r("virtualUpdate"));const E=[],C=[];if(e)s.$wrapperEl.find(`.${s.params.slideClass}`).remove();else for(let e=d;e<=c;e+=1)(e<w||e>b)&&s.$wrapperEl.find(`.${s.params.slideClass}[data-swiper-slide-index="${e}"]`).remove();for(let t=0;t<p.length;t+=1)t>=w&&t<=b&&(void 0===c||e?C.push(t):(t>c&&C.push(t),t<d&&E.push(t)));C.forEach((e=>{s.$wrapperEl.append(n(p[e],e))})),E.sort(((e,t)=>t-e)).forEach((e=>{s.$wrapperEl.prepend(n(p[e],e))})),s.$wrapperEl.children(".swiper-slide").css(f,`${x}px`),y()}a({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}}),s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]},i("beforeInit",(()=>{s.params.virtual.enabled&&(s.virtual.slides=s.params.virtual.slides,s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,s.params.initialSlide||l())})),i("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{l()}),100)):l())})),i("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&v(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t<e.length;t+=1)e[t]&&s.virtual.slides.push(e[t]);else s.virtual.slides.push(e);l(!0)},prependSlide:function(e){const t=s.activeIndex;let a=t+1,i=1;if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)e[t]&&s.virtual.slides.unshift(e[t]);a=t+e.length,i=e.length}else s.virtual.slides.unshift(e);if(s.params.virtual.cache){const e=s.virtual.cache,t={};Object.keys(e).forEach((s=>{const a=e[s],r=a.attr("data-swiper-slide-index");r&&a.attr("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}l(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.virtual.slides.splice(e[a],1),s.params.virtual.cache&&delete s.virtual.cache[e[a]],e[a]<t&&(t-=1),t=Math.max(t,0);else s.virtual.slides.splice(e,1),s.params.virtual.cache&&delete s.virtual.cache[e],e<t&&(t-=1),t=Math.max(t,0);l(!0),s.slideTo(t,0)},removeAllSlides:function(){s.virtual.slides=[],s.params.virtual.cache&&(s.virtual.cache={}),l(!0),s.slideTo(0,0)},update:l})},function(e){let{swiper:t,extendParams:s,on:i,emit:n}=e;const l=a(),o=r();function c(e){if(!t.enabled)return;const{rtlTranslate:s}=t;let a=e;a.originalEvent&&(a=a.originalEvent);const i=a.keyCode||a.charCode,r=t.params.keyboard.pageUpDown,d=r&&33===i,c=r&&34===i,p=37===i,u=39===i,h=38===i,m=40===i;if(!t.allowSlideNext&&(t.isHorizontal()&&u||t.isVertical()&&m||c))return!1;if(!t.allowSlidePrev&&(t.isHorizontal()&&p||t.isVertical()&&h||d))return!1;if(!(a.shiftKey||a.altKey||a.ctrlKey||a.metaKey||l.activeElement&&l.activeElement.nodeName&&("input"===l.activeElement.nodeName.toLowerCase()||"textarea"===l.activeElement.nodeName.toLowerCase()))){if(t.params.keyboard.onlyInViewport&&(d||c||p||u||h||m)){let e=!1;if(t.$el.parents(`.${t.params.slideClass}`).length>0&&0===t.$el.parents(`.${t.params.slideActiveClass}`).length)return;const a=t.$el,i=a[0].clientWidth,r=a[0].clientHeight,n=o.innerWidth,l=o.innerHeight,d=t.$el.offset();s&&(d.left-=t.$el[0].scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t<c.length;t+=1){const s=c[t];if(s[0]>=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||h||m)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||m)&&t.slideNext(),(d||h)&&t.slidePrev()),n("keyPress",i)}}function p(){t.keyboard.enabled||(d(l).on("keydown",c),t.keyboard.enabled=!0)}function u(){t.keyboard.enabled&&(d(l).off("keydown",c),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&p()})),i("destroy",(()=>{t.keyboard.enabled&&u()})),Object.assign(t.keyboard,{enable:p,disable:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();let l;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null}}),t.mousewheel={enabled:!1};let o,c=u();const h=[];function m(){t.enabled&&(t.mouseEntered=!0)}function f(){t.enabled&&(t.mouseEntered=!1)}function g(e){return!(t.params.mousewheel.thresholdDelta&&e.delta<t.params.mousewheel.thresholdDelta)&&(!(t.params.mousewheel.thresholdTime&&u()-c<t.params.mousewheel.thresholdTime)&&(e.delta>=6&&u()-c<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),c=(new n.Date).getTime(),!1)))}function v(e){let s=e,a=!0;if(!t.enabled)return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.$el;if("container"!==t.params.mousewheel.eventsTarget&&(n=d(t.params.mousewheel.eventsTarget)),!t.mouseEntered&&!n[0].contains(s.target)&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let c=0;const m=t.rtlTranslate?-1:1,f=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(f.pixelX)>Math.abs(f.pixelY)))return!0;c=-f.pixelX*m}else{if(!(Math.abs(f.pixelY)>Math.abs(f.pixelX)))return!0;c=-f.pixelY}else c=Math.abs(f.pixelX)>Math.abs(f.pixelY)?-f.pixelX*m:-f.pixelY;if(0===c)return!0;r.invert&&(c=-c);let v=t.getTranslate()+c*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:u(),delta:Math.abs(c),direction:Math.sign(c)},a=o&&e.time<o.time+500&&e.delta<=o.delta&&e.direction===o.direction;if(!a){o=void 0,t.params.loop&&t.loopFix();let n=t.getTranslate()+c*r.sensitivity;const d=t.isBeginning,u=t.isEnd;if(n>=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!d&&t.isBeginning||!u&&t.isEnd)&&t.updateSlidesClasses(),t.params.freeMode.sticky){clearTimeout(l),l=void 0,h.length>=15&&h.shift();const s=h.length?h[h.length-1]:void 0,a=h[0];if(h.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))h.splice(0);else if(h.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=c>0?.8:.2;o=e,h.splice(0),l=p((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}l||(l=p((()=>{o=e,h.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),n===t.minTranslate()||n===t.maxTranslate())return!0}}else{const s={time:u(),delta:Math.abs(c),direction:Math.sign(c),raw:e};h.length>=2&&h.shift();const a=h.length?h[h.length-1]:void 0;if(h.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&g(s):g(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function w(e){let s=t.$el;"container"!==t.params.mousewheel.eventsTarget&&(s=d(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",f),s[e]("wheel",v)}function b(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",v),!0):!t.mousewheel.enabled&&(w("on"),t.mousewheel.enabled=!0,!0)}function x(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,v),!0):!!t.mousewheel.enabled&&(w("off"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&x(),t.params.mousewheel.enabled&&b()})),a("destroy",(()=>{t.params.cssMode&&b(),t.mousewheel.enabled&&x()})),Object.assign(t.mousewheel,{enable:b,disable:x})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;function r(e){let s;return e&&(s=d(e),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.$el.find(e).length&&(s=t.$el.find(e))),s}function n(e,s){const a=t.params.navigation;e&&e.length>0&&(e[s?"addClass":"removeClass"](a.disabledClass),e[0]&&"BUTTON"===e[0].tagName&&(e[0].disabled=s),t.params.watchOverflow&&t.enabled&&e[t.isLocked?"addClass":"removeClass"](a.lockClass))}function l(){if(t.params.loop)return;const{$nextEl:e,$prevEl:s}=t.navigation;n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&t.slidePrev()}function c(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&t.slideNext()}function p(){const e=t.params.navigation;if(t.params.navigation=F(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;const s=r(e.nextEl),a=r(e.prevEl);s&&s.length>0&&s.on("click",c),a&&a.length>0&&a.on("click",o),Object.assign(t.navigation,{$nextEl:s,nextEl:s&&s[0],$prevEl:a,prevEl:a&&a[0]}),t.enabled||(s&&s.addClass(e.lockClass),a&&a.addClass(e.lockClass))}function u(){const{$nextEl:e,$prevEl:s}=t.navigation;e&&e.length&&(e.off("click",c),e.removeClass(t.params.navigation.disabledClass)),s&&s.length&&(s.off("click",o),s.removeClass(t.params.navigation.disabledClass))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,$nextEl:null,prevEl:null,$prevEl:null},a("init",(()=>{!1===t.params.navigation.enabled?h():(p(),l())})),a("toEdge fromEdge lock unlock",(()=>{l()})),a("destroy",(()=>{u()})),a("enable disable",(()=>{const{$nextEl:e,$prevEl:s}=t.navigation;e&&e[t.enabled?"removeClass":"addClass"](t.params.navigation.lockClass),s&&s[t.enabled?"removeClass":"addClass"](t.params.navigation.lockClass)})),a("click",((e,s)=>{const{$nextEl:a,$prevEl:r}=t.navigation,n=s.target;if(t.params.navigation.hideOnClick&&!d(n).is(r)&&!d(n).is(a)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;a?e=a.hasClass(t.params.navigation.hiddenClass):r&&(e=r.hasClass(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),a&&a.toggleClass(t.params.navigation.hiddenClass),r&&r.toggleClass(t.params.navigation.hiddenClass)}}));const h=()=>{t.$el.addClass(t.params.navigation.navigationDisabledClass),u()};Object.assign(t.navigation,{enable:()=>{t.$el.removeClass(t.params.navigation.navigationDisabledClass),p(),l()},disable:h,update:l,init:p,destroy:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,$el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||!t.pagination.$el||0===t.pagination.$el.length}function c(e,s){const{bulletActiveClass:a}=t.params.pagination;e[s]().addClass(`${a}-${s}`)[s]().addClass(`${a}-${s}-${s}`)}function p(){const e=t.rtl,s=t.params.pagination;if(o())return;const a=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,r=t.pagination.$el;let p;const u=t.params.loop?Math.ceil((a-2*t.loopedSlides)/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(p=Math.ceil((t.activeIndex-t.loopedSlides)/t.params.slidesPerGroup),p>a-1-2*t.loopedSlides&&(p-=a-2*t.loopedSlides),p>u-1&&(p-=u),p<0&&"bullets"!==t.params.paginationType&&(p=u+p)):p=void 0!==t.snapIndex?t.snapIndex:t.activeIndex||0,"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let i,o,u;if(s.dynamicBullets&&(n=a.eq(0)[t.isHorizontal()?"outerWidth":"outerHeight"](!0),r.css(t.isHorizontal()?"width":"height",n*(s.dynamicMainBullets+4)+"px"),s.dynamicMainBullets>1&&void 0!==t.previousIndex&&(l+=p-(t.previousIndex-t.loopedSlides||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),i=Math.max(p-l,0),o=i+(Math.min(a.length,s.dynamicMainBullets)-1),u=(o+i)/2),a.removeClass(["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`)).join(" ")),r.length>1)a.each((e=>{const t=d(e),a=t.index();a===p&&t.addClass(s.bulletActiveClass),s.dynamicBullets&&(a>=i&&a<=o&&t.addClass(`${s.bulletActiveClass}-main`),a===i&&c(t,"prev"),a===o&&c(t,"next"))}));else{const e=a.eq(p),r=e.index();if(e.addClass(s.bulletActiveClass),s.dynamicBullets){const e=a.eq(i),n=a.eq(o);for(let e=i;e<=o;e+=1)a.eq(e).addClass(`${s.bulletActiveClass}-main`);if(t.params.loop)if(r>=a.length){for(let e=s.dynamicMainBullets;e>=0;e-=1)a.eq(a.length-e).addClass(`${s.bulletActiveClass}-main`);a.eq(a.length-s.dynamicMainBullets-1).addClass(`${s.bulletActiveClass}-prev`)}else c(e,"prev"),c(n,"next");else c(e,"prev"),c(n,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-u*n,l=e?"right":"left";a.css(t.isHorizontal()?l:"top",`${r}px`)}}if("fraction"===s.type&&(r.find(U(s.currentClass)).text(s.formatFractionCurrent(p+1)),r.find(U(s.totalClass)).text(s.formatFractionTotal(u))),"progressbar"===s.type){let e;e=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const a=(p+1)/u;let i=1,n=1;"horizontal"===e?i=a:n=a,r.find(U(s.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${i}) scaleY(${n})`).transition(t.params.speed)}"custom"===s.type&&s.renderCustom?(r.html(s.renderCustom(t,p+1,u)),i("paginationRender",r[0])):i("paginationUpdate",r[0]),t.params.watchOverflow&&t.enabled&&r[t.isLocked?"addClass":"removeClass"](s.lockClass)}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,a=t.pagination.$el;let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil((s-2*t.loopedSlides)/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&!t.params.loop&&i>s&&(i=s);for(let s=0;s<i;s+=1)e.renderBullet?r+=e.renderBullet.call(t,s,e.bulletClass):r+=`<${e.bulletElement} class="${e.bulletClass}"></${e.bulletElement}>`;a.html(r),t.pagination.bullets=a.find(U(e.bulletClass))}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):`<span class="${e.currentClass}"></span> / <span class="${e.totalClass}"></span>`,a.html(r)),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):`<span class="${e.progressbarFillClass}"></span>`,a.html(r)),"custom"!==e.type&&i("paginationRender",t.pagination.$el[0])}function h(){t.params.pagination=F(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s=d(e.el);0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&s.length>1&&(s=t.$el.find(e.el),s.length>1&&(s=s.filter((e=>d(e).parents(".swiper")[0]===t.el)))),"bullets"===e.type&&e.clickable&&s.addClass(e.clickableClass),s.addClass(e.modifierClass+e.type),s.addClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.addClass(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.addClass(e.progressbarOppositeClass),e.clickable&&s.on("click",U(e.bulletClass),(function(e){e.preventDefault();let s=d(this).index()*t.params.slidesPerGroup;t.params.loop&&(s+=t.loopedSlides),t.slideTo(s)})),Object.assign(t.pagination,{$el:s,el:s[0]}),t.enabled||s.addClass(e.lockClass))}function m(){const e=t.params.pagination;if(o())return;const s=t.pagination.$el;s.removeClass(e.hiddenClass),s.removeClass(e.modifierClass+e.type),s.removeClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.pagination.bullets&&t.pagination.bullets.removeClass&&t.pagination.bullets.removeClass(e.bulletActiveClass),e.clickable&&s.off("click",U(e.bulletClass))}a("init",(()=>{!1===t.params.pagination.enabled?f():(h(),u(),p())})),a("activeIndexChange",(()=>{(t.params.loop||void 0===t.snapIndex)&&p()})),a("snapIndexChange",(()=>{t.params.loop||p()})),a("slidesLengthChange",(()=>{t.params.loop&&(u(),p())})),a("snapGridLengthChange",(()=>{t.params.loop||(u(),p())})),a("destroy",(()=>{m()})),a("enable disable",(()=>{const{$el:e}=t.pagination;e&&e[t.enabled?"removeClass":"addClass"](t.params.pagination.lockClass)})),a("lock unlock",(()=>{p()})),a("click",((e,s)=>{const a=s.target,{$el:r}=t.pagination;if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r.length>0&&!d(a).hasClass(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r.hasClass(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.toggleClass(t.params.pagination.hiddenClass)}}));const f=()=>{t.$el.addClass(t.params.pagination.paginationDisabledClass),t.pagination.$el&&t.pagination.$el.addClass(t.params.pagination.paginationDisabledClass),m()};Object.assign(t.pagination,{enable:()=>{t.$el.removeClass(t.params.pagination.paginationDisabledClass),t.pagination.$el&&t.pagination.$el.removeClass(t.params.pagination.paginationDisabledClass),h(),u(),p()},disable:f,render:u,update:p,init:h,destroy:m})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const n=a();let l,o,c,u,h=!1,m=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s,progress:a}=t,{$dragEl:i,$el:r}=e,n=t.params.scrollbar;let l=o,d=(c-o)*a;s?(d=-d,d>0?(l=o-d,d=0):-d+o>c&&(l=c+d)):d<0?(l=o+d,d=0):d+o>c&&(l=c-d),t.isHorizontal()?(i.transform(`translate3d(${d}px, 0, 0)`),i[0].style.width=`${l}px`):(i.transform(`translate3d(0px, ${d}px, 0)`),i[0].style.height=`${l}px`),n.hide&&(clearTimeout(m),r[0].style.opacity=1,m=setTimeout((()=>{r[0].style.opacity=0,r.transition(400)}),1e3))}function v(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{$dragEl:s,$el:a}=e;s[0].style.width="",s[0].style.height="",c=t.isHorizontal()?a[0].offsetWidth:a[0].offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),o="auto"===t.params.scrollbar.dragSize?c*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s[0].style.width=`${o}px`:s[0].style.height=`${o}px`,a[0].style.display=u>=1?"none":"",t.params.scrollbar.hide&&(a[0].style.opacity=0),t.params.watchOverflow&&t.enabled&&e.$el[t.isLocked?"addClass":"removeClass"](t.params.scrollbar.lockClass)}function w(e){return t.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientX:e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientY:e.clientY}function b(e){const{scrollbar:s,rtlTranslate:a}=t,{$el:i}=s;let r;r=(w(e)-i.offset()[t.isHorizontal()?"left":"top"]-(null!==l?l:o/2))/(c-o),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function x(e){const s=t.params.scrollbar,{scrollbar:a,$wrapperEl:i}=t,{$el:n,$dragEl:o}=a;h=!0,l=e.target===o[0]||e.target===o?w(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.transition(100),o.transition(100),b(e),clearTimeout(f),n.transition(0),s.hide&&n.css("opacity",1),t.params.cssMode&&t.$wrapperEl.css("scroll-snap-type","none"),r("scrollbarDragStart",e)}function y(e){const{scrollbar:s,$wrapperEl:a}=t,{$el:i,$dragEl:n}=s;h&&(e.preventDefault?e.preventDefault():e.returnValue=!1,b(e),a.transition(0),i.transition(0),n.transition(0),r("scrollbarDragMove",e))}function E(e){const s=t.params.scrollbar,{scrollbar:a,$wrapperEl:i}=t,{$el:n}=a;h&&(h=!1,t.params.cssMode&&(t.$wrapperEl.css("scroll-snap-type",""),i.transition("")),s.hide&&(clearTimeout(f),f=p((()=>{n.css("opacity",0),n.transition(400)}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,touchEventsTouch:a,touchEventsDesktop:i,params:r,support:l}=t,o=s.$el;if(!o)return;const d=o[0],c=!(!l.passiveListener||!r.passiveListeners)&&{passive:!1,capture:!1},p=!(!l.passiveListener||!r.passiveListeners)&&{passive:!0,capture:!1};if(!d)return;const u="on"===e?"addEventListener":"removeEventListener";l.touch?(d[u](a.start,x,c),d[u](a.move,y,c),d[u](a.end,E,p)):(d[u](i.start,x,c),n[u](i.move,y,c),n[u](i.end,E,p))}function T(){const{scrollbar:e,$el:s}=t;t.params.scrollbar=F(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i=d(a.el);t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.find(a.el).length&&(i=s.find(a.el)),i.addClass(t.isHorizontal()?a.horizontalClass:a.verticalClass);let r=i.find(`.${t.params.scrollbar.dragClass}`);0===r.length&&(r=d(`<div class="${t.params.scrollbar.dragClass}"></div>`),i.append(r)),Object.assign(e,{$el:i,el:i[0],$dragEl:r,dragEl:r[0]}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),i&&i[t.enabled?"removeClass":"addClass"](t.params.scrollbar.lockClass)}function $(){const e=t.params.scrollbar,s=t.scrollbar.$el;s&&s.removeClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null,$el:null,$dragEl:null},i("init",(()=>{!1===t.params.scrollbar.enabled?S():(T(),v(),g())})),i("update resize observerUpdate lock unlock",(()=>{v()})),i("setTranslate",(()=>{g()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&t.scrollbar.$dragEl.transition(e)}(s)})),i("enable disable",(()=>{const{$el:e}=t.scrollbar;e&&e[t.enabled?"removeClass":"addClass"](t.params.scrollbar.lockClass)})),i("destroy",(()=>{$()}));const S=()=>{t.$el.addClass(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.$el&&t.scrollbar.$el.addClass(t.params.scrollbar.scrollbarDisabledClass),$()};Object.assign(t.scrollbar,{enable:()=>{t.$el.removeClass(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.$el&&t.scrollbar.$el.removeClass(t.params.scrollbar.scrollbarDisabledClass),T(),v(),g()},disable:S,updateSize:v,setTranslate:g,init:T,destroy:$})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i=(e,s)=>{const{rtl:a}=t,i=d(e),r=a?-1:1,n=i.attr("data-swiper-parallax")||"0";let l=i.attr("data-swiper-parallax-x"),o=i.attr("data-swiper-parallax-y");const c=i.attr("data-swiper-parallax-scale"),p=i.attr("data-swiper-parallax-opacity");if(l||o?(l=l||"0",o=o||"0"):t.isHorizontal()?(l=n,o="0"):(o=n,l="0"),l=l.indexOf("%")>=0?parseInt(l,10)*s*r+"%":l*s*r+"px",o=o.indexOf("%")>=0?parseInt(o,10)*s+"%":o*s+"px",null!=p){const e=p-(p-1)*(1-Math.abs(s));i[0].style.opacity=e}if(null==c)i.transform(`translate3d(${l}, ${o}, 0px)`);else{const e=c-(c-1)*(1-Math.abs(s));i.transform(`translate3d(${l}, ${o}, 0px) scale(${e})`)}},r=()=>{const{$el:e,slides:s,progress:a,snapGrid:r}=t;e.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{i(e,a)})),s.each(((e,s)=>{let n=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(n+=Math.ceil(s/2)-a*(r.length-1)),n=Math.min(Math.max(n,-1),1),d(e).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{i(e,n)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&r()})),a("setTranslate",(()=>{t.params.parallax.enabled&&r()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{$el:s}=t;s.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((t=>{const s=d(t);let a=parseInt(s.attr("data-swiper-parallax-duration"),10)||e;0===e&&(a=0),s.transition(a)}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,c,p=1,u=!1;const m={$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},f={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v=1;function w(e){if(e.targetTouches.length<2)return 1;const t=e.targetTouches[0].pageX,s=e.targetTouches[0].pageY,a=e.targetTouches[1].pageX,i=e.targetTouches[1].pageY;return Math.sqrt((a-t)**2+(i-s)**2)}function b(e){const s=t.support,a=t.params.zoom;if(o=!1,c=!1,!s.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;o=!0,m.scaleStart=w(e)}m.$slideEl&&m.$slideEl.length||(m.$slideEl=d(e.target).closest(`.${t.params.slideClass}`),0===m.$slideEl.length&&(m.$slideEl=t.slides.eq(t.activeIndex)),m.$imageEl=m.$slideEl.find(`.${a.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${a.containerClass}`),m.maxRatio=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,0!==m.$imageWrapEl.length)?(m.$imageEl&&m.$imageEl.transition(0),u=!0):m.$imageEl=void 0}function x(e){const s=t.support,a=t.params.zoom,i=t.zoom;if(!s.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;c=!0,m.scaleMove=w(e)}m.$imageEl&&0!==m.$imageEl.length?(s.gestures?i.scale=e.scale*p:i.scale=m.scaleMove/m.scaleStart*p,i.scale>m.maxRatio&&(i.scale=m.maxRatio-1+(i.scale-m.maxRatio+1)**.5),i.scale<a.minRatio&&(i.scale=a.minRatio+1-(a.minRatio-i.scale+1)**.5),m.$imageEl.transform(`translate3d(0,0,0) scale(${i.scale})`)):"gesturechange"===e.type&&b(e)}function y(e){const s=t.device,a=t.support,i=t.params.zoom,r=t.zoom;if(!a.gestures){if(!o||!c)return;if("touchend"!==e.type||"touchend"===e.type&&e.changedTouches.length<2&&!s.android)return;o=!1,c=!1}m.$imageEl&&0!==m.$imageEl.length&&(r.scale=Math.max(Math.min(r.scale,m.maxRatio),i.minRatio),m.$imageEl.transition(t.params.speed).transform(`translate3d(0,0,0) scale(${r.scale})`),p=r.scale,u=!1,1===r.scale&&(m.$slideEl=void 0))}function E(e){const s=t.zoom;if(!m.$imageEl||0===m.$imageEl.length)return;if(t.allowClick=!1,!f.isTouched||!m.$slideEl)return;f.isMoved||(f.width=m.$imageEl[0].offsetWidth,f.height=m.$imageEl[0].offsetHeight,f.startX=h(m.$imageWrapEl[0],"x")||0,f.startY=h(m.$imageWrapEl[0],"y")||0,m.slideWidth=m.$slideEl[0].offsetWidth,m.slideHeight=m.$slideEl[0].offsetHeight,m.$imageWrapEl.transition(0));const a=f.width*s.scale,i=f.height*s.scale;if(!(a<m.slideWidth&&i<m.slideHeight)){if(f.minX=Math.min(m.slideWidth/2-a/2,0),f.maxX=-f.minX,f.minY=Math.min(m.slideHeight/2-i/2,0),f.maxY=-f.minY,f.touchesCurrent.x="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,f.touchesCurrent.y="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,!f.isMoved&&!u){if(t.isHorizontal()&&(Math.floor(f.minX)===Math.floor(f.startX)&&f.touchesCurrent.x<f.touchesStart.x||Math.floor(f.maxX)===Math.floor(f.startX)&&f.touchesCurrent.x>f.touchesStart.x))return void(f.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(f.minY)===Math.floor(f.startY)&&f.touchesCurrent.y<f.touchesStart.y||Math.floor(f.maxY)===Math.floor(f.startY)&&f.touchesCurrent.y>f.touchesStart.y))return void(f.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),f.isMoved=!0,f.currentX=f.touchesCurrent.x-f.touchesStart.x+f.startX,f.currentY=f.touchesCurrent.y-f.touchesStart.y+f.startY,f.currentX<f.minX&&(f.currentX=f.minX+1-(f.minX-f.currentX+1)**.8),f.currentX>f.maxX&&(f.currentX=f.maxX-1+(f.currentX-f.maxX+1)**.8),f.currentY<f.minY&&(f.currentY=f.minY+1-(f.minY-f.currentY+1)**.8),f.currentY>f.maxY&&(f.currentY=f.maxY-1+(f.currentY-f.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=f.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=f.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(f.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(f.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(f.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(f.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=f.touchesCurrent.x,g.prevPositionY=f.touchesCurrent.y,g.prevTime=Date.now(),m.$imageWrapEl.transform(`translate3d(${f.currentX}px, ${f.currentY}px,0)`)}}function C(){const e=t.zoom;m.$slideEl&&t.previousIndex!==t.activeIndex&&(m.$imageEl&&m.$imageEl.transform("translate3d(0,0,0) scale(1)"),m.$imageWrapEl&&m.$imageWrapEl.transform("translate3d(0,0,0)"),e.scale=1,p=1,m.$slideEl=void 0,m.$imageEl=void 0,m.$imageWrapEl=void 0)}function T(e){const s=t.zoom,a=t.params.zoom;if(m.$slideEl||(e&&e.target&&(m.$slideEl=d(e.target).closest(`.${t.params.slideClass}`)),m.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):m.$slideEl=t.slides.eq(t.activeIndex)),m.$imageEl=m.$slideEl.find(`.${a.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${a.containerClass}`)),!m.$imageEl||0===m.$imageEl.length||!m.$imageWrapEl||0===m.$imageWrapEl.length)return;let i,r,l,o,c,u,h,g,v,w,b,x,y,E,C,T,$,S;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.$slideEl.addClass(`${a.zoomedSlideClass}`),void 0===f.touchesStart.x&&e?(i="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,r="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(i=f.touchesStart.x,r=f.touchesStart.y),s.scale=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,p=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,e?($=m.$slideEl[0].offsetWidth,S=m.$slideEl[0].offsetHeight,l=m.$slideEl.offset().left+n.scrollX,o=m.$slideEl.offset().top+n.scrollY,c=l+$/2-i,u=o+S/2-r,v=m.$imageEl[0].offsetWidth,w=m.$imageEl[0].offsetHeight,b=v*s.scale,x=w*s.scale,y=Math.min($/2-b/2,0),E=Math.min(S/2-x/2,0),C=-y,T=-E,h=c*s.scale,g=u*s.scale,h<y&&(h=y),h>C&&(h=C),g<E&&(g=E),g>T&&(g=T)):(h=0,g=0),m.$imageWrapEl.transition(300).transform(`translate3d(${h}px, ${g}px,0)`),m.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${s.scale})`)}function $(){const e=t.zoom,s=t.params.zoom;m.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):m.$slideEl=t.slides.eq(t.activeIndex),m.$imageEl=m.$slideEl.find(`.${s.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${s.containerClass}`)),m.$imageEl&&0!==m.$imageEl.length&&m.$imageWrapEl&&0!==m.$imageWrapEl.length&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,p=1,m.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),m.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),m.$slideEl.removeClass(`${s.zoomedSlideClass}`),m.$slideEl=void 0)}function S(e){const s=t.zoom;s.scale&&1!==s.scale?$():T(e)}function M(){const e=t.support;return{passiveListener:!("touchstart"!==t.touchEvents.start||!e.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1},activeListenerWithCapture:!e.passiveListener||{passive:!1,capture:!0}}}function P(){return`.${t.params.slideClass}`}function k(e){const{passiveListener:s}=M(),a=P();t.$wrapperEl[e]("gesturestart",a,b,s),t.$wrapperEl[e]("gesturechange",a,x,s),t.$wrapperEl[e]("gestureend",a,y,s)}function z(){l||(l=!0,k("on"))}function L(){l&&(l=!1,k("off"))}function O(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const s=t.support,{passiveListener:a,activeListenerWithCapture:i}=M(),r=P();s.gestures?(t.$wrapperEl.on(t.touchEvents.start,z,a),t.$wrapperEl.on(t.touchEvents.end,L,a)):"touchstart"===t.touchEvents.start&&(t.$wrapperEl.on(t.touchEvents.start,r,b,a),t.$wrapperEl.on(t.touchEvents.move,r,x,i),t.$wrapperEl.on(t.touchEvents.end,r,y,a),t.touchEvents.cancel&&t.$wrapperEl.on(t.touchEvents.cancel,r,y,a)),t.$wrapperEl.on(t.touchEvents.move,`.${t.params.zoom.containerClass}`,E,i)}function I(){const e=t.zoom;if(!e.enabled)return;const s=t.support;e.enabled=!1;const{passiveListener:a,activeListenerWithCapture:i}=M(),r=P();s.gestures?(t.$wrapperEl.off(t.touchEvents.start,z,a),t.$wrapperEl.off(t.touchEvents.end,L,a)):"touchstart"===t.touchEvents.start&&(t.$wrapperEl.off(t.touchEvents.start,r,b,a),t.$wrapperEl.off(t.touchEvents.move,r,x,i),t.$wrapperEl.off(t.touchEvents.end,r,y,a),t.touchEvents.cancel&&t.$wrapperEl.off(t.touchEvents.cancel,r,y,a)),t.$wrapperEl.off(t.touchEvents.move,`.${t.params.zoom.containerClass}`,E,i)}Object.defineProperty(t.zoom,"scale",{get:()=>v,set(e){if(v!==e){const t=m.$imageEl?m.$imageEl[0]:void 0,s=m.$slideEl?m.$slideEl[0]:void 0;i("zoomChange",e,t,s)}v=e}}),a("init",(()=>{t.params.zoom.enabled&&O()})),a("destroy",(()=>{I()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;m.$imageEl&&0!==m.$imageEl.length&&(f.isTouched||(s.android&&e.cancelable&&e.preventDefault(),f.isTouched=!0,f.touchesStart.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,f.touchesStart.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY))}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.$imageEl||0===m.$imageEl.length)return;if(!f.isTouched||!f.isMoved)return f.isTouched=!1,void(f.isMoved=!1);f.isTouched=!1,f.isMoved=!1;let s=300,a=300;const i=g.x*s,r=f.currentX+i,n=g.y*a,l=f.currentY+n;0!==g.x&&(s=Math.abs((r-f.currentX)/g.x)),0!==g.y&&(a=Math.abs((l-f.currentY)/g.y));const o=Math.max(s,a);f.currentX=r,f.currentY=l;const d=f.width*e.scale,c=f.height*e.scale;f.minX=Math.min(m.slideWidth/2-d/2,0),f.maxX=-f.minX,f.minY=Math.min(m.slideHeight/2-c/2,0),f.maxY=-f.minY,f.currentX=Math.max(Math.min(f.currentX,f.maxX),f.minX),f.currentY=Math.max(Math.min(f.currentY,f.maxY),f.minY),m.$imageWrapEl.transition(o).transform(`translate3d(${f.currentX}px, ${f.currentY}px,0)`)}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&S(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:O,disable:I,in:T,out:$,toggle:S})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;s({lazy:{checkInView:!1,enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,scrollingElement:"",elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}}),t.lazy={};let n=!1,l=!1;function o(e,s){void 0===s&&(s=!0);const a=t.params.lazy;if(void 0===e)return;if(0===t.slides.length)return;const r=t.virtual&&t.params.virtual.enabled?t.$wrapperEl.children(`.${t.params.slideClass}[data-swiper-slide-index="${e}"]`):t.slides.eq(e),n=r.find(`.${a.elementClass}:not(.${a.loadedClass}):not(.${a.loadingClass})`);!r.hasClass(a.elementClass)||r.hasClass(a.loadedClass)||r.hasClass(a.loadingClass)||n.push(r[0]),0!==n.length&&n.each((e=>{const n=d(e);n.addClass(a.loadingClass);const l=n.attr("data-background"),c=n.attr("data-src"),p=n.attr("data-srcset"),u=n.attr("data-sizes"),h=n.parent("picture");t.loadImage(n[0],c||l,p,u,!1,(()=>{if(null!=t&&t&&(!t||t.params)&&!t.destroyed){if(l?(n.css("background-image",`url("${l}")`),n.removeAttr("data-background")):(p&&(n.attr("srcset",p),n.removeAttr("data-srcset")),u&&(n.attr("sizes",u),n.removeAttr("data-sizes")),h.length&&h.children("source").each((e=>{const t=d(e);t.attr("data-srcset")&&(t.attr("srcset",t.attr("data-srcset")),t.removeAttr("data-srcset"))})),c&&(n.attr("src",c),n.removeAttr("data-src"))),n.addClass(a.loadedClass).removeClass(a.loadingClass),r.find(`.${a.preloaderClass}`).remove(),t.params.loop&&s){const e=r.attr("data-swiper-slide-index");if(r.hasClass(t.params.slideDuplicateClass)){o(t.$wrapperEl.children(`[data-swiper-slide-index="${e}"]:not(.${t.params.slideDuplicateClass})`).index(),!1)}else{o(t.$wrapperEl.children(`.${t.params.slideDuplicateClass}[data-swiper-slide-index="${e}"]`).index(),!1)}}i("lazyImageReady",r[0],n[0]),t.params.autoHeight&&t.updateAutoHeight()}})),i("lazyImageLoad",r[0],n[0])}))}function c(){const{$wrapperEl:e,params:s,slides:a,activeIndex:i}=t,r=t.virtual&&s.virtual.enabled,n=s.lazy;let c=s.slidesPerView;function p(t){if(r){if(e.children(`.${s.slideClass}[data-swiper-slide-index="${t}"]`).length)return!0}else if(a[t])return!0;return!1}function u(e){return r?d(e).attr("data-swiper-slide-index"):d(e).index()}if("auto"===c&&(c=0),l||(l=!0),t.params.watchSlidesProgress)e.children(`.${s.slideVisibleClass}`).each((e=>{o(r?d(e).attr("data-swiper-slide-index"):d(e).index())}));else if(c>1)for(let e=i;e<i+c;e+=1)p(e)&&o(e);else o(i);if(n.loadPrevNext)if(c>1||n.loadPrevNextAmount&&n.loadPrevNextAmount>1){const e=n.loadPrevNextAmount,t=Math.ceil(c),s=Math.min(i+t+Math.max(e,t),a.length),r=Math.max(i-Math.max(t,e),0);for(let e=i+t;e<s;e+=1)p(e)&&o(e);for(let e=r;e<i;e+=1)p(e)&&o(e)}else{const t=e.children(`.${s.slideNextClass}`);t.length>0&&o(u(t));const a=e.children(`.${s.slidePrevClass}`);a.length>0&&o(u(a))}}function p(){const e=r();if(!t||t.destroyed)return;const s=t.params.lazy.scrollingElement?d(t.params.lazy.scrollingElement):d(e),a=s[0]===e,i=a?e.innerWidth:s[0].offsetWidth,l=a?e.innerHeight:s[0].offsetHeight,o=t.$el.offset(),{rtlTranslate:u}=t;let h=!1;u&&(o.left-=t.$el[0].scrollLeft);const m=[[o.left,o.top],[o.left+t.width,o.top],[o.left,o.top+t.height],[o.left+t.width,o.top+t.height]];for(let e=0;e<m.length;e+=1){const t=m[e];if(t[0]>=0&&t[0]<=i&&t[1]>=0&&t[1]<=l){if(0===t[0]&&0===t[1])continue;h=!0}}const f=!("touchstart"!==t.touchEvents.start||!t.support.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1};h?(c(),s.off("scroll",p,f)):n||(n=!0,s.on("scroll",p,f))}a("beforeInit",(()=>{t.params.lazy.enabled&&t.params.preloadImages&&(t.params.preloadImages=!1)})),a("init",(()=>{t.params.lazy.enabled&&(t.params.lazy.checkInView?p():c())})),a("scroll",(()=>{t.params.freeMode&&t.params.freeMode.enabled&&!t.params.freeMode.sticky&&c()})),a("scrollbarDragMove resize _freeModeNoMomentumRelease",(()=>{t.params.lazy.enabled&&(t.params.lazy.checkInView?p():c())})),a("transitionStart",(()=>{t.params.lazy.enabled&&(t.params.lazy.loadOnTransitionStart||!t.params.lazy.loadOnTransitionStart&&!l)&&(t.params.lazy.checkInView?p():c())})),a("transitionEnd",(()=>{t.params.lazy.enabled&&!t.params.lazy.loadOnTransitionStart&&(t.params.lazy.checkInView?p():c())})),a("slideChange",(()=>{const{lazy:e,cssMode:s,watchSlidesProgress:a,touchReleaseOnEdges:i,resistanceRatio:r}=t.params;e.enabled&&(s||a&&(i||0===r))&&c()})),a("destroy",(()=>{t.$el&&t.$el.find(`.${t.params.lazy.loadingClass}`).removeClass(t.params.lazy.loadingClass)})),Object.assign(t.lazy,{load:c,loadInSlide:o})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline||(t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid))}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e<a.length;e+=1)a[e]!==s&&a[e]instanceof l&&o(a[e]);else a instanceof l&&s!==a&&o(a)},setTransition:function(e,s){const a=t.constructor,i=t.controller.control;let r;function n(s){s.setTransition(e,t),0!==e&&(s.transitionStart(),s.params.autoHeight&&p((()=>{s.updateAutoHeight()})),s.$wrapperEl.transitionEnd((()=>{i&&(s.params.loop&&"slide"===t.params.controller.by&&s.loopFix(),s.transitionEnd())})))}if(Array.isArray(i))for(r=0;r<i.length;r+=1)i[r]!==s&&i[r]instanceof a&&n(i[r]);else i instanceof a&&s!==i&&n(i)}})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",slideLabelMessage:"{{index}} / {{slidesLength}}",containerMessage:null,containerRoleDescriptionMessage:null,itemRoleDescriptionMessage:null,slideRole:"group",id:null}});let i=null;function r(e){const t=i;0!==t.length&&(t.html(""),t.html(e))}function n(e){e.attr("tabIndex","0")}function l(e){e.attr("tabIndex","-1")}function o(e,t){e.attr("role",t)}function c(e,t){e.attr("aria-roledescription",t)}function p(e,t){e.attr("aria-label",t)}function u(e){e.attr("aria-disabled",!0)}function h(e){e.attr("aria-disabled",!1)}function m(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,a=d(e.target);t.navigation&&t.navigation.$nextEl&&a.is(t.navigation.$nextEl)&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?r(s.lastSlideMessage):r(s.nextSlideMessage)),t.navigation&&t.navigation.$prevEl&&a.is(t.navigation.$prevEl)&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?r(s.firstSlideMessage):r(s.prevSlideMessage)),t.pagination&&a.is(U(t.params.pagination.bulletClass))&&a[0].click()}function f(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function g(){return f()&&t.params.pagination.clickable}const v=(e,t,s)=>{n(e),"BUTTON"!==e[0].tagName&&(o(e,"button"),e.on("keydown",m)),p(e,s),function(e,t){e.attr("aria-controls",t)}(e,t)},w=e=>{const s=e.target.closest(`.${t.params.slideClass}`);if(!s||!t.slides.includes(s))return;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||t.slideTo(t.slides.indexOf(s),0)},b=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&c(d(t.slides),e.itemRoleDescriptionMessage),o(d(t.slides),e.slideRole);const s=t.params.loop?t.slides.filter((e=>!e.classList.contains(t.params.slideDuplicateClass))).length:t.slides.length;e.slideLabelMessage&&t.slides.each(((a,i)=>{const r=d(a),n=t.params.loop?parseInt(r.attr("data-swiper-slide-index"),10):i;p(r,e.slideLabelMessage.replace(/\{\{index\}\}/,n+1).replace(/\{\{slidesLength\}\}/,s))}))},x=()=>{const e=t.params.a11y;t.$el.append(i);const s=t.$el;e.containerRoleDescriptionMessage&&c(s,e.containerRoleDescriptionMessage),e.containerMessage&&p(s,e.containerMessage);const a=t.$wrapperEl,r=e.id||a.attr("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const l=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var o;let d,u;o=r,a.attr("id",o),function(e,t){e.attr("aria-live",t)}(a,l),b(),t.navigation&&t.navigation.$nextEl&&(d=t.navigation.$nextEl),t.navigation&&t.navigation.$prevEl&&(u=t.navigation.$prevEl),d&&d.length&&v(d,r,e.nextSlideMessage),u&&u.length&&v(u,r,e.prevSlideMessage),g()&&t.pagination.$el.on("keydown",U(t.params.pagination.bulletClass),m),t.$el.on("focus",w,!0)};a("beforeInit",(()=>{i=d(`<span class="${t.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`)})),a("afterInit",(()=>{t.params.a11y.enabled&&x()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&b()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{$nextEl:e,$prevEl:s}=t.navigation;s&&s.length>0&&(t.isBeginning?(u(s),l(s)):(h(s),n(s))),e&&e.length>0&&(t.isEnd?(u(e),l(e)):(h(e),n(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;f()&&t.pagination.bullets.each((s=>{const a=d(s);t.params.pagination.clickable&&(n(a),t.params.pagination.renderBullet||(o(a,"button"),p(a,e.paginationBulletMessage.replace(/\{\{index\}\}/,a.index()+1)))),a.is(`.${t.params.pagination.bulletActiveClass}`)?a.attr("aria-current","true"):a.removeAttr("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){let e,s;i&&i.length>0&&i.remove(),t.navigation&&t.navigation.$nextEl&&(e=t.navigation.$nextEl),t.navigation&&t.navigation.$prevEl&&(s=t.navigation.$prevEl),e&&e.off("keydown",m),s&&s.off("keydown",m),g()&&t.pagination.$el.off("keydown",U(t.params.pagination.bulletClass),m),t.$el.off("focus",w,!0)}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.slides.eq(s);let d=l(o.attr("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e}/${d}`}else n.pathname.includes(e)||(d=`${e}/${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i<r;i+=1){const r=t.slides.eq(i);if(l(r.attr("data-history"))===s&&!r.hasClass(t.params.slideDuplicateClass)){const s=r.index();t.slideTo(s,e,a)}}else t.slideTo(0,e,a)},p=()=>{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),(n.key||n.value)&&(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p))}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),c=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}});const p=()=>{i("hashChange");const e=o.location.hash.replace("#","");if(e!==t.slides.eq(t.activeIndex).attr("data-hash")){const s=t.$wrapperEl.children(`.${t.params.slideClass}[data-hash="${e}"]`).index();if(void 0===s)return;t.slideTo(s)}},u=()=>{if(l&&t.params.hashNavigation.enabled)if(t.params.hashNavigation.replaceState&&c.history&&c.history.replaceState)c.history.replaceState(null,null,`#${t.slides.eq(t.activeIndex).attr("data-hash")}`||""),i("hashSet");else{const e=t.slides.eq(t.activeIndex),s=e.attr("data-hash")||e.attr("data-history");o.location.hash=s||"",i("hashSet")}};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0;for(let a=0,i=t.slides.length;a<i;a+=1){const i=t.slides.eq(a);if((i.attr("data-hash")||i.attr("data-history"))===e&&!i.hasClass(t.params.slideDuplicateClass)){const e=i.index();t.slideTo(e,s,t.params.runCallbacksOnInit,!0)}}}t.params.hashNavigation.watchState&&d(c).on("hashchange",p)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d(c).off("hashchange",p)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&u()})),n("slideChange",(()=>{l&&t.params.cssMode&&u()}))},function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;function l(){const e=s.slides.eq(s.activeIndex);let a=s.params.autoplay.delay;e.attr("data-swiper-autoplay")&&(a=e.attr("data-swiper-autoplay")||s.params.autoplay.delay),clearTimeout(t),t=p((()=>{let e;s.params.autoplay.reverseDirection?s.params.loop?(s.loopFix(),e=s.slidePrev(s.params.speed,!0,!0),n("autoplay")):s.isBeginning?s.params.autoplay.stopOnLastSlide?d():(e=s.slideTo(s.slides.length-1,s.params.speed,!0,!0),n("autoplay")):(e=s.slidePrev(s.params.speed,!0,!0),n("autoplay")):s.params.loop?(s.loopFix(),e=s.slideNext(s.params.speed,!0,!0),n("autoplay")):s.isEnd?s.params.autoplay.stopOnLastSlide?d():(e=s.slideTo(0,s.params.speed,!0,!0),n("autoplay")):(e=s.slideNext(s.params.speed,!0,!0),n("autoplay")),(s.params.cssMode&&s.autoplay.running||!1===e)&&l()}),a)}function o(){return void 0===t&&(!s.autoplay.running&&(s.autoplay.running=!0,n("autoplayStart"),l(),!0))}function d(){return!!s.autoplay.running&&(void 0!==t&&(t&&(clearTimeout(t),t=void 0),s.autoplay.running=!1,n("autoplayStop"),!0))}function c(e){s.autoplay.running&&(s.autoplay.paused||(t&&clearTimeout(t),s.autoplay.paused=!0,0!==e&&s.params.autoplay.waitForTransition?["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].addEventListener(e,h)})):(s.autoplay.paused=!1,l())))}function u(){const e=a();"hidden"===e.visibilityState&&s.autoplay.running&&c(),"visible"===e.visibilityState&&s.autoplay.paused&&(l(),s.autoplay.paused=!1)}function h(e){s&&!s.destroyed&&s.$wrapperEl&&e.target===s.$wrapperEl[0]&&(["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].removeEventListener(e,h)})),s.autoplay.paused=!1,s.autoplay.running?l():d())}function m(){s.params.autoplay.disableOnInteraction?d():(n("autoplayPause"),c()),["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].removeEventListener(e,h)}))}function f(){s.params.autoplay.disableOnInteraction||(s.autoplay.paused=!1,n("autoplayResume"),l())}s.autoplay={running:!1,paused:!1},i({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}}),r("init",(()=>{if(s.params.autoplay.enabled){o();a().addEventListener("visibilitychange",u),s.params.autoplay.pauseOnMouseEnter&&(s.$el.on("mouseenter",m),s.$el.on("mouseleave",f))}})),r("beforeTransitionStart",((e,t,a)=>{s.autoplay.running&&(a||!s.params.autoplay.disableOnInteraction?s.autoplay.pause(t):d())})),r("sliderFirstMove",(()=>{s.autoplay.running&&(s.params.autoplay.disableOnInteraction?d():c())})),r("touchEnd",(()=>{s.params.cssMode&&s.autoplay.paused&&!s.params.autoplay.disableOnInteraction&&l()})),r("destroy",(()=>{s.$el.off("mouseenter",m),s.$el.off("mouseleave",f),s.autoplay.running&&d();a().removeEventListener("visibilitychange",u)})),Object.assign(s.autoplay,{pause:c,run:l,start:o,stop:d})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let i=!1,r=!1;function n(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&d(a).hasClass(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;if(i=e.params.loop?parseInt(d(e.clickedSlide).attr("data-swiper-slide-index"),10):s,t.params.loop){let e=t.activeIndex;t.slides.eq(e).hasClass(t.params.slideDuplicateClass)&&(t.loopFix(),t._clientLeft=t.$wrapperEl[0].clientLeft,e=t.activeIndex);const s=t.slides.eq(e).prevAll(`[data-swiper-slide-index="${i}"]`).eq(0).index(),a=t.slides.eq(e).nextAll(`[data-swiper-slide-index="${i}"]`).eq(0).index();i=void 0===s?a:void 0===a?s:a-e<e-s?a:s}t.slideTo(i)}function l(){const{thumbs:e}=t.params;if(i)return!1;i=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1});else if(m(e.swiper)){const a=Object.assign({},e.swiper);Object.assign(a,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(a),r=!0}return t.thumbs.swiper.$el.addClass(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",n),!0}function o(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const a="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView,i=t.params.thumbs.autoScrollOffset,r=i&&!s.params.loop;if(t.realIndex!==s.realIndex||r){let n,l,o=s.activeIndex;if(s.params.loop){s.slides.eq(o).hasClass(s.params.slideDuplicateClass)&&(s.loopFix(),s._clientLeft=s.$wrapperEl[0].clientLeft,o=s.activeIndex);const e=s.slides.eq(o).prevAll(`[data-swiper-slide-index="${t.realIndex}"]`).eq(0).index(),a=s.slides.eq(o).nextAll(`[data-swiper-slide-index="${t.realIndex}"]`).eq(0).index();n=void 0===e?a:void 0===a?e:a-o==o-e?s.params.slidesPerGroup>1?a:o:a-o<o-e?a:e,l=t.activeIndex>t.previousIndex?"next":"prev"}else n=t.realIndex,l=n>t.previousIndex?"next":"prev";r&&(n+="next"===l?i:-1*i),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(n)<0&&(s.params.centeredSlides?n=n>o?n-Math.floor(a/2)+1:n+Math.floor(a/2)-1:n>o&&s.params.slidesPerGroup,s.slideTo(n,e?0:void 0))}let n=1;const l=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(n=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(n=1),n=Math.floor(n),s.slides.removeClass(l),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e<n;e+=1)s.$wrapperEl.children(`[data-swiper-slide-index="${t.realIndex+e}"]`).addClass(l);else for(let e=0;e<n;e+=1)s.slides.eq(t.realIndex+e).addClass(l)}t.thumbs={swiper:null},a("beforeInit",(()=>{const{thumbs:e}=t.params;e&&e.swiper&&(l(),o(!0))})),a("slideChange update resize observerUpdate",(()=>{o()})),a("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),a("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&r&&e.destroy()})),Object.assign(t.thumbs,{init:l,update:o})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:u()})},onTouchEnd:function(e){let{currentPos:s}=e;const{params:r,$wrapperEl:n,rtlTranslate:l,snapGrid:o,touchEventsData:d}=t,c=u()-d.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length<o.length?t.slideTo(o.length-1):t.slideTo(t.slides.length-1);else{if(r.freeMode.momentum){if(d.velocities.length>1){const e=d.velocities.pop(),s=d.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)<r.freeMode.minimumVelocity&&(t.velocity=0),(i>150||u()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,d.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let c=t.translate+s;l&&(c=-c);let p,h=!1;const m=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(c<t.maxTranslate())r.freeMode.momentumBounce?(c+t.maxTranslate()<-m&&(c=t.maxTranslate()-m),p=t.maxTranslate(),h=!0,d.allowMomentumBounce=!0):c=t.maxTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(c>t.minTranslate())r.freeMode.momentumBounce?(c-t.minTranslate()>m&&(c=t.minTranslate()+m),p=t.minTranslate(),h=!0,d.allowMomentumBounce=!0):c=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t<o.length;t+=1)if(o[t]>-c){e=t;break}c=Math.abs(o[e]-c)<Math.abs(o[e-1]-c)||"next"===t.swipeDirection?o[e]:o[e-1],c=-c}if(f&&i("transitionEnd",(()=>{t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-c:c)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s<a?r.speed:s<2*a?1.5*r.speed:2.5*r.speed}}else if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode.momentumBounce&&h?(t.updateProgress(p),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating=!0,n.transitionEnd((()=>{t&&!t.destroyed&&d.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(p),n.transitionEnd((()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,n.transitionEnd((()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||c>=r.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,{swiper:i,extendParams:r}=e;r({grid:{rows:1,fill:"column"}}),i.grid={initSlides:e=>{const{slidesPerView:r}=i.params,{rows:n,fill:l}=i.params.grid;s=t/n,a=Math.floor(e/n),t=Math.floor(e/n)===e/n?e:Math.ceil(e/n)*n,"auto"!==r&&"row"===l&&(t=Math.max(t,r*n))},updateSlide:(e,r,n,l)=>{const{slidesPerGroup:o,spaceBetween:d}=i.params,{rows:c,fill:p}=i.params.grid;let u,h,m;if("row"===p&&o>1){const s=Math.floor(e/(o*c)),a=e-c*o*s,i=0===s?o:Math.min(Math.ceil((n-s*c*o)/c),o);m=Math.floor(a/i),h=a-m*i+s*o,u=h+m*t/c,r.css({"-webkit-order":u,order:u})}else"column"===p?(h=Math.floor(e/c),m=e-h*c,(h>a||h===a&&m===c-1)&&(m+=1,m>=c&&(m=0,h+=1))):(m=Math.floor(e/s),h=e-m*s);r.css(l("margin-top"),0!==m?d&&`${d}px`:"")},updateWrapperSize:(e,s,a)=>{const{spaceBetween:r,centeredSlides:n,roundLengths:l}=i.params,{rows:o}=i.params.grid;if(i.virtualSize=(e+r)*t,i.virtualSize=Math.ceil(i.virtualSize/o)-r,i.$wrapperEl.css({[a("width")]:`${i.virtualSize+r}px`}),n){s.splice(0,s.length);const e=[];for(let t=0;t<s.length;t+=1){let a=s[t];l&&(a=Math.floor(a)),s[t]<i.virtualSize+s[0]&&e.push(a)}s.push(...e)}}}},function(e){let{swiper:t}=e;Object.assign(t,{appendSlide:K.bind(t),prependSlide:Z.bind(t),addSlide:Q.bind(t),removeSlide:J.bind(t),removeAllSlides:ee.bind(t)})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({fadeEffect:{crossFade:!1,transformEl:null}}),te({effect:"fade",swiper:t,on:a,setTranslate:()=>{const{slides:e}=t,s=t.params.fadeEffect;for(let a=0;a<e.length;a+=1){const e=t.slides.eq(a);let i=-e[0].swiperSlideOffset;t.params.virtualTranslate||(i-=t.translate);let r=0;t.isHorizontal()||(r=i,i=0);const n=t.params.fadeEffect.crossFade?Math.max(1-Math.abs(e[0].progress),0):1+Math.min(Math.max(e[0].progress,-1),0);se(s,e).css({opacity:n}).transform(`translate3d(${i}px, ${r}px, 0px)`)}},setTransition:e=>{const{transformEl:s}=t.params.fadeEffect;(s?t.slides.find(s):t.slides).transition(e),ae({swiper:t,duration:e,transformEl:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.find(".swiper-slide-shadow-left"):e.find(".swiper-slide-shadow-top"),i=s?e.find(".swiper-slide-shadow-right"):e.find(".swiper-slide-shadow-bottom");0===a.length&&(a=d(`<div class="swiper-slide-shadow-${s?"left":"top"}"></div>`),e.append(a)),0===i.length&&(i=d(`<div class="swiper-slide-shadow-${s?"right":"bottom"}"></div>`),e.append(i)),a.length&&(a[0].style.opacity=Math.max(-t,0)),i.length&&(i[0].style.opacity=Math.max(t,0))};te({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{$el:e,$wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:c}=t,p=t.params.cubeEffect,u=t.isHorizontal(),h=t.virtual&&t.params.virtual.enabled;let m,f=0;p.shadow&&(u?(m=s.find(".swiper-cube-shadow"),0===m.length&&(m=d('<div class="swiper-cube-shadow"></div>'),s.append(m)),m.css({height:`${r}px`})):(m=e.find(".swiper-cube-shadow"),0===m.length&&(m=d('<div class="swiper-cube-shadow"></div>'),e.append(m))));for(let e=0;e<a.length;e+=1){const t=a.eq(e);let s=e;h&&(s=parseInt(t.attr("data-swiper-slide-index"),10));let r=90*s,n=Math.floor(r/360);l&&(r=-r,n=Math.floor(-r/360));const d=Math.max(Math.min(t[0].progress,1),-1);let c=0,m=0,g=0;s%4==0?(c=4*-n*o,g=0):(s-1)%4==0?(c=0,g=4*-n*o):(s-2)%4==0?(c=o+4*n*o,g=o):(s-3)%4==0&&(c=-o,g=3*o+4*o*n),l&&(c=-c),u||(m=c,c=0);const v=`rotateX(${u?0:-r}deg) rotateY(${u?r:0}deg) translate3d(${c}px, ${m}px, ${g}px)`;d<=1&&d>-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.transform(v),p.slideShadows&&i(t,d,u)}if(s.css({"-webkit-transform-origin":`50% 50% -${o/2}px`,"transform-origin":`50% 50% -${o/2}px`}),p.shadow)if(u)m.transform(`translate3d(0px, ${r/2+p.shadowOffset}px, ${-r/2}px) rotateX(90deg) rotateZ(0deg) scale(${p.shadowScale})`);else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,a=p.shadowScale/t,i=p.shadowOffset;m.transform(`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-90deg)`)}const g=c.isSafari||c.isWebView?-o/2:0;s.transform(`translate3d(0px,0,${g}px) rotateX(${t.isHorizontal()?0:f}deg) rotateY(${t.isHorizontal()?-f:0}deg)`),s[0].style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{$el:s,slides:a}=t;a.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.cubeEffect.shadow&&!t.isHorizontal()&&s.find(".swiper-cube-shadow").transition(e)},recreateShadows:()=>{const e=t.isHorizontal();t.slides.each((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(d(t),s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0,transformEl:null}});const i=(e,s,a)=>{let i=t.isHorizontal()?e.find(".swiper-slide-shadow-left"):e.find(".swiper-slide-shadow-top"),r=t.isHorizontal()?e.find(".swiper-slide-shadow-right"):e.find(".swiper-slide-shadow-bottom");0===i.length&&(i=ie(a,e,t.isHorizontal()?"left":"top")),0===r.length&&(r=ie(a,e,t.isHorizontal()?"right":"bottom")),i.length&&(i[0].style.opacity=Math.max(-s,0)),r.length&&(r[0].style.opacity=Math.max(s,0))};te({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect;for(let r=0;r<e.length;r+=1){const n=e.eq(r);let l=n[0].progress;t.params.flipEffect.limitRotation&&(l=Math.max(Math.min(n[0].progress,1),-1));const o=n[0].swiperSlideOffset;let d=-180*l,c=0,p=t.params.cssMode?-o-t.translate:-o,u=0;t.isHorizontal()?s&&(d=-d):(u=p,p=0,c=-d,d=0),n[0].style.zIndex=-Math.abs(Math.round(l))+e.length,a.slideShadows&&i(n,l,a);const h=`translate3d(${p}px, ${u}px, 0px) rotateX(${c}deg) rotateY(${d}deg)`;se(a,n).transform(h)}},setTransition:e=>{const{transformEl:s}=t.params.flipEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),ae({swiper:t,duration:e,transformEl:s})},recreateShadows:()=>{const e=t.params.flipEffect;t.slides.each((s=>{const a=d(s);let r=a[0].progress;t.params.flipEffect.limitRotation&&(r=Math.max(Math.min(s.progress,1),-1)),i(a,r,e)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0,transformEl:null}}),te({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth;for(let e=0,t=a.length;e<t;e+=1){const t=a.eq(e),s=i[e],l=(o-t[0].swiperSlideOffset-s/2)/s,p="function"==typeof r.modifier?r.modifier(l):l*r.modifier;let u=n?d*p:0,h=n?0:d*p,m=-c*Math.abs(p),f=r.stretch;"string"==typeof f&&-1!==f.indexOf("%")&&(f=parseFloat(r.stretch)/100*s);let g=n?0:f*p,v=n?f*p:0,w=1-(1-r.scale)*Math.abs(p);Math.abs(v)<.001&&(v=0),Math.abs(g)<.001&&(g=0),Math.abs(m)<.001&&(m=0),Math.abs(u)<.001&&(u=0),Math.abs(h)<.001&&(h=0),Math.abs(w)<.001&&(w=0);const b=`translate3d(${v}px,${g}px,${m}px) rotateX(${h}deg) rotateY(${u}deg) scale(${w})`;if(se(r,t).transform(b),t[0].style.zIndex=1-Math.abs(Math.round(p)),r.slideShadows){let e=n?t.find(".swiper-slide-shadow-left"):t.find(".swiper-slide-shadow-top"),s=n?t.find(".swiper-slide-shadow-right"):t.find(".swiper-slide-shadow-bottom");0===e.length&&(e=ie(r,t,n?"left":"top")),0===s.length&&(s=ie(r,t,n?"right":"bottom")),e.length&&(e[0].style.opacity=p>0?p:0),s.length&&(s[0].style.opacity=-p>0?-p:0)}}},setTransition:e=>{const{transformEl:s}=t.params.coverflowEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{transformEl:null,limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;te({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,$wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.transform(`translateX(calc(50% - ${e}px))`)}for(let s=0;s<e.length;s+=1){const a=e.eq(s),o=a[0].progress,d=Math.min(Math.max(a[0].progress,-r.limitProgress),r.limitProgress);let c=d;l||(c=Math.min(Math.max(a[0].originalProgress,-r.limitProgress),r.limitProgress));const p=a[0].swiperSlideOffset,u=[t.params.cssMode?-p-t.translate:-p,0,0],h=[0,0,0];let m=!1;t.isHorizontal()||(u[1]=u[0],u[0]=0);let f={translate:[0,0,0],rotate:[0,0,0],scale:1,opacity:1};d<0?(f=r.next,m=!0):d>0&&(f=r.prev,m=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${i(f.translate[t])} * ${Math.abs(d*n)}))`})),h.forEach(((e,t)=>{h[t]=f.rotate[t]*Math.abs(d*n)})),a[0].style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${h[0]}deg) rotateY(${h[1]}deg) rotateZ(${h[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,x=`translate3d(${g}) ${v} ${w}`;if(m&&f.shadow||!m){let e=a.children(".swiper-slide-shadow");if(0===e.length&&f.shadow&&(e=ie(r,a)),e.length){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e[0].style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const y=se(r,a);y.transform(x).css({opacity:b}),f.origin&&y.css("transform-origin",f.origin)}},setTransition:e=>{const{transformEl:s}=t.params.creativeEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow").transition(e),ae({swiper:t,duration:e,transformEl:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,transformEl:null,rotate:!0}}),te({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s}=t,a=t.params.cardsEffect,{startTranslate:i,isTouched:r}=t.touchEventsData,n=t.translate;for(let l=0;l<e.length;l+=1){const o=e.eq(l),d=o[0].progress,c=Math.min(Math.max(d,-4),4);let p=o[0].swiperSlideOffset;t.params.centeredSlides&&!t.params.cssMode&&t.$wrapperEl.transform(`translateX(${t.minTranslate()}px)`),t.params.centeredSlides&&t.params.cssMode&&(p-=e[0].swiperSlideOffset);let u=t.params.cssMode?-p-t.translate:-p,h=0;const m=-100*Math.abs(c);let f=1,g=-2*c,v=8-.75*Math.abs(c);const w=t.virtual&&t.params.virtual.enabled?t.virtual.from+l:l,b=(w===s||w===s-1)&&c>0&&c<1&&(r||t.params.cssMode)&&n<i,x=(w===s||w===s+1)&&c<0&&c>-1&&(r||t.params.cssMode)&&n>i;if(b||x){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;g+=-28*c*e,f+=-.5*e,v+=96*e,h=-25*e*Math.abs(c)+"%"}if(u=c<0?`calc(${u}px + (${v*Math.abs(c)}%))`:c>0?`calc(${u}px + (-${v*Math.abs(c)}%))`:`${u}px`,!t.isHorizontal()){const e=h;h=u,u=e}const y=c<0?""+(1+(1-f)*c):""+(1-(1-f)*c),E=`\n translate3d(${u}, ${h}, ${m}px)\n rotateZ(${a.rotate?g:0}deg)\n scale(${y})\n `;if(a.slideShadows){let e=o.find(".swiper-slide-shadow");0===e.length&&(e=ie(a,o)),e.length&&(e[0].style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}o[0].style.zIndex=-Math.abs(Math.round(d))+e.length;se(a,o).transform(E)}},setTransition:e=>{const{transformEl:s}=t.params.cardsEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow").transition(e),ae({swiper:t,duration:e,transformEl:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return V.use(re),V}));
</script>
<style id="swiper-js-css">
/**
* Swiper 8.2.4
* Most modern mobile touch slider and framework with hardware accelerated transitions
* https://swiperjs.com
*
* Copyright 2014-2022 Vladimir Kharlampidi
*
* Released under the MIT License
*
* Released on: June 13, 2022
*/
@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:50%;background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}
</style>
<script>
$(document).ready(function() {
var utm_overrides = {};
utm_overrides.utm_source = '';
utm_overrides.utm_medium = '';
utm_overrides.utm_content = '';
utm_overrides.utm_campaign = '';
window.appendUTM = function(url, utm_content, UTMnone) {
if (UTMnone) {
return url;
}
if (url.includes('mailto:')) {
return url;
}
url = new URL(url);
var hasUTM_source = url.searchParams.has('utm_source');
var hasUTM_medium = url.searchParams.has('utm_medium');
var hasUTM_content = url.searchParams.has('utm_content');
var hasUTM_campaign = url.searchParams.has('utm_campaign');
if (hasUTM_source && hasUTM_medium && hasUTM_content && hasUTM_campaign) {
return url.href;
}
var newURL = '';
newURL = url.origin;
newURL += url.pathname;
if (url.search) {
newURL += url.search;
}
if (!hasUTM_source) {
var source = 'the+new+stack';
if (utm_overrides.utm_source) {
source = utm_overrides.utm_source;
}
if (newURL.includes('?')) {
newURL += '&utm_source=' + source;
} else {
newURL += '?utm_source=' + source;
}
}
if (!hasUTM_medium) {
var medium = 'referral';
if (utm_overrides.utm_medium) {
medium = utm_overrides.utm_medium;
}
if (newURL.includes('?')) {
newURL += '&utm_medium=' + medium;
} else {
newURL += '?utm_medium=' + medium;
}
}
if (!hasUTM_content && utm_content) {
var content = utm_content;
if (utm_overrides.utm_content) {
content = utm_overrides.utm_content;
}
if (newURL.includes('?')) {
newURL += '&utm_content=' + content;
} else {
newURL += '?utm_content=' + content;
}
}
if (!hasUTM_campaign) {
var campaign = 'tns+platform';
if (utm_overrides.utm_campaign) {
campaign = utm_overrides.utm_campaign;
}
if (newURL.includes('?')) {
newURL += '&utm_campaign=' + campaign
} else {
newURL += '?utm_campaign=' + campaign
}
}
if (url.hash) {
newURL += url.hash;
}
return newURL;
}
});
</script>
<link rel="icon" type="image/png" href="https://thenewstack.io/favicon-96x96.png?v=20260605" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="https://thenewstack.io/favicon.svg?v=20260605" />
<link rel="shortcut icon" href="https://thenewstack.io/favicon.ico?v=20260605" />
<link rel="apple-touch-icon" sizes="180x180" href="https://thenewstack.io/apple-touch-icon.png?v=20260605" />
<meta name="apple-mobile-web-app-title" content="TNS" />
<link rel="manifest" href="https://thenewstack.io/site.webmanifest?v=20260605" />
<!-- Google Ad Manager -->
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<!-- Cloudflare Turnstile -->
<!-- <script defer src="https://challenges.cloudflare.com/turnstile/v0/api.js?onload=onloadTurnstileCallback"></script> -->
<script defer src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit"></script>
<!-- RSS Feed Meta -->
<link rel="alternate" type="application/rss+xml" href="https://thenewstack.io/blog/feed/">
<!-- PhotoSwipe -->
<script>
/*!
* PhotoSwipe 5.4.2 - https://photoswipe.com
* (c) 2023 Dmytro Semenov
*/
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t="undefined"!=typeof globalThis?globalThis:t||self).PhotoSwipe=i()}(this,(function(){"use strict";function t(t,i,s){const h=document.createElement(i);return t&&(h.className=t),s&&s.appendChild(h),h}function i(t,i){return t.x=i.x,t.y=i.y,void 0!==i.id&&(t.id=i.id),t}function s(t){t.x=Math.round(t.x),t.y=Math.round(t.y)}function h(t,i){const s=Math.abs(t.x-i.x),h=Math.abs(t.y-i.y);return Math.sqrt(s*s+h*h)}function e(t,i){return t.x===i.x&&t.y===i.y}function n(t,i,s){return Math.min(Math.max(t,i),s)}function o(t,i,s){let h=`translate3d(${t}px,${i||0}px,0)`;return void 0!==s&&(h+=` scale3d(${s},${s},1)`),h}function r(t,i,s,h){t.style.transform=o(i,s,h)}function a(t,i,s,h){t.style.transition=i?`${i} ${s}ms ${h||"cubic-bezier(.4,0,.22,1)"}`:"none"}function l(t,i,s){t.style.width="number"==typeof i?`${i}px`:i,t.style.height="number"==typeof s?`${s}px`:s}const c="idle",d="loading",u="loaded",p="error";function m(){return!(!navigator.vendor||!navigator.vendor.match(/apple/i))}let v=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>{v=!0}}))}catch(t){}class f{constructor(){this.t=[]}add(t,i,s,h){this.i(t,i,s,h)}remove(t,i,s,h){this.i(t,i,s,h,!0)}removeAll(){this.t.forEach((t=>{this.i(t.target,t.type,t.listener,t.passive,!0,!0)})),this.t=[]}i(t,i,s,h,e,n){if(!t)return;const o=e?"removeEventListener":"addEventListener";i.split(" ").forEach((i=>{if(i){n||(e?this.t=this.t.filter((h=>h.type!==i||h.listener!==s||h.target!==t)):this.t.push({target:t,type:i,listener:s,passive:h}));const r=!!v&&{passive:h||!1};t[o](i,s,r)}}))}}function w(t,i){if(t.getViewportSizeFn){const s=t.getViewportSizeFn(t,i);if(s)return s}return{x:document.documentElement.clientWidth,y:window.innerHeight}}function g(t,i,s,h,e){let n=0;if(i.paddingFn)n=i.paddingFn(s,h,e)[t];else if(i.padding)n=i.padding[t];else{const s="padding"+t[0].toUpperCase()+t.slice(1);i[s]&&(n=i[s])}return Number(n)||0}function y(t,i,s,h){return{x:i.x-g("left",t,i,s,h)-g("right",t,i,s,h),y:i.y-g("top",t,i,s,h)-g("bottom",t,i,s,h)}}class _{constructor(t){this.slide=t,this.currZoomLevel=1,this.center={x:0,y:0},this.max={x:0,y:0},this.min={x:0,y:0}}update(t){this.currZoomLevel=t,this.slide.width?(this.o("x"),this.o("y"),this.slide.pswp.dispatch("calcBounds",{slide:this.slide})):this.reset()}o(t){const{pswp:i}=this.slide,s=this.slide["x"===t?"width":"height"]*this.currZoomLevel,h=g("x"===t?"left":"top",i.options,i.viewportSize,this.slide.data,this.slide.index),e=this.slide.panAreaSize[t];this.center[t]=Math.round((e-s)/2)+h,this.max[t]=s>e?Math.round(e-s)+h:this.center[t],this.min[t]=s>e?h:this.center[t]}reset(){this.center.x=0,this.center.y=0,this.max.x=0,this.max.y=0,this.min.x=0,this.min.y=0}correctPan(t,i){return n(i,this.max[t],this.min[t])}}class x{constructor(t,i,s,h){this.pswp=h,this.options=t,this.itemData=i,this.index=s,this.panAreaSize=null,this.elementSize=null,this.fit=1,this.fill=1,this.vFill=1,this.initial=1,this.secondary=1,this.max=1,this.min=1}update(t,i,s){const h={x:t,y:i};this.elementSize=h,this.panAreaSize=s;const e=s.x/h.x,n=s.y/h.y;this.fit=Math.min(1,e<n?e:n),this.fill=Math.min(1,e>n?e:n),this.vFill=Math.min(1,n),this.initial=this.l(),this.secondary=this.u(),this.max=Math.max(this.initial,this.secondary,this.p()),this.min=Math.min(this.fit,this.initial,this.secondary),this.pswp&&this.pswp.dispatch("zoomLevelsUpdate",{zoomLevels:this,slideData:this.itemData})}m(t){const i=t+"ZoomLevel",s=this.options[i];if(s)return"function"==typeof s?s(this):"fill"===s?this.fill:"fit"===s?this.fit:Number(s)}u(){let t=this.m("secondary");return t||(t=Math.min(1,3*this.fit),this.elementSize&&t*this.elementSize.x>4e3&&(t=4e3/this.elementSize.x),t)}l(){return this.m("initial")||this.fit}p(){return this.m("max")||Math.max(1,4*this.fit)}}class b{constructor(i,s,h){this.data=i,this.index=s,this.pswp=h,this.isActive=s===h.currIndex,this.currentResolution=0,this.panAreaSize={x:0,y:0},this.pan={x:0,y:0},this.isFirstSlide=this.isActive&&!h.opener.isOpen,this.zoomLevels=new x(h.options,i,s,h),this.pswp.dispatch("gettingData",{slide:this,data:this.data,index:s}),this.content=this.pswp.contentLoader.getContentBySlide(this),this.container=t("pswp__zoom-wrap","div"),this.holderElement=null,this.currZoomLevel=1,this.width=this.content.width,this.height=this.content.height,this.heavyAppended=!1,this.bounds=new _(this),this.prevDisplayedWidth=-1,this.prevDisplayedHeight=-1,this.pswp.dispatch("slideInit",{slide:this})}setIsActive(t){t&&!this.isActive?this.activate():!t&&this.isActive&&this.deactivate()}append(t){this.holderElement=t,this.container.style.transformOrigin="0 0",this.data&&(this.calculateSize(),this.load(),this.updateContentSize(),this.appendHeavy(),this.holderElement.appendChild(this.container),this.zoomAndPanToInitial(),this.pswp.dispatch("firstZoomPan",{slide:this}),this.applyCurrentZoomPan(),this.pswp.dispatch("afterSetContent",{slide:this}),this.isActive&&this.activate())}load(){this.content.load(!1),this.pswp.dispatch("slideLoad",{slide:this})}appendHeavy(){const{pswp:t}=this;!this.heavyAppended&&t.opener.isOpen&&!t.mainScroll.isShifted()&&(this.isActive,1)&&(this.pswp.dispatch("appendHeavy",{slide:this}).defaultPrevented||(this.heavyAppended=!0,this.content.append(),this.pswp.dispatch("appendHeavyContent",{slide:this})))}activate(){this.isActive=!0,this.appendHeavy(),this.content.activate(),this.pswp.dispatch("slideActivate",{slide:this})}deactivate(){this.isActive=!1,this.content.deactivate(),this.currZoomLevel!==this.zoomLevels.initial&&this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize(),this.pswp.dispatch("slideDeactivate",{slide:this})}destroy(){this.content.hasSlide=!1,this.content.remove(),this.container.remove(),this.pswp.dispatch("slideDestroy",{slide:this})}resize(){this.currZoomLevel!==this.zoomLevels.initial&&this.isActive?(this.calculateSize(),this.bounds.update(this.currZoomLevel),this.panTo(this.pan.x,this.pan.y)):(this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize())}updateContentSize(t){const i=this.currentResolution||this.zoomLevels.initial;if(!i)return;const s=Math.round(this.width*i)||this.pswp.viewportSize.x,h=Math.round(this.height*i)||this.pswp.viewportSize.y;(this.sizeChanged(s,h)||t)&&this.content.setDisplayedSize(s,h)}sizeChanged(t,i){return(t!==this.prevDisplayedWidth||i!==this.prevDisplayedHeight)&&(this.prevDisplayedWidth=t,this.prevDisplayedHeight=i,!0)}getPlaceholderElement(){var t;return null===(t=this.content.placeholder)||void 0===t?void 0:t.element}zoomTo(t,i,h,e){const{pswp:o}=this;if(!this.isZoomable()||o.mainScroll.isShifted())return;o.dispatch("beforeZoomTo",{destZoomLevel:t,centerPoint:i,transitionDuration:h}),o.animations.stopAllPan();const r=this.currZoomLevel;e||(t=n(t,this.zoomLevels.min,this.zoomLevels.max)),this.setZoomLevel(t),this.pan.x=this.calculateZoomToPanOffset("x",i,r),this.pan.y=this.calculateZoomToPanOffset("y",i,r),s(this.pan);const a=()=>{this.v(t),this.applyCurrentZoomPan()};h?o.animations.startTransition({isPan:!0,name:"zoomTo",target:this.container,transform:this.getCurrentTransform(),onComplete:a,duration:h,easing:o.options.easing}):a()}toggleZoom(t){this.zoomTo(this.currZoomLevel===this.zoomLevels.initial?this.zoomLevels.secondary:this.zoomLevels.initial,t,this.pswp.options.zoomAnimationDuration)}setZoomLevel(t){this.currZoomLevel=t,this.bounds.update(this.currZoomLevel)}calculateZoomToPanOffset(t,i,s){if(0===this.bounds.max[t]-this.bounds.min[t])return this.bounds.center[t];i||(i=this.pswp.getViewportCenterPoint()),s||(s=this.zoomLevels.initial);const h=this.currZoomLevel/s;return this.bounds.correctPan(t,(this.pan[t]-i[t])*h+i[t])}panTo(t,i){this.pan.x=this.bounds.correctPan("x",t),this.pan.y=this.bounds.correctPan("y",i),this.applyCurrentZoomPan()}isPannable(){return Boolean(this.width)&&this.currZoomLevel>this.zoomLevels.fit}isZoomable(){return Boolean(this.width)&&this.content.isZoomable()}applyCurrentZoomPan(){this.g(this.pan.x,this.pan.y,this.currZoomLevel),this===this.pswp.currSlide&&this.pswp.dispatch("zoomPanUpdate",{slide:this})}zoomAndPanToInitial(){this.currZoomLevel=this.zoomLevels.initial,this.bounds.update(this.currZoomLevel),i(this.pan,this.bounds.center),this.pswp.dispatch("initialZoomPan",{slide:this})}g(t,i,s){s/=this.currentResolution||this.zoomLevels.initial,r(this.container,t,i,s)}calculateSize(){const{pswp:t}=this;i(this.panAreaSize,y(t.options,t.viewportSize,this.data,this.index)),this.zoomLevels.update(this.width,this.height,this.panAreaSize),t.dispatch("calcSlideSize",{slide:this})}getCurrentTransform(){const t=this.currZoomLevel/(this.currentResolution||this.zoomLevels.initial);return o(this.pan.x,this.pan.y,t)}v(t){t!==this.currentResolution&&(this.currentResolution=t,this.updateContentSize(),this.pswp.dispatch("resolutionChanged"))}}class S{constructor(t){this.gestures=t,this.pswp=t.pswp,this.startPan={x:0,y:0}}start(){this.pswp.currSlide&&i(this.startPan,this.pswp.currSlide.pan),this.pswp.animations.stopAll()}change(){const{p1:t,prevP1:i,dragAxis:h}=this.gestures,{currSlide:e}=this.pswp;if("y"===h&&this.pswp.options.closeOnVerticalDrag&&e&&e.currZoomLevel<=e.zoomLevels.fit&&!this.gestures.isMultitouch){const s=e.pan.y+(t.y-i.y);if(!this.pswp.dispatch("verticalDrag",{panY:s}).defaultPrevented){this._("y",s,.6);const t=1-Math.abs(this.S(e.pan.y));this.pswp.applyBgOpacity(t),e.applyCurrentZoomPan()}}else{this.M("x")||(this.M("y"),e&&(s(e.pan),e.applyCurrentZoomPan()))}}end(){const{velocity:t}=this.gestures,{mainScroll:i,currSlide:s}=this.pswp;let h=0;if(this.pswp.animations.stopAll(),i.isShifted()){const s=(i.x-i.getCurrSlideX())/this.pswp.viewportSize.x;t.x<-.5&&s<0||t.x<.1&&s<-.5?(h=1,t.x=Math.min(t.x,0)):(t.x>.5&&s>0||t.x>-.1&&s>.5)&&(h=-1,t.x=Math.max(t.x,0)),i.moveIndexBy(h,!0,t.x)}s&&s.currZoomLevel>s.zoomLevels.max||this.gestures.isMultitouch?this.gestures.zoomLevels.correctZoomPan(!0):(this.P("x"),this.P("y"))}P(t){const{velocity:i}=this.gestures,{currSlide:s}=this.pswp;if(!s)return;const{pan:h,bounds:e}=s,o=h[t],r=this.pswp.bgOpacity<1&&"y"===t,a=o+function(t,i){return t*i/(1-i)}(i[t],.995);if(r){const t=this.S(o),i=this.S(a);if(t<0&&i<-.4||t>0&&i>.4)return void this.pswp.close()}const l=e.correctPan(t,a);if(o===l)return;const c=l===a?1:.82,d=this.pswp.bgOpacity,u=l-o;this.pswp.animations.startSpring({name:"panGesture"+t,isPan:!0,start:o,end:l,velocity:i[t],dampingRatio:c,onUpdate:i=>{if(r&&this.pswp.bgOpacity<1){const t=1-(l-i)/u;this.pswp.applyBgOpacity(n(d+(1-d)*t,0,1))}h[t]=Math.floor(i),s.applyCurrentZoomPan()}})}M(t){const{p1:i,dragAxis:s,prevP1:h,isMultitouch:e}=this.gestures,{currSlide:n,mainScroll:o}=this.pswp,r=i[t]-h[t],a=o.x+r;if(!r||!n)return!1;if("x"===t&&!n.isPannable()&&!e)return o.moveTo(a,!0),!0;const{bounds:l}=n,c=n.pan[t]+r;if(this.pswp.options.allowPanToNext&&"x"===s&&"x"===t&&!e){const i=o.getCurrSlideX(),s=o.x-i,h=r>0,e=!h;if(c>l.min[t]&&h){if(l.min[t]<=this.startPan[t])return o.moveTo(a,!0),!0;this._(t,c)}else if(c<l.max[t]&&e){if(this.startPan[t]<=l.max[t])return o.moveTo(a,!0),!0;this._(t,c)}else if(0!==s){if(s>0)return o.moveTo(Math.max(a,i),!0),!0;if(s<0)return o.moveTo(Math.min(a,i),!0),!0}else this._(t,c)}else"y"===t&&(o.isShifted()||l.min.y===l.max.y)||this._(t,c);return!1}S(t){var i,s;return(t-(null!==(i=null===(s=this.pswp.currSlide)||void 0===s?void 0:s.bounds.center.y)&&void 0!==i?i:0))/(this.pswp.viewportSize.y/3)}_(t,i,s){const{currSlide:h}=this.pswp;if(!h)return;const{pan:e,bounds:n}=h;if(n.correctPan(t,i)!==i||s){const h=Math.round(i-e[t]);e[t]+=h*(s||.35)}else e[t]=i}}function z(t,i,s){return t.x=(i.x+s.x)/2,t.y=(i.y+s.y)/2,t}class M{constructor(t){this.gestures=t,this.C={x:0,y:0},this.T={x:0,y:0},this.A={x:0,y:0},this.D=!1,this.I=1}start(){const{currSlide:t}=this.gestures.pswp;t&&(this.I=t.currZoomLevel,i(this.C,t.pan)),this.gestures.pswp.animations.stopAllPan(),this.D=!1}change(){const{p1:t,startP1:i,p2:s,startP2:e,pswp:n}=this.gestures,{currSlide:o}=n;if(!o)return;const r=o.zoomLevels.min,a=o.zoomLevels.max;if(!o.isZoomable()||n.mainScroll.isShifted())return;z(this.T,i,e),z(this.A,t,s);let l=1/h(i,e)*h(t,s)*this.I;if(l>o.zoomLevels.initial+o.zoomLevels.initial/15&&(this.D=!0),l<r)if(n.options.pinchToClose&&!this.D&&this.I<=o.zoomLevels.initial){const t=1-(r-l)/(r/1.2);n.dispatch("pinchClose",{bgOpacity:t}).defaultPrevented||n.applyBgOpacity(t)}else l=r-.15*(r-l);else l>a&&(l=a+.05*(l-a));o.pan.x=this.L("x",l),o.pan.y=this.L("y",l),o.setZoomLevel(l),o.applyCurrentZoomPan()}end(){const{pswp:t}=this.gestures,{currSlide:i}=t;(!i||i.currZoomLevel<i.zoomLevels.initial)&&!this.D&&t.options.pinchToClose?t.close():this.correctZoomPan()}L(t,i){const s=i/this.I;return this.A[t]-(this.T[t]-this.C[t])*s}correctZoomPan(t){const{pswp:s}=this.gestures,{currSlide:h}=s;if(null==h||!h.isZoomable())return;0===this.A.x&&(t=!0);const o=h.currZoomLevel;let r,a=!0;o<h.zoomLevels.initial?r=h.zoomLevels.initial:o>h.zoomLevels.max?r=h.zoomLevels.max:(a=!1,r=o);const l=s.bgOpacity,c=s.bgOpacity<1,d=i({x:0,y:0},h.pan);let u=i({x:0,y:0},d);t&&(this.A.x=0,this.A.y=0,this.T.x=0,this.T.y=0,this.I=o,i(this.C,d)),a&&(u={x:this.L("x",r),y:this.L("y",r)}),h.setZoomLevel(r),u={x:h.bounds.correctPan("x",u.x),y:h.bounds.correctPan("y",u.y)},h.setZoomLevel(o);const p=!e(u,d);if(!p&&!a&&!c)return h.v(r),void h.applyCurrentZoomPan();s.animations.stopAllPan(),s.animations.startSpring({isPan:!0,start:0,end:1e3,velocity:0,dampingRatio:1,naturalFrequency:40,onUpdate:t=>{if(t/=1e3,p||a){if(p&&(h.pan.x=d.x+(u.x-d.x)*t,h.pan.y=d.y+(u.y-d.y)*t),a){const i=o+(r-o)*t;h.setZoomLevel(i)}h.applyCurrentZoomPan()}c&&s.bgOpacity<1&&s.applyBgOpacity(n(l+(1-l)*t,0,1))},onComplete:()=>{h.v(r),h.applyCurrentZoomPan()}})}}function P(t){return!!t.target.closest(".pswp__container")}class C{constructor(t){this.gestures=t}click(t,i){const s=i.target.classList,h=s.contains("pswp__img"),e=s.contains("pswp__item")||s.contains("pswp__zoom-wrap");h?this.k("imageClick",t,i):e&&this.k("bgClick",t,i)}tap(t,i){P(i)&&this.k("tap",t,i)}doubleTap(t,i){P(i)&&this.k("doubleTap",t,i)}k(t,i,s){var h;const{pswp:e}=this.gestures,{currSlide:n}=e,o=t+"Action",r=e.options[o];if(!e.dispatch(o,{point:i,originalEvent:s}).defaultPrevented)if("function"!=typeof r)switch(r){case"close":case"next":e[r]();break;case"zoom":null==n||n.toggleZoom(i);break;case"zoom-or-close":null!=n&&n.isZoomable()&&n.zoomLevels.secondary!==n.zoomLevels.initial?n.toggleZoom(i):e.options.clickToCloseNonZoomable&&e.close();break;case"toggle-controls":null===(h=this.gestures.pswp.element)||void 0===h||h.classList.toggle("pswp--ui-visible")}else r.call(e,i,s)}}class T{constructor(t){this.pswp=t,this.dragAxis=null,this.p1={x:0,y:0},this.p2={x:0,y:0},this.prevP1={x:0,y:0},this.prevP2={x:0,y:0},this.startP1={x:0,y:0},this.startP2={x:0,y:0},this.velocity={x:0,y:0},this.Z={x:0,y:0},this.B={x:0,y:0},this.F=0,this.O=[],this.R="ontouchstart"in window,this.N=!!window.PointerEvent,this.supportsTouch=this.R||this.N&&navigator.maxTouchPoints>1,this.F=0,this.U=0,this.V=!1,this.isMultitouch=!1,this.isDragging=!1,this.isZooming=!1,this.raf=null,this.G=null,this.supportsTouch||(t.options.allowPanToNext=!1),this.drag=new S(this),this.zoomLevels=new M(this),this.tapHandler=new C(this),t.on("bindEvents",(()=>{t.events.add(t.scrollWrap,"click",this.$.bind(this)),this.N?this.q("pointer","down","up","cancel"):this.R?(this.q("touch","start","end","cancel"),t.scrollWrap&&(t.scrollWrap.ontouchmove=()=>{},t.scrollWrap.ontouchend=()=>{})):this.q("mouse","down","up")}))}q(t,i,s,h){const{pswp:e}=this,{events:n}=e,o=h?t+h:"";n.add(e.scrollWrap,t+i,this.onPointerDown.bind(this)),n.add(window,t+"move",this.onPointerMove.bind(this)),n.add(window,t+s,this.onPointerUp.bind(this)),o&&n.add(e.scrollWrap,o,this.onPointerUp.bind(this))}onPointerDown(t){const s="mousedown"===t.type||"mouse"===t.pointerType;if(s&&t.button>0)return;const{pswp:h}=this;h.opener.isOpen?h.dispatch("pointerDown",{originalEvent:t}).defaultPrevented||(s&&(h.mouseDetected(),this.H(t,"down")),h.animations.stopAll(),this.K(t,"down"),1===this.F&&(this.dragAxis=null,i(this.startP1,this.p1)),this.F>1?(this.W(),this.isMultitouch=!0):this.isMultitouch=!1):t.preventDefault()}onPointerMove(t){this.H(t,"move"),this.F&&(this.K(t,"move"),this.pswp.dispatch("pointerMove",{originalEvent:t}).defaultPrevented||(1!==this.F||this.isDragging?this.F>1&&!this.isZooming&&(this.j(),this.isZooming=!0,this.X(),this.zoomLevels.start(),this.Y(),this.J()):(this.dragAxis||this.tt(),this.dragAxis&&!this.isDragging&&(this.isZooming&&(this.isZooming=!1,this.zoomLevels.end()),this.isDragging=!0,this.W(),this.X(),this.U=Date.now(),this.V=!1,i(this.B,this.p1),this.velocity.x=0,this.velocity.y=0,this.drag.start(),this.Y(),this.J()))))}j(){this.isDragging&&(this.isDragging=!1,this.V||this.it(!0),this.drag.end(),this.dragAxis=null)}onPointerUp(t){this.F&&(this.K(t,"up"),this.pswp.dispatch("pointerUp",{originalEvent:t}).defaultPrevented||(0===this.F&&(this.Y(),this.isDragging?this.j():this.isZooming||this.isMultitouch||this.st(t)),this.F<2&&this.isZooming&&(this.isZooming=!1,this.zoomLevels.end(),1===this.F&&(this.dragAxis=null,this.X()))))}J(){(this.isDragging||this.isZooming)&&(this.it(),this.isDragging?e(this.p1,this.prevP1)||this.drag.change():e(this.p1,this.prevP1)&&e(this.p2,this.prevP2)||this.zoomLevels.change(),this.ht(),this.raf=requestAnimationFrame(this.J.bind(this)))}it(t){const s=Date.now(),h=s-this.U;h<50&&!t||(this.velocity.x=this.et("x",h),this.velocity.y=this.et("y",h),this.U=s,i(this.B,this.p1),this.V=!0)}st(t){const{mainScroll:s}=this.pswp;if(s.isShifted())return void s.moveIndexBy(0,!0);if(t.type.indexOf("cancel")>0)return;if("mouseup"===t.type||"mouse"===t.pointerType)return void this.tapHandler.click(this.startP1,t);const e=this.pswp.options.doubleTapAction?300:0;this.G?(this.W(),h(this.Z,this.startP1)<25&&this.tapHandler.doubleTap(this.startP1,t)):(i(this.Z,this.startP1),this.G=setTimeout((()=>{this.tapHandler.tap(this.startP1,t),this.W()}),e))}W(){this.G&&(clearTimeout(this.G),this.G=null)}et(t,i){const s=this.p1[t]-this.B[t];return Math.abs(s)>1&&i>5?s/i:0}Y(){this.raf&&(cancelAnimationFrame(this.raf),this.raf=null)}H(t,i){this.pswp.applyFilters("preventPointerEvent",!0,t,i)&&t.preventDefault()}K(t,s){if(this.N){const h=t,e=this.O.findIndex((t=>t.id===h.pointerId));"up"===s&&e>-1?this.O.splice(e,1):"down"===s&&-1===e?this.O.push(this.nt(h,{x:0,y:0})):e>-1&&this.nt(h,this.O[e]),this.F=this.O.length,this.F>0&&i(this.p1,this.O[0]),this.F>1&&i(this.p2,this.O[1])}else{const i=t;this.F=0,i.type.indexOf("touch")>-1?i.touches&&i.touches.length>0&&(this.nt(i.touches[0],this.p1),this.F++,i.touches.length>1&&(this.nt(i.touches[1],this.p2),this.F++)):(this.nt(t,this.p1),"up"===s?this.F=0:this.F++)}}ht(){i(this.prevP1,this.p1),i(this.prevP2,this.p2)}X(){i(this.startP1,this.p1),i(this.startP2,this.p2),this.ht()}tt(){if(this.pswp.mainScroll.isShifted())this.dragAxis="x";else{const t=Math.abs(this.p1.x-this.startP1.x)-Math.abs(this.p1.y-this.startP1.y);if(0!==t){const i=t>0?"x":"y";Math.abs(this.p1[i]-this.startP1[i])>=10&&(this.dragAxis=i)}}}nt(t,i){return i.x=t.pageX-this.pswp.offset.x,i.y=t.pageY-this.pswp.offset.y,"pointerId"in t?i.id=t.pointerId:void 0!==t.identifier&&(i.id=t.identifier),i}$(t){this.pswp.mainScroll.isShifted()&&(t.preventDefault(),t.stopPropagation())}}class A{constructor(t){this.pswp=t,this.x=0,this.slideWidth=0,this.ot=0,this.rt=0,this.lt=-1,this.itemHolders=[]}resize(t){const{pswp:i}=this,s=Math.round(i.viewportSize.x+i.viewportSize.x*i.options.spacing),h=s!==this.slideWidth;h&&(this.slideWidth=s,this.moveTo(this.getCurrSlideX())),this.itemHolders.forEach(((i,s)=>{h&&r(i.el,(s+this.lt)*this.slideWidth),t&&i.slide&&i.slide.resize()}))}resetPosition(){this.ot=0,this.rt=0,this.slideWidth=0,this.lt=-1}appendHolders(){this.itemHolders=[];for(let i=0;i<3;i++){const s=t("pswp__item","div",this.pswp.container);s.setAttribute("role","group"),s.setAttribute("aria-roledescription","slide"),s.setAttribute("aria-hidden","true"),s.style.display=1===i?"block":"none",this.itemHolders.push({el:s})}}canBeSwiped(){return this.pswp.getNumItems()>1}moveIndexBy(t,i,s){const{pswp:h}=this;let e=h.potentialIndex+t;const n=h.getNumItems();if(h.canLoop()){e=h.getLoopedIndex(e);const i=(t+n)%n;t=i<=n/2?i:i-n}else e<0?e=0:e>=n&&(e=n-1),t=e-h.potentialIndex;h.potentialIndex=e,this.ot-=t,h.animations.stopMainScroll();const o=this.getCurrSlideX();if(i){h.animations.startSpring({isMainScroll:!0,start:this.x,end:o,velocity:s||0,naturalFrequency:30,dampingRatio:1,onUpdate:t=>{this.moveTo(t)},onComplete:()=>{this.updateCurrItem(),h.appendHeavy()}});let t=h.potentialIndex-h.currIndex;if(h.canLoop()){const i=(t+n)%n;t=i<=n/2?i:i-n}Math.abs(t)>1&&this.updateCurrItem()}else this.moveTo(o),this.updateCurrItem();return Boolean(t)}getCurrSlideX(){return this.slideWidth*this.ot}isShifted(){return this.x!==this.getCurrSlideX()}updateCurrItem(){var t;const{pswp:i}=this,s=this.rt-this.ot;if(!s)return;this.rt=this.ot,i.currIndex=i.potentialIndex;let h,e=Math.abs(s);e>=3&&(this.lt+=s+(s>0?-3:3),e=3);for(let t=0;t<e;t++)s>0?(h=this.itemHolders.shift(),h&&(this.itemHolders[2]=h,this.lt++,r(h.el,(this.lt+2)*this.slideWidth),i.setContent(h,i.currIndex-e+t+2))):(h=this.itemHolders.pop(),h&&(this.itemHolders.unshift(h),this.lt--,r(h.el,this.lt*this.slideWidth),i.setContent(h,i.currIndex+e-t-2)));Math.abs(this.lt)>50&&!this.isShifted()&&(this.resetPosition(),this.resize()),i.animations.stopAllPan(),this.itemHolders.forEach(((t,i)=>{t.slide&&t.slide.setIsActive(1===i)})),i.currSlide=null===(t=this.itemHolders[1])||void 0===t?void 0:t.slide,i.contentLoader.updateLazy(s),i.currSlide&&i.currSlide.applyCurrentZoomPan(),i.dispatch("change")}moveTo(t,i){if(!this.pswp.canLoop()&&i){let i=(this.slideWidth*this.ot-t)/this.slideWidth;i+=this.pswp.currIndex;const s=Math.round(t-this.x);(i<0&&s>0||i>=this.pswp.getNumItems()-1&&s<0)&&(t=this.x+.35*s)}this.x=t,this.pswp.container&&r(this.pswp.container,t),this.pswp.dispatch("moveMainScroll",{x:t,dragging:null!=i&&i})}}const D={Escape:27,z:90,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,Tab:9},I=(t,i)=>i?t:D[t];class E{constructor(t){this.pswp=t,this.ct=!1,t.on("bindEvents",(()=>{t.options.trapFocus&&(t.options.initialPointerPos||this.dt(),t.events.add(document,"focusin",this.ut.bind(this))),t.events.add(document,"keydown",this.vt.bind(this))}));const i=document.activeElement;t.on("destroy",(()=>{t.options.returnFocus&&i&&this.ct&&i.focus()}))}dt(){!this.ct&&this.pswp.element&&(this.pswp.element.focus(),this.ct=!0)}vt(t){const{pswp:i}=this;if(i.dispatch("keydown",{originalEvent:t}).defaultPrevented)return;if(function(t){return"button"in t&&1===t.button||t.ctrlKey||t.metaKey||t.altKey||t.shiftKey}(t))return;let s,h,e=!1;const n="key"in t;switch(n?t.key:t.keyCode){case I("Escape",n):i.options.escKey&&(s="close");break;case I("z",n):s="toggleZoom";break;case I("ArrowLeft",n):h="x";break;case I("ArrowUp",n):h="y";break;case I("ArrowRight",n):h="x",e=!0;break;case I("ArrowDown",n):e=!0,h="y";break;case I("Tab",n):this.dt()}if(h){t.preventDefault();const{currSlide:n}=i;i.options.arrowKeys&&"x"===h&&i.getNumItems()>1?s=e?"next":"prev":n&&n.currZoomLevel>n.zoomLevels.fit&&(n.pan[h]+=e?-80:80,n.panTo(n.pan.x,n.pan.y))}s&&(t.preventDefault(),i[s]())}ut(t){const{template:i}=this.pswp;i&&document!==t.target&&i!==t.target&&!i.contains(t.target)&&i.focus()}}const L="cubic-bezier(.4,0,.22,1)";class k{constructor(t){var i;this.props=t;const{target:s,onComplete:h,transform:e,onFinish:n=(()=>{}),duration:o=333,easing:r=L}=t;this.onFinish=n;const l=e?"transform":"opacity",c=null!==(i=t[l])&&void 0!==i?i:"";this.ft=s,this.wt=h,this.gt=!1,this.yt=this.yt.bind(this),this._t=setTimeout((()=>{a(s,l,o,r),this._t=setTimeout((()=>{s.addEventListener("transitionend",this.yt,!1),s.addEventListener("transitioncancel",this.yt,!1),this._t=setTimeout((()=>{this.xt()}),o+500),s.style[l]=c}),30)}),0)}yt(t){t.target===this.ft&&this.xt()}xt(){this.gt||(this.gt=!0,this.onFinish(),this.wt&&this.wt())}destroy(){this._t&&clearTimeout(this._t),a(this.ft),this.ft.removeEventListener("transitionend",this.yt,!1),this.ft.removeEventListener("transitioncancel",this.yt,!1),this.gt||this.xt()}}class Z{constructor(t,i,s){this.velocity=1e3*t,this.bt=i||.75,this.St=s||12,this.zt=this.St,this.bt<1&&(this.zt*=Math.sqrt(1-this.bt*this.bt))}easeFrame(t,i){let s,h=0;i/=1e3;const e=Math.E**(-this.bt*this.St*i);if(1===this.bt)s=this.velocity+this.St*t,h=(t+s*i)*e,this.velocity=h*-this.St+s*e;else if(this.bt<1){s=1/this.zt*(this.bt*this.St*t+this.velocity);const n=Math.cos(this.zt*i),o=Math.sin(this.zt*i);h=e*(t*n+s*o),this.velocity=h*-this.St*this.bt+e*(-this.zt*t*o+this.zt*s*n)}return h}}class B{constructor(t){this.props=t,this.Mt=0;const{start:i,end:s,velocity:h,onUpdate:e,onComplete:n,onFinish:o=(()=>{}),dampingRatio:r,naturalFrequency:a}=t;this.onFinish=o;const l=new Z(h,r,a);let c=Date.now(),d=i-s;const u=()=>{this.Mt&&(d=l.easeFrame(d,Date.now()-c),Math.abs(d)<1&&Math.abs(l.velocity)<50?(e(s),n&&n(),this.onFinish()):(c=Date.now(),e(d+s),this.Mt=requestAnimationFrame(u)))};this.Mt=requestAnimationFrame(u)}destroy(){this.Mt>=0&&cancelAnimationFrame(this.Mt),this.Mt=0}}class F{constructor(){this.activeAnimations=[]}startSpring(t){this.Pt(t,!0)}startTransition(t){this.Pt(t)}Pt(t,i){const s=i?new B(t):new k(t);return this.activeAnimations.push(s),s.onFinish=()=>this.stop(s),s}stop(t){t.destroy();const i=this.activeAnimations.indexOf(t);i>-1&&this.activeAnimations.splice(i,1)}stopAll(){this.activeAnimations.forEach((t=>{t.destroy()})),this.activeAnimations=[]}stopAllPan(){this.activeAnimations=this.activeAnimations.filter((t=>!t.props.isPan||(t.destroy(),!1)))}stopMainScroll(){this.activeAnimations=this.activeAnimations.filter((t=>!t.props.isMainScroll||(t.destroy(),!1)))}isPanRunning(){return this.activeAnimations.some((t=>t.props.isPan))}}class O{constructor(t){this.pswp=t,t.events.add(t.element,"wheel",this.Ct.bind(this))}Ct(t){t.preventDefault();const{currSlide:i}=this.pswp;let{deltaX:s,deltaY:h}=t;if(i&&!this.pswp.dispatch("wheel",{originalEvent:t}).defaultPrevented)if(t.ctrlKey||this.pswp.options.wheelToZoom){if(i.isZoomable()){let s=-h;1===t.deltaMode?s*=.05:s*=t.deltaMode?1:.002,s=2**s;const e=i.currZoomLevel*s;i.zoomTo(e,{x:t.clientX,y:t.clientY})}}else i.isPannable()&&(1===t.deltaMode&&(s*=18,h*=18),i.panTo(i.pan.x-s,i.pan.y-h))}}class R{constructor(i,s){var h;const e=s.name||s.className;let n=s.html;if(!1===i.options[e])return;"string"==typeof i.options[e+"SVG"]&&(n=i.options[e+"SVG"]),i.dispatch("uiElementCreate",{data:s});let o="";s.isButton?(o+="pswp__button ",o+=s.className||`pswp__button--${s.name}`):o+=s.className||`pswp__${s.name}`;let r=s.isButton?s.tagName||"button":s.tagName||"div";r=r.toLowerCase();const a=t(o,r);if(s.isButton){"button"===r&&(a.type="button");let{title:t}=s;const{ariaLabel:h}=s;"string"==typeof i.options[e+"Title"]&&(t=i.options[e+"Title"]),t&&(a.title=t);const n=h||t;n&&a.setAttribute("aria-label",n)}a.innerHTML=function(t){if("string"==typeof t)return t;if(!t||!t.isCustomSVG)return"";const i=t;let s='<svg aria-hidden="true" class="pswp__icn" viewBox="0 0 %d %d" width="%d" height="%d">';return s=s.split("%d").join(i.size||32),i.outlineID&&(s+='<use class="pswp__icn-shadow" xlink:href="#'+i.outlineID+'"/>'),s+=i.inner,s+="</svg>",s}(n),s.onInit&&s.onInit(a,i),s.onClick&&(a.onclick=t=>{"string"==typeof s.onClick?i[s.onClick]():"function"==typeof s.onClick&&s.onClick(t,a,i)});const l=s.appendTo||"bar";let c=i.element;"bar"===l?(i.topBar||(i.topBar=t("pswp__top-bar pswp__hide-on-close","div",i.scrollWrap)),c=i.topBar):(a.classList.add("pswp__hide-on-close"),"wrapper"===l&&(c=i.scrollWrap)),null===(h=c)||void 0===h||h.appendChild(i.applyFilters("uiElement",a,s))}}function N(t,i,s){t.classList.add("pswp__button--arrow"),t.setAttribute("aria-controls","pswp__items"),i.on("change",(()=>{i.options.loop||(t.disabled=s?!(i.currIndex<i.getNumItems()-1):!(i.currIndex>0))}))}const U={name:"arrowPrev",className:"pswp__button--arrow--prev",title:"Previous",order:10,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'<path d="M29 43l-3 3-16-16 16-16 3 3-13 13 13 13z" id="pswp__icn-arrow"/>',outlineID:"pswp__icn-arrow"},onClick:"prev",onInit:N},V={name:"arrowNext",className:"pswp__button--arrow--next",title:"Next",order:11,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'<use xlink:href="#pswp__icn-arrow"/>',outlineID:"pswp__icn-arrow"},onClick:"next",onInit:(t,i)=>{N(t,i,!0)}},G={name:"close",title:"Close",order:20,isButton:!0,html:{isCustomSVG:!0,inner:'<path d="M24 10l-2-2-6 6-6-6-2 2 6 6-6 6 2 2 6-6 6 6 2-2-6-6z" id="pswp__icn-close"/>',outlineID:"pswp__icn-close"},onClick:"close"},$={name:"zoom",title:"Zoom",order:10,isButton:!0,html:{isCustomSVG:!0,inner:'<path d="M17.426 19.926a6 6 0 1 1 1.5-1.5L23 22.5 21.5 24l-4.074-4.074z" id="pswp__icn-zoom"/><path fill="currentColor" class="pswp__zoom-icn-bar-h" d="M11 16v-2h6v2z"/><path fill="currentColor" class="pswp__zoom-icn-bar-v" d="M13 12h2v6h-2z"/>',outlineID:"pswp__icn-zoom"},onClick:"toggleZoom"},q={name:"preloader",appendTo:"bar",order:7,html:{isCustomSVG:!0,inner:'<path fill-rule="evenodd" clip-rule="evenodd" d="M21.2 16a5.2 5.2 0 1 1-5.2-5.2V8a8 8 0 1 0 8 8h-2.8Z" id="pswp__icn-loading"/>',outlineID:"pswp__icn-loading"},onInit:(t,i)=>{let s,h=null;const e=i=>{var h,e;s!==i&&(s=i,h="active",e=i,t.classList.toggle("pswp__preloader--"+h,e))},n=()=>{var t;if(null===(t=i.currSlide)||void 0===t||!t.content.isLoading())return e(!1),void(h&&(clearTimeout(h),h=null));h||(h=setTimeout((()=>{var t;e(Boolean(null===(t=i.currSlide)||void 0===t?void 0:t.content.isLoading())),h=null}),i.options.preloaderDelay))};i.on("change",n),i.on("loadComplete",(t=>{i.currSlide===t.slide&&n()})),i.ui&&(i.ui.updatePreloaderVisibility=n)}},H={name:"counter",order:5,onInit:(t,i)=>{i.on("change",(()=>{t.innerText=i.currIndex+1+i.options.indexIndicatorSep+i.getNumItems()}))}};function K(t,i){t.classList.toggle("pswp--zoomed-in",i)}class W{constructor(t){this.pswp=t,this.isRegistered=!1,this.uiElementsData=[],this.items=[],this.updatePreloaderVisibility=()=>{},this.Tt=void 0}init(){const{pswp:t}=this;this.isRegistered=!1,this.uiElementsData=[G,U,V,$,q,H],t.dispatch("uiRegister"),this.uiElementsData.sort(((t,i)=>(t.order||0)-(i.order||0))),this.items=[],this.isRegistered=!0,this.uiElementsData.forEach((t=>{this.registerElement(t)})),t.on("change",(()=>{var i;null===(i=t.element)||void 0===i||i.classList.toggle("pswp--one-slide",1===t.getNumItems())})),t.on("zoomPanUpdate",(()=>this.At()))}registerElement(t){this.isRegistered?this.items.push(new R(this.pswp,t)):this.uiElementsData.push(t)}At(){const{template:t,currSlide:i,options:s}=this.pswp;if(this.pswp.opener.isClosing||!t||!i)return;let{currZoomLevel:h}=i;if(this.pswp.opener.isOpen||(h=i.zoomLevels.initial),h===this.Tt)return;this.Tt=h;const e=i.zoomLevels.initial-i.zoomLevels.secondary;if(Math.abs(e)<.01||!i.isZoomable())return K(t,!1),void t.classList.remove("pswp--zoom-allowed");t.classList.add("pswp--zoom-allowed");K(t,(h===i.zoomLevels.initial?i.zoomLevels.secondary:i.zoomLevels.initial)<=h),"zoom"!==s.imageClickAction&&"zoom-or-close"!==s.imageClickAction||t.classList.add("pswp--click-to-zoom")}}class j{constructor(t,i){this.type=t,this.defaultPrevented=!1,i&&Object.assign(this,i)}preventDefault(){this.defaultPrevented=!0}}class X{constructor(i,s){if(this.element=t("pswp__img pswp__img--placeholder",i?"img":"div",s),i){const t=this.element;t.decoding="async",t.alt="",t.src=i,t.setAttribute("role","presentation")}this.element.setAttribute("aria-hidden","true")}setDisplayedSize(t,i){this.element&&("IMG"===this.element.tagName?(l(this.element,250,"auto"),this.element.style.transformOrigin="0 0",this.element.style.transform=o(0,0,t/250)):l(this.element,t,i))}destroy(){var t;null!==(t=this.element)&&void 0!==t&&t.parentNode&&this.element.remove(),this.element=null}}class Y{constructor(t,i,s){this.instance=i,this.data=t,this.index=s,this.element=void 0,this.placeholder=void 0,this.slide=void 0,this.displayedImageWidth=0,this.displayedImageHeight=0,this.width=Number(this.data.w)||Number(this.data.width)||0,this.height=Number(this.data.h)||Number(this.data.height)||0,this.isAttached=!1,this.hasSlide=!1,this.isDecoding=!1,this.state=c,this.data.type?this.type=this.data.type:this.data.src?this.type="image":this.type="html",this.instance.dispatch("contentInit",{content:this})}removePlaceholder(){this.placeholder&&!this.keepPlaceholder()&&setTimeout((()=>{this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0)}),1e3)}load(i,s){if(this.slide&&this.usePlaceholder())if(this.placeholder){const t=this.placeholder.element;t&&!t.parentElement&&this.slide.container.prepend(t)}else{const t=this.instance.applyFilters("placeholderSrc",!(!this.data.msrc||!this.slide.isFirstSlide)&&this.data.msrc,this);this.placeholder=new X(t,this.slide.container)}this.element&&!s||this.instance.dispatch("contentLoad",{content:this,isLazy:i}).defaultPrevented||(this.isImageContent()?(this.element=t("pswp__img","img"),this.displayedImageWidth&&this.loadImage(i)):(this.element=t("pswp__content","div"),this.element.innerHTML=this.data.html||""),s&&this.slide&&this.slide.updateContentSize(!0))}loadImage(t){var i,s;if(!this.isImageContent()||!this.element||this.instance.dispatch("contentLoadImage",{content:this,isLazy:t}).defaultPrevented)return;const h=this.element;this.updateSrcsetSizes(),this.data.srcset&&(h.srcset=this.data.srcset),h.src=null!==(i=this.data.src)&&void 0!==i?i:"",h.alt=null!==(s=this.data.alt)&&void 0!==s?s:"",this.state=d,h.complete?this.onLoaded():(h.onload=()=>{this.onLoaded()},h.onerror=()=>{this.onError()})}setSlide(t){this.slide=t,this.hasSlide=!0,this.instance=t.pswp}onLoaded(){this.state=u,this.slide&&this.element&&(this.instance.dispatch("loadComplete",{slide:this.slide,content:this}),this.slide.isActive&&this.slide.heavyAppended&&!this.element.parentNode&&(this.append(),this.slide.updateContentSize(!0)),this.state!==u&&this.state!==p||this.removePlaceholder())}onError(){this.state=p,this.slide&&(this.displayError(),this.instance.dispatch("loadComplete",{slide:this.slide,isError:!0,content:this}),this.instance.dispatch("loadError",{slide:this.slide,content:this}))}isLoading(){return this.instance.applyFilters("isContentLoading",this.state===d,this)}isError(){return this.state===p}isImageContent(){return"image"===this.type}setDisplayedSize(t,i){if(this.element&&(this.placeholder&&this.placeholder.setDisplayedSize(t,i),!this.instance.dispatch("contentResize",{content:this,width:t,height:i}).defaultPrevented&&(l(this.element,t,i),this.isImageContent()&&!this.isError()))){const s=!this.displayedImageWidth&&t;this.displayedImageWidth=t,this.displayedImageHeight=i,s?this.loadImage(!1):this.updateSrcsetSizes(),this.slide&&this.instance.dispatch("imageSizeChange",{slide:this.slide,width:t,height:i,content:this})}}isZoomable(){return this.instance.applyFilters("isContentZoomable",this.isImageContent()&&this.state!==p,this)}updateSrcsetSizes(){if(!this.isImageContent()||!this.element||!this.data.srcset)return;const t=this.element,i=this.instance.applyFilters("srcsetSizesWidth",this.displayedImageWidth,this);(!t.dataset.largestUsedSize||i>parseInt(t.dataset.largestUsedSize,10))&&(t.sizes=i+"px",t.dataset.largestUsedSize=String(i))}usePlaceholder(){return this.instance.applyFilters("useContentPlaceholder",this.isImageContent(),this)}lazyLoad(){this.instance.dispatch("contentLazyLoad",{content:this}).defaultPrevented||this.load(!0)}keepPlaceholder(){return this.instance.applyFilters("isKeepingPlaceholder",this.isLoading(),this)}destroy(){this.hasSlide=!1,this.slide=void 0,this.instance.dispatch("contentDestroy",{content:this}).defaultPrevented||(this.remove(),this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0),this.isImageContent()&&this.element&&(this.element.onload=null,this.element.onerror=null,this.element=void 0))}displayError(){if(this.slide){var i,s;let h=t("pswp__error-msg","div");h.innerText=null!==(i=null===(s=this.instance.options)||void 0===s?void 0:s.errorMsg)&&void 0!==i?i:"",h=this.instance.applyFilters("contentErrorElement",h,this),this.element=t("pswp__content pswp__error-msg-container","div"),this.element.appendChild(h),this.slide.container.innerText="",this.slide.container.appendChild(this.element),this.slide.updateContentSize(!0),this.removePlaceholder()}}append(){if(this.isAttached||!this.element)return;if(this.isAttached=!0,this.state===p)return void this.displayError();if(this.instance.dispatch("contentAppend",{content:this}).defaultPrevented)return;const t="decode"in this.element;this.isImageContent()?t&&this.slide&&(!this.slide.isActive||m())?(this.isDecoding=!0,this.element.decode().catch((()=>{})).finally((()=>{this.isDecoding=!1,this.appendImage()}))):this.appendImage():this.slide&&!this.element.parentNode&&this.slide.container.appendChild(this.element)}activate(){!this.instance.dispatch("contentActivate",{content:this}).defaultPrevented&&this.slide&&(this.isImageContent()&&this.isDecoding&&!m()?this.appendImage():this.isError()&&this.load(!1,!0),this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","false"))}deactivate(){this.instance.dispatch("contentDeactivate",{content:this}),this.slide&&this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","true")}remove(){this.isAttached=!1,this.instance.dispatch("contentRemove",{content:this}).defaultPrevented||(this.element&&this.element.parentNode&&this.element.remove(),this.placeholder&&this.placeholder.element&&this.placeholder.element.remove())}appendImage(){this.isAttached&&(this.instance.dispatch("contentAppendImage",{content:this}).defaultPrevented||(this.slide&&this.element&&!this.element.parentNode&&this.slide.container.appendChild(this.element),this.state!==u&&this.state!==p||this.removePlaceholder()))}}function J(t,i,s){const h=i.createContentFromData(t,s);let e;const{options:n}=i;if(n){let o;e=new x(n,t,-1),o=i.pswp?i.pswp.viewportSize:w(n,i);const r=y(n,o,t,s);e.update(h.width,h.height,r)}return h.lazyLoad(),e&&h.setDisplayedSize(Math.ceil(h.width*e.initial),Math.ceil(h.height*e.initial)),h}class Q{constructor(t){this.pswp=t,this.limit=Math.max(t.options.preload[0]+t.options.preload[1]+1,5),this.Dt=[]}updateLazy(t){const{pswp:i}=this;if(i.dispatch("lazyLoad").defaultPrevented)return;const{preload:s}=i.options,h=void 0===t||t>=0;let e;for(e=0;e<=s[1];e++)this.loadSlideByIndex(i.currIndex+(h?e:-e));for(e=1;e<=s[0];e++)this.loadSlideByIndex(i.currIndex+(h?-e:e))}loadSlideByIndex(t){const i=this.pswp.getLoopedIndex(t);let s=this.getContentByIndex(i);s||(s=function(t,i){const s=i.getItemData(t);if(!i.dispatch("lazyLoadSlide",{index:t,itemData:s}).defaultPrevented)return J(s,i,t)}(i,this.pswp),s&&this.addToCache(s))}getContentBySlide(t){let i=this.getContentByIndex(t.index);return i||(i=this.pswp.createContentFromData(t.data,t.index),this.addToCache(i)),i.setSlide(t),i}addToCache(t){if(this.removeByIndex(t.index),this.Dt.push(t),this.Dt.length>this.limit){const t=this.Dt.findIndex((t=>!t.isAttached&&!t.hasSlide));if(-1!==t){this.Dt.splice(t,1)[0].destroy()}}}removeByIndex(t){const i=this.Dt.findIndex((i=>i.index===t));-1!==i&&this.Dt.splice(i,1)}getContentByIndex(t){return this.Dt.find((i=>i.index===t))}destroy(){this.Dt.forEach((t=>t.destroy())),this.Dt=[]}}const tt=.003;class it{constructor(t){this.pswp=t,this.isClosed=!0,this.isOpen=!1,this.isClosing=!1,this.isOpening=!1,this.It=void 0,this.Et=!1,this.Lt=!1,this.kt=!1,this.Zt=!1,this.Bt=void 0,this.Ft=void 0,this.Ot=void 0,this.Rt=void 0,this.Nt=void 0,this.Ut=this.Ut.bind(this),t.on("firstZoomPan",this.Ut)}open(){this.Ut(),this.Pt()}close(){if(this.isClosed||this.isClosing||this.isOpening)return;const t=this.pswp.currSlide;this.isOpen=!1,this.isOpening=!1,this.isClosing=!0,this.It=this.pswp.options.hideAnimationDuration,t&&t.currZoomLevel*t.width>=this.pswp.options.maxWidthToAnimate&&(this.It=0),this.Vt(),setTimeout((()=>{this.Pt()}),this.Lt?30:0)}Ut(){if(this.pswp.off("firstZoomPan",this.Ut),!this.isOpening){const t=this.pswp.currSlide;this.isOpening=!0,this.isClosing=!1,this.It=this.pswp.options.showAnimationDuration,t&&t.zoomLevels.initial*t.width>=this.pswp.options.maxWidthToAnimate&&(this.It=0),this.Vt()}}Vt(){const{pswp:t}=this,i=this.pswp.currSlide,{options:s}=t;var h,e;("fade"===s.showHideAnimationType?(s.showHideOpacity=!0,this.Nt=void 0):"none"===s.showHideAnimationType?(s.showHideOpacity=!1,this.It=0,this.Nt=void 0):this.isOpening&&t.Gt?this.Nt=t.Gt:this.Nt=this.pswp.getThumbBounds(),this.Bt=null==i?void 0:i.getPlaceholderElement(),t.animations.stopAll(),this.Et=Boolean(this.It&&this.It>50),this.$t=Boolean(this.Nt)&&(null==i?void 0:i.content.usePlaceholder())&&(!this.isClosing||!t.mainScroll.isShifted()),this.$t)?this.kt=null!==(h=s.showHideOpacity)&&void 0!==h&&h:(this.kt=!0,this.isOpening&&i&&(i.zoomAndPanToInitial(),i.applyCurrentZoomPan()));if(this.Zt=!this.kt&&this.pswp.options.bgOpacity>tt,this.Ft=this.kt?t.element:t.bg,!this.Et)return this.It=0,this.$t=!1,this.Zt=!1,this.kt=!0,void(this.isOpening&&(t.element&&(t.element.style.opacity=String(tt)),t.applyBgOpacity(1)));this.$t&&this.Nt&&this.Nt.innerRect?(this.Lt=!0,this.Ot=this.pswp.container,this.Rt=null===(e=this.pswp.currSlide)||void 0===e?void 0:e.holderElement,t.container&&(t.container.style.overflow="hidden",t.container.style.width=t.viewportSize.x+"px")):this.Lt=!1;this.isOpening?(this.kt?(t.element&&(t.element.style.opacity=String(tt)),t.applyBgOpacity(1)):(this.Zt&&t.bg&&(t.bg.style.opacity=String(tt)),t.element&&(t.element.style.opacity="1")),this.$t&&(this.qt(),this.Bt&&(this.Bt.style.willChange="transform",this.Bt.style.opacity=String(tt)))):this.isClosing&&(t.mainScroll.itemHolders[0]&&(t.mainScroll.itemHolders[0].el.style.display="none"),t.mainScroll.itemHolders[2]&&(t.mainScroll.itemHolders[2].el.style.display="none"),this.Lt&&0!==t.mainScroll.x&&(t.mainScroll.resetPosition(),t.mainScroll.resize()))}Pt(){this.isOpening&&this.Et&&this.Bt&&"IMG"===this.Bt.tagName?new Promise((t=>{let i=!1,s=!0;var h;(h=this.Bt,"decode"in h?h.decode().catch((()=>{})):h.complete?Promise.resolve(h):new Promise(((t,i)=>{h.onload=()=>t(h),h.onerror=i}))).finally((()=>{i=!0,s||t(!0)})),setTimeout((()=>{s=!1,i&&t(!0)}),50),setTimeout(t,250)})).finally((()=>this.Ht())):this.Ht()}Ht(){var t,i;null===(t=this.pswp.element)||void 0===t||t.style.setProperty("--pswp-transition-duration",this.It+"ms"),this.pswp.dispatch(this.isOpening?"openingAnimationStart":"closingAnimationStart"),this.pswp.dispatch("initialZoom"+(this.isOpening?"In":"Out")),null===(i=this.pswp.element)||void 0===i||i.classList.toggle("pswp--ui-visible",this.isOpening),this.isOpening?(this.Bt&&(this.Bt.style.opacity="1"),this.Kt()):this.isClosing&&this.Wt(),this.Et||this.jt()}jt(){const{pswp:t}=this;if(this.isOpen=this.isOpening,this.isClosed=this.isClosing,this.isOpening=!1,this.isClosing=!1,t.dispatch(this.isOpen?"openingAnimationEnd":"closingAnimationEnd"),t.dispatch("initialZoom"+(this.isOpen?"InEnd":"OutEnd")),this.isClosed)t.destroy();else if(this.isOpen){var i;this.$t&&t.container&&(t.container.style.overflow="visible",t.container.style.width="100%"),null===(i=t.currSlide)||void 0===i||i.applyCurrentZoomPan()}}Kt(){const{pswp:t}=this;this.$t&&(this.Lt&&this.Ot&&this.Rt&&(this.Xt(this.Ot,"transform","translate3d(0,0,0)"),this.Xt(this.Rt,"transform","none")),t.currSlide&&(t.currSlide.zoomAndPanToInitial(),this.Xt(t.currSlide.container,"transform",t.currSlide.getCurrentTransform()))),this.Zt&&t.bg&&this.Xt(t.bg,"opacity",String(t.options.bgOpacity)),this.kt&&t.element&&this.Xt(t.element,"opacity","1")}Wt(){const{pswp:t}=this;this.$t&&this.qt(!0),this.Zt&&t.bgOpacity>.01&&t.bg&&this.Xt(t.bg,"opacity","0"),this.kt&&t.element&&this.Xt(t.element,"opacity","0")}qt(t){if(!this.Nt)return;const{pswp:s}=this,{innerRect:h}=this.Nt,{currSlide:e,viewportSize:n}=s;if(this.Lt&&h&&this.Ot&&this.Rt){const i=-n.x+(this.Nt.x-h.x)+h.w,s=-n.y+(this.Nt.y-h.y)+h.h,e=n.x-h.w,a=n.y-h.h;t?(this.Xt(this.Ot,"transform",o(i,s)),this.Xt(this.Rt,"transform",o(e,a))):(r(this.Ot,i,s),r(this.Rt,e,a))}e&&(i(e.pan,h||this.Nt),e.currZoomLevel=this.Nt.w/e.width,t?this.Xt(e.container,"transform",e.getCurrentTransform()):e.applyCurrentZoomPan())}Xt(t,i,s){if(!this.It)return void(t.style[i]=s);const{animations:h}=this.pswp,e={duration:this.It,easing:this.pswp.options.easing,onComplete:()=>{h.activeAnimations.length||this.jt()},target:t};e[i]=s,h.startTransition(e)}}const st={allowPanToNext:!0,spacing:.1,loop:!0,pinchToClose:!0,closeOnVerticalDrag:!0,hideAnimationDuration:333,showAnimationDuration:333,zoomAnimationDuration:333,escKey:!0,arrowKeys:!0,trapFocus:!0,returnFocus:!0,maxWidthToAnimate:4e3,clickToCloseNonZoomable:!0,imageClickAction:"zoom-or-close",bgClickAction:"close",tapAction:"toggle-controls",doubleTapAction:"zoom",indexIndicatorSep:" / ",preloaderDelay:2e3,bgOpacity:.8,index:0,errorMsg:"The image cannot be loaded",preload:[1,2],easing:"cubic-bezier(.4,0,.22,1)"};return class extends class extends class{constructor(){this.Yt={},this.Jt={},this.pswp=void 0,this.options=void 0}addFilter(t,i,s=100){var h,e,n;this.Jt[t]||(this.Jt[t]=[]),null===(h=this.Jt[t])||void 0===h||h.push({fn:i,priority:s}),null===(e=this.Jt[t])||void 0===e||e.sort(((t,i)=>t.priority-i.priority)),null===(n=this.pswp)||void 0===n||n.addFilter(t,i,s)}removeFilter(t,i){this.Jt[t]&&(this.Jt[t]=this.Jt[t].filter((t=>t.fn!==i))),this.pswp&&this.pswp.removeFilter(t,i)}applyFilters(t,...i){var s;return null===(s=this.Jt[t])||void 0===s||s.forEach((t=>{i[0]=t.fn.apply(this,i)})),i[0]}on(t,i){var s,h;this.Yt[t]||(this.Yt[t]=[]),null===(s=this.Yt[t])||void 0===s||s.push(i),null===(h=this.pswp)||void 0===h||h.on(t,i)}off(t,i){var s;this.Yt[t]&&(this.Yt[t]=this.Yt[t].filter((t=>i!==t))),null===(s=this.pswp)||void 0===s||s.off(t,i)}dispatch(t,i){var s;if(this.pswp)return this.pswp.dispatch(t,i);const h=new j(t,i);return null===(s=this.Yt[t])||void 0===s||s.forEach((t=>{t.call(this,h)})),h}}{getNumItems(){var t;let i=0;const s=null===(t=this.options)||void 0===t?void 0:t.dataSource;s&&"length"in s?i=s.length:s&&"gallery"in s&&(s.items||(s.items=this.Qt(s.gallery)),s.items&&(i=s.items.length));const h=this.dispatch("numItems",{dataSource:s,numItems:i});return this.applyFilters("numItems",h.numItems,s)}createContentFromData(t,i){return new Y(t,this,i)}getItemData(t){var i;const s=null===(i=this.options)||void 0===i?void 0:i.dataSource;let h={};Array.isArray(s)?h=s[t]:s&&"gallery"in s&&(s.items||(s.items=this.Qt(s.gallery)),h=s.items[t]);let e=h;e instanceof Element&&(e=this.ti(e));const n=this.dispatch("itemData",{itemData:e||{},index:t});return this.applyFilters("itemData",n.itemData,t)}Qt(t){var i,s;return null!==(i=this.options)&&void 0!==i&&i.children||null!==(s=this.options)&&void 0!==s&&s.childSelector?function(t,i,s=document){let h=[];if(t instanceof Element)h=[t];else if(t instanceof NodeList||Array.isArray(t))h=Array.from(t);else{const e="string"==typeof t?t:i;e&&(h=Array.from(s.querySelectorAll(e)))}return h}(this.options.children,this.options.childSelector,t)||[]:[t]}ti(t){const i={element:t},s="A"===t.tagName?t:t.querySelector("a");if(s){i.src=s.dataset.pswpSrc||s.href,s.dataset.pswpSrcset&&(i.srcset=s.dataset.pswpSrcset),i.width=s.dataset.pswpWidth?parseInt(s.dataset.pswpWidth,10):0,i.height=s.dataset.pswpHeight?parseInt(s.dataset.pswpHeight,10):0,i.w=i.width,i.h=i.height,s.dataset.pswpType&&(i.type=s.dataset.pswpType);const e=t.querySelector("img");var h;if(e)i.msrc=e.currentSrc||e.src,i.alt=null!==(h=e.getAttribute("alt"))&&void 0!==h?h:"";(s.dataset.pswpCropped||s.dataset.cropped)&&(i.thumbCropped=!0)}return this.applyFilters("domItemData",i,t,s)}lazyLoadData(t,i){return J(t,this,i)}}{constructor(t){super(),this.options=this.ii(t||{}),this.offset={x:0,y:0},this.si={x:0,y:0},this.viewportSize={x:0,y:0},this.bgOpacity=1,this.currIndex=0,this.potentialIndex=0,this.isOpen=!1,this.isDestroying=!1,this.hasMouse=!1,this.hi={},this.Gt=void 0,this.topBar=void 0,this.element=void 0,this.template=void 0,this.container=void 0,this.scrollWrap=void 0,this.currSlide=void 0,this.events=new f,this.animations=new F,this.mainScroll=new A(this),this.gestures=new T(this),this.opener=new it(this),this.keyboard=new E(this),this.contentLoader=new Q(this)}init(){if(this.isOpen||this.isDestroying)return!1;this.isOpen=!0,this.dispatch("init"),this.dispatch("beforeOpen"),this.ei();let t="pswp--open";return this.gestures.supportsTouch&&(t+=" pswp--touch"),this.options.mainClass&&(t+=" "+this.options.mainClass),this.element&&(this.element.className+=" "+t),this.currIndex=this.options.index||0,this.potentialIndex=this.currIndex,this.dispatch("firstUpdate"),this.scrollWheel=new O(this),(Number.isNaN(this.currIndex)||this.currIndex<0||this.currIndex>=this.getNumItems())&&(this.currIndex=0),this.gestures.supportsTouch||this.mouseDetected(),this.updateSize(),this.offset.y=window.pageYOffset,this.hi=this.getItemData(this.currIndex),this.dispatch("gettingData",{index:this.currIndex,data:this.hi,slide:void 0}),this.Gt=this.getThumbBounds(),this.dispatch("initialLayout"),this.on("openingAnimationEnd",(()=>{const{itemHolders:t}=this.mainScroll;t[0]&&(t[0].el.style.display="block",this.setContent(t[0],this.currIndex-1)),t[2]&&(t[2].el.style.display="block",this.setContent(t[2],this.currIndex+1)),this.appendHeavy(),this.contentLoader.updateLazy(),this.events.add(window,"resize",this.ni.bind(this)),this.events.add(window,"scroll",this.oi.bind(this)),this.dispatch("bindEvents")})),this.mainScroll.itemHolders[1]&&this.setContent(this.mainScroll.itemHolders[1],this.currIndex),this.dispatch("change"),this.opener.open(),this.dispatch("afterInit"),!0}getLoopedIndex(t){const i=this.getNumItems();return this.options.loop&&(t>i-1&&(t-=i),t<0&&(t+=i)),n(t,0,i-1)}appendHeavy(){this.mainScroll.itemHolders.forEach((t=>{var i;null===(i=t.slide)||void 0===i||i.appendHeavy()}))}goTo(t){this.mainScroll.moveIndexBy(this.getLoopedIndex(t)-this.potentialIndex)}next(){this.goTo(this.potentialIndex+1)}prev(){this.goTo(this.potentialIndex-1)}zoomTo(...t){var i;null===(i=this.currSlide)||void 0===i||i.zoomTo(...t)}toggleZoom(){var t;null===(t=this.currSlide)||void 0===t||t.toggleZoom()}close(){this.opener.isOpen&&!this.isDestroying&&(this.isDestroying=!0,this.dispatch("close"),this.events.removeAll(),this.opener.close())}destroy(){var t;if(!this.isDestroying)return this.options.showHideAnimationType="none",void this.close();this.dispatch("destroy"),this.Yt={},this.scrollWrap&&(this.scrollWrap.ontouchmove=null,this.scrollWrap.ontouchend=null),null===(t=this.element)||void 0===t||t.remove(),this.mainScroll.itemHolders.forEach((t=>{var i;null===(i=t.slide)||void 0===i||i.destroy()})),this.contentLoader.destroy(),this.events.removeAll()}refreshSlideContent(t){this.contentLoader.removeByIndex(t),this.mainScroll.itemHolders.forEach(((i,s)=>{var h,e;let n=(null!==(h=null===(e=this.currSlide)||void 0===e?void 0:e.index)&&void 0!==h?h:0)-1+s;var o;(this.canLoop()&&(n=this.getLoopedIndex(n)),n===t)&&(this.setContent(i,t,!0),1===s&&(this.currSlide=i.slide,null===(o=i.slide)||void 0===o||o.setIsActive(!0)))})),this.dispatch("change")}setContent(t,i,s){if(this.canLoop()&&(i=this.getLoopedIndex(i)),t.slide){if(t.slide.index===i&&!s)return;t.slide.destroy(),t.slide=void 0}if(!this.canLoop()&&(i<0||i>=this.getNumItems()))return;const h=this.getItemData(i);t.slide=new b(h,i,this),i===this.currIndex&&(this.currSlide=t.slide),t.slide.append(t.el)}getViewportCenterPoint(){return{x:this.viewportSize.x/2,y:this.viewportSize.y/2}}updateSize(t){if(this.isDestroying)return;const s=w(this.options,this);!t&&e(s,this.si)||(i(this.si,s),this.dispatch("beforeResize"),i(this.viewportSize,this.si),this.oi(),this.dispatch("viewportSize"),this.mainScroll.resize(this.opener.isOpen),!this.hasMouse&&window.matchMedia("(any-hover: hover)").matches&&this.mouseDetected(),this.dispatch("resize"))}applyBgOpacity(t){this.bgOpacity=Math.max(t,0),this.bg&&(this.bg.style.opacity=String(this.bgOpacity*this.options.bgOpacity))}mouseDetected(){var t;this.hasMouse||(this.hasMouse=!0,null===(t=this.element)||void 0===t||t.classList.add("pswp--has_mouse"))}ni(){this.updateSize(),/iPhone|iPad|iPod/i.test(window.navigator.userAgent)&&setTimeout((()=>{this.updateSize()}),500)}oi(){this.setScrollOffset(0,window.pageYOffset)}setScrollOffset(t,i){this.offset.x=t,this.offset.y=i,this.dispatch("updateScrollOffset")}ei(){this.element=t("pswp","div"),this.element.setAttribute("tabindex","-1"),this.element.setAttribute("role","dialog"),this.template=this.element,this.bg=t("pswp__bg","div",this.element),this.scrollWrap=t("pswp__scroll-wrap","section",this.element),this.container=t("pswp__container","div",this.scrollWrap),this.scrollWrap.setAttribute("aria-roledescription","carousel"),this.container.setAttribute("aria-live","off"),this.container.setAttribute("id","pswp__items"),this.mainScroll.appendHolders(),this.ui=new W(this),this.ui.init(),(this.options.appendToEl||document.body).appendChild(this.element)}getThumbBounds(){return function(t,i,s){const h=s.dispatch("thumbBounds",{index:t,itemData:i,instance:s});if(h.thumbBounds)return h.thumbBounds;const{element:e}=i;let n,o;if(e&&!1!==s.options.thumbSelector){const t=s.options.thumbSelector||"img";o=e.matches(t)?e:e.querySelector(t)}return o=s.applyFilters("thumbEl",o,i,t),o&&(n=i.thumbCropped?function(t,i,s){const h=t.getBoundingClientRect(),e=h.width/i,n=h.height/s,o=e>n?e:n,r=(h.width-i*o)/2,a=(h.height-s*o)/2,l={x:h.left+r,y:h.top+a,w:i*o};return l.innerRect={w:h.width,h:h.height,x:r,y:a},l}(o,i.width||i.w||0,i.height||i.h||0):function(t){const i=t.getBoundingClientRect();return{x:i.left,y:i.top,w:i.width}}(o)),s.applyFilters("thumbBounds",n,i,t)}(this.currIndex,this.currSlide?this.currSlide.data:this.hi,this)}canLoop(){return this.options.loop&&this.getNumItems()>2}ii(t){return window.matchMedia("(prefers-reduced-motion), (update: slow)").matches&&(t.showHideAnimationType="none",t.zoomAnimationDuration=0),{...st,...t}}}}));
</script> <script>
/*!
* PhotoSwipe Lightbox 5.4.2 - https://photoswipe.com
* (c) 2023 Dmytro Semenov
*/
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t="undefined"!=typeof globalThis?globalThis:t||self).PhotoSwipeLightbox=i()}(this,(function(){"use strict";function t(t,i,s){const h=document.createElement(i);return t&&(h.className=t),s&&s.appendChild(h),h}function i(t,i,s){t.style.width="number"==typeof i?`${i}px`:i,t.style.height="number"==typeof s?`${s}px`:s}const s="idle",h="loading",e="loaded",n="error";function o(t,i,s=document){let h=[];if(t instanceof Element)h=[t];else if(t instanceof NodeList||Array.isArray(t))h=Array.from(t);else{const e="string"==typeof t?t:i;e&&(h=Array.from(s.querySelectorAll(e)))}return h}function r(){return!(!navigator.vendor||!navigator.vendor.match(/apple/i))}class l{constructor(t,i){this.type=t,this.defaultPrevented=!1,i&&Object.assign(this,i)}preventDefault(){this.defaultPrevented=!0}}class a{constructor(i,s){if(this.element=t("pswp__img pswp__img--placeholder",i?"img":"div",s),i){const t=this.element;t.decoding="async",t.alt="",t.src=i,t.setAttribute("role","presentation")}this.element.setAttribute("aria-hidden","true")}setDisplayedSize(t,s){this.element&&("IMG"===this.element.tagName?(i(this.element,250,"auto"),this.element.style.transformOrigin="0 0",this.element.style.transform=function(t,i,s){let h=`translate3d(${t}px,${i||0}px,0)`;return void 0!==s&&(h+=` scale3d(${s},${s},1)`),h}(0,0,t/250)):i(this.element,t,s))}destroy(){var t;null!==(t=this.element)&&void 0!==t&&t.parentNode&&this.element.remove(),this.element=null}}class d{constructor(t,i,h){this.instance=i,this.data=t,this.index=h,this.element=void 0,this.placeholder=void 0,this.slide=void 0,this.displayedImageWidth=0,this.displayedImageHeight=0,this.width=Number(this.data.w)||Number(this.data.width)||0,this.height=Number(this.data.h)||Number(this.data.height)||0,this.isAttached=!1,this.hasSlide=!1,this.isDecoding=!1,this.state=s,this.data.type?this.type=this.data.type:this.data.src?this.type="image":this.type="html",this.instance.dispatch("contentInit",{content:this})}removePlaceholder(){this.placeholder&&!this.keepPlaceholder()&&setTimeout((()=>{this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0)}),1e3)}load(i,s){if(this.slide&&this.usePlaceholder())if(this.placeholder){const t=this.placeholder.element;t&&!t.parentElement&&this.slide.container.prepend(t)}else{const t=this.instance.applyFilters("placeholderSrc",!(!this.data.msrc||!this.slide.isFirstSlide)&&this.data.msrc,this);this.placeholder=new a(t,this.slide.container)}this.element&&!s||this.instance.dispatch("contentLoad",{content:this,isLazy:i}).defaultPrevented||(this.isImageContent()?(this.element=t("pswp__img","img"),this.displayedImageWidth&&this.loadImage(i)):(this.element=t("pswp__content","div"),this.element.innerHTML=this.data.html||""),s&&this.slide&&this.slide.updateContentSize(!0))}loadImage(t){var i,s;if(!this.isImageContent()||!this.element||this.instance.dispatch("contentLoadImage",{content:this,isLazy:t}).defaultPrevented)return;const e=this.element;this.updateSrcsetSizes(),this.data.srcset&&(e.srcset=this.data.srcset),e.src=null!==(i=this.data.src)&&void 0!==i?i:"",e.alt=null!==(s=this.data.alt)&&void 0!==s?s:"",this.state=h,e.complete?this.onLoaded():(e.onload=()=>{this.onLoaded()},e.onerror=()=>{this.onError()})}setSlide(t){this.slide=t,this.hasSlide=!0,this.instance=t.pswp}onLoaded(){this.state=e,this.slide&&this.element&&(this.instance.dispatch("loadComplete",{slide:this.slide,content:this}),this.slide.isActive&&this.slide.heavyAppended&&!this.element.parentNode&&(this.append(),this.slide.updateContentSize(!0)),this.state!==e&&this.state!==n||this.removePlaceholder())}onError(){this.state=n,this.slide&&(this.displayError(),this.instance.dispatch("loadComplete",{slide:this.slide,isError:!0,content:this}),this.instance.dispatch("loadError",{slide:this.slide,content:this}))}isLoading(){return this.instance.applyFilters("isContentLoading",this.state===h,this)}isError(){return this.state===n}isImageContent(){return"image"===this.type}setDisplayedSize(t,s){if(this.element&&(this.placeholder&&this.placeholder.setDisplayedSize(t,s),!this.instance.dispatch("contentResize",{content:this,width:t,height:s}).defaultPrevented&&(i(this.element,t,s),this.isImageContent()&&!this.isError()))){const i=!this.displayedImageWidth&&t;this.displayedImageWidth=t,this.displayedImageHeight=s,i?this.loadImage(!1):this.updateSrcsetSizes(),this.slide&&this.instance.dispatch("imageSizeChange",{slide:this.slide,width:t,height:s,content:this})}}isZoomable(){return this.instance.applyFilters("isContentZoomable",this.isImageContent()&&this.state!==n,this)}updateSrcsetSizes(){if(!this.isImageContent()||!this.element||!this.data.srcset)return;const t=this.element,i=this.instance.applyFilters("srcsetSizesWidth",this.displayedImageWidth,this);(!t.dataset.largestUsedSize||i>parseInt(t.dataset.largestUsedSize,10))&&(t.sizes=i+"px",t.dataset.largestUsedSize=String(i))}usePlaceholder(){return this.instance.applyFilters("useContentPlaceholder",this.isImageContent(),this)}lazyLoad(){this.instance.dispatch("contentLazyLoad",{content:this}).defaultPrevented||this.load(!0)}keepPlaceholder(){return this.instance.applyFilters("isKeepingPlaceholder",this.isLoading(),this)}destroy(){this.hasSlide=!1,this.slide=void 0,this.instance.dispatch("contentDestroy",{content:this}).defaultPrevented||(this.remove(),this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0),this.isImageContent()&&this.element&&(this.element.onload=null,this.element.onerror=null,this.element=void 0))}displayError(){if(this.slide){var i,s;let h=t("pswp__error-msg","div");h.innerText=null!==(i=null===(s=this.instance.options)||void 0===s?void 0:s.errorMsg)&&void 0!==i?i:"",h=this.instance.applyFilters("contentErrorElement",h,this),this.element=t("pswp__content pswp__error-msg-container","div"),this.element.appendChild(h),this.slide.container.innerText="",this.slide.container.appendChild(this.element),this.slide.updateContentSize(!0),this.removePlaceholder()}}append(){if(this.isAttached||!this.element)return;if(this.isAttached=!0,this.state===n)return void this.displayError();if(this.instance.dispatch("contentAppend",{content:this}).defaultPrevented)return;const t="decode"in this.element;this.isImageContent()?t&&this.slide&&(!this.slide.isActive||r())?(this.isDecoding=!0,this.element.decode().catch((()=>{})).finally((()=>{this.isDecoding=!1,this.appendImage()}))):this.appendImage():this.slide&&!this.element.parentNode&&this.slide.container.appendChild(this.element)}activate(){!this.instance.dispatch("contentActivate",{content:this}).defaultPrevented&&this.slide&&(this.isImageContent()&&this.isDecoding&&!r()?this.appendImage():this.isError()&&this.load(!1,!0),this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","false"))}deactivate(){this.instance.dispatch("contentDeactivate",{content:this}),this.slide&&this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","true")}remove(){this.isAttached=!1,this.instance.dispatch("contentRemove",{content:this}).defaultPrevented||(this.element&&this.element.parentNode&&this.element.remove(),this.placeholder&&this.placeholder.element&&this.placeholder.element.remove())}appendImage(){this.isAttached&&(this.instance.dispatch("contentAppendImage",{content:this}).defaultPrevented||(this.slide&&this.element&&!this.element.parentNode&&this.slide.container.appendChild(this.element),this.state!==e&&this.state!==n||this.removePlaceholder()))}}function c(t,i,s,h,e){let n=0;if(i.paddingFn)n=i.paddingFn(s,h,e)[t];else if(i.padding)n=i.padding[t];else{const s="padding"+t[0].toUpperCase()+t.slice(1);i[s]&&(n=i[s])}return Number(n)||0}class u{constructor(t,i,s,h){this.pswp=h,this.options=t,this.itemData=i,this.index=s,this.panAreaSize=null,this.elementSize=null,this.fit=1,this.fill=1,this.vFill=1,this.initial=1,this.secondary=1,this.max=1,this.min=1}update(t,i,s){const h={x:t,y:i};this.elementSize=h,this.panAreaSize=s;const e=s.x/h.x,n=s.y/h.y;this.fit=Math.min(1,e<n?e:n),this.fill=Math.min(1,e>n?e:n),this.vFill=Math.min(1,n),this.initial=this.t(),this.secondary=this.i(),this.max=Math.max(this.initial,this.secondary,this.o()),this.min=Math.min(this.fit,this.initial,this.secondary),this.pswp&&this.pswp.dispatch("zoomLevelsUpdate",{zoomLevels:this,slideData:this.itemData})}l(t){const i=t+"ZoomLevel",s=this.options[i];if(s)return"function"==typeof s?s(this):"fill"===s?this.fill:"fit"===s?this.fit:Number(s)}i(){let t=this.l("secondary");return t||(t=Math.min(1,3*this.fit),this.elementSize&&t*this.elementSize.x>4e3&&(t=4e3/this.elementSize.x),t)}t(){return this.l("initial")||this.fit}o(){return this.l("max")||Math.max(1,4*this.fit)}}function p(t,i,s){const h=i.createContentFromData(t,s);let e;const{options:n}=i;if(n){let o;e=new u(n,t,-1),o=i.pswp?i.pswp.viewportSize:function(t,i){if(t.getViewportSizeFn){const s=t.getViewportSizeFn(t,i);if(s)return s}return{x:document.documentElement.clientWidth,y:window.innerHeight}}(n,i);const r=function(t,i,s,h){return{x:i.x-c("left",t,i,s,h)-c("right",t,i,s,h),y:i.y-c("top",t,i,s,h)-c("bottom",t,i,s,h)}}(n,o,t,s);e.update(h.width,h.height,r)}return h.lazyLoad(),e&&h.setDisplayedSize(Math.ceil(h.width*e.initial),Math.ceil(h.height*e.initial)),h}return class extends class extends class{constructor(){this.u={},this.p={},this.pswp=void 0,this.options=void 0}addFilter(t,i,s=100){var h,e,n;this.p[t]||(this.p[t]=[]),null===(h=this.p[t])||void 0===h||h.push({fn:i,priority:s}),null===(e=this.p[t])||void 0===e||e.sort(((t,i)=>t.priority-i.priority)),null===(n=this.pswp)||void 0===n||n.addFilter(t,i,s)}removeFilter(t,i){this.p[t]&&(this.p[t]=this.p[t].filter((t=>t.fn!==i))),this.pswp&&this.pswp.removeFilter(t,i)}applyFilters(t,...i){var s;return null===(s=this.p[t])||void 0===s||s.forEach((t=>{i[0]=t.fn.apply(this,i)})),i[0]}on(t,i){var s,h;this.u[t]||(this.u[t]=[]),null===(s=this.u[t])||void 0===s||s.push(i),null===(h=this.pswp)||void 0===h||h.on(t,i)}off(t,i){var s;this.u[t]&&(this.u[t]=this.u[t].filter((t=>i!==t))),null===(s=this.pswp)||void 0===s||s.off(t,i)}dispatch(t,i){var s;if(this.pswp)return this.pswp.dispatch(t,i);const h=new l(t,i);return null===(s=this.u[t])||void 0===s||s.forEach((t=>{t.call(this,h)})),h}}{getNumItems(){var t;let i=0;const s=null===(t=this.options)||void 0===t?void 0:t.dataSource;s&&"length"in s?i=s.length:s&&"gallery"in s&&(s.items||(s.items=this.v(s.gallery)),s.items&&(i=s.items.length));const h=this.dispatch("numItems",{dataSource:s,numItems:i});return this.applyFilters("numItems",h.numItems,s)}createContentFromData(t,i){return new d(t,this,i)}getItemData(t){var i;const s=null===(i=this.options)||void 0===i?void 0:i.dataSource;let h={};Array.isArray(s)?h=s[t]:s&&"gallery"in s&&(s.items||(s.items=this.v(s.gallery)),h=s.items[t]);let e=h;e instanceof Element&&(e=this.m(e));const n=this.dispatch("itemData",{itemData:e||{},index:t});return this.applyFilters("itemData",n.itemData,t)}v(t){var i,s;return null!==(i=this.options)&&void 0!==i&&i.children||null!==(s=this.options)&&void 0!==s&&s.childSelector?o(this.options.children,this.options.childSelector,t)||[]:[t]}m(t){const i={element:t},s="A"===t.tagName?t:t.querySelector("a");if(s){i.src=s.dataset.pswpSrc||s.href,s.dataset.pswpSrcset&&(i.srcset=s.dataset.pswpSrcset),i.width=s.dataset.pswpWidth?parseInt(s.dataset.pswpWidth,10):0,i.height=s.dataset.pswpHeight?parseInt(s.dataset.pswpHeight,10):0,i.w=i.width,i.h=i.height,s.dataset.pswpType&&(i.type=s.dataset.pswpType);const e=t.querySelector("img");var h;if(e)i.msrc=e.currentSrc||e.src,i.alt=null!==(h=e.getAttribute("alt"))&&void 0!==h?h:"";(s.dataset.pswpCropped||s.dataset.cropped)&&(i.thumbCropped=!0)}return this.applyFilters("domItemData",i,t,s)}lazyLoadData(t,i){return p(t,this,i)}}{constructor(t){super(),this.options=t||{},this.g=0,this.shouldOpen=!1,this._=void 0,this.onThumbnailsClick=this.onThumbnailsClick.bind(this)}init(){o(this.options.gallery,this.options.gallerySelector).forEach((t=>{t.addEventListener("click",this.onThumbnailsClick,!1)}))}onThumbnailsClick(t){if(function(t){return"button"in t&&1===t.button||t.ctrlKey||t.metaKey||t.altKey||t.shiftKey}(t)||window.pswp)return;let i={x:t.clientX,y:t.clientY};i.x||i.y||(i=null);let s=this.getClickedIndex(t);s=this.applyFilters("clickedIndex",s,t,this);const h={gallery:t.currentTarget};s>=0&&(t.preventDefault(),this.loadAndOpen(s,h,i))}getClickedIndex(t){if(this.options.getClickedIndexFn)return this.options.getClickedIndexFn.call(this,t);const i=t.target,s=o(this.options.children,this.options.childSelector,t.currentTarget).findIndex((t=>t===i||t.contains(i)));return-1!==s?s:this.options.children||this.options.childSelector?-1:0}loadAndOpen(t,i,s){if(window.pswp||!this.options)return!1;if(!i&&this.options.gallery&&this.options.children){const t=o(this.options.gallery);t[0]&&(i={gallery:t[0]})}return this.options.index=t,this.options.initialPointerPos=s,this.shouldOpen=!0,this.preload(t,i),!0}preload(t,i){const{options:s}=this;i&&(s.dataSource=i);const h=[],e=typeof s.pswpModule;if("function"==typeof(n=s.pswpModule)&&n.prototype&&n.prototype.goTo)h.push(Promise.resolve(s.pswpModule));else{if("string"===e)throw new Error("pswpModule as string is no longer supported");if("function"!==e)throw new Error("pswpModule is not valid");h.push(s.pswpModule())}var n;"function"==typeof s.openPromise&&h.push(s.openPromise()),!1!==s.preloadFirstSlide&&t>=0&&(this._=function(t,i){const s=i.getItemData(t);if(!i.dispatch("lazyLoadSlide",{index:t,itemData:s}).defaultPrevented)return p(s,i,t)}(t,this));const o=++this.g;Promise.all(h).then((t=>{if(this.shouldOpen){const i=t[0];this.I(i,o)}}))}I(t,i){if(i!==this.g&&this.shouldOpen)return;if(this.shouldOpen=!1,window.pswp)return;const s="object"==typeof t?new t.default(this.options):new t(this.options);this.pswp=s,window.pswp=s,Object.keys(this.u).forEach((t=>{var i;null===(i=this.u[t])||void 0===i||i.forEach((i=>{s.on(t,i)}))})),Object.keys(this.p).forEach((t=>{var i;null===(i=this.p[t])||void 0===i||i.forEach((i=>{s.addFilter(t,i.fn,i.priority)}))})),this._&&(s.contentLoader.addToCache(this._),this._=void 0),s.on("destroy",(()=>{this.pswp=void 0,delete window.pswp})),s.init()}destroy(){var t;null===(t=this.pswp)||void 0===t||t.destroy(),this.shouldOpen=!1,this.u={},o(this.options.gallery,this.options.gallerySelector).forEach((t=>{t.removeEventListener("click",this.onThumbnailsClick,!1)}))}}}));
</script> <style>
/*! PhotoSwipe main CSS by Dmytro Semenov | photoswipe.com */.pswp{--pswp-bg:#000;--pswp-placeholder-bg:#222;--pswp-root-z-index:100000;--pswp-preloader-color:rgba(79, 79, 79, 0.4);--pswp-preloader-color-secondary:rgba(255, 255, 255, 0.9);--pswp-icon-color:#fff;--pswp-icon-color-secondary:#4f4f4f;--pswp-icon-stroke-color:#4f4f4f;--pswp-icon-stroke-width:2px;--pswp-error-text-color:var(--pswp-icon-color)}.pswp{position:fixed;top:0;left:0;width:100%;height:100%;z-index:var(--pswp-root-z-index);display:none;touch-action:none;outline:0;opacity:.003;contain:layout style size;-webkit-tap-highlight-color:transparent}.pswp:focus{outline:0}.pswp *{box-sizing:border-box}.pswp img{max-width:none}.pswp--open{display:block}.pswp,.pswp__bg{transform:translateZ(0);will-change:opacity}.pswp__bg{opacity:.005;background:var(--pswp-bg)}.pswp,.pswp__scroll-wrap{overflow:hidden}.pswp__bg,.pswp__container,.pswp__content,.pswp__img,.pswp__item,.pswp__scroll-wrap,.pswp__zoom-wrap{position:absolute;top:0;left:0;width:100%;height:100%}.pswp__img,.pswp__zoom-wrap{width:auto;height:auto}.pswp--click-to-zoom.pswp--zoom-allowed .pswp__img{cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img,.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img:active,.pswp__img{cursor:-webkit-zoom-out;cursor:-moz-zoom-out;cursor:zoom-out}.pswp__button,.pswp__container,.pswp__counter,.pswp__img{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pswp__item{z-index:1;overflow:hidden}.pswp__hidden{display:none!important}.pswp__content{pointer-events:none}.pswp__content>*{pointer-events:auto}.pswp__error-msg-container{display:grid}.pswp__error-msg{margin:auto;font-size:1em;line-height:1;color:var(--pswp-error-text-color)}.pswp .pswp__hide-on-close{opacity:.005;will-change:opacity;transition:opacity var(--pswp-transition-duration) cubic-bezier(.4,0,.22,1);z-index:10;pointer-events:none}.pswp--ui-visible .pswp__hide-on-close{opacity:1;pointer-events:auto}.pswp__button{position:relative;display:block;width:50px;height:60px;padding:0;margin:0;overflow:hidden;cursor:pointer;background:0 0;border:0;box-shadow:none;opacity:.85;-webkit-appearance:none;-webkit-touch-callout:none}.pswp__button:active,.pswp__button:focus,.pswp__button:hover{transition:none;padding:0;background:0 0;border:0;box-shadow:none;opacity:1}.pswp__button:disabled{opacity:.3;cursor:auto}.pswp__icn{fill:var(--pswp-icon-color);color:var(--pswp-icon-color-secondary)}.pswp__icn{position:absolute;top:14px;left:9px;width:32px;height:32px;overflow:hidden;pointer-events:none}.pswp__icn-shadow{stroke:var(--pswp-icon-stroke-color);stroke-width:var(--pswp-icon-stroke-width);fill:none}.pswp__icn:focus{outline:0}.pswp__img--with-bg,div.pswp__img--placeholder{background:var(--pswp-placeholder-bg)}.pswp__top-bar{position:absolute;left:0;top:0;width:100%;height:60px;display:flex;flex-direction:row;justify-content:flex-end;z-index:10;pointer-events:none!important}.pswp__top-bar>*{pointer-events:auto;will-change:opacity}.pswp__button--close{margin-right:6px}.pswp__button--arrow{position:absolute;top:0;width:75px;height:100px;top:50%;margin-top:-50px}.pswp__button--arrow:disabled{display:none;cursor:default}.pswp__button--arrow .pswp__icn{top:50%;margin-top:-30px;width:60px;height:60px;background:0 0;border-radius:0}.pswp--one-slide .pswp__button--arrow{display:none}.pswp--touch .pswp__button--arrow{visibility:hidden}.pswp--has_mouse .pswp__button--arrow{visibility:visible}.pswp__button--arrow--prev{right:auto;left:0}.pswp__button--arrow--next{right:0}.pswp__button--arrow--next .pswp__icn{left:auto;right:14px;transform:scale(-1,1)}.pswp__button--zoom{display:none}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__zoom-icn-bar-v{display:none}.pswp__preloader{position:relative;overflow:hidden;width:50px;height:60px;margin-right:auto}.pswp__preloader .pswp__icn{opacity:0;transition:opacity .2s linear;animation:pswp-clockwise .6s linear infinite}.pswp__preloader--active .pswp__icn{opacity:.85}@keyframes pswp-clockwise{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.pswp__counter{height:30px;margin-top:15px;margin-inline-start:20px;font-size:14px;line-height:30px;color:var(--pswp-icon-color);text-shadow:1px 1px 3px var(--pswp-icon-color-secondary);opacity:.85}.pswp--one-slide .pswp__counter{display:none}
</style>
<!-- True Anthem -->
<script src="//static.trueanthem.com/scripts/ta.js"></script>
<!-- IMGJS -->
<script src="https://cdn.insightmediagroup.io/imgjs/v1/imgjs-v1.js?t=1787069734"></script>
<style id='global-styles-inline-css' type='text/css'>
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
/*# sourceURL=global-styles-inline-css */
</style>
</head>
<body class="wp-singular post-template-default single single-post postid-22780745 single-format-standard wp-theme-tns-2022">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NJH9PKQS" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<script>
$(document).ready(function() {
window.tns = window.tns || {}
window.tns.getUTMParameterValue = function(name) {
const urlParams = new URLSearchParams(window.location.search)
return urlParams.get(name)
}
window.tns.setCookie = function(key, value, hours_expiry) {
const expiry_date = new Date()
expiry_date.setTime(expiry_date.getTime() + hours_expiry * 60 * 60 * 1000)
document.cookie = `${key}=${value};expires=${expiry_date.toUTCString()};samesite=lax;path=/;secure`
}
window.tns.getCookie = function(key) {
return document.cookie
.split('; ')
.find((row) => row.startsWith(`${key}=`))
?.split('=')[1]
}
})
</script> <script>
$(document).ready(function() {
window.tns.newsletter = {
signup : function(params, callback) {
var context = params.context;
var newsletterID = params.newsletterID;
var email = params.email;
var emailInput = params.emailInput;
var newsletterTitle = '';
var newsletterSlug = '';
// var tnsDailyID = '6166149401';
// var tnsWeeklyID = 'd60fc24015';
if (newsletterID === '6166149401') {
newsletterTitle = 'TNS Daily';
newsletterSlug = 'tns-daily';
}
if (newsletterID === 'd60fc24015') {
newsletterTitle = 'TNS Update';
newsletterSlug = 'tns-update';
}
var data = null;
async.series([
validate,
subscribe,
handleError,
confirmation
], function(result) {
console.log(result.message);
if (callback) return callback(result);
});
function validate(next) {
if (!email || !validator.isEmail(email)) {
emailInput.addClass('error');
return next({
error : true,
message : 'NEWSLETTER SIGNUP: Halting, invalid email.'
});
}
return next();
}
function subscribe(next) {
$.post('/no-cache/newsletter-subscribe/', {
email : email,
subscriptions : [
newsletterID
]
}, function(result) {
data = JSON.parse(result);
window.dataLayer.push({
'event' : 'newsletter_subscription',
'newsletter' : newsletterSlug,
'context' : context
});
return next();
});
}
function handleError(next) {
/// New sign-up
if (!data.member) return next();
/// Previously unsubscribed
if (data.member.status === 'unsubscribed') {
window.tns.modal.open({
title : 'PLEASE RESUBSCRIBE',
content : 'You have previously unsubcribed from ' + newsletterTitle + '. In order to resubscribe please click OK to open the resubscription form.'
});
$('.tns-modal-button-okay').off();
$('.tns-modal-button-okay').on('click', function() {
location.href = 'https://eepurl.com/bMg5kH';
});
emailInput.val('');
return next({
error : true,
message : 'NEWSLETTER SIGNUP: Halting, member previously unsubscribed.'
});
}
return next();
}
function confirmation(next) {
var msg = '';
if (data.audience.title === 'Member Exists') {
msg = 'You have been successfully subscribed to the ' + newsletterTitle + ' newsletter.';
} else {
msg = 'You have been successfully subscribed to the ' + newsletterTitle + ' newsletter. Please check your inbox for an email confirmation link.';
}
window.tns.modal.open({
title : '200 OK',
content : msg
});
emailInput.val('');
$('.tns-modal-button-okay').off();
$('.tns-modal-button-okay').on('click', function() {
window.tns.modal.close();
});
return next({
error : false,
message : 'NEWSLETTER SIGNUP: Newsletter subscription complete.'
});
}
}
}
});
</script> <script>
$(document).ready(function() {
window.tns = window.tns || {}
window.tns.user = {
_userPseudoId: null,
_storageKey: 'tns-user-pseudo-id',
_storageExpiry: 'tns-user-pseudo-id-expiry',
generateUserPseudoId: function() {
var uuid;
// Try modern crypto.randomUUID first
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
uuid = crypto.randomUUID();
console.log('[TNS User] Generated userPseudoId using crypto.randomUUID()');
} else {
// Fallback UUID v4 generation
uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0;
var v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
console.log('[TNS User] Generated userPseudoId using fallback method');
}
var userPseudoId = 'tns-' + uuid;
console.log('[TNS User] New userPseudoId created:', userPseudoId);
return userPseudoId;
},
setUserPseudoId: function(id, persistDays) {
if (!id) return false;
persistDays = persistDays || 365;
this._userPseudoId = id;
var expiryDate = new Date();
expiryDate.setTime(expiryDate.getTime() + (persistDays * 24 * 60 * 60 * 1000));
var expiryTimestamp = expiryDate.getTime();
// Try localStorage first
if (this._isStorageAvailable('localStorage')) {
try {
localStorage.setItem(this._storageKey, id);
localStorage.setItem(this._storageExpiry, expiryTimestamp.toString());
console.log('[TNS User] userPseudoId stored in localStorage:', id);
return true;
} catch (e) {
console.warn('[TNS User] localStorage failed, trying sessionStorage');
}
}
// Try sessionStorage fallback
if (this._isStorageAvailable('sessionStorage')) {
try {
sessionStorage.setItem(this._storageKey, id);
sessionStorage.setItem(this._storageExpiry, expiryTimestamp.toString());
console.log('[TNS User] userPseudoId stored in sessionStorage:', id);
return true;
} catch (e) {
console.warn('[TNS User] sessionStorage failed, trying cookies');
}
}
// Cookie fallback using existing TNS cookie utility
if (window.tns.setCookie) {
var hoursExpiry = persistDays * 24;
window.tns.setCookie(this._storageKey, id, hoursExpiry);
window.tns.setCookie(this._storageExpiry, expiryTimestamp.toString(), hoursExpiry);
console.log('[TNS User] userPseudoId stored in cookies:', id);
return true;
}
// If all storage methods fail, keep in memory for session
console.warn('[TNS User] All storage methods failed, userPseudoId will only persist for this session');
return false;
},
getUserPseudoId: function() {
// Return cached version if available
if (this._userPseudoId) {
console.log('[TNS User] Returning cached userPseudoId:', this._userPseudoId);
return this._userPseudoId;
}
var storedId = null;
var storedExpiry = null;
// Try localStorage first
if (this._isStorageAvailable('localStorage')) {
try {
storedId = localStorage.getItem(this._storageKey);
storedExpiry = localStorage.getItem(this._storageExpiry);
} catch (e) {
// localStorage access failed
}
}
// Try sessionStorage if localStorage didn't work
if (!storedId && this._isStorageAvailable('sessionStorage')) {
try {
storedId = sessionStorage.getItem(this._storageKey);
storedExpiry = sessionStorage.getItem(this._storageExpiry);
} catch (e) {
// sessionStorage access failed
}
}
// Try cookies if both storage methods failed
if (!storedId && window.tns.getCookie) {
storedId = window.tns.getCookie(this._storageKey);
storedExpiry = window.tns.getCookie(this._storageExpiry);
}
// Check if stored ID is expired
if (storedId && storedExpiry) {
var expiryTime = parseInt(storedExpiry);
var currentTime = new Date().getTime();
if (currentTime > expiryTime) {
// ID is expired, clean up and generate new one
console.log('[TNS User] userPseudoId expired, generating new one. Expired ID:', storedId);
this._cleanupExpiredId();
storedId = null;
} else {
console.log('[TNS User] Retrieved valid stored userPseudoId:', storedId);
}
}
// If no valid stored ID, generate a new one
if (!storedId) {
console.log('[TNS User] No valid stored userPseudoId found, generating new one');
storedId = this.generateUserPseudoId();
this.setUserPseudoId(storedId);
}
// Cache for future calls
this._userPseudoId = storedId;
console.log('[TNS User] userPseudoId ready for use:', storedId);
return storedId;
},
_isStorageAvailable: function(type) {
var storage;
try {
storage = window[type];
var x = '__storage_test__';
storage.setItem(x, x);
storage.removeItem(x);
return true;
} catch (e) {
return e instanceof DOMException && (
// everything except Firefox
e.code === 22 ||
// Firefox
e.code === 1014 ||
// test name field too, because code might not be present
// everything except Firefox
e.name === 'QuotaExceededError' ||
// Firefox
e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
// acknowledge QuotaExceededError only if there's something already stored
(storage && storage.length !== 0);
}
},
_cleanupExpiredId: function() {
// Clean up from localStorage
if (this._isStorageAvailable('localStorage')) {
try {
localStorage.removeItem(this._storageKey);
localStorage.removeItem(this._storageExpiry);
} catch (e) {
// Cleanup failed
}
}
// Clean up from sessionStorage
if (this._isStorageAvailable('sessionStorage')) {
try {
sessionStorage.removeItem(this._storageKey);
sessionStorage.removeItem(this._storageExpiry);
} catch (e) {
// Cleanup failed
}
}
// Clean up cookies
if (window.tns.setCookie) {
window.tns.setCookie(this._storageKey, '', -1);
window.tns.setCookie(this._storageExpiry, '', -1);
}
// Clear cached version
this._userPseudoId = null;
}
}
})
</script> <div id="tns-modal-screen">
<div id="tns-modal">
<div class="tns-modal-title">
TNS
</div>
<div class="tns-modal-close">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</div>
<div class="tns-modal-content">
</div>
<div class="tns-modal-buttons">
<button class="tns-modal-button-okay">
OK
</button>
</div>
</div>
</div>
<script>
$(document).ready(function() {
$modalScreen = $('#tns-modal-screen');
$modal = $('#tns-modal');
window.tns.modal = {
open : function(params) {
$('.tns-modal-title').html(params.title);
$('.tns-modal-content').html(params.content);
$modalScreen.stop().css({
opacity : 0,
display : 'block'
});
$modalScreen.stop().transition({
duration : 333,
opacity : 1,
easing : 'ease-out-quad'
});
$modal.stop().css({
opacity : 0,
display : 'block'
});
$modal.stop().transition({
duration : 333,
opacity : 1,
easing : 'ease-out-quad'
});
},
close : function() {
$modalScreen.stop().css({
opacity : 0,
display : 'block'
});
$modal.stop().transition({
duration : 333,
opacity : 0,
easing : 'ease-out-quad'
});
$modalScreen.stop().transition({
duration : 333,
opacity : 0,
easing : 'ease-out-quad'
}, function() {
$modalScreen.stop().css({
opacity : 0,
display : 'none'
});
$('.tns-modal-title').html('');
$('.tns-modal-content').html('');
});
}
}
$('.tns-modal-close').on('click', function() {
window.tns.modal.close();
});
});
</script>
<div id="tns-subscribe">
<div class="modal">
<div class="header">
<div class="title">
SUBSCRIBE
</div>
<div class="close">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</div>
</div>
<div class="content">
<div class="swiper tns-subscribe-swiper">
<div class="swiper-wrapper">
<div class="swiper-slide">
<div class="copy copy-screen-0">
Join our community of software engineering leaders and aspirational developers. Always
stay in-the-know by getting the most important news and exclusive content delivered
fresh to your inbox to learn more about at-scale software development.
</div>
<div class="form">
<div class="form-field form-field-email">
<div class="row">
<div class="col col-75 form-field-label">
<label>EMAIL ADDRESS</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<input type="email" data-key="EMAIL" class="subscribe-input subscribe-email">
<button class="subscribe-button">SUBSCRIBE</button>
</div>
<div class="form-field form-field-resubscribe">
<div class="row">
<div class="col col-75 form-field-label">
<label>RESUBSCRIPTION REQUIRED</label>
</div>
<div class="col col-25 form-field-info">
&nbsp;
</div>
</div>
<div class="copy">
It seems that you've previously unsubscribed from our newsletter
in the past. Click the button below to open the re-subscribe form
in a new tab. When you're done, simply close that tab and continue
with this form to complete your subscription.
</div>
<button class="resubscribe-button">RE-SUBSCRIBE</button>
</div>
<div class="subscribe-form-privacy">
The New Stack does not sell your information or share it with
unaffiliated third parties. By continuing, you agree to our
<a href="/terms-of-use/">Terms of Use</a> and
<a href="/privacy-policy/">Privacy Policy</a>.
</div>
</div>
</div>
<div class="swiper-slide">
<div class="heading">
Welcome and thank you for joining The New Stack community!
</div>
<div class="copy">
Please answer a few simple questions to help us deliver the news and resources you are interested in.
</div>
<div class="form">
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>FIRST NAME</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<input type="text" data-key="FNAME" class="subscribe-input subscribe-firstname">
</div>
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>LAST NAME</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<input type="text" data-key="LNAME" class="subscribe-input subscribe-lastname">
</div>
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>COMPANY NAME</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<input type="text" data-key="COMPANY" class="subscribe-input subscribe-company">
</div>
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>COUNTRY</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<select data-key="COUNTRY" class="subscribe-input subscribe-country">
<option value="">Select ...</option>
<option value="US">United States</option>
<option value="CA">Canada</option>
<option value="IN">India</option>
<option value="GB">United Kingdom</option>
<option value="DE">Germany</option>
<option value="FR">France</option>
<option value="--">---</option>
<option value="AF">Afghanistan</option>
<option value="AL">Albania</option>
<option value="DZ">Algeria</option>
<option value="AS">American Samoa</option>
<option value="AD">Andorra</option>
<option value="AO">Angola</option>
<option value="AI">Anguilla</option>
<option value="AQ">Antarctica</option>
<option value="AG">Antigua and Barbuda</option>
<option value="AR">Argentina</option>
<option value="AM">Armenia</option>
<option value="AW">Aruba</option>
<option value="AP">Asia/Pacific Region</option>
<option value="AU">Australia</option>
<option value="AT">Austria</option>
<option value="AZ">Azerbaijan</option>
<option value="BS">Bahamas</option>
<option value="BH">Bahrain</option>
<option value="BD">Bangladesh</option>
<option value="BB">Barbados</option>
<option value="BY">Belarus</option>
<option value="BE">Belgium</option>
<option value="BZ">Belize</option>
<option value="BJ">Benin</option>
<option value="BM">Bermuda</option>
<option value="BT">Bhutan</option>
<option value="BO">Bolivia</option>
<option value="BQ">Bonaire, Sint Eustatius and Saba</option>
<option value="BA">Bosnia and Herzegovina</option>
<option value="BW">Botswana</option>
<option value="BV">Bouvet Island</option>
<option value="BR">Brazil</option>
<option value="IO">British Indian Ocean Territory</option>
<option value="BN">Brunei Darussalam</option>
<option value="BG">Bulgaria</option>
<option value="BF">Burkina Faso</option>
<option value="BI">Burundi</option>
<option value="KH">Cambodia</option>
<option value="CM">Cameroon</option>
<option value="CA">Canada</option>
<option value="CV">Cape Verde</option>
<option value="KY">Cayman Islands</option>
<option value="CF">Central African Republic</option>
<option value="TD">Chad</option>
<option value="CL">Chile</option>
<option value="CN">China</option>
<option value="CX">Christmas Island</option>
<option value="CC">Cocos (Keeling) Islands</option>
<option value="CO">Colombia</option>
<option value="KM">Comoros</option>
<option value="CG">Congo</option>
<option value="CD">Congo, The Democratic Republic of the</option>
<option value="CK">Cook Islands</option>
<option value="CR">Costa Rica</option>
<option value="HR">Croatia</option>
<option value="CU">Cuba</option>
<option value="CW">Curaçao</option>
<option value="CY">Cyprus</option>
<option value="CZ">Czech Republic</option>
<option value="CI">Côte d'Ivoire</option>
<option value="DK">Denmark</option>
<option value="DJ">Djibouti</option>
<option value="DM">Dominica</option>
<option value="DO">Dominican Republic</option>
<option value="EC">Ecuador</option>
<option value="EG">Egypt</option>
<option value="SV">El Salvador</option>
<option value="GQ">Equatorial Guinea</option>
<option value="ER">Eritrea</option>
<option value="EE">Estonia</option>
<option value="ET">Ethiopia</option>
<option value="FK">Falkland Islands (Malvinas)</option>
<option value="FO">Faroe Islands</option>
<option value="FJ">Fiji</option>
<option value="FI">Finland</option>
<option value="FR">France</option>
<option value="GF">French Guiana</option>
<option value="PF">French Polynesia</option>
<option value="TF">French Southern Territories</option>
<option value="GA">Gabon</option>
<option value="GM">Gambia</option>
<option value="GE">Georgia</option>
<option value="DE">Germany</option>
<option value="GH">Ghana</option>
<option value="GI">Gibraltar</option>
<option value="GR">Greece</option>
<option value="GL">Greenland</option>
<option value="GD">Grenada</option>
<option value="GP">Guadeloupe</option>
<option value="GU">Guam</option>
<option value="GT">Guatemala</option>
<option value="GG">Guernsey</option>
<option value="GN">Guinea</option>
<option value="GW">Guinea-Bissau</option>
<option value="GY">Guyana</option>
<option value="HT">Haiti</option>
<option value="HM">Heard Island and Mcdonald Islands</option>
<option value="VA">Holy See (Vatican City State)</option>
<option value="HN">Honduras</option>
<option value="HK">Hong Kong</option>
<option value="HU">Hungary</option>
<option value="IS">Iceland</option>
<option value="IN">India</option>
<option value="ID">Indonesia</option>
<option value="IR">Iran, Islamic Republic Of</option>
<option value="IQ">Iraq</option>
<option value="IE">Ireland</option>
<option value="IM">Isle of Man</option>
<option value="IL">Israel</option>
<option value="IT">Italy</option>
<option value="JM">Jamaica</option>
<option value="JP">Japan</option>
<option value="JE">Jersey</option>
<option value="JO">Jordan</option>
<option value="KZ">Kazakhstan</option>
<option value="KE">Kenya</option>
<option value="KI">Kiribati</option>
<option value="KR">Korea, Republic of</option>
<option value="KW">Kuwait</option>
<option value="KG">Kyrgyzstan</option>
<option value="LA">Laos</option>
<option value="LV">Latvia</option>
<option value="LB">Lebanon</option>
<option value="LS">Lesotho</option>
<option value="LR">Liberia</option>
<option value="LY">Libyan Arab Jamahiriya</option>
<option value="LI">Liechtenstein</option>
<option value="LT">Lithuania</option>
<option value="LU">Luxembourg</option>
<option value="MO">Macao</option>
<option value="MG">Madagascar</option>
<option value="MW">Malawi</option>
<option value="MY">Malaysia</option>
<option value="MV">Maldives</option>
<option value="ML">Mali</option>
<option value="MT">Malta</option>
<option value="MH">Marshall Islands</option>
<option value="MQ">Martinique</option>
<option value="MR">Mauritania</option>
<option value="MU">Mauritius</option>
<option value="YT">Mayotte</option>
<option value="MX">Mexico</option>
<option value="FM">Micronesia, Federated States of</option>
<option value="MD">Moldova, Republic of</option>
<option value="MC">Monaco</option>
<option value="MN">Mongolia</option>
<option value="ME">Montenegro</option>
<option value="MS">Montserrat</option>
<option value="MA">Morocco</option>
<option value="MZ">Mozambique</option>
<option value="MM">Myanmar</option>
<option value="NA">Namibia</option>
<option value="NR">Nauru</option>
<option value="NP">Nepal</option>
<option value="NL">Netherlands</option>
<option value="AN">Netherlands Antilles</option>
<option value="NC">New Caledonia</option>
<option value="NZ">New Zealand</option>
<option value="NI">Nicaragua</option>
<option value="NE">Niger</option>
<option value="NG">Nigeria</option>
<option value="NU">Niue</option>
<option value="NF">Norfolk Island</option>
<option value="KP">North Korea</option>
<option value="MK">North Macedonia</option>
<option value="MP">Northern Mariana Islands</option>
<option value="NO">Norway</option>
<option value="OM">Oman</option>
<option value="PK">Pakistan</option>
<option value="PW">Palau</option>
<option value="PS">Palestinian Territory, Occupied</option>
<option value="PA">Panama</option>
<option value="PG">Papua New Guinea</option>
<option value="PY">Paraguay</option>
<option value="PE">Peru</option>
<option value="PH">Philippines</option>
<option value="PN">Pitcairn Islands</option>
<option value="PL">Poland</option>
<option value="PT">Portugal</option>
<option value="PR">Puerto Rico</option>
<option value="QA">Qatar</option>
<option value="RE">Reunion</option>
<option value="RO">Romania</option>
<option value="RU">Russian Federation</option>
<option value="RW">Rwanda</option>
<option value="BL">Saint Barthélemy</option>
<option value="SH">Saint Helena</option>
<option value="KN">Saint Kitts and Nevis</option>
<option value="LC">Saint Lucia</option>
<option value="MF">Saint Martin</option>
<option value="MF">Saint Martin</option>
<option value="PM">Saint Pierre and Miquelon</option>
<option value="VC">Saint Vincent and the Grenadines</option>
<option value="WS">Samoa</option>
<option value="SM">San Marino</option>
<option value="ST">Sao Tome and Principe</option>
<option value="SA">Saudi Arabia</option>
<option value="SN">Senegal</option>
<option value="RS">Serbia</option>
<option value="CS">Serbia and Montenegro</option>
<option value="SC">Seychelles</option>
<option value="SL">Sierra Leone</option>
<option value="SG">Singapore</option>
<option value="SX">Sint Maarten</option>
<option value="SK">Slovakia</option>
<option value="SI">Slovenia</option>
<option value="SB">Solomon Islands</option>
<option value="SO">Somalia</option>
<option value="ZA">South Africa</option>
<option value="GS">South Georgia and the South Sandwich Islands</option>
<option value="SS">South Sudan</option>
<option value="ES">Spain</option>
<option value="LK">Sri Lanka</option>
<option value="SD">Sudan</option>
<option value="SR">Suriname</option>
<option value="SJ">Svalbard and Jan Mayen</option>
<option value="SZ">Swaziland</option>
<option value="SE">Sweden</option>
<option value="CH">Switzerland</option>
<option value="SY">Syrian Arab Republic</option>
<option value="TW">Taiwan</option>
<option value="TJ">Tajikistan</option>
<option value="TZ">Tanzania, United Republic of</option>
<option value="TH">Thailand</option>
<option value="TL">Timor-Leste</option>
<option value="TG">Togo</option>
<option value="TK">Tokelau</option>
<option value="TO">Tonga</option>
<option value="TT">Trinidad and Tobago</option>
<option value="TN">Tunisia</option>
<option value="TR">Turkey</option>
<option value="TM">Turkmenistan</option>
<option value="TC">Turks and Caicos Islands</option>
<option value="TV">Tuvalu</option>
<option value="UG">Uganda</option>
<option value="UA">Ukraine</option>
<option value="AE">United Arab Emirates</option>
<option value="GB">United Kingdom</option>
<option value="US">United States</option>
<option value="UM">United States Minor Outlying Islands</option>
<option value="UY">Uruguay</option>
<option value="UZ">Uzbekistan</option>
<option value="VU">Vanuatu</option>
<option value="VE">Venezuela</option>
<option value="VN">Vietnam</option>
<option value="VG">Virgin Islands, British</option>
<option value="VI">Virgin Islands, U.S.</option>
<option value="WF">Wallis and Futuna</option>
<option value="EH">Western Sahara</option>
<option value="YE">Yemen</option>
<option value="ZM">Zambia</option>
<option value="ZW">Zimbabwe</option>
<option value="AX">Åland Islands</option>
</select>
</div>
<div class="form-field form-field-zipcode">
<div class="row">
<div class="col col-75 form-field-label">
<label>ZIPCODE</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<input type="text" data-key="ZIPCODE" class="subscribe-input subscribe-zipcode">
</div>
</div>
</div>
<div class="swiper-slide">
<div class="heading">
Great to meet you!
</div>
<div class="copy">
Tell us a bit about your job so we can cover the topics you find most relevant.
</div>
<div class="form">
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>What is your job level?</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<!--
<div class="subscribe-input-select-arrow">
<svg xmlns="http://www.w3.org/2000/svg" width="23.012" height="17.268" viewBox="0 0 23.012 17.268">
<path id="Path_340" data-name="Path 340" d="M14.36,0,12.816,1.508l6.067,6.067H0V9.729H18.884l-6.031,6.032L14.4,17.268l8.616-8.616Z" transform="translate(0 0)"/>
</svg>
</div>
-->
<select data-key="JOBLEVEL" class="subscribe-input subscribe-job-level subscribe-has-other">
<option value="">Select ...</option>
<option value="c-level">C-Level</option>
<option value="vp-director">VP/Director</option>
<option value="manager-supervisor">Manager/Supervisor</option>
<option value="mid-level">Mid Level or Senior Non-Managerial Staff</option>
<option value="entry-level">Entry Level/Junior Staff</option>
<option value="freelance-contractor">Freelancer/Contractor</option>
<option value="student-intern">Student/Intern</option>
<option value="other">Other ...</option>
</select>
<input type="text" placeholder="Please specify ..." class="subscribe-input-other subscribe-job-level-other">
<div class="subscribe-input-other-clear">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</div>
</div>
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>Which of these most closely describes your job role?</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<select data-key="JOBROLE" class="subscribe-input subscribe-job-role subscribe-has-other">
<option value="">Select ...</option>
<option value="developer-engineer">Developer/Software Engineer</option>
<option value="sysadmin-ops-sre">SysAdmin/Operations/SRE</option>
<option value="architect">Architect</option>
<option value="security-professional">Security Professional</option>
<option value="devops-engineer">DevOps Engineer/Team</option>
<option value="community-manager-devrel">Community Manager/Developer Advocate</option>
<option value="it-management-cio-ciso-cto">IT management, including CIO/CISO/CTO</option>
<option value="business-development">Business Development/Marketing/Sales</option>
<option value="enthusiast-hobbyist">Enthusiast/Hobbyist</option>
<option value="other">Other ...</option>
</select>
<input type="text" placeholder="Please specify ..." class="subscribe-input-other subscribe-job-role-other">
<div class="subscribe-input-other-clear">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</div>
</div>
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>How many employees are in the organization you work with?</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<select data-key="ORGEMP" class="subscribe-input subscribe-employees">
<option value="">Select ...</option>
<option value="self-employed">Self-employed</option>
<option value="2-10">2-10</option>
<option value="11-50">11-50</option>
<option value="51-250">51-250</option>
<option value="251-1000">251-1,000</option>
<option value="1001-10000">1,001-10,000</option>
<option value="10000-plus">> 10,000</option>
<option value="not-working">I am not working</option>
</select>
</div>
<div class="form-field form-field-orgdesc">
<div class="row">
<div class="col col-75 form-field-label">
<label>What option best describes the type of organization you work for?</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<select data-key="ORGDESC" class="subscribe-input subscribe-organization-description subscribe-has-other">
<option value="">Select ...</option>
<option value="end-user-org">“End user” organization that primarily uses IT products and services to support their business deliverables</option>
<option value="hardware-software">Hardware / software vendor or supplier</option>
<option value="cloud-service">Cloud service provider or managed service provider</option>
<option value="system-integrator">System integrator or IT consulting firm</option>
<option value="other">Other ...</option>
</select>
<input type="text" placeholder="Please specify ..." class="subscribe-input-other subscribe-organization-description-other">
<div class="subscribe-input-other-clear">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</div>
</div>
<div class="form-field form-field-orgindus">
<div class="row">
<div class="col col-75 form-field-label">
<label>Which of the following best describes your organization's primary industry?</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<select data-key="ORGINDUS" class="subscribe-input subscribe-industry subscribe-has-other">
<option value="">Select ...</option>
<option value="advertising-marketing">Advertising/Marketing</option>
<option value="aerospace-aviation">Aerospace/Aviation</option>
<option value="agriculture">Agriculture</option>
<option value="automotive">Automotive</option>
<option value="biotech-pharma">Biotech/Pharmaceutical</option>
<option value="business-services">Business Services (accounting, consulting, etc.)</option>
<option value="computers-it">Computers/Information Technology</option>
<option value="construction">Construction</option>
<option value="education">Education</option>
<option value="facilities">Facilities/Service Industry</option>
<option value="fintech">Finance/Financial Services (banking, insurance, etc.)</option>
<option value="government">Government</option>
<option value="healthcare">Healthcare</option>
<option value="human-resources">Human Resources</option>
<option value="legal">Legal</option>
<option value="life-sciences">Life sciences (biotech, pharmaceuticals, etc.)</option>
<option value="manufacturing">Manufacturing</option>
<option value="media">Media</option>
<option value="non-profit">Non-profit</option>
<option value="real-estate">Real Estate</option>
<option value="retail-consumer-goods">Retail/Consumer Goods</option>
<option value="telecommunications">Telecommunications</option>
<option value="transportation-logistics">Transportation/Logistics</option>
<option value="travel-hospitality-entertainment">Travel/Hospitality/Entertainment</option>
<option value="utilitiy-energy">Utility/Energy</option>
<option value="other">Other ...</option>
</select>
<input type="text" placeholder="Please specify ..." class="subscribe-input-other subscribe-industry-other">
<div class="subscribe-input-other-clear">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</div>
</div>
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>LINKEDIN PROFILE URL</label>
</div>
<div class="col col-25 form-field-info">
&nbsp;
</div>
</div>
<input type="text" data-key="LINKPROURL" class="subscribe-input subscribe-linkedin-profile-url">
</div>
</div>
</div>
<div class="swiper-slide">
<div class="heading">
Welcome!
</div>
<div class="copy">
<p>
We’re so glad you’re here. You can expect all the best TNS content to arrive
Monday through Friday to keep you on top of the news and at the top of your game.
</p>
<div class="heading-2">
What’s next?
</div>
<p>
Check your inbox for a confirmation email where you can adjust your preferences
and even join additional groups.
</p>
<p class="follow-paragraph">
Follow TNS on your favorite social media networks.
</p>
<div
class="tns-follow-links"
data-instanceid="6a8485266645f"
data-categories="cloud-native,containers,microservices"
>
<div class="follow-links">
<a
rel="me"
href="https://hachyderm.io/@TheNewStack"
class="follow-icon follow-icon-mastadon"
data-platform="mastodon"
data-position="subscribe"
target="_blank"
>
<svg class="fill" fill="#000000" viewBox="0 0 25 25" style="width: 25px; height: 25px" xmlns="http://www.w3.org/2000/svg" xml:space="preserve">
<path d="M21.327 8.566c0-4.339-2.843-5.61-2.843-5.61-1.433-.658-3.894-.935-6.451-.956h-.063c-2.557.021-5.016.298-6.45.956 0 0-2.843 1.272-2.843 5.61 0 .993-.019 2.181.012 3.441.103 4.243.778 8.425 4.701 9.463 1.809.479 3.362.579 4.612.51 2.268-.126 3.541-.809 3.541-.809l-.075-1.646s-1.621.511-3.441.449c-1.804-.062-3.707-.194-3.999-2.409a4.523 4.523 0 0 1-.04-.621s1.77.433 4.014.536c1.372.063 2.658-.08 3.965-.236 2.506-.299 4.688-1.843 4.962-3.254.434-2.223.398-5.424.398-5.424zm-3.353 5.59h-2.081V9.057c0-1.075-.452-1.62-1.357-1.62-1 0-1.501.647-1.501 1.927v2.791h-2.069V9.364c0-1.28-.501-1.927-1.502-1.927-.905 0-1.357.546-1.357 1.62v5.099H6.026V8.903c0-1.074.273-1.927.823-2.558.566-.631 1.307-.955 2.228-.955 1.065 0 1.872.409 2.405 1.228l.518.869.519-.869c.533-.819 1.34-1.228 2.405-1.228.92 0 1.662.324 2.228.955.549.631.822 1.484.822 2.558v5.253z"/>
</svg>
</a>
<a
href="https://bsky.app/profile/thenewstack.io"
class="follow-icon follow-icon-bluesky"
data-platform="bluesky"
data-position="subscribe"
target="_blank"
>
<svg class="fill" fill="#000000" viewBox="0 0 64 57" width="24" style="width: 24px">
<path fill="#0085ff" d="M13.873 3.805C21.21 9.332 29.103 20.537 32 26.55v15.882c0-.338-.13.044-.41.867-1.512 4.456-7.418 21.847-20.923 7.944-7.111-7.32-3.819-14.64 9.125-16.85-7.405 1.264-15.73-.825-18.014-9.015C1.12 23.022 0 8.51 0 6.55 0-3.268 8.579-.182 13.873 3.805ZM50.127 3.805C42.79 9.332 34.897 20.537 32 26.55v15.882c0-.338.13.044.41.867 1.512 4.456 7.418 21.847 20.923 7.944 7.111-7.32 3.819-14.64-9.125-16.85 7.405 1.264 15.73-.825 18.014-9.015C62.88 23.022 64 8.51 64 6.55c0-9.818-8.578-6.732-13.873-2.745Z"></path>
</svg>
</a>
<a
href="https://www.threads.net/@thenewstack"
class="follow-icon follow-icon-threads"
data-platform="threads"
data-position="subscribe"
target="_blank"
>
<svg fill="#CCCCCC" viewBox="0 0 192 192">
<path d="M141.537 88.9883C140.71 88.5919 139.87 88.2104 139.019 87.8451C137.537 60.5382 122.616 44.905 97.5619 44.745C97.4484 44.7443 97.3355 44.7443 97.222 44.7443C82.2364 44.7443 69.7731 51.1409 62.102 62.7807L75.881 72.2328C81.6116 63.5383 90.6052 61.6848 97.2286 61.6848C97.3051 61.6848 97.3819 61.6848 97.4576 61.6855C105.707 61.7381 111.932 64.1366 115.961 68.814C118.893 72.2193 120.854 76.925 121.825 82.8638C114.511 81.6207 106.601 81.2385 98.145 81.7233C74.3247 83.0954 59.0111 96.9879 60.0396 116.292C60.5615 126.084 65.4397 134.508 73.775 140.011C80.8224 144.663 89.899 146.938 99.3323 146.423C111.79 145.74 121.563 140.987 128.381 132.296C133.559 125.696 136.834 117.143 138.28 106.366C144.217 109.949 148.617 114.664 151.047 120.332C155.179 129.967 155.42 145.8 142.501 158.708C131.182 170.016 117.576 174.908 97.0135 175.059C74.2042 174.89 56.9538 167.575 45.7381 153.317C35.2355 139.966 29.8077 120.682 29.6052 96C29.8077 71.3178 35.2355 52.0336 45.7381 38.6827C56.9538 24.4249 74.2039 17.11 97.0132 16.9405C119.988 17.1113 137.539 24.4614 149.184 38.788C154.894 45.8136 159.199 54.6488 162.037 64.9503L178.184 60.6422C174.744 47.9622 169.331 37.0357 161.965 27.974C147.036 9.60668 125.202 0.195148 97.0695 0H96.9569C68.8816 0.19447 47.2921 9.6418 32.7883 28.0793C19.8819 44.4864 13.2244 67.3157 13.0007 95.9325L13 96L13.0007 96.0675C13.2244 124.684 19.8819 147.514 32.7883 163.921C47.2921 182.358 68.8816 191.806 96.9569 192H97.0695C122.03 191.827 139.624 185.292 154.118 170.811C173.081 151.866 172.51 128.119 166.26 113.541C161.776 103.087 153.227 94.5962 141.537 88.9883ZM98.4405 129.507C88.0005 130.095 77.1544 125.409 76.6196 115.372C76.2232 107.93 81.9158 99.626 99.0812 98.6368C101.047 98.5234 102.976 98.468 104.871 98.468C111.106 98.468 116.939 99.0737 122.242 100.233C120.264 124.935 108.662 128.946 98.4405 129.507Z"></path>
</svg>
</a>
<a
href="https://www.linkedin.com/company/the-new-stack"
class="follow-icon follow-icon-linkedin"
data-platform="linkedin"
data-position="subscribe"
target="_blank"
>
<svg viewBox="0 0 16.927 16.689" class="fill">
<path d="M3.833,1.809A1.8,1.8,0,0,1,1.88,3.619,1.783,1.783,0,0,1,0,1.809,1.8,1.8,0,0,1,1.928,0a1.789,1.789,0,0,1,1.9,1.809M.1,5.047H3.714V16.689H.1Z" transform="translate(0 0)"/>
<path d="M28.535,27.5c0-1.452-.047-2.666-.095-3.714h3.142l.167,1.619h.071a4.18,4.18,0,0,1,3.6-1.881c2.381,0,4.166,1.6,4.166,5.024V35.43H35.963V28.978c0-1.5-.524-2.523-1.833-2.523a1.987,1.987,0,0,0-1.857,1.357,2.6,2.6,0,0,0-.119.9V35.43H28.535Z" transform="translate(-22.655 -18.741)"/>
<svg>
</a>
<a
href="https://twitter.com/thenewstack"
class="follow-icon follow-icon-twitter"
data-platform="twitter"
data-position="subscribe"
target="_blank"
>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" width="24px" height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve" class="fill">
<path d="M14.095479,10.316482L22.286354,1h-1.940718l-7.115352,8.087682L7.551414,1H1l8.589488,12.231093L1,23h1.940717 l7.509372-8.542861L16.448587,23H23L14.095479,10.316482z M11.436522,13.338465l-0.871624-1.218704l-6.924311-9.68815h2.981339 l5.58978,7.82155l0.867949,1.218704l7.26506,10.166271h-2.981339L11.436522,13.338465z"/>
</svg>
</a>
<a
href="https://www.facebook.com/thenewstack/"
class="follow-icon follow-icon-facebook"
data-platform="facebook"
data-position="subscribe"
target="_blank"
>
<svg viewBox="0 0 17.492 17.492" class="fill">
<path d="M15.306,0H2.187A2.193,2.193,0,0,0,0,2.187V15.306a2.193,2.193,0,0,0,2.187,2.187H8.822V11.22H6.727V8.488H8.822V7.119a3.621,3.621,0,0,1,3.547-3.763H14.3V6.441H12.572c-.452,0-.585.26-.585.618V8.488H14.3V11.22H11.987v6.272h3.318a2.193,2.193,0,0,0,2.187-2.187V2.187A2.193,2.193,0,0,0,15.306,0"/>
</svg>
</a>
<!--
<a
href="https://www.instagram.com/thenewstack/"
class="follow-icon follow-icon-instagram"
data-platform="instagram"
data-position="subscribe"
target="_blank"
>
<svg viewBox="0 0 17.839 17.84" class="fill">
<path d="M8.92,1.607c2.382,0,2.664.009,3.6.052a4.937,4.937,0,0,1,1.656.307,2.763,2.763,0,0,1,1.026.667,2.763,2.763,0,0,1,.667,1.026,4.938,4.938,0,0,1,.307,1.656c.043.941.052,1.223.052,3.6s-.009,2.664-.052,3.6a4.937,4.937,0,0,1-.307,1.656,2.955,2.955,0,0,1-1.693,1.693,4.937,4.937,0,0,1-1.656.307c-.941.043-1.223.052-3.6.052s-2.664-.009-3.6-.052a4.937,4.937,0,0,1-1.656-.307,2.763,2.763,0,0,1-1.026-.667,2.763,2.763,0,0,1-.667-1.026,4.937,4.937,0,0,1-.307-1.656c-.043-.941-.052-1.223-.052-3.6s.009-2.664.052-3.6a4.938,4.938,0,0,1,.307-1.656,2.763,2.763,0,0,1,.667-1.026,2.763,2.763,0,0,1,1.026-.667,4.937,4.937,0,0,1,1.656-.307c.941-.043,1.223-.052,3.6-.052M8.92,0C6.5,0,6.193.01,5.242.054A6.547,6.547,0,0,0,3.077.468,4.376,4.376,0,0,0,1.5,1.5,4.373,4.373,0,0,0,.468,3.077,6.547,6.547,0,0,0,.054,5.242C.01,6.194,0,6.5,0,8.92S.01,11.646.054,12.6a6.547,6.547,0,0,0,.415,2.165A4.373,4.373,0,0,0,1.5,16.343a4.373,4.373,0,0,0,1.58,1.029,6.547,6.547,0,0,0,2.165.415c.951.044,1.255.054,3.678.054s2.726-.01,3.678-.054a6.547,6.547,0,0,0,2.165-.415,4.56,4.56,0,0,0,2.609-2.609,6.547,6.547,0,0,0,.415-2.165c.044-.951.054-1.255.054-3.678s-.01-2.726-.054-3.678a6.547,6.547,0,0,0-.415-2.165A4.373,4.373,0,0,0,16.343,1.5,4.376,4.376,0,0,0,14.763.468,6.547,6.547,0,0,0,12.6.054C11.646.01,11.342,0,8.92,0" transform="translate(0 0)"/>
<path d="M25.914,21.334a4.581,4.581,0,1,0,4.58,4.581,4.581,4.581,0,0,0-4.58-4.581m0,7.554a2.973,2.973,0,1,1,2.973-2.973,2.973,2.973,0,0,1-2.973,2.973" transform="translate(-16.995 -16.995)"/>
<path d="M64.142,16.253a1.07,1.07,0,1,1-1.07-1.07,1.071,1.071,0,0,1,1.07,1.07" transform="translate(-49.39 -12.095)"/>
</svg>
</a>
-->
<a
href="https://open.spotify.com/show/2nj1mpDb9jxHxi9vjZvDdk"
class="follow-icon follow-icon-spotify"
data-platform="spotify"
data-position="subscribe"
target="_blank"
>
<svg fill="#CCCCCC" viewBox="0 0 24 24" height="32">
<path d="M13.427.01C6.805-.253 1.224 4.902.961 11.524.698 18.147 5.853 23.728 12.476 23.99c6.622.263 12.203-4.892 12.466-11.514S20.049.272 13.427.01m5.066 17.579a.717.717 0 0 1-.977.268 14.4 14.4 0 0 0-5.138-1.747 14.4 14.4 0 0 0-5.42.263.717.717 0 0 1-.338-1.392c1.95-.474 3.955-.571 5.958-.29 2.003.282 3.903.928 5.647 1.92a.717.717 0 0 1 .268.978m1.577-3.15a.93.93 0 0 1-1.262.376 17.7 17.7 0 0 0-5.972-1.96 17.7 17.7 0 0 0-6.281.238.93.93 0 0 1-1.11-.71.93.93 0 0 1 .71-1.11 19.5 19.5 0 0 1 6.94-.262 19.5 19.5 0 0 1 6.599 2.165c.452.245.62.81.376 1.263m1.748-3.551a1.147 1.147 0 0 1-1.546.488 21.4 21.4 0 0 0-6.918-2.208 21.4 21.4 0 0 0-7.259.215 1.146 1.146 0 0 1-.456-2.246 23.7 23.7 0 0 1 8.034-.24 23.7 23.7 0 0 1 7.657 2.445c.561.292.78.984.488 1.546m13.612-.036-.832-.247c-1.67-.495-2.14-.681-2.14-1.353 0-.637.708-1.327 2.264-1.327 1.539 0 2.839.752 3.51 1.31.116.096.24.052.24-.098V6.935c0-.097-.027-.15-.098-.203-.83-.62-2.272-1.07-3.723-1.07-2.953 0-4.722 1.68-4.722 3.59 0 2.157 1.371 2.91 3.626 3.546l.973.274c1.689.478 1.998.902 1.998 1.556 0 1.097-.831 1.433-2.07 1.433-1.556 0-3.457-.911-4.35-2.025-.08-.098-.177-.053-.177.062v2.423c0 .097.01.141.08.22.743.814 2.52 1.53 4.59 1.53 2.546 0 4.456-1.485 4.456-3.784 0-1.787-1.052-2.865-3.625-3.635m10.107-1.76c-1.68 0-2.653 1.026-3.219 2.052V9.376c0-.08-.044-.124-.124-.124h-2.22c-.079 0-.123.044-.123.124V20.72c0 .08.044.124.124.124h2.22c.079 0 .123-.044.123-.124v-4.536c.566 1.025 1.521 2.034 3.237 2.034 2.264 0 3.89-1.955 3.89-4.581s-1.644-4.545-3.908-4.545m-.654 6.986c-1.185 0-2.211-1.167-2.618-2.458.407-1.362 1.344-2.405 2.618-2.405 1.211 0 2.051.92 2.051 2.423s-.84 2.44-2.051 2.44m40.633-6.826h-2.264c-.08 0-.115.017-.15.097l-2.282 5.483-2.29-5.483c-.035-.08-.07-.097-.15-.097h-3.661v-.584c0-.955.645-1.397 1.476-1.397.496 0 1.035.256 1.415.486.089.053.15-.008.115-.088l-.796-1.901a.26.26 0 0 0-.124-.133c-.389-.203-1.025-.38-1.644-.38-1.875 0-2.954 1.432-2.954 3.254v.743h-1.503c-.08 0-.124.044-.124.124v1.768c0 .08.044.124.124.124h1.503v6.668c0 .08.044.123.124.123h2.264c.08 0 .124-.044.124-.123v-6.668h1.936l2.812 6.11-1.512 3.325c-.044.098.009.142.097.142h2.414c.08 0 .116-.018.15-.097l4.997-11.355c.035-.08-.009-.141-.097-.141M54.964 9.04c-2.865 0-4.837 2.025-4.837 4.616 0 2.573 1.971 4.616 4.837 4.616 2.856 0 4.846-2.043 4.846-4.616 0-2.591-1.99-4.616-4.846-4.616m.008 7.065c-1.37 0-2.343-1.043-2.343-2.45 0-1.405.973-2.449 2.343-2.449 1.362 0 2.335 1.043 2.335 2.45 0 1.406-.973 2.45-2.335 2.45m33.541-6.334a1.24 1.24 0 0 0-.483-.471 1.4 1.4 0 0 0-.693-.17q-.384 0-.693.17a1.24 1.24 0 0 0-.484.471q-.174.302-.174.681 0 .375.174.677.175.3.484.471t.693.17.693-.17.483-.471.175-.676q0-.38-.175-.682m-.211 1.247a1 1 0 0 1-.394.39 1.15 1.15 0 0 1-.571.14 1.16 1.16 0 0 1-.576-.14 1 1 0 0 1-.391-.39 1.14 1.14 0 0 1-.14-.566q0-.316.14-.562t.391-.388.576-.14q.32 0 .57.14.253.141.395.39t.142.565q0 .312-.142.56m-19.835-5.78c-.85 0-1.468.6-1.468 1.396s.619 1.397 1.468 1.397c.866 0 1.485-.6 1.485-1.397 0-.796-.619-1.397-1.485-1.397m19.329 5.19a.31.31 0 0 0 .134-.262q0-.168-.132-.266-.132-.099-.381-.099h-.588v1.229h.284v-.489h.154l.374.489h.35l-.41-.518a.5.5 0 0 0 .215-.084m-.424-.109h-.26v-.3h.27q.12 0 .184.036a.12.12 0 0 1 .065.116.12.12 0 0 1-.067.111.4.4 0 0 1-.192.037M69.607 9.252h-2.263c-.08 0-.124.044-.124.124v8.56c0 .08.044.123.124.123h2.263c.08 0 .124-.044.124-.123v-8.56c0-.08-.044-.124-.124-.124m-3.333 6.605a2.1 2.1 0 0 1-1.053.257c-.725 0-1.185-.425-1.185-1.362v-3.484h2.211c.08 0 .124-.044.124-.124V9.376c0-.08-.044-.124-.124-.124h-2.21V6.944c0-.097-.063-.15-.15-.08l-3.954 3.113c-.053.044-.07.088-.07.16v1.007c0 .08.044.124.123.124h1.539v3.855c0 2.087 1.203 3.06 2.918 3.06.743 0 1.46-.194 1.884-.442.062-.035.07-.07.07-.133v-1.68c0-.088-.044-.115-.123-.07" transform="translate(-0.95,0)"></path>
</svg>
</a>
<a
href="https://www.youtube.com/c/thenewstack?sub_confirmation=1"
class="follow-icon follow-icon-youtube"
data-platform="youtube"
data-position="subscribe"
target="_blank"
>
<svg viewBox="0 0 310 310" class="fill">
<g id="XMLID_822_">
<path id="XMLID_823_" d="M297.917,64.645c-11.19-13.302-31.85-18.728-71.306-18.728H83.386c-40.359,0-61.369,5.776-72.517,19.938
C0,79.663,0,100.008,0,128.166v53.669c0,54.551,12.896,82.248,83.386,82.248h143.226c34.216,0,53.176-4.788,65.442-16.527
C304.633,235.518,310,215.863,310,181.835v-53.669C310,98.471,309.159,78.006,297.917,64.645z M199.021,162.41l-65.038,33.991
c-1.454,0.76-3.044,1.137-4.632,1.137c-1.798,0-3.592-0.484-5.181-1.446c-2.992-1.813-4.819-5.056-4.819-8.554v-67.764
c0-3.492,1.822-6.732,4.808-8.546c2.987-1.814,6.702-1.938,9.801-0.328l65.038,33.772c3.309,1.718,5.387,5.134,5.392,8.861
C204.394,157.263,202.325,160.684,199.021,162.41z"/>
</g>
</svg>
</a>
</div>
</div>
<script>
$(document).ready(function() {
var $follow_links = $('.tns-follow-links[data-instanceid="6a8485266645f"]');
var categories = $follow_links.data('categories');
$follow_links.find('.follow-icon').on('click', function() {
var context = window.location.pathname;
var platform = $(this).data('platform');
var position = $(this).data('position');
var payload = {
'event' : 'follow_link_click',
'platform' : platform,
'context' : context,
'position' : position
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
</script>
<p>
Become a <a href="https://www.linkedin.com/company/the-new-stack" class="ext-link" target="_blank">TNS follower on LinkedIn</a>.
</p>
<p>
Check out <a href="/">the latest featured and trending stories</a> while you wait for your
first TNS newsletter.
</p>
</div>
</div>
</div>
</div>
</div>
<div class="row footer">
<div class="col col-33 swiper-button-col">
<div class="swiper-button tns-subscribe-swiper-button-prev">PREV</div>
</div>
<div class="col col-33 page-indicator">
<span class="subscribe-current-slide">1</span> of <span class="subscribe-total-slides">2</span>
</div>
<div class="col col-33 swiper-button-col">
<div class="swiper-button tns-subscribe-swiper-button-next">NEXT</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function() {
var subscribeCategories = 'cloud-native,containers,microservices';
var $subscribe = $('#tns-subscribe');
var $modal = $subscribe.find('.modal');
var $header = $modal.find('.header');
var $close = $modal.find('.close');
var $content = $modal.find('.content');
var $footer = $modal.find('.footer');
var $subscribe_button = $modal.find('.subscribe-button');
/// Init Swiper
var $subscribe_swiper = new Swiper('.tns-subscribe-swiper', {
allowTouchMove: false,
loop: false,
slidesPerView: 1,
autoplay: false,
spaceBetween: 0,
navigation : false,
observer : true,
preventInteractionOnTransition: true,
a11y: false,
noSwipingSelector: 'button'
});
/// Init window.tns.subscribe
window.tns = window.tns || {}
window.tns.subscribe = {
prepop : false,
section : '',
context : '',
screen : 0,
open : function() {
/// Reset the modal
window.tns.subscribe.screen = 0;
$subscribe_swiper.slideTo(0, 0, true);
$('.form-field-resubscribe').hide();
$('.copy-screen-0').show();
$('.form-field-email').show();
$('.swiper-slide').scrollTop(0);
/// Open the modal
$('body').css({
overflow : 'hidden'
});
$subscribe.stop().css({
display : 'block',
opacity : 0
});
$subscribe.stop().transition({
opacity : 1,
duration : 333,
easing : 'snap'
});
$modal.stop().css({
opacity : 0,
display : 'block'
})
$modal.stop().transition({
delay : 333,
duration : 121,
opacity : 1,
easing : 'easeOutQuad'
});
if (window.tns.subscribe.prepop === true) {
$subscribe_button.click();
}
},
close : function() {
window.tns.subscribe.screen = 0;
$subscribe.stop().css({
opacity : 0,
display : 'block'
});
$modal.stop().transition({
duration : 333,
opacity : 0,
easing : 'easeOutQuad'
});
$subscribe.stop().transition({
duration : 333,
opacity : 0,
easing : 'easeOutQuad'
}, function() {
$subscribe.stop().css({
opacity : 0,
display : 'none'
});
$('body').css({
overflowY : 'auto'
});
$('.tns-subscribe-swiper-button-next').text('NEXT');
$modal.stop().transition({
maxHeight : 370,
duration : 333,
easing : 'easeOutQuad'
});
$content.stop().transition({
bottom : 0,
duration : 333,
easing : 'easeOutQuad'
});
$footer.stop().transition({
bottom : -60,
duration : 333,
easing : 'easeOutQuad'
});
});
},
submit : async function(direction) {
/// Track the step completed
var action_taken = '';
/// Init the payload object
var payload = {
recaptcha_token : '',
section : window.tns.subscribe.section,
screen : null,
data : {
EMAIL : '',
FNAME : '',
LNAME : '',
COMPANY : '',
COUNTRY : '',
ZIPCODE : '',
JOBLEVEL : '',
JOBROLE : '',
ORGEMP : '',
ORGDESC : '',
ORGINDUS : '',
LINKPROURL : ''
},
errors : []
};
/// Determine the target_screen
var screen = window.tns.subscribe.screen;
payload.screen = window.tns.subscribe.screen;
console.log('[TNS Subscribe]', payload);
var target_screen = window.tns.subscribe.screen;
if (direction === 'prev') {
target_screen = screen - 1;
}
if (direction === 'next') {
target_screen = screen + 1;
}
/// Gather the values from the form
$('.subscribe-input').each(function() {
var key = $(this).data('key');
var value = $(this).val();
payload.data[key] = value;
});
/// Validate the values for the current screen
if (screen === 0) {
action_taken = 'newsletter_subscribe';
if (!payload.data.EMAIL || !validator.isEmail(payload.data.EMAIL)) {
payload.errors.push({
key : 'EMAIL',
msg : 'EMAIL is required.'
});
}
}
if (screen === 1) {
action_taken = 'demo_data_1';
var required = [
'FNAME',
'LNAME',
'COMPANY',
'COUNTRY'
]
required.map((key) => {
if (!payload.data[key]) {
payload.errors.push({
key : key,
msg : key + ' is required.'
})
}
});
if (payload.data.COUNTRY === 'US' && !payload.data.ZIPCODE) {
payload.errors.push({
key : 'ZIPCODE',
msg : 'ZIPCODE is required.'
})
}
}
if (screen === 2) {
action_taken = 'demo_data_2';
var required = [
'JOBLEVEL',
'JOBROLE',
'ORGEMP',
'ORGDESC',
'ORGINDUS',
// 'LINKPROURL'
]
if (payload.data.ORGEMP === 'not-working') {
/// Remove ORGDESC and ORGINDUS from the required array
required = required.filter(function(item) {
return item !== 'ORGDESC' && item !== 'ORGINDUS'
})
}
required.map((key) => {
if (!payload.data[key]) {
payload.errors.push({
key : key,
msg : key + ' is required.'
})
}
});
if (payload.data.JOBLEVEL === 'other') {
var other_value = $('.subscribe-job-level-other').val();
if (!other_value) {
payload.errors.push({
key : 'JOBLEVEL',
msg : 'JOBLEVEL is required.'
})
} else {
payload.data.JOBLEVEL = other_value;
}
}
if (payload.data.JOBROLE === 'other') {
var other_value = $('.subscribe-job-role-other').val();
if (!other_value) {
payload.errors.push({
key : 'JOBROLE',
msg : 'JOBROLE is required.'
})
} else {
payload.data.JOBROLE = other_value;
}
}
if (payload.data.ORGDESC === 'other') {
var other_value = $('.subscribe-organization-description-other').val();
if (!other_value) {
payload.errors.push({
key : 'ORGDESC',
msg : 'ORGDESC is required.'
})
} else {
payload.data.ORGDESC = other_value;
}
}
if (payload.data.ORGINDUS === 'other') {
var other_value = $('.subscribe-industry-other').val();
if (!other_value) {
payload.errors.push({
key : 'ORGINDUS',
msg : 'ORGINDUS is required.'
})
} else {
payload.data.ORGINDUS = other_value;
}
}
// if (!payload.data.LINKPROURL.includes('linkedin.com')) {
// payload.errors.push({
// key : 'LINKPROURL',
// msg : 'LINKPROURL must be a linkedin.com url.'
// })
// }
}
if (direction === 'next' && payload.errors.length) {
var $error_input = $('.subscribe-input[data-key="' + payload.errors[0].key + '"');
$error_input.addClass('error').focus();
$error_input.parent().find('.form-field-info').addClass('error');
console.log('ERROR', payload);
if (direction === 'next') {
return payload;
}
}
///
/// POST /no-cache/subscribe/
///
if (direction === 'next') {
payload.recaptcha_token = window.tns.turnstile.token;
var result = await $.post('/no-cache/subscribe/', payload);
result = JSON.parse(result);
console.log('[TNS SUBSCRIBE]', result);
if (result.errors.length) {
console.log('[TNS SUBSCRIBE]', result.errors[0].msg);
if (result.errors[0].msg == 'UNSUBSCRIBED') {
window.tns.subscribe.resubscribe();
}
if (result.errors[0].msg == 'TURNSTILE_FAILED') {
window.tns.subscribe.resubscribe();
}
return payload;
}
/// Re-enabled the subscribe button
$('.subscribe-button').html('SUBSCRIBE')
$('.subscribe-button').attr('disabled', false)
var subscribePayload = {
'event' : 'subscribe',
'context' : window.tns.subscribe.context,
'action_taken' : action_taken
};
if (subscribeCategories) {
subscribePayload.categories = subscribeCategories;
}
window.dataLayer.push(subscribePayload);
}
/// Toggle the footer UI
if (target_screen === 0) {
$('.tns-subscribe-swiper-button-next').text('NEXT');
$modal.stop().transition({
maxHeight : 370,
duration : 333,
easing : 'easeOutQuad'
});
$content.stop().transition({
bottom : 0,
duration : 333,
easing : 'easeOutQuad'
});
$footer.stop().transition({
bottom : -60,
duration : 333,
easing : 'easeOutQuad'
});
}
if (target_screen === 1) {
$('.tns-subscribe-swiper-button-next').text('NEXT');
$modal.stop().transition({
maxHeight : 600,
duration : 333,
easing : 'easeOutQuad'
});
$content.stop().transition({
bottom : 60,
duration : 333,
easing : 'easeOutQuad'
});
$footer.stop().transition({
bottom : 0,
duration : 333,
easing : 'easeOutQuad'
});
setTimeout(function() {
$('.subscribe-firstname').focus();
}, 400);
}
if (target_screen === 2) {
$('.tns-subscribe-swiper-button-next').text('SUBMIT');
setTimeout(function() {
$('.subscribe-job-level').focus();
}, 400);
}
if (target_screen === 3) {
$modal.stop().transition({
maxHeight : 710,
duration : 333,
easing : 'easeOutQuad'
});
$content.stop().transition({
bottom : 0,
duration : 333,
easing : 'easeOutQuad'
});
$footer.stop().transition({
bottom : -60,
duration : 333,
easing : 'easeOutQuad'
});
}
/// Transition to the prev or next slide
$subscribe_swiper.slideTo(target_screen, 333, true);
window.tns.subscribe.screen = target_screen;
$('.subscribe-current-slide').text(window.tns.subscribe.screen);
$subscribe_button.attr('disabled', false);
},
resubscribe: function() {
/// If a reader has previously unsubscribed they
/// must use the Mailchimp hosted form to resubscribe
/// Reset the UI to screen 0
window.tns.subscribe.screen = 0;
$subscribe_swiper.slideTo(0, 333, true);
$('.tns-subscribe-swiper-button-next').text('NEXT');
$modal.stop().transition({
maxHeight : 370,
duration : 333,
easing : 'easeOutQuad'
});
$content.stop().transition({
bottom : 0,
duration : 333,
easing : 'easeOutQuad'
});
$footer.stop().transition({
bottom : -60,
duration : 333,
easing : 'easeOutQuad'
});
/// Hide the subscribe form and reset the button
$('.copy-screen-0').hide();
$('.form-field-email').hide();
$('.subscribe-button').html('SUBSCRIBE')
$('.subscribe-button').attr('disabled', false)
/// Show the re-subscribe form
$('.form-field-resubscribe').show();
$('.resubscribe-button').off('click');
$('.resubscribe-button').on('click', function($event) {
window.open('http://eepurl.com/bMg5kH', '_blank');
// DO NOT transition to the next slide
// because they'll still be in "pending" mode
// so we can't collect any data.
// $modal.stop().transition({
// maxHeight : 600,
// duration : 333,
// easing : 'easeOutQuad'
// });
// $content.stop().transition({
// bottom : 60,
// duration : 333,
// easing : 'easeOutQuad'
// });
// $footer.stop().transition({
// bottom : 0,
// duration : 333,
// easing : 'easeOutQuad'
// });
// setTimeout(function() {
// $('.subscribe-firstname').focus();
// }, 400);
// $subscribe_swiper.slideTo(1, 333, true);
// window.tns.subscribe.screen = 1;
});
}
}
/// Remove all error classes on keyup
$('.subscribe-input').on('keyup', function($event) {
if ($event.key === 'Enter') return;
$('.subscribe-input').removeClass('error');
$('.form-field-info').removeClass('error');
});
$('select.subscribe-input').on('change', function($event) {
$('.subscribe-input').removeClass('error');
$('.form-field-info').removeClass('error');
});
/// Handle .subscibe-button click
$subscribe_button.on('click', function($event) {
var disabled = $(this).attr('disabled')
if (disabled) return false
$('.subscribe-button').attr('disabled', true)
/// Replace button label with spinner
var spinner = $('<div class="button-spinner"></div>');
$('.subscribe-button').html('').append(spinner);
/// Refresh or obtain a turnstile token ...
if (window.tns.turnstile.widgetId) {
console.log('[TNS SUBSCRIBE] Resetting Turnstile widget: ' + window.tns.turnstile.widgetId)
window.tns.turnstile.renderWidget(function(token) {
window.tns.turnstile.token = token;
console.log('[TNS SUBSCRIBE] Refreshed Turnstile token:')
console.log(window.tns.turnstile.token)
window.tns.subscribe.submit('next')
});
} else {
console.log('[TNS SUBSCRIBE] Rendering Turnstile widget')
/// Render the Turnstile widget and obtain a token and a widgetId
window.tns.turnstile.renderWidget(async function(token) {
window.tns.turnstile.token = token;
console.log('[TNS SUBSCRIBE] Obtained Turnstile token:')
console.log(window.tns.turnstile.token)
window.tns.subscribe.submit('next')
});
}
});
/// Handle onEnter for subscribe-email input
$('.subscribe-email').on('keyup', function($event) {
if ($event.key === 'Enter') {
$subscribe_button.click();
}
});
/// Handle other input toggle
$('.subscribe-has-other').on('change', function($event) {
var value = $(this).val();
var $other_input = $(this).next();
var $other_clear = $(this).next().next();
if (value === 'other') {
$(this).blur().hide();
$other_input.css({ display : 'block' });
$other_clear.show();
$other_input.focus();
}
});
// $('.subscribe-input-other').on('blur', function() {
// var value = $(this).val();
// if (value === '') {
// $(this).hide();
// $(this).prev().css({ display : 'block' }).val('null');
// }
// });
$('.subscribe-input-other-clear').on('click', function() {
$(this).prev().val('');
$(this).prev().hide();
$(this).prev().prev().val('').show();
$(this).hide();
});
/// Handle zipcode input toggle
$('.subscribe-country').on('change', function($event) {
var countryCode = $(this).val();
if (countryCode === 'US') {
$('.form-field-zipcode').show();
} else {
$('.form-field-zipcode').hide();
}
});
/// Handle toggle of ORGDESC and ORGINDUS inputs
$('.subscribe-employees').on('change', function($event) {
var value = $(this).val();
if (value === 'not-working') {
$('.form-field-orgdesc').hide();
$('.form-field-orgindus').hide();
} else {
$('.form-field-orgdesc').show();
$('.form-field-orgindus').show();
}
});
/// Handle PREV NEXT clicks
$('.tns-subscribe-swiper-button-prev').on('click', function() {
window.tns.subscribe.submit('prev');
});
$('.tns-subscribe-swiper-button-next').on('click', function() {
window.tns.subscribe.submit('next');
});
/// Close/Cancel handlers
$modal.on('click', function($event) {
$event.stopPropagation();
});
$subscribe.on('click', function($event) {
window.tns.subscribe.close();
});
$close.on('click', function($event) {
$event.stopPropagation();
window.tns.subscribe.close();
});
///
/// Auto-open Subscribe based on the `open-subscribe` query param?
///
var urlParams = new URLSearchParams(window.location.search);
if (urlParams.get('open-subscribe')) {
window.tns.subscribe.open();
}
});
</script>
<div class="tns-voxpop-screen">
<div class="tns-voxpop-modal">
<div class="header">
<div class="title">
VOXPOP
</div>
<div class="close-icon tns-voxpop-close">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</div>
</div>
<div class="content">
<div class="content-block">
<div
class="tns-poll"
data-pollID="22754645"
data-instanceID="6a8485266697d"
data-timestamp="1787069734"
data-categories="frontend-development,javascript"
>
<div class="questions">
<div class="page" data-questionID="66b25394b7070">
<div class="row question">
<div class="col">
As a JavaScript developer, what non-React tools do you use most often? </div>
</div>
<div class="row context">
<div class="col">
</div>
</div>
<div class="row answers">
<div class="col">
<div
class="option"
data-questionid="66b25394b7070"
data-answerid="66b25394ba5e8"
>
<div class="option-checkmark">&#10003;</div>
<div class="option-text">
Angular </div>
<div class="option-percentage">0%</div>
<div class="option-results"></div>
</div>
<div
class="option"
data-questionid="66b25394b7070"
data-answerid="66b25394bf624"
>
<div class="option-checkmark">&#10003;</div>
<div class="option-text">
Astro </div>
<div class="option-percentage">0%</div>
<div class="option-results"></div>
</div>
<div
class="option"
data-questionid="66b25394b7070"
data-answerid="66b25394c1e21"
>
<div class="option-checkmark">&#10003;</div>
<div class="option-text">
Svelte </div>
<div class="option-percentage">0%</div>
<div class="option-results"></div>
</div>
<div
class="option"
data-questionid="66b25394b7070"
data-answerid="66b25394c46e2"
>
<div class="option-checkmark">&#10003;</div>
<div class="option-text">
Vue.js </div>
<div class="option-percentage">0%</div>
<div class="option-results"></div>
</div>
<div
class="option"
data-questionid="66b25394b7070"
data-answerid="66b25394c6b6c"
>
<div class="option-checkmark">&#10003;</div>
<div class="option-text">
Other </div>
<div class="option-percentage">0%</div>
<div class="option-results"></div>
</div>
<div
class="option"
data-questionid="66b25394b7070"
data-answerid="66b25394c95b4"
>
<div class="option-checkmark">&#10003;</div>
<div class="option-text">
I only use React </div>
<div class="option-percentage">0%</div>
<div class="option-results"></div>
</div>
<div
class="option"
data-questionid="66b25394b7070"
data-answerid="66b25394cb8bc"
>
<div class="option-checkmark">&#10003;</div>
<div class="option-text">
I don't use JavaScript </div>
<div class="option-percentage">0%</div>
<div class="option-results"></div>
</div>
</div>
</div>
</div>
</div>
<div class="post-roll">
<div class="post-roll-block">
<div class="newsletter-form">
<div class="cta">
Thanks for your opinion! Subscribe below to get the final results, published
exclusively in our TNS Update newsletter:
</div>
<div class="row">
<div class="col col-75 email">
<input type="email" placeholder="EMAIL ADDRESS" class="voxpop-email-input tns-poll-postroll-daily-input" />
</div>
<div class="col col-25 subscribe">
<button class="tns-poll-postroll-daily-button">SUBMIT</button>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function() {
/// Handle TNS Daily subscription
var $poll = $('.tns-poll[data-instanceID="6a8485266697d"]');
var $tnsNewsletterEmailInput = $poll.find('.tns-poll-postroll-daily-input');
var $tnsNewsletterSubmitButton = $poll.find('.tns-poll-postroll-daily-button');
$tnsNewsletterEmailInput.on('keyup', function($event) {
$(this).removeClass('error');
if ($event.which === 13) {
$tnsNewsletterSubmitButton.click();
}
});
$tnsNewsletterSubmitButton.on('click', function() {
var email = $tnsNewsletterEmailInput.val();
window.tns.subscribe.prepop = true;
window.tns.subscribe.context = 'tns_voxpop_postroll';
$('#tns-subscribe').find('.subscribe-email').val(email);
$('#tns-subscribe').find('.subscribe-button').click();
window.tns.subscribe.open();
});
});
</script> </div>
</div>
<script>
$(document).ready(function() {
var $poll = $('.tns-poll[data-instanceID="6a8485266697d"]');
var $option = $poll.find('.option');
var sponsor_slug = '';
var voxpop = 'true'; /// string 'true' || 'false'
var categories = $poll.data('categories');
var voted = localStorage.getItem('tns_poll_vote_22754645');
if (voted) voted = JSON.parse(voted);
///
/// Handle vote
///
$option.on('click', function($event) {
var $thisOption = $(this);
var poll_ID = '22754645';
var instance_ID = '6a8485266697d';
var question_ID = null;
var answer_ID = null;
var captchaToken = null;
var pollData = null;
if ($poll.hasClass('done')) return;
async.series([
setStatusClasses,
obtainCaptchaToken,
revealPercentages,
submitVote,
displayResults,
handlePostroll
], function(result) {
if (result) console.log(result);
});
function setStatusClasses(next) {
$poll.addClass('done');
$option.removeClass('active');
$thisOption.addClass('active');
$thisOption.addClass('selected');
question_ID = $thisOption.data('questionid');
answer_ID = $thisOption.data('answerid');
return next();
}
function obtainCaptchaToken(next) {
captchaToken = window.tns.turnstile.token;
return next();
}
function revealPercentages(next) {
var delay = 21;
var i = 0;
$poll.find('.option-percentage').each(function() {
$(this).transition({
delay : delay * i,
duration : 99,
opacity : 1,
easing : 'easeOutQuad'
});
i++;
});
return next();
}
function submitVote(next) {
var payload = {
poll_ID : '22754645',
instance_ID : instance_ID,
question_ID : question_ID,
answer_ID : answer_ID,
recaptcha_token : captchaToken,
sponsor : sponsor_slug
}
console.log('[tns-poll] Sending poll vote ...')
$.ajax({
url : '/no-cache/polls-vote/',
type : 'post',
data : payload,
statusCode : {
429 : function() {
$poll.removeClass('done');
$option.removeClass('active');
$poll.find('.option-percentage').css({
opacity : 0
});
var poll_type = 'inline';
if (voxpop === 'true') poll_type = 'voxpop';
var event_payload = {
event : 'poll',
poll_action : 'rate-limited',
poll_type : poll_type,
poll_id : '22754645',
question_ID : question_ID,
answer_ID : answer_ID
}
if (sponsor_slug) {
event_payload.sponsor = sponsor_slug;
}
if (categories) {
event_payload.categories = categories;
}
window.dataLayer.push(event_payload)
var msg = '429 — Whoa, facile tigré.';
msg += 'You\'re being rate-limited.';
msg += 'If you\'re human, take it easy and try again in an hour.';
console.log(msg);
}
}
}).done(function(data, statusText, xhr) {
if (data) data = JSON.parse(data);
pollData = data;
console.log('[tns-poll] Result from vote endpoint:');
console.log(data);
/// Pre-construct the event_payload
var poll_type = 'inline';
if (voxpop === 'true') poll_type = 'voxpop';
var event_payload = {
event : 'poll',
poll_action : null,
poll_type : poll_type,
poll_id : '22754645',
question_ID : question_ID,
answer_ID : answer_ID
}
if (sponsor_slug) {
event_payload.sponsor = sponsor_slug;
}
if (categories) {
event_payload.categories = categories;
}
if (data.bot === true) {
event_payload.poll_action = 'recaptcha-fail';
console.log('[tns-poll] Suspected bot vote due to recaptcha fail.');
window.dataLayer.push(event_payload);
event_payload.instance_ID = instance_ID;
console.log(event_payload);
return next();
}
if (!voted && data.unique_vote === true) {
event_payload.poll_action = 'vote';
console.log('[tns-poll] Unique vote detected, firing GA4 event.');
window.dataLayer.push(event_payload);
event_payload.instance_ID = instance_ID;
console.log(event_payload);
delete payload.recaptcha_token;
localStorage.setItem('tns_poll_vote_22754645', JSON.stringify(payload));
console.log('[tns-poll] Set localStorage item.');
} else {
event_payload.poll_action = 'duplicate-vote-attempt';
console.log('[tns-poll] Detected duplicate vote, did not fire GA4 event.');
event_payload.instance_ID = instance_ID;
console.log(event_payload);
delete payload.recaptcha_token;
localStorage.setItem('tns_poll_vote_22754645', JSON.stringify(payload));
}
return next();
});
}
function displayResults(next) {
var highestPercentage = 0;
var totalVotes = parseInt(pollData.totalVotes);
var totalPercentage = 0;
$option.each(function() {
var optionAnswerID = $(this).data('answerid');
var percentage = 0;
pollData.results.map(result => {
if (result.answer_ID === optionAnswerID) {
percentage = parseInt(result.percentage);
totalPercentage += percentage;
if (percentage > highestPercentage) {
highestPercentage = percentage;
$option.removeClass('active');
$(this).addClass('active');
}
}
});
var $resultsBar = $(this).find('.option-results');
var $percentDisplay = $(this).find('.option-percentage');
var digit = 0;
var uptickPercentDisplay = setInterval(function() {
if (digit >= percentage) {
clearInterval(uptickPercentDisplay);
return;
}
digit++;
$percentDisplay.html(digit + '%');
}, 3);
if (percentage === 0) {
$percentDisplay.html('0%');
}
$resultsBar.transition({
width : percentage + '%',
duration : 777,
easing : 'easeOutQuad'
})
});
return next();
}
function handlePostroll(next) {
if (voxpop !== 'true') {
console.log('[tns-poll] Inline poll detected, skipping post-roll ...');
return next();
}
console.log('[tns-poll] Voxpop poll detected, firing post-roll ...');
var targetHeight = $poll.find('.post-roll-block').outerHeight(true);
$poll.find('.post-roll').transition({
delay : 555,
height : targetHeight,
duration : 777,
easing : 'easeOutQuad'
});
setTimeout(function() {
$poll.find('.post-roll').addClass('open');
if (window.tns.voxpop && window.tns.voxpop.vote) {
window.tns.voxpop.vote(pollData, 777);
}
}, 777);
}
});
///
/// Handle firing the impression event, but only when
/// the poll enters the viewport.
///
function isInViewport($element) {
var elementTop = $element.offset().top;
var elementBottom = elementTop + $element.outerHeight();
var viewportTop = $(window).scrollTop();
var viewportBottom = viewportTop + $(window).height();
return elementBottom > viewportTop && elementTop < viewportBottom;
};
if (!voted && voxpop !== 'true') {
var impression_recorded = false;
$(window).scroll(function() {
if (!impression_recorded && isInViewport($poll)) {
var poll_type = 'inline';
if (voxpop === 'true') poll_type = 'voxpop';
var event_payload = {
event : 'poll',
poll_action : 'impression',
poll_type : poll_type,
poll_id : '22754645'
}
if (sponsor_slug) {
event_payload.sponsor = sponsor_slug;
}
if (categories) {
event_payload.categories = categories;
}
console.log('[Polls] Poll impression detected, firing GA4 event.');
window.dataLayer.push(event_payload)
event_payload.instance_ID = '6a8485266697d';
console.log(event_payload);
impression_recorded = true;
}
});
}
///
/// Handle rendering the poll if this user has
/// already voted in it. Display the results.
///
if (voted) {
var renderResults = setInterval(function() {
$option.each(function() {
var answer_ID = $(this).data('answerid');
if (answer_ID === voted.answer_ID) {
$(this).click();
}
});
clearInterval(renderResults);
return false;
}, 333);
}
///
/// Poll Sponsor Click Tracking
///
$sponsorBlock = $poll.find('.poll-sponsor');
$sponsorBlock.on('click', function() {
var sponsorSlug = $(this).data('sponsor-slug');
var url = $(this).attr('href');
var poll_type = 'inline';
if (voxpop === 'true') poll_type = 'voxpop';
var event_payload = {
event : 'sponsor_poll_click',
sponsor : sponsor_slug,
url : url,
poll_type : poll_type,
poll_id : '22754645'
}
if (categories) {
event_payload.categories = categories;
}
window.dataLayer.push(event_payload);
});
});
</script>
</div>
</div>
<div class="footer">
&nbsp;
</div>
</div>
</div>
<script>
$(document).ready(function() {
$voxpopScreen = $('.tns-voxpop-screen');
$voxpopModal = $('.tns-voxpop-modal');
var instance_ID = $voxpopModal.find('.tns-poll').data('instanceid');
var sponsor_slug = '';
var voted = localStorage.getItem('tns_poll_vote_22754645');
if (voted) voted = JSON.parse(voted);
$voxpopModal.on('click', function($event) {
$event.stopPropagation();
});
window.tns.voxpop = {
resize : function(delay) {
var windowHeight = $(window).height();
var headerHeight = $voxpopModal.find('.header').outerHeight(true);
var contentHeight = $voxpopModal.find('.content-block').outerHeight();
var footerHeight = $voxpopModal.find('.footer').outerHeight(true);
var targetHeight = headerHeight + contentHeight + footerHeight;
if (targetHeight >= windowHeight) {
targetHeight = windowHeight - 40;
}
$voxpopModal.stop().transition({
height : targetHeight,
duration : delay || 333,
easing : 'snap'
});
},
open : function(params) {
$('body').css({
overflow : 'hidden'
});
$voxpopScreen.stop().css({
opacity : 0,
display : 'block'
});
$voxpopScreen.stop().transition({
duration : 333,
opacity : 1,
easing : 'snap'
});
$voxpopModal.stop().css({
opacity : 0,
display : 'block'
});
window.tns.voxpop.resize();
$voxpopModal.stop().transition({
delay : 333,
duration : 121,
opacity : 1,
easing : 'easeOutQuad'
});
///
/// Record an impression event
///
if (!voted) {
var event_payload = {
poll_action : 'impression',
poll_type : 'voxpop',
poll_id : '22754645'
}
if (sponsor_slug) {
event_payload.sponsor = sponsor_slug;
}
console.log('[Voxpop] Impression detected, firing GA4 event.');
event_payload.event = 'poll';
window.dataLayer.push(event_payload);
event_payload.instance_ID = instance_ID;
console.log(event_payload);
}
},
vote : function(pollData, delay) {
console.log('[Voxpop] Firing post-vote resize.');
setTimeout(function() {
window.tns.voxpop.resize(delay);
}, 555);
},
close : function() {
$voxpopScreen.stop().css({
opacity : 0,
display : 'block'
});
$voxpopModal.stop().transition({
duration : 333,
opacity : 0,
easing : 'easeOutQuad'
});
$voxpopScreen.stop().transition({
duration : 333,
opacity : 0,
easing : 'easeOutQuad'
}, function() {
$voxpopScreen.stop().css({
opacity : 0,
display : 'none'
});
$('body').css({
overflowY : 'auto'
});
});
}
}
$('.tns-voxpop-close').on('click', function() {
window.tns.voxpop.close();
});
$('.tns-voxpop-screen').on('click', function() {
window.tns.voxpop.close();
});
$(window).on('resize', function() {
window.tns.voxpop.resize();
});
///
/// Auto-open Voxpop based on the `open-voxpop` query param?
///
var urlParams = new URLSearchParams(window.location.search);
if (urlParams.get('open-voxpop')) {
window.tns.voxpop.open();
}
});
</script>
<div id="tns-header">
<div class="header-fixed">
<div id="tns-header-masthead">
<div class="masthead">
<div class="masthead-block">
<div id="tns-header-masthead-menu">
<span class="masthead-menu-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="17" height="14" viewBox="0 0 17 14">
<g id="Group_656" data-name="Group 656" transform="translate(0 0.687)">
<path id="Line_2" data-name="Line 2" d="M17,1H0V-1H17Z" transform="translate(0 0.313)"/>
<path id="Line_3" data-name="Line 3" d="M17,1H0V-1H17Z" transform="translate(0 6.313)"/>
<path id="Line_4" data-name="Line 4" d="M17,1H0V-1H17Z" transform="translate(0 12.313)"/>
</g>
</svg>
</span>
<span class="masthead-menu-close-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</span>
</div>
<script>
$(document).ready(function() {
var categories = 'cloud-native,containers,microservices';
function toggleMobileNav() {
if ($('.masthead-menu-icon').hasClass('active')) {
$('.masthead-menu-icon').removeClass('active');
$('#tns-header-masthead').removeClass('dark');
$('.masthead-menu-close-icon').stop().transition({
opacity : 0,
duration : 0,
easeing : 'snap'
}, function() {
$(this).css({ display : 'none' });
});
$('.masthead-menu-icon').stop().css({
display : 'block'
}).transition({
opacity : 1,
duration : 333,
easeing : 'snap'
});
$('.masthead-search-icon').stop().css({
display : 'block'
}).transition({
opacity : 1,
duration : 121,
easeing : 'snap'
});
var height = '60px';
var paddingBottom = '0px';
$('body').css({
overflowX : 'hidden',
overflowY : 'auto'
});
} else {
$('.masthead-menu-icon').addClass('active');
$('#tns-header-masthead').addClass('dark');
$('.masthead-menu-icon').stop().transition({
opacity : 0,
duration : 0,
easeing : 'snap'
}, function() {
$(this).css({ display : 'none' });
});
$('.masthead-search-icon').stop().transition({
opacity : 0,
duration : 333,
easeing : 'snap'
}, function() {
$(this).css({ display : 'none' });
});
$('.masthead-menu-close-icon').stop().css({
display : 'block'
}).transition({
opacity : 1,
duration : 333,
easeing : 'snap'
});
var height = window.screen.height;
var paddingBottom = '200px';
$('body').css({
overflowX : 'hidden',
overflowY : 'hidden'
});
}
$('.mobile-nav-dropdown').scrollTop(0);
$('.mobile-nav-dropdown').stop().transition({
height : height,
paddingBottom : paddingBottom,
duration : 222,
easeing : 'snap'
});
}
$('.masthead-menu-icon').on('click', function($event) {
$event.preventDefault();
var payload = {
'event' : 'nav_click',
'target' : 'mobile_nav'
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
toggleMobileNav();
});
$('.masthead-menu-close-icon').on('click', function($event) {
$event.preventDefault();
toggleMobileNav();
});
});
</script>
<div id="tns-header-masthead-logo">
<div class="tns-logo">
<a href="/" aria-label="The New Stack Frontpage" rel="home">
<svg version="1.1" id="the-new-stack-logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="367.308px" height="44px" viewBox="0 0 367.308 44" enable-background="new 0 0 367.308 44" xml:space="preserve">
<g>
<polygon fill="#00AFF4" points="0,0.962 0,8.546 10.796,8.546 10.796,43.113 20.15,43.113 20.15,8.546 30.719,8.546 30.719,0.962
"/>
<polygon fill="#00AFF4" points="240.737,0.962 240.737,8.546 251.535,8.546 251.535,43.113 260.886,43.113 260.886,8.546
271.454,8.546 271.454,0.962 "/>
<polygon fill="#00AFF4" points="34.156,43.113 43.627,43.113 43.627,24.828 55.387,24.828 55.387,43.113 64.741,43.113
64.741,0.885 55.214,0.885 55.214,17.244 43.568,17.244 43.568,0.885 34.156,0.885 "/>
<polygon fill="#00AFF4" points="179.114,0.885 169.702,0.885 169.702,43.113 179.143,22.825 "/>
<polygon fill="#FF3287" points="179.143,22.825 179.173,43.113 189.358,21.168 189.358,0.885 "/>
<polygon fill="#C87296" points="169.702,43.113 179.173,43.113 179.143,22.825 "/>
<polygon fill="#00AFF4" points="198.769,0.885 189.358,21.168 189.358,43.113 198.798,22.825 "/>
<polygon fill="#C87296" points="189.358,0.885 189.358,21.168 198.769,0.885 "/>
<polygon fill="#FF3287" points="209.013,0.885 198.798,22.825 198.828,43.113 218.424,0.885 "/>
<polygon fill="#C87296" points="189.358,43.113 198.828,43.113 198.798,22.825 "/>
<polygon fill="#FF3287" points="138.471,43.035 165.013,43.035 165.013,35.452 147.825,35.452 147.825,24.828 160.931,24.828
160.931,17.244 147.71,17.244 147.71,8.546 165.013,8.546 165.013,0.962 138.471,0.962 "/>
<polygon fill="#00AFF4" points="70.463,43.035 97.004,43.035 97.004,35.452 79.818,35.452 79.818,24.828 92.924,24.828
92.924,17.244 79.703,17.244 79.703,8.546 97.004,8.546 97.004,0.962 70.463,0.962 "/>
<path fill="#FF3287" d="M102.786,43.113h8.225v-19.69c0-1.098-0.211-6.476-0.257-7.689h0.257c2.358,5.14,2.426,5.324,3.417,6.997
l10.669,20.383h7.407V0.885h-8.225V16.66c0,1.616,0,1.961,0.153,4.86l0.204,4.271h-0.249c-0.166-0.288-0.79-1.846-0.974-2.193
c-0.433-0.866-1.06-2.022-1.56-2.888L111.388,0.886h-8.601L102.786,43.113L102.786,43.113z"/>
<path fill="#00AFF4" d="M277.222,0.972l-11.955,42.14h9.068l2.194-8.661h12.993l2.135,8.661h9.065l-12.241-42.14H277.222z
M287.674,27.83h-9.525l4.618-19.293h0.231L287.674,27.83z"/>
<path fill="#00AFF4" d="M300.615,27.813c0,8.662,2.194,10.979,3.888,12.587c2.589,2.492,5.919,3.6,10.722,3.6
c1.809,0,6.138-0.386,9.142-2.712c3.523-2.715,4.101-5.68,4.448-7.354c0.288-1.79,0.348-2.138,0.404-5.197h-9.355
c0,4.561-1.125,7.679-4.86,7.679c-5.031,0-5.031-4.444-5.031-6.754V13.541c0-1.165,0.059-3.246,1.527-4.627
c0.955-0.868,2.406-1.33,3.563-1.33c4.629,0,4.743,4.619,4.801,6.706h9.355c-0.116-3.416-0.577-8.575-4.417-11.518
C321.835,0.509,318.014,0,315.462,0c-9.777,0-14.848,5.378-14.848,15.042V27.813z"/>
<path fill="#00AFF4" d="M332.314,43.113h9.471V0.885h-9.471V43.113z M354.949,0.885l-12.814,20.374l14.03,21.855h11.144
l-15.07-22.547l12.935-19.681L354.949,0.885L354.949,0.885z"/>
<path fill="#00AFF4" d="M231.091,0.962c-8.844,0-13.316,4.889-13.316,11.827c0,8.296,4.889,10.134,11.278,12.597
c7.014,2.454,8.931,3.137,8.931,6.285c0,3.829-4.013,4.744-6.247,4.744c-4.022,0-6.995-2.174-8.361-5.716l-6.468,4.745
c3.464,6.775,7.333,8.555,15.273,8.555c2.357,0,6.197-0.635,8.576-2.126c5.772-3.62,5.772-9.231,5.772-11.117
c0-3.944-1.779-6.688-2.282-7.373c-1.606-2.292-4.484-4.003-7.024-4.917l-5.939-1.945c-2.867-0.924-5.928-1.154-5.928-4.126
c0-0.444,0.117-3.552,4.792-3.851h7.382V0.962C237.529,0.962,231.651,0.962,231.091,0.962z"/>
</g>
</svg>
</a>
</div>
</div>
<div id="tns-masthead-utility-nav">
<div id="stackie-flag">
<div class="flag-content">
NEW! Try Stackie AI
<div class="flag-pointer"></div>
</div>
</div>
<div class="masthead-login-button"></div>
<span class="masthead-search-icon icon-tns-search">
<svg data-component="Icon" class="" viewBox="0 0 33 33" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none">
<path fill="currentColor" fill-rule="evenodd" d="M1.934 8.933a5.75 5.75 0 0 1 8.628 7.567l2.969 2.97a.75.75 0 0 1-1.06 1.06L9.5 17.56a5.75 5.75 0 0 1-7.567-8.627M6 8.75a4.25 4.25 0 1 0 0 8.5 4.25 4.25 0 0 0 0-8.5" clip-rule="evenodd"></path>
<path fill="currentColor" d="M18 4a4 4 0 0 0-4 4 4 4 0 0 0-4-4 4 4 0 0 0 4-4 4 4 0 0 0 4 4M22 10a3 3 0 0 0-3 3 3 3 0 0 0-3-3 3 3 0 0 0 3-3 3 3 0 0 0 3 3"></path>
</svg>
</span>
<span class="masthead-search-close-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</span>
</div>
<script>
$(document).ready(function() {
///
/// Stackie AI Flag
///
const key = 'stackie_pageviews'
const expiryKey = 'stackie_pageviews_expiry'
const expiryDuration = 24 * 60 * 60 * 1000 /// 24 hours
const now = Date.now()
let pageviews = 0
let expiry = parseInt(localStorage.getItem(expiryKey), 10)
/// Reset if expired or missing
if (!expiry || now > expiry) {
localStorage.setItem(key, '0')
localStorage.setItem(expiryKey, (now + expiryDuration).toString())
}
/// Get and increment pageviews
pageviews = parseInt(localStorage.getItem(key), 10) || 0
pageviews++
localStorage.setItem(key, pageviews.toString())
/// Check path and apply animation
const currentPath = window.location.pathname
if (currentPath === '/search/') {
/// Max out pageviews to 4 on /search/
localStorage.setItem(key, '4')
}
/// Search Icon Click
$('.masthead-search-icon').on('click', function($event) {
$event.preventDefault();
window.dataLayer.push({
'event': 'nav_click',
'target': 'search',
});
location.href = '/search/'
});
///
/// Login/Logout Button Handling
///
/// Clear any stale legacy ory_ session tokens
try {
if (window.tns && typeof window.tns.getCookie === 'function') {
var legacyToken = window.tns.getCookie('img-session-token')
if (legacyToken && legacyToken.indexOf('ory_') === 0) {
window.tns.setCookie('img-session-token', '', -1)
window.tns.setCookie('tns-user-id', '', -1)
window.tns.setCookie('tns-user', '', -1)
}
}
} catch (e) {
console.log('[TNS] Legacy session token cleanup failed', e)
}
/// Init Login Button Label
var user = window.tns.getCookie('tns-user')
if (user) {
$('.masthead-login-button').text("")
} else {
$('.masthead-login-button').text("LOGIN")
}
/// Login Click
$('.masthead-login-button').on('click', function($event) {
$event.preventDefault()
var label = $('.masthead-login-button').text().trim()
if (label === 'LOGIN') {
window.dataLayer.push({
'event': 'nav_click',
'target': 'login',
})
window.imgjs.subscribe.config.onClose = function(user) {
if (user) {
window.tns.setCookie('tns-user-id', user.author_id, 8400)
window.tns.setCookie('tns-user', JSON.stringify(user), 8400)
/// Update the BlueConic profile with the email and Ory ID
const profile = window.blueConicClient.profile.getProfile()
profile.setValue('email', user?.email)
profile.setValue('ory_id', user?.author_id)
window.blueConicClient.profile.updateProfile()
$('.masthead-login-button').text("")
/// Determine if it's a new subscription by testing
/// if the createdAt date is today's date
if (window.imgjs.subscribe.isNewSubscription(user.createdAt)) {
window.dataLayer.push({
'event' : 'user_registration',
'url' : window.location.href,
'channel': window.imgjs.subscribe.channel,
'channel_id': window.imgjs.subscribe.channel_id
})
}
} else {
console.log('[IMG Subscribe] ERROR Failed to validate OTC')
window.tns.setCookie('img-session-token', '', -1)
window.tns.setCookie('tns-user-id', '', -1)
window.tns.setCookie('tns-user', '', -1)
$('.masthead-login-button').text("LOGIN")
}
}
var subscriptions = {
mc : [
'6166149401' /// TNS Daily
],
hs : []
}
const hostname = window.location.hostname
switch (true) {
case hostname.includes("thenewstack.io"):
subscriptions.hs.push("688810478") /// TNS Daily (PROD)
break
case hostname.includes("thenewstack.dev"):
subscriptions.hs.push("860037297") /// TNS Daily (SANDBOX)
break
}
window.imgjs.subscribe.channel = 'login_button'
window.imgjs.subscribe.channel_id = 'login_button'
window.imgjs.subscribe.open(null, subscriptions, 'login')
}
window.imgjs.subscribe.config.onProfileUpdate = function(data) {
console.log("Set tns-user cookie with the following data:")
console.log(data)
if (data.user) {
window.tns.setCookie('tns-user-id', data.user.author_id, 8400)
window.tns.setCookie('tns-user', JSON.stringify(data.user), 8400)
} else {
console.error("[IMGJS] ERROR No user returned to onProfileUpdate")
}
}
if (label === '') {
window.dataLayer.push({
'event': 'nav_click',
'target': 'logout',
})
var url = 'https://img-api-v2.thenewstack.dev/api/accounts/logout'
fetch(url, {
method: 'POST',
headers: {'Content-Type': 'application/json'},
credentials: 'include'
}).then(response => {
if (!response.ok) {
console.log(`Failed to logout`)
}
}).then(result => {
window.tns.setCookie('tns-user-id', '', -1)
window.tns.setCookie('tns-user', '', -1)
$('.masthead-login-button').text("LOGIN")
console.log(`Successfully logged-out`)
}).catch(error => {
console.error('Error:', error)
})
}
})
});
</script>
</div>
</div>
</div>
<script>
$(document).ready(function() {
var categories = 'cloud-native,containers,microservices';
$('.tns-logo a').on('click', function() {
var target = '/';
var payload = {
'event' : 'nav_click',
'target' : target,
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
</script>
<div id="tns-header-mobile-nav">
<div class="mobile-nav-dropdown">
<div class="content-column">
<div class="row mobile-nav-row">
<div class="col-20 mobile-nav-col">
<div class="mobile-nav-header">
ARCHITECTURE
</div>
<div class="mobile-nav-menu">
<a
href="https://thenewstack.io/cloud-native/"
class="topic-cloud-native"
data-category-slug="cloud-native"
>
Cloud Native Ecosystem </a>
<a
href="https://thenewstack.io/containers/"
class="topic-containers"
data-category-slug="containers"
>
Containers </a>
<a
href="https://thenewstack.io/databases/"
class="topic-databases"
data-category-slug="databases"
>
Databases </a>
<a
href="https://thenewstack.io/edge-computing/"
class="topic-edge-computing"
data-category-slug="edge-computing"
>
Edge Computing </a>
<a
href="https://thenewstack.io/infrastructure-as-code/"
class="topic-infrastructure-as-code"
data-category-slug="infrastructure-as-code"
>
Infrastructure as Code </a>
<a
href="https://thenewstack.io/linux/"
class="topic-linux"
data-category-slug="linux"
>
Linux </a>
<a
href="https://thenewstack.io/microservices/"
class="topic-microservices"
data-category-slug="microservices"
>
Microservices </a>
<a
href="https://thenewstack.io/open-source/"
class="topic-open-source"
data-category-slug="open-source"
>
Open Source </a>
<a
href="https://thenewstack.io/networking/"
class="topic-networking"
data-category-slug="networking"
>
Networking </a>
<a
href="https://thenewstack.io/storage/"
class="topic-storage"
data-category-slug="storage"
>
Storage </a>
</div>
</div>
<div class="col-20 mobile-nav-col">
<div class="mobile-nav-header">
ENGINEERING
</div>
<div class="mobile-nav-menu">
<a
href="https://thenewstack.io/ai/"
class="topic-ai"
data-category-slug="ai"
>
AI </a>
<a
href="https://thenewstack.io/ai-engineering/"
class="topic-ai-engineering"
data-category-slug="ai-engineering"
>
AI Engineering </a>
<a
href="https://thenewstack.io/api-management/"
class="topic-api-management"
data-category-slug="api-management"
>
API Management </a>
<a
href="https://thenewstack.io/backend-development/"
class="topic-backend-development"
data-category-slug="backend-development"
>
Backend development </a>
<a
href="https://thenewstack.io/data/"
class="topic-data"
data-category-slug="data"
>
Data </a>
<a
href="https://thenewstack.io/frontend-development/"
class="topic-frontend-development"
data-category-slug="frontend-development"
>
Frontend Development </a>
<a
href="https://thenewstack.io/llm/"
class="topic-llm"
data-category-slug="llm"
>
Large Language Models </a>
<a
href="https://thenewstack.io/security/"
class="topic-security"
data-category-slug="security"
>
Security </a>
<a
href="https://thenewstack.io/software-development/"
class="topic-software-development"
data-category-slug="software-development"
>
Software Development </a>
<a
href="https://thenewstack.io/webassembly/"
class="topic-webassembly"
data-category-slug="webassembly"
>
WebAssembly </a>
</div>
</div>
<div class="col-20 mobile-nav-col">
<div class="mobile-nav-header">
OPERATIONS
</div>
<div class="mobile-nav-menu">
<a
href="https://thenewstack.io/ai-operations/"
class="topic-ai-operations"
data-category-slug="ai-operations"
>
AI Operations </a>
<a
href="https://thenewstack.io/ci-cd/"
class="topic-ci-cd"
data-category-slug="ci-cd"
>
CI/CD </a>
<a
href="https://thenewstack.io/cloud-services/"
class="topic-cloud-services"
data-category-slug="cloud-services"
>
Cloud Services </a>
<a
href="https://thenewstack.io/devops/"
class="topic-devops"
data-category-slug="devops"
>
DevOps </a>
<a
href="https://thenewstack.io/kubernetes/"
class="topic-kubernetes"
data-category-slug="kubernetes"
>
Kubernetes </a>
<a
href="https://thenewstack.io/observability/"
class="topic-observability"
data-category-slug="observability"
>
Observability </a>
<a
href="https://thenewstack.io/operations/"
class="topic-operations"
data-category-slug="operations"
>
Operations </a>
<a
href="https://thenewstack.io/platform-engineering/"
class="topic-platform-engineering"
data-category-slug="platform-engineering"
>
Platform Engineering </a>
</div>
</div>
<div class="col-20 mobile-nav-col">
<div class="mobile-nav-header">
PROGRAMMING
</div>
<div class="mobile-nav-menu">
<a
href="https://thenewstack.io/c/"
class="topic-c"
data-category-slug="c"
>
C++ </a>
<a
href="https://thenewstack.io/developer-tools/"
class="topic-developer-tools"
data-category-slug="developer-tools"
>
Developer tools </a>
<a
href="https://thenewstack.io/go/"
class="topic-go"
data-category-slug="go"
>
Go </a>
<a
href="https://thenewstack.io/java/"
class="topic-java"
data-category-slug="java"
>
Java </a>
<a
href="https://thenewstack.io/javascript/"
class="topic-javascript"
data-category-slug="javascript"
>
JavaScript </a>
<a
href="https://thenewstack.io/programming-languages/"
class="topic-programming-languages"
data-category-slug="programming-languages"
>
Programming Languages </a>
<a
href="https://thenewstack.io/python/"
class="topic-python"
data-category-slug="python"
>
Python </a>
<a
href="https://thenewstack.io/rust/"
class="topic-rust"
data-category-slug="rust"
>
Rust </a>
<a
href="https://thenewstack.io/typescript/"
class="topic-typescript"
data-category-slug="typescript"
>
TypeScript </a>
</div>
</div>
<div class="col-20 mobile-nav-col">
<div class="mobile-nav-header">
CHANNELS
</div>
<div class="mobile-nav-menu">
<a
href="https://thenewstack.io/podcasts/"
class="topic-podcasts"
data-category-slug="podcasts"
>
Podcasts </a>
<a
href="https://thenewstack.io/ebooks/"
class="topic-ebooks"
data-category-slug="ebooks"
>
Ebooks </a>
<a
href="https://thenewstack.io/events/"
class="topic-events"
data-category-slug="events"
>
Events </a>
<a
href="https://thenewstack.io/webinars/"
class="topic-webinars"
data-category-slug="webinars"
>
Webinars </a>
<a
href="https://thenewstack.io/newsletter/"
class="topic-newsletter"
data-category-slug="newsletter"
>
Newsletter </a>
<a
href="/rss-feeds/"
class="topic-rss-feeds"
data-category-slug="rss-feeds"
>
TNS RSS Feeds </a>
</div>
</div>
<div class="col-20 mobile-nav-col">
<div class="mobile-nav-header">
THE NEW STACK
</div>
<div class="mobile-nav-menu">
<a
href="https://thenewstack.io/about-and-contact-info/"
class="topic-about-and-contact-info"
data-category-slug="about-and-contact-info"
>
About / Contact </a>
<a
href="https://thenewstack.io/sponsors/"
class="topic-sponsors"
data-category-slug="sponsors"
>
Sponsors </a>
<a
href="https://thenewstack.io/sponsorship/"
class="topic-sponsorship"
data-category-slug="sponsorship"
>
Advertise With Us </a>
<a
href="https://thenewstack.io/contributions/"
class="topic-contributions"
data-category-slug="contributions"
>
Contributions </a>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="tns-header-nav-channels">
<div class="channels-nav">
<div class="channels-nav-block">
<a href="/podcasts/">PODCASTS</a>
<a href="/ebooks/">EBOOKS</a>
<a href="/events/">EVENTS</a>
<a href="/webinars/">WEBINARS</a>
<a href="/newsletter/">NEWSLETTER</a>
<a href="/contributions/">CONTRIBUTE</a>
</div>
</div>
</div>
<script>
$(document).ready(function() {
$('.channels-nav-block a').on('click', function() {
var target = $(this).attr('href');
window.dataLayer.push({
'event' : 'nav_click',
'target' : target
});
});
});
</script>
<div id="tns-header-nav-channels-dropdown">
</div>
<div id="tns-header-nav-topics">
<div class="topics-nav">
<div class="topics-nav-block">
<a href="#" class="topics-nav-option topics-nav-architecture" data-topic-slug="architecture">
ARCHITECTURE
</a>
<a href="#" class="topics-nav-option topics-nav-engineering" data-topic-slug="engineering">
ENGINEERING
</a>
<a href="#" x class="topics-nav-option topics-nav-operations" data-topic-slug="operations">
OPERATIONS
</a>
<a href="#" x class="topics-nav-option topics-nav-programming" data-topic-slug="programming">
PROGRAMMING
</a>
</div>
</div>
</div>
<script>
$(document).ready(function() {
$('.topics-nav-block a').on('click', function($event) {
$event.preventDefault();
});
$('.topics-nav-option').on('mouseenter', function() {
var slug = $(this).data('topic-slug');
$('.nav-topics-dropdown .content').css({
display : 'none',
opacity : 0
});
$('.nav-topics-dropdown .content-' + slug).transition({
display : 'flex',
opacity : 1,
duration : 99,
easing : 'snap'
});
var firstSubCategory = $('.nav-topics-dropdown .content-' + slug + ' .col-topics a:first-child');
firstSubCategory.trigger('mouseenter')
});
});
</script>
<div id="tns-header-nav-topics-dropdown">
<div class="nav-topics-dropdown tns-gradient-pink">
<div class="content content-architecture row">
<div class="col col-33 col-topics">
<a
href="https://thenewstack.io/cloud-native/"
class="topics-nav-topic topic-cloud-native"
data-category-slug="cloud-native"
>
Cloud Native Ecosystem </a>
<a
href="https://thenewstack.io/containers/"
class="topics-nav-topic topic-containers"
data-category-slug="containers"
>
Containers </a>
<a
href="https://thenewstack.io/databases/"
class="topics-nav-topic topic-databases"
data-category-slug="databases"
>
Databases </a>
<a
href="https://thenewstack.io/edge-computing/"
class="topics-nav-topic topic-edge-computing"
data-category-slug="edge-computing"
>
Edge Computing </a>
<a
href="https://thenewstack.io/infrastructure-as-code/"
class="topics-nav-topic topic-infrastructure-as-code"
data-category-slug="infrastructure-as-code"
>
Infrastructure as Code </a>
<a
href="https://thenewstack.io/linux/"
class="topics-nav-topic topic-linux"
data-category-slug="linux"
>
Linux </a>
<a
href="https://thenewstack.io/microservices/"
class="topics-nav-topic topic-microservices"
data-category-slug="microservices"
>
Microservices </a>
<a
href="https://thenewstack.io/open-source/"
class="topics-nav-topic topic-open-source"
data-category-slug="open-source"
>
Open Source </a>
<a
href="https://thenewstack.io/networking/"
class="topics-nav-topic topic-networking"
data-category-slug="networking"
>
Networking </a>
<a
href="https://thenewstack.io/storage/"
class="topics-nav-topic topic-storage"
data-category-slug="storage"
>
Storage </a>
</div>
<div class="col col-66 col-latest-stories">
<div class="topic-latest-stories topic-latest-stories-cloud-native">
<div class="topics-latest-story">
<a href="/runtime-verification-coding-agents/" class="topics-nav-story">
Greptile, Cursor, and Devin agree that agents should run their code. What they run it against matters.
<div class="byline">
<span class="date">
Jun 27th 2026 11:00am, by </span>
<span class="author">
Arjun Iyer </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/verifying-async-ai-agents/" class="topics-nav-story">
Agentic development hinges on verification. For cloud-native software, that is a runtime problem.
<div class="byline">
<span class="date">
Jun 11th 2026 10:00am, by </span>
<span class="author">
Arjun Iyer </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/opentelemetry-vendor-neutrality-guide/" class="topics-nav-story">
Vendor neutrality isn’t magic: A hard look at the OpenTelemetry ecosystem
<div class="byline">
<span class="date">
May 29th 2026 10:00am, by </span>
<span class="author">
Adriana Villela and Josh Lee </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/jaeger-clickhouse-storage-backend/" class="topics-nav-story">
How Jaeger hit 8.6× compression on 10 million spans with ClickHouse
<div class="byline">
<span class="date">
May 24th 2026 11:00am, by </span>
<span class="author">
Mahad Zaryab </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/opentelemetry-hits-general-availability/" class="topics-nav-story">
After becoming cloud computing’s telemetry standard, OpenTelemetry graduates into the AI infrastructure era
<div class="byline">
<span class="date">
May 21st 2026 10:00am, by </span>
<span class="author">
Paul Sawers </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-containers">
<div class="topics-latest-story">
<a href="/unsigned-container-images-ai/" class="topics-nav-story">
Your container images are unsigned. In the AI era, that's a ticking time bomb.
<div class="byline">
<span class="date">
Aug 14th 2026 10:00am, by </span>
<span class="author">
Uma Sridharan </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/accelerating-eks-image-pulls/" class="topics-nav-story">
Pulling multi-gigabyte container images in seconds on Amazon EKS
<div class="byline">
<span class="date">
Aug 10th 2026 12:00pm, by </span>
<span class="author">
Sri Saran Balaji Vellore Rajakumar and Neelendra Bhandari </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/sbom-sniff-test-hardened-images/" class="topics-nav-story">
Why a five-minute sniff test is your secret supply chain defense
<div class="byline">
<span class="date">
Jul 9th 2026 12:00pm, by </span>
<span class="author">
Christian Dupuis </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/graviton5-nitro-isolation-engine/" class="topics-nav-story">
AWS can now mathematically prove your VMs are isolated
<div class="byline">
<span class="date">
Jun 10th 2026 12:46pm, by </span>
<span class="author">
Frederic Lardinois </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/microsoft-wants-to-make-service-mesh-invisible/" class="topics-nav-story">
Microsoft wants to make service mesh invisible
<div class="byline">
<span class="date">
Apr 8th 2026 1:11pm, by </span>
<span class="author">
Frederic Lardinois </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-databases">
<div class="topics-latest-story">
<a href="/yugabytedb-agentic-postgres-scaling/" class="topics-nav-story">
AI agents can create database sprawl issues. YugabyteDB’s solution is more agents!
<div class="byline">
<span class="date">
Aug 4th 2026 9:00am, by </span>
<span class="author">
Carly Page </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/kubernetes-database-operations-platform/" class="topics-nav-story">
Kubernetes made deploying easy. Nobody warned you about the databases.
<div class="byline">
<span class="date">
Jul 21st 2026 11:00am, by </span>
<span class="author">
Oliver Wolf </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/redis-vector-caching-tradeoffs/" class="topics-nav-story">
Why smarter AI caching sometimes makes everything slower
<div class="byline">
<span class="date">
Jul 16th 2026 12:00pm, by </span>
<span class="author">
Zziwa Raymond Ian </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/ai-notetaker-database-architecture/" class="topics-nav-story">
"The database is the product": What breaks when memory devices scale
<div class="byline">
<span class="date">
Jul 15th 2026 8:00am, by </span>
<span class="author">
Ed Huang </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/why-most-ai-projects-fail-its-infrastructure-and-people/" class="topics-nav-story">
Why most AI projects fail: It’s infrastructure and people 
<div class="byline">
<span class="date">
Jul 6th 2026 2:19pm, by </span>
<span class="author">
Meredith Shubel </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-edge-computing">
<div class="topics-latest-story">
<a href="/google-gemma-local-ai/" class="topics-nav-story">
Google Gemma 4 12B nearly matches 26B benchmarks — and runs on your laptop
<div class="byline">
<span class="date">
Jun 4th 2026 3:30pm, by </span>
<span class="author">
Meredith Shubel </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/secure-ot-data-movement/" class="topics-nav-story">
How to get operational data off the factory floor without creating an IT breach
<div class="byline">
<span class="date">
Jun 3rd 2026 3:55pm, by </span>
<span class="author">
Alex Wilhelm </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/akamai-edge-ai-inference/" class="topics-nav-story">
Edge-forward: Akamai eyes sweet spot between centralized &amp; decentralized AI inference
<div class="byline">
<span class="date">
Apr 1st 2026 7:00am, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/developers-coding-moving-target-ai/" class="topics-nav-story">
Developers are coding to a moving target, and nobody knows where AI lands next
<div class="byline">
<span class="date">
Mar 3rd 2026 7:33am, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/intent-engineering-ai-agents/" class="topics-nav-story">
Cloudflare’s new Markdown support shows how the web is evolving for AI agents
<div class="byline">
<span class="date">
Mar 2nd 2026 4:30am, by </span>
<span class="author">
David Eastman </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-infrastructure-as-code">
<div class="topics-latest-story">
<a href="/dns-domain-management-automation/" class="topics-nav-story">
DNS is infrastructure. It’s time to manage it that way.
<div class="byline">
<span class="date">
Jul 30th 2026 11:00am, by </span>
<span class="author">
Venus Kohli </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/terraform-state-infrastructure-drift/" class="topics-nav-story">
Why Terraform is green when your cloud is broken
<div class="byline">
<span class="date">
Apr 28th 2026 9:00am, by </span>
<span class="author">
Joe Karlsson </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/multi-cloud-blind-spots/" class="topics-nav-story">
The one Slack message that proved our elite engineering team was flying blind
<div class="byline">
<span class="date">
Apr 26th 2026 11:00am, by </span>
<span class="author">
Joe Karlsson </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/closing-cloud-operational-gap/" class="topics-nav-story">
The operational gap is real, and it's getting wider
<div class="byline">
<span class="date">
Mar 26th 2026 8:00am, by </span>
<span class="author">
Yevgeny Pats </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/automated-infrastructure-hidden-costs/" class="topics-nav-story">
Why "automated" infrastructure might cost more than you think
<div class="byline">
<span class="date">
Feb 24th 2026 4:00am, by </span>
<span class="author">
Justyn Roberts </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-linux">
<div class="topics-latest-story">
<a href="/openais-chatgpt-desktop-linux/" class="topics-nav-story">
OpenAI's ChatGPT/Codex desktop app is now on Linux
<div class="byline">
<span class="date">
Aug 11th 2026 1:53pm, by </span>
<span class="author">
Frederic Lardinois </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/torvalds-linux-ai-stance/" class="topics-nav-story">
Linux creator Linus Torvalds tells AI haters to walk away from Linux, or go fork it 
<div class="byline">
<span class="date">
Jul 16th 2026 11:15am, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/torvalds-ai-programming-productivity/" class="topics-nav-story">
Why Linux creator Linus Torvalds gets angry hearing "99% of code is AI"
<div class="byline">
<span class="date">
May 29th 2026 10:34am, by </span>
<span class="author">
B. Cameron Gain </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/sparky-linux-9-brings-a-rolling-release-to-debian/" class="topics-nav-story">
Sparky Linux 9 brings a rolling release to Debian
<div class="byline">
<span class="date">
Mar 30th 2026 8:00am, by </span>
<span class="author">
Jack Wallen </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/edera-adds-kvm-support/" class="topics-nav-story">
Edera spent years calling KVM less secure. Here's why it changed its mind.
<div class="byline">
<span class="date">
Mar 25th 2026 2:22pm, by </span>
<span class="author">
Steven J. Vaughan-Nichols </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-microservices">
<div class="topics-latest-story">
<a href="/merge-gate-coding-agents/" class="topics-nav-story">
Your merge gate was a compromise. Coding agents are making it a liability. 
<div class="byline">
<span class="date">
Jul 11th 2026 1:00pm, by </span>
<span class="author">
Arjun Iyer </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/tetrate-built-on-envoy/" class="topics-nav-story">
Tetrate launches open source marketplace to simplify Envoy adoption
<div class="byline">
<span class="date">
Mar 11th 2026 10:52am, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/opentelemetry-roadmap-sampling-rates-and-collector-improvements-ahead/" class="topics-nav-story">
OpenTelemetry roadmap: Sampling rates and collector improvements ahead
<div class="byline">
<span class="date">
Feb 24th 2026 11:00am, by </span>
<span class="author">
B. Cameron Gain </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/merging-to-test-is-killing-your-microservices-velocity/" class="topics-nav-story">
Merging To Test Is Killing Your Microservices Velocity
<div class="byline">
<span class="date">
Dec 16th 2025 7:00am, by </span>
<span class="author">
Arjun Iyer </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/ibms-confluent-acquisition-is-about-event-driven-ai/" class="topics-nav-story">
IBM’s Confluent Acquisition Is About Event-Driven AI
<div class="byline">
<span class="date">
Dec 11th 2025 6:00am, by </span>
<span class="author">
Joab Jackson </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-open-source">
<div class="topics-latest-story">
<a href="/openai-open-weight-glm-5-3/" class="topics-nav-story">
OpenAI's Greg Brockman: Z.ai's GLM-5.3 likely to "significantly accelerate the threat landscape"
<div class="byline">
<span class="date">
Aug 18th 2026 9:10am, by </span>
<span class="author">
Paul Sawers </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/amodei-open-weights-compute-regulation/" class="topics-nav-story">
"Open weights are nowhere near a sufficient solution": Dario Amodei fires back on AI power
<div class="byline">
<span class="date">
Aug 17th 2026 12:58pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/qwen38-27b-local-inference/" class="topics-nav-story">
Alibaba's new model promises Opus 4.6-level performance on your laptop
<div class="byline">
<span class="date">
Aug 14th 2026 2:10pm, by </span>
<span class="author">
Frederic Lardinois </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/deepseek-harness-open-source-plugins/" class="topics-nav-story">
DeepSeek open sources an agent harness where everything is a plugin
<div class="byline">
<span class="date">
Aug 13th 2026 1:20pm, by </span>
<span class="author">
Frederic Lardinois </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/coding-agents-ignore-guidelines/" class="topics-nav-story">
Coding agents ignore open source contribution guidelines, researchers find.
<div class="byline">
<span class="date">
Aug 12th 2026 7:48am, by </span>
<span class="author">
Meredith Shubel </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-networking">
<div class="topics-latest-story">
<a href="/kubevirt-evpn-vm-migration/" class="topics-nav-story">
Why your KubeVirt VMs can’t move between clusters — and how EVPN fixes it
<div class="byline">
<span class="date">
Aug 8th 2026 10:00am, by </span>
<span class="author">
Miguel Duarte Barroso </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/dns-domain-management-automation/" class="topics-nav-story">
DNS is infrastructure. It’s time to manage it that way.
<div class="byline">
<span class="date">
Jul 30th 2026 11:00am, by </span>
<span class="author">
Venus Kohli </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/kubernetes-controllers-at-scale/" class="topics-nav-story">
From intent to enforcement: Lessons from operating Kubernetes controllers at scale
<div class="byline">
<span class="date">
Jul 17th 2026 8:00am, by </span>
<span class="author">
Sri Saran Balaji Vellore Rajakumar and Jayanth Varavani </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/unified-access-ai-agents/" class="topics-nav-story">
What happens when your VPN meets 200 AI agents
<div class="byline">
<span class="date">
Jul 14th 2026 2:53pm, by </span>
<span class="author">
Alex Wilhelm </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/cloudflare-ai-web-economics/" class="topics-nav-story">
Cloudflare wants to build the economic layer of the AI web
<div class="byline">
<span class="date">
Jul 1st 2026 4:10pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-storage">
<div class="topics-latest-story">
<a href="/postgres-nvme-s3-storage/" class="topics-nav-story">
Why Postgres wants NVMe on the hot path, and S3 everywhere else
<div class="byline">
<span class="date">
Apr 17th 2026 9:00am, by </span>
<span class="author">
Alasdair Brown </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/btrfs-petabyte-cost-reduction/" class="topics-nav-story">
Scaling Btrfs to petabytes in production: a 74% cost reduction story
<div class="byline">
<span class="date">
Mar 18th 2026 5:00am, by </span>
<span class="author">
Motiejus Jakštys </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/kubevirt-live-migration-mayastor/" class="topics-nav-story">
What is KubeVirt and why it’s growing
<div class="byline">
<span class="date">
Mar 17th 2026 9:00am, by </span>
<span class="author">
Tiago Castro </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/tidb-x-open-source-database/" class="topics-nav-story">
S3 is the new network: Rethinking data architecture for the cloud era
<div class="byline">
<span class="date">
Feb 2nd 2026 4:00am, by </span>
<span class="author">
Max Liu </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/agodas-secret-to-50x-scale-getting-the-database-basics-right/" class="topics-nav-story">
Agoda’s secret to 50x scale: Getting the database basics right
<div class="byline">
<span class="date">
Jan 28th 2026 7:00am, by </span>
<span class="author">
Cynthia Dunlop </span>
</div>
</a>
</div>
</div>
</div>
</div>
<div class="content content-engineering row">
<div class="col col-33 col-topics">
<a
href="https://thenewstack.io/ai/"
class="topics-nav-topic topic-ai"
data-category-slug="ai"
>
AI </a>
<a
href="https://thenewstack.io/ai-engineering/"
class="topics-nav-topic topic-ai-engineering"
data-category-slug="ai-engineering"
>
AI Engineering </a>
<a
href="https://thenewstack.io/api-management/"
class="topics-nav-topic topic-api-management"
data-category-slug="api-management"
>
API Management </a>
<a
href="https://thenewstack.io/backend-development/"
class="topics-nav-topic topic-backend-development"
data-category-slug="backend-development"
>
Backend development </a>
<a
href="https://thenewstack.io/data/"
class="topics-nav-topic topic-data"
data-category-slug="data"
>
Data </a>
<a
href="https://thenewstack.io/frontend-development/"
class="topics-nav-topic topic-frontend-development"
data-category-slug="frontend-development"
>
Frontend Development </a>
<a
href="https://thenewstack.io/llm/"
class="topics-nav-topic topic-llm"
data-category-slug="llm"
>
Large Language Models </a>
<a
href="https://thenewstack.io/security/"
class="topics-nav-topic topic-security"
data-category-slug="security"
>
Security </a>
<a
href="https://thenewstack.io/software-development/"
class="topics-nav-topic topic-software-development"
data-category-slug="software-development"
>
Software Development </a>
<a
href="https://thenewstack.io/webassembly/"
class="topics-nav-topic topic-webassembly"
data-category-slug="webassembly"
>
WebAssembly </a>
</div>
<div class="col col-66 col-latest-stories">
<div class="topic-latest-stories topic-latest-stories-ai">
<div class="topics-latest-story">
<a href="/openai-open-weight-glm-5-3/" class="topics-nav-story">
OpenAI's Greg Brockman: Z.ai's GLM-5.3 likely to "significantly accelerate the threat landscape" </a>
<div class="byline">
<span class="date">
Aug 18th 2026 9:10am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/paul-sawers/" title="Posts by Paul Sawers" class="author url fn" rel="author">Paul Sawers</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/amodei-open-weights-compute-regulation/" class="topics-nav-story">
"Open weights are nowhere near a sufficient solution": Dario Amodei fires back on AI power </a>
<div class="byline">
<span class="date">
Aug 17th 2026 12:58pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/grok-4-6-matched-fable-5-max/" class="topics-nav-story">
Grok 4.6 matched Fable 5 Max at an 85% discount. Downloadable models set that price. </a>
<div class="byline">
<span class="date">
Aug 14th 2026 11:56pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/matthew-burns/" title="Posts by Matthew Burns" class="author url fn" rel="author">Matthew Burns</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/qwen38-27b-local-inference/" class="topics-nav-story">
Alibaba's new model promises Opus 4.6-level performance on your laptop </a>
<div class="byline">
<span class="date">
Aug 14th 2026 2:10pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/frederic-lardinois/" title="Posts by Frederic Lardinois" class="author url fn" rel="author">Frederic Lardinois</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/openai-chatgpt-computer-history/" class="topics-nav-story">
ChatGPT can now remember what you did on your Mac — without screenshots </a>
<div class="byline">
<span class="date">
Aug 13th 2026 3:00pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/frederic-lardinois/" title="Posts by Frederic Lardinois" class="author url fn" rel="author">Frederic Lardinois</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-ai-engineering">
<div class="topics-latest-story">
<a href="/glm-5-3-post-training-coding/" class="topics-nav-story">
GLM-5.3 didn’t change the base model — where did its coding gains come from? </a>
<div class="byline">
<span class="date">
Aug 14th 2026 11:20am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/gemini-3-7-flash-agents/" class="topics-nav-story">
The AI model that just scored 65% on DeepSWE isn't the one Google promised. </a>
<div class="byline">
<span class="date">
Aug 13th 2026 3:59pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/rubrik-mythos-learnings/" class="topics-nav-story">
Rubrik’s lessons from one month with Mythos Preview </a>
<div class="byline">
<span class="date">
Aug 13th 2026 1:37pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/mshubel/" title="Posts by Meredith Shubel" class="author url fn" rel="author">Meredith Shubel</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/deepseek-harness-open-source-plugins/" class="topics-nav-story">
DeepSeek open sources an agent harness where everything is a plugin </a>
<div class="byline">
<span class="date">
Aug 13th 2026 1:20pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/frederic-lardinois/" title="Posts by Frederic Lardinois" class="author url fn" rel="author">Frederic Lardinois</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-pipeline-token-optimization/" class="topics-nav-story">
Why your AI pipeline costs 10x more after the demo </a>
<div class="byline">
<span class="date">
Aug 13th 2026 12:00pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/hafiz-hassan/" title="Posts by Hafiz Hassan" class="author url fn" rel="author">Hafiz Hassan</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-api-management">
<div class="topics-latest-story">
<a href="/mistral-third-party-open-models/" class="topics-nav-story">
Five European companies just agreed to buy AI compute that doesn't exist yet </a>
<div class="byline">
<span class="date">
Aug 13th 2026 10:31am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/designing-apis-for-agents/" class="topics-nav-story">
Designing APIs for agents </a>
<div class="byline">
<span class="date">
Aug 1st 2026 10:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/yan-xie/" title="Posts by Yan Xie" class="author url fn" rel="author">Yan Xie</a>, <a href="https://thenewstack.io/author/virat-patel/" title="Posts by Virat Patel" class="author url fn" rel="author">Virat Patel</a> and <a href="https://thenewstack.io/author/albert-chang/" title="Posts by Albert Chang" class="author url fn" rel="author">Albert Chang</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/gpt-5-6-api-price-cuts/" class="topics-nav-story">
OpenAI slashes API costs amid rising global competition </a>
<div class="byline">
<span class="date">
Jul 30th 2026 3:28pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/mcp-release-candidate-rewrite/" class="topics-nav-story">
MCP’s biggest update removes the machinery many servers were built around </a>
<div class="byline">
<span class="date">
Jul 26th 2026 12:00pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/janakiram/" title="Posts by Janakiram MSV" class="author url fn" rel="author">Janakiram MSV</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/godaddy-developer-platform-domains/" class="topics-nav-story">
GoDaddy opened its registrar to AI agents. Then it had to build guardrails. </a>
<div class="byline">
<span class="date">
Jul 16th 2026 1:48pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-backend-development">
<div class="topics-latest-story">
<a href="/vespa-realtime-personalization-ranking/" class="topics-nav-story">
Personalization is a ranking problem — architecture makes it work </a>
<div class="byline">
<span class="date">
Jul 23rd 2026 12:00pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/jenny-morris/" title="Posts by Jenny Morris" class="author url fn" rel="author">Jenny Morris</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/production-rag-architecture-fixes/" class="topics-nav-story">
Can prompt caching tame RAG costs without sacrificing accuracy? </a>
<div class="byline">
<span class="date">
Jul 23rd 2026 9:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/emmanuel-akita/" title="Posts by Emmanuel Akita" class="author url fn" rel="author">Emmanuel Akita</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/async-processing-hides-latency/" class="topics-nav-story">
How async processing hides latency and improves responsiveness </a>
<div class="byline">
<span class="date">
Jul 12th 2026 1:00pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/pekka-enberg/" title="Posts by Pekka Enberg" class="author url fn" rel="author">Pekka Enberg</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/php-performance-operational-planning/" class="topics-nav-story">
Why PHP performance keeps getting bumped from the roadmap </a>
<div class="byline">
<span class="date">
May 6th 2026 10:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/matthew-weier-ophinney/" title="Posts by Matthew Weier O’Phinney" class="author url fn" rel="author">Matthew Weier O’Phinney</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/postgres-nvme-s3-storage/" class="topics-nav-story">
Why Postgres wants NVMe on the hot path, and S3 everywhere else </a>
<div class="byline">
<span class="date">
Apr 17th 2026 9:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/alasdair-brown/" title="Posts by Alasdair Brown" class="author url fn" rel="author">Alasdair Brown</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-data">
<div class="topics-latest-story">
<a href="/modus-enterprise-context-warehouse/" class="topics-nav-story">
Modus's operandi: To give AI agents just the right amount of context </a>
<div class="byline">
<span class="date">
Jul 29th 2026 9:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/paul-sawers/" title="Posts by Paul Sawers" class="author url fn" rel="author">Paul Sawers</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/spark-4-2-ai-workloads/" class="topics-nav-story">
Spark 4.2 has a feature that could retire your vector database </a>
<div class="byline">
<span class="date">
Jul 19th 2026 12:00pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/agent-evidence-packet-analytics/" class="topics-nav-story">
Why every AI agent decision needs a receipt </a>
<div class="byline">
<span class="date">
Jul 17th 2026 9:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/manveer-chawla/" title="Posts by Manveer Chawla" class="author url fn" rel="author">Manveer Chawla</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/valantor-eyelevel-document-management/" class="topics-nav-story">
AI can finally read your handwriting — here's why enterprises care </a>
<div class="byline">
<span class="date">
Jul 14th 2026 8:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/adrian-bridgwater/" title="Posts by Adrian Bridgwater" class="author url fn" rel="author">Adrian Bridgwater</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/prefect-acquires-dagster-orchestrator/" class="topics-nav-story">
Prefect just bought Dagster, another big Airflow rival — and it's not a data pipeline story </a>
<div class="byline">
<span class="date">
Jul 13th 2026 6:08pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/paul-sawers/" title="Posts by Paul Sawers" class="author url fn" rel="author">Paul Sawers</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-frontend-development">
<div class="topics-latest-story">
<a href="/cloudflare-astro-triage-bot/" class="topics-nav-story">
Astro's GitHub issue backlog is heading to zero for the first time in 5 years. Now Cloudflare is open-sourcing the tool that did it. </a>
<div class="byline">
<span class="date">
Aug 4th 2026 9:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/paul-sawers/" title="Posts by Paul Sawers" class="author url fn" rel="author">Paul Sawers</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/fedcm-federated-login-standard/" class="topics-nav-story">
Your social login buttons run on third-party cookies. FedCM doesn't. </a>
<div class="byline">
<span class="date">
Jul 2nd 2026 10:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/jeff-hickman/" title="Posts by Jeff Hickman" class="author url fn" rel="author">Jeff Hickman</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/anthropic-claude-design-overhaul/" class="topics-nav-story">
Anthropic overhauled Claude Design to fix the handoff. A designer and an engineer disagree on whether it worked. </a>
<div class="byline">
<span class="date">
Jun 19th 2026 9:35am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/mshubel/" title="Posts by Meredith Shubel" class="author url fn" rel="author">Meredith Shubel</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/google-agent-ready-web/" class="topics-nav-story">
Google wants to make the web agent-ready </a>
<div class="byline">
<span class="date">
May 19th 2026 1:45pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/frederic-lardinois/" title="Posts by Frederic Lardinois" class="author url fn" rel="author">Frederic Lardinois</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/expo-bets-big-on-react-natives-agentic-future/" class="topics-nav-story">
Expo bets big on React Native’s agentic future </a>
<div class="byline">
<span class="date">
Apr 16th 2026 11:37am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/paul-sawers/" title="Posts by Paul Sawers" class="author url fn" rel="author">Paul Sawers</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-llm">
<div class="topics-latest-story">
<a href="/openai-open-weight-glm-5-3/" class="topics-nav-story">
OpenAI's Greg Brockman: Z.ai's GLM-5.3 likely to "significantly accelerate the threat landscape" </a>
<div class="byline">
<span class="date">
Aug 18th 2026 9:10am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/paul-sawers/" title="Posts by Paul Sawers" class="author url fn" rel="author">Paul Sawers</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/apple-china-ai-model/" class="topics-nav-story">
Apple's new AI split means your iOS app could behave differently in China </a>
<div class="byline">
<span class="date">
Aug 14th 2026 3:21pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/glm-5-3-post-training-coding/" class="topics-nav-story">
GLM-5.3 didn’t change the base model — where did its coding gains come from? </a>
<div class="byline">
<span class="date">
Aug 14th 2026 11:20am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-pipeline-token-optimization/" class="topics-nav-story">
Why your AI pipeline costs 10x more after the demo </a>
<div class="byline">
<span class="date">
Aug 13th 2026 12:00pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/hafiz-hassan/" title="Posts by Hafiz Hassan" class="author url fn" rel="author">Hafiz Hassan</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/meta-glimmer-distillation-enterprise/" class="topics-nav-story">
Meta stopped worrying about distillation and just shipped the pipeline </a>
<div class="byline">
<span class="date">
Aug 12th 2026 9:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/janakiram/" title="Posts by Janakiram MSV" class="author url fn" rel="author">Janakiram MSV</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-security">
<div class="topics-latest-story">
<a href="/openai-open-weight-glm-5-3/" class="topics-nav-story">
OpenAI's Greg Brockman: Z.ai's GLM-5.3 likely to "significantly accelerate the threat landscape" </a>
<div class="byline">
<span class="date">
Aug 18th 2026 9:10am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/paul-sawers/" title="Posts by Paul Sawers" class="author url fn" rel="author">Paul Sawers</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/unsigned-container-images-ai/" class="topics-nav-story">
Your container images are unsigned. In the AI era, that's a ticking time bomb. </a>
<div class="byline">
<span class="date">
Aug 14th 2026 10:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/uma-sridharan/" title="Posts by Uma Sridharan" class="author url fn" rel="author">Uma Sridharan</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/rubrik-mythos-learnings/" class="topics-nav-story">
Rubrik’s lessons from one month with Mythos Preview </a>
<div class="byline">
<span class="date">
Aug 13th 2026 1:37pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/mshubel/" title="Posts by Meredith Shubel" class="author url fn" rel="author">Meredith Shubel</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/openai-gpt56-cyber-daybreak/" class="topics-nav-story">
OpenAI built a model it doesn't want most people to use </a>
<div class="byline">
<span class="date">
Aug 10th 2026 5:15pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/openai-astra-cybersecurity-delay/" class="topics-nav-story">
The AI model OpenAI won't release yet — and what it found in testing </a>
<div class="byline">
<span class="date">
Aug 7th 2026 4:56pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-software-development">
<div class="topics-latest-story">
<a href="/code-review-taste-problem/" class="topics-nav-story">
Code review is a taste problem </a>
<div class="byline">
<span class="date">
Aug 13th 2026 11:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/ankitjain/" title="Posts by Ankit Jain" class="author url fn" rel="author">Ankit Jain</a> and <a href="https://thenewstack.io/author/david-poll/" title="Posts by David Poll" class="author url fn" rel="author">David Poll</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/coderabbit-agentic-change-management-review/" class="topics-nav-story">
"Issue tracking is dead"; How the pull request became the last chokepoint in the SDLC bottleneck </a>
<div class="byline">
<span class="date">
Aug 12th 2026 6:00pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/adrian-bridgwater/" title="Posts by Adrian Bridgwater" class="author url fn" rel="author">Adrian Bridgwater</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/go-language-ai-agents/" class="topics-nav-story">
Code that passes every test can still break the next AI agent that touches it </a>
<div class="byline">
<span class="date">
Aug 12th 2026 1:00pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/coding-agents-ignore-guidelines/" class="topics-nav-story">
Coding agents ignore open source contribution guidelines, researchers find. </a>
<div class="byline">
<span class="date">
Aug 12th 2026 7:48am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/mshubel/" title="Posts by Meredith Shubel" class="author url fn" rel="author">Meredith Shubel</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/meta-muse-claude-code/" class="topics-nav-story">
Meta Muse Code vs. Fable 5: Meta Muse is cheaper, but at what cost? </a>
<div class="byline">
<span class="date">
Aug 10th 2026 11:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/jessica-wachtel/" title="Posts by Jessica Wachtel" class="author url fn" rel="author">Jessica Wachtel</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-webassembly">
<div class="topics-latest-story">
<a href="/akamai-edge-ai-inference/" class="topics-nav-story">
Edge-forward: Akamai eyes sweet spot between centralized &amp; decentralized AI inference </a>
<div class="byline">
<span class="date">
Apr 1st 2026 7:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/adrian-bridgwater/" title="Posts by Adrian Bridgwater" class="author url fn" rel="author">Adrian Bridgwater</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/webassembly-component-model-future/" class="topics-nav-story">
WebAssembly is now outperforming containers at the edge </a>
<div class="byline">
<span class="date">
Mar 29th 2026 9:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/bruce-gain/" title="Posts by B. Cameron Gain" class="author url fn" rel="author">B. Cameron Gain</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/webassembly-sandboxing-ai-agents/" class="topics-nav-story">
WebAssembly could solve AI agents' most dangerous security gap </a>
<div class="byline">
<span class="date">
Mar 24th 2026 9:01am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/bruce-gain/" title="Posts by B. Cameron Gain" class="author url fn" rel="author">B. Cameron Gain</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/how-webassembly-plugins-simplify-kubernetes-extensibility/" class="topics-nav-story">
How WebAssembly plugins simplify Kubernetes extensibility </a>
<div class="byline">
<span class="date">
Mar 3rd 2026 2:00pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/bruce-gain/" title="Posts by B. Cameron Gain" class="author url fn" rel="author">B. Cameron Gain</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/webassembly-is-everywhere-heres-how-it-works/" class="topics-nav-story">
WebAssembly is everywhere. Here's how it works </a>
<div class="byline">
<span class="date">
Feb 25th 2026 11:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/jessica-wachtel/" title="Posts by Jessica Wachtel" class="author url fn" rel="author">Jessica Wachtel</a> </span>
</div>
</div>
</div>
</div>
</div>
<div class="content content-operations row">
<div class="col col-33 col-topics">
<a
href="https://thenewstack.io/ai-operations/"
class="topics-nav-topic topic-ai-operations"
data-category-slug="ai-operations"
>
AI Operations </a>
<a
href="https://thenewstack.io/ci-cd/"
class="topics-nav-topic topic-ci-cd"
data-category-slug="ci-cd"
>
CI/CD </a>
<a
href="https://thenewstack.io/cloud-services/"
class="topics-nav-topic topic-cloud-services"
data-category-slug="cloud-services"
>
Cloud Services </a>
<a
href="https://thenewstack.io/devops/"
class="topics-nav-topic topic-devops"
data-category-slug="devops"
>
DevOps </a>
<a
href="https://thenewstack.io/kubernetes/"
class="topics-nav-topic topic-kubernetes"
data-category-slug="kubernetes"
>
Kubernetes </a>
<a
href="https://thenewstack.io/observability/"
class="topics-nav-topic topic-observability"
data-category-slug="observability"
>
Observability </a>
<a
href="https://thenewstack.io/operations/"
class="topics-nav-topic topic-operations"
data-category-slug="operations"
>
Operations </a>
<a
href="https://thenewstack.io/platform-engineering/"
class="topics-nav-topic topic-platform-engineering"
data-category-slug="platform-engineering"
>
Platform Engineering </a>
</div>
<div class="col col-66 col-latest-stories">
<div class="topic-latest-stories topic-latest-stories-ai-operations">
<div class="topics-latest-story">
<a href="/elevenlabs-mcp-voice-agents/" class="topics-nav-story">
Claude can now delete your production voice agent from a chat window </a>
<div class="byline">
<span class="date">
Aug 17th 2026 3:51pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/meta-glimmer-distillation-enterprise/" class="topics-nav-story">
Meta stopped worrying about distillation and just shipped the pipeline </a>
<div class="byline">
<span class="date">
Aug 12th 2026 9:00am, by </span>
<span class="author">
Janakiram MSV </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-kill-switch-infrastructure/" class="topics-nav-story">
The “AI kill switch” assumes you know what you are trying to shut down </a>
<div class="byline">
<span class="date">
Aug 7th 2026 9:00am, by </span>
<span class="author">
Robin Tatam </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/microsoft-copilot-token-budgets/" class="topics-nav-story">
The blank-check AI coding era is dead. Here's what comes next. </a>
<div class="byline">
<span class="date">
Aug 6th 2026 1:29pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-software-delivery-architecture/" class="topics-nav-story">
Claude, Gemini, and GPT-5 can handle every SDLC task. Almost none of them should. </a>
<div class="byline">
<span class="date">
Aug 4th 2026 12:00pm, by </span>
<span class="author">
Jeff Michael </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-ci-cd">
<div class="topics-latest-story">
<a href="/npm-supply-chain-worm-attack/" class="topics-nav-story">
The npm attack that turned provenance attestations into camouflage </a>
<div class="byline">
<span class="date">
Aug 7th 2026 2:31pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-agents-harness-engineering/" class="topics-nav-story">
Forget humans “in” the loop. Harness engineering puts humans “on” the loop. </a>
<div class="byline">
<span class="date">
Jul 31st 2026 1:18pm, by </span>
<span class="author">
Jennifer Riggins </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/anthropic-mendral-cicd-acquihire/" class="topics-nav-story">
"Every few months, a new model made part of our roadmap unnecessary": Why Mendral's founders gave up their startup for Anthropic </a>
<div class="byline">
<span class="date">
Jul 22nd 2026 12:45pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/merge-gate-coding-agents/" class="topics-nav-story">
Your merge gate was a compromise. Coding agents are making it a liability.  </a>
<div class="byline">
<span class="date">
Jul 11th 2026 1:00pm, by </span>
<span class="author">
Arjun Iyer </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/why-cicd-fails-llms/" class="topics-nav-story">
Why traditional CI/CD fails for LLMs (and the release gates we built to fix it) </a>
<div class="byline">
<span class="date">
Jul 2nd 2026 9:00am, by </span>
<span class="author">
Freddy Daniel Alvarez Pinto </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-cloud-services">
<div class="topics-latest-story">
<a href="/manus-meta-data-deletion/" class="topics-nav-story">
Your AI agent remembers everything. Here's what happens when its owner changes. </a>
<div class="byline">
<span class="date">
Aug 11th 2026 5:46pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/stop-worrying-hyperscaler-capex/" class="topics-nav-story">
How I learned to stop worrying and love hyperscaler capex </a>
<div class="byline">
<span class="date">
Aug 11th 2026 4:30pm, by </span>
<span class="author">
Alex Wilhelm </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/why-cpus-still-matter-in-the-age-of-ai-agents/" class="topics-nav-story">
Why CPUs still matter in the age of AI agents </a>
<div class="byline">
<span class="date">
Aug 11th 2026 2:54pm, by </span>
<span class="author">
Frederic Lardinois </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/cloud-security-triage-cadence/" class="topics-nav-story">
CSPM adoption jumped 60%. Tickets stayed open. </a>
<div class="byline">
<span class="date">
Aug 4th 2026 3:48pm, by </span>
<span class="author">
Megan Carnegie </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/openai-codex-cloud-evolution/" class="topics-nav-story">
Today's Codex will feel "primitive" by fall — and its own team's roadmap backs it up </a>
<div class="byline">
<span class="date">
Aug 4th 2026 2:30pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-devops">
<div class="topics-latest-story">
<a href="/real-cost-diy-platform/" class="topics-nav-story">
Platform Engineering ROI: What it costs to build your own platform </a>
<div class="byline">
<span class="date">
Aug 9th 2026 12:00pm, by </span>
<span class="author">
Michael Coté </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/npm-supply-chain-worm-attack/" class="topics-nav-story">
The npm attack that turned provenance attestations into camouflage </a>
<div class="byline">
<span class="date">
Aug 7th 2026 2:31pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/cloud-security-triage-cadence/" class="topics-nav-story">
CSPM adoption jumped 60%. Tickets stayed open. </a>
<div class="byline">
<span class="date">
Aug 4th 2026 3:48pm, by </span>
<span class="author">
Megan Carnegie </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/eks-kubernetes-upgrade-rollback/" class="topics-nav-story">
Kubernetes upgrades don’t have to break things: How EKS is making cluster lifecycle management simpler and safer </a>
<div class="byline">
<span class="date">
Aug 1st 2026 11:00am, by </span>
<span class="author">
Spyros Angelopoulos and Vikram Venkataraman </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/building-the-10x-organization/" class="topics-nav-story">
Turning 10x developers into 10x value </a>
<div class="byline">
<span class="date">
Jul 29th 2026 10:00am, by </span>
<span class="author">
Bryan Ross </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-kubernetes">
<div class="topics-latest-story">
<a href="/accelerating-eks-image-pulls/" class="topics-nav-story">
Pulling multi-gigabyte container images in seconds on Amazon EKS </a>
<div class="byline">
<span class="date">
Aug 10th 2026 12:00pm, by </span>
<span class="author">
Sri Saran Balaji Vellore Rajakumar and Neelendra Bhandari </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/kubevirt-evpn-vm-migration/" class="topics-nav-story">
Why your KubeVirt VMs can’t move between clusters — and how EVPN fixes it </a>
<div class="byline">
<span class="date">
Aug 8th 2026 10:00am, by </span>
<span class="author">
Miguel Duarte Barroso </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/kubernetes-dra-gpu-scheduling/" class="topics-nav-story">
Say goodbye to K8s GPU pain: How DRA changes everything </a>
<div class="byline">
<span class="date">
Aug 6th 2026 12:00pm, by </span>
<span class="author">
Dawood Abbas </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/nutanix-dual-native-architecture/" class="topics-nav-story">
"Just rewrite it": What platform teams really think about modernization </a>
<div class="byline">
<span class="date">
Aug 6th 2026 12:00pm, by </span>
<span class="author">
Aarthi Mahesh and Steve Carter </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/eks-kubernetes-upgrade-rollback/" class="topics-nav-story">
Kubernetes upgrades don’t have to break things: How EKS is making cluster lifecycle management simpler and safer </a>
<div class="byline">
<span class="date">
Aug 1st 2026 11:00am, by </span>
<span class="author">
Spyros Angelopoulos and Vikram Venkataraman </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-observability">
<div class="topics-latest-story">
<a href="/speakeasy-enterprise-agent-skills/" class="topics-nav-story">
AI skills start on laptops. Enterprises inherit the mess. </a>
<div class="byline">
<span class="date">
Aug 8th 2026 9:00am, by </span>
<span class="author">
David Eastman </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-sre-root-cause-analysis/" class="topics-nav-story">
Why your company should (try to) build its own AI SRE </a>
<div class="byline">
<span class="date">
Jul 30th 2026 4:30pm, by </span>
<span class="author">
Alex Wilhelm </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/openai-elastic-enterprise-context/" class="topics-nav-story">
OpenAI and Elastic are tackling the AI problem enterprises can’t ignore </a>
<div class="byline">
<span class="date">
Jul 30th 2026 2:42pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/dynatrace-autonomous-sre-agents/" class="topics-nav-story">
Dynatrace’s new agents can reveal the single hardest part of AI operations </a>
<div class="byline">
<span class="date">
Jul 27th 2026 9:00am, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/sumo-logic-ai-security-alerts/" class="topics-nav-story">
Alert fatigue is breaking SOCs. Sumo Logic says it has a way out. </a>
<div class="byline">
<span class="date">
Jul 24th 2026 10:07am, by </span>
<span class="author">
Carly Page </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-operations">
<div class="topics-latest-story">
<a href="/dns-domain-management-automation/" class="topics-nav-story">
DNS is infrastructure. It’s time to manage it that way. </a>
<div class="byline">
<span class="date">
Jul 30th 2026 11:00am, by </span>
<span class="author">
Venus Kohli </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/build-resilient-service-architecture/" class="topics-nav-story">
5 steps to build great service architecture and operational resilience </a>
<div class="byline">
<span class="date">
Jul 25th 2026 12:00pm, by </span>
<span class="author">
Debora Cambe </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/eks-zonal-shift-resilience/" class="topics-nav-story">
What running Kubernetes across millions of clusters taught AWS about zonal failures </a>
<div class="byline">
<span class="date">
Jul 10th 2026 11:00am, by </span>
<span class="author">
Raghav Tripathi and Sri Saran Balaji Vellore Rajakumar </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/agentic-ai-token-costs/" class="topics-nav-story">
Why cheaper models alone won't save your AI budget </a>
<div class="byline">
<span class="date">
Jul 4th 2026 8:02am, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/hpe-agentic-ops-copilot/" class="topics-nav-story">
The reason enterprise outages almost never start where ops teams think </a>
<div class="byline">
<span class="date">
May 26th 2026 9:43am, by </span>
<span class="author">
Jennifer Riggins </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-platform-engineering">
<div class="topics-latest-story">
<a href="/new-tenant-is-change/" class="topics-nav-story">
Per-developer environments were the goal. Agents moved the goalposts. </a>
<div class="byline">
<span class="date">
Aug 15th 2026 10:00am, by </span>
<span class="author">
Arjun Iyer </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/real-cost-diy-platform/" class="topics-nav-story">
Platform Engineering ROI: What it costs to build your own platform </a>
<div class="byline">
<span class="date">
Aug 9th 2026 12:00pm, by </span>
<span class="author">
Michael Coté </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/kubevirt-evpn-vm-migration/" class="topics-nav-story">
Why your KubeVirt VMs can’t move between clusters — and how EVPN fixes it </a>
<div class="byline">
<span class="date">
Aug 8th 2026 10:00am, by </span>
<span class="author">
Miguel Duarte Barroso </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/enterprise-ai-agent-harness/" class="topics-nav-story">
Coinbase, Shopify and Ramp all built their own coding agents. All three still pay Anthropic. </a>
<div class="byline">
<span class="date">
Aug 7th 2026 2:16pm, by </span>
<span class="author">
Janakiram MSV </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/kubernetes-dra-gpu-scheduling/" class="topics-nav-story">
Say goodbye to K8s GPU pain: How DRA changes everything </a>
<div class="byline">
<span class="date">
Aug 6th 2026 12:00pm, by </span>
<span class="author">
Dawood Abbas </span>
</div>
</div>
</div>
</div>
</div>
<div class="content content-programming row">
<div class="col col-33 col-topics">
<a
href="https://thenewstack.io/c/"
class="topics-nav-topic topic-c"
data-category-slug="c"
>
C++ </a>
<a
href="https://thenewstack.io/developer-tools/"
class="topics-nav-topic topic-developer-tools"
data-category-slug="developer-tools"
>
Developer tools </a>
<a
href="https://thenewstack.io/go/"
class="topics-nav-topic topic-go"
data-category-slug="go"
>
Go </a>
<a
href="https://thenewstack.io/java/"
class="topics-nav-topic topic-java"
data-category-slug="java"
>
Java </a>
<a
href="https://thenewstack.io/javascript/"
class="topics-nav-topic topic-javascript"
data-category-slug="javascript"
>
JavaScript </a>
<a
href="https://thenewstack.io/programming-languages/"
class="topics-nav-topic topic-programming-languages"
data-category-slug="programming-languages"
>
Programming Languages </a>
<a
href="https://thenewstack.io/python/"
class="topics-nav-topic topic-python"
data-category-slug="python"
>
Python </a>
<a
href="https://thenewstack.io/rust/"
class="topics-nav-topic topic-rust"
data-category-slug="rust"
>
Rust </a>
<a
href="https://thenewstack.io/typescript/"
class="topics-nav-topic topic-typescript"
data-category-slug="typescript"
>
TypeScript </a>
</div>
<div class="col col-66 col-latest-stories">
<div class="topic-latest-stories topic-latest-stories-c">
<div class="topics-latest-story">
<a href="/open-source-usearch-library-jumpstarts-scylladb-vector-search/" class="topics-nav-story">
Open source USearch library jumpstarts ScyllaDB vector search </a>
<div class="byline">
<span class="date">
Feb 5th 2026 12:00pm, by </span>
<span class="author">
Jelani Harper </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/aws-waf-vs-google-cloud-armor-a-multicloud-security-showdown/" class="topics-nav-story">
AWS WAF vs. Google Cloud Armor: A Multicloud Security Showdown </a>
<div class="byline">
<span class="date">
Nov 25th 2025 10:00am, by </span>
<span class="author">
Advait Patel </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/goodbye-dashboards-agents-deliver-answers-not-just-reports/" class="topics-nav-story">
Goodbye Dashboards: Agents Deliver Answers, Not Just Reports </a>
<div class="byline">
<span class="date">
Nov 23rd 2025 9:00am, by </span>
<span class="author">
Ketan Karkhanis </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/rust-vs-c-a-modern-take-on-performance-and-safety/" class="topics-nav-story">
Rust vs. C++: a Modern Take on Performance and Safety </a>
<div class="byline">
<span class="date">
Oct 22nd 2025 2:00pm, by </span>
<span class="author">
Zziwa Raymond Ian </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/building-a-real-time-system-monitor-in-rust-terminal/" class="topics-nav-story">
Building a Real-Time System Monitor in Rust Terminal </a>
<div class="byline">
<span class="date">
Oct 15th 2025 7:05am, by </span>
<span class="author">
Tinega Onchari </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-developer-tools">
<div class="topics-latest-story">
<a href="/agent-plugins-portability-gaps/" class="topics-nav-story">
Anthropic defined the standards inside Agent Plugins. So why isn’t it helping govern the format? </a>
<div class="byline">
<span class="date">
Aug 17th 2026 3:27pm, by </span>
<span class="author">
Janakiram MSV </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/code-review-taste-problem/" class="topics-nav-story">
Code review is a taste problem </a>
<div class="byline">
<span class="date">
Aug 13th 2026 11:00am, by </span>
<span class="author">
Ankit Jain and David Poll </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/grok-4-6-agent-training/" class="topics-nav-story">
SpaceXAI trained Grok 4.6 on something most AI labs throw away </a>
<div class="byline">
<span class="date">
Aug 12th 2026 4:07pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/meta-muse-claude-code/" class="topics-nav-story">
Meta Muse Code vs. Fable 5: Meta Muse is cheaper, but at what cost? </a>
<div class="byline">
<span class="date">
Aug 10th 2026 11:00am, by </span>
<span class="author">
Jessica Wachtel </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/developers-review-gpt-56-sol/" class="topics-nav-story">
"It blows my mind”-“It has a tendency to overengineer things a little”: Developers react to road-testing OpenAI GPT‑5.6 Sol </a>
<div class="byline">
<span class="date">
Aug 10th 2026 10:28am, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-go">
<div class="topics-latest-story">
<a href="/go-language-ai-agents/" class="topics-nav-story">
Code that passes every test can still break the next AI agent that touches it </a>
<div class="byline">
<span class="date">
Aug 12th 2026 1:00pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/microsoft-agent-framework-go/" class="topics-nav-story">
Microsoft joins Google in backing Go for AI agents — OpenAI and Anthropic lag </a>
<div class="byline">
<span class="date">
Jul 11th 2026 10:00am, by </span>
<span class="author">
Paul Sawers </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/go-experts-i-dont-want-to-maintain-ai-generated-code/" class="topics-nav-story">
Go Experts: 'I Don't Want to Maintain AI-Generated Code' </a>
<div class="byline">
<span class="date">
Sep 28th 2025 6:00am, by </span>
<span class="author">
David Cassel </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/how-to-run-kubernetes-commands-in-go-steps-and-best-practices/" class="topics-nav-story">
How To Run Kubernetes Commands in Go: Steps and Best Practices  </a>
<div class="byline">
<span class="date">
Jun 27th 2025 8:00am, by </span>
<span class="author">
Sunny Yadav </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/prepare-your-mac-for-go-development/" class="topics-nav-story">
Prepare Your Mac for Go Development </a>
<div class="byline">
<span class="date">
Apr 12th 2025 7:00am, by </span>
<span class="author">
Damon M. Garn </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-java">
<div class="topics-latest-story">
<a href="/azul-java-security-jvm-mythos/" class="topics-nav-story">
Azul wants to find your unpatched JVMs before AI does </a>
<div class="byline">
<span class="date">
Jun 24th 2026 4:53pm, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/chainguard-java-libraries-spring-boot-cves/" class="topics-nav-story">
Chainguard targets Java's unpatched vulnerability backlog with drop-in remediated libraries </a>
<div class="byline">
<span class="date">
Jun 24th 2026 4:48pm, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/deterministic-ai-spring-upgrades/" class="topics-nav-story">
Transform your AI coding agent into a deterministic Java Spring expert </a>
<div class="byline">
<span class="date">
Jun 11th 2026 9:00am, by </span>
<span class="author">
Raquel Pau </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/broadcom-spring-java-cve-security-ai/" class="topics-nav-story">
Spring is 23 years old. AI just made it a security emergency. </a>
<div class="byline">
<span class="date">
Jun 9th 2026 2:48pm, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/in-the-ai-age-java-is-more-relevant-than-ever/" class="topics-nav-story">
In the AI age, Java is more relevant than ever </a>
<div class="byline">
<span class="date">
Apr 8th 2026 5:30pm, by </span>
<span class="author">
Mary Branscombe </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-javascript">
<div class="topics-latest-story">
<a href="/cloudflare-voidzero-acquisition-vite/" class="topics-nav-story">
Cloudflare aqui-hires VoidZero: Did a piece of the open web just stabilize, or become more brittle? </a>
<div class="byline">
<span class="date">
Jun 5th 2026 3:01pm, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/bun-developers-complaints-anthropic/" class="topics-nav-story">
"Real maturity problems": Not every developer is thrilled with Bun after Anthropic acquisition </a>
<div class="byline">
<span class="date">
May 5th 2026 1:03pm, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/typescript-6-0-rc-arrives-as-a-bridge-to-a-faster-future/" class="topics-nav-story">
TypeScript 6.0 RC arrives as a bridge to a faster future </a>
<div class="byline">
<span class="date">
Mar 14th 2026 9:00am, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/webassembly-is-everywhere-heres-how-it-works/" class="topics-nav-story">
WebAssembly is everywhere. Here's how it works </a>
<div class="byline">
<span class="date">
Feb 25th 2026 11:00am, by </span>
<span class="author">
Jessica Wachtel </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/wasm-vs-javascript-who-wins-at-a-million-rows/" class="topics-nav-story">
Wasm vs. JavaScript: Who wins at a million rows? </a>
<div class="byline">
<span class="date">
Feb 22nd 2026 6:00am, by </span>
<span class="author">
Jessica Wachtel </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-programming-languages">
<div class="topics-latest-story">
<a href="/kotlin-notebook-jupyter-python-retreat/" class="topics-nav-story">
JetBrains kills Kotlin Notebook months after Microsoft's Polyglot exit. But Jupyter is doing just fine. </a>
<div class="byline">
<span class="date">
Jun 29th 2026 1:59pm, by </span>
<span class="author">
Paul Sawers </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/rust-foundation-training-certification/" class="topics-nav-story">
Trust in Rust: Foundation debuts official training to tackle steep learning curve </a>
<div class="byline">
<span class="date">
Jun 25th 2026 12:30pm, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/php-web-skills-hiring-age/" class="topics-nav-story">
Who will maintain the web when PHP's veterans retire? </a>
<div class="byline">
<span class="date">
Apr 16th 2026 2:53pm, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-programming-languages-future/" class="topics-nav-story">
Will AI force code to evolve or make it extinct? </a>
<div class="byline">
<span class="date">
Mar 22nd 2026 6:00am, by </span>
<span class="author">
David Cassel </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/java-26-performance-ai/" class="topics-nav-story">
Java 26 lands without an LTS badge. Here's why developers should care anyway. </a>
<div class="byline">
<span class="date">
Mar 18th 2026 9:35am, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-python">
<div class="topics-latest-story">
<a href="/nvidia-nooa-agent-framework/" class="topics-nav-story">
Nvidia's NOOA makes an agent one Python class </a>
<div class="byline">
<span class="date">
Aug 4th 2026 10:02am, by </span>
<span class="author">
Meredith Shubel </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/spark-4-2-ai-workloads/" class="topics-nav-story">
Spark 4.2 has a feature that could retire your vector database </a>
<div class="byline">
<span class="date">
Jul 19th 2026 12:00pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/kotlin-notebook-jupyter-python-retreat/" class="topics-nav-story">
JetBrains kills Kotlin Notebook months after Microsoft's Polyglot exit. But Jupyter is doing just fine. </a>
<div class="byline">
<span class="date">
Jun 29th 2026 1:59pm, by </span>
<span class="author">
Paul Sawers </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/build-rag-document-search/" class="topics-nav-story">
How to build an AI-powered private document search app with RAG, ChromaDB, and memory </a>
<div class="byline">
<span class="date">
Apr 10th 2026 12:00pm, by </span>
<span class="author">
Teri Eyenike </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/in-the-ai-age-java-is-more-relevant-than-ever/" class="topics-nav-story">
In the AI age, Java is more relevant than ever </a>
<div class="byline">
<span class="date">
Apr 8th 2026 5:30pm, by </span>
<span class="author">
Mary Branscombe </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-rust">
<div class="topics-latest-story">
<a href="/grok-opus-coding-tokens/" class="topics-nav-story">
Grok 4.5 vs. Claude Opus 4.8: Costs and what works, not the spec sheet </a>
<div class="byline">
<span class="date">
Jul 20th 2026 9:38am, by </span>
<span class="author">
Jessica Wachtel </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/rust-foundation-training-certification/" class="topics-nav-story">
Trust in Rust: Foundation debuts official training to tackle steep learning curve </a>
<div class="byline">
<span class="date">
Jun 25th 2026 12:30pm, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/python-rust-ai-sidecar/" class="topics-nav-story">
The Rust sidecar pattern that fixes Python AI's biggest weakness </a>
<div class="byline">
<span class="date">
May 14th 2026 9:00am, by </span>
<span class="author">
Boris Chabeda </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/rust-enterprise-developers/" class="topics-nav-story">
Nearly half of all companies now use Rust in production, survey finds </a>
<div class="byline">
<span class="date">
Mar 6th 2026 10:45am, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/wasm-vs-javascript-who-wins-at-a-million-rows/" class="topics-nav-story">
Wasm vs. JavaScript: Who wins at a million rows? </a>
<div class="byline">
<span class="date">
Feb 22nd 2026 6:00am, by </span>
<span class="author">
Jessica Wachtel </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-typescript">
<div class="topics-latest-story">
<a href="/real-time-sync-engine/" class="topics-nav-story">
From clobbered drafts to real-time sync </a>
<div class="byline">
<span class="date">
Apr 14th 2026 10:00am, by </span>
<span class="author">
David Moore </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/typescript-6-0-rc-arrives-as-a-bridge-to-a-faster-future/" class="topics-nav-story">
TypeScript 6.0 RC arrives as a bridge to a faster future </a>
<div class="byline">
<span class="date">
Mar 14th 2026 9:00am, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/mastra-empowers-web-devs-to-build-ai-agents-in-typescript/" class="topics-nav-story">
Mastra empowers web devs to build AI agents in TypeScript </a>
<div class="byline">
<span class="date">
Jan 28th 2026 11:00am, by </span>
<span class="author">
Loraine Lawson </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/inferno-vet-creates-frontend-framework-built-with-ai-in-mind/" class="topics-nav-story">
Inferno Vet Creates Frontend Framework Built With AI in Mind </a>
<div class="byline">
<span class="date">
Dec 10th 2025 11:00am, by </span>
<span class="author">
Loraine Lawson </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/javascript-utility-library-lodash-changing-governance-model/" class="topics-nav-story">
JavaScript Utility Library Lodash Changing Governance Model </a>
<div class="byline">
<span class="date">
Nov 1st 2025 7:00am, by </span>
<span class="author">
Loraine Lawson </span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function() {
window.tns.nav = window.tns.nav || {};
window.tns.nav.open_pending = false;
$('.topics-nav-block a').on('mouseenter', function() {
window.tns.nav.open_pending = true;
setTimeout(function() {
if (!window.tns.nav.open_pending) return;
window.tns.nav.open_pending = false;
$('.topics-nav-block a').removeClass('active');
$(this).addClass('active');
$('.nav-topics-dropdown').addClass('open');
$('.nav-topics-dropdown').transition({
height : 440,
duration : 180,
easeing : 'easeOutQuad'
});
}, 180);
});
$('.topics-nav-block a').on('mouseleave', function() {
window.tns.nav.open_pending = false;
});
$('.channels-nav').on('mouseenter', function() {
window.tns.nav.open_pending = false;
$('.topics-nav-block a').removeClass('active');
$('.nav-topics-dropdown').removeClass('open');
$('.nav-topics-dropdown').transition({
height : 0,
duration : 99,
easeing : 'easeOutQuad'
});
});
$('#tns-header').on('mouseleave', function() {
window.tns.nav.open_pending = false;
$('.topics-nav-block a').removeClass('active');
$('.nav-topics-dropdown').removeClass('open');
$('.nav-topics-dropdown').transition({
height : 0,
duration : 99,
easeing : 'easeOutQuad'
});
});
$('.col-topics a').on('mouseenter', function() {
window.tns.nav.open_pending = false;
$('.col-topics a').removeClass('active');
$(this).addClass('active');
var categorySlug = $(this).data('category-slug');
/// Handle change-up of the latest stories list
$('.topic-latest-stories').css({
display : 'none',
opacity : 0
});
$('.topic-latest-stories-' + categorySlug).stop().transition({
display : 'block',
opacity : 1,
duration : 121,
easing : 'snap'
})
});
$('.topics-nav-topic').on('click', function() {
window.tns.nav.open_pending = false;
var target = $(this).attr('href');
window.dataLayer.push({
'event' : 'nav_click',
'target' : target
});
});
$('.topics-nav-story').on('click', function() {
window.tns.nav.open_pending = false;
var target = $(this).attr('href');
window.dataLayer.push({
'event' : 'nav_click',
'target' : target
});
});
});
</script>
</div>
<div class="header-footprint"></div>
<div class="ad-container native-top" id="div-gpt-ad-native-top">
<script>
googletag.cmd.push(function() {
googletag.display("div-gpt-ad-native-top");
});
</script>
</div>
</div>
<script>
$(document).ready(function() {
var lastScrollTop = 0;
window.headerExpandOnScroll = true;
window.headerCollapse = function() {
$('.header-fixed').addClass('collapsed');
if ($('.nav-topics-dropdown').hasClass('open')) {
$('.topics-nav-block a').removeClass('active');
$('.nav-topics-dropdown').removeClass('open');
$('.nav-topics-dropdown').transition({
height : 0,
duration : 99,
easeing : 'easeOutQuad'
});
}
}
window.headerExpand = function() {
$('.header-fixed').removeClass('collapsed');
if ($('.nav-topics-dropdown').hasClass('open')) {
$('.topics-nav-block a').removeClass('active');
$('.nav-topics-dropdown').removeClass('open');
$('.nav-topics-dropdown').transition({
height : 0,
duration : 99,
easeing : 'easeOutQuad'
});
}
}
$(window).scroll(function(event) {
if (!window.headerExpandOnScroll) return;
var scrollTop = $(window).scrollTop();
if (scrollTop <= 50) return;
/// Down (collapse)
if (scrollTop > lastScrollTop) {
window.headerCollapse();
}
/// Up (expand)
if (scrollTop < lastScrollTop) {
window.headerExpand();
}
lastScrollTop = scrollTop;
});
$(window).on('resize', function() {
$('.topics-nav-block a').removeClass('active');
$('.nav-topics-dropdown').removeClass('open');
$('.nav-topics-dropdown').transition({
height : 0,
duration : 99,
easeing : 'easeOutQuad'
});
});
});
</script>
<div id="turnstile-container" data-refresh-expired="never" style="display: none;"></div>
<script>
$(document).ready(function() {
window.tns = window.tns || {}
window.tns.turnstile = {}
window.tns.turnstile.renderWidget = function(callback) {
var turnstileWidgetId = turnstile.render('#turnstile-container', {
sitekey : '0x4AAAAAAAVLuogHtE3mpzev',
callback: callback
});
window.tns.turnstile.widgetId = turnstileWidgetId;
}
window.tns.turnstile.resetWidget = async function(callback) {
await turnstile.reset(window.tns.turnstile.widgetId)
return callback
}
});
</script>
<!-- IMGJS Config -->
<script>
$(document).ready(function() {
window.imgjs = window.imgjs || {}
window.imgjs.subscribe = window.imgjs.subscribe || {}
window.imgjs.reactions = window.imgjs.reactions || {}
window.imgjs.subscribe.resetConfig = function() {
window.imgjs.subscribe.config = {
subscribe_url: 'https://img-api-v2.thenewstack.dev/api/accounts/subscribe',
login_url: 'https://img-api-v2.thenewstack.dev/api/accounts/login/verify-otc-login',
update_url: 'https://img-api-v2.thenewstack.dev/api/accounts',
read_url: 'https://img-api-v2.thenewstack.dev/api/accounts/me',
button_color: '#ff2b87',
copy: {
email_slide:{
heading: {
subscribe: `Sign up with The New Stack`,
login: `Login to The New Stack`
},
cta: {
subscribe: `Register for free to access this content and unlock our full vault of exclusive resources. By joining our community of software engineering leaders and aspiring developers, you’ll get all the most important news and analysis in the world of at-scale software development.`,
login: `Enter your email below to receive a login code.`
},
button_label: {
subscribe: `REGISTER`,
login: `LOGIN`
}
},
verify_slide: {
heading: {
subscribe: `Sign up with The New Stack`,
login: `Login to The New Stack`
},
prompt: {
subscribe: `Enter the verification code sent to your email.`,
login: `Enter the code sent to your email to login to your account.`
},
button_label: {
subscribe: `VERIFY`,
login: `LOGIN`
}
},
profile_slide: {
heading: {
subscribe: `Sign up with The New Stack`,
login: `Update Your Profile`
},
cta: {
subscribe: `Refine your profile to unlock insights and opportunities aligned with your skills and experience.`,
login: `Refine your profile to unlock insights and opportunities aligned with your skills and experience.`
},
button_label: {
subscribe: `UPDATE PROFILE`,
login: `UPDATE PROFILE`
}
},
newsletter_slide: {
heading: `Stay in the loop`,
cta: `Based on your interests, we think you'll also enjoy these newsletters from our network.`,
button_label_subscribe: `SUBSCRIBE AND CONTINUE`,
button_label_skip: `CONTINUE WITHOUT SUBSCRIBING`
},
confirm_slide: {
heading: {
subscribe: `Welcome!`,
login: `Welcome back!`
},
welcome: {
subscribe: `We're so glad you're here! As a member of The New Stack, you now have unlimited access to all our <a href="https://thenewstack.io" target="_blank">articles</a>, <a href="https://thenewstack.io/podcasts/" target="_blank">videos</a>, <a href="https://thenewstack.io/webinars/" target="_blank">webinars</a>, <a href="https://thenewstack.io/ebooks/" target="_blank">ebooks</a>, <a href="https://thenewstack.io/newsletter/" target="_blank">newsletters</a> and more. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.`,
login: `You're now logged in to The New Stack.`
},
whats_next: {
subscribe: `Check your inbox for a confirmation email where you can adjust your preferences and even join additional groups.`,
login: `You can now access all our content and manage your preferences.`
},
follow: {
subscribe: `Follow TNS on your favorite social media networks.`,
login: `Follow TNS on your favorite social media networks.`
},
button_label: {
subscribe: `OK`,
login: `OK`
}
}
},
images: {
email_slide: {
key_image: 'https://cdn.insightmediagroup.io/imgjs/tns-subscribe-1.png'
}
},
form: {
job_role: {
options: [
{ title: 'AI Researcher / Research Scientist', value: 'ai-researcher' },
{ title: 'Architect', value: 'architect' },
{ title: 'Business Development/Marketing/Sales', value: 'business-development' },
{ title: 'Community Manager / Developer Advocate', value: 'community-manager-devrel' },
{ title: 'Data Analyst / Business Intelligence Analyst', value: 'data-analyst' },
{ title: 'Data Engineer', value: 'data-engineer' },
{ title: 'Data Scientist', value: 'data-scientist' },
{ title: 'Developer / Software Engineer', value: 'developer-engineer' },
{ title: 'DevOps Engineer', value: 'devops-engineer' },
{ title: 'Educator / Instructor', value: 'educator-instructor' },
{ title: 'Enthusiast/Hobbyist', value: 'enthusiast-hobbyist' },
{ title: 'Founder / Entrepreneur / Investor / VC', value: 'founder-investor-vc' },
{ title: 'IT management, including CIO/CISO/CTO/CDO', value: 'it-management-cio-ciso-cto' },
{ title: 'Machine Learning Engineer', value: 'machine-learning-engineer' },
{ title: 'MLOps Engineer / Infrastructure Engineer', value: 'ml-ops-engineer' },
{ title: 'Product Manager', value: 'product-manager' },
{ title: 'Security / Privacy Professional', value: 'security-professional' },
{ title: 'Statistician / Quantitative Analyst', value: 'statistician-quantitative-analyst' },
{ title: 'Student', value: 'student' },
{ title: 'SysAdmin/Operations/SRE', value: 'sysadmin-ops-sre' },
{ title: 'Technical Writer', value: 'technical-writer' },
{ title: 'UX / UI Designer / Data Visualization Specialist', value: 'ui-ux-vis-designer' }
]
}
},
social_links: {
mastodon: 'https://hachyderm.io/@TheNewStack',
bluesky: 'https://bsky.app/profile/thenewstack.io',
threads: 'https://www.threads.net/@thenewstack',
linkedin: 'https://www.linkedin.com/company/the-new-stack',
twitter: 'https://twitter.com/thenewstack',
facebook: 'https://www.facebook.com/thenewstack/',
spotify: 'https://open.spotify.com/show/2nj1mpDb9jxHxi9vjZvDdk',
youtube: 'https://www.youtube.com/c/thenewstack?sub_confirmation=1'
},
newsletters: [
{
id: 'roadmap-devops-weekly',
name: 'roadmap.sh DevOps Weekly',
label: 'Roadmap DevOps Weekly - the path to level up your skills & your stack',
logo: 'https://cdn.insightmediagroup.io/static/roadmap-logo.png'
},
{
id: 'tds-weekly',
name: 'Towards Data Science Weekly',
label: 'Insights from the brightest minds in data science',
logo: 'https://cdn.insightmediagroup.io/static/tds-logo.png'
},
{
id: 'cautious-optimism-weekly',
name: 'Cautious Optimism AI Weekly',
label: 'Cautious Optimism: modestly upbeat breakdown of tech, business & power',
logo: 'https://cdn.insightmediagroup.io/static/co-logo.png'
},
{
id: 'imgcn-6a67a28b92680c45182e25f0',
name: 'Hard Coded',
label: 'Hard Coded - unique takes & skeptical analysis of the tech industry',
logo: 'https://assets.insightmediagroup.io/media/1786372943360_chk3lv.png'
}
],
privacy_url: 'https://thenewstack.io/privacy-policy/',
terms_url: 'https://thenewstack.io/terms-of-use/'
}
/// Determine the IMGJS Subscribe URLs
var hostname = window.location.hostname
window.imgjs.subscribe.config.oauth = {
google_login_url: 'https://img-api-v2.insightmediagroup.io/api/accounts/login/google',
github_login_url: 'https://img-api-v2.insightmediagroup.io/api/accounts/login/github',
set_session_url: 'https://img-api-v2.thenewstack.dev/api/accounts/login/set-session'
}
if (hostname.includes('thenewstack.io')) {
window.imgjs.subscribe.config.subscribe_url = 'https://img-api-v2.thenewstack.io/api/accounts/subscribe'
window.imgjs.subscribe.config.login_url = 'https://img-api-v2.thenewstack.io/api/accounts/login/verify-otc-login'
window.imgjs.subscribe.config.update_url = 'https://img-api-v2.thenewstack.io/api/accounts'
window.imgjs.subscribe.config.read_url = 'https://img-api-v2.thenewstack.io/api/accounts/me'
window.imgjs.subscribe.config.oauth = {
google_login_url: 'https://img-api-v2.insightmediagroup.io/api/accounts/login/google',
github_login_url: 'https://img-api-v2.insightmediagroup.io/api/accounts/login/github',
set_session_url: 'https://img-api-v2.thenewstack.io/api/accounts/login/set-session'
}
}
}
window.imgjs.subscribe.resetConfig()
/// Initialize IMGJS Reactions Config
window.imgjs.reactions.resetConfig = function() {
window.imgjs.reactions.config = {
url: 'https://img-api-v2.thenewstack.dev/api/reactions'
}
var hostname = window.location.hostname
if (hostname.includes('thenewstack.io')) {
window.imgjs.reactions.config.url = 'https://img-api-v2.thenewstack.io/api/reactions'
}
}
window.imgjs.reactions.resetConfig()
window.imgjs.subscribe.isNewSubscription = function(createdAt) {
if (!createdAt) return false;
var d = createdAt instanceof Date ? createdAt : new Date(createdAt);
if (isNaN(d.getTime())) return false;
// Compare YYYY-MM-DD in UTC (GMT+0)
var toYMD = function (date) { return date.toISOString().slice(0, 10); };
return toYMD(d) === toYMD(new Date());
}
})
</script>
<div id="tns-post">
<!-- Hidden data storage elements -->
<div id="post-date" style="display: none;">
2025-06-19 05:05:14 </div>
<div id="post-title" style="display: none;">Introduction to Cloud Native Computing</div>
<div id="post-tags" style="display: none;">
</div>
<!-- End hidden data storage elements -->
<div class="content-column content-column-post-body">
<div id="tns-post-headline">
<div id="tns-post-headline-breadcrumb">
<span class="breadcrumb">
<a href="/category/cloud-native/">
Cloud Native Ecosystem </a>
<span> / </span>
<a href="/category/containers/">
Containers </a>
<span> / </span>
<a href="/category/microservices/">
Microservices </a>
</span>
</div>
<div id="tns-post-headline-title">
<h1 class="title">
Introduction to Cloud Native Computing </h1>
<div class="post-excerpt">
Discover the power of cloud native computing! Learn how to build scalable, resilient apps using containers, microservices and Kubernetes. Future-proof your skills. </div>
</div>
<div id="tns-post-headline-byline">
<span class="date">
Jun 19th, 2025 5:05am by </span>
<span class="author">
<a href="https://thenewstack.io/author/tns-staff/" title="Posts by TNS Staff" class="author url fn" rel="author">TNS Staff</a> </span>
</div>
</div>
<div id="tns-post-key-media">
<img
src="https://cdn.thenewstack.io/media/2025/03/9d9aabe3-intro-to-cloud-native-computing--1024x585.png"
alt="Featued image for: Introduction to Cloud Native Computing"
width="1024"
height="585"
>
</div>
<div id="tns-post-body">
<div class="row">
<div class="copy-column">
<div id="tns-post-body-content">
<div class="sponsored-post-disclosure">
<div class="tns-sponsored-post-disclosure">
</div>
</div>
<h2>What Is Cloud Native?</h2>
<p><a href="https://thenewstack.io/cloud-native/what-is-cloud-native-and-why-does-it-matter/" class="local-link">Cloud native computing</a> is a transformative approach in software development, where services are built and managed using container architectures. It&rsquo;s characterized by its<a href="https://thenewstack.io/containers/" class="local-link"> use of containers</a>, microservices, immutable infrastructure and declarative APIs. It represents a major shift from the monolithic, tightly-bound client-server architectures that enterprises ran their systems on previously.</p>
<p>Cloud native computing focuses on maximizing flexibility and development agility, enabling teams to create applications without the traditional constraints of server dependencies.</p>
<p><a href="https://thenewstack.io/introduction-to-containers/" class="local-link">Containers</a> &mdash; lightweight, portable, scalable, stand-alone, executable software packages that include everything an application needs to run &mdash;&nbsp;are the essential building blocks of cloud native.architectures.</p>
<h3>How Did Cloud Native Technologies Evolve?</h3>
<p>Before the introduction of the first commercially available cloud servers in the 2000s, virtual machines offered an abstraction from underlying servers, paving the way for hypervisors as platforms for hosted environments.</p>
<p>However, the advent of container-based architectures brought a fundamental change. Containers operate independently of the operating system, representing a move away from the virtualization of servers to a focus on application-level virtualization. This shift has led to more streamlined, efficient and flexible<a href="https://thenewstack.io/software-development/" class="local-link"> software development processes</a>, laying the foundation for the modern cloud native landscape.</p>
<p>The transition to <a class="wpil_keyword_link local-link" title="cloud native technologies" href="https://thenewstack.io/cloud-native/" data-wpil-keyword-link="linked" data-wpil-monitor-id="2462">cloud native technologies</a> has been driven by the deployment needs in dynamic environments, such as private, public or hybrid clouds.</p>
<p>As a snapshot of current cloud usage, consider this: More than half of enterprise, and small and midsize business workloads have been moved to public cloud, according to Flexera&rsquo;s &ldquo;<a href="https://info.flexera.com/CM-REPORT-State-of-the-Cloud-2025-Thanks?revisit" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">2025 State of the Cloud Report</a>,&rdquo; which surveyed 759 cloud decision-makers and professionals worldwide. The data also show significant variety in how organizations are mixing and matching private, public and hybrid cloud deployments.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-large wp-image-22792486" src="https://cdn.thenewstack.io/media/2025/06/6b262e10-cloud-deployment-2-1024x614.png" alt="Slide from Flexera state of cloud report, showing that 86% of survey participants use multiple clouds to deploy their applications." width="1024" height="614" /></p>
<h2>Principles of Cloud Native Architecture</h2>
<h3>Key Characteristics</h3>
<p><a href="https://thenewstack.io/cloud-native-architecture-one-stack-many-options/" class="local-link">Cloud native architecture</a> is defined by several key characteristics that distinguish it from traditional software architectures. These include:</p>
<ul>
<li aria-level="1"><strong>Microservices</strong>: Small, independently deployable services make up the application, allowing for agility and ease of updates.</li>
<li aria-level="1"><strong>Containerization</strong>: Use of containers to encapsulate an application and its dependencies, ensuring consistency across environments.</li>
<li aria-level="1"><strong>Dynamic management</strong>: Leveraging orchestration tools like <a href="https://kubernetes.io/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">Kubernetes</a> to manage containerized applications dynamically.</li>
<li aria-level="1"><strong>Scalability</strong>: The ability to scale resources up or down as needed, efficiently handling varying loads.</li>
<li aria-level="1"><strong>Resilience</strong>: Designed for fault tolerance and rapid recovery, ensuring high availability.</li>
</ul>
<h3>What Are the Benefits of Adopting Cloud Native Architecture?</h3>
<p>Adopting a cloud native architecture brings numerous benefits to organizations.</p>
<ul>
<li aria-level="1"><strong>Increased agility</strong>: Developers can build, make changes and deploy applications and features faster and more frequently, enabling quicker response to market changes and customer needs.</li>
<li aria-level="1"><strong>Enhanced scalability</strong>: Containers coupled with an orchestrator like Kubernetes make it easier for organizations to scale up to handle increased demand, without a corresponding increase in complexity or cost. (They can also easily scale down when demand decreases.)</li>
<li aria-level="1"><strong>Improved reliability</strong>: Distributed systems are more robust than monoliths, able to withstand failures and maintain functionality.</li>
<li aria-level="1"><strong>Flexibility and portability</strong>: Applications can run across various environments, including public, private and hybrid clouds.</li>
</ul>
<p>These principles and benefits collectively make cloud native architecture a highly effective approach for modern application development, catering to the needs of dynamic and scalable systems in today&rsquo;s digital landscape.</p>
<h3>What Are Cloud Native Applications?</h3>
<p><a href="https://thenewstack.io/what-cloud-native-apps-really-mean/" class="local-link">Cloud native applications</a> are designed to leverage the full potential of the elastic, dynamic infrastructure available in public cloud and enterprise data centers. These apps embody characteristics like modularity, scalability and resilience.</p>
<p>Typically, they are structured as a collection of microservices, each running in its container, allowing for independent scaling and deployment. They use cloud native services for enhanced performance, agility and efficiency.</p>
<h3>Cloud Native vs. Traditional Applications</h3>
<p>Several key differences separate cloud native applications from traditional ones.</p>
<ul>
<li aria-level="1"><strong>Architecture</strong>: Traditional applications often have a monolithic architecture, whereas cloud native applications, based on a microservices architecture, allow for more granular scalability and faster updates.</li>
<li aria-level="1"><strong>Deployment</strong>: Cloud native apps leverage automated<a href="https://thenewstack.io/ci-cd/" class="local-link"> CI/CD pipelines</a> for rapid and frequent deployment. Traditional applications usually have longer release cycles.</li>
<li aria-level="1"><strong>Scalability</strong>: Cloud native applications are designed to scale horizontally and handle varying loads efficiently, a feature not inherent in many traditional applications.</li>
<li aria-level="1"><strong>Resilience and fault tolerance</strong>: Cloud native apps are built to be resilient, with the ability to self-heal and maintain high availability, which may not be as pronounced in traditional applications.</li>
<li aria-level="1"><strong>Infrastructure independence</strong>: Cloud native applications can run on any cloud platform (public, private, hybrid) without significant changes, offering flexibility and portability.</li>
</ul>
<h2>How Are Cloud Native Applications Developed?</h2>
<h3>Process and Best Practices</h3>
<p>Developing cloud native applications involves specific processes and best practices that align with the dynamic and scalable nature of cloud computing. Here are some of the key things cloud native developers do when they build.</p>
<ul>
<li aria-level="1"><strong>Adopt a microservices architecture.</strong> Design applications as a suite of small, independently deployable services.</li>
<li aria-level="1"><strong>Embrace Agile and DevOps practices.</strong> Implement agile methodologies and DevOps practices, including <a href="https://thenewstack.io/ci-cd/" class="local-link">continuous integration and continuous delivery (CI/CD)</a>, to accelerate development and deployment.</li>
<li aria-level="1"><strong>Focus on automation. </strong>Automate as many processes as possible, from testing to deployment, to increase efficiency and reduce human error.</li>
<li aria-level="1"><strong>Implement scalable design patterns.</strong> Design for scalability from the outset, considering how the application will handle varying loads.</li>
<li aria-level="1"><strong>Prioritize security and compliance.</strong> Integrate security practices into the development process and ensure compliance with relevant standards and regulations.</li>
</ul>
<h3>Tools and Technologies for Development</h3>
<p>A range of tools and technologies are fundamental to cloud native application development.</p>
<ul>
<li aria-level="1"><strong>Containers and orchestration tools</strong>: Tools like <a href="https://www.docker.com/?utm_content=inline+mention" class="ext-link" target="_blank" rel="external " onclick="this.target=&#039;_blank&#039;;">Docker</a> for containerization and Kubernetes for orchestration are essential.</li>
<li aria-level="1"><strong>Source control and CI/CD tools</strong>: Utilize tools like git for source control &mdash;&nbsp;and to establish a &ldquo;single source of truth&rdquo; to keep track of changes. <a href="https://www.jenkins.io/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">Jenkins</a> or <a href="https://docs.travis-ci.com/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">Travis CI</a> are used to manage continuous integration and delivery pipelines.</li>
<li aria-level="1"><strong>Monitoring and logging tools</strong>: <a href="https://thenewstack.io/introduction-to-observability/" class="local-link">Observability</a> is complex in a distributed, cloud native system. In addition to older tools like Prometheus, for monitoring, and ELK Stack (Elasticsearch, Logstash, Kibana) for logging, newer tools are incorporating AI into their workflows.</li>
<li aria-level="1"><a href="https://thenewstack.io/cloud-services/" class="local-link"><strong>Cloud services and platform</strong>s</a>: Leverage cloud services and platforms such as <a href="https://aws.amazon.com/?utm_content=inline+mention" class="ext-link" target="_blank" rel="external " onclick="this.target=&#039;_blank&#039;;">Amazon Web Services (AWS)</a>, <a href="https://cloud.google.com/?utm_content=inline+mention" class="ext-link" target="_blank" rel="external " onclick="this.target=&#039;_blank&#039;;">Google Cloud</a> Platform or <a href="https://aka.ms/modelmondays?utm_content=inline+mention" class="ext-link" target="_blank" rel="external " onclick="this.target=&#039;_blank&#039;;">Microsoft</a> Azure for hosting and managing applications.</li>
<li aria-level="1"><strong><a href="https://thenewstack.io/infrastructure-as-code/" class="local-link">Infrastructure as Code (IaC)</a> tools</strong>: Use tools like <a href="https://docs.ansible.com/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">Ansible</a>, <a href="https://developer.hashicorp.com/terraform/docs" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">Terraform</a> or open source <a href="https://thenewstack.io/opentofu-joins-cncf-new-home-for-open-source-iac-project/" class="local-link">OpenTofu</a> to automate the provisioning of infrastructure.</li>
</ul>
<h2>How Cloud Providers Fit in Cloud Native Ecosystem</h2>
<h3>Choosing the Right Cloud Provider</h3>
<p>Selecting the appropriate cloud provider is a critical decision when planning your cloud native architecture and tooling. Here&rsquo;s what to consider.</p>
<ul>
<li aria-level="1"><strong>Service offerings</strong>: Assess if the provider offers the specific services and tools required for your cloud native applications, such as managed Kubernetes, serverless computing options, and a range of databases and storage solutions.</li>
<li aria-level="1"><strong>Scalability and performance</strong>: Ensure the provider can handle your scalability needs efficiently, without significant performance degradation.</li>
<li aria-level="1"><strong>Security and compliance</strong>: Evaluate the provider&rsquo;s security measures and compliance with industry standards relevant to your business.</li>
<li aria-level="1"><strong>Cost structure</strong>: Understand the pricing models and identify if they align with your budget and usage patterns.</li>
<li aria-level="1"><strong>Support and community</strong>: Consider the level of support provided and the vibrancy of the community around the provider&rsquo;s services, which can be invaluable for problem-solving and learning.</li>
</ul>
<h3>Integrating with Cloud Services</h3>
<p>Successful integration with cloud services is key to leveraging the full potential of the cloud native ecosystem&mdash;&nbsp;to get the agility, scalability and operational efficiency you (and your bosses) want.</p>
<p>Above all, you want to avoid &ldquo;vendor lock-in,&rdquo; a situation that occurs when you have invested heavily in tooling that the vendor stops supporting, or when that tooling doesn&rsquo;t integrate easily (or at all) with your preferred deployment environment.</p>
<p>Here are some steps you can take to make sure the cloud services you choose can integrate successfully with your workloads.</p>
<ul>
<li aria-level="1"><strong>Use managed services.</strong> Take advantage of managed services&mdash; like database, storage, compute &mdash;&nbsp; to reduce the operational overhead.</li>
<li aria-level="1"><a href="https://thenewstack.io/how-to-improve-cloud-native-api-management/" class="local-link"><strong>Implement cloud native APIs</strong></a><strong>.</strong> Use cloud native APIs for seamless integration and interaction with cloud services, ensuring that your applications can efficiently leverage these services.</li>
<li aria-level="1"><strong>Adopt a multicloud strategy.</strong> Where appropriate, design your applications to be cloud agnostic, allowing for flexibility and avoiding vendor lock-in.</li>
<li aria-level="1"><strong>Leverage cloud native security features.</strong> Use the advanced security features provided by cloud services for protecting applications and data.</li>
<li aria-level="1"><strong>Monitor and optimize cloud usage.</strong> Continuously monitor cloud resource usage and optimize configurations to ensure cost-effectiveness and high performance. (This practice is known as <a href="https://thenewstack.io/finops-what-is-it-and-why-should-developers-sign-on/" class="local-link">FinOps</a>.)</li>
</ul>
<h2>What Is the Cloud Native Computing Foundation?</h2>
<h3>Overview and Its Impact on the Cloud Native Landscape</h3>
<p>The <a href="https://cncf.io/?utm_content=inline+mention" class="ext-link" target="_blank" rel="external " onclick="this.target=&#039;_blank&#039;;">Cloud Native Computing Foundation (CNCF)</a> plays a pivotal role in shaping the <a href="https://landscape.cncf.io/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">cloud native landscape</a>. Many of the most crucial open source projects&nbsp;are hosted and supported there.</p>
<p>Established in 2015 as part of the Linux Foundation, the nonprofit CNCF acts as a steward of the cloud native ecosystem, promoting standards and sustainable growth across the industry. It provides a neutral ground for collaboration and innovation among developers, end users and vendors.</p>
<p>The CNCF&#8217;s impact on the cloud native landscape is profound. It fosters an open source, vendor-neutral environment, which has been instrumental in the widespread adoption and evolution of cloud native technologies.</p>
<p>By advocating for scalable architectures, such as microservices and containerization, and supporting major projects that enable these architectures, the CNCF has significantly contributed to the robustness and efficiency of cloud native solutions.</p>
<p>The foundation and its communities of technologists set standards and best practices that guide developers in building and managing cloud native software.</p>
<h3>Major Projects and Contributions</h3>
<p>The CNCF hosts and supports a range of influential projects that have become foundational to the cloud native ecosystem. Here&rsquo;s a sample of some of the most important.</p>
<ul>
<li aria-level="1"><strong>Kubernetes</strong>: Perhaps the most notable CNCF project,<a href="https://thenewstack.io/kubernetes/" class="local-link"> Kubernetes is an open source container orchestration system</a> that automates the deployment, scaling and management of containerized applications.</li>
<li aria-level="1"><a href="https://containerd.io/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;"><strong>Containerd</strong></a>: The core building block that manages the complete container life cycle of its host system, from image transfer and storage to container execution and supervision to low-level storage to network attachments and beyond</li>
<li aria-level="1"><a href="https://prometheus.io/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;"><strong>Prometheus</strong></a>: A powerful monitoring and alerting tool tailored for dynamic container environments.</li>
<li aria-level="1"><a href="https://www.envoyproxy.io/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;"><strong>Envoy</strong></a>: An edge and service proxy designed for cloud native applications, providing advanced load balancing and network-related functionalities.</li>
<li aria-level="1"><a href="https://www.fluentd.org/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;"><strong>Fluentd</strong></a>: A data collector for unified logging, which simplifies data collection and consumption for better observability in cloud native environments.</li>
</ul>
<h2>How Do Cloud Native and DevOps Work Together?</h2>
<h3>Integrating Cloud Native with DevOps Culture</h3>
<p>The integration of cloud native and<a href="https://thenewstack.io/best-practices-for-adopting-a-devops-culture/" class="local-link"> DevOps cultures</a> enhances the efficiency and agility of software development and operations. This integration is characterized by the following elements.</p>
<ul>
<li aria-level="1"><strong>Enhanced collaboration</strong>: Bringing together developers and operations teams, fostering a culture of shared responsibility and continuous feedback.</li>
<li aria-level="1"><strong>Automated workflows</strong>: Leveraging automation tools for building, testing and deploying applications, which is a key aspect of both DevOps and cloud native approaches.</li>
<li aria-level="1"><strong>Focus on continuous improvement</strong>: Both cloud native and DevOps prioritize ongoing, iterative development and operational enhancements to optimize performance and reliability. A &ldquo;feedback loop,&rdquo; in which usage data shapes how successive versions of a product are changed or improved, is vital to both cloud native and DevOps workflows.</li>
</ul>
<h3>Cloud Native and CI/CD</h3>
<p>Continuous integration and continuous delivery play a crucial role in the cloud native ecosystem, underpinning the rapid development and deployment cycle. By embracing these practices, organizations can ensure that the rapid and reliable delivery of applications becomes a sustainable norm.</p>
<p>To break it down, CI/CD means the following.</p>
<ul>
<li aria-level="1"><strong>Continuous integration (CI)</strong>: In a cloud native context, CI involves regularly integrating code changes into a shared repository, where automated builds and tests are run. This ensures quick detection and resolution of issues, facilitating a more reliable codebase.</li>
<li aria-level="1"><strong>Continuous delivery (CD)</strong>: Extending CI, CD automates the delivery of applications to selected infrastructure environments. In cloud native, this means deploying applications across distributed and dynamic cloud environments, often using container orchestration tools like Kubernetes.</li>
<li aria-level="1"><strong>Leveraging microservices and containers</strong>: CI/CD in cloud native is further enhanced by the use of microservices and containers, which allow for independent deployment of application components, reducing risks and increasing deployment frequency.</li>
</ul>
<h2>Microservices Architecture in Cloud Native</h2>
<h3>Importance of Microservices</h3>
<p><a href="https://thenewstack.io/microservices/" class="local-link">Microservices</a> architecture plays a fundamental role in cloud native development. This approach involves developing applications as a collection of small, independently deployable services, each running in its own environment. This type of architecture offers a lot of benefits, especially for enterprises and distributed systems. Here are some of the major ones.</p>
<ul>
<li aria-level="1"><strong>Increased agility</strong>: Microservices allow teams to develop, deploy and scale parts of an application independently, significantly speeding up these processes.</li>
<li aria-level="1"><strong>Resilience</strong>: By isolating services, issues in one microservice have minimal impact on others, enhancing the overall stability of the application.</li>
<li aria-level="1"><strong>Scalability</strong>: Microservices can be scaled independently, allowing for more efficient use of resources and better handling of varying loads.</li>
<li aria-level="1"><strong>Technological flexibility</strong>: Teams can choose the best technology stack for each microservice, rather than being locked into a single stack for the entire application.</li>
</ul>
<h3>Transitioning to Microservices</h3>
<p>Moving from a monolithic architecture to microservices can be challenging but offers substantial long-term benefits. Steps for a successful transition include the following.</p>
<ul>
<li aria-level="1"><strong>Assessing and planning</strong>: Evaluate existing applications to identify components that can be broken down into microservices. Plan the transition in phases, starting with less complex services.</li>
<li aria-level="1"><strong>Building a DevOps culture</strong>: Ensure that the development and operations teams are aligned and work collaboratively, as DevOps practices are crucial for managing microservices effectively.</li>
<li aria-level="1"><strong>Implementing CI/CD pipelines</strong>: Continuous integration and delivery pipelines are essential for managing the frequent updates and deployments characteristic of microservices.</li>
<li aria-level="1"><strong>Choosing the right tools</strong>: Select appropriate tools for containerization, orchestration, monitoring and other needs. Tools like Docker, Kubernetes and <a href="https://thenewstack.io/prometheus-at-10-whats-been-its-impact-on-observability/" class="local-link">Prometheus</a> are commonly used in microservices environments.</li>
<li aria-level="1"><strong>Ensuring robust security</strong>: With more endpoints to secure, implement rigorous security practices and tools to safeguard each microservice.</li>
</ul>
<h2>Managing Cloud Native Infrastructure</h2>
<h3>Challenges in Cloud Native Infrastructure Management</h3>
<p>Managing infrastructure in a cloud native environment can bring up a number of challenges.</p>
<ul>
<li aria-level="1"><strong>Complexity in orchestration</strong>: With numerous microservices running in containers, orchestrating these services can become complex, requiring advanced tools and skills.</li>
<li aria-level="1"><strong>Maintaining security and compliance</strong>: Ensuring security in a dynamic, distributed environment can be tricky, especially with varying compliance requirements across different jurisdictions.</li>
<li aria-level="1"><strong>Handling scalability</strong>: As demand scales up and down, cloud native infrastructure needs to manage the scaling of services in response, while also optimizing resource usage.</li>
<li aria-level="1"><strong>Observability</strong>: Collecting and analyzing logs and monitoring metrics across distributed systems require robust solutions for full visibility.</li>
<li aria-level="1"><strong>Integration with legacy systems</strong>: Cloud native systems often run alongside older technology, especially in larger organizations. Integrating cloud native infrastructure with existing traditional systems can be complex and requires a carefully planned approach.</li>
</ul>
<h3>Immutable Infrastructure and Its Importance</h3>
<p>Immutable infrastructure is a key concept in cloud native environments, revolving around the idea that once a component is deployed, it should not be modified but replaced with a new version if changes are needed. The reasons why immutable infra matters include the following.</p>
<ul>
<li aria-level="1"><strong>Consistency and reliability</strong>: Immutable infrastructure ensures consistency across environments, reducing the &#8220;works on my machine&#8221; problem and enhancing reliability.</li>
<li aria-level="1"><strong>Simplified deployment and scaling</strong>: Deploying new instances becomes more predictable and straightforward, as each instance is created from a common image or configuration.</li>
<li aria-level="1"><strong>Enhanced security</strong>: The immutable nature prevents runtime changes, reducing the surface for security vulnerabilities and making it easier to maintain security standards.</li>
<li aria-level="1"><strong>Facilitating continuous deployment</strong>: Immutable infrastructure aligns perfectly with continuous deployment practices, allowing for rapid and reliable updates.</li>
</ul>
<h2>Containerization and Orchestration</h2>
<h3>Containers in Cloud Native Architecture</h3>
<p>In cloud native architecture, containers offer flexibility. Other advantages of containers in this context include the following.</p>
<ul>
<li aria-level="1"><strong>Isolation and consistency</strong>: Containers isolate application dependencies, ensuring consistent operation across different environments.</li>
<li aria-level="1"><strong>Lightweight and efficiency</strong>: Unlike virtual machines, containers share the host system&#8217;s kernel, reducing overhead and boosting performance.</li>
<li aria-level="1"><strong>Rapid deployment and scalability</strong>: Containers can be quickly started, stopped and replicated, which is ideal for the scalable nature of cloud native applications.</li>
</ul>
<h3>Container Orchestration Tools and Practices</h3>
<p>By leveraging the following tools and practices, organizations can effectively manage their containerized cloud native applications, ensuring they are scalable, resilient, and maintainable.</p>
<ul>
<li><a href="https://thenewstack.io/kubernetes/" class="local-link"><strong>Kubernetes</strong></a>: The most widely used container orchestration platform, Kubernetes automates the deployment, scaling and management of containerized applications.</li>
<li><strong>Docker Swarm</strong>: A native clustering tool for Docker that turns a group of Docker hosts into a single virtual host.</li>
<li><strong>Apache Mesos and Marathon</strong>: Used for large-scale container orchestration, offering high availability and efficient resource isolation.</li>
</ul>
<p><strong>Best practices:</strong></p>
<ul>
<li><strong>Automated orchestration</strong>: Automatically manage container life cycles, scaling&nbsp; and health monitoring.</li>
<li><strong>Load balancing and networking</strong>: Efficiently distribute network traffic among containers to ensure high availability and performance.</li>
<li><strong>Security</strong>: Implement security practices at the container level, including using trusted images and managing access control.</li>
<li><strong>Monitoring and logging</strong>: Continuously monitor the performance and health of containers and orchestrate responses to system changes.</li>
</ul>
<h2>Cloud Native Security Practices</h2>
<h3>Security Considerations for Cloud Native Systems</h3>
<p>In cloud native systems, security requires a different approach compared to traditional architectures.</p>
<p>In a distributed system, <a href="https://thenewstack.io/why-the-castle-and-moat-approach-to-security-is-obsolete/" class="local-link">the old &ldquo;castle and moat&rdquo; model </a>of creating secure perimeter around vital systems, applications, APIs and data is not feasible. In a cloud native architecture, the &ldquo;castles&rdquo; are distributed across various environments &mdash; public and private cloud, on-prem &mdash;&nbsp;and they may pop up and disappear in seconds.</p>
<p>A <a class="wpil_keyword_link local-link" title="cloud native approach" href="https://thenewstack.io/cloud-native/10-key-attributes-of-cloud-native-applications/" data-wpil-keyword-link="linked" data-wpil-monitor-id="2463">cloud native approach</a> to security requires a multi-pronged strategy. It needs to encompass the following.</p>
<ul>
<li aria-level="1"><strong>Microservices security</strong>: Each microservice needs to be secured, as they independently expose endpoints.</li>
<li aria-level="1"><strong>Container security</strong>: Ensuring the security of containers involves managing container images, securing runtime environments and monitoring container activities.</li>
<li aria-level="1"><strong>Network security</strong>: Protecting the interservice communication within the cloud native infrastructure is crucial. This includes implementing secure APIs and service meshes.</li>
<li aria-level="1"><strong>Data security and compliance</strong>: Data stored and processed in cloud native applications must be encrypted and comply with relevant data protection regulations.</li>
<li aria-level="1"><strong>Identity and access management (IAM)</strong>: Robust IAM protocols are essential to control access to resources within cloud native environments.</li>
</ul>
<h3>Implementing DevSecOps in Cloud Native</h3>
<p><a href="https://thenewstack.io/what-is-devsecops/" class="local-link">DevSecOps</a> integrates security practices within the DevOps process, ensuring that security is a shared responsibility and is considered at every stage of the software development life cycle.</p>
<p><a href="https://thenewstack.io/devsecops-implementation-best-practices/" class="local-link">Implementing DevSecOps</a> in a cloud native context helps organizations maintain robust security postures while capitalizing on the agility and speed of cloud native development.</p>
<p>The tenets of DevSecOps include the following.</p>
<ul>
<li aria-level="1"><strong>A <a href="https://thenewstack.io/shifting-left-is-now-mainstream-for-developers-or-is-it/" class="local-link">&lsquo;shift-left&rsquo;</a> security approach</strong>: Integrating security early in the development process, rather than as an afterthought.</li>
<li aria-level="1"><strong>Automated security testing</strong>: Implementing automated security testing tools to continuously scan for vulnerabilities and compliance issues.</li>
<li aria-level="1"><strong>Container and orchestration security</strong>: Securing the orchestration platforms like <a href="https://roadmap.sh/kubernetes" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">Kubernetes</a> and ensuring the containers are deployed with secure configurations.</li>
<li aria-level="1"><strong>Continuous monitoring</strong>: Establishing real-time monitoring to detect and respond to security threats quickly.</li>
<li aria-level="1"><strong>Collaboration and training</strong>: Fostering a culture where security is everyone&#8217;s responsibility, and providing the necessary training to developers, operations teams, and security professionals.</li>
</ul>
<h2>Monitoring and Logging in Cloud Native Systems</h2>
<h3><a href="https://thenewstack.io/top-4-factors-for-cloud-native-observability-tool-selection/" class="local-link">Tools for Monitoring Cloud Native Applications</a></h3>
<p>Effective monitoring is crucial for maintaining the health and performance of cloud native applications. Key tools used in this space include:</p>
<ul>
<li aria-level="1"><strong>Prometheus</strong>: An open source monitoring solution that provides powerful data modeling, querying, and alerting capabilities, ideal for dynamic cloud native environments.</li>
<li aria-level="1"><strong>Grafana</strong>: Often used in conjunction with Prometheus, Grafana provides advanced visualization and analytics features for monitoring data.</li>
<li aria-level="1"><strong>Elastic Stack (ELK)</strong>: Comprising Elasticsearch, Logstash, and Kibana, this stack is used for logging, storing, searching, and visualizing log data in real time. (<a href="https://thenewstack.io/opensearch-whats-next-for-the-search-and-analytics-suite/" class="local-link">OpenSearch</a>, an open source fork of Elasticsearch that is now housed at the CNCF, is sometimes used in place of Elasticsearch.)</li>
<li aria-level="1"><strong>Datadog</strong>: A cloud-scale monitoring service that provides a comprehensive view across containers, servers and services in a cloud native stack.</li>
<li aria-level="1"><a href="http://newrelic.com/?utm_content=inline+mention" class="ext-link" target="_blank" rel="external " onclick="this.target=&#039;_blank&#039;;">New Relic</a>: Offers full-stack<a href="https://thenewstack.io/observability/" class="local-link"> observability</a>, combining metrics, traces and logs with an AI-driven analytics platform.</li>
</ul>
<h3>Best Practices for Effective Logging</h3>
<p>In cloud native systems, logging provides critical insights into application behavior and performance. Here are some best practices for effective logging.</p>
<ul>
<li aria-level="1"><strong>Centralized logging</strong>: Implement a centralized logging system that aggregates logs from all microservices, making it easier to analyze and correlate events.</li>
<li aria-level="1"><strong>Structured and consistent log format</strong>: Use structured logging formats like JSON to ensure consistency and ease of parsing and analysis.</li>
<li aria-level="1"><strong>Log levels and retention policies</strong>: Define appropriate log levels (e.g., debug, info, warning, error) and establish retention policies based on the importance and relevance of log data.</li>
<li aria-level="1"><strong>Real-time analysis and alerts</strong>: Set up real-time log analysis and alerting mechanisms to quickly detect and respond to issues.</li>
<li aria-level="1"><strong>Security and compliance</strong>: Ensure that logging practices comply with security standards and regulations, especially when handling sensitive data.</li>
</ul>
<p>By using these tools and best practices, teams can gain valuable insights into their cloud native applications, enabling proactive management, quick issue resolution, and continuous improvement of system performance and reliability.</p>
<h2>Scaling Cloud Native Applications</h2>
<h3>Strategies for Scalability</h3>
<p>Implementing strategies that easily scale ensures that applications can handle varying loads and perform optimally under different conditions. Key strategies include the following.</p>
<ul>
<li aria-level="1"><strong>Horizontal scaling</strong>: Increase or decrease the number of instances of an application component (e.g., microservices) to handle load changes.</li>
<li aria-level="1"><strong>Auto-scaling</strong>: Use cloud provider tools to automatically scale resources based on predefined metrics like CPU usage, memory demand or request rates.</li>
<li aria-level="1"><strong>Load balancing</strong>: Distribute traffic across multiple instances of a service to optimize resource usage and maximize availability.</li>
<li aria-level="1"><strong>Stateless design</strong>: Designing applications in a stateless manner where each instance can serve any request, improving the ability to scale.</li>
<li aria-level="1"><strong>Efficient resource management</strong>: Leverage container orchestration platforms like Kubernetes to manage resource allocation dynamically.</li>
</ul>
<h3>Handling Dynamic Environments</h3>
<p>Cloud native applications often operate in dynamic environments that are subject to rapid changes. By adopting the following strategies and practices, cloud native applications can effectively scale in response to user demands and environmental changes, ensuring high performance and user satisfaction.</p>
<ul>
<li aria-level="1"><strong>Responsive deployment strategies</strong>: Implement deployment strategies such as rolling updates, blue/green deployments, or canary releases, which allow for testing new versions without disrupting the current system.</li>
<li aria-level="1"><a href="https://thenewstack.io/monitoring-and-observability-whats-the-difference-and-why-does-it-matter/" class="local-link"><strong>Observability</strong></a>: Continuously monitor application performance and health to quickly identify and respond to issues that may arise due to scaling or environmental changes.</li>
<li aria-level="1"><a href="https://thenewstack.io/infrastructure-as-code-the-ultimate-guide/" class="local-link"><strong>Infrastructure as Code (IaC)</strong></a>: Manage infrastructure through code to quickly replicate, reconfigure or adjust environments in response to changing requirements.</li>
<li aria-level="1"><strong>Service mesh implementation</strong>: Adopt a service mesh like <a href="https://thenewstack.io/istio-1-23-drops-the-sidecars-for-a-simpler-ambient-mesh/" class="local-link">Istio</a> or <a href="https://thenewstack.io/linkerd-2-18-windows-support-and-battlescar-removal/" class="local-link">Linkerd</a> to manage communication and control between services, providing additional capabilities like traffic management and service discovery.</li>
</ul>
<h2>Hybrid and Multicloud Strategies</h2>
<h3>Advantages of Hybrid and Multicloud Approaches</h3>
<p><a href="https://thenewstack.io/what-to-consider-when-choosing-between-hybrid-and-multicloud/" class="local-link">Hybrid and multicloud strategies</a> are increasingly popular in the cloud native ecosystem, offering several compelling advantages.</p>
<ul>
<li aria-level="1"><strong>Flexibility and risk mitigation</strong>: By distributing workloads across multiple cloud environments (public, private or hybrid), organizations can optimize their cloud strategies based on specific needs and avoid vendor lock-in.</li>
<li aria-level="1"><strong>Improved disaster recovery</strong>: With data and applications spread out across multiple cloud environments, it&rsquo;s easier to recover from a disaster, because risk is distributed geographically.</li>
<li aria-level="1"><strong>Optimized costs</strong>: Organizations can leverage different pricing models of various cloud providers, to cut themselves better deals.</li>
<li aria-level="1"><strong>Compliance and data sovereignty</strong>: These strategies can address regulatory compliance and data sovereignty issues by keeping sensitive data in a specific geographical location.</li>
<li aria-level="1"><strong>Customized solutions</strong>: Different cloud providers offer unique services and capabilities, allowing businesses to tailor their cloud architecture to their specific requirements.</li>
</ul>
<h3>Managing Complexity Across Cloud Environments</h3>
<p>By strategically adopting hybrid and multicloud approaches and effectively managing their complexities, organizations can significantly enhance their agility, resilience, and operational efficiency in the cloud native landscape.</p>
<p>While hybrid and multicloud strategies offer benefits, they also introduce complexity in management. Managing those strategies effectively can significantly enhance an organization&rsquo;s agility, resilience and operational efficiency. Effective management involves the following.</p>
<ul>
<li aria-level="1"><strong>Unified management tools</strong>: Use tools that provide a &ldquo;single pane of glass&rdquo; for managing resources across different cloud environments.</li>
<li aria-level="1"><strong>Consistent security policies</strong>: Implement uniform security policies across all cloud environments to ensure consistent protection and compliance.</li>
<li aria-level="1"><strong>Workload portability</strong>: Design applications and data workflows that are portable across different clouds without significant changes.</li>
<li aria-level="1"><strong>Network strategy</strong>: Establish a robust network strategy that ensures seamless connectivity and data transfer between different cloud environments.</li>
<li aria-level="1"><strong>Training and expertise</strong>: Invest in training and developing expertise within the organization to manage and leverage multicloud environments effectively.</li>
</ul>
<p>That last one is worth pausing over. For years, hiring managers have complained that not enough job candidates have cloud native computing skills. A <a href="https://my.idc.com/getdoc.jsp?containerId=prUS52128824" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">2024 survey by the International Data Corporation (IDC)</a> of North American IT leaders found nearly two-thirds of study participants cited a lack of skilled workers with causing their organizations to miss out on revenue-making opportunities. <a href="https://thenewstack.io/talent-shortages-shouldnt-kill-your-cloud-native-journey/" class="local-link">A report by SpiceWorks reported a similar finding</a>.</p>
<p>By 2026, the IDC report suggested, more than 90% of organizations will suffer from a shortage of IT skills.</p>
<h2>Future Trends in Cloud Native Technologies</h2>
<h3>Emerging Trends and Predictions</h3>
<p>The cloud native landscape is continually evolving, driven by technological advancements and changing business needs.</p>
<p>The emergence of generative AI as a force in industry, especially among software developers, has continued momentum that began in late 2022 with the <a href="https://thenewstack.io/just-out-of-the-box-chatgpt-causing-waves-of-talk-concern/" class="local-link">introduction of OpenAI&rsquo;s ChatGPT-3</a> <a href="https://thenewstack.io/what-is-a-large-language-model/" class="local-link">large language model</a>. Since then, the world has seen AI and machine learning increasingly integrated into cloud native technologies to enhance automation, predictive analytics and intelligent decision-making.</p>
<p>The building of cloud native apps itself has been reimagined with the introduction of coding assistants and chatbots that enable &ldquo;<a href="https://thenewstack.io/vibe-coding-where-everyone-can-speak-computer-programming/" class="local-link">vibe coding</a>.&rdquo; And <a href="https://thenewstack.io/ai-agents/" class="local-link">AI agents</a>, designed to perform and automate specific tasks, have emerged as the next wave in AI innovation</p>
<p>Other key emerging trends and predictions include the following:</p>
<ul>
<li aria-level="1"><a href="https://thenewstack.io/serverless/" class="local-link"><strong>Serverless computing</strong></a>: The rise of serverless architectures is expected to continue, offering greater scalability and operational efficiency by abstracting away the underlying infrastructure management.</li>
<li aria-level="1"><strong>Service mesh advancements</strong>: Continued development of <a href="https://thenewstack.io/introduction-to-service-mesh/" class="local-link">service mesh technologies</a> is likely to simplify service-to-service communication in complex cloud native environments. The latest innovations include <a href="https://thenewstack.io/ambient-mesh-can-sidecar-less-istio-make-applications-faster/" class="local-link">&ldquo;ambient mesh,&rdquo;</a> an evolution of Istio that doesn&rsquo;t require sidecars.</li>
<li aria-level="1"><a href="https://thenewstack.io/edge-computing/" class="local-link"><strong>Edge computing</strong></a>: Growth in edge computing to process data closer to the source, reducing latency and bandwidth use, is particularly important for Internet of Things (IoT) and real-time data processing applications.</li>
<li aria-level="1"><strong>Increased focus on security</strong>: As cloud native applications become more prevalent, there will be a heightened focus on security practices, particularly in managing distributed systems and securing API endpoints. The rapid adoption of AI-enhanced tools in the cloud native ecosystem also raises the stakes &mdash;&nbsp;malicious actors can use AI, too.</li>
</ul>
<h3>Staying Ahead in the Cloud Native World</h3>
<p>To remain competitive and leverage the full benefits of cloud native technologies, organizations should follow a few guidelines.</p>
<ul>
<li aria-level="1"><strong>Embrace continuous learning and adaptation.</strong> Stay informed about the latest trends and developments in the cloud native domain. Regular training and upskilling of teams are essential.</li>
<li aria-level="1"><strong>Experiment and innovate.</strong> Encourage experimentation with new tools and approaches, fostering a culture of innovation. Listen to user feedback and iterate accordingly.</li>
<li aria-level="1"><strong>Collaborate and get involved in the cloud native community.</strong> Engage with the community through forums, conferences&nbsp; and open source projects. Collaboration and knowledge sharing are key to navigating the rapidly changing landscape.</li>
<li aria-level="1"><strong>Plan and invest strategically.</strong> Invest strategically in technologies and practices that align with long-term business goals and the evolving cloud native ecosystem.</li>
<li aria-level="1"><strong>Go all in on automation.</strong> Leverage automation and AI to optimize processes, improve efficiency and drive data-driven decisions.</li>
</ul>
<h2>Building a Cloud Native Culture</h2>
<h3>Organizational Changes for Cloud Native Adoption</h3>
<p>Adopting a cloud native approach often requires significant organizational changes &mdash;&nbsp;and that can be much harder than it sounds. These changes are not just technical but also cultural and operational.</p>
<p>Developer and engineers will need to adjust to new processes and a faster development cycle. Some people will resist or even fear change.</p>
<p>The goal is to foster a culture of innovation. Get people excited about experimenting with new technologies and processes &mdash;&nbsp;and persuade them to embrace failure as a learning opportunity.</p>
<p>Some of the ways to manage this change &mdash;&nbsp;and build a cloud native culture &mdash;&nbsp;include the following.</p>
<ul>
<li aria-level="1"><strong>Enlist leadership for support and vision.</strong> Get the C suite and engineering managers on board before you begin. Ensure strong leadership support, providing clear vision and direction to navigate the transformation effectively.</li>
<li aria-level="1"><strong>Break down silos between departments.</strong> Collaborative, cross-functional teams are the heart of DevOps, and also of cloud native. Innovation thrives in environments where development, operations, and other teams work closely together.</li>
<li aria-level="1"><strong>Adopt Agile methodologies.</strong> In a cloud native organization, &ldquo;waterfall&rdquo; development &mdash; long dev cycles where releases are infrequent and nothing is released until it&rsquo;s &ldquo;perfect&rdquo; &mdash; are the enemy of productivity. Instead, implement Agile methodologies that support the rapid iteration and flexibility essential in cloud native development.</li>
<li aria-level="1"><strong>Emphasize continuous improvement.</strong> In keeping with the previous bullet point, cultivate an environment where continuous improvement is a core value, encouraging ongoing enhancements in processes and technologies.</li>
<li aria-level="1"><strong>Find your champions.</strong> Early adopters are scattered throughout any engineering organization. Find the people who are most eager to roll up their sleeves and try new things. Once the trendsetters in your organization have started using cloud native technologies, other will follow. Encourage those champions to teach their peers.</li>
</ul>
<h3>Training and Skill Development</h3>
<p>Investing in training and skill development is crucial for successful cloud native adoption. Here are some tips to follow.</p>
<ul>
<li aria-level="1"><strong>Upskill existing staff.</strong> Provide training and resources to help current employees develop the skills needed for cloud native technologies and practices. Not only will this increase your in-house skills, but it can also help with retention &mdash;&nbsp;people will feel that the organization is invested in their careers and futures.</li>
<li aria-level="1"><strong>Hire for cloud native expertise</strong>. When necessary, bring in new talent with specific expertise in areas like Kubernetes, microservices, and DevOps.</li>
<li aria-level="1"><strong>Provide continuous learning opportunities.</strong> Create opportunities for ongoing learning, including workshops, conferences and online courses. Encourage the sharing of knowledge within the organization (think lunch-and-learn sessions).</li>
<li aria-level="1"><strong>Create learning paths.</strong> Develop clear learning paths for different roles within the organization, ensuring that team members understand their part in the cloud native journey.</li>
<li aria-level="1"><strong>Plug into the cloud native community.</strong> Encourage participation in external cloud native communities and forums. This not only aids learning but also keeps the team updated on the latest trends and best practices.</li>
</ul>
<h2>How to Learn More About Cloud Native</h2>
<h3>Key Resources</h3>
<p>For those looking to deepen their understanding of cloud native technologies, there are numerous resources available:</p>
<ul>
<li aria-level="1"><a href="https://landscape.cncf.io/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;"><strong>The CNCF Landscape</strong></a>: An extensive catalog of CNCF cloud native projects and tools.</li>
<li aria-level="1"><a href="http://kubernetes.io" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;"><strong>Kubernetes.io</strong></a>: The official Kubernetes documentation, offering comprehensive guides and tutorials.</li>
<li aria-level="1"><a href="https://www.manning.com/books/cloud-native-patterns" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;"><strong>&ldquo;Cloud Native Patterns&rdquo;</strong></a>: A book by Cornelia Davis, published by Manning, that provides valuable patterns and practices for developing cloud native applications.</li>
<li aria-level="1"><a href="https://www.oreilly.com/library/view/cloud-native-transformation/9781492048893/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;"><strong>&#8220;Cloud Native Transformation: Practical Patterns for Innovation&#8221;</strong></a>: A book by Pini Reznik, Jamie Dobson and <a href="https://thenewstack.io/author/michelle_gienow/" class="local-link">Michelle Gienow</a>, published by O&#8217;Reilly, which provides patterns and best practices for moving an organization to cloud native technology and culture.</li>
<li aria-level="1"><a href="https://roadmap.sh/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;"><strong>Roadmap</strong></a>: A website that offers step-wise guidance on learning cloud native and general development skills. (Disclosure: Roadmap and The New Stack are both owned by Insight Media Partners.)</li>
<li aria-level="1"><strong>Online lessons</strong>: Cloud native courses and webinars are available from a number of sources online, from introductory to advanced levels, including the <a href="https://www.cncf.io/online-programs/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">CNCF</a> and <a href="https://www.udemy.com/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">Udemy</a>.</li>
</ul>
<h3>Community and Forums for Cloud Native Professionals</h3>
<p>Engaging with the cloud native community is essential for staying current and connected. Key forums and communities include the following.</p>
<ul>
<li aria-level="1"><strong><a href="https://communityinviter.com/apps/cloud-native/cncf" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">CNCF Slack</a> channels</strong>: A platform for real-time communication and discussions on various cloud native topics.</li>
<li aria-level="1"><a href="https://stackoverflow.com/questions" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;"><strong>Stack Overflow</strong></a>: A vital resource for finding solutions to specific technical challenges.</li>
<li aria-level="1"><a href="https://github.com/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;"><strong>GitHub</strong></a>: Explore and contribute to open source cloud native <a href="https://www.cncf.io/projects/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">projects hosted by the CNCF</a> on GitHub.</li>
<li aria-level="1"><strong>Meetup groups</strong>: Join local and virtual Meetup groups focusing on cloud native technologies.</li>
<li aria-level="1"><strong>Cloud native conferences</strong>: Attend conferences like <a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">KubeCon + CloudNativeCon</a> to learn from industry experts and network with peers.</li>
</ul>
<h3>Staying Informed with The New Stack</h3>
<p>At <a href="https://thenewstack.io" class="local-link">TheNewStack.io</a>, we are dedicated to keeping our readers informed about the latest and most significant developments in cloud native technologies and DevOps practices. We strive to provide:</p>
<p>We invite our readers to regularly visit The New Stack for the latest insights, trends and in-depth analysis on cloud native technologies and<a href="https://thenewstack.io/devops/" class="local-link"> DevOps practices</a>. Our commitment is to deliver content that not only informs but also inspires our readers to excel in their cloud native journey.</p>
<div
class="tns-trending-stories-block inline"
data-context="inline"
>
<div class="section-heading">
TRENDING STORIES </div>
<div
class="tns-trending-stories-list tns-trending-stories-list-inline tns-trending-stories-list-6a848526b64b6"
data-uuid="6a848526b64b6"
data-context="inline"
></div>
</div>
<script>
$(document).ready(function() {
var $container = $('.tns-trending-stories-list-6a848526b64b6');
var context = $container.data('context');
$container.load('/no-cache/trending-stories/', {
limit : '5',
category_slug : '',
postID : '22780745',
context : 'inline'
}, function(result) {
if (context === 'frontpage') {
$container.find('.trending-story-link').addClass('frontpage-link');
}
$('body').off('click.trending_story');
$('body').on('click.trending_story', '.trending-story-link', function($event) {
var title = $(this).attr('aria-label');
var url = $(this).attr('href');
url = url.replace('https://thenewstack.io', '');
var context = $(this).data('context');
var categories = $(this).data('categories');
var payload = {
'event' : 'trending_story_click',
'post_title' : title,
'url' : url,
'context' : context
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
});
</script>
<script>
$(document).ready(function() {
var target_p = parseInt('7');
var trending_stories_block = $('.tns-trending-stories-block.inline');
$('#tns-post-body-content > p:eq(' + (target_p - 1) + ')').after(trending_stories_block);
});
</script>
<!-- Inject YouTube Subscribe Block -->
<template class="youtube-subscribe-block-template">
<a
class="row youtube-subscribe-block"
href="https://youtube.com/thenewstack?sub_confirmation=1"
target="_blank"
>
<div class="col col-80 copy">
<div class="heading">
YOUTUBE.COM/THENEWSTACK
</div>
<div class="cta">
Tech moves fast, don't miss an episode. Subscribe to our YouTube
channel to stream all our podcasts, interviews, demos, and more.
</div>
</div>
<div class="col col-20 button">
<button class="youtube-subscribe-button">
SUBSCRIBE
</button>
</div>
</a>
</template>
<script>
$(document).ready(function() {
var youtube_subscribe_template = $('.youtube-subscribe-block-template').html();
$(youtube_subscribe_template).insertAfter('.youtube-embed-wrapper');
});
</script>
<div class="tns-logo-slug">
<svg width="68px" height="31px" viewBox="0 0 68 31" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Group</title>
<desc>Created with Sketch.</desc>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Group">
<path d="M24.002,29.619 L29.77,29.619 L29.77,15.808 C29.77,15.038 29.622,11.265 29.59,10.414 L29.77,10.414 C31.424,14.019 31.473,14.147 32.168,15.322 L39.65,29.618 L44.845,29.618 L44.845,0 L39.075,0 L39.075,11.064 C39.075,12.197 39.075,12.44 39.182,14.472 L39.325,17.468 L39.151,17.468 C39.034,17.267 38.596,16.173 38.467,15.929 C38.164,15.323 37.725,14.512 37.373,13.905 L30.031,0 L24,0 L24,29.619 L24.002,29.619 Z" id="Path-Copy" fill="#FF3287"></path>
<path d="M56.948,0 C50.745,0 47.606,3.43 47.606,8.296 C47.606,14.114 51.036,15.404 55.518,17.132 C60.438,18.853 61.782,19.332 61.782,21.539 C61.782,24.225 58.969,24.867 57.401,24.867 C54.579,24.867 52.493,23.342 51.536,20.858 L47,24.185 C49.43,28.937 52.145,30.185 57.713,30.185 C59.364,30.185 62.059,29.74 63.727,28.694 C67.779,26.156 67.779,22.22 67.779,20.898 C67.779,18.129 66.531,16.207 66.178,15.726 C65.049,14.121 63.032,12.918 61.25,12.278 L57.084,10.914 C55.073,10.267 52.928,10.105 52.928,8.019 C52.928,7.707 53.008,5.528 56.288,5.319 L61.465,5.319 L61.465,0 C61.465,0 57.342,0 56.948,0 Z" id="Path-Copy-2" fill="#00AFF4"></path>
<polygon id="Path" fill="#00AFF4" points="5.32907052e-15 1.77635684e-15 5.32907052e-15 5.319 7.572 5.319 7.572 29.564 14.132 29.564 14.132 5.319 21.544 5.319 21.544 1.77635684e-15"></polygon>
</g>
</g>
</svg> </div>
</div>
</div>
<div class="sidebar-column">
<div id="tns-post-body-sidebar">
<div class="native-sidebar-ad-unit-container">
<div class="ad-container native-sidebar" id="div-gpt-ad-native-sidebar-1">
<script>
googletag.cmd.push(function() {
googletag.display("div-gpt-ad-native-sidebar-1");
});
</script>
</div>
</div>
<div class="tns-sponsored-post-disclosure">
</div>
<div id="tns-post-body-sidebar-share">
<div class="tns-share">
<div class="section-heading">
SHARE THIS STORY </div>
<div class="share-media">
<a
href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fthenewstack.io%2Fintroduction-to-cloud-native-computing%2F&text=Introduction+to+Cloud+Native+Computing: &via=thenewstack&related=thenewstack"
class="share-media-icon share-media-icon-twitter"
data-platform="twitter"
target="_blank"
>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" width="24px" height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve" class="fill">
<path d="M14.095479,10.316482L22.286354,1h-1.940718l-7.115352,8.087682L7.551414,1H1l8.589488,12.231093L1,23h1.940717 l7.509372-8.542861L16.448587,23H23L14.095479,10.316482z M11.436522,13.338465l-0.871624-1.218704l-6.924311-9.68815h2.981339 l5.58978,7.82155l0.867949,1.218704l7.26506,10.166271h-2.981339L11.436522,13.338465z"/>
</svg>
</a>
<a href="https://news.ycombinator.com/submitlink?t=Introduction to Cloud Native Computing&u=https%3A%2F%2Fthenewstack.io%2Fintroduction-to-cloud-native-computing%2F" class="share-media-icon share-media-icon-hackernews" data-platform="hackernews" target="_blank">
<svg viewBox="0 0 42 42" class="fill">
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="hackernews" transform="translate(-3.000000, -3.000000)">
<polygon id="Path" points="0 48 0 0 48 0 48 48"></polygon>
<path d="M3.84009302,3.84009302 L3.84009302,44.160093 L44.160093,44.160093 L44.160093,3.84009302 L3.84009302,3.84009302 Z M42.240093,42.240093 L5.76009302,42.240093 L5.76009302,5.76009302 L42.240093,5.76009302 L42.240093,42.240093 Z M40.320093,7.68009302 L7.68009302,7.68009302 L7.68009302,40.320093 L40.320093,40.320093 L40.320093,7.68009302 Z M25.920093,26.880093 L25.920093,34.560093 L22.080093,34.560093 L22.080093,26.880093 L15.360093,14.400093 L18.412893,14.400093 L24.000093,24.182493 L29.587293,14.400093 L32.640093,14.400093 L25.920093,26.880093 Z" id="Shape" fill="#000000" fill-rule="nonzero"></path>
</g>
</g>
</svg>
</a>
<a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fthenewstack.io%2Fintroduction-to-cloud-native-computing%2F" class="share-media-icon share-media-icon-linkedin" data-platform="linkedin" target="_blank">
<svg viewBox="0 0 16.927 16.689" class="fill">
<path d="M3.833,1.809A1.8,1.8,0,0,1,1.88,3.619,1.783,1.783,0,0,1,0,1.809,1.8,1.8,0,0,1,1.928,0a1.789,1.789,0,0,1,1.9,1.809M.1,5.047H3.714V16.689H.1Z" transform="translate(0 0)"/>
<path d="M28.535,27.5c0-1.452-.047-2.666-.095-3.714h3.142l.167,1.619h.071a4.18,4.18,0,0,1,3.6-1.881c2.381,0,4.166,1.6,4.166,5.024V35.43H35.963V28.978c0-1.5-.524-2.523-1.833-2.523a1.987,1.987,0,0,0-1.857,1.357,2.6,2.6,0,0,0-.119.9V35.43H28.535Z" transform="translate(-22.655 -18.741)"/>
<svg>
</a>
<a href="https://reddit.com/submit?url=https%3A%2F%2Fthenewstack.io%2Fintroduction-to-cloud-native-computing%2F&title=Introduction+to+Cloud+Native+Computing" class="share-media-icon share-media-icon-reddit" data-platform="reddit" target="_blank">
<svg viewBox="0 0 24 24" class="fill">
<path d="M14.238 15.348c.085.084.085.221 0 .306-.465.462-1.194.687-2.231.687l-.008-.002-.008.002c-1.036 0-1.766-.225-2.231-.688-.085-.084-.085-.221 0-.305.084-.084.222-.084.307 0 .379.377 1.008.561 1.924.561l.008.002.008-.002c.915 0 1.544-.184 1.924-.561.085-.084.223-.084.307 0zm-3.44-2.418c0-.507-.414-.919-.922-.919-.509 0-.923.412-.923.919 0 .506.414.918.923.918.508.001.922-.411.922-.918zm13.202-.93c0 6.627-5.373 12-12 12s-12-5.373-12-12 5.373-12 12-12 12 5.373 12 12zm-5-.129c0-.851-.695-1.543-1.55-1.543-.417 0-.795.167-1.074.435-1.056-.695-2.485-1.137-4.066-1.194l.865-2.724 2.343.549-.003.034c0 .696.569 1.262 1.268 1.262.699 0 1.267-.566 1.267-1.262s-.568-1.262-1.267-1.262c-.537 0-.994.335-1.179.804l-2.525-.592c-.11-.027-.223.037-.257.145l-.965 3.038c-1.656.02-3.155.466-4.258 1.181-.277-.255-.644-.415-1.05-.415-.854.001-1.549.693-1.549 1.544 0 .566.311 1.056.768 1.325-.03.164-.05.331-.05.5 0 2.281 2.805 4.137 6.253 4.137s6.253-1.856 6.253-4.137c0-.16-.017-.317-.044-.472.486-.261.82-.766.82-1.353zm-4.872.141c-.509 0-.922.412-.922.919 0 .506.414.918.922.918s.922-.412.922-.918c0-.507-.413-.919-.922-.919z"/>
</svg>
</a>
<a href="https://www.facebook.com/sharer/sharer.php?u=https://thenewstack.io/introduction-to-cloud-native-computing/" class="share-media-icon share-media-icon-facebook" data-platform="facebook" target="_blank">
<svg viewBox="0 0 17.492 17.492" class="fill">
<path d="M15.306,0H2.187A2.193,2.193,0,0,0,0,2.187V15.306a2.193,2.193,0,0,0,2.187,2.187H8.822V11.22H6.727V8.488H8.822V7.119a3.621,3.621,0,0,1,3.547-3.763H14.3V6.441H12.572c-.452,0-.585.26-.585.618V8.488H14.3V11.22H11.987v6.272h3.318a2.193,2.193,0,0,0,2.187-2.187V2.187A2.193,2.193,0,0,0,15.306,0"/>
</svg>
</a>
<!--
<a href="https://www.facebook.com/sharer/sharer.php?u=https://thenewstack.io/introduction-to-cloud-native-computing/" class="share-media-icon share-media-icon-instagram" data-platform="instagram" target="_blank">
<svg viewBox="0 0 17.839 17.84" class="fill">
<path d="M8.92,1.607c2.382,0,2.664.009,3.6.052a4.937,4.937,0,0,1,1.656.307,2.763,2.763,0,0,1,1.026.667,2.763,2.763,0,0,1,.667,1.026,4.938,4.938,0,0,1,.307,1.656c.043.941.052,1.223.052,3.6s-.009,2.664-.052,3.6a4.937,4.937,0,0,1-.307,1.656,2.955,2.955,0,0,1-1.693,1.693,4.937,4.937,0,0,1-1.656.307c-.941.043-1.223.052-3.6.052s-2.664-.009-3.6-.052a4.937,4.937,0,0,1-1.656-.307,2.763,2.763,0,0,1-1.026-.667,2.763,2.763,0,0,1-.667-1.026,4.937,4.937,0,0,1-.307-1.656c-.043-.941-.052-1.223-.052-3.6s.009-2.664.052-3.6a4.938,4.938,0,0,1,.307-1.656,2.763,2.763,0,0,1,.667-1.026,2.763,2.763,0,0,1,1.026-.667,4.937,4.937,0,0,1,1.656-.307c.941-.043,1.223-.052,3.6-.052M8.92,0C6.5,0,6.193.01,5.242.054A6.547,6.547,0,0,0,3.077.468,4.376,4.376,0,0,0,1.5,1.5,4.373,4.373,0,0,0,.468,3.077,6.547,6.547,0,0,0,.054,5.242C.01,6.194,0,6.5,0,8.92S.01,11.646.054,12.6a6.547,6.547,0,0,0,.415,2.165A4.373,4.373,0,0,0,1.5,16.343a4.373,4.373,0,0,0,1.58,1.029,6.547,6.547,0,0,0,2.165.415c.951.044,1.255.054,3.678.054s2.726-.01,3.678-.054a6.547,6.547,0,0,0,2.165-.415,4.56,4.56,0,0,0,2.609-2.609,6.547,6.547,0,0,0,.415-2.165c.044-.951.054-1.255.054-3.678s-.01-2.726-.054-3.678a6.547,6.547,0,0,0-.415-2.165A4.373,4.373,0,0,0,16.343,1.5,4.376,4.376,0,0,0,14.763.468,6.547,6.547,0,0,0,12.6.054C11.646.01,11.342,0,8.92,0" transform="translate(0 0)"/>
<path d="M25.914,21.334a4.581,4.581,0,1,0,4.58,4.581,4.581,4.581,0,0,0-4.58-4.581m0,7.554a2.973,2.973,0,1,1,2.973-2.973,2.973,2.973,0,0,1-2.973,2.973" transform="translate(-16.995 -16.995)"/>
<path d="M64.142,16.253a1.07,1.07,0,1,1-1.07-1.07,1.071,1.071,0,0,1,1.07,1.07" transform="translate(-49.39 -12.095)"/>
</svg>
</a>
<a href="#" class="share-media-icon share-post-copy" data-platform="copy-url">
<svg viewBox="0 0 18.528 18.528" class="stroke">
<path d="M4.517,4.517V.75H17.778V14.011H14.011" stroke-miterlimit="10" stroke-width="1.5"/>
<path d="M4.517,4.517h9.494v9.494" stroke-miterlimit="10" stroke-width="1.5"/>
<path d="M4.517,4.517H.75V17.778H14.011V14.011" stroke-miterlimit="10" stroke-width="1.5"/>
</svg>
</a>
-->
</div>
</div>
<script>
$(document).ready(function() {
$('body').off('click.share');
$('body').on('click.share', '.share-media-icon', function() {
var platform = $(this).data('platform');
var url = $(this).attr('href');
var sponsor = '';
var categories = 'cloud-native,containers,microservices';
var payload = {
'event' : 'share',
'platform' : platform,
'url' : url,
'sponsor' : sponsor
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
</script>
</div>
<div class="tns-post-body-sidebar-trending-stories">
<div
class="tns-trending-stories-block sidebar"
data-context="sidebar"
>
<div class="section-heading">
TRENDING STORIES </div>
<div
class="tns-trending-stories-list tns-trending-stories-list-sidebar tns-trending-stories-list-6a848526b7202"
data-uuid="6a848526b7202"
data-context="sidebar"
></div>
</div>
<script>
$(document).ready(function() {
var $container = $('.tns-trending-stories-list-6a848526b7202');
var context = $container.data('context');
$container.load('/no-cache/trending-stories/', {
limit : '5',
category_slug : '',
postID : '22780745',
context : 'sidebar'
}, function(result) {
if (context === 'frontpage') {
$container.find('.trending-story-link').addClass('frontpage-link');
}
$('body').off('click.trending_story');
$('body').on('click.trending_story', '.trending-story-link', function($event) {
var title = $(this).attr('aria-label');
var url = $(this).attr('href');
url = url.replace('https://thenewstack.io', '');
var context = $(this).data('context');
var categories = $(this).data('categories');
var payload = {
'event' : 'trending_story_click',
'post_title' : title,
'url' : url,
'context' : context
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
});
</script>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$(window).scroll(function() {
var headerHeight = $('#tns-header-nav-topics').outerHeight();
$('#tns-post-body-sidebar').css('top', headerHeight + 30 + 'px');
});
});
</script>
</div>
</div>
</div>
</div>
<div class="content-column">
<div class="tns-insight-portcos-disclosure">
<div class="content">
<div class="tns-sponsor-mention-disclosure">
<div class="sponsor-disclosure">
Amazon Web Services and the Cloud Native Computing Foundation are sponsors of The New Stack.
</div>
</div>
<div class="disclosure">TNS owner Insight Partners is an investor in: OpenAI, Udemy, Docker, Real.</div> </div>
</div>
</div>
<div class="content-column content-column-mobile-footer">
<div class="mobile-share">
<div class="tns-share">
<div class="section-heading">
SHARE THIS STORY </div>
<div class="share-media">
<a
href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fthenewstack.io%2Fintroduction-to-cloud-native-computing%2F&text=Introduction+to+Cloud+Native+Computing: &via=thenewstack&related=thenewstack"
class="share-media-icon share-media-icon-twitter"
data-platform="twitter"
target="_blank"
>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" width="24px" height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve" class="fill">
<path d="M14.095479,10.316482L22.286354,1h-1.940718l-7.115352,8.087682L7.551414,1H1l8.589488,12.231093L1,23h1.940717 l7.509372-8.542861L16.448587,23H23L14.095479,10.316482z M11.436522,13.338465l-0.871624-1.218704l-6.924311-9.68815h2.981339 l5.58978,7.82155l0.867949,1.218704l7.26506,10.166271h-2.981339L11.436522,13.338465z"/>
</svg>
</a>
<a href="https://news.ycombinator.com/submitlink?t=Introduction to Cloud Native Computing&u=https%3A%2F%2Fthenewstack.io%2Fintroduction-to-cloud-native-computing%2F" class="share-media-icon share-media-icon-hackernews" data-platform="hackernews" target="_blank">
<svg viewBox="0 0 42 42" class="fill">
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="hackernews" transform="translate(-3.000000, -3.000000)">
<polygon id="Path" points="0 48 0 0 48 0 48 48"></polygon>
<path d="M3.84009302,3.84009302 L3.84009302,44.160093 L44.160093,44.160093 L44.160093,3.84009302 L3.84009302,3.84009302 Z M42.240093,42.240093 L5.76009302,42.240093 L5.76009302,5.76009302 L42.240093,5.76009302 L42.240093,42.240093 Z M40.320093,7.68009302 L7.68009302,7.68009302 L7.68009302,40.320093 L40.320093,40.320093 L40.320093,7.68009302 Z M25.920093,26.880093 L25.920093,34.560093 L22.080093,34.560093 L22.080093,26.880093 L15.360093,14.400093 L18.412893,14.400093 L24.000093,24.182493 L29.587293,14.400093 L32.640093,14.400093 L25.920093,26.880093 Z" id="Shape" fill="#000000" fill-rule="nonzero"></path>
</g>
</g>
</svg>
</a>
<a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fthenewstack.io%2Fintroduction-to-cloud-native-computing%2F" class="share-media-icon share-media-icon-linkedin" data-platform="linkedin" target="_blank">
<svg viewBox="0 0 16.927 16.689" class="fill">
<path d="M3.833,1.809A1.8,1.8,0,0,1,1.88,3.619,1.783,1.783,0,0,1,0,1.809,1.8,1.8,0,0,1,1.928,0a1.789,1.789,0,0,1,1.9,1.809M.1,5.047H3.714V16.689H.1Z" transform="translate(0 0)"/>
<path d="M28.535,27.5c0-1.452-.047-2.666-.095-3.714h3.142l.167,1.619h.071a4.18,4.18,0,0,1,3.6-1.881c2.381,0,4.166,1.6,4.166,5.024V35.43H35.963V28.978c0-1.5-.524-2.523-1.833-2.523a1.987,1.987,0,0,0-1.857,1.357,2.6,2.6,0,0,0-.119.9V35.43H28.535Z" transform="translate(-22.655 -18.741)"/>
<svg>
</a>
<a href="https://reddit.com/submit?url=https%3A%2F%2Fthenewstack.io%2Fintroduction-to-cloud-native-computing%2F&title=Introduction+to+Cloud+Native+Computing" class="share-media-icon share-media-icon-reddit" data-platform="reddit" target="_blank">
<svg viewBox="0 0 24 24" class="fill">
<path d="M14.238 15.348c.085.084.085.221 0 .306-.465.462-1.194.687-2.231.687l-.008-.002-.008.002c-1.036 0-1.766-.225-2.231-.688-.085-.084-.085-.221 0-.305.084-.084.222-.084.307 0 .379.377 1.008.561 1.924.561l.008.002.008-.002c.915 0 1.544-.184 1.924-.561.085-.084.223-.084.307 0zm-3.44-2.418c0-.507-.414-.919-.922-.919-.509 0-.923.412-.923.919 0 .506.414.918.923.918.508.001.922-.411.922-.918zm13.202-.93c0 6.627-5.373 12-12 12s-12-5.373-12-12 5.373-12 12-12 12 5.373 12 12zm-5-.129c0-.851-.695-1.543-1.55-1.543-.417 0-.795.167-1.074.435-1.056-.695-2.485-1.137-4.066-1.194l.865-2.724 2.343.549-.003.034c0 .696.569 1.262 1.268 1.262.699 0 1.267-.566 1.267-1.262s-.568-1.262-1.267-1.262c-.537 0-.994.335-1.179.804l-2.525-.592c-.11-.027-.223.037-.257.145l-.965 3.038c-1.656.02-3.155.466-4.258 1.181-.277-.255-.644-.415-1.05-.415-.854.001-1.549.693-1.549 1.544 0 .566.311 1.056.768 1.325-.03.164-.05.331-.05.5 0 2.281 2.805 4.137 6.253 4.137s6.253-1.856 6.253-4.137c0-.16-.017-.317-.044-.472.486-.261.82-.766.82-1.353zm-4.872.141c-.509 0-.922.412-.922.919 0 .506.414.918.922.918s.922-.412.922-.918c0-.507-.413-.919-.922-.919z"/>
</svg>
</a>
<a href="https://www.facebook.com/sharer/sharer.php?u=https://thenewstack.io/introduction-to-cloud-native-computing/" class="share-media-icon share-media-icon-facebook" data-platform="facebook" target="_blank">
<svg viewBox="0 0 17.492 17.492" class="fill">
<path d="M15.306,0H2.187A2.193,2.193,0,0,0,0,2.187V15.306a2.193,2.193,0,0,0,2.187,2.187H8.822V11.22H6.727V8.488H8.822V7.119a3.621,3.621,0,0,1,3.547-3.763H14.3V6.441H12.572c-.452,0-.585.26-.585.618V8.488H14.3V11.22H11.987v6.272h3.318a2.193,2.193,0,0,0,2.187-2.187V2.187A2.193,2.193,0,0,0,15.306,0"/>
</svg>
</a>
<!--
<a href="https://www.facebook.com/sharer/sharer.php?u=https://thenewstack.io/introduction-to-cloud-native-computing/" class="share-media-icon share-media-icon-instagram" data-platform="instagram" target="_blank">
<svg viewBox="0 0 17.839 17.84" class="fill">
<path d="M8.92,1.607c2.382,0,2.664.009,3.6.052a4.937,4.937,0,0,1,1.656.307,2.763,2.763,0,0,1,1.026.667,2.763,2.763,0,0,1,.667,1.026,4.938,4.938,0,0,1,.307,1.656c.043.941.052,1.223.052,3.6s-.009,2.664-.052,3.6a4.937,4.937,0,0,1-.307,1.656,2.955,2.955,0,0,1-1.693,1.693,4.937,4.937,0,0,1-1.656.307c-.941.043-1.223.052-3.6.052s-2.664-.009-3.6-.052a4.937,4.937,0,0,1-1.656-.307,2.763,2.763,0,0,1-1.026-.667,2.763,2.763,0,0,1-.667-1.026,4.937,4.937,0,0,1-.307-1.656c-.043-.941-.052-1.223-.052-3.6s.009-2.664.052-3.6a4.938,4.938,0,0,1,.307-1.656,2.763,2.763,0,0,1,.667-1.026,2.763,2.763,0,0,1,1.026-.667,4.937,4.937,0,0,1,1.656-.307c.941-.043,1.223-.052,3.6-.052M8.92,0C6.5,0,6.193.01,5.242.054A6.547,6.547,0,0,0,3.077.468,4.376,4.376,0,0,0,1.5,1.5,4.373,4.373,0,0,0,.468,3.077,6.547,6.547,0,0,0,.054,5.242C.01,6.194,0,6.5,0,8.92S.01,11.646.054,12.6a6.547,6.547,0,0,0,.415,2.165A4.373,4.373,0,0,0,1.5,16.343a4.373,4.373,0,0,0,1.58,1.029,6.547,6.547,0,0,0,2.165.415c.951.044,1.255.054,3.678.054s2.726-.01,3.678-.054a6.547,6.547,0,0,0,2.165-.415,4.56,4.56,0,0,0,2.609-2.609,6.547,6.547,0,0,0,.415-2.165c.044-.951.054-1.255.054-3.678s-.01-2.726-.054-3.678a6.547,6.547,0,0,0-.415-2.165A4.373,4.373,0,0,0,16.343,1.5,4.376,4.376,0,0,0,14.763.468,6.547,6.547,0,0,0,12.6.054C11.646.01,11.342,0,8.92,0" transform="translate(0 0)"/>
<path d="M25.914,21.334a4.581,4.581,0,1,0,4.58,4.581,4.581,4.581,0,0,0-4.58-4.581m0,7.554a2.973,2.973,0,1,1,2.973-2.973,2.973,2.973,0,0,1-2.973,2.973" transform="translate(-16.995 -16.995)"/>
<path d="M64.142,16.253a1.07,1.07,0,1,1-1.07-1.07,1.071,1.071,0,0,1,1.07,1.07" transform="translate(-49.39 -12.095)"/>
</svg>
</a>
<a href="#" class="share-media-icon share-post-copy" data-platform="copy-url">
<svg viewBox="0 0 18.528 18.528" class="stroke">
<path d="M4.517,4.517V.75H17.778V14.011H14.011" stroke-miterlimit="10" stroke-width="1.5"/>
<path d="M4.517,4.517h9.494v9.494" stroke-miterlimit="10" stroke-width="1.5"/>
<path d="M4.517,4.517H.75V17.778H14.011V14.011" stroke-miterlimit="10" stroke-width="1.5"/>
</svg>
</a>
-->
</div>
</div>
<script>
$(document).ready(function() {
$('body').off('click.share');
$('body').on('click.share', '.share-media-icon', function() {
var platform = $(this).data('platform');
var url = $(this).attr('href');
var sponsor = '';
var categories = 'cloud-native,containers,microservices';
var payload = {
'event' : 'share',
'platform' : platform,
'url' : url,
'sponsor' : sponsor
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
</script>
</div>
<div class="mobile-trending-stories">
<div
class="tns-trending-stories-block bottom"
data-context="bottom"
>
<div class="section-heading">
TRENDING STORIES </div>
<div
class="tns-trending-stories-list tns-trending-stories-list-bottom tns-trending-stories-list-6a848526bebf5"
data-uuid="6a848526bebf5"
data-context="bottom"
></div>
</div>
<script>
$(document).ready(function() {
var $container = $('.tns-trending-stories-list-6a848526bebf5');
var context = $container.data('context');
$container.load('/no-cache/trending-stories/', {
limit : '5',
category_slug : '',
postID : '22780745',
context : 'bottom'
}, function(result) {
if (context === 'frontpage') {
$container.find('.trending-story-link').addClass('frontpage-link');
}
$('body').off('click.trending_story');
$('body').on('click.trending_story', '.trending-story-link', function($event) {
var title = $(this).attr('aria-label');
var url = $(this).attr('href');
url = url.replace('https://thenewstack.io', '');
var context = $(this).data('context');
var categories = $(this).data('categories');
var payload = {
'event' : 'trending_story_click',
'post_title' : title,
'url' : url,
'context' : context
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
});
</script>
</div>
</div>
<div class="tns-sponsors-rss">
<div class="tns-sponsors-rss-block"></div>
<script>
$(document).ready(function() {
$.ajax({
method: 'POST',
url: '/no-cache/sponsors-rss-block/',
headers: {
'Cache-Control': 'no-cache, no-store, must-revalidate',
'Pragma': 'no-cache',
'Expires': '0'
},
data : {
postID : '22780745'
},
success : function(data) {
console.log("RSS RESULT")
console.log(data)
if (data == "") {
$('.tns-sponsors-rss').hide()
return
}
if (data.startsWith('ERROR')) {
console.log(data)
$('.tns-sponsors-rss').hide()
return
}
$('.tns-sponsors-rss-block').append(data)
}
});
});
</script>
</div>
<div class="content-column content-column-post-footer">
<div id="tns-post-newsletter">
<div class="tns-newsletter-shortcode">
<div class="title">
<span>TNS DAILY NEWSLETTER</span>
Receive a free roundup of the most recent TNS articles in your inbox each day. </div>
<div class="newsletter-form" data-instanceid="6a848526bec93">
<div class="newsletter-form-inputs">
<input class="tns-newsletter-form-email" type="email" placeholder="EMAIL ADDRESS">
<button class="tns-newsletter-form-submit">
SUBSCRIBE
</button>
</div>
<div class="newsletter-form-privacy">
The New Stack does not sell your information or share it with
unaffiliated third parties. By continuing, you agree to our
<a href="/terms-of-use/">Terms of Use</a> and
<a href="/privacy-policy/">Privacy Policy</a>.
</div>
</div>
<script>
$(document).ready(function() {
var $tnsNewsletterForm = $('.newsletter-form[data-instanceid="6a848526bec93"]');
var $tnsNewsletterEmailInput = $tnsNewsletterForm.find('.tns-newsletter-form-email');
var $tnsNewsletterSubmitButton = $tnsNewsletterForm.find('.tns-newsletter-form-submit');
var newsletterCategories = 'cloud-native,containers,microservices';
/// Determine if the user is logged-in and
/// pre-populate the newsletter form email if so
var user = window.tns.getCookie('tns-user')
if (user) user = JSON.parse(user)
if (user?.email) {
$tnsNewsletterEmailInput.val(user.email)
}
/// Handlers
$tnsNewsletterEmailInput.on('keyup', function($event) {
$(this).removeClass('error');
if ($event.which === 13) {
$tnsNewsletterSubmitButton.click();
}
});
$tnsNewsletterSubmitButton.on('click', function() {
window.imgjs.subscribe.config.copy.email_slide.heading.subscribe = 'Subscribe to TNS Daily'
window.imgjs.subscribe.config.copy.email_slide.cta.subscribe = 'Always stay in-the-know by getting the most important news and exclusive content delivered daily to your inbox to learn more about at-scale software development for free.'
window.imgjs.subscribe.config.copy.email_slide.button_label.subscribe = 'SUBSCRIBE'
window.imgjs.subscribe.config.images.email_slide.key_image = null
window.imgjs.subscribe.config.copy.profile_slide.heading.subscribe = 'Last Step'
window.imgjs.subscribe.config.copy.profile_slide.cta.subscribe = 'Refine your profile to unlock insights and opportunities aligned with your skills and experience.'
window.imgjs.subscribe.config.copy.profile_slide.button_label.subscribe = 'UPDATE PROFILE'
window.imgjs.subscribe.config.copy.confirm_slide.heading.subscribe = 'Success'
window.imgjs.subscribe.config.copy.confirm_slide.welcome.subscribe = `You're now subscribed to the TNS Daily newsletter.<br><br>We're so glad you're here! As a member of The New Stack, you now have unlimited access to all our <a href="https://thenewstack.io">articles</a>, <a href="https://thenewstack.io/podcasts/">videos</a>, <a href="https://thenewstack.io/webinars/">webinars</a>, <a href="https://thenewstack.io/ebooks/">ebooks</a>, <a href="https://thenewstack.io/newsletter/">newsletters</a> and more. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.`
window.imgjs.subscribe.config.copy.confirm_slide.button_label.subscribe = 'OK'
window.imgjs.subscribe.config.onClose = function(user) {
window.imgjs.subscribe.resetConfig()
if (user) {
window.tns.setCookie('tns-user-id', user.author_id, 8400)
window.tns.setCookie('tns-user', JSON.stringify(user), 8400)
/// Update the BlueConic profile with the email and Ory ID
const profile = window.blueConicClient.profile.getProfile()
profile.setValue('email', user?.email)
profile.setValue('ory_id', user?.author_id)
window.blueConicClient.profile.updateProfile()
$('.masthead-login-button').text("")
/// Determine if it's a new subscription by testing
/// if the createdAt date is today's date
if (window.imgjs.subscribe.isNewSubscription(user.createdAt)) {
var payload = {
'event' : 'user_registration',
'url' : window.location.href,
'channel': window.imgjs.subscribe.channel,
'channel_id': window.imgjs.subscribe.channel_id
};
if (newsletterCategories) {
payload.categories = newsletterCategories;
}
window.dataLayer.push(payload);
}
} else {
window.tns.setCookie('img-session-token', '', -1)
window.tns.setCookie('tns-user-id', '', -1)
window.tns.setCookie('tns-user', '', -1)
$('.masthead-login-button').text("LOGIN")
console.error("There was an error processing your request, please try again.")
}
}
window.imgjs.subscribe.config.onProfileUpdate = function(data) {
console.log("Set tns-user cookie with the following data:")
console.log(data)
if (data.user) {
window.tns.setCookie('tns-user-id', data.user.author_id, 8400)
window.tns.setCookie('tns-user', JSON.stringify(data.user), 8400)
} else {
console.error("[IMGJS] ERROR No user returned to onProfileUpdate")
}
}
var email = $tnsNewsletterEmailInput.val()
var subscriptions = {
mc : [
'6166149401', /// TNS Daily
'd60fc24015' /// TNS Weekly
],
hs : []
}
const hostname = window.location.hostname
switch (true) {
case hostname.includes("thenewstack.io"):
subscriptions.hs.push("688810478") /// TNS Daily (PROD)
subscriptions.hs.push("688810681") /// TNS Weekly (PROD)
break
case hostname.includes("thenewstack.dev"):
subscriptions.hs.push("860037297") /// TNS Daily (SANDBOX)
subscriptions.hs.push("860037316") /// TNS Weekly (SANDBOX)
break
}
/// Set the channel data for the user_registration GA4 event
window.imgjs.subscribe.channel = 'newsletter'
window.imgjs.subscribe.channel_id = 'tns-daily'
/// If it's the events page, add the events sub ID
const path = window.location.pathname
if (path.includes('/events/')) {
subscriptions.hs.push("688810832") /// TNS Events (PROD)
window.imgjs.subscribe.channel_id = 'tns-events'
}
user = window.tns.getCookie('tns-user')
if (user) user = JSON.parse(user)
window.imgjs.subscribe.open(email, subscriptions, 'subscribe', user)
})
});
</script>
</div>
</div>
</div>
</div>
<footer id="tns-footer">
<div class="content-column">
<div class="row">
<div class="col">
<div id="tns-footer-nav-menus">
<div class="row footer-nav-row">
<div class="col-15 footer-nav-col">
<div class="footer-nav-header">
ARCHITECTURE
</div>
<div class="footer-nav-menu">
<a
href="https://thenewstack.io/cloud-native/"
class="topic-cloud-native"
data-category-slug="cloud-native"
>
Cloud Native Ecosystem </a>
<a
href="https://thenewstack.io/containers/"
class="topic-containers"
data-category-slug="containers"
>
Containers </a>
<a
href="https://thenewstack.io/databases/"
class="topic-databases"
data-category-slug="databases"
>
Databases </a>
<a
href="https://thenewstack.io/edge-computing/"
class="topic-edge-computing"
data-category-slug="edge-computing"
>
Edge Computing </a>
<a
href="https://thenewstack.io/infrastructure-as-code/"
class="topic-infrastructure-as-code"
data-category-slug="infrastructure-as-code"
>
Infrastructure as Code </a>
<a
href="https://thenewstack.io/linux/"
class="topic-linux"
data-category-slug="linux"
>
Linux </a>
<a
href="https://thenewstack.io/microservices/"
class="topic-microservices"
data-category-slug="microservices"
>
Microservices </a>
<a
href="https://thenewstack.io/open-source/"
class="topic-open-source"
data-category-slug="open-source"
>
Open Source </a>
<a
href="https://thenewstack.io/networking/"
class="topic-networking"
data-category-slug="networking"
>
Networking </a>
<a
href="https://thenewstack.io/storage/"
class="topic-storage"
data-category-slug="storage"
>
Storage </a>
</div>
</div>
<div class="col-15 footer-nav-col">
<div class="footer-nav-header">
ENGINEERING
</div>
<div class="footer-nav-menu">
<a
href="https://thenewstack.io/ai/"
class="topic-ai"
data-category-slug="ai"
>
AI </a>
<a
href="https://thenewstack.io/ai-engineering/"
class="topic-ai-engineering"
data-category-slug="ai-engineering"
>
AI Engineering </a>
<a
href="https://thenewstack.io/api-management/"
class="topic-api-management"
data-category-slug="api-management"
>
API Management </a>
<a
href="https://thenewstack.io/backend-development/"
class="topic-backend-development"
data-category-slug="backend-development"
>
Backend development </a>
<a
href="https://thenewstack.io/data/"
class="topic-data"
data-category-slug="data"
>
Data </a>
<a
href="https://thenewstack.io/frontend-development/"
class="topic-frontend-development"
data-category-slug="frontend-development"
>
Frontend Development </a>
<a
href="https://thenewstack.io/llm/"
class="topic-llm"
data-category-slug="llm"
>
Large Language Models </a>
<a
href="https://thenewstack.io/security/"
class="topic-security"
data-category-slug="security"
>
Security </a>
<a
href="https://thenewstack.io/software-development/"
class="topic-software-development"
data-category-slug="software-development"
>
Software Development </a>
<a
href="https://thenewstack.io/webassembly/"
class="topic-webassembly"
data-category-slug="webassembly"
>
WebAssembly </a>
</div>
</div>
<div class="col-15 footer-nav-col">
<div class="footer-nav-header">
OPERATIONS
</div>
<div class="footer-nav-menu">
<a
href="https://thenewstack.io/ai-operations/"
class="topic-ai-operations"
data-category-slug="ai-operations"
>
AI Operations </a>
<a
href="https://thenewstack.io/ci-cd/"
class="topic-ci-cd"
data-category-slug="ci-cd"
>
CI/CD </a>
<a
href="https://thenewstack.io/cloud-services/"
class="topic-cloud-services"
data-category-slug="cloud-services"
>
Cloud Services </a>
<a
href="https://thenewstack.io/devops/"
class="topic-devops"
data-category-slug="devops"
>
DevOps </a>
<a
href="https://thenewstack.io/kubernetes/"
class="topic-kubernetes"
data-category-slug="kubernetes"
>
Kubernetes </a>
<a
href="https://thenewstack.io/observability/"
class="topic-observability"
data-category-slug="observability"
>
Observability </a>
<a
href="https://thenewstack.io/operations/"
class="topic-operations"
data-category-slug="operations"
>
Operations </a>
<a
href="https://thenewstack.io/platform-engineering/"
class="topic-platform-engineering"
data-category-slug="platform-engineering"
>
Platform Engineering </a>
</div>
</div>
<div class="col-15 footer-nav-col">
<div class="footer-nav-header">
CHANNELS
</div>
<div class="footer-nav-menu">
<a
href="https://thenewstack.io/podcasts/"
class="topic-podcasts"
data-category-slug="podcasts"
>
Podcasts </a>
<a
href="https://thenewstack.io/ebooks/"
class="topic-ebooks"
data-category-slug="ebooks"
>
Ebooks </a>
<a
href="https://thenewstack.io/events/"
class="topic-events"
data-category-slug="events"
>
Events </a>
<a
href="https://thenewstack.io/webinars/"
class="topic-webinars"
data-category-slug="webinars"
>
Webinars </a>
<a
href="https://thenewstack.io/newsletter/"
class="topic-newsletter"
data-category-slug="newsletter"
>
Newsletter </a>
<a
href="/rss-feeds/"
class="topic-rss-feeds"
data-category-slug="rss-feeds"
>
TNS RSS Feeds </a>
</div>
</div>
<div class="col-15 footer-nav-col">
<div class="footer-nav-header">
THE NEW STACK
</div>
<div class="footer-nav-menu">
<a
href="https://thenewstack.io/about-and-contact-info/"
class="topic-about-and-contact-info"
data-category-slug="about-and-contact-info"
>
About / Contact </a>
<a
href="https://thenewstack.io/sponsors/"
class="topic-sponsors"
data-category-slug="sponsors"
>
Sponsors </a>
<a
href="https://thenewstack.io/sponsorship/"
class="topic-sponsorship"
data-category-slug="sponsorship"
>
Advertise With Us </a>
<a
href="https://thenewstack.io/contributions/"
class="topic-contributions"
data-category-slug="contributions"
>
Contributions </a>
</div>
</div>
<div class="col-15 footer-nav-col">
<a
href="https://roadmap.sh/?utm_source=The+New+Stack&utm_medium=Referral&utm_campaign=Footer"
class="roadmap-link"
target="_blank"
>
<div class="footer-nav-header">
<svg width="283" height="283" viewBox="0 0 283 283" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 39C0 17.4609 17.4609 0 39 0H244C265.539 0 283 17.4609 283 39V244C283 265.539 265.539 283 244 283H39C17.4609 283 0 265.539 0 244V39Z" fill="black"></path>
<path d="M121.215 210.72C119.348 211.28 116.361 211.84 112.255 212.4C108.335 212.96 104.228 213.24 99.9347 213.24C95.828 213.24 92.0947 212.96 88.7347 212.4C85.5614 211.84 82.8547 210.72 80.6147 209.04C78.3747 207.36 76.6014 205.12 75.2947 202.32C74.1747 199.333 73.6147 195.507 73.6147 190.84V106.84C73.6147 102.547 74.3614 98.9067 75.8547 95.92C77.5347 92.7467 79.868 89.9467 82.8547 87.52C85.8414 85.0933 89.4814 82.9467 93.7747 81.08C98.2547 79.0267 103.015 77.2533 108.055 75.76C113.095 74.2667 118.321 73.1467 123.735 72.4C129.148 71.4667 134.561 71 139.975 71C148.935 71 156.028 72.7733 161.255 76.32C166.481 79.68 169.095 85.28 169.095 93.12C169.095 95.7333 168.721 98.3467 167.975 100.96C167.228 103.387 166.295 105.627 165.175 107.68C161.255 107.68 157.241 107.867 153.135 108.24C149.028 108.613 145.015 109.173 141.095 109.92C137.175 110.667 133.441 111.507 129.895 112.44C126.535 113.187 123.641 114.12 121.215 115.24V210.72ZM166.387 188.32C166.387 180.48 168.813 173.947 173.667 168.72C178.52 163.493 185.147 160.88 193.547 160.88C201.947 160.88 208.573 163.493 213.427 168.72C218.28 173.947 220.707 180.48 220.707 188.32C220.707 196.16 218.28 202.693 213.427 207.92C208.573 213.147 201.947 215.76 193.547 215.76C185.147 215.76 178.52 213.147 173.667 207.92C168.813 202.693 166.387 196.16 166.387 188.32Z" fill="white"></path>
</svg>roadmap.sh </div>
<div class="footer-nav-menu roadmap-copy">
<p>
Community created roadmaps, articles, resources and journeys for
developers to help you choose your path and grow in your career.
</p>
</div>
</a>
<a
class="roadmap-page-link"
href="https://roadmap.sh/frontend?utm_source=The+New+Stack&utm_medium=Referral&utm_campaign=Footer"
target="_blank"
>
Frontend Developer Roadmap
<svg xmlns="http://www.w3.org/2000/svg" width="23.012" height="17.268" viewBox="0 0 23.012 17.268">
<path id="Path_340" data-name="Path 340" d="M14.36,0,12.816,1.508l6.067,6.067H0V9.729H18.884l-6.031,6.032L14.4,17.268l8.616-8.616Z" transform="translate(0 0)"/>
</svg>
</a>
<a
class="roadmap-page-link"
href="https://roadmap.sh/backend?utm_source=The+New+Stack&utm_medium=Referral&utm_campaign=Footer"
target="_blank"
>
Backend Developer Roadmap
<svg xmlns="http://www.w3.org/2000/svg" width="23.012" height="17.268" viewBox="0 0 23.012 17.268">
<path id="Path_340" data-name="Path 340" d="M14.36,0,12.816,1.508l6.067,6.067H0V9.729H18.884l-6.031,6.032L14.4,17.268l8.616-8.616Z" transform="translate(0 0)"/>
</svg>
</a>
<a
class="roadmap-page-link"
href="https://roadmap.sh/devops?utm_source=The+New+Stack&utm_medium=Referral&utm_campaign=Footer"
target="_blank"
>
Devops Roadmap
<svg xmlns="http://www.w3.org/2000/svg" width="23.012" height="17.268" viewBox="0 0 23.012 17.268">
<path id="Path_340" data-name="Path 340" d="M14.36,0,12.816,1.508l6.067,6.067H0V9.729H18.884l-6.031,6.032L14.4,17.268l8.616-8.616Z" transform="translate(0 0)"/>
</svg>
</a>
</div>
</div>
</div> </div>
</div>
<div class="row">
<div class="col">
<div id="tns-footer-legal">
<div class="row">
<div class="col col-75 col-legal">
<div class="copyright">
&copy; The New Stack 2026 </div>
<div class="terms">
<a href="/disclosure-guidelines/">Disclosures</a>
<a href="/terms-of-use/">Terms of Use</a>
<a href="/advertising-terms-conditions/">Advertising Terms & Conditions</a>
<a href="/privacy-policy/">Privacy Policy</a>
<a href="/cookie-policy/">Cookie Policy</a>
</div>
</div>
<div class="col col-25 col-social">
<div class="footer-nav-header">
FOLLOW TNS
</div>
<div class="social-links">
<div
class="tns-follow-links"
data-instanceid="6a848526c1f57"
data-categories="cloud-native,containers,microservices"
>
<div class="follow-links">
<a
rel="me"
href="https://hachyderm.io/@TheNewStack"
class="follow-icon follow-icon-mastadon"
data-platform="mastodon"
data-position="footer"
target="_blank"
>
<svg class="fill" fill="#000000" viewBox="0 0 25 25" style="width: 25px; height: 25px" xmlns="http://www.w3.org/2000/svg" xml:space="preserve">
<path d="M21.327 8.566c0-4.339-2.843-5.61-2.843-5.61-1.433-.658-3.894-.935-6.451-.956h-.063c-2.557.021-5.016.298-6.45.956 0 0-2.843 1.272-2.843 5.61 0 .993-.019 2.181.012 3.441.103 4.243.778 8.425 4.701 9.463 1.809.479 3.362.579 4.612.51 2.268-.126 3.541-.809 3.541-.809l-.075-1.646s-1.621.511-3.441.449c-1.804-.062-3.707-.194-3.999-2.409a4.523 4.523 0 0 1-.04-.621s1.77.433 4.014.536c1.372.063 2.658-.08 3.965-.236 2.506-.299 4.688-1.843 4.962-3.254.434-2.223.398-5.424.398-5.424zm-3.353 5.59h-2.081V9.057c0-1.075-.452-1.62-1.357-1.62-1 0-1.501.647-1.501 1.927v2.791h-2.069V9.364c0-1.28-.501-1.927-1.502-1.927-.905 0-1.357.546-1.357 1.62v5.099H6.026V8.903c0-1.074.273-1.927.823-2.558.566-.631 1.307-.955 2.228-.955 1.065 0 1.872.409 2.405 1.228l.518.869.519-.869c.533-.819 1.34-1.228 2.405-1.228.92 0 1.662.324 2.228.955.549.631.822 1.484.822 2.558v5.253z"/>
</svg>
</a>
<a
href="https://bsky.app/profile/thenewstack.io"
class="follow-icon follow-icon-bluesky"
data-platform="bluesky"
data-position="footer"
target="_blank"
>
<svg class="fill" fill="#000000" viewBox="0 0 64 57" width="24" style="width: 24px">
<path fill="#0085ff" d="M13.873 3.805C21.21 9.332 29.103 20.537 32 26.55v15.882c0-.338-.13.044-.41.867-1.512 4.456-7.418 21.847-20.923 7.944-7.111-7.32-3.819-14.64 9.125-16.85-7.405 1.264-15.73-.825-18.014-9.015C1.12 23.022 0 8.51 0 6.55 0-3.268 8.579-.182 13.873 3.805ZM50.127 3.805C42.79 9.332 34.897 20.537 32 26.55v15.882c0-.338.13.044.41.867 1.512 4.456 7.418 21.847 20.923 7.944 7.111-7.32 3.819-14.64-9.125-16.85 7.405 1.264 15.73-.825 18.014-9.015C62.88 23.022 64 8.51 64 6.55c0-9.818-8.578-6.732-13.873-2.745Z"></path>
</svg>
</a>
<a
href="https://www.threads.net/@thenewstack"
class="follow-icon follow-icon-threads"
data-platform="threads"
data-position="footer"
target="_blank"
>
<svg fill="#CCCCCC" viewBox="0 0 192 192">
<path d="M141.537 88.9883C140.71 88.5919 139.87 88.2104 139.019 87.8451C137.537 60.5382 122.616 44.905 97.5619 44.745C97.4484 44.7443 97.3355 44.7443 97.222 44.7443C82.2364 44.7443 69.7731 51.1409 62.102 62.7807L75.881 72.2328C81.6116 63.5383 90.6052 61.6848 97.2286 61.6848C97.3051 61.6848 97.3819 61.6848 97.4576 61.6855C105.707 61.7381 111.932 64.1366 115.961 68.814C118.893 72.2193 120.854 76.925 121.825 82.8638C114.511 81.6207 106.601 81.2385 98.145 81.7233C74.3247 83.0954 59.0111 96.9879 60.0396 116.292C60.5615 126.084 65.4397 134.508 73.775 140.011C80.8224 144.663 89.899 146.938 99.3323 146.423C111.79 145.74 121.563 140.987 128.381 132.296C133.559 125.696 136.834 117.143 138.28 106.366C144.217 109.949 148.617 114.664 151.047 120.332C155.179 129.967 155.42 145.8 142.501 158.708C131.182 170.016 117.576 174.908 97.0135 175.059C74.2042 174.89 56.9538 167.575 45.7381 153.317C35.2355 139.966 29.8077 120.682 29.6052 96C29.8077 71.3178 35.2355 52.0336 45.7381 38.6827C56.9538 24.4249 74.2039 17.11 97.0132 16.9405C119.988 17.1113 137.539 24.4614 149.184 38.788C154.894 45.8136 159.199 54.6488 162.037 64.9503L178.184 60.6422C174.744 47.9622 169.331 37.0357 161.965 27.974C147.036 9.60668 125.202 0.195148 97.0695 0H96.9569C68.8816 0.19447 47.2921 9.6418 32.7883 28.0793C19.8819 44.4864 13.2244 67.3157 13.0007 95.9325L13 96L13.0007 96.0675C13.2244 124.684 19.8819 147.514 32.7883 163.921C47.2921 182.358 68.8816 191.806 96.9569 192H97.0695C122.03 191.827 139.624 185.292 154.118 170.811C173.081 151.866 172.51 128.119 166.26 113.541C161.776 103.087 153.227 94.5962 141.537 88.9883ZM98.4405 129.507C88.0005 130.095 77.1544 125.409 76.6196 115.372C76.2232 107.93 81.9158 99.626 99.0812 98.6368C101.047 98.5234 102.976 98.468 104.871 98.468C111.106 98.468 116.939 99.0737 122.242 100.233C120.264 124.935 108.662 128.946 98.4405 129.507Z"></path>
</svg>
</a>
<a
href="https://www.linkedin.com/company/the-new-stack"
class="follow-icon follow-icon-linkedin"
data-platform="linkedin"
data-position="footer"
target="_blank"
>
<svg viewBox="0 0 16.927 16.689" class="fill">
<path d="M3.833,1.809A1.8,1.8,0,0,1,1.88,3.619,1.783,1.783,0,0,1,0,1.809,1.8,1.8,0,0,1,1.928,0a1.789,1.789,0,0,1,1.9,1.809M.1,5.047H3.714V16.689H.1Z" transform="translate(0 0)"/>
<path d="M28.535,27.5c0-1.452-.047-2.666-.095-3.714h3.142l.167,1.619h.071a4.18,4.18,0,0,1,3.6-1.881c2.381,0,4.166,1.6,4.166,5.024V35.43H35.963V28.978c0-1.5-.524-2.523-1.833-2.523a1.987,1.987,0,0,0-1.857,1.357,2.6,2.6,0,0,0-.119.9V35.43H28.535Z" transform="translate(-22.655 -18.741)"/>
<svg>
</a>
<a
href="https://twitter.com/thenewstack"
class="follow-icon follow-icon-twitter"
data-platform="twitter"
data-position="footer"
target="_blank"
>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" width="24px" height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve" class="fill">
<path d="M14.095479,10.316482L22.286354,1h-1.940718l-7.115352,8.087682L7.551414,1H1l8.589488,12.231093L1,23h1.940717 l7.509372-8.542861L16.448587,23H23L14.095479,10.316482z M11.436522,13.338465l-0.871624-1.218704l-6.924311-9.68815h2.981339 l5.58978,7.82155l0.867949,1.218704l7.26506,10.166271h-2.981339L11.436522,13.338465z"/>
</svg>
</a>
<a
href="https://www.facebook.com/thenewstack/"
class="follow-icon follow-icon-facebook"
data-platform="facebook"
data-position="footer"
target="_blank"
>
<svg viewBox="0 0 17.492 17.492" class="fill">
<path d="M15.306,0H2.187A2.193,2.193,0,0,0,0,2.187V15.306a2.193,2.193,0,0,0,2.187,2.187H8.822V11.22H6.727V8.488H8.822V7.119a3.621,3.621,0,0,1,3.547-3.763H14.3V6.441H12.572c-.452,0-.585.26-.585.618V8.488H14.3V11.22H11.987v6.272h3.318a2.193,2.193,0,0,0,2.187-2.187V2.187A2.193,2.193,0,0,0,15.306,0"/>
</svg>
</a>
<!--
<a
href="https://www.instagram.com/thenewstack/"
class="follow-icon follow-icon-instagram"
data-platform="instagram"
data-position="footer"
target="_blank"
>
<svg viewBox="0 0 17.839 17.84" class="fill">
<path d="M8.92,1.607c2.382,0,2.664.009,3.6.052a4.937,4.937,0,0,1,1.656.307,2.763,2.763,0,0,1,1.026.667,2.763,2.763,0,0,1,.667,1.026,4.938,4.938,0,0,1,.307,1.656c.043.941.052,1.223.052,3.6s-.009,2.664-.052,3.6a4.937,4.937,0,0,1-.307,1.656,2.955,2.955,0,0,1-1.693,1.693,4.937,4.937,0,0,1-1.656.307c-.941.043-1.223.052-3.6.052s-2.664-.009-3.6-.052a4.937,4.937,0,0,1-1.656-.307,2.763,2.763,0,0,1-1.026-.667,2.763,2.763,0,0,1-.667-1.026,4.937,4.937,0,0,1-.307-1.656c-.043-.941-.052-1.223-.052-3.6s.009-2.664.052-3.6a4.938,4.938,0,0,1,.307-1.656,2.763,2.763,0,0,1,.667-1.026,2.763,2.763,0,0,1,1.026-.667,4.937,4.937,0,0,1,1.656-.307c.941-.043,1.223-.052,3.6-.052M8.92,0C6.5,0,6.193.01,5.242.054A6.547,6.547,0,0,0,3.077.468,4.376,4.376,0,0,0,1.5,1.5,4.373,4.373,0,0,0,.468,3.077,6.547,6.547,0,0,0,.054,5.242C.01,6.194,0,6.5,0,8.92S.01,11.646.054,12.6a6.547,6.547,0,0,0,.415,2.165A4.373,4.373,0,0,0,1.5,16.343a4.373,4.373,0,0,0,1.58,1.029,6.547,6.547,0,0,0,2.165.415c.951.044,1.255.054,3.678.054s2.726-.01,3.678-.054a6.547,6.547,0,0,0,2.165-.415,4.56,4.56,0,0,0,2.609-2.609,6.547,6.547,0,0,0,.415-2.165c.044-.951.054-1.255.054-3.678s-.01-2.726-.054-3.678a6.547,6.547,0,0,0-.415-2.165A4.373,4.373,0,0,0,16.343,1.5,4.376,4.376,0,0,0,14.763.468,6.547,6.547,0,0,0,12.6.054C11.646.01,11.342,0,8.92,0" transform="translate(0 0)"/>
<path d="M25.914,21.334a4.581,4.581,0,1,0,4.58,4.581,4.581,4.581,0,0,0-4.58-4.581m0,7.554a2.973,2.973,0,1,1,2.973-2.973,2.973,2.973,0,0,1-2.973,2.973" transform="translate(-16.995 -16.995)"/>
<path d="M64.142,16.253a1.07,1.07,0,1,1-1.07-1.07,1.071,1.071,0,0,1,1.07,1.07" transform="translate(-49.39 -12.095)"/>
</svg>
</a>
-->
<a
href="https://open.spotify.com/show/2nj1mpDb9jxHxi9vjZvDdk"
class="follow-icon follow-icon-spotify"
data-platform="spotify"
data-position="footer"
target="_blank"
>
<svg fill="#CCCCCC" viewBox="0 0 24 24" height="32">
<path d="M13.427.01C6.805-.253 1.224 4.902.961 11.524.698 18.147 5.853 23.728 12.476 23.99c6.622.263 12.203-4.892 12.466-11.514S20.049.272 13.427.01m5.066 17.579a.717.717 0 0 1-.977.268 14.4 14.4 0 0 0-5.138-1.747 14.4 14.4 0 0 0-5.42.263.717.717 0 0 1-.338-1.392c1.95-.474 3.955-.571 5.958-.29 2.003.282 3.903.928 5.647 1.92a.717.717 0 0 1 .268.978m1.577-3.15a.93.93 0 0 1-1.262.376 17.7 17.7 0 0 0-5.972-1.96 17.7 17.7 0 0 0-6.281.238.93.93 0 0 1-1.11-.71.93.93 0 0 1 .71-1.11 19.5 19.5 0 0 1 6.94-.262 19.5 19.5 0 0 1 6.599 2.165c.452.245.62.81.376 1.263m1.748-3.551a1.147 1.147 0 0 1-1.546.488 21.4 21.4 0 0 0-6.918-2.208 21.4 21.4 0 0 0-7.259.215 1.146 1.146 0 0 1-.456-2.246 23.7 23.7 0 0 1 8.034-.24 23.7 23.7 0 0 1 7.657 2.445c.561.292.78.984.488 1.546m13.612-.036-.832-.247c-1.67-.495-2.14-.681-2.14-1.353 0-.637.708-1.327 2.264-1.327 1.539 0 2.839.752 3.51 1.31.116.096.24.052.24-.098V6.935c0-.097-.027-.15-.098-.203-.83-.62-2.272-1.07-3.723-1.07-2.953 0-4.722 1.68-4.722 3.59 0 2.157 1.371 2.91 3.626 3.546l.973.274c1.689.478 1.998.902 1.998 1.556 0 1.097-.831 1.433-2.07 1.433-1.556 0-3.457-.911-4.35-2.025-.08-.098-.177-.053-.177.062v2.423c0 .097.01.141.08.22.743.814 2.52 1.53 4.59 1.53 2.546 0 4.456-1.485 4.456-3.784 0-1.787-1.052-2.865-3.625-3.635m10.107-1.76c-1.68 0-2.653 1.026-3.219 2.052V9.376c0-.08-.044-.124-.124-.124h-2.22c-.079 0-.123.044-.123.124V20.72c0 .08.044.124.124.124h2.22c.079 0 .123-.044.123-.124v-4.536c.566 1.025 1.521 2.034 3.237 2.034 2.264 0 3.89-1.955 3.89-4.581s-1.644-4.545-3.908-4.545m-.654 6.986c-1.185 0-2.211-1.167-2.618-2.458.407-1.362 1.344-2.405 2.618-2.405 1.211 0 2.051.92 2.051 2.423s-.84 2.44-2.051 2.44m40.633-6.826h-2.264c-.08 0-.115.017-.15.097l-2.282 5.483-2.29-5.483c-.035-.08-.07-.097-.15-.097h-3.661v-.584c0-.955.645-1.397 1.476-1.397.496 0 1.035.256 1.415.486.089.053.15-.008.115-.088l-.796-1.901a.26.26 0 0 0-.124-.133c-.389-.203-1.025-.38-1.644-.38-1.875 0-2.954 1.432-2.954 3.254v.743h-1.503c-.08 0-.124.044-.124.124v1.768c0 .08.044.124.124.124h1.503v6.668c0 .08.044.123.124.123h2.264c.08 0 .124-.044.124-.123v-6.668h1.936l2.812 6.11-1.512 3.325c-.044.098.009.142.097.142h2.414c.08 0 .116-.018.15-.097l4.997-11.355c.035-.08-.009-.141-.097-.141M54.964 9.04c-2.865 0-4.837 2.025-4.837 4.616 0 2.573 1.971 4.616 4.837 4.616 2.856 0 4.846-2.043 4.846-4.616 0-2.591-1.99-4.616-4.846-4.616m.008 7.065c-1.37 0-2.343-1.043-2.343-2.45 0-1.405.973-2.449 2.343-2.449 1.362 0 2.335 1.043 2.335 2.45 0 1.406-.973 2.45-2.335 2.45m33.541-6.334a1.24 1.24 0 0 0-.483-.471 1.4 1.4 0 0 0-.693-.17q-.384 0-.693.17a1.24 1.24 0 0 0-.484.471q-.174.302-.174.681 0 .375.174.677.175.3.484.471t.693.17.693-.17.483-.471.175-.676q0-.38-.175-.682m-.211 1.247a1 1 0 0 1-.394.39 1.15 1.15 0 0 1-.571.14 1.16 1.16 0 0 1-.576-.14 1 1 0 0 1-.391-.39 1.14 1.14 0 0 1-.14-.566q0-.316.14-.562t.391-.388.576-.14q.32 0 .57.14.253.141.395.39t.142.565q0 .312-.142.56m-19.835-5.78c-.85 0-1.468.6-1.468 1.396s.619 1.397 1.468 1.397c.866 0 1.485-.6 1.485-1.397 0-.796-.619-1.397-1.485-1.397m19.329 5.19a.31.31 0 0 0 .134-.262q0-.168-.132-.266-.132-.099-.381-.099h-.588v1.229h.284v-.489h.154l.374.489h.35l-.41-.518a.5.5 0 0 0 .215-.084m-.424-.109h-.26v-.3h.27q.12 0 .184.036a.12.12 0 0 1 .065.116.12.12 0 0 1-.067.111.4.4 0 0 1-.192.037M69.607 9.252h-2.263c-.08 0-.124.044-.124.124v8.56c0 .08.044.123.124.123h2.263c.08 0 .124-.044.124-.123v-8.56c0-.08-.044-.124-.124-.124m-3.333 6.605a2.1 2.1 0 0 1-1.053.257c-.725 0-1.185-.425-1.185-1.362v-3.484h2.211c.08 0 .124-.044.124-.124V9.376c0-.08-.044-.124-.124-.124h-2.21V6.944c0-.097-.063-.15-.15-.08l-3.954 3.113c-.053.044-.07.088-.07.16v1.007c0 .08.044.124.123.124h1.539v3.855c0 2.087 1.203 3.06 2.918 3.06.743 0 1.46-.194 1.884-.442.062-.035.07-.07.07-.133v-1.68c0-.088-.044-.115-.123-.07" transform="translate(-0.95,0)"></path>
</svg>
</a>
<a
href="https://www.youtube.com/c/thenewstack?sub_confirmation=1"
class="follow-icon follow-icon-youtube"
data-platform="youtube"
data-position="footer"
target="_blank"
>
<svg viewBox="0 0 310 310" class="fill">
<g id="XMLID_822_">
<path id="XMLID_823_" d="M297.917,64.645c-11.19-13.302-31.85-18.728-71.306-18.728H83.386c-40.359,0-61.369,5.776-72.517,19.938
C0,79.663,0,100.008,0,128.166v53.669c0,54.551,12.896,82.248,83.386,82.248h143.226c34.216,0,53.176-4.788,65.442-16.527
C304.633,235.518,310,215.863,310,181.835v-53.669C310,98.471,309.159,78.006,297.917,64.645z M199.021,162.41l-65.038,33.991
c-1.454,0.76-3.044,1.137-4.632,1.137c-1.798,0-3.592-0.484-5.181-1.446c-2.992-1.813-4.819-5.056-4.819-8.554v-67.764
c0-3.492,1.822-6.732,4.808-8.546c2.987-1.814,6.702-1.938,9.801-0.328l65.038,33.772c3.309,1.718,5.387,5.134,5.392,8.861
C204.394,157.263,202.325,160.684,199.021,162.41z"/>
</g>
</svg>
</a>
</div>
</div>
<script>
$(document).ready(function() {
var $follow_links = $('.tns-follow-links[data-instanceid="6a848526c1f57"]');
var categories = $follow_links.data('categories');
$follow_links.find('.follow-icon').on('click', function() {
var context = window.location.pathname;
var platform = $(this).data('platform');
var position = $(this).data('position');
var payload = {
'event' : 'follow_link_click',
'platform' : platform,
'context' : context,
'position' : position
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
</script>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</footer>
<script>
$(document).ready(function() {
$('#tns-footer a').on('click', function(event) {
var href = $(this).attr('href');
window.dataLayer.push({
'event' : 'footer_link_click',
'url' : href
});
})
});
function injectAds() {
if (window.innerWidth >= 768 || ! document.body.classList.contains('single-post')) {
return;
}
const paragraphsBetweenAds = 4;
const maxAds = 1;
const paragraphs = document.querySelectorAll('#tns-post-body-content > p');
const paragraphCount = paragraphs.length;
let count = 1;
let position = paragraphsBetweenAds;
let adCount = 0;
while (position < paragraphCount && adCount < maxAds) {
const myNode = paragraphs[position];
const adContainer = document.createElement('div');
adContainer.setAttribute('class', 'ad-container ad-container--inline');
adContainer.setAttribute('id', `div-gpt-ad-native-inline-${count}`);
myNode.insertAdjacentElement('beforebegin', adContainer);
googletag
.defineSlot('/22873384501/tns/native_inline_' + count, ['fluid'], 'div-gpt-ad-native-inline-' + count)
.setTargeting('position', 'inline_' + count)
.addService(googletag.pubads());
googletag.display(`div-gpt-ad-native-inline-${count}`);
adCount++;
count += 1;
position = count * paragraphsBetweenAds;
}
};
googletag.cmd.push(function(){
injectAds();
});
window.addEventListener('resize', function(event) {
if ( document.getElementById('div-gpt-ad-native-inline-1') ) {
return;
}
injectAds();
}, true);
</script>
<div id="tns-footer-bar">
<div class="ad-container native-bottom" id="div-gpt-ad-native-bottom">
<script>
googletag.cmd.push(function() {
googletag.display("div-gpt-ad-native-bottom");
});
</script>
</div>
<script>
$(document).ready(function() {
$(window).scroll(function($event) {
var scrollTop = $(window).scrollTop();
footerBarHeight = $('#tns-footer-bar').height();
if (scrollTop < 180) {
$('#tns-footer-bar').stop().transition({
bottom : footerBarHeight * -1,
duration : 333,
easing : 'easeOutQuad'
});
$('.cky-btn-revisit-wrapper').stop().transition({
bottom : '15px',
duration : 333,
easing : 'easeOutQuad'
});
}
if (scrollTop >= 180) {
$('#tns-footer-bar').stop().transition({
bottom : '0px',
duration : 777,
easing : 'easeOutQuad'
});
$('.cky-btn-revisit-wrapper').stop().transition({
bottom : footerBarHeight + 15,
duration : 777,
easing : 'easeOutQuad'
});
}
});
$('.unit-1200-60').on('click', function($event) {
$event.stopPropagation();
var url = $(this).data('url');
window.open(url, '_blank');
});
$('.unit-1200-60 a').on('click', function($event) {
$event.stopPropagation();
});
});
</script>
</div>
<script>
$(document).ready(function() {
///
/// Track Author hit in GA
///
var postTitle = $('#post-title').text();
var authors = '';
$('#tns-post-headline-byline .author a').each(function() {
authors += $(this).text() + ',';
});
authorsCSV = authors.replace(/,\s*$/, "");
console.log('Post Title: ' + postTitle);
if (authorsCSV) {
window.dataLayer.push({
'event' : 'author_hit',
'author_name' : authorsCSV,
'post_title' : postTitle
});
}
///
/// External Link Tracking
///
$('body').on('click', 'a.ext-link', function($event) {
$event.preventDefault();
var url = $(this).attr('href');
var UTMnone = $(this).hasClass('utm-none');
url = window.appendUTM(url, 'inline-mention', UTMnone);
console.log('Appended UTM Params: ' + url);
var parsedUrl = new URL(url);
var domain = parsedUrl.hostname;
var path = parsedUrl.pathname;
var queryString = parsedUrl.search;
var inline = false;
if (queryString.includes('utm_content=inline-mention')) {
inline = true;
}
window.dataLayer.push({
'event' : 'external_url_click',
'url' : url,
'domain' : domain,
'path' : path,
'query_string' : queryString,
'inline' : inline
});
console.log('Opening in new tab: ' + url);
window.open(url, '_blank');
});
///
/// Scroll-depth Tracking
///
var tracked25 = false;
var tracked50 = false;
var tracked75 = false;
var tracked90 = false;
document.addEventListener('scroll', function() {
var path = window.location.pathname;
var depth = '<25%';
var h = document.documentElement,
b = document.body,
st = 'scrollTop',
sh = 'scrollHeight';
var percent = parseInt ( (h[st]||b[st]) / ((h[sh]||b[sh]) - h.clientHeight) * 100);
if (percent == 25) {
if (tracked25) return;
tracked25 = true;
depth = '25%';
window.dataLayer.push({
'event' : 'scroll_depth',
'url' : path,
'depth' : depth
});
} else if (percent == 50){
if (tracked50) return;
tracked50 = true;
depth = '50%';
window.dataLayer.push({
'event' : 'scroll_depth',
'url' : path,
'depth' : depth
});
} else if (percent == 75) {
if (tracked75) return;
tracked75 = true;
depth = '75%';
window.dataLayer.push({
'event' : 'scroll_depth',
'url' : path,
'depth' : depth
});
} else if (percent == 90) {
if (tracked90) return;
tracked90 = true;
depth = '90%';
window.dataLayer.push({
'event' : 'scroll_depth',
'url' : path,
'depth' : depth
});
}
});
});
</script>
<script>
$(document).ready(function() {
///
/// Track Sponsor Note Clicks
///
function trackSponsorNoteClicks(sponsorSlug, url) {
window.dataLayer.push({
'event' : 'sponsor_note_click',
'sponsor' : sponsorSlug,
'url' : url
});
}
$('.sponsor-note-logo-link').on('click', function($event) {
$event.preventDefault();
});
$('.sponsor-note-profile').on('click', function($event) {
var sponsorSlug = $(this).data('sponsor');
var url = $(this).data('url');
/// Append any missing UTMs to the URL
var UTMnone = $(this).parent().hasClass('utm-none');
url = window.appendUTM(url, 'sponsor+module', UTMnone);
trackSponsorNoteClicks(sponsorSlug, url);
window.open(url, '_blank');
});
$('.contributor-note-logo-link').on('click', function($event) {
$event.preventDefault();
});
$('.contributor-note-profile').on('click', function($event) {
var contributorSlug = $(this).data('contributor');
var url = $(this).data('url');
/// Append any missing UTMs to the URL
var UTMnone = $(this).parent().hasClass('utm-none');
url = window.appendUTM(url, 'contributor+module', UTMnone);
window.dataLayer.push({
'event': 'contributor_note_click',
'contributor': contributorSlug,
'url': url
});
window.open(url, '_blank');
});
$('body').on('click', '.sponsors-rss-block-logo-link', function($event) {
$event.preventDefault();
var sponsorSlug = $(this).data('sponsor');
var url = $(this).data('url');
/// Append any missing UTMs to the URL
var UTMnone = $(this).parent().hasClass('utm-none');
url = window.appendUTM(url, 'sponsor+module', UTMnone);
trackSponsorNoteClicks(sponsorSlug, url);
window.open(url, '_blank');
});
$('body').on('click', '.sponsors-rss-block-profile-link', function($event) {
$event.preventDefault();
var sponsorSlug = $(this).data('sponsor');
var url = $(this).data('url');
/// Append any missing UTMs to the URL
var UTMnone = $(this).parent().hasClass('utm-none');
url = window.appendUTM(url, 'sponsor+module', UTMnone);
trackSponsorNoteClicks(sponsorSlug, url);
window.open(url, '_blank');
});
///
/// Track Sponsor RSS Link Clicks
///
/// Determine if this is a sponsored post and
/// if it's a Sponsor-Contributed Article
function trackSponsorRSSClicks(sponsorSlug, title, url, context) {
context = context + '';
window.dataLayer.push({
'event' : 'sponsor_rss_click',
'sponsor' : sponsorSlug,
'rss_post_title' : title,
'url' : url,
'context' : context
});
}
/// Track RSS Link Clicks From Within the Sponsor Note
$('body').on('click', '.sponsor-rss-link', function($event) {
$event.stopPropagation();
var sponsorSlug = $(this).attr('data-sponsor');
var title = $(this).attr('aria-label');
var url = $(this).attr('href');
var context = 'note';
trackSponsorRSSClicks(sponsorSlug, title, url, context)
});
/// Track RSS Link Clicks From Within the Sponsor RSS Footer
$('body').on('click', '.sponsors-rss-link', function($event) {
$event.stopPropagation();
var sponsorSlug = $(this).attr('data-sponsor');
var title = $(this).attr('aria-label');
var url = $(this).attr('href');
var context = 'footer';
trackSponsorRSSClicks(sponsorSlug, title, url, context)
});
///
/// Track Sponsor Disclosure Link Clicks
///
$('.sponsor-disclosure-link').on('click', function($event) {
event.preventDefault();
var url = $(this).attr('href');
/// Append any missing UTMs to the URL
var UTMnone = $(this).parent().hasClass('utm-none');
url = window.appendUTM(url, 'sponsor+module', UTMnone);
window.open(url, '_blank');
});
});
</script>
<style>
.pswp__img {
background: #FFFFFF;
}
.pswp-trigger {
display: block;
position: relative;
cursor: zoom-in;
}
.pswp-trigger.no-caption {
margin-bottom: 40px;
}
.pswp-zoom-icon {
position: absolute;
bottom: 0px;
right: 0px;
color: #8DA6C0;
font-size: 11px;
z-index: 2;
transform: translate(0,23px);
}
.pswp-zoom-icon svg {
display: inline-block;
width: 12px;
height: 12px;
transform: translate(0,3px);
}
.pswp-zoom-icon svg path {
fill: #8DA6C0;
}
.pswp-trigger:hover .pswp-zoom-icon {
color: #FF3287;
}
.pswp-trigger:hover .pswp-zoom-icon svg path {
fill: #FF3287;
}
.wp-caption-text {
padding-right: 50px;
}
</style>
<script>
$(document).ready(function() {
var catsCSV = 'cloud-native,containers,microservices';
var sponsor = '';
function isPhonePortrait() {
return window.matchMedia('(max-width: 600px) and (orientation: portrait)').matches;
}
///
/// Bind for images with captions
///
$('#tns-post-body-content .wp-caption a img').unwrap();
$('#tns-post-body-content .wp-caption img').each(function() {
var $img = $(this);
var url = $(this).attr('src');
var clone = new Image();
clone.src = $(this).attr('src');
var naturalWidth = null;
var naturalHeight = null;
$(clone).load(function() {
naturalWidth = this.width;
naturalHeight = this.height;
$img.wrap('<a href="' + url + '" class="pswp-trigger" data-pswp-width="' + naturalWidth + '" data-pswp-height="' + naturalHeight + '"></a>"');
$('.pswp-trigger').children('.pswp-zoom-icon').remove();
$('.pswp-trigger').append('<div class="pswp-zoom-icon"><svg xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" width="24" height="24" viewBox="0 0 24 24"><path d="M15.853 16.56c-1.683 1.517-3.911 2.44-6.353 2.44-5.243 0-9.5-4.257-9.5-9.5s4.257-9.5 9.5-9.5 9.5 4.257 9.5 9.5c0 2.442-.923 4.67-2.44 6.353l7.44 7.44-.707.707-7.44-7.44zm-6.353-15.56c4.691 0 8.5 3.809 8.5 8.5s-3.809 8.5-8.5 8.5-8.5-3.809-8.5-8.5 3.809-8.5 8.5-8.5zm-4.5 8h4v-4h1v4h4v1h-4v4h-1v-4h-4v-1z"/></svg> Zoom</div>');
});
});
var lightbox = new PhotoSwipeLightbox({
gallery : '#tns-post-body-content .wp-caption',
children : 'a.pswp-trigger',
mouseMovePan : true,
zoom : false, /// Hides zoom icon in PSWP UI
pinchToClose : true,
closeOnVerticalDrag : true,
bgClickAction : 'close',
padding : {
top : 50,
bottom : 50,
left : 50,
right : 50
},
bgOpacity : 0.9,
initialZoomLevel : (zoomLevelObject) => {
if (isPhonePortrait()) {
return zoomLevelObject.vFill;
} else {
return zoomLevelObject.fit;
}
},
secondaryZoomLevel : (zoomLevelObject) => {
if (isPhonePortrait()) {
return zoomLevelObject.fit;
} else {
return 1;
}
},
maxZoomLevel : 3,
pswpModule : PhotoSwipe
});
lightbox.init();
lightbox.on('openingAnimationEnd', function() {
var url = lightbox.pswp.currSlide.data.src;
url = url.replace('https://cdn.thenewstack.io/media', '');
var payload = {
'event' : 'media_engagement',
'media_action' : 'image_zoom',
'url' : url,
'sponsor' : sponsor
};
if (catsCSV) {
payload.categories = catsCSV;
}
window.dataLayer.push(payload);
});
///
/// Bind for images without captions
///
$('#tns-post-body-content p a img').unwrap();
$('#tns-post-body-content p img').each(function() {
var $img = $(this);
var url = $(this).attr('src');
var clone = new Image();
clone.src = $(this).attr('src');
var naturalWidth = null;
var naturalHeight = null;
$(clone).load(function() {
naturalWidth = this.width;
naturalHeight = this.height;
$img.wrap('<a href="' + url + '" class="pswp-trigger no-caption" data-pswp-width="' + naturalWidth + '" data-pswp-height="' + naturalHeight + '"></a>"');
$('.pswp-trigger').children('.pswp-zoom-icon').remove();
$('.pswp-trigger').append('<div class="pswp-zoom-icon"><svg xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" width="24" height="24" viewBox="0 0 24 24"><path d="M15.853 16.56c-1.683 1.517-3.911 2.44-6.353 2.44-5.243 0-9.5-4.257-9.5-9.5s4.257-9.5 9.5-9.5 9.5 4.257 9.5 9.5c0 2.442-.923 4.67-2.44 6.353l7.44 7.44-.707.707-7.44-7.44zm-6.353-15.56c4.691 0 8.5 3.809 8.5 8.5s-3.809 8.5-8.5 8.5-8.5-3.809-8.5-8.5 3.809-8.5 8.5-8.5zm-4.5 8h4v-4h1v4h4v1h-4v4h-1v-4h-4v-1z"/></svg> Zoom</div>');
});
});
var lightbox2 = new PhotoSwipeLightbox({
gallery : '#tns-post-body-content p',
children : 'a.pswp-trigger',
mouseMovePan : true,
zoom : false, /// Hides zoom icon
pinchToClose : true,
closeOnVerticalDrag : true,
bgClickAction : 'close',
padding : {
top : 50,
bottom : 50,
left : 50,
right : 50
},
bgOpacity : 0.9,
initialZoomLevel : (zoomLevelObject) => {
if (isPhonePortrait()) {
return zoomLevelObject.vFill;
} else {
return zoomLevelObject.fit;
}
},
secondaryZoomLevel : (zoomLevelObject) => {
if (isPhonePortrait()) {
return zoomLevelObject.fit;
} else {
return 1;
}
},
maxZoomLevel : 3,
pswpModule : PhotoSwipe
});
lightbox2.init();
lightbox2.on('openingAnimationEnd', function() {
var url = lightbox2.pswp.currSlide.data.src;
url = url.replace('https://cdn.thenewstack.io/media', '');
var payload2 = {
'event' : 'media_engagement',
'media_action' : 'image_zoom',
'url' : url,
'sponsor' : sponsor
};
if (catsCSV) {
payload2.categories = catsCSV;
}
window.dataLayer.push(payload2);
});
});
</script>
<script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/tns-2022/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script type="text/javascript" id="avc_frontend-js-extra">
/* <![CDATA[ */
var AdRefreshControl = {"advertiserIds":[],"lineItemIds":[],"sizesToExclude":"","slotIdsToExclude":{"div-gpt-ad-native-inline-1":1,"div-gpt-ad-native-inline-2":1,"div-gpt-ad-native-sidebar-1":1,"div-gpt-ad-native-sidebar-2":1,"div-gpt-ad-native-sidebar-3":1,"div-gpt-ad-native-sidebar-4":1,"div-gpt-ad-native-sidebar-5":1,"div-gpt-ad-native-sidebar-6":1,"div-gpt-ad-native-sidebar-7":1,"div-gpt-ad-native-sidebar-8":1,"div-gpt-ad-native-sidebar-9":1},"viewabilityThreshold":"70","refreshInterval":"30","maximumRefreshes":"10","refreshCallback":""};
//# sourceURL=avc_frontend-js-extra
/* ]]> */
</script>
<script type="text/javascript" src="https://thenewstack.io/wp-content/plugins/ad-refresh-control/dist/js/frontend.js?ver=1.1.5" id="avc_frontend-js"></script>
<script type="text/javascript" id="wpil-frontend-script-js-extra">
/* <![CDATA[ */
var wpilFrontend = {"ajaxUrl":"/wp-admin/admin-ajax.php","postId":"22780745","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"}};
//# sourceURL=wpil-frontend-script-js-extra
/* ]]> */
</script>
<script type="text/javascript" src="https://thenewstack.io/wp-content/plugins/link-whisper-premium/js/frontend.min.js?ver=1786985749" id="wpil-frontend-script-js"></script>
<!-- Custom Tracking Code -->
<!-- MS Clarity -->
<script type="text/javascript">
(function(c,l,a,r,i,t,y){
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
})(window, document, "clarity", "script", "m7s7l68is7");
</script>
<!-- MS Ads -->
<!-- Microsoft Ads Tracking Pixel -->
<script>
(function(w,d,t,r,u){
var f,n,i;
w[u]=w[u]||[],f=function(){
var o={ti:"343097026", enableAutoSpaTracking: true};
o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad")
},
n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function(){
var s=this.readyState;
s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null)
},
i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i)
})
(window,document,"script","//bat.bing.com/bat.js","uetq");
</script>
<!-- Twitter Pixel -->
<!-- Twitter conversion tracking base code -->
<script>
!function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments);
},s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='https://static.ads-twitter.com/uwt.js',
a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script');
twq('config','oavhb');
</script>
<!-- End Twitter conversion tracking base code -->
<!-- Meta Pixel -->
<!-- Meta Pixel -->
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window,document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '1244424359562950');
fbq('track', 'PageView');
</script>
<noscript>
<img height="1" width="1" src="https://www.facebook.com/tr?id=1244424359562950&ev=PageView&noscript=1"/>
</noscript>
<!-- Meta Pixel End -->
<!-- Linkedin Pixel -->
<!-- LinkedIn Pixel -->
<script type="text/javascript"> _linkedin_partner_id = "4664394"; window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; window._linkedin_data_partner_ids.push(_linkedin_partner_id); </script>
<script type="text/javascript"> (function(l) { if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])}; window.lintrk.q=[]} var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script"); b.type = "text/javascript";b.async = true; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(window.lintrk); </script>
<noscript><img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=4664394&fmt=gif" /></noscript>
<!-- LinkedIn Pixel End -->
<!-- HubSpot -->
<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/46095657.js"></script>
<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"3129294321ba4c9980087e49d834a96a","spa":2}' crossorigin="anonymous"></script>
</body>
</html>