CINXE.COM

Online Learning and Training - O'Reilly Media

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Online Learning and Training - O'Reilly Media</title> <meta name="description" content="With O'Reilly, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more" /> <meta name="date" content="2025-02-22" /> <meta name="search_date" content="2024-08-29" /> <meta name="search-title" content="Online Learning and Training - O'Reilly Media" /> <meta name="pagename" content="Online Learning and Training - O'Reilly Media" /> <meta name="site" content="O'Reilly" /> <meta name="twitter:title" content="Online Learning and Training - O'Reilly Media" /> <meta name="twitter:description" content="With O'Reilly, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more" /> <meta name="twitter:site" content="@OReillyMedia" /> <meta property="og:type" content="website" /> <meta property="og:title" content="Online Learning and Training - O'Reilly Media" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:image" content="https://cdn.oreillystatic.com/oreilly/images/oreilly-social-200.png" /> <meta property="og:image" content="https://cdn.oreillystatic.com/oreilly/images/oreilly-social-200.png" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="language_name" content="English"> <meta name="native_language_name" content="English"> <meta name="format-detection" content="telephone=no"> <link rel="icon" type="image/png" href="//www.oreilly.com/favicon.ico"> <!--[if lte IE 9]> <script> 'article aside footer header main nav section time'.replace(/\w+/g,function(n){document.createElement(n)}) </script> <![endif]--> <link rel="stylesheet" type="text/css" href="https://cdn.oreillystatic.com/assets/css/2018_font_face.css" /> <link rel="stylesheet" type="text/css" href="https://cdn.oreillystatic.com/assets/css/odot-layout-20240226.css" /> <!--[if IE 9]> <style type="text/css"> #menu-toggle:checked ~ .mobile-nav { display:block; } .mobile-nav { display: none; } </style> <![endif]--> <!-- Initiate dataLayer for GA --> <script> loggedInObject = new Object(); var dataLayer = window.dataLayer || []; //Check for O'Reilly Unified logged-in status if (document.cookie.split(';').filter(function(item) { return item.indexOf('orm-jwt=') >= 0 }).length) { loggedInObject.unifiedLoggedIn = 'yes'; loggedInObject.loggedIn = 'yes'; dataLayer.push(loggedInObject); //Add 'loggedIn class to html tag const htmlTag = document.querySelector('html'); if (htmlTag !== null) { htmlTag.classList.add('loggedIn'); } } </script> <!-- Google Tag Manager --> <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.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5P4V6Z');</script> <!-- End Google Tag Manager --> <!-- Start VWO Async SmartCode --> <link rel="preconnect" href="https://dev.visualwebsiteoptimizer.com" /> <script type='text/javascript' id='vwoCode'> window._vwo_code || (function() { var account_id=27087, version=2.1, settings_tolerance=2000, hide_element='body', hide_element_style = 'opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important', /* DO NOT EDIT BELOW THIS LINE */ f=false,w=window,d=document,v=d.querySelector('#vwoCode'),cK='_vwo_'+account_id+'_settings',cc={};try{var c=JSON.parse(localStorage.getItem('_vwo_'+account_id+'_config'));cc=c&&typeof c==='object'?c:{}}catch(e){}var stT=cc.stT==='session'?w.sessionStorage:w.localStorage;code={use_existing_jquery:function(){return typeof use_existing_jquery!=='undefined'?use_existing_jquery:undefined},library_tolerance:function(){return typeof library_tolerance!=='undefined'?library_tolerance:undefined},settings_tolerance:function(){return cc.sT||settings_tolerance},hide_element_style:function(){return'{'+(cc.hES||hide_element_style)+'}'},hide_element:function(){if(performance.getEntriesByName('first-contentful-paint')[0]){return''}return typeof cc.hE==='string'?cc.hE:hide_element},getVersion:function(){return version},finish:function(e){if(!f){f=true;var t=d.getElementById('_vis_opt_path_hides');if(t)t.parentNode.removeChild(t);if(e)(new Image).src='https://dev.visualwebsiteoptimizer.com/ee.gif?a='+account_id+e}},finished:function(){return f},addScript:function(e){var t=d.createElement('script');t.type='text/javascript';if(e.src){t.src=e.src}else{t.text=e.text}d.getElementsByTagName('head')[0].appendChild(t)},load:function(e,t){var i=this.getSettings(),n=d.createElement('script'),r=this;t=t||{};if(i){n.textContent=i;d.getElementsByTagName('head')[0].appendChild(n);if(!w.VWO||VWO.caE){stT.removeItem(cK);r.load(e)}}else{var o=new XMLHttpRequest;o.open('GET',e,true);o.withCredentials=!t.dSC;o.responseType=t.responseType||'text';o.onload=function(){if(t.onloadCb){return t.onloadCb(o,e)}if(o.status===200){_vwo_code.addScript({text:o.responseText})}else{_vwo_code.finish('&e=loading_failure:'+e)}};o.onerror=function(){if(t.onerrorCb){return t.onerrorCb(e)}_vwo_code.finish('&e=loading_failure:'+e)};o.send()}},getSettings:function(){try{var e=stT.getItem(cK);if(!e){return}e=JSON.parse(e);if(Date.now()>e.e){stT.removeItem(cK);return}return e.s}catch(e){return}},init:function(){if(d.URL.indexOf('__vwo_disable__')>-1)return;var e=this.settings_tolerance();w._vwo_settings_timer=setTimeout(function(){_vwo_code.finish();stT.removeItem(cK)},e);var t;if(this.hide_element()!=='body'){t=d.createElement('style');var i=this.hide_element(),n=i?i+this.hide_element_style():'',r=d.getElementsByTagName('head')[0];t.setAttribute('id','_vis_opt_path_hides');v&&t.setAttribute('nonce',v.nonce);t.setAttribute('type','text/css');if(t.styleSheet)t.styleSheet.cssText=n;else t.appendChild(d.createTextNode(n));r.appendChild(t)}else{t=d.getElementsByTagName('head')[0];var n=d.createElement('div');n.style.cssText='z-index: 2147483647 !important;position: fixed !important;left: 0 !important;top: 0 !important;width: 100% !important;height: 100% !important;background: white !important;';n.setAttribute('id','_vis_opt_path_hides');n.classList.add('_vis_hide_layer');t.parentNode.insertBefore(n,t.nextSibling)}var o='https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&vn='+version;if(w.location.search.indexOf('_vwo_xhr')!==-1){this.addScript({src:o})}else{this.load(o+'&x=true')}}};w._vwo_code=code;code.init();})(); </script> <!-- End VWO Async SmartCode --> </head> <body> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5P4V6Z" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="skipToMain" id="skipToMain"><a href="#maincontent"><span class="skipToMain-text">Skip to main content</span></a></div> <header role="banner"> <div class="content"> <nav role="navigation" aria-label="site sections"> <a href="https://www.oreilly.com" class="logo" title="home page"><img src="https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red.svg" onerror="this.src='https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red_@2x.png'; this.onerror=null;" alt="O'Reilly home"></a> <button id="mobileNavButton" class="mobileNavButton mobileNavButton--collapse mobileNavButton--3dx" type="button" aria-expanded="false" aria-controls="menuList"> <span class="mobileNavButton-box"> <span class="mobileNavButton-inner"></span> </span> </button> <ul id="menuList" class="menuList mobileHidden "> <li class="menuList-itemsP1"> <ul> <li class="menuList-item menuList-signIn"><a id="nav-signIn" href="https://www.oreilly.com/member/login/">Sign In</a></li> <li class="menuList-item menuList-tryNow"><a id="nav-tryNow" class="menuList-cta" href="https://www.oreilly.com/online-learning/try-now.html">Try Now</a></li> <li class="menuList-item menuList-platform"><a id="nav-platform" class="menuList-cta" href="https://www.oreilly.com/member/login/">O&rsquo;Reilly Platform</a></li> </ul> </li> <li class="menuList-itemsP2"> <ul> <li class="menuList-item menuList-itemWithSub"><a href="https://www.oreilly.com/online-learning/teams.html">Teams</a> <ul class="menuList-subList"> <li class="menuList-subItem menuList-extra"><a href="https://www.oreilly.com/online-learning/teams.html">For business</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/government.html">For government</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/academic.html">For higher ed</a></li> </ul> </li> <li class="menuList-item"><a href="https://www.oreilly.com/online-learning/individuals.html">Individuals</a></li> <li class="menuList-item menuList-itemWithSub"><a href="https://www.oreilly.com/online-learning/features.html">Features</a> <ul class="menuList-subList"> <li class="menuList-subItem menuList-extra"><a href="https://www.oreilly.com/online-learning/features.html">All features</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/courses.html">Courses</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/feature-certification.html">Certifications</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/intro-interactive-learning.html">Interactive learning</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/live-events.html">Live events</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/feature-answers.html">Answers</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/insights-dashboard.html">Insights reporting</a></li> </ul> </li> <li class="menuList-item"><a href="https://www.oreilly.com/online-learning/pricing.html">Plans</a></li> <li class="menuList-item"><a href="https://www.oreilly.com/radar/">Blog</a></li> <li class="menuList-item" id="nav-forMarketers"><a href="https://www.oreilly.com/content-marketing-solutions.html">Content sponsorship</a></li> <li class="menuList-item menuList-item-search" id="nav-search"> <form id="js-searchForm" class="searchForm" action="https://www.oreilly.com/search/"><input id="search" type="search" name="query" placeholder="Explore our content" autocomplete="off" required=""><button id="js-searchCloseButton" class="navSearchCloseButton">Close</button></form> <button id="js-searchButton" class="navSearchButton">Search</button> </li> </ul> </li> </ul> </nav> </div> </header> <main role="main" id="maincontent"> <style> .hero p { margin: 14px 0 20px 0; font-size: 24px; font-size: 1.5rem; line-height: 1.4em; font-family: 'guardian-text-oreilly', Arial, sans-serif; font-weight: 400; } @media (min-width: 30em) { .hero p { max-width: 80%; } } @media (min-width: 40em) { .hero.hero-onlineLearning:before { background-image: url(https://cdn.oreillystatic.com/oreilly/images/mobile_online_training_800x600.jpg); background-position: right top; } .hero.hero-onlineLearning { height: auto; } .hero h1 { margin-top: 54px; font-size: 48px; font-size: 3rem; line-height: 1.1em; } .hero p { margin: 14px 0 34px 0; max-width: 60%; font-size: 32px; font-size: 2rem; line-height: 1.3em; font-family: 'gilroy', Arial, sans-serif; font-weight: 300; } } @media (min-width: 50em) { .hero.hero-onlineLearning:before { background-image: url(https://cdn.oreillystatic.com/oreilly/images/mobile_online_training_800x600.jpg); background-position: right top; } .hero h1 { max-width: 50%; } .hero p { max-width: 50%; } } @media (min-width: 58em) { .hero.hero-onlineLearning:before { background-image: url(https://cdn.oreillystatic.com/oreilly/images/odot_online_training_1368x605.jpg); } } @media (min-width: 65em) { .hero.hero-onlineLearning { height: auto; } .hero h1 { margin-top: 54px; font-size: 56px; font-size: 3.5rem; line-height: 1.1em; } .hero p { margin-bottom: 34px; max-width: 46%; font-size: 36px; font-size: 2.25rem; line-height: 1.2em; } } @media (min-width: 74em) { .hero.hero-onlineLearning { height: auto; } .hero h1 { margin-top: 54px; font-size: 64px; font-size: 4rem; line-height: 1.1em; } .hero p { margin-bottom: 34px; max-width: 46%; font-size: 40px; font-size: 2.5rem; line-height: 1.2em; } } @media (min-width: 85em) { .hero.hero-onlineLearning { height: auto; } .hero h1 { margin-top: 54px; font-size: 74px; font-size: 4.625rem; line-height: 1.1em; } .hero p { max-width: 46%; font-size: 40px; font-size: 2.5rem; line-height: 1.2em; } } /* .bentoSection */ .bentoSection { position: relative; z-index: 2; } .bentoSection .content { padding: 40px 20px; } .bentoSection-grid { display: grid; grid-template-columns: 100%; grid-auto-rows: minmax(100px, auto); gap: 20px; } .bentoSection-item { border: 1px solid rgba(0,0,0,0.22); border-radius: 24px; padding: 40px; background: rgba(255,255,255,0.8); } .bentoSection-item.item-1 { grid-column: 1; } .bentoSection-item.item-2 { grid-column: 1; } .bentoSection-item.item-3 { grid-column: 1; } .bentoSection h2 { margin: 0; font-family: "gilroy", Arial, sans-serif; font-size: 2.5rem; line-height: 1.2em; text-align: center; } .bentoSection h3 { text-align: center; } .bentoSection p { font-size: 1rem; line-height: 1.5em; text-align: center; } .bentoSection .pardotForm-test-group-heading p { margin: 0; font-size: 0.875rem; line-height: 1.5em; } .bentoSection .pardotForm-test p.pardotForm-test-privacy { font-size: .75rem; line-height: 1.5em; } .bentoSection .redButton { position: relative; display: block; margin: 32px auto 0; padding: 12px 44px 12px 20px; width: max-content; border: 0; border-radius: 8px; background-color: #d30000; font-size: 1rem; line-height: 1.25em; color: #fff; font-family: 'guardian-text-oreilly', Arial, sans-serif; font-weight: 600; letter-spacing: 0; text-decoration: none; white-space: nowrap; cursor: pointer; box-shadow: none; transition: background-color 200ms; } .bentoSection .redButton:hover, .bentoSection .redButton:focus { opacity: 1; text-decoration: none; background-color: #BC123C; color: #fff; box-shadow: none; } .bentoSection .redButton:after { content: ""; position: absolute; right: 20px; top: 50%; transform: translateY(-50%); display: block; width: 20px; height: 20px; background: transparent url(https://cdn.oreillystatic.com/images/icons/icon_full_right_arrow_white.svg) center center no-repeat; background-size: contain; } @media (min-width: 40em) { .bentoSection .content { padding: 60px 20px; } } @media (min-width: 50em) { /* 800px */ .bentoSection-grid { grid-template-columns: 56% auto; grid-auto-rows: auto 1fr; gap: 32px; align-items: start; } .bentoSection-item.item-1 { grid-column: 1; grid-row: 1 / 4; } .bentoSection-item.item-2 { grid-column: 2; grid-row: 1 / 2; } .bentoSection-item.item-3 { grid-column: 2; grid-row: 2 / 4; } .bentoSection h2 { text-align: left; } .bentoSection h3 { text-align: left; } .bentoSection p { text-align: left; } .bentoSection .redButton { margin: 32px 0 0; } } @media (min-width: 53em) { /* 848px */ .bentoSection .content { padding: 80px 20px; } } /* end .bentoSection */ /* .experts */ .experts .sectionText, .experts .sectionFigure { display: none; } /* end .experts */ /* .platformFeatures */ .platformFeatures .sectionIcon { display: none; } /* end .platformFeatures */ /* .ctaRow */ .ctaRow { padding: 0; } .ctaRow .content { padding: 40px 20px; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 20px; } .ctaRow .redButton { position: relative; display: block; margin: 0; padding: 12px 44px 12px 20px; width: max-content; border: 0; border-radius: 8px; background-color: #d30000; font-size: 1rem; line-height: 1.25em; color: #fff; font-family: 'guardian-text-oreilly', Arial, sans-serif; font-weight: 600; letter-spacing: 0; text-decoration: none; white-space: nowrap; cursor: pointer; box-shadow: none; transition: background-color 200ms; } .ctaRow .redButton:hover, .ctaRow .redButton:focus { opacity: 1; text-decoration: none; background-color: #BC123C; color: #fff; box-shadow: none; } .ctaRow .redButton:after { content: ""; position: absolute; right: 20px; top: 50%; transform: translateY(-50%); display: block; width: 20px; height: 20px; background: transparent url(https://cdn.oreillystatic.com/images/icons/icon_full_right_arrow_white.svg) center center no-repeat; background-size: contain; } @media (min-width: 40em) { .ctaRow .content { padding: 60px 20px; } } @media (min-width: 53em) { .ctaRow { padding: 0; } .ctaRow .content { padding: 80px 20px; flex-direction: row; gap: 20px; } } /* end .ctaRow */ </style> <style> body.raven { .controlVersion { display: none !important; } footer.footer { background: rgb(255, 255, 255); } /* .wrapper general */ .wrapper { display: block; background-color: rgb(18, 25, 38); .content { width: 100%; max-width: 1288px; } .sectionText { margin: 0 auto; max-width: 1050px; text-align: center; } h2 { margin-bottom: 16px; font-size: 2rem; line-height: 1.2em; font-family: 'gilroy', Arial, sans-serif; color: rgb(255, 255, 255); } p { margin-bottom: 20px; font-size: 1rem; line-height: 1.5em; font-weight: 400; color: rgb(255, 255, 255); } .textCTA, .textCTA-light, .textCTA-dark, .textCTA-blue { position: relative; display: flex; flex-direction: row; align-items: center; gap: 4px; width: max-content; padding: 12px 12px 12px 20px; border-radius: 8px; font-size: 1rem; line-height: 1.5em; font-weight: 600; color: rgb(255, 255, 255); background-color: rgb(0,113,235); text-decoration: none; transition: background-color 400ms; } .textCTA:hover, .textCTA:focus, .textCTA-light:hover, .textCTA-light:focus, .textCTA-dark:hover, .textCTA-dark:focus, .textCTA-blue:hover, .textCTA-blue:focus { text-decoration: none; background-color: rgb(0, 87, 187); } .textCTA:after, .textCTA-light:after, .textCTA-dark:after, .textCTA-blue:after { content: ""; display: block; padding-right: 4px; width: 20px; height: 20px; background: transparent url(https://cdn.oreillystatic.com/images/icons/icon_link_chevron_white.svg) left center no-repeat; background-size: contain; opacity: 1; transition: background-position-x 400ms; } .textCTA:hover:after, .textCTA:focus:after, .textCTA-light:hover:after, .textCTA-light:focus:after, .textCTA-dark:hover:after, .textCTA-dark:focus:after, .textCTA-blue:hover:after, .textCTA-blue:focus:after { background-position-x: 4px; } .btnCTA, .btnCTA-blue, .btnCTA-white { display: flex; flex-direction: row; align-items: center; gap: 4px; width: max-content; padding: 12px 12px 12px 20px; border-radius: 8px; background-color: rgb(0, 113, 235); font-size: 1rem; line-height: 1.5em; font-weight: 600; color: rgb(255, 255, 255); text-decoration: none; transition: background-color 400ms; } .btnCTA-white { color: rgb(43, 45, 48); background-color: rgb(255, 255, 255); } .btnCTA:hover, .btnCTA:focus, .btnCTA-blue:hover, .btnCTA-blue:focus { text-decoration: none; background-color: rgb(0, 87, 187); } .btnCTA-white:hover, .btnCTA-white:focus { text-decoration: none; color: rgb(43, 45, 48); background-color: rgba(255, 255, 255, .9); } .btnCTA:after, .btnCTA-blue:after, .btnCTA-white:after { content: ""; display: block; padding-right: 4px; width: 20px; height: 20px; background: transparent url(https://cdn.oreillystatic.com/images/icons/icon_link_chevron_white.svg) left center no-repeat; background-size: contain; opacity: 1; transition: background-position-x 400ms; } .btnCTA-white:after { background: transparent url(https://cdn.oreillystatic.com/images/icons/icon_link_chevron_black.svg) left center no-repeat; background-size: contain; } .btnCTA:hover:after, .btnCTA:focus:after, .btnCTA-blue:hover:after, .btnCTA-blue:focus:after, .btnCTA-white:hover:after, .btnCTA-white:focus:after { background-position-x: 4px; } .sectionIcon { display: block; margin: 0 auto 24px; width: 48px; height: 48px; padding: 11px; border-radius: 50%; background: rgb(255, 255, 255); border: 1px solid rgb(147, 196, 252); opacity: 1; animation: iconScroll forwards linear; animation-timeline: view(); animation-range: entry 0% cover 15%; } .sectionIcon svg { display: block; } .sectionLabel { display: block; margin: 0 auto 24px; width: max-content; padding: 4px 12px; border-radius: 100px; background: rgb(255, 255, 255); opacity: 1; animation: iconScroll forwards linear; animation-timeline: view(); animation-range: entry 0% cover 15%; } .sectionLabel p { margin: 0; font-size: .875rem; line-height: 1.25em; font-weight: 600; color: rgb(37, 99, 234); } .sectionBreak:before { display: none; } @media (min-width: 65em) { /* 1040px */ h2 { font-size: 2.5rem; line-height: 1.2em; } p { font-size: 1.25rem; line-height: 1.5em; } } } /* END .wrapper general */ /* .hero-onlineLearning */ .hero.hero-onlineLearning { position: relative; z-index: 1; overflow: hidden; height: auto; background: rgb(18, 25, 38) url(https://cdn.oreillystatic.com/oreilly/images/hero-events-bg-20240611.svg) center -300px no-repeat; background-size: auto 600px; } .hero.hero-onlineLearning:before, .hero.hero-onlineLearning:after { display: none; } .hero.hero-onlineLearning .mobileHidden { display: inherit; } .hero.hero-onlineLearning .content { position: relative; padding: 40px 20px 40px; text-align: center; } .hero.hero-onlineLearning .content:after { display: none; } .hero.hero-onlineLearning .sectionText { margin: 0 auto; max-width: 1050px; text-align: center; } .hero.hero-onlineLearning .sectionText h1 { margin: 0 auto 24px; max-width: 818px; font-size: 2.25rem; line-height: 1.2em; font-family: 'gilroy', Arial, sans-serif; color: rgb(255,255,255); } .hero.hero-onlineLearning .sectionText p { margin: 0 auto; max-width: 818px; font-family: 'guardian-text-oreilly', Arial, sans-serif; color: rgb(255,255,255); } @media (min-width: 40em) { /* 640px */ .hero.hero-onlineLearning .content { position: relative; padding: 40px 52px 60px; text-align: center; } .hero.hero-onlineLearning .sectionText h1 { font-size: 3rem; line-height: 1.2em; } } @media (min-width: 50em) { /* 800px */ .hero.hero-onlineLearning { background: rgb(18, 25, 38); background-size: auto auto; } .hero.hero-onlineLearning .content { display: flex; flex-direction: column; justify-content: center; padding: 96px 52px; min-height: 382px; text-align: left; } .hero.hero-onlineLearning .content:after { content: ""; display: block; position: absolute; z-index: 0; top: 0; left: auto; right: -72px; height: 100%; width: calc(((100% - 104px) * .44 - 32px + 72px) * 3.87); transform: translateX(calc(37.08% - 52px)); max-width: none; background: transparent url(https://cdn.oreillystatic.com/oreilly/images/raven_hero_butterfly_fish.jpg) center top no-repeat; background-size: contain; opacity: 1; } .hero.hero-onlineLearning .sectionText { position: relative; z-index: 1; margin: 0; width: 56%; text-align: left; } .hero.hero-onlineLearning .sectionText h1 { max-width: 1072px; font-size: 3rem; line-height: 1.2em; } .hero.hero-onlineLearning .sectionText p { font-size: 1.25rem; line-height: 1.5em; letter-spacing: -.4px; } } @media (min-width: 58em) { /* 928px */ .hero.hero-onlineLearning .sectionText h1 { font-size: 3rem; line-height: 1.2em; } } @media (min-width: 65em) { /* 1040px */ .hero.hero-onlineLearning .sectionText h1 { font-size: 3rem; line-height: 1.2em; } } @media (min-width: 77.375em) { .hero.hero-onlineLearning .content:after { right: 0; width: calc(((100% - 104px) * .44 - 32px) * 3.87); transform: translateX(calc(37.08% - 52px)); } } /* END .hero-onlineLearning */ /* .bentoSection */ .bentoSection { position: relative; z-index: 2; } .bentoSection .content { padding: 0 52px 40px; } .bentoSection-grid { display: grid; grid-template-columns: 100%; grid-auto-rows: minmax(100px, auto); gap: 20px; } .bentoSection-item { border: none; border-radius: 16px; padding: 32px 40px; background: #fff; h2 { margin: 0 0 12px; font-family: "gilroy", Arial, sans-serif; font-size: 2.5rem; line-height: 1.2em; text-align: center; color: #070D12; } h3 { text-align: center; color: #070D12; } p { font-size: 1rem; line-height: 1.5em; text-align: center; color: #4A5763; } .pardotForm-test-group-heading p, .pardotForm-test input[type="text"], .pardotForm-test input[type="email"], .pardotForm-test input[type="date"], .pardotForm-test textarea, .pardotForm-test select { color: #4A5763; } } .bentoSection-item.item-1 { grid-column: 1; } .bentoSection-item.item-2 { grid-column: 1; } .bentoSection-item.item-3 { grid-column: 1; } .bento-events { display: flex; flex-direction: column; gap: 16px; margin-top: 32px; } .bento-events a { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 24px 32px; border: 1px solid #C5CCD3; border-radius: 16px; text-decoration: none; transition: box-shadow 200ms; } .bento-events a:hover, .bento-events a:focus { box-shadow: 0 2px 8px rgba(0,0,0,.1); } .bento-events .bento-events-day { margin: 0 0 4px; font-size: 1.125rem; line-height: 1.5em; font-weight: 700; } .bento-events .bento-events-time { margin: 0 0 8px; font-size: .875rem; line-height: 1.5em; color: #525358; } .bento-events .bento-events-cta { display: flex; flex-direction: row; align-items: center; gap: 4px; margin: 0; padding:0; width: max-content; font-size: 1rem; line-height: 1.5em; font-weight: 500; color: rgb(0,113,235); text-decoration: none; transition: background-color 400ms; } .bento-events .bento-events-cta:after { content: ""; position: static; transform: none; display: block; padding-right: 4px; width: 20px; height: 20px; background: transparent url(https://cdn.oreillystatic.com/images/icons/icon_link_chevron_blue.svg) left center no-repeat; background-size: contain; opacity: 1; transition: background-position-x 400ms; } .bento-events a:hover .bento-events-cta:after, .bento-events a:focus .bento-events-cta:after { background-position-x: 4px; } .bentoSection .redButton, .bentoSection .pardotForm-test-cta { display: flex; flex-direction: row; align-items: center; gap: 4px; width: max-content; padding: 12px 12px 12px 20px; border-radius: 8px; background-color: rgb(0,113,235); font-size: 1rem; line-height: 1.5em; font-weight: 600; color: rgb(255, 255, 255); text-decoration: none; transition: background-color 400ms; } .bentoSection .redButton:hover, .bentoSection .redButton:focus, .bentoSection .pardotForm-test-cta:hover, .bentoSection .pardotForm-test-cta:focus { text-decoration: none; background-color: rgb(0, 87, 187); } .bentoSection .redButton:after, .bentoSection .pardotForm-test-cta:after { content: ""; position: static; transform: none; display: block; padding-right: 4px; width: 20px; height: 20px; background: transparent url(https://cdn.oreillystatic.com/images/icons/icon_link_chevron_white.svg) left center no-repeat; background-size: contain; opacity: 1; transition: background-position-x 400ms; } .bentoSection .redButton:hover:after, .bentoSection .redButton:focus:after, .bentoSection .pardotForm-test-cta:hover:after, .bentoSection .pardotForm-test-cta:focus:after { background-position-x: 4px; } @media (min-width: 50em) { /* 800px */ .bentoSection .content { padding: 0 52px 92px; } .bentoSection-grid { grid-template-columns: 56% auto; grid-auto-rows: auto 1fr; gap: 32px; } .bentoSection-item.item-1 { grid-column: 1; grid-row: 1 / 3; } .bentoSection-item.item-2 { grid-column: 2; } .bentoSection-item.item-3 { grid-column: 2; } .bento-events a { align-items: unset; text-align: left; } .bentoSection h2 { text-align: left; } .bentoSection h3 { text-align: left; } .bentoSection p { text-align: left; } .bentoSection .redButton { margin: 32px 0 0; } } /* end .bentoSection */ /* .experts */ .experts { padding: 0; } .experts .content { padding: 40px 20px 40px; display: flex; flex-direction: column; gap: 64px; } .experts .content:after { display: none !important; } .experts .experts-textWrapper, .experts .experts-imageWrapper { display: none !important; } .experts .sectionText { display: block; } .experts p { margin-bottom: 32px; } .experts p:last-child { margin-bottom: 0; } .experts .sectionFigure { display: block; margin: 0 auto 40px; width: 80%; } .experts .sectionFigure .expertsPannels { display: grid; grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(3, 1fr); gap: 24px; height: auto; } .experts .sectionFigure .expertsPannels a { display: flex; flex-direction: column; height: auto; width: 100%; background-repeat: no-repeat; background-position: center top; background-size: contain; border-radius: 8px; transition: width .5s; border: 1px solid #fff; background-color: #fff; text-decoration: none; cursor: pointer; opacity: .9; transition: transform 400ms ease-out, opacity 400ms ease-out; } .experts .sectionFigure .expertsPannels a:before { content: ""; display: block; width: 100%; height: 0; padding-bottom: 100%; } .experts .sectionFigure .expertsPannels a:hover, .experts .sectionFigure .expertsPannels a:focus { text-decoration: none; opacity: 1; transform: scale(108%); } .experts .sectionFigure .expertsPannels a .text { display: flex; flex-direction: column; gap: 4px; padding: 16px; font-size: 1rem; line-height: 1.5em; } .experts .sectionFigure .expertsPannels a .name { display: block; font-weight: bold; } .experts .sectionFigure .expertsPannels a .affiliation { font-size: .75rem; line-height: 1.5em; } @media (min-width: 40em) { /* 640px */ .experts .content { padding: 40px 52px 40px; } .experts .sectionFigure .expertsPannels { grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(2, 1fr); } } @media (min-width: 62em) { .experts .content { padding: 92px 52px; display: flex; flex-direction: row; align-items: center; gap: 112px; } .wrapper .experts .sectionIcon { margin: 0 0 24px; } .experts .sectionText { margin: 0; width: calc(50% - 56px); padding: 0; text-align: left; } .experts .sectionFigure { margin: -30px 0; width: calc(50% - 56px); padding: 0; } } /* END .experts */ /* .platformFeatures */ .platformFeatures { padding: 0; } .platformFeatures .content { display: flex; flex-direction: column; gap: 64px; padding: 40px 20px 40px; } .platformFeatures .platformFeatures-item { margin: 0; padding-left: 0; width: 100%; text-align: center; color: #fff; vertical-align: unset; background: none; h3 { margin-bottom: 8px; font-size: 1.875rem; line-height: 1.25em; font-weight: 600; } } @media (min-width: 40em) { .platformFeatures .content { padding: 40px 52px; } .platformFeatures .platformFeatures-item { width: 100%; } } @media (min-width: 50em) { .platformFeatures .content { display: flex; flex-direction: row; flex-wrap: wrap; gap: 64px 112px; } .platformFeatures .platformFeatures-item { width: calc(50% - 56px); } } @media (min-width: 62em) { .platformFeatures .content { padding: 92px 52px; } } /* END .platformFeatures */ /* .ctaRow */ .ctaRow { padding: 0; } .ctaRow .content { padding: 40px 20px 80px; display: flex; flex-direction: row; flex-wrap: wrap; justify-content: center; align-items: center; gap: 20px; } .ctaRow .btnCTA-blue:after, .ctaRow .btnCTA-white:after { position: static; right: 0; top: 0; transform: none; } @media (min-width: 40em) { .ctaRow .content { padding: 40px 52px 80px; } } @media (min-width: 62em) { .ctaRow .content { padding: 92px 52px 184px; } } @media (min-width: 65em) { .ctaRow .btnCTA-blue, .ctaRow .btnCTA-white { font-size: 1.25rem; line-height: 1.5em; } } /* END .ctaRow */ .wrapper { contain: paint; } .wrapper .ravenBlobs { position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: 100%; max-width: 1280px; height: 100%; z-index: 0; div { opacity: 1; } .blob1 { position: absolute; left: calc(-1200px / 1.75); top: 1060px; width: 1200px; height: 1200px; background: transparent url(https://cdn.oreillystatic.com/oreilly/images/raven_blob_purple.svg) 0 0 no-repeat; background-size: contain; @media (min-width:50em) { & { left: calc(-2000px / 1.75); top: 1060px; width: 1920px; height: 1920px; } } @media (min-width:80em) { & { left: calc(-2000px / 1.75); top: 760px; width: 1920px; height: 1920px; } } } .blob2 { position: absolute; right: calc(-1200px / 1.75); top: 2600px; width: 1200px; height: 1200px; background: transparent url(https://cdn.oreillystatic.com/oreilly/images/raven_blob_blue.svg) 0 0 no-repeat; background-size: contain; @media (min-width:50em) { & { right: calc(-2000px / 1.75); top: 2600px; width: 1920px; height: 1920px; } } @media (min-width:80em) { & { right: calc(-2000px / 1.75); top: 2200px; width: 1920px; height: 1920px; } } } .blob3 { position: absolute; left: calc(-1200px / 1.75); top: 3400px; width: 1200px; height: 1200px; background: transparent url(https://cdn.oreillystatic.com/oreilly/images/raven_blob_purple.svg) 0 0 no-repeat; background-size: contain; @media (min-width:50em) { & { left: calc(-2000px / 1.75); top: 3400px; width: 1920px; height: 1920px; } } @media (min-width:80em) { & { left: calc(-2000px / 1.75); top: 2800px; width: 1920px; height: 1920px; } } } .blob4 { position: absolute; right: calc(-1200px / 1.75); top: 5000px; width: 1200px; height: 1200px; background: transparent url(https://cdn.oreillystatic.com/oreilly/images/raven_blob_blue.svg) 0 0 no-repeat; background-size: contain; @media (min-width:50em) { & { right: calc(-2000px / 1.75); top: 5000px; width: 1920px; height: 1920px; } } @media (min-width:80em) { & { right: calc(-2000px / 1.75); top: 4400px; width: 1920px; height: 1920px; } } } .blob5 { position: absolute; left: calc(-1200px / 1.75); top: 6600px; width: 1200px; height: 1200px; background: transparent url(https://cdn.oreillystatic.com/oreilly/images/raven_blob_purple.svg) 0 0 no-repeat; background-size: contain; @media (min-width:50em) { & { left: calc(-2000px / 1.75); top: 6600px; width: 1920px; height: 1920px; } } @media (min-width:80em) { & { left: calc(-2000px / 1.75); top: 6000px; width: 1920px; height: 1920px; } } } .blob6 { position: absolute; right: calc(-1200px / 1.75); top: 8200px; width: 1200px; height: 1200px; background: transparent url(https://cdn.oreillystatic.com/oreilly/images/raven_blob_blue.svg) 0 0 no-repeat; background-size: contain; @media (min-width:50em) { & { right: calc(-2000px / 1.75); top: 8200px; width: 1920px; height: 1920px; } } @media (min-width:80em) { & { right: calc(-2000px / 1.75); top: 7600px; width: 1920px; height: 1920px; } } } } } /* Define the icon scroll animation */ @keyframes iconScroll { 0% { transform: scale(75%) translateY(20px); opacity: 0; } 25% { transform: scale(75%) translateY(20px); opacity: 0; } 100% { transform: scale(100%) translateY(0); opacity: 1; } } </style> <div class="wrapper"> <section class="hero hero-onlineLearning"> <div class="content"> <div class="sectionText"> <h1>Join O&rsquo;Reilly</h1> <p class="mobileHidden">Get the answers and insight to build a better tomorrow</p> </div> </div> </section> <section class="bentoSection"> <div class="content"> <div class="bentoSection-grid"> <div class="bentoSection-item item-1"> <div class="bentoSection-form" id="bentoSection-form"> <h2>Get a demo</h2> <p>Learn how O&rsquo;Reilly benefits teams of 26+ people on a 1:1 tour.</p> <form role="form" id="pardotForm-test" class="pardotForm-test salesforce-form" novalidate="true" method="post" data-pardot-form="lead gen form submit, request demo, enterprise short" action="https://ae.oreilly.com/l/1009792/2023-03-31/bwx4"> <div id="pardotForm-test-errorMessage" class="pardotForm-test-errorMessage"></div> <noscript> <p>Do you have JavaScript turned off? Sorry, but this form won&rsquo;t work without it.</p> </noscript> <div class="pardotForm-test-fields"> <div class="pardotForm-test-group"> <div class="pardotForm-test-group-heading"> <h3>Tell us about yourself!</h3> <p>We collect your general info so we know who we&rsquo;ll be speaking with and how to reach you.</p> </div> <div class="pardotForm-test-split"> <div> <label for="pardotForm-test_first_name">First name</label> <input type="text" name="first_name" id="pardotForm-test_first_name" data-text="first name" autocomplete="given-name" aria-required="true" disabled > </div> <div> <label for="pardotForm-test_last_name">Last name</label> <input type="text" name="last_name" id="pardotForm-test_last_name" data-text="last name" autocomplete="family-name" aria-required="true" disabled > </div> </div> <div class="pardotForm-test-full"> <label for="pardotForm-test_email">Work email address</label> <input type="email" name="email" id="pardotForm-test_email" data-text="email address" autocomplete="email" aria-required="true" disabled > </div> <div class="pardotForm-test-full"> <label for="pardotForm-test_phone">Phone number (optional)</label> <input type="text" name="phone" id="pardotForm-test_phone" data-text="phone" autocomplete="tel" disabled> </div> </div> <div class="pardotForm-test-group"> <div class="pardotForm-test-group-heading"> <h3>What&rsquo;s your organization about?</h3> <p>We collect general info about your organization to know how best to meet your needs.</p> </div> <div class="pardotForm-test-split"> <div> <label for="pardotForm-test_company">Company name</label> <input type="text" name="company" id="pardotForm-test_company" data-text="company" autocomplete="organization" aria-required="true" disabled> </div> <div> <label for="pardotForm-test_job_title">Job title</label> <input type="text" name="job_title" id="pardotForm-test_job_title" data-text="job title" autocomplete="organization-title" aria-required="true" disabled> </div> </div> </div> <div class="pardotForm-test-group"> <div class="pardotForm-test-group-heading"> <h3>Where are you located?</h3> <p>We collect info about your location to route you to the appropriate representative.</p> </div> <div class="pardotForm-test-split"> <div> <label for="pardotForm-test_country">Country</label> <select name="country" id="pardotForm-test_country" data-text="country" autocomplete="country-name" aria-required="true" disabled > <option disabled selected value>- Select country -</option> <option value="Afghanistan">Afghanistan</option> <option value="Albania">Albania</option> <option value="Algeria">Algeria</option> <option value="Andorra">Andorra</option> <option value="Angola">Angola</option> <option value="Antigua and Barbuda">Antigua and Barbuda</option> <option value="Argentina">Argentina</option> <option value="Armenia">Armenia</option> <option value="Aruba">Aruba</option> <option value="Australia">Australia</option> <option value="Austria">Austria</option> <option value="Azerbaijan">Azerbaijan</option> <option value="Bahamas">The Bahamas</option> <option value="Bahrain">Bahrain</option> <option value="Bangladesh">Bangladesh</option> <option value="Barbados">Barbados</option> <option value="Belarus">Belarus</option> <option value="Belgium">Belgium</option> <option value="Belize">Belize</option> <option value="Benin">Benin</option> <option value="Bermuda">Bermuda</option> <option value="Bhutan">Bhutan</option> <option value="Bolivia, Plurinational State of">Bolivia</option> <option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option> <option value="Botswana">Botswana</option> <option value="Brazil">Brazil</option> <option value="Brunei Darussalam">Brunei</option> <option value="Bulgaria">Bulgaria</option> <option value="Burkina Faso">Burkina Faso</option> <option value="Burundi">Burundi</option> <option value="Cambodia">Cambodia</option> <option value="Cameroon">Cameroon</option> <option value="Canada">Canada</option> <option value="Cape Verde">Cape Verde</option> <option value="Central African Republic">Central African Republic</option> <option value="Chad">Chad</option> <option value="Chile">Chile</option> <option value="China">People's Republic of China</option> <option value="Colombia">Colombia</option> <option value="Comoros">Comoros</option> <option value="Congo, the Democratic Republic of the">Congo, Democratic Republic of the</option> <option value="Congo">Congo, Republic of the</option> <option value="Cook Islands">Cook Islands</option> <option value="Costa Rica">Costa Rica</option> <option value="Cote d'Ivoire">C&ocirc;te d'Ivoire (Ivory Coast)</option> <option value="Croatia">Croatia</option> <option value="Cuba">Cuba</option> <option value="Cyprus">Cyprus</option> <option value="Czech Republic">Czechia</option> <option value="Denmark">Denmark</option> <option value="Djibouti">Djibouti</option> <option value="Dominica">Dominica</option> <option value="Dominican Republic">Dominican Republic</option> <option value="Ecuador">Ecuador</option> <option value="Egypt">Egypt</option> <option value="El Salvador">El Salvador</option> <option value="Equatorial Guinea">Equatorial Guinea</option> <option value="Eritrea">Eritrea</option> <option value="Estonia">Estonia</option> <option value="Swaziland">Eswatini (formerly Swaziland)</option> <option value="Ethiopia">Ethiopia</option> <option value="Fiji">Fiji</option> <option value="Finland">Finland</option> <option value="France">France</option> <option value="Gabon">Gabon</option> <option value="Gambia">The Gambia</option> <option value="Georgia">Georgia</option> <option value="Germany">Germany</option> <option value="Ghana">Ghana</option> <option value="Greece">Greece</option> <option value="Grenada">Grenada</option> <option value="Guatemala">Guatemala</option> <option value="Guinea">Guinea</option> <option value="Guinea-Bissau">Guinea-Bissau</option> <option value="Guyana">Guyana</option> <option value="Haiti">Haiti</option> <option value="Honduras">Honduras</option> <option value="Hungary">Hungary</option> <option value="Iceland">Iceland</option> <option value="India">India</option> <option value="Indonesia">Indonesia</option> <option value="Iran, Islamic Republic of">Iran</option> <option value="Iraq">Iraq</option> <option value="Ireland">Ireland</option> <option value="Israel">Israel</option> <option value="Italy">Italy</option> <option value="Jamaica">Jamaica</option> <option value="Japan">Japan</option> <option value="Jordan">Jordan</option> <option value="Kazakhstan">Kazakhstan</option> <option value="Kenya">Kenya</option> <option value="Kiribati">Kiribati</option> <option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option> <option value="Korea, Republic of">Korea, Republic of</option> <option value="Kuwait">Kuwait</option> <option value="Kyrgyzstan">Kyrgyzstan</option> <option value="Lao People's Democratic Republic">Laos</option> <option value="Latvia">Latvia</option> <option value="Lebanon">Lebanon</option> <option value="Lesotho">Lesotho</option> <option value="Liberia">Liberia</option> <option value="Libyan Arab Jamahiriya">Libya</option> <option value="Liechtenstein">Liechtenstein</option> <option value="Lithuania">Lithuania</option> <option value="Luxembourg">Luxembourg</option> <option value="Macedonia, the former Yugoslav Republic of">Macedonia, Republic of</option> <option value="Madagascar">Madagascar</option> <option value="Malawi">Malawi</option> <option value="Malaysia">Malaysia</option> <option value="Maldives">Maldives</option> <option value="Mali">Mali</option> <option value="Malta">Malta</option> <option value="Mauritania">Mauritania</option> <option value="Mauritius">Mauritius</option> <option value="Mexico">Mexico</option> <option value="Federated States of Micronesia">Federated States of Micronesia</option> <option value="Moldova, Republic of">Moldova</option> <option value="Monaco">Monaco</option> <option value="Mongolia">Mongolia</option> <option value="Montenegro">Montenegro</option> <option value="Morocco">Morocco</option> <option value="Mozambique">Mozambique</option> <option value="Myanmar">Myanmar</option> <option value="Namibia">Namibia</option> <option value="Nauru">Nauru</option> <option value="Nepal">Nepal</option> <option value="Netherlands">Netherlands</option> <option value="New Zealand">New Zealand</option> <option value="Nicaragua">Nicaragua</option> <option value="Niger">Niger</option> <option value="Nigeria">Nigeria</option> <option value="Niue">Niue</option> <option value="Norway">Norway</option> <option value="Oman">Oman</option> <option value="Pakistan">Pakistan</option> <option value="Palestinian Territory, Occupied">Palestine, State of</option> <option value="Panama">Panama</option> <option value="Papua New Guinea">Papua New Guinea</option> <option value="Paraguay">Paraguay</option> <option value="Peru">Peru</option> <option value="Philippines">Philippines</option> <option value="Poland">Poland</option> <option value="Portugal">Portugal</option> <option value="Qatar">Qatar</option> <option value="Romania">Romania</option> <option value="Rwanda">Rwanda</option> <option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option> <option value="Saint Lucia">Saint Lucia</option> <option value="Saint Vincent and the Grenadines">Saint Vincent and the Grenadines</option> <option value="Samoa">Samoa</option> <option value="San Marino">San Marino</option> <option value="Sao Tome and Principe">S&atilde;o Tom&eacute; and Pr&iacute;ncipe</option> <option value="Saudi Arabia">Saudi Arabia</option> <option value="Senegal">Senegal</option> <option value="Serbia">Serbia</option> <option value="Seychelles">Seychelles</option> <option value="Sierra Leone">Sierra Leone</option> <option value="Singapore">Singapore</option> <option value="Slovakia">Slovakia</option> <option value="Slovenia">Slovenia</option> <option value="Solomon Islands">Solomon Islands</option> <option value="Somalia">Somalia</option> <option value="South Africa">South Africa</option> <option value="South Sudan">South Sudan</option> <option value="Spain">Spain</option> <option value="Sri Lanka">Sri Lanka</option> <option value="Sudan">Sudan</option> <option value="Suriname">Suriname</option> <option value="Sweden">Sweden</option> <option value="Switzerland">Switzerland</option> <option value="Syrian Arab Republic">Syria</option> <option value="Taiwan">Taiwan</option> <option value="Tajikistan">Tajikistan</option> <option value="Tanzania, United Republic of">Tanzania</option> <option value="Thailand">Thailand</option> <option value="Timor-Leste">Timor-Leste (East Timor)</option> <option value="Togo">Togo</option> <option value="Tonga">Tonga</option> <option value="Trinidad and Tobago">Trinidad and Tobago</option> <option value="Tunisia">Tunisia</option> <option value="Turkey">Turkey</option> <option value="Turkmenistan">Turkmenistan</option> <option value="Tuvalu">Tuvalu</option> <option value="Uganda">Uganda</option> <option value="Ukraine">Ukraine</option> <option value="United Arab Emirates">United Arab Emirates</option> <option value="United Kingdom">United Kingdom</option> <option value="United States">United States</option> <option value="Uruguay">Uruguay</option> <option value="Uzbekistan">Uzbekistan</option> <option value="Vanuatu">Vanuatu</option> <option value="Holy See (Vatican City State)">Vatican City</option> <option value="Venezuela, Bolivarian Republic of">Venezuela</option> <option value="Viet Nam">Vietnam</option> <option value="Yemen">Yemen</option> <option value="Zambia">Zambia</option> <option value="Zimbabwe">Zimbabwe</option> </select> </div> <div class="us-states disabled"> <label for="pardotForm-test_state">State</label> <select name="state" id="pardotForm-test_state" data-text="state" autocomplete="address-level1" disabled tabindex="-1"> <option disabled selected value>- Select state -</option> <option value="Alabama">Alabama</option> <option value="Alaska">Alaska</option> <option value="American Samoa">American Samoa</option> <option value="Arizona">Arizona</option> <option value="Arkansas">Arkansas</option> <option value="California">California</option> <option value="Colorado">Colorado</option> <option value="Connecticut">Connecticut</option> <option value="Delaware">Delaware</option> <option value="DC">District of Columbia</option> <option value="Florida">Florida</option> <option value="Georgia">Georgia</option> <option value="Guam">Guam</option> <option value="Hawaii">Hawaii</option> <option value="Idaho">Idaho</option> <option value="Illinois">Illinois</option> <option value="Indiana">Indiana</option> <option value="Iowa">Iowa</option> <option value="Kansas">Kansas</option> <option value="Kentucky">Kentucky</option> <option value="Louisiana">Louisiana</option> <option value="Maine">Maine</option> <option value="Maryland">Maryland</option> <option value="Massachusetts">Massachusetts</option> <option value="Michigan">Michigan</option> <option value="Minnesota">Minnesota</option> <option value="Mississippi">Mississippi</option> <option value="Missouri">Missouri</option> <option value="Montana">Montana</option> <option value="Nebraska">Nebraska</option> <option value="Nevada">Nevada</option> <option value="New Hampshire">New Hampshire</option> <option value="New Jersey">New Jersey</option> <option value="New Mexico">New Mexico</option> <option value="New York">New York</option> <option value="North Carolina">North Carolina</option> <option value="North Dakota">North Dakota</option> <option value="Northern Mariana Islands">Northern Mariana Islands</option> <option value="Ohio">Ohio</option> <option value="Oklahoma">Oklahoma</option> <option value="Oregon">Oregon</option> <option value="Pennsylvania">Pennsylvania</option> <option value="Puerto Rico">Puerto Rico</option> <option value="Rhode Island">Rhode Island</option> <option value="South Carolina">South Carolina</option> <option value="South Dakota">South Dakota</option> <option value="Tennessee">Tennessee</option> <option value="Texas">Texas</option> <option value="US Virgin Islands">U.S. Virgin Islands</option> <option value="Utah">Utah</option> <option value="Vermont">Vermont</option> <option value="Virginia">Virginia</option> <option value="Washington">Washington</option> <option value="West Virginia">West Virginia</option> <option value="Wisconsin">Wisconsin</option> <option value="Wyoming">Wyoming</option> </select> </div> </div> <div class="pardotForm-test-full option-select gdpr-consent hidden"></div> </div> </div> <input type="hidden" name="marketing_consent_context" value="demo request"> <div class="pardotForm-test-full"> <button type="submit" class="pardotForm-test-cta" onclick="return test_verif('pardotForm-test');" value="Submit" disabled> Let&rsquo;s do this </button> </div> <p class="pardotForm-test-privacy">We keep your information confidential. <a href="https://www.oreilly.com/oreilly/privacy.html">Privacy policy</a>. </p> </form> <div id="pardotForm-test-thankyou" class="pardotForm-test-thankyou hidden"> <h2>Thanks for your interest in O&rsquo;Reilly.</h2> <p>You&rsquo;ll hear from us shortly.</p> </div> <style> /* pardotForm */ .pardotForm-test, .pardotForm-test-thankyou { max-width: 100%; margin: 0 auto; font-family: 'guardian-text-oreilly', Arial, sans-serif; } .pardotForm-test-fields { margin: 36px 0 40px; display: flex; flex-direction: column; gap: 36px; } .pardotForm-test-group { display: flex; display: flex; flex-direction: column; gap: 24px; } .pardotForm-test-group-heading h3 { margin: 0 0 4px; font-size: 1.125rem; line-height: 1.5em; font-weight: 500; } .pardotForm-test-group-heading p { margin: 0; font-size: 0.875rem; line-height: 1.5em; color: #525358; } .pardotForm-test fieldset { margin: 0; padding: 0; border: 0; font-size: 100%; vertical-align: baseline; -webkit-font-smoothing: antialiased; } .pardotForm-test input, .pardotForm-test label { display: block; font-family: inherit; } .pardotForm-test label { margin: 0 0 4px; font-size: .875rem; line-height: 1.5em; font-weight: 500; } .pardotForm-test legend { margin: 0 0 4px; font-size: .875rem; line-height: 1.5em; font-weight: 400; } .pardotForm-test .disabled { opacity: .5; } .pardotForm-test .disabled label, .pardotForm-test .disabled input, .pardotForm-test .disabled textarea, .pardotForm-test .disabled select { pointer-events: none; cursor: default; } .pardotForm-test.salesforce-form p.required { margin: 0 0 4px; font-size: 0.875rem; line-height: 1.5em; font-weight: 700; } .pardotForm-test input[type="text"], .pardotForm-test input[type="email"], .pardotForm-test input[type="date"], .pardotForm-test textarea { -webkit-appearance: none; -moz-appearance: none; margin: 0; padding: 12px 10px; width: 100%; min-height: 48px; box-sizing: border-box; border: 1px solid #BCBEC3; border-radius: 8px; font-size: 0.875rem; line-height: 1.5em; color: #525358; } .pardotForm-test .option-select input[type="radio"], .pardotForm-test .option-select label { display: inline-block; margin-right: 8px; } .pardotForm-test select { -webkit-appearance: none; -moz-appearance: none; margin: 0; padding: 12px 10px; min-height: 48px; box-sizing: border-box; border: 1px solid #BCBEC3; border-radius: 8px; appearance: none; background: transparent url(https://cdn.oreillystatic.com/oreilly/images/inbound-aisf-select-arrow.png) right center no-repeat; color: #525358; font-size: 0.875rem; line-height: 1.5em; } .pardotForm-test select, .pardotForm-test .option-select { width: 100%; margin: 0; } .pardotForm-test textarea { height: auto; } .pardotForm-test-cta { position: relative; display: block; margin: 0 auto 16px; padding: 12px 44px 12px 20px; width: max-content; border-radius: 8px; background-color: #d30000; font-size: 1rem; line-height: 1.25em; color: #fff; font-family: 'guardian-text-oreilly', Arial, sans-serif; font-weight: 600; letter-spacing: 0; text-decoration: none; white-space: nowrap; cursor: pointer; border: 0; transition: background-color 200ms; } .pardotForm-test-cta:hover, .pardotForm-test-cta:active { text-decoration: none; background-color: #BC123C; color: #fff; } .pardotForm-test-cta:after { content: ""; position: absolute; right: 20px; top: 50%; transform: translateY(-50%); display: block; width: 20px; height: 20px; background: transparent url(https://cdn.oreillystatic.com/images/icons/icon_full_right_arrow_white.svg) center center no-repeat; background-size: contain; } p.pardotForm-test-fillout { font-weight: bold; margin-bottom: 0; } .pardotForm-test p.pardotForm-test-privacy { margin: 0 auto; width: 100%; max-width: max-content; font-size: .75rem; line-height: 1.5em; color: #9C9EA3; } .pardotForm-test p.pardotForm-test-privacy:before { content: ""; display: inline-block; vertical-align: middle; margin: 0 6px; width: 20px; height: 20px; background: transparent url(https://cdn.oreillystatic.com/images/icons/icon_lock_gray.svg) center center no-repeat; background-size: contain; } .pardotForm-test p.pardotForm-test-privacy a { color: #9C9EA3; } .pardotForm-test-thankyou h2 { margin: 0 0 12px; font-family: "gilroy", Arial, sans-serif; font-size: 2.5rem; line-height: 1.2em; text-align: center; font-weight: 700; } .pardotForm-test-thankyou p { font-size: 1rem; line-height: 1.5em; text-align: center; } @media (min-width: 50em) { .pardotForm-test-thankyou h2 { text-align: left; } .pardotForm-test-thankyou p { text-align: left; } } @media (min-width: 28em ) and /* 448px */ (max-width: 71em ), /* px */ (min-width: 71em) { /* 1120px */ .pardotForm-test-split { display: flex; flex-direction: row; gap: 16px; width: 100%; } .pardotForm-test-split > div { width: 50%; } } @media (min-width: 37.5em) { /* 600px */ .pardotForm-test-text, .pardotForm-test, .pardotForm-test-thankyou { box-sizing: border-box; width: 100%; } .pardotForm-test-text { margin-right: 0; } } @media (min-width: 56.25em) { /* 900px */ .pardotForm-test-text { width: 100%; } .pardotForm-test, .pardotForm-test-thankyou { width: 100%; } } /* pardotForm error message styles */ .pardotForm-test input[type="text"].error, .pardotForm-test input[type="email"].error, .pardotForm-test select.error, .pardotForm-test .option-select.error { border-width: 2px; border-color: #e00; } .pardotForm-test select.error, .pardotForm-test .option-select.error { background-color: #fae0de; color: #e00; } .pardotForm-test label.error, .pardotForm-test-errorMessage p, .pardotForm-test .option-select.error legend { padding-left: 28px; color: #e00; position: relative; } .pardotForm-test noscript { font-weight: 600; color: #e00; position: relative; } .pardotForm-test noscript p { padding-left: 28px; } .pardotForm-test label.error:before, .pardotForm-test-errorMessage p:before, .pardotForm-test noscript p:before, .pardotForm-test .option-select.error legend:before { content: url('https://cdn.oreillystatic.com/images/icons/baseline-error_outline-24px.svg'); position: absolute; left: 0; top: -2px; } .pardotForm-test button { cursor: pointer; border: 0; } .pardotForm-test button[disabled], .pardotForm-test input[disabled], .pardotForm-test textarea[disabled], .pardotForm-test select[disabled] { opacity: 0.5; } /* end pardotForm */ </style> <script src="https://cdn.oreillystatic.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script> document.addEventListener("DOMContentLoaded", function(event) { test_toggleFormThankYou(); test_enableForm(); test_addCountryEventListeners(); }); function test_toggleFormThankYou() { // show/hide form or thankyou message depending on URL parameters if (test_parseParams('submit') === 'true') { var formId = ('#' + test_parseParams('name')); test_toggleHidden(formId, formId + '-thankyou'); // Open Qualified overlay setTimeout(function() { qualified("showFormExperience", "experience-1721175106650"); }, 1000); // End Qualified //During test only console.log('test'); document.querySelector('#bentoSection-form > h2').remove(); document.querySelector('#bentoSection-form > p').remove(); history.pushState(null, "", location.href.split("?")[0]); $('html, body').animate({ scrollTop: $(formId + '-thankyou').offset().top - 200 }, 500); } } function test_parseParams(name) { name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regexS = "[\\?&]"+name+"=([^&#]*)"; var regex = new RegExp( regexS ); var results = regex.exec( window.location.href ); if (results === null) return ""; else return (results[1]); } function test_enableForm() { // enable form submit button if javascript present $('form input, form select, form textarea, form button').prop('disabled', false); } function test_addCountryEventListeners() { var countries = document.querySelectorAll('[name="country"]'); for (i = 0; i < countries.length; i++ ) { countries[i].addEventListener('change', test_identifyEventTarget, false); } } function test_identifyEventTarget(e) { var country = e.target.value; var parentForm = e.target.closest('form'); test_checkOptInStatus(country, parentForm); test_checkForStates(country, parentForm); } function test_checkOptInStatus(country, parentForm) { var gdprSelect = parentForm.getElementsByClassName('gdpr-consent')[0]; var optInHtml = '\n <fieldset role="radiogroup" aria-required="true" data-text="choice for receiving O&rsquo;Reilly email updates"> \n <legend>I would like to receive email updates from O&rsquo;Reilly on its latest ideas, events, and&nbsp;offers: <strong class="red" aria-hidden="true">*</strong></legend> \n <input type="radio" name="marketing_consent" value="True"><label for="gdprYes">Yes</label> \n <input type="radio" name="marketing_consent" value="False"><label for="gdprNo">No</label> \n </fieldset>'; if (test_requiresConsent(country) && test_gdprConsentHidden(gdprSelect)) { test_toggleOptIn(gdprSelect, optInHtml); } else if (!test_requiresConsent(country) && !test_gdprConsentHidden(gdprSelect)) { test_toggleOptIn(gdprSelect, ' '); } } function test_requiresConsent(country) { var euCountries = ['Austria', 'Belgium', 'Bulgaria', 'China', 'Croatia', 'Republic of Cyprus', 'Czech Republic', 'Denmark', 'Estonia', 'Finland', 'France', 'Germany', 'Greece', 'Hungary', 'Iceland', 'Ireland', 'Italy', 'Latvia', 'Liechtenstein', 'Lithuania', 'Luxembourg', 'Malta', 'Netherlands', 'Norway', 'Poland', 'Portugal', 'Romania', 'Slovakia', 'Slovenia', 'Spain', 'Sweden', 'United Kingdom']; return(euCountries.indexOf(country) + 1); } function test_gdprConsentHidden(gdprSelect) { return gdprSelect.classList.contains('hidden') ? true : false; } function test_toggleOptIn(gdprSelect, optInHtml) { test_toggleHidden(gdprSelect); gdprSelect.innerHTML = optInHtml; test_checkError(gdprSelect); } function test_checkForStates(country, parentForm) { if (country === "United States") { stateSelect = parentForm.getElementsByClassName('us-states')[0]; document.getElementById('pardotForm-test_state').setAttribute('aria-required','true'); document.getElementById('pardotForm-test_state').tabIndex = 0; stateSelect.classList.remove('disabled'); } else { stateSelect = parentForm.getElementsByClassName('us-states')[0]; document.getElementById('pardotForm-test_state').removeAttribute('aria-required'); document.getElementById('pardotForm-test_state').tabIndex = -1; stateSelect.classList.add('disabled'); document.getElementById('pardotForm-test_state').value = ""; document.getElementById('pardotForm-test_state').selectedIndex = 0; } } function test_toggleHidden() { var targets = Array.prototype.slice.call(arguments); targets.forEach(function(target) { $(target).toggleClass('hidden'); }); } function test_checkError(arg) { if (arg.classList.contains('error')) { $(arg).removeClass('error'); } } function test_verif(formName) { var form = document.getElementById(formName); var formId = '#' + formName; $(formId +' .error').removeClass('error'); $('[aria-invalid$="true"]').attr('aria-invalid','false'); var errors = []; // find all elements in form that are required fields var requiredFields = $(formId + ' [aria-required$="true"]'); // loop through required fields to check if they are valid for (i = 0; i < requiredFields.length; i++) { var field = requiredFields[i]; if (test_fieldInvalid(field, form)) { test_createError(field, formId, formName, errors); }; } // If errors found, display them and prevent submit if (errors.length > 0) { test_displayErrors(errors, formId); return false; } // When no errors found continue... // Create hidden field for Sales_Request_Context const salesRequestContext = document.createElement("input"); salesRequestContext.type = "hidden"; salesRequestContext.name = "Sales_Request_Context"; salesRequestContext.value = window.location.host + window.location.pathname; form.appendChild(salesRequestContext); // Append URL to marketing_consent_context field form['marketing_consent_context'].value = form['marketing_consent_context'].value + " at " + window.location.host + window.location.pathname; //Add successParam to form action var successURL = encodeURIComponent(location.href.split("?")[0] + "?submit=true&name=pardotForm-test"); var successParam = "?success_location=" + successURL; form.action += successParam; // Send data to Qualified const formData = new FormData(form); qualified( "saveFormData", { "first_namefrom": formData.get("first_name"), "last_nameform": formData.get("last_name"), "email": formData.get("email"), "phone": formData.get("phone"), "company": formData.get("company"), "job_title": formData.get("job_title"), "country": formData.get("country"), "state": formData.get("state"), "marketing_consent_context": formData.get("marketing_consent_context"), "marketing_consent_optin": formData.get("marketing_consent"), "sales_request_context": formData.get("Sales_Request_Context"), "cta": "Submit", } ); qualified("emitFormFill", "custom"); // End Qualified return true; } function test_fieldInvalid(field, form) { if (field.tagName === "FIELDSET") { return (test_radioInvalid(field, form)) ? true : false; } else if (field.name === "email") { return (test_emailInvalid(form)) ? true : false; } else { return (field.value.length < 1) ? true : false; } } function test_radioInvalid(field, form) { var fieldsetName = field.querySelectorAll('input')[0].name; if (form[fieldsetName].value.length < 1) return true; } function test_emailInvalid(form) { var mail = new RegExp('@+','g'); if ( (form.email.value.length < 1) || (!mail.test(form.email.value)) ) { return true; } } function test_createError(field, formId, formName, errors) { if (field.tagName === 'FIELDSET') { $(formId + ' .gdpr-consent').addClass('error'); $(formId + ' .gdpr-consent fieldset input').addClass('error').attr('aria-invalid','true'); } else { $(formId + ' [name$="' + field.name + '"]').addClass('error').attr('aria-invalid','true'); } $(formId +' label[for="' + formName + '_' + field.name + '"]').addClass('error'); errors.push(field.dataset.text); return errors; } function test_displayErrors(errors, formId) { var errorMessage = ''; if (errors.length > 3) { errorMessage = '<p>Please fill out all required fields.</p>'; } else { errorMessage = '<p>Please enter your '; for (i = 0; i < errors.length; i++) { errorMessage += errors[i]; if (i === errors.length - 2) { errorMessage += ', and ' } else if (i < errors.length - 1) { errorMessage += ', ' } else { errorMessage += '.</p>' } } } $(formId +'-errorMessage').html(errorMessage); } </script> </div> </div> <div class="bentoSection-item item-2"> <h2>Set up a small team</h2> <p>Get access for teams of 2&ndash;25 people now.</p> <a id="bento-smallTeam-cta" class="redButton" href="https://learning.oreilly.com/team-setup/">Start now</a> </div> <div class="bentoSection-item item-3"> <h2>Get O&rsquo;Reilly for yourself</h2> <p>Build career-advancing tech skills with live online courses, thousands of books and videos, interactive labs, instant answers you can trust, and more.</p> <a id="bento-trial-cta" class="redButton" href="https://www.oreilly.com/start-trial/">Start a free trial</a> </div> </div> </div> </section> <!-- experts --> <!--<csinclude record="sc/2960" field="html" />--> <section class="experts sectionBreak" id="experts"> <div class="content"> <div class="sectionText"> <figure class="sectionIcon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M16 8V5L19 2L20 4L22 5L19 8H16ZM16 8L12 11.9999M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2M17 12C17 14.7614 14.7614 17 12 17C9.23858 17 7 14.7614 7 12C7 9.23858 9.23858 7 12 7" stroke="#2563EA" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></figure> <h2>Get on-demand access to the knowledge <span class="nowrap">of experts</span></h2> <p>For more than 45 years, O&rsquo;Reilly has built a community of experts across a broad range of subjects. They track the faint signals of emerging trends, and we filter their insights to create the up-to-the-minute content you need to stay ahead of the technologies that shape <span class="nowrap">business today.</span></p> </div> <div class="sectionFigure"> <div class="expertsPannels" id="expertsPannels"> <a href="https://learning.oreilly.com/search/?query=author%3A%22Neha%20Narkhede%22&extended_publisher_data=true&highlight=true&include_assessments=false&include_case_studies=true&include_courses=true&include_playlists=true&include_collections=true&include_notebooks=true&include_sandboxes=true&include_scenarios=true&is_academic_institution_account=false&source=suggestion&sort=date_added&facet_json=true&json_facets=true&page=0&include_facets=false" style="background-image: url(https://cdn.oreillystatic.com/images/people/neha_narkhede.jpg)"> <div class="text"> <span class="name">Neha Narkhede</span> <span class="affiliation">Cofounder, Confluent</span> </div> </a> <a href="https://learning.oreilly.com/search/?query=author%3A%22Kelsey%20Hightower%22&extended_publisher_data=true&highlight=true&include_assessments=false&include_case_studies=true&include_courses=true&include_playlists=true&include_collections=true&include_notebooks=true&include_sandboxes=true&include_scenarios=true&is_academic_institution_account=false&source=user&sort=date_added&facet_json=true&json_facets=true&page=0&include_facets=false" style="background-image: url(https://cdn.oreillystatic.com/oreilly/images/kelsey_hightower_color_400x400.jpg)"> <div class="text"> <span class="name">Kelsey Hightower</span> <span class="affiliation">Software engineer</span> </div> </a> <a href="https://learning.oreilly.com/search/?query=author%3A%22Arianne%20Dee%22&extended_publisher_data=true&highlight=true&include_assessments=false&include_case_studies=true&include_courses=true&include_playlists=true&include_collections=true&include_notebooks=true&include_sandboxes=true&include_scenarios=true&is_academic_institution_account=false&source=suggestion&sort=date_added&facet_json=true&json_facets=true&page=0&include_facets=false" style="background-image: url(https://cdn.oreillystatic.com/images/live-online-training/39040-720x720.jpg)"> <div class="text"> <span class="name">Arianne Dee</span> <span class="affiliation">Pearson</span> </div> </a> <a href="https://learning.oreilly.com/search/?query=author%3A%22Neal%20Ford%22&extended_publisher_data=true&highlight=true&include_assessments=false&include_case_studies=true&include_courses=true&include_playlists=true&include_collections=true&include_notebooks=true&include_sandboxes=true&include_scenarios=true&is_academic_institution_account=false&source=user&sort=date_added&facet_json=true&json_facets=true&page=0&include_facets=false" style="background-image: url(https://cdn.oreillystatic.com/oreilly/images/home_neal_ford_720x720.jpg)"> <div class="text"> <span class="name">Neal Ford</span> <span class="affiliation">Software architect</span> </div> </a> <a href="https://learning.oreilly.com/search/?query=author%3A%22Sari%20Greene%22&extended_publisher_data=true&highlight=true&include_assessments=false&include_case_studies=true&include_courses=true&include_playlists=true&include_collections=true&include_notebooks=true&include_sandboxes=true&include_scenarios=true&is_academic_institution_account=false&source=user&sort=date_added&facet_json=true&json_facets=true&page=0&include_facets=false" style="background-image: url(https://cdn.oreillystatic.com/oreilly/images/home_sari_greene_720x720.jpg)"> <div class="text"> <span class="name">Sari Greene</span> <span class="affiliation">Cybersecurity educator</span> </div> </a> <a href="https://learning.oreilly.com/search/?query=author%3A%22Bruno%20Gon%C3%A7alves%22&extended_publisher_data=true&highlight=true&include_assessments=false&include_case_studies=true&include_courses=true&include_playlists=true&include_collections=true&include_notebooks=true&include_sandboxes=true&include_scenarios=true&is_academic_institution_account=false&source=user&sort=date_added&facet_json=true&json_facets=true&page=0&include_facets=false" style="background-image: url(https://cdn.oreillystatic.com/images/live-online-training/39420-720x720.jpg)"> <div class="text"> <span class="name">Bruno Gon&ccedil;alves</span> <span class="affiliation">Senior data scientist</span> </div> </a> </div> </div> <div class="experts-textWrapper"> <h2>Get on-demand access to the knowledge <span class="nowrap">of experts</span></h2> <p>For more than 45 years, O&rsquo;Reilly has built a community of experts across a broad range of subjects. They track the faint signals of emerging trends, and we filter their insights to create up-to-the-minute content you need to stay ahead of the technologies that shape <span class="nowrap">business today.</span></p> </div> <div class="experts-imageWrapper"> <figure class="experts-image"> <img class="experts-image-circle" src="https://cdn.oreillystatic.com/authors/trim/prod/images/38528-200x200.jpg" alt="Neal Ford, Director, Thoughtworks"> <figcaption class="experts-image-caption"> <span class="experts-image-name">Neal Ford</span> <span class="experts-image-title">Director, Thoughtworks</span> </figcaption> </figure> <figure class="experts-image"> <figcaption class="experts-image-caption"> <span class="experts-image-name">Kelsey Hightower</span> <span class="experts-image-title">Software engineer</span> </figcaption> <img class="experts-image-circle" src="https://cdn.oreillystatic.com/authors/trim/prod/images/40766-200x200.jpg" alt="Kelsey Hightower, Software engineer"> </figure> <figure class="experts-image"> <img class="experts-image-circle" src="https://cdn.oreillystatic.com/images/people/neha_narkhede.jpg" alt="Neha Narkhede, Cofounder, Confluent"> <figcaption class="experts-image-caption"> <span class="experts-image-name">Neha Narkhede</span> <span class="experts-image-title">Cofounder, Confluent</span> </figcaption> </figure> </div> </div> </section> <!-- platformFeatures --> <!--<csinclude record="sc/2959" field="html" />--> <section class="platformFeatures sectionBreak"> <div class="content"> <div class="platformFeatures-item"> <figure class="sectionIcon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M6.09436 11.2288C6.03221 10.8282 5.99996 10.4179 5.99996 10C5.99996 5.58172 9.60525 2 14.0526 2C18.4999 2 22.1052 5.58172 22.1052 10C22.1052 10.9981 21.9213 11.9535 21.5852 12.8345C21.5154 13.0175 21.4804 13.109 21.4646 13.1804C21.4489 13.2512 21.4428 13.301 21.4411 13.3735C21.4394 13.4466 21.4493 13.5272 21.4692 13.6883L21.8717 16.9585C21.9153 17.3125 21.9371 17.4895 21.8782 17.6182C21.8266 17.731 21.735 17.8205 21.6211 17.8695C21.4911 17.9254 21.3146 17.8995 20.9617 17.8478L17.7765 17.3809C17.6101 17.3565 17.527 17.3443 17.4512 17.3448C17.3763 17.3452 17.3245 17.3507 17.2511 17.3661C17.177 17.3817 17.0823 17.4172 16.893 17.4881C16.0097 17.819 15.0524 18 14.0526 18C13.6344 18 13.2237 17.9683 12.8227 17.9073M7.63158 22C10.5965 22 13 19.5376 13 16.5C13 13.4624 10.5965 11 7.63158 11C4.66668 11 2.26316 13.4624 2.26316 16.5C2.26316 17.1106 2.36028 17.6979 2.53955 18.2467C2.61533 18.4787 2.65322 18.5947 2.66566 18.6739C2.67864 18.7567 2.68091 18.8031 2.67608 18.8867C2.67145 18.9668 2.65141 19.0573 2.61134 19.2383L2 22L4.9948 21.591C5.15827 21.5687 5.24 21.5575 5.31137 21.558C5.38652 21.5585 5.42641 21.5626 5.50011 21.5773C5.5701 21.5912 5.67416 21.6279 5.88227 21.7014C6.43059 21.8949 7.01911 22 7.63158 22Z" stroke="#2563EA" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></figure> <h3>Access to today&rsquo;s most important conversations</h3> <p>The O&rsquo;Reilly learning platform includes thousands of hours of video courses and live events, for insider access to cutting-edge thinking from the world&rsquo;s foremost technology and business leaders.</p> </div> <div class="platformFeatures-item"> <figure class="sectionIcon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M12.9999 2L4.09332 12.6879C3.74451 13.1064 3.57011 13.3157 3.56744 13.4925C3.56512 13.6461 3.63359 13.7923 3.75312 13.8889C3.89061 14 4.16304 14 4.7079 14H11.9999L10.9999 22L19.9064 11.3121C20.2552 10.8936 20.4296 10.6843 20.4323 10.5075C20.4346 10.3539 20.3661 10.2077 20.2466 10.1111C20.1091 10 19.8367 10 19.2918 10H11.9999L12.9999 2Z" stroke="#2563EA" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></figure> <h3>Instant answers to tough tech questions</h3> <p>Our AI-powered O&rsquo;Reilly Answers tool delivers trusted information sourced from thousands of titles on our platform. Simply ask a question and Answers delivers solutions you can put to work immediately.</p> </div> <div class="platformFeatures-item"> <figure class="sectionIcon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M11 3H7.8C6.11984 3 5.27976 3 4.63803 3.32698C4.07354 3.6146 3.6146 4.07354 3.32698 4.63803C3 5.27976 3 6.11984 3 7.8V16.2C3 17.8802 3 18.7202 3.32698 19.362C3.6146 19.9265 4.07354 20.3854 4.63803 20.673C5.27976 21 6.11984 21 7.8 21H16.2C17.8802 21 18.7202 21 19.362 20.673C19.9265 20.3854 20.3854 19.9265 20.673 19.362C21 18.7202 21 17.8802 21 16.2V13M12 8H16V12M15.5 3.5V2M19.4393 4.56066L20.5 3.5M20.5103 8.5H22.0103M3 13.3471C3.65194 13.4478 4.31987 13.5 5 13.5C9.38636 13.5 13.2653 11.3276 15.6197 8" stroke="#2563EA" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></figure> <h3>Courses tailored to the role you have (and the one you want)</h3> <p>Over 5,000 role-based courses help learners focus on the technologies and skills needed to succeed in nearly any position. Verifiable and shareable badges, plus progress and completion tracking, are available to enterprise clients.</p> </div> <div class="platformFeatures-item"> <figure class="sectionIcon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M8.99962 14C8.99962 14 10.3121 15.5 12.4996 15.5C14.6871 15.5 15.9996 14 15.9996 14M15.2496 9H15.2596M9.74962 9H9.75962M12.4996 20C17.194 20 20.9996 16.1944 20.9996 11.5C20.9996 6.80558 17.194 3 12.4996 3C7.8052 3 3.99962 6.80558 3.99962 11.5C3.99962 12.45 4.15547 13.3636 4.443 14.2166C4.55119 14.5376 4.60529 14.6981 4.61505 14.8214C4.62469 14.9432 4.6174 15.0286 4.58728 15.1469C4.55677 15.2668 4.48942 15.3915 4.35472 15.6408L2.71906 18.6684C2.48575 19.1002 2.36909 19.3161 2.3952 19.4828C2.41794 19.6279 2.50337 19.7557 2.6288 19.8322C2.7728 19.9201 3.01692 19.8948 3.50517 19.8444L8.62619 19.315C8.78127 19.299 8.85881 19.291 8.92949 19.2937C8.999 19.2963 9.04807 19.3029 9.11586 19.3185C9.18478 19.3344 9.27145 19.3678 9.44478 19.4345C10.3928 19.7998 11.4228 20 12.4996 20ZM15.7496 9C15.7496 9.27614 15.5258 9.5 15.2496 9.5C14.9735 9.5 14.7496 9.27614 14.7496 9C14.7496 8.72386 14.9735 8.5 15.2496 8.5C15.5258 8.5 15.7496 8.72386 15.7496 9ZM10.2496 9C10.2496 9.27614 10.0258 9.5 9.74962 9.5C9.47348 9.5 9.24962 9.27614 9.24962 9C9.24962 8.72386 9.47348 8.5 9.74962 8.5C10.0258 8.5 10.2496 8.72386 10.2496 9Z" stroke="#2563EA" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></figure> <h3>Expertly curated high-quality content</h3> <p>Read nearly every O&rsquo;Reilly book, including early release titles not yet available to the general public, plus titles from nearly 200 of the world&rsquo;s most respected publishers, including Pearson, Harvard Business Review, Wiley, and more.</p> </div> <div class="platformFeatures-item"> <figure class="sectionIcon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M9 9V6C9 4.34315 7.65685 3 6 3C4.34315 3 3 4.34315 3 6C3 7.65685 4.34315 9 6 9H9ZM9 9V15M9 9H15M9 15V18C9 19.6569 7.65685 21 6 21C4.34315 21 3 19.6569 3 18C3 16.3431 4.34315 15 6 15H9ZM9 15H15M15 15H18C19.6569 15 21 16.3431 21 18C21 19.6569 19.6569 21 18 21C16.3431 21 15 19.6569 15 18V15ZM15 15V9M15 9V6C15 4.34315 16.3431 3 18 3C19.6569 3 21 4.34315 21 6C21 7.65685 19.6569 9 18 9H15Z" stroke="#2563EA" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></figure> <h3>Hands-on learning with interactive labs</h3> <p>Learn by doing with expert-guided labs and unstructured coding environments for the most in-demand technologies and cloud platforms. Safely practice right in your browser, no setup needed.</p> </div> <div class="platformFeatures-item"> <figure class="sectionIcon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M8 13V17M16 11V17M12 7V17M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z" stroke="#2563EA" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></figure> <h3>At-a-glance usage dashboard</h3> <p>If you&rsquo;re an enterprise client, you get the rich, customizable data visualizations you need to spot trends across your teams instantly with our easy-to-use Insights Dashboard.</p> </div> </div> </section> <section class="ctaRow sectionBreak"> <div class="content"> <a href="https://www.oreilly.com/start-trial/" class="redButton btnCTA-blue" id="ctaRow-freeTrial">Start a free trial</a> <a href="https://www.oreilly.com/online-learning/pricing.html" class="redButton btnCTA-white" id="ctaRow-learnMore">Learn more</a> </div> </section> <div class="ravenBlobs"> <div class="blob1"></div> <div class="blob2"></div> <div class="blob3"></div> <div class="blob4"></div> <div class="blob5"></div> <div class="blob6"></div> </div> </div> </main> <footer id="footer" class="footer"> <div class="content"> <div class="footer-main" aria-label="company info"> <div class="footer-mainLeft"> <div class="footer-mainLeftOne"> <div class="footer-approach"> <h2 class="footer-header"><a href="/about/">About O&rsquo;Reilly</a></h2> <ul class="footer-links"> <li><a href="/work-with-us.html">Teach/write/train</a></li> <li><a href="/careers/">Careers</a></li> <li><a href="/press/">O&rsquo;Reilly news</a></li> <li><a href="/press/media-coverage.html">Media coverage</a></li> <li><a href="/partner/signup.csp">Community partners</a></li> <li><a href="/affiliates/">Affiliate program</a></li> <li><a href="/online-learning/rfp.html">Submit an RFP</a></li> <li><a href="/diversity/">Diversity</a></li> <li><a href="/content-marketing-solutions.html" id="footerSponsorshipLink">O&rsquo;Reilly for marketers</a></li> </ul> </div> </div> <div class="footer-mainLeftTwo"> <div class="footer-contact"> <h2 class="footer-header"><a href="/online-learning/support/">Support</a></h2> <ul class="footer-links"> <li><a href="/about/contact.html">Contact us</a></li> <li><a href="/emails/newsletters/">Newsletters</a></li> <li><a href="/privacy.html">Privacy policy</a></li> <li><a href="/about/oreilly-approach-to-generative-ai.html">AI policy</a></li> </ul> <a href="https://www.linkedin.com/company/oreilly-media" target="_blank"><svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32.25 32.25"><defs><style>.cls-1{fill:#d30000;fill-rule:evenodd;}</style></defs><title>linkedin-logo</title><path class="cls-1" d="M17.43,13.53v0l0,0ZM16.12,0A16.13,16.13,0,1,0,32.25,16.12,16.12,16.12,0,0,0,16.12,0ZM11.77,22.92H8.12v-11h3.65ZM9.94,10.44h0a1.89,1.89,0,0,1-2-1.89A1.91,1.91,0,0,1,10,6.65a1.9,1.9,0,1,1,0,3.79Zm15,12.48H21.28V17.05c0-1.48-.53-2.49-1.85-2.49a2,2,0,0,0-1.88,1.34,2.63,2.63,0,0,0-.12.89v6.13H13.79s.05-10,0-11h3.64V13.5a3.63,3.63,0,0,1,3.29-1.82c2.4,0,4.21,1.57,4.21,4.95Z"/></svg></a> <a href="https://www.youtube.com/user/OreillyMedia" target="_blank"><svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32.25 32.25"><defs><style>.cls-1{fill:#d30000;fill-rule:evenodd;}</style></defs><title>youtube-logo</title><path class="cls-1" d="M18.35,18.68a.89.89,0,0,0-.86.63V16.94h-1v7.59h1v-.59a.92.92,0,0,0,.89.74c.52,0,.86-.36,1-1.07a8.56,8.56,0,0,0,.14-1.9,10.47,10.47,0,0,0-.12-1.93C19.21,19.05,18.87,18.68,18.35,18.68Zm.09,4.14c-.05.52-.2.77-.45.77s-.43-.21-.49-.63a7.22,7.22,0,0,1,0-1c0-.72,0-1.14,0-1.26.07-.58.23-.88.51-.88s.4.27.46.79c0,.09,0,.47,0,1.13S18.46,22.71,18.44,22.82ZM8.61,18.19H9.86v6.34H11V18.19H12.2V16.94H8.61Zm7.71-6.12c.27,0,.43-.22.49-.66,0-.09,0-.45,0-1.07V9.78c0-.58,0-.93,0-1-.07-.43-.23-.65-.48-.65s-.41.19-.48.57a8.79,8.79,0,0,0,0,1v.53c0,.71,0,1.09,0,1.16C15.88,11.82,16.05,12.07,16.32,12.07Zm-1.74,10.4a2.92,2.92,0,0,1-.06.71c-.07.25-.2.37-.4.37s-.32-.11-.38-.34a2.63,2.63,0,0,1-.05-.66V18.83h-1v4.48c0,.91.33,1.37,1,1.37A1,1,0,0,0,14.6,24v.57h1v-5.7h-1Zm7.1-3.79a1.35,1.35,0,0,0-1.22.59,2.48,2.48,0,0,0-.3,1.07c0,.23,0,.61,0,1.16s0,1.13,0,1.37a2.93,2.93,0,0,0,.35,1.27,1.25,1.25,0,0,0,1.14.54,1.36,1.36,0,0,0,1.13-.45,2.29,2.29,0,0,0,.37-1.43s0-.07,0-.11v-.12h-1c0,.75-.17,1.12-.51,1.12s-.38-.18-.45-.56a4.68,4.68,0,0,1-.06-.9c0-.18,0-.31,0-.37h2v-.43a4.86,4.86,0,0,0-.3-2.11A1.28,1.28,0,0,0,21.68,18.68ZM22.15,21h-1c0-.05,0-.11,0-.16v-.08a1.64,1.64,0,0,1,.11-.8.39.39,0,0,1,.38-.23.42.42,0,0,1,.43.33,2.32,2.32,0,0,1,.07.7Zm-6-21A16.13,16.13,0,1,0,32.25,16.12,16.12,16.12,0,0,0,16.12,0Zm2.51,7.2h1V11a2.52,2.52,0,0,0,.06.66c.06.23.18.34.38.34s.34-.12.41-.37a3.76,3.76,0,0,0,.05-.71V7.2h1v5.74h-1v-.57a1,1,0,0,1-.93.72c-.66,0-1-.46-1-1.38ZM15,8a1.29,1.29,0,0,1,1.33-.92A1.3,1.3,0,0,1,17.65,8a6.77,6.77,0,0,1,.23,2.1,6.77,6.77,0,0,1-.23,2.1,1.3,1.3,0,0,1-1.32.92A1.29,1.29,0,0,1,15,12.17a6.77,6.77,0,0,1-.23-2.1A6.86,6.86,0,0,1,15,8ZM11.45,5.3l.89,2.87.88-2.87H14.4L12.88,9.7v3.24h-1.1V9.7L10.24,5.3ZM24.93,23.91a3,3,0,0,1-3,3h-12a3,3,0,0,1-3-3V18.05a3,3,0,0,1,3-3h12a3,3,0,0,1,3,3Z"/></svg></a> </div> <div class="footer-international"> <h2 class="footer-header">International</h2> <ul class="footer-links"> <li><a href="https://www.oreilly.com/anz/">Australia &amp; New Zealand</a></li> <li><a href="https://oreilly.hk/">Hong Kong &amp; Taiwan</a></li> <li><a href="https://oreillylearning.in/">India</a></li> <li><a href="https://oreilly.id/">Indonesia</a></li> <li><a href="https://www.oreilly.co.jp/index.shtml">Japan</a></li> </ul> </div> </div> </div> <div class="footer-download" id="download-info"> <h2 class="footer-header">Download the O&rsquo;Reilly App</h2> <p>Take O&rsquo;Reilly with you and learn anywhere, anytime on your phone <span class="nowrap">and tablet.</span></p> <div class="footer-downloadLinks"> <a href="https://itunes.apple.com/us/app/safari-to-go/id881697395"><img src="https://cdn.oreillystatic.com/oreilly/images/app-store-logo.png" alt="Apple app store" /></a> <a href="https://play.google.com/store/apps/details?id=com.safariflow.queue"><img src="https://cdn.oreillystatic.com/oreilly/images/google-play-logo.png" alt="Google play store" /></a> </div> </div> <div class="footer-download" id="tv-info"> <h2 class="footer-header">Watch on your big screen</h2> <p>View all O&rsquo;Reilly videos, Superstream events, and Meet the Expert sessions on your <span class="nowrap">home TV.</span></p> <div class="footer-downloadLinks"> <a href="https://channelstore.roku.com/details/c8a2d0096693eb9455f6ac165003ee06/oreilly"><img src="https://cdn.oreillystatic.com/oreilly/images/roku-tv-logo.png" alt="Roku Players and TVs" /></a> <a href="https://www.amazon.com/OReilly-Media-Inc/dp/B087YYHL5C/ref=sr_1_2?dchild=1&keywords=oreilly&qid=1604964116&s=mobile-apps&sr=1-2"><img src="https://cdn.oreillystatic.com/oreilly/images/amazon-appstore-logo.png" alt="Amazon appstore" /></a> </div> </div> <div class="footer-donotsell" id="donotsell-info"> <h2 class="footer-header"><a href="https://www.oreilly.com/privacy.html?donotsell=show">Do not sell or share my personal information</a></h2> </div> </div> <div class="footer-subfooter"> <a href="https://www.oreilly.com" title="home page" aria-current="page"> <img class="footer-subfooterLogo" id="footer-subfooterLogo" src="https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red.svg" onerror="this.src='https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red_@2x.png'; this.onerror=null;" alt="O'Reilly home"> </a> <p>&copy; 2025, O&rsquo;Reilly Media, Inc. All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners.</p> <p><a href="/terms/">Terms of service</a> &bull; <a href="/privacy.html">Privacy policy</a> &bull; <a href="/about/editorial_independence.html">Editorial independence</a><span class="transparencyStatement" style="display:none;"> &bull; <a href="/modern-slavery-act-transparency-statement.html">Modern Slavery Act Statement</a></span></p> </div> </div> </footer> <script src="https://cdn.oreillystatic.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script> <script> $(function() { //Toggle isActive and mobileHidden classes for mobileNavButton $('nav #mobileNavButton').on('click', function() { var expanded = $(this).attr('aria-expanded') === 'true' || false; $(this).attr('aria-expanded', !expanded); $(this).toggleClass("isActive"); $(this).next().toggleClass("mobileHidden"); }); //Toggle isFocused class for keyboard navigation of submenus $('nav #menuList .menuList-subItem a').each(function(navItem) { $(this).on('focus', function() { $(this).parent().parent().toggleClass('isFocused'); }); $(this).on('blur', function() { $(this).parent().parent().toggleClass('isFocused'); }); }); //Toggle mobileHidden class accordian elements $('.mobileAccordian').each(function() { var $btn = $(this).find('button'); var $target = $(this).next(); $btn.on('click', function() { var expanded = $btn.attr('aria-expanded') === 'true' || false; $btn.attr('aria-expanded', !expanded); $target.toggleClass("mobileHidden"); }); }); //Search platform form action function searchSubmit(e) { e.preventDefault(); sParameter = searchForm.search.value; sParameter = encodeURIComponent(sParameter.trim()); sURL = searchForm.action + '?query=' + sParameter; window.location = sURL; //GA event for search dataLayer.push({ 'event': 'eventTracker', 'eventCat':'site search', 'eventAct':'search box', 'eventLbl':'explore our content', 'eventVal':0, 'nonInteraction': 0, }); } const searchForm = document.getElementById('js-searchForm'); searchForm.addEventListener('submit', searchSubmit); //Search button action function showNavSearch(e) { $('.menuList-item-search').addClass('overlay'); $('.menuList-item-search input#search').focus(); } const searchButton = document.getElementById('js-searchButton'); searchButton.addEventListener('click', showNavSearch); //Close search button action function hideNavSearch(e) { $('.menuList-item-search').removeClass('overlay'); } const searchCloseButton = document.getElementById('js-searchCloseButton'); searchCloseButton.addEventListener('click', hideNavSearch); //"Try Now" nav button tracking $('#nav-tryNow').on('click', function() { dataLayer.push({ 'event': 'eventTracker', 'eventCat':'marketing', 'eventAct':'nav', 'eventLbl':'try now', 'eventVal':0, 'nonInteraction': 0, }); }); //"Sign in" nav button tracking $('#nav-signIn').on('click', function() { dataLayer.push({ 'event': 'eventTracker', 'eventCat':'marketing', 'eventAct':'nav', 'eventLbl':'sign in', 'eventVal':0, 'nonInteraction': 0, }); }); //"O'Reilly Platform" nav button tracking $('#nav-platform').on('click', function() { dataLayer.push({ 'event': 'eventTracker', 'eventCat':'marketing', 'eventAct':'nav', 'eventLbl':'oreilly platform', 'eventVal':0, 'nonInteraction': 0, }); }); }); (function(document, history, location) { var HISTORY_SUPPORT = !!(history && history.pushState); FIXED_HEADER_HEIGHT = document.querySelector('body > header').offsetHeight; FIXED_HEADER_HEIGHT += 20; var anchorScrolls = { ANCHOR_REGEX: /^#[^ ]+$/, OFFSET_HEIGHT_PX: FIXED_HEADER_HEIGHT, /** * Establish events, and fix initial scroll position if a hash is provided. */ init: function() { this.scrollToCurrent(); window.addEventListener('hashchange', this.scrollToCurrent.bind(this)); document.body.addEventListener('click', this.delegateAnchors.bind(this)); }, /** * Return the offset amount to deduct from the normal scroll position. * Modify as appropriate to allow for dynamic calculations */ getFixedOffset: function() { return this.OFFSET_HEIGHT_PX; }, /** * If the provided href is an anchor which resolves to an element on the * page, scroll to it. * @param {String} href * @return {Boolean} - Was the href an anchor. */ scrollIfAnchor: function(href, pushToHistory) { var match, rect, anchorOffset; if(!this.ANCHOR_REGEX.test(href)) { return false; } match = document.getElementById(href.slice(1)); if(match) { rect = match.getBoundingClientRect(); anchorOffset = window.pageYOffset + rect.top - this.getFixedOffset(); // Wait 1ms and scroll. It wasn't consistently scrolling immediately. setTimeout(function(){ window.scroll(window.pageXOffset, anchorOffset); }, 1); // Add the state to history as-per normal anchor links if(HISTORY_SUPPORT && pushToHistory) { history.pushState({}, document.title, location.pathname + href); } } return !!match; }, /** * Attempt to scroll to the current location's hash. */ scrollToCurrent: function() { this.scrollIfAnchor(window.location.hash); }, /** * If the click event's target was an anchor, fix the scroll position. */ delegateAnchors: function(e) { var elem = e.target; if( elem.nodeName === 'A' && this.scrollIfAnchor(elem.getAttribute('href'), true) ) { e.preventDefault(); } } }; window.addEventListener( 'DOMContentLoaded', anchorScrolls.init.bind(anchorScrolls) ); })(window.document, window.history, window.location); </script><script type="text/javascript" src="/JCZu2B/PjAB/0M/UO3u/89gk88wG/EiamptbSzwQ0piu7/TnBr/UAYaLSoB/ISMB"></script><link rel="stylesheet" type="text/css" href="/JCZu2B/PjAB/0M/UO3u/89gk88wG/ctamha/VjJe/X0ZzFFE6/YHVY"><script src="/JCZu2B/PjAB/0M/UO3u/89gk88wG/ctamha/VjJe/EwJwaCtA/DGcp" async defer></script><div id="sec-overlay" style="display:none;"><div id="sec-container"></div></div></body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10